<?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>162349</bug_id>
          
          <creation_ts>2016-09-21 11:12:01 -0700</creation_ts>
          <short_desc>B3 should have comprehensive support for atomic operations</short_desc>
          <delta_ts>2017-03-10 09:50:11 -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 Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>162343</dependson>
    
    <dependson>168833</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1232119</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-21 11:12:01 -0700</bug_when>
    <thetext>On ARM, we can mark loads and stores as having acquire or release semantics.  B3 should know about this.

I believe that this means that a load-acquire will have a write heap range.  This range must be non-empty.  This achieves both goals of acquire: it means that this load itself is not hoistable, and it means that other loads cannot be hoisted above this load, if they overlap with the write range.

I believe that this means that a store-release will have a read heap range.  This range must be non-empty.  The read range prevents other stores from being sunk below this one.  Also, the write range must be expanded to include anything that we don&apos;t want this store to be sunk to.

Maybe we can model acq/rel by just giving MemoryValue a second range?  That would be weird but it seems like it would work.  Alternatively, we would have a B3FencedMemoryValue, which includes the second range.  This second range would behave either as the read range or the write range depending on whether this was a load or a store.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232140</commentid>
    <comment_count>1</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-21 11:48:33 -0700</bug_when>
    <thetext>If load acquire has a range and the range is small then you can even reduce it to a consume dependency as you talk about in 162350.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246224</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-30 09:43:38 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; If load acquire has a range and the range is small then you can even reduce
&gt; it to a consume dependency as you talk about in 162350.

I don&apos;t think that the optimizer can do that.  Consider this program, where B3 only sees procedure bar().

foo()
{
    a = load
}

bar()
{
    b = load
    c = load acquire
}

foo()
bar()

In this program, it&apos;s not valid to transform bar() into:

bar()
{
    b = load
    c = load depend b
}

because this does not create a dependency to foo()&apos;s a = load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246226</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-30 10:13:07 -0700</bug_when>
    <thetext>I think it&apos;s important to review the optimizations we want to be able to do.

On x86, we want to be able to optimize store-load fences by transforming this:

store
fenceRW
load

Into this:

atomic store
load

We also want to turn Depend into a load-load fence, which reduces to no-op later.

On ARM we want to be able to optimize fences also.  For example, we want to optimize load-load fences into load acquires:

load
fenceW
load

into:

load
load acquire

We want to be able to optimize store-load fences like this:

store
fenceRW
load

into:

store release
load acquire

Conversely, we want to be able to lower acq/rel flags.  I believe that we want both store and load to accept such flags.  That means that if we have a store acquire or load release, we want to be able to insert fences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246227</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-30 10:26:50 -0700</bug_when>
    <thetext>I wonder if the right way to optimize this is with some kind of flow algorithm, or by just doing an on-demand analysis on a per-fence basis.  I bet that the latter is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279772</commentid>
    <comment_count>5</comment_count>
      <attachid>302367</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-21 21:39:00 -0800</bug_when>
    <thetext>Created attachment 302367
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280421</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-23 12:10:39 -0800</bug_when>
    <thetext>Incredibly, we could represent acq/rel using just a phantomRange in MemoryValue.  If it&apos;s bottom, then we assume no acq/rel.  If it&apos;s not bottom, then we assume:

- acq for loads.
- rel for stores.
- acq/rel for atomics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280429</commentid>
    <comment_count>7</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-02-23 12:20:13 -0800</bug_when>
    <thetext>What would &quot;no acq/rel&quot; mean? seq_cst, or non-atomic?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280436</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-23 12:35:50 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; What would &quot;no acq/rel&quot; mean? seq_cst, or non-atomic?

Short story: it means that the load/store behaves like on ARM without acq/rel flags.

The longer story involves B3&apos;s effects-based memory model, which can be a bit weaker than ARM if you use abstract heaps in certain ways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280438</commentid>
    <comment_count>9</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-02-23 12:38:37 -0800</bug_when>
    <thetext>OK, and then we wouldn&apos;t have seq_cst? Fences would serve that purpose instead (where they&apos;re either acq, rel, or acq_rel)?

I think this works, but I&apos;d need to give it more thought to be sure. Sounds good for now though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280439</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-23 12:39:51 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; OK, and then we wouldn&apos;t have seq_cst? Fences would serve that purpose
&gt; instead (where they&apos;re either acq, rel, or acq_rel)?
&gt; 
&gt; I think this works, but I&apos;d need to give it more thought to be sure. Sounds
&gt; good for now though.

How would seq_cst differ from acq_rel in this context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280461</commentid>
    <comment_count>11</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-02-23 13:19:54 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; OK, and then we wouldn&apos;t have seq_cst? Fences would serve that purpose
&gt; &gt; instead (where they&apos;re either acq, rel, or acq_rel)?
&gt; &gt; 
&gt; &gt; I think this works, but I&apos;d need to give it more thought to be sure. Sounds
&gt; &gt; good for now though.
&gt; 
&gt; How would seq_cst differ from acq_rel in this context?

Oh I was thinking about x86 seq_cst stores, but I guess you already have ortop for that? Doesn&apos;t seem useful to have seq_cst at all then :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280477</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-23 13:54:50 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; OK, and then we wouldn&apos;t have seq_cst? Fences would serve that purpose
&gt; &gt; &gt; instead (where they&apos;re either acq, rel, or acq_rel)?
&gt; &gt; &gt; 
&gt; &gt; &gt; I think this works, but I&apos;d need to give it more thought to be sure. Sounds
&gt; &gt; &gt; good for now though.
&gt; &gt; 
&gt; &gt; How would seq_cst differ from acq_rel in this context?
&gt; 
&gt; Oh I was thinking about x86 seq_cst stores, but I guess you already have
&gt; ortop for that? Doesn&apos;t seem useful to have seq_cst at all then :)

Relevant: if you&apos;re acq or rel, you will have the `fence` bit set in Effects. In other words, B3 treats acq/rel fences to be ordered with respect to each other.

This means that you can get seq_cst by using acq for your loads and rel for your stores.

This also matches what ARM does, although apparently there&apos;s some new alternate version of acq that doesn&apos;t set the CPU&apos;s equivalent of Effects::fence. That&apos;s OK, because I don&apos;t think we would have a use for that instruction yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280479</commentid>
    <comment_count>13</comment_count>
      <attachid>302571</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-23 13:56:53 -0800</bug_when>
    <thetext>Created attachment 302571
a bit more

Last version before I remove acq/rel flags and switch to relying exclusively on phantomRange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280555</commentid>
    <comment_count>14</comment_count>
      <attachid>302599</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-23 16:01:23 -0800</bug_when>
    <thetext>Created attachment 302599
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280797</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-24 10:48:03 -0800</bug_when>
    <thetext>Looks like in order to do a really good job of this, we want to have a AtomicMemoryValue that has a Width arg.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280987</commentid>
    <comment_count>16</comment_count>
      <attachid>302731</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-24 20:53:49 -0800</bug_when>
    <thetext>Created attachment 302731
a bit more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281083</commentid>
    <comment_count>17</comment_count>
      <attachid>302760</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-25 11:28:16 -0800</bug_when>
    <thetext>Created attachment 302760
added the instructions to Air</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281085</commentid>
    <comment_count>18</comment_count>
      <attachid>302761</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-25 12:01:08 -0800</bug_when>
    <thetext>Created attachment 302761
added isel for fences</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281092</commentid>
    <comment_count>19</comment_count>
      <attachid>302763</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-25 14:20:45 -0800</bug_when>
    <thetext>Created attachment 302763
starting to work on isel for CAS

Turns out, to do it right on ARM, I need to allow the instruction selector to break basic blocks.  That seems super annoying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281142</commentid>
    <comment_count>20</comment_count>
      <attachid>302786</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-26 09:17:54 -0800</bug_when>
    <thetext>Created attachment 302786
built some tools I&apos;ll need for lowering CAS to LL/SC in isel</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281148</commentid>
    <comment_count>21</comment_count>
      <attachid>302787</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-26 12:57:03 -0800</bug_when>
    <thetext>Created attachment 302787
wrote some more isel

So much isel. So much fun!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281189</commentid>
    <comment_count>22</comment_count>
      <attachid>302795</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-26 16:22:05 -0800</bug_when>
    <thetext>Created attachment 302795
more

finished CAS isel, I think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281409</commentid>
    <comment_count>23</comment_count>
      <attachid>302845</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-27 09:53:46 -0800</bug_when>
    <thetext>Created attachment 302845
more

Making x86 CAS invertible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281614</commentid>
    <comment_count>24</comment_count>
      <attachid>302892</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-27 16:49:45 -0800</bug_when>
    <thetext>Created attachment 302892
done with B3-&gt;Air isel for all atomics

so much isel, so much fun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281661</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-27 18:06:52 -0800</bug_when>
    <thetext>Attachment 302892 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3HeapRange.h:91:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/b3/B3Width.h:75:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Width.h:75:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:95:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/air/AirBlockInsertionSet.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 5 in 41 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281699</commentid>
    <comment_count>26</comment_count>
      <attachid>302917</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-27 20:17:25 -0800</bug_when>
    <thetext>Created attachment 302917
adding X86 instruction formatting for atomics</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281716</commentid>
    <comment_count>27</comment_count>
      <attachid>302922</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-27 21:46:41 -0800</bug_when>
    <thetext>Created attachment 302922
more x86 atomic instruction formatting

all that CAS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281782</commentid>
    <comment_count>28</comment_count>
      <attachid>302941</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-28 09:35:07 -0800</bug_when>
    <thetext>Created attachment 302941
so many x86 instructions

I think I finished the MacroAssembler for X86</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281802</commentid>
    <comment_count>29</comment_count>
      <attachid>302949</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-28 10:48:03 -0800</bug_when>
    <thetext>Created attachment 302949
just when I thought I was done with x86

So much x86</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281852</commentid>
    <comment_count>30</comment_count>
      <attachid>302960</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-28 11:47:27 -0800</bug_when>
    <thetext>Created attachment 302960
more x86

I love that you can express or64 with a 32-bit immediate on x86.

Maybe someone should do x86 instruction selection steganography. There are so many ways to waste bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281857</commentid>
    <comment_count>31</comment_count>
      <attachid>302963</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-28 12:08:11 -0800</bug_when>
    <thetext>Created attachment 302963
it&apos;s starting to compile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281871</commentid>
    <comment_count>32</comment_count>
      <attachid>302968</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-28 12:37:23 -0800</bug_when>
    <thetext>Created attachment 302968
more things compile

Filling in some gaps on x86</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281934</commentid>
    <comment_count>33</comment_count>
      <attachid>302981</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-28 13:52:03 -0800</bug_when>
    <thetext>Created attachment 302981
maybe the x86 part compiles now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282081</commentid>
    <comment_count>34</comment_count>
      <attachid>303015</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-02-28 17:28:54 -0800</bug_when>
    <thetext>Created attachment 303015
it just passed some WeakCAS tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282328</commentid>
    <comment_count>35</comment_count>
      <attachid>303078</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-01 10:33:46 -0800</bug_when>
    <thetext>Created attachment 303078
added tests for strong cas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282422</commentid>
    <comment_count>36</comment_count>
      <attachid>303109</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-01 13:37:10 -0800</bug_when>
    <thetext>Created attachment 303109
added acq/rel tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282552</commentid>
    <comment_count>37</comment_count>
      <attachid>303150</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-01 17:40:44 -0800</bug_when>
    <thetext>Created attachment 303150
x86 looks solid

now I&apos;ll have to do the arms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282611</commentid>
    <comment_count>38</comment_count>
      <attachid>303170</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-01 20:52:47 -0800</bug_when>
    <thetext>Created attachment 303170
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282628</commentid>
    <comment_count>39</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-01 21:40:16 -0800</bug_when>
    <thetext>It looks like the ARM64 LL/SC instructions take an exotic kind of address which cannot be offset at all. That&apos;s cool. I&apos;ll just have to add a new notion of Addr to Air and the assemblers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282878</commentid>
    <comment_count>40</comment_count>
      <attachid>303237</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-02 14:06:53 -0800</bug_when>
    <thetext>Created attachment 303237
more ARM64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283015</commentid>
    <comment_count>41</comment_count>
      <attachid>303277</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-02 18:03:34 -0800</bug_when>
    <thetext>Created attachment 303277
more

Boy, ARM64 isel for fancy loads/stores is tricky!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283198</commentid>
    <comment_count>42</comment_count>
      <attachid>303328</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-03 11:15:52 -0800</bug_when>
    <thetext>Created attachment 303328
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283316</commentid>
    <comment_count>43</comment_count>
      <attachid>303361</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-03 17:03:41 -0800</bug_when>
    <thetext>Created attachment 303361
almost done arm wrestling

Note, this patch temporarily includes msaboff&apos;s disassembler patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283342</commentid>
    <comment_count>44</comment_count>
      <attachid>303369</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-03 18:00:27 -0800</bug_when>
    <thetext>Created attachment 303369
passes all tests on arm

yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283437</commentid>
    <comment_count>45</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-04 09:40:48 -0800</bug_when>
    <thetext>Ha!  Even the Depend opcode works right!

On ARM, we lower to eor, but obfuscate it in both B3 and Air so that none of our optimization phases could ever realize that it returns zero.

testDepend32()...
Initial B3:
BB#0: ; frequency = 1.000000
    Int64 @0 = ArgumentReg(%r0)
    Int32 @1 = Load(@0, ControlDependent|Reads:Top)
    Int32 @2 = Depend(@1)
    Int64 @3 = ZExt32(@2)
    Int64 @4 = Add(@0, @3)
    Int32 @5 = Load(@4, offset = 4, ControlDependent|Reads:Top)
    Int32 @6 = Add(@1, @5)
    Void @7 = Return(@6, Terminal)
B3 after moveConstants, before generation:
BB#0: ; frequency = 1.000000
    Void @8 = Nop()
    Int64 @0 = ArgumentReg(%r0)
    Int32 @1 = Load(@0, ControlDependent|Reads:Top)
    Int32 @2 = Depend(@1)
    Int64 @3 = ZExt32(@2)
    Int64 @4 = Add(@0, @3)
    Int32 @5 = Load(@4, offset = 4, ControlDependent|Reads:Top)
    Int32 @6 = Add(@1, @5)
    Void @7 = Return(@6, Terminal)
Has Quirks: True
Initial air:
BB#0: ; frequency = 1.000000
    Move %r0, %tmp4, @0
    Move32 (%tmp4), %tmp2, @1
    Depend32 %tmp2, %tmp6, @2
    Move32 %tmp6, %tmp5, @3
    Add64 %tmp4, %tmp5, %tmp1, @4
    Move32 4(%tmp1), %tmp3, @5
    Add32 %tmp2, %tmp3, %tmp0, @6
    Move %tmp0, %r0, @7
    Ret32 %r0, @7
Air after optimizeBlockOrder, before generation:
Entrypoints: #0
BB#0: ; frequency = 1.000000
    Move32 (%r0), %r1, @1
    Depend32 %r1, %r2, @2
    Add64 %r0, %r2, %r0, @4
    Move32 4(%r0), %r0, @5
    Add32 %r1, %r0, %r0, @6
    Ret32 %r0, @7
Generated JIT code for B3::Compilation:
    Code at [0x3071cc000, 0x3071cc040):
         0x3071cc000:    stp    fp, lr, [sp, #-16]!
         0x3071cc004:    mov    fp, sp
         0x3071cc008:    ldur   w1, [x0]
         0x3071cc00c:    eor    w2, w1, w1
         0x3071cc010:    add    x0, x0, x2
         0x3071cc014:    ldur   w0, [x0, #4]
         0x3071cc018:    add    w0, w1, w0
         0x3071cc01c:    ldp    fp, lr, [sp], #16
         0x3071cc020:    ret    lr

And on x86, we lower it to a LoadFence, because those are free on x86. This unlocks awesome instruction selection over the Depend while still ensuring that the compiler obeys the constraint.

testDepend32()...
Initial B3:
BB#0: ; frequency = 1.000000
    Int64 @0 = ArgumentReg(%rdi)
    Int32 @1 = Load(@0, ControlDependent|Reads:Top)
    Int32 @2 = Depend(@1)
    Int64 @3 = ZExt32(@2)
    Int64 @4 = Add(@0, @3)
    Int32 @5 = Load(@4, offset = 4, ControlDependent|Reads:Top)
    Int32 @6 = Add(@1, @5)
    Void @7 = Return(@6, Terminal)
B3 after moveConstants, before generation:
BB#0: ; frequency = 1.000000
    Void @4 = Nop()
    Int64 @0 = ArgumentReg(%rdi)
    Int32 @1 = Load(@0, ControlDependent|Reads:Top)
    Void @8 = Fence(Fence|Writes:Top)
    Int32 @5 = Load(@0, offset = 4, ControlDependent|Reads:Top)
    Int32 @6 = Add(@1, @5)
    Void @7 = Return(@6, Terminal)
Has Quirks: True
Initial air:
BB#0: ; frequency = 1.000000
    Move %rdi, %tmp1, @0
    Move32 (%tmp1), %tmp2, @1
    LoadFence @8
    Move %tmp2, %tmp0, @6
    Add32 4(%tmp1), %tmp0, @6
    Move %tmp0, %rax, @7
    Ret32 %rax, @7
Air after optimizeBlockOrder, before generation:
Entrypoints: #0
BB#0: ; frequency = 1.000000
    Move32 (%rdi), %rax, @1
    LoadFence @8
    Add32 4(%rdi), %rax, @6
    Ret32 %rax, @7
Generated JIT code for B3::Compilation:
    Code at [0x2b7136801000, 0x2b7136801020):
      0x2b7136801000: push %rbp
      0x2b7136801001: mov %rsp, %rbp
      0x2b7136801004: mov (%rdi), %eax
      0x2b7136801006: add 0x4(%rdi), %eax
      0x2b7136801009: pop %rbp
      0x2b713680100a: ret 
testDepend32(): OK!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283439</commentid>
    <comment_count>46</comment_count>
      <attachid>303396</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-04 10:13:15 -0800</bug_when>
    <thetext>Created attachment 303396
voila!

Hopefully it doesn&apos;t set the bots on fire.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283440</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-04 10:16:14 -0800</bug_when>
    <thetext>Attachment 303396 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3HeapRange.h:91:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3026:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3031:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3036:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3041:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3046:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3051:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3056:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3061:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3066:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3071:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3076:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3081:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3086:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3091:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3096:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3106:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3111:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Width.h:75:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Width.h:75:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:99:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:102:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:105:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:105:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:317:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:56:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:58:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1438:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1443:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1448:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1453:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1458:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1463:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:509:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:509:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/air/AirBlockInsertionSet.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 63 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283442</commentid>
    <comment_count>48</comment_count>
      <attachid>303397</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-04 10:20:28 -0800</bug_when>
    <thetext>Created attachment 303397
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283444</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-04 10:23:36 -0800</bug_when>
    <thetext>Attachment 303397 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3HeapRange.h:91:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3026:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3031:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3036:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3041:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3046:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3051:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3056:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3061:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3066:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3071:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3076:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3081:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3086:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3091:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3096:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3106:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3111:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Width.h:75:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Width.h:75:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:99:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:102:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:105:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:105:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:317:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:56:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:58:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1438:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1443:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1448:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1453:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1458:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1463:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:509:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:509:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/air/AirBlockInsertionSet.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 63 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283471</commentid>
    <comment_count>50</comment_count>
      <attachid>303405</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-04 13:29:46 -0800</bug_when>
    <thetext>Created attachment 303405
fix some builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283472</commentid>
    <comment_count>51</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-04 13:32:48 -0800</bug_when>
    <thetext>Attachment 303405 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3HeapRange.h:91:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3026:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3031:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3036:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3041:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3046:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3051:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3056:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3061:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3066:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3071:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3076:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3081:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3086:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3091:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3096:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3106:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3111:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Width.h:76:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Width.h:76:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:99:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:102:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:105:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:105:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:317:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:56:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:58:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1438:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1443:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1448:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1453:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1458:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1463:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:509:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:509:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/air/AirBlockInsertionSet.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 63 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283531</commentid>
    <comment_count>52</comment_count>
      <attachid>303435</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-04 19:52:42 -0800</bug_when>
    <thetext>Created attachment 303435
more build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283533</commentid>
    <comment_count>53</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-04 19:55:40 -0800</bug_when>
    <thetext>Attachment 303435 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3HeapRange.h:91:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3026:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3031:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3036:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3041:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3046:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3051:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3056:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3061:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3066:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3071:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3076:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3081:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3086:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3091:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3096:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3106:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3111:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Width.h:76:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Width.h:76:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:99:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:102:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:105:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:105:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:317:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:56:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:58:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1438:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1443:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1448:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1453:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1458:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1463:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:509:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:509:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/air/AirBlockInsertionSet.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 63 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283534</commentid>
    <comment_count>54</comment_count>
      <attachid>303437</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-04 20:28:50 -0800</bug_when>
    <thetext>Created attachment 303437
try again to fix gtk build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283535</commentid>
    <comment_count>55</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-04 20:32:26 -0800</bug_when>
    <thetext>Attachment 303437 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3HeapRange.h:91:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3026:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3031:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3036:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3041:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3046:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3051:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3056:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3061:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3066:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3071:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3076:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3081:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3086:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3091:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3096:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3106:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3111:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Width.h:76:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Width.h:76:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:99:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:102:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:105:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:105:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:317:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:56:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:58:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1438:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1443:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1448:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1453:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1458:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1463:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:509:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:509:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/air/AirBlockInsertionSet.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 63 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283579</commentid>
    <comment_count>56</comment_count>
      <attachid>303437</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-05 03:46:57 -0800</bug_when>
    <thetext>Comment on attachment 303437
try again to fix gtk build

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

IIUC x86 cmpxchg never uses the flags that it sets, only its register? You can fold code such as this: old = cmpxchg(expected, desired) ; old ?= desired. The ZF flag is likely the most useful for == and !=, but others work too.



Otherwise, code looks good. I&apos;m not familiar with everything :)

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        - Atomic adds/sub/or/and/xor/xhg

&quot;add&quot;

&gt; Source/JavaScriptCore/ChangeLog:44
&gt; +        property in shared memory do not clobber non-atomics that ffect some other property in shared

&quot;affect&quot;

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:3387
&gt; +        and32(TrustedImm32(0xff), dest);

I don&apos;t understand why the mask is necessary since the top bits are already zero (ditto below).

&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:322
&gt; +            m_assembler.incq_m(address.offset, address.base, address.index, address.scale);

I don&apos;t believe inc is faster than add because it only partially updates flags which can cause a stall. Agner concurs.

&gt; Source/JavaScriptCore/b3/B3Effects.cpp:86
&gt; +        || (fence &amp;&amp; other.fence);

A few functions above, I think fences interfere with sideway exits because they&apos;re kindof like a delayed write. IIUC you can have write+fence+sideexit, and moving the fence after the exit can cause the write to occur in an unexpected order w.r.t. write in the side exit. I&apos;m not sure their ordering ever matter?

Here, it looks like we never consider strictly equivalent effects? Say you have to actual fences (not fence effects, but actual barrier instructions), these don&apos;t interfere. I&apos;m guessing this is rare, and we&apos;d want to eliminate them separately?

&gt; Source/JavaScriptCore/b3/B3Effects.h:96
&gt; +        result.fence = true;

This isn&apos;t too conservative because we&apos;d need to prove a call were &quot;pure&quot; or to entirely un-aliased heaps for any optimizations to be possible?

&gt; Source/JavaScriptCore/b3/B3GenericBlockInsertionSet.h:69
&gt; +        return insert(before-&gt;index(), frequency == frequency ? frequency : before-&gt;frequency());

isnan? :p

&gt; Source/JavaScriptCore/b3/B3LowerMacros.cpp:82
&gt; +        // This indicates that we&apos;ve 

Unfinished.

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:78
&gt; +// OOPS!!! (need a bug URL)

Oops.

&gt; Source/JavaScriptCore/b3/B3Opcode.h:220
&gt; +    // AtomicWeakCAS(@exp, @new, @ptr) == Equal(AtomicStrongCAS(@exp, @new, @ptr), @exp)

I find the reverse equivalence useful: a looping weak CAS is equivalent to a single strong CAS.

&gt; Source/JavaScriptCore/b3/B3Opcode.h:237
&gt; +    // FIXME: Maybe we should have AtomicXchgNeg and AtomicXchgNot.

At some point, someone in LLVM decided that these read-modify-write patterns mattered:
Nand 	*p = ~(old &amp; v)
Max 	*p = old &gt;signed v ? old : v
Min 	*p = old &lt;signed v ? old : v
UMax 	*p = old &gt;unsigned v ? old : v
UMin 	*p = old &lt;unsigned v ? old : v
I don&apos;t know that they do, but I assume there was some basis in reality.

&gt; Source/JavaScriptCore/b3/B3Opcode.h:264
&gt; +    // Except that the compiler never gets an opportunity to simplify out the BitXor.

Can dependencies be combined? I think that would be a possible future expansion of what you have here.

&gt; Source/JavaScriptCore/b3/B3Value.cpp:610
&gt; +            result.writes = memory-&gt;fenceRange();

I don&apos;t understand why loads write if they have a fence range. Same for stores below, and the read-modify-writes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283581</commentid>
    <comment_count>57</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-05 06:23:52 -0800</bug_when>
    <thetext>(In reply to comment #56)
&gt; Comment on attachment 303437 [details]
&gt; try again to fix gtk build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=303437&amp;action=review
&gt; 
&gt; IIUC x86 cmpxchg never uses the flags that it sets, only its register? You
&gt; can fold code such as this: old = cmpxchg(expected, desired) ; old ?=
&gt; desired. The ZF flag is likely the most useful for == and !=, but others
&gt; work too.

I dont understand what you&apos;re saying. If you read the code you&apos;ll see that we use the ZF flag from cmpzchg when it&apos;s profitable. 

&gt; 
&gt; 
&gt; 
&gt; Otherwise, code looks good. I&apos;m not familiar with everything :)
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:11
&gt; &gt; +        - Atomic adds/sub/or/and/xor/xhg
&gt; 
&gt; &quot;add&quot;
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:44
&gt; &gt; +        property in shared memory do not clobber non-atomics that ffect some other property in shared
&gt; 
&gt; &quot;affect&quot;
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:3387
&gt; &gt; +        and32(TrustedImm32(0xff), dest);
&gt; 
&gt; I don&apos;t understand why the mask is necessary since the top bits are already
&gt; zero (ditto below).

Because load acq on arm64 sign extends. 

&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:322
&gt; &gt; +            m_assembler.incq_m(address.offset, address.base, address.index, address.scale);
&gt; 
&gt; I don&apos;t believe inc is faster than add because it only partially updates
&gt; flags which can cause a stall. Agner concurs.

Inc is smaller. 

Dont listen to this kind of performance advice. It&apos;s brain damage. These people who say these things haven&apos;t run an experiment in their whole lives. 

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3Effects.cpp:86
&gt; &gt; +        || (fence &amp;&amp; other.fence);
&gt; 
&gt; A few functions above, I think fences interfere with sideway exits because
&gt; they&apos;re kindof like a delayed write. IIUC you can have write+fence+sideexit,
&gt; and moving the fence after the exit can cause the write to occur in an
&gt; unexpected order w.r.t. write in the side exit. I&apos;m not sure their ordering
&gt; ever matter?
&gt; 
&gt; Here, it looks like we never consider strictly equivalent effects? Say you
&gt; have to actual fences (not fence effects, but actual barrier instructions),
&gt; these don&apos;t interfere. I&apos;m guessing this is rare, and we&apos;d want to eliminate
&gt; them separately?

I think you don&apos;t understand what &apos;fence&apos; does. It&apos;s just the serialization token for fences. It only has to interfere with itself. 

We indicate actual fencing behavior by using fence ranges. 

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3Effects.h:96
&gt; &gt; +        result.fence = true;
&gt; 
&gt; This isn&apos;t too conservative because we&apos;d need to prove a call were &quot;pure&quot; or
&gt; to entirely un-aliased heaps for any optimizations to be possible?

It is too conservative because the fence serialization token is only for serializing fences with each other. 

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3GenericBlockInsertionSet.h:69
&gt; &gt; +        return insert(before-&gt;index(), frequency == frequency ? frequency : before-&gt;frequency());
&gt; 
&gt; isnan? :p

I&apos;m just moving code here. 

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerMacros.cpp:82
&gt; &gt; +        // This indicates that we&apos;ve 
&gt; 
&gt; Unfinished.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:78
&gt; &gt; +// OOPS!!! (need a bug URL)
&gt; 
&gt; Oops.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3Opcode.h:220
&gt; &gt; +    // AtomicWeakCAS(@exp, @new, @ptr) == Equal(AtomicStrongCAS(@exp, @new, @ptr), @exp)
&gt; 
&gt; I find the reverse equivalence useful: a looping weak CAS is equivalent to a
&gt; single strong CAS.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3Opcode.h:237
&gt; &gt; +    // FIXME: Maybe we should have AtomicXchgNeg and AtomicXchgNot.
&gt; 
&gt; At some point, someone in LLVM decided that these read-modify-write patterns
&gt; mattered:
&gt; Nand 	*p = ~(old &amp; v)
&gt; Max 	*p = old &gt;signed v ? old : v
&gt; Min 	*p = old &lt;signed v ? old : v
&gt; UMax 	*p = old &gt;unsigned v ? old : v
&gt; UMin 	*p = old &lt;unsigned v ? old : v
&gt; I don&apos;t know that they do, but I assume there was some basis in reality.

SAB doesn&apos;t use them and they have no basis in x86. 

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3Opcode.h:264
&gt; &gt; +    // Except that the compiler never gets an opportunity to simplify out the BitXor.
&gt; 
&gt; Can dependencies be combined? 

Yes. 

&gt; I think that would be a possible future
&gt; expansion of what you have here.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3Value.cpp:610
&gt; &gt; +            result.writes = memory-&gt;fenceRange();
&gt; 
&gt; I don&apos;t understand why loads write if they have a fence range. Same for
&gt; stores below, and the read-modify-writes.

Acquire is a phantom write and release is a phantom read. That&apos;s the B3 memory model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283594</commentid>
    <comment_count>58</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-05 10:16:09 -0800</bug_when>
    <thetext>(In reply to comment #57)
&gt; (In reply to comment #56)
&gt; &gt; Comment on attachment 303437 [details]
&gt; &gt; try again to fix gtk build
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=303437&amp;action=review
&gt; &gt; 
&gt; &gt; IIUC x86 cmpxchg never uses the flags that it sets, only its register? You
&gt; &gt; can fold code such as this: old = cmpxchg(expected, desired) ; old ?=
&gt; &gt; desired. The ZF flag is likely the most useful for == and !=, but others
&gt; &gt; work too.
&gt; 
&gt; I dont understand what you&apos;re saying. If you read the code you&apos;ll see that
&gt; we use the ZF flag from cmpzchg when it&apos;s profitable. 
&gt; 
&gt; &gt; 
&gt; &gt; 
&gt; &gt; 
&gt; &gt; Otherwise, code looks good. I&apos;m not familiar with everything :)
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:11
&gt; &gt; &gt; +        - Atomic adds/sub/or/and/xor/xhg
&gt; &gt; 
&gt; &gt; &quot;add&quot;
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:44
&gt; &gt; &gt; +        property in shared memory do not clobber non-atomics that ffect some other property in shared
&gt; &gt; 
&gt; &gt; &quot;affect&quot;
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:3387
&gt; &gt; &gt; +        and32(TrustedImm32(0xff), dest);
&gt; &gt; 
&gt; &gt; I don&apos;t understand why the mask is necessary since the top bits are already
&gt; &gt; zero (ditto below).
&gt; 
&gt; Because load acq on arm64 sign extends. 
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:322
&gt; &gt; &gt; +            m_assembler.incq_m(address.offset, address.base, address.index, address.scale);
&gt; &gt; 
&gt; &gt; I don&apos;t believe inc is faster than add because it only partially updates
&gt; &gt; flags which can cause a stall. Agner concurs.
&gt; 
&gt; Inc is smaller. 
&gt; 
&gt; Dont listen to this kind of performance advice. It&apos;s brain damage. These
&gt; people who say these things haven&apos;t run an experiment in their whole lives. 
We could very easily run this experiment inside JSC, too.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3Effects.cpp:86
&gt; &gt; &gt; +        || (fence &amp;&amp; other.fence);
&gt; &gt; 
&gt; &gt; A few functions above, I think fences interfere with sideway exits because
&gt; &gt; they&apos;re kindof like a delayed write. IIUC you can have write+fence+sideexit,
&gt; &gt; and moving the fence after the exit can cause the write to occur in an
&gt; &gt; unexpected order w.r.t. write in the side exit. I&apos;m not sure their ordering
&gt; &gt; ever matter?
&gt; &gt; 
&gt; &gt; Here, it looks like we never consider strictly equivalent effects? Say you
&gt; &gt; have to actual fences (not fence effects, but actual barrier instructions),
&gt; &gt; these don&apos;t interfere. I&apos;m guessing this is rare, and we&apos;d want to eliminate
&gt; &gt; them separately?
&gt; 
&gt; I think you don&apos;t understand what &apos;fence&apos; does. It&apos;s just the serialization
&gt; token for fences. It only has to interfere with itself. 
&gt; 
&gt; We indicate actual fencing behavior by using fence ranges. 
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3Effects.h:96
&gt; &gt; &gt; +        result.fence = true;
&gt; &gt; 
&gt; &gt; This isn&apos;t too conservative because we&apos;d need to prove a call were &quot;pure&quot; or
&gt; &gt; to entirely un-aliased heaps for any optimizations to be possible?
&gt; 
&gt; It is too conservative because the fence serialization token is only for
&gt; serializing fences with each other. 
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3GenericBlockInsertionSet.h:69
&gt; &gt; &gt; +        return insert(before-&gt;index(), frequency == frequency ? frequency : before-&gt;frequency());
&gt; &gt; 
&gt; &gt; isnan? :p
&gt; 
&gt; I&apos;m just moving code here. 
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3LowerMacros.cpp:82
&gt; &gt; &gt; +        // This indicates that we&apos;ve 
&gt; &gt; 
&gt; &gt; Unfinished.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:78
&gt; &gt; &gt; +// OOPS!!! (need a bug URL)
&gt; &gt; 
&gt; &gt; Oops.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3Opcode.h:220
&gt; &gt; &gt; +    // AtomicWeakCAS(@exp, @new, @ptr) == Equal(AtomicStrongCAS(@exp, @new, @ptr), @exp)
&gt; &gt; 
&gt; &gt; I find the reverse equivalence useful: a looping weak CAS is equivalent to a
&gt; &gt; single strong CAS.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3Opcode.h:237
&gt; &gt; &gt; +    // FIXME: Maybe we should have AtomicXchgNeg and AtomicXchgNot.
&gt; &gt; 
&gt; &gt; At some point, someone in LLVM decided that these read-modify-write patterns
&gt; &gt; mattered:
&gt; &gt; Nand 	*p = ~(old &amp; v)
&gt; &gt; Max 	*p = old &gt;signed v ? old : v
&gt; &gt; Min 	*p = old &lt;signed v ? old : v
&gt; &gt; UMax 	*p = old &gt;unsigned v ? old : v
&gt; &gt; UMin 	*p = old &lt;unsigned v ? old : v
&gt; &gt; I don&apos;t know that they do, but I assume there was some basis in reality.
&gt; 
&gt; SAB doesn&apos;t use them and they have no basis in x86. 
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3Opcode.h:264
&gt; &gt; &gt; +    // Except that the compiler never gets an opportunity to simplify out the BitXor.
&gt; &gt; 
&gt; &gt; Can dependencies be combined? 
&gt; 
&gt; Yes. 
&gt; 
&gt; &gt; I think that would be a possible future
&gt; &gt; expansion of what you have here.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3Value.cpp:610
&gt; &gt; &gt; +            result.writes = memory-&gt;fenceRange();
&gt; &gt; 
&gt; &gt; I don&apos;t understand why loads write if they have a fence range. Same for
&gt; &gt; stores below, and the read-modify-writes.
&gt; 
&gt; Acquire is a phantom write and release is a phantom read. That&apos;s the B3
&gt; memory model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283609</commentid>
    <comment_count>59</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-05 11:44:00 -0800</bug_when>
    <thetext>(In reply to comment #58)
&gt; (In reply to comment #57)
&gt; &gt; (In reply to comment #56)
&gt; &gt; &gt; Comment on attachment 303437 [details]
&gt; &gt; &gt; try again to fix gtk build
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:322
&gt; &gt; &gt; &gt; +            m_assembler.incq_m(address.offset, address.base, address.index, address.scale);
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t believe inc is faster than add because it only partially updates
&gt; &gt; &gt; flags which can cause a stall. Agner concurs.
&gt; &gt; 
&gt; &gt; Inc is smaller. 
&gt; &gt; 
&gt; &gt; Dont listen to this kind of performance advice. It&apos;s brain damage. These
&gt; &gt; people who say these things haven&apos;t run an experiment in their whole lives. 
&gt; We could very easily run this experiment inside JSC, too.

We did!

https://trac.webkit.org/changeset/154158

If it had been a regression, we would have detected it at the time. I remember this change well because we had this exact conversation. It turns out that this change was a progression in the CSS JIT and it had no effect on the JSC JITs.  I believe that the progression was thanks to code size.

It&apos;s an easy test to rerun.  I think that we would need a definite win on a macrobenchmark suite (Octane, JetStream, or something like that) in order to remove our use of inc, since for big sites we want to err on the side of smaller code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283619</commentid>
    <comment_count>60</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-05 13:43:41 -0800</bug_when>
    <thetext>(In reply to comment #59)
&gt; (In reply to comment #58)
&gt; &gt; (In reply to comment #57)
&gt; &gt; &gt; (In reply to comment #56)
&gt; &gt; &gt; &gt; Comment on attachment 303437 [details]
&gt; &gt; &gt; &gt; try again to fix gtk build
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:322
&gt; &gt; &gt; &gt; &gt; +            m_assembler.incq_m(address.offset, address.base, address.index, address.scale);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I don&apos;t believe inc is faster than add because it only partially updates
&gt; &gt; &gt; &gt; flags which can cause a stall. Agner concurs.
&gt; &gt; &gt; 
&gt; &gt; &gt; Inc is smaller. 
&gt; &gt; &gt; 
&gt; &gt; &gt; Dont listen to this kind of performance advice. It&apos;s brain damage. These
&gt; &gt; &gt; people who say these things haven&apos;t run an experiment in their whole lives. 
&gt; &gt; We could very easily run this experiment inside JSC, too.
&gt; 
&gt; We did!
&gt; 
&gt; https://trac.webkit.org/changeset/154158
&gt; 
&gt; If it had been a regression, we would have detected it at the time. I
&gt; remember this change well because we had this exact conversation. It turns
&gt; out that this change was a progression in the CSS JIT and it had no effect
&gt; on the JSC JITs.  I believe that the progression was thanks to code size.
Cool. This does not surprise me.

My original comment was mostly in favor of your stance of determining perf wins through experimentation and real data. If I heard both hypotheses in isolation, I would say each sounds interesting. 1, emit less code. 2, don&apos;t introduce stalls. But I am in total agreement it&apos;s paramount to actually measure these hypotheses before determining which is superior.

&gt; It&apos;s an easy test to rerun.  I think that we would need a definite win on a
&gt; macrobenchmark suite (Octane, JetStream, or something like that) in order to
&gt; remove our use of inc, since for big sites we want to err on the side of
&gt; smaller code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283855</commentid>
    <comment_count>61</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-06 11:34:20 -0800</bug_when>
    <thetext>Cool, thanks for the answers! Besides the few comments I had, all looks good.

I&apos;m not confident I understand how the fence ranges work, but I generally like that capability and would like it in C++: wg21.link/p0153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284150</commentid>
    <comment_count>62</comment_count>
      <attachid>303609</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-06 20:11:11 -0800</bug_when>
    <thetext>Created attachment 303609
the patch

Rebased. Added bug links to all of the FIXMEs. Fixed some semantic slop in subwidth CASes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284151</commentid>
    <comment_count>63</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-06 20:13:15 -0800</bug_when>
    <thetext>Attachment 303609 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3HeapRange.h:91:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3026:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3031:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3036:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3041:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3046:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3051:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3056:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3061:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3066:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3071:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3076:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3081:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3086:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3091:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3096:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3106:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3111:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Width.h:81:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Width.h:81:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:101:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:104:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:107:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:107:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:317:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:56:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:58:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1438:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1443:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1448:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1453:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1458:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1463:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:512:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:512:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/air/AirBlockInsertionSet.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 64 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285354</commentid>
    <comment_count>64</comment_count>
      <attachid>303928</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-09 09:42:36 -0800</bug_when>
    <thetext>Created attachment 303928
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285356</commentid>
    <comment_count>65</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 09:44:28 -0800</bug_when>
    <thetext>Attachment 303928 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3HeapRange.h:91:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3026:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3031:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3036:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3041:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3046:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3051:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3056:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3061:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3066:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3071:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3076:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3081:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3086:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3091:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3096:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3101:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3106:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:3111:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Width.h:81:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Width.h:81:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:101:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:104:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:107:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:107:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:317:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:56:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:58:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1438:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1443:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1448:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1453:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1458:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1463:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:512:  The parameter name &quot;bank&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3Opcode.h:512:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/air/AirBlockInsertionSet.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 64 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285715</commentid>
    <comment_count>66</comment_count>
      <attachid>303928</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-03-09 17:56:20 -0800</bug_when>
    <thetext>Comment on attachment 303928
the patch

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

r=me.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:4140
&gt; +    void atomicStrongCAS(StatusCondition cond, RegisterID expectedAndResult, RegisterID newValue, Address address, RegisterID result)

Side note: We should have a ClobberedRegisterID class so it&apos;s not possible to accidentally use a function that clobbers a register you don&apos;t expect.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:4142
&gt; +        signExtend&lt;datasize&gt;(expectedAndResult, expectedAndResult);

I&apos;m not sure I get this. why sign extend?

&gt; Source/JavaScriptCore/b3/B3LowerMacros.cpp:82
&gt; +        // This indicates that we&apos;ve 

Looks like this indicates you lost your train of thought :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285745</commentid>
    <comment_count>67</comment_count>
      <attachid>303928</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-09 20:10:13 -0800</bug_when>
    <thetext>Comment on attachment 303928
the patch

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

&gt; Source/JavaScriptCore/b3/B3LowerMacros.cpp:255
&gt; +                // bits in the operand. . So, either way, we need to throw a sign-extend on these

double period.

&gt; Source/JavaScriptCore/b3/B3LowerMacros.cpp:263
&gt; +                        m_value-&gt;child(0) = m_insertionSet.insert&lt;Value&gt;(
&gt; +                            m_index, Neg, m_origin, m_value-&gt;child(0));

What if child0 is INT_MIN?

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2235
&gt; +        storeBlock-&gt;append(storeCondOpcode(width, atomic-&gt;hasFence()), m_value, newValueTmp, address, successBoolResultTmp);

What does store conditional return when it successfully stores?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285759</commentid>
    <comment_count>68</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-09 21:11:06 -0800</bug_when>
    <thetext>(In reply to comment #67)
&gt; Comment on attachment 303928 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=303928&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerMacros.cpp:255
&gt; &gt; +                // bits in the operand. . So, either way, we need to throw a sign-extend on these
&gt; 
&gt; double period.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerMacros.cpp:263
&gt; &gt; +                        m_value-&gt;child(0) = m_insertionSet.insert&lt;Value&gt;(
&gt; &gt; +                            m_index, Neg, m_origin, m_value-&gt;child(0));
&gt; 
&gt; What if child0 is INT_MIN?

Then add and sub behave the same way!

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2235
&gt; &gt; +        storeBlock-&gt;append(storeCondOpcode(width, atomic-&gt;hasFence()), m_value, newValueTmp, address, successBoolResultTmp);
&gt; 
&gt; What does store conditional return when it successfully stores?

The ARM StoreCond returns 0 on success. So that&apos;s what Air does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285830</commentid>
    <comment_count>69</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-10 09:50:11 -0800</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/213714</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302367</attachid>
            <date>2017-02-21 21:39:00 -0800</date>
            <delta_ts>2017-02-23 13:56:53 -0800</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>8757</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0tpbmQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNLaW5kLmgJKHJldmlzaW9uIDIxMjgwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0tpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDE5
ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjI2ODgKICAgICBib29sIGhhc1RyYXBzKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHN3aXRjaCAobV9vcGNvZGUpIHsKLSAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAg
ICAgIGNhc2UgTG9hZDhTOgotICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAgIGNhc2UgTG9h
ZDE2UzoKLSAgICAgICAgY2FzZSBMb2FkOgotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAg
Y2FzZSBTdG9yZTE2OgotICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGlzTG9hZFN0b3JlKG1fb3Bjb2RlKTsKICAgICB9CiAgICAgYm9v
bCB0cmFwcygpIGNvbnN0CiAgICAgewpAQCAtMTQxLDYgKzEyOSw2MCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fdHJhcHMgPSB0cmFwczsKICAgICB9CiAgICAgCisgICAgLy8gQWNxdWlyZSBiaXQuIEl0
IGluZGljYXRlcyB0aGF0IHRoZSBvcGVyYXRpb24gaGFzIHBoYW50b20gd3JpdGUgZWZmZWN0cy4g
WW91IGNhbiBhc2sgdGhlCisgICAgLy8gQXRvbWljTWVtb3J5VmFsdWUgZm9yIHRoZSBwaGFudG9t
IGVmZmVjdHMgaGVhcCBhbmQgdGhlIGhlYXAgYmVpbmcgYWNjZXNzZWQuIEZvciBhY3F1aXJlLCB0
aGUKKyAgICAvLyBwaGFudG9tIGVmZmVjdHMgaGVhcCB3aWxsIHNob3cgdXAgYXMgYSB3cml0ZSBl
ZmZlY3QgaW4gVmFsdWU6OmVmZmVjdHMoKS4gQnV0IHRoaXMgaXMgYSBwcm9taXNlCisgICAgLy8g
dGhhdCB0aGlzIHBoYW50b20gZWZmZWN0IHdvbid0IHdyaXRlIHRvIHRoaW5ncyB0aGF0IHRoaXMg
dGhyZWFkIHByZXZpb3VzbHkgd3JvdGUgdG8sIGFuZCBpZiBpdAorICAgIC8vIGRvZXMsIHRoZW4g
aXQgZG9lc24ndCBtYXR0ZXIgd2hvIHdpbnMuIFRoZXJlZm9yZSwgaWYgd2UgaGF2ZToKKyAgICAv
LworICAgIC8vICAgICBTdG9yZSguLi4pCisgICAgLy8gICAgIEZvbzxBY3F1aXJlPiguLi4pCisg
ICAgLy8KKyAgICAvLyBUaGVuIHdlIGNhbiBtb3ZlIHRoZSBTdG9yZSBiZWxvdyB0aGUgRm9vLiBI
b3dldmVyLCB3ZSBjYW5ub3QgZG8gdGhlIG9wcG9zaXRlIG9mIHRoaXMuIElmIGEgU3RvcmUKKyAg
ICAvLyBpcyBiZWxvdyBGb28sIHdlIGNhbid0IG1vdmUgaXQgYWJvdmUgdGhlIEZvby4gVGhhdCdz
IGJlY2F1c2UgdGhlIG5vcm1hbCB3cml0ZSBpbnRlcmZlcmVuY2UgcnVsZQorICAgIC8vIGFwcGxp
ZXM6IHlvdSBjYW5ub3QgcmVvcmRlciBzdG9yZXMgdGhhdCBtYXkgYWxpYXMuIFdlIG9ubHkgZ2V0
IHRoZSBBY3F1aXJlIGV4ZW1wdGlvbiBmb3IgU3RvcmVzCisgICAgLy8gdGhhdCBhcHBlYXIgYmVm
b3JlIHRoZSBBY3F1aXJlLgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IGlmIHdlIGhhdmUgYm90
aCBBY3F1aXJlIGFuZCBSZWxlYXNlLCB0aGVuIHRoZSBwaGFudG9tIGVmZmVjdHMgaGVhcCBoYXMg
bm8gZXhlbXB0aW9ucy4KKyAgICAvLyBJdCdzIGp1c3QgYSBub3JtYWwgY2xvYmJlci4KKyAgICBi
b29sIGhhc0FjcXVpcmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzQXRvbWljKG1f
b3Bjb2RlKSB8fCBpc0xvYWQobV9vcGNvZGUpOworICAgIH0KKyAgICBib29sIGFjcXVpcmUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYWNxdWlyZTsKKyAgICB9CisgICAgdm9pZCBz
ZXRBY3F1aXJlKGJvb2wgYWNxdWlyZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNBY3F1aXJl
KCkpOworICAgICAgICBtX2FjcXVpcmUgPSBhY3F1aXJlOworICAgIH0KKyAgICAKKyAgICAvLyBS
ZWxlYXNlIGJpdC4gSXQgaW5kaWNhdGVzIHRoYXQgdGhlIG9wZXJhdGlvbiBoYXMgcGhhbnRvbSBy
ZWFkIGVmZmVjdHMuIEZvciByZWxlYXNlLCB0aGUgcGhhbnRvbQorICAgIC8vIGVmZmVjdHMgaGVh
cCB3aWxsIHNob3cgdXAgYXMgYSByZWFkIGVmZmVjdCBpbiBWYWx1ZTo6ZWZmZWN0cygpLiBCdXQg
dGhpcyBpcyBhIHByb21pc2UgdGhhdCB0aGlzCisgICAgLy8gcGhhbnRvbSBlZmZlY3Qgd29uJ3Qg
cmVhZCBmcm9tIHRoaW5ncyB0aGF0IHRoaXMgdGhyZWFkIHdpbGwgd3JpdGUgdG8gaW4gdGhlIGZ1
dHVyZSwgYW5kIGlmIGl0CisgICAgLy8gZG9lcywgdGhlbiBpdCBkb2Vzbid0IG1hdHRlciB3aGV0
aGVyIGl0IHNlZXMgdGhvc2Ugd3JpdGVzIG9yIG5vdC4gVGhlcmVmb3JlLCBpZiB3ZSBoYXZlOgor
ICAgIC8vCisgICAgLy8gICAgIEZvbzxSZWxlYXNlPiguLi4pCisgICAgLy8gICAgIFN0b3JlKC4u
LikKKyAgICAvLworICAgIC8vIFRoZW4gd2UgY291bGQgbW92ZSB0aGUgc3RvcmUgdXAgYWJvdmUg
dGhlIEZvby4gQnV0IGl0J3MgYSBvbmUtd2F5IHN0cmVldCAtIHRoZSBvcHBvc2l0ZSB3b3VsZCBu
b3QKKyAgICAvLyB3b3JrLgorICAgIGJvb2wgaGFzUmVsZWFzZSgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gaXNBdG9taWMobV9vcGNvZGUpIHx8IGlzU3RvcmUobV9vcGNvZGUpOworICAg
IH0KKyAgICBib29sIHJlbGVhc2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcmVs
ZWFzZTsKKyAgICB9CisgICAgdm9pZCBzZXRSZWxlYXNlKGJvb2wgcmVsZWFzZSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChoYXNSZWxlYXNlKCkpOworICAgICAgICBtX3JlbGVhc2UgPSByZWxlYXNl
OworICAgIH0KKyAgICAKICAgICAvLyBSdWxlcyBmb3IgYWRkaW5nIG5ldyBwcm9wZXJ0aWVzOgog
ICAgIC8vIC0gUHV0IHRoZSBhY2Nlc3NvcnMgaGVyZS4KICAgICAvLyAtIGhhc0JsYWgoKSBzaG91
bGQgY2hlY2sgaWYgdGhlIG9wY29kZSBhbGxvd3MgZm9yIHlvdXIgcHJvcGVydHkuCkBAIC0xNTMs
NyArMTk1LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlID09IG90
aGVyLm1fb3Bjb2RlCiAgICAgICAgICAgICAmJiBtX2lzQ2hpbGwgPT0gb3RoZXIubV9pc0NoaWxs
Ci0gICAgICAgICAgICAmJiBtX3RyYXBzID09IG90aGVyLm1fdHJhcHM7CisgICAgICAgICAgICAm
JiBtX3RyYXBzID09IG90aGVyLm1fdHJhcHMKKyAgICAgICAgICAgICYmIG1fYWNxdWlyZSA9PSBv
dGhlci5tX2FjcXVpcmUKKyAgICAgICAgICAgICYmIG1fcmVsZWFzZSA9PSBvdGhlci5tX3JlbGVh
c2U7CiAgICAgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBLaW5kJiBvdGhlcikg
Y29uc3QKQEAgLTE2NywxMyArMjExLDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIEl0
J3MgYWxtb3N0IGNlcnRhaW5seSBtb3JlIGltcG9ydGFudCB0aGF0IHRoaXMgaGFzaCBmdW5jdGlv
biBpcyBjaGVhcCB0byBjb21wdXRlIHRoYW4KICAgICAgICAgLy8gYW55dGhpbmcgZWxzZS4gV2Ug
Y2FuIGxpdmUgd2l0aCBzb21lIGtpbmQgaGFzaCBjb2xsaXNpb25zLgotICAgICAgICByZXR1cm4g
bV9vcGNvZGUgKyAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1faXNDaGlsbCkgPDwgMTYpICsgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX3RyYXBzKSA8PCA3KTsKKyAgICAgICAgcmV0dXJuIG1fb3Bj
b2RlICsgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lzQ2hpbGwpIDw8IDE2KSArIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV90cmFwcykgPDwgNykgKyAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
YWNxdWlyZSkgPDwgMTEpICsgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3JlbGVhc2UpIDw8IDMp
OwogICAgIH0KICAgICAKICAgICBLaW5kKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkK
ICAgICAgICAgOiBtX29wY29kZShPb3BzKQogICAgICAgICAsIG1faXNDaGlsbCh0cnVlKQogICAg
ICAgICAsIG1fdHJhcHMoZmFsc2UpCisgICAgICAgICwgbV9hY3F1aXJlKGZhbHNlKQorICAgICAg
ICAsIG1fcmVsZWFzZShmYWxzZSkKICAgICB7CiAgICAgfQogICAgIApAQCAtMTg2LDYgKzIzMiw4
IEBAIHByaXZhdGU6CiAgICAgT3Bjb2RlIG1fb3Bjb2RlOwogICAgIGJvb2wgbV9pc0NoaWxsIDog
MTsKICAgICBib29sIG1fdHJhcHMgOiAxOworICAgIGJvb2wgbV9hY3F1aXJlIDogMTsKKyAgICBi
b29sIG1fcmVsZWFzZSA6IDE7CiB9OwogCiAvLyBGb3IgZXZlcnkgZmxhZyAnZm9vJyB5b3UgYWRk
LCBpdCdzIGN1c3RvbWFyeSB0byBjcmVhdGUgYSBLaW5kIEIzOjpmb28oS2luZCkgZnVuY3Rpb24g
dGhhdCBtYWtlcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5o
CShyZXZpc2lvbiAyMTI4MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxOSArMzksNyBAQCBjbGFzcyBKU19FWFBPUlRf
UFJJVkFURSBNZW1vcnlWYWx1ZSA6IHB1CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgYWNjZXB0
cyhLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAg
ICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgIGNhc2UgTG9hZDhTOgotICAgICAgICBjYXNlIExv
YWQxNlo6Ci0gICAgICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAgY2FzZSBMb2FkOgotICAgICAg
ICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICBjYXNlIFN0b3Jl
OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlzTG9hZFN0b3JlKGtp
bmQub3Bjb2RlKTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBpc1N0b3JlKEtpbmQga2luZCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAyMTI4MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTYyLDYgKzE2Miw1NSBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIFN0b3JlMTYsCiAg
ICAgLy8gVGhpcyBpcyBhIHBvbHltb3JwaGljIHN0b3JlIGZvciBJbnQzMiwgSW50NjQsIEZsb2F0
LCBhbmQgRG91YmxlLgogICAgIFN0b3JlLAorICAgIAorICAgIC8vIEF0b21pYyBjb21wYXJlIGFu
ZCBzd2FwIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4uIE1heSBjaG9vc2UgdG8gZG8gbm90aGluZyBh
bmQgcmV0dXJuIGZhbHNlLiBZb3UgY2FuCisgICAgLy8gdXN1YWxseSBhc3N1bWUgdGhhdCB0aGlz
IGlzIGZhc3RlciBhbmQgcmVzdWx0cyBpbiBsZXNzIGNvZGUgdGhhbiBBdG9taWNTdHJvbmdDQVMs
IHRob3VnaCB0aGF0J3MKKyAgICAvLyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSBvbiBJbnRlbCwgaWYg
aW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIGRvZXMgaXRzIGpvYi4gSW1hZ2luZSB0aGF0IHRoaXMgb3Bj
b2RlIGlzCisgICAgLy8gYXMgaWYgeW91IGRpZCB0aGlzIGF0b21pY2FsbHk6CisgICAgLy8KKyAg
ICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8vIGJvb2wgQXRvbWljV2Vha0NBUyhUKiBw
dHIsIFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSkKKyAgICAvLyB7CisgICAgLy8gICAgIGlm
ICghcmFuZCgpKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBSZWFsIHdvcmxkIGV4
YW1wbGUgb2YgdGhpczogY29udGV4dCBzd2l0Y2ggb24gQVJNIHdoaWxlIGRvaW5nIENBUy4KKyAg
ICAvLyAgICAgaWYgKCpwdHIgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAvLyAgICAgKnB0ciA9IG5ld1ZhbHVlOworICAgIC8vICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAvLyB9CisgICAgQXRvbWljV2Vha0NBUywKKyAgICAKKyAgICAvLyBBdG9taWMg
Y29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2
ZSB0aGUgbm9uZGV0ZXJtaW5pc20gb2YgV2Vha0NBUy4KKyAgICAvLyBUaGlzIGlzIGEgYml0IG1v
cmUgY29kZSBhbmQgYSBiaXQgc2xvd2VyIGluIHNvbWUgY2FzZXMsIHRob3VnaCBub3QgYnkgYSBs
b3QuIEltYWdpbmUgdGhhdCB0aGlzCisgICAgLy8gb3Bjb2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhp
cyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAv
LyBUIEF0b21pY1N0cm9uZ0NBUyhUKiBwdHIsIFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSkK
KyAgICAvLyB7CisgICAgLy8gICAgIFQgb2xkVmFsdWUgPSAqcHRyOworICAgIC8vICAgICBpZiAo
b2xkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgICpwdHIgPSBuZXdWYWx1
ZTsKKyAgICAvLyAgICAgcmV0dXJuIG9sZFZhbHVlCisgICAgLy8gfQorICAgIC8vCisgICAgLy8g
Tm90ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5kIEF0b21pY1N0cm9uZ0NBUyBoYXZlIHRoaXMga2lu
ZCBvZiBlcXVpdmFsZW5jZToKKyAgICAvLworICAgIC8vIEF0b21pY1dlYWtDQVMoQHB0ciwgQGV4
cCwgQG5ldykgPT0gRXF1YWwoQXRvbWljU3Ryb25nQ0FTKEBwdHIsIEBleHAsIEBuZXcpLCBAZXhw
KQorICAgIEF0b21pY1N0cm9uZ0NBUywKKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IF9fXyBhIG1l
bW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRoZSBvbGQgdmFsdWUuIFN5bnRheDoKKyAgICAvLwor
ICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGdfX18oQHB0ciwgQG9wZXJhbmQpCisgICAgQXRv
bWljWGNoZ0FkZCwKKyAgICBBdG9taWNYY2hnQW5kLAorICAgIEF0b21pY1hjaGdPciwKKyAgICBB
dG9taWNYY2hnU3ViLAorICAgIEF0b21pY1hjaGdYb3IsCisgICAgCisgICAgLy8gQXRvbWljYWxs
eSBleGNoYW5nZSBhIHZhbHVlIHdpdGggYSBtZW1vcnkgbG9jYXRpb24uIFN5bnRheDoKKyAgICAv
LworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGcoQHB0ciwgQG5ld1ZhbHVlKQorICAgIEF0
b21pY1hjaHIsCiAKICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIGFk
ZHJlc3Mgb2YgYSBXYXNtIG1lbW9yeSBvcGVyYXRpb24uIEl0IHRha2VzIGFuIEludFB0cgogICAg
IC8vIGFuZCBhIHBpbm5lZCByZWdpc3RlciB0aGVuIGNvbXB1dGVzIHRoZSBhcHByb3ByaWF0ZSBJ
bnRQdHIgYWRkcmVzcy4gRm9yIHRoZSB1c2UtY2FzZSBvZgpAQCAtMzAxLDYgKzM1MCw2NiBAQCBp
bmxpbmUgYm9vbCBpc0RlZmluaXRlbHlUZXJtaW5hbChPcGNvZGUgCiAgICAgfQogfQogCitpbmxp
bmUgYm9vbCBpc0xvYWQoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgewor
ICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAg
ICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9v
bCBpc1N0b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBj
YXNlIFN0b3JlODoKKyAgICBjYXNlIFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKworaW5saW5lIGJvb2wgaXNMb2FkU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0
Y2ggKG9wY29kZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNh
c2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2Ug
U3RvcmU4OgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CitpbmxpbmUgYm9vbCBpc0F0b21pYyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bj
b2RlKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FT
OgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAg
Y2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRv
bWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaHI6CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302571</attachid>
            <date>2017-02-23 13:56:53 -0800</date>
            <delta_ts>2017-02-23 16:01:23 -0800</delta_ts>
            <desc>a bit more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18506</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCShyZXZpc2lvbiAyMTI4
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODIsNyArODIsOCBAQCBib29sIEVmZmVjdHM6OmludGVyZmVyZXMoY29uc3QgRWZm
ZWN0cyYgCiAgICAgICAgIHx8IGludGVyZmVyZXNXaXRoV3JpdGVzUGlubmVkKG90aGVyLCAqdGhp
cykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKICAgICAgICAgfHwg
d3JpdGVzLm92ZXJsYXBzKG90aGVyLnJlYWRzKQotICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhv
dGhlci53cml0ZXMpOworICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53cml0ZXMpCisg
ICAgICAgIHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3Bl
cmF0b3I9PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTk1LDcgKzk2LDggQEAgYm9v
bCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIAogICAgICAgICAmJiB3cml0ZXNQ
aW5uZWQgPT0gb3RoZXIud3JpdGVzUGlubmVkCiAgICAgICAgICYmIHJlYWRzUGlubmVkID09IG90
aGVyLnJlYWRzUGlubmVkCiAgICAgICAgICYmIHdyaXRlcyA9PSBvdGhlci53cml0ZXMKLSAgICAg
ICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHM7CisgICAgICAgICYmIHJlYWRzID09IG90aGVyLnJl
YWRzCisgICAgICAgICYmIGZlbmNlID09IG90aGVyLmZlbmNlOwogfQogCiBib29sIEVmZmVjdHM6
Om9wZXJhdG9yIT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0CkBAIC0xMjAsNiArMTIyLDgg
QEAgdm9pZCBFZmZlY3RzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbgogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJXcml0ZXNQaW5uZWQiKTsKICAgICBpZiAocmVhZHNQaW5uZWQpCiAgICAg
ICAgIG91dC5wcmludChjb21tYSwgIlJlYWRzUGlubmVkIik7CisgICAgaWYgKGZlbmNlKQorICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJGZW5jZSIpOwogICAgIGlmICh3cml0ZXMpCiAgICAgICAg
IG91dC5wcmludChjb21tYSwgIldyaXRlczoiLCB3cml0ZXMpOwogICAgIGlmIChyZWFkcykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJKHJldmlzaW9uIDIxMjgwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkod29ya2luZyBjb3B5KQpAQCAt
NzEsNiArNzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBib29sIHJlYWRzUGlubmVkIHsgZmFs
c2UgfTsKICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07CisgICAgCisgICAgLy8gTWVt
b3J5IGZlbmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBlYWNoIG90aGVyIHJlZ2FyZGxl
c3Mgb2YgdGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisgICAgLy8gaWYgdGhlIG9wZXJh
dGlvbiBpcyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZlbmNlIHsgZmFsc2UgfTsKIAogICAg
IEhlYXBSYW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRzOwpAQCAtODksNiArOTMsNyBA
QCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9w
KCk7CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIHJlc3VsdC53
cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcgKzEwOCw3IEBAIHN0cnVjdCBFZmZl
Y3RzIHsKIAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8fCB3cml0
ZXMgfHwgd3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRl
d2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQgfHwgZmVu
Y2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHJlb3JkZXJpbmcgaW5zdHJ1Y3Rp
b25zIHdpdGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxkIGNoYW5nZSBwcm9ncmFtCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNLaW5kLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzS2luZC5oCShyZXZpc2lvbiAyMTI4MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNywxOSAr
MTE3LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYyNjg4CiAgICAgYm9vbCBoYXNUcmFwcygpIGNvbnN0CiAgICAgewot
ICAgICAgICBzd2l0Y2ggKG1fb3Bjb2RlKSB7Ci0gICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAg
ICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAgICBjYXNlIExvYWQx
NlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNh
c2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
CisgICAgICAgIHJldHVybiBpc0xvYWRTdG9yZShtX29wY29kZSk7CiAgICAgfQogICAgIGJvb2wg
dHJhcHMoKSBjb25zdAogICAgIHsKQEAgLTE0MSw2ICsxMjksNzMgQEAgcHVibGljOgogICAgICAg
ICBtX3RyYXBzID0gdHJhcHM7CiAgICAgfQogICAgIAorICAgIC8vIEFjcXVpcmUgYml0LiBJdCBp
bmRpY2F0ZXMgdGhhdCB0aGUgb3BlcmF0aW9uIGhhcyBwaGFudG9tIHdyaXRlIGVmZmVjdHMuIFlv
dSBjYW4gYXNrIHRoZQorICAgIC8vIEF0b21pY01lbW9yeVZhbHVlIGZvciB0aGUgcGhhbnRvbSBl
ZmZlY3RzIGhlYXAgYW5kIHRoZSBoZWFwIGJlaW5nIGFjY2Vzc2VkLiBGb3IgYWNxdWlyZSwgdGhl
CisgICAgLy8gcGhhbnRvbSBlZmZlY3RzIGhlYXAgd2lsbCBzaG93IHVwIGFzIGEgd3JpdGUgZWZm
ZWN0IGluIFZhbHVlOjplZmZlY3RzKCkuIEJ1dCB0aGlzIGlzIGEgcHJvbWlzZQorICAgIC8vIHRo
YXQgdGhpcyBwaGFudG9tIGVmZmVjdCB3b24ndCB3cml0ZSB0byB0aGluZ3MgdGhhdCB0aGlzIHRo
cmVhZCBwcmV2aW91c2x5IHdyb3RlIHRvLCBhbmQgaWYgaXQKKyAgICAvLyBkb2VzLCB0aGVuIGl0
IGRvZXNuJ3QgbWF0dGVyIHdobyB3aW5zLiBUaGVyZWZvcmUsIGlmIHdlIGhhdmU6CisgICAgLy8K
KyAgICAvLyAgICAgU3RvcmUoLi4uKQorICAgIC8vICAgICBGb288QWNxdWlyZT4oLi4uKQorICAg
IC8vCisgICAgLy8gVGhlbiB3ZSBjYW4gbW92ZSB0aGUgU3RvcmUgYmVsb3cgdGhlIEZvby4gSG93
ZXZlciwgd2UgY2Fubm90IGRvIHRoZSBvcHBvc2l0ZSBvZiB0aGlzLiBJZiBhIFN0b3JlCisgICAg
Ly8gaXMgYmVsb3cgRm9vLCB3ZSBjYW4ndCBtb3ZlIGl0IGFib3ZlIHRoZSBGb28uIFRoYXQncyBi
ZWNhdXNlIHRoZSBub3JtYWwgd3JpdGUgaW50ZXJmZXJlbmNlIHJ1bGUKKyAgICAvLyBhcHBsaWVz
OiB5b3UgY2Fubm90IHJlb3JkZXIgc3RvcmVzIHRoYXQgbWF5IGFsaWFzLiBXZSBvbmx5IGdldCB0
aGUgQWNxdWlyZSBleGVtcHRpb24gZm9yIFN0b3JlcworICAgIC8vIHRoYXQgYXBwZWFyIGJlZm9y
ZSB0aGUgQWNxdWlyZS4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBpZiB3ZSBoYXZlIGJvdGgg
QWNxdWlyZSBhbmQgUmVsZWFzZSwgdGhlbiB0aGUgcGhhbnRvbSBlZmZlY3RzIGhlYXAgaGFzIG5v
IGV4ZW1wdGlvbnMuCisgICAgLy8gSXQncyBqdXN0IGEgbm9ybWFsIGNsb2JiZXIuCisgICAgLy8K
KyAgICAvLyBBZGRpdGlvbmFsbHksIG9wZXJhdGlvbnMgd2l0aCBlaXRoZXIgdGhlIGFjcXVpcmUg
b3IgcmVsZWFzZSBiaXQgc2V0IGNhbm5vdCBiZSByZW9yZGVyZWQgYXJvdW5kCisgICAgLy8gZWFj
aCBvdGhlci4KKyAgICAvLworICAgIC8vIE9uIFg4NiwgbG9hZCBhY3F1aXJlIGNhbiBiZSBjb2Rl
Z2VuZXJhdGVkIGFzIGEgbm9ybWFsIGxvYWQsIHNvIGxvbmcgYXMgZXZlcnl0aGluZyBlbHNlIGdl
dHMKKyAgICAvLyBjb2RlZ2VuZXJhdGVkIGFzIHNvbWV0aGluZyB0aGF0IGhhcyBhdCBsZWFzdCBh
biBvcnRvcCBmZW5jZS4KKyAgICAvLworICAgIC8vIE9uIEFSTSwgdGhpcyBpcyBhIG5hdGl2ZSBp
bnN0cnVjdGlvbi4KKyAgICBib29sIGhhc0FjcXVpcmUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGlzQXRvbWljKG1fb3Bjb2RlKSB8fCBpc0xvYWQobV9vcGNvZGUpOworICAgIH0KKyAg
ICBib29sIGFjcXVpcmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYWNxdWlyZTsK
KyAgICB9CisgICAgdm9pZCBzZXRBY3F1aXJlKGJvb2wgYWNxdWlyZSkKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNBY3F1aXJlKCkpOworICAgICAgICBtX2FjcXVpcmUgPSBhY3F1aXJlOworICAg
IH0KKyAgICAKKyAgICAvLyBSZWxlYXNlIGJpdC4gSXQgaW5kaWNhdGVzIHRoYXQgdGhlIG9wZXJh
dGlvbiBoYXMgcGhhbnRvbSByZWFkIGVmZmVjdHMuIEZvciByZWxlYXNlLCB0aGUgcGhhbnRvbQor
ICAgIC8vIGVmZmVjdHMgaGVhcCB3aWxsIHNob3cgdXAgYXMgYSByZWFkIGVmZmVjdCBpbiBWYWx1
ZTo6ZWZmZWN0cygpLiBCdXQgdGhpcyBpcyBhIHByb21pc2UgdGhhdCB0aGlzCisgICAgLy8gcGhh
bnRvbSBlZmZlY3Qgd29uJ3QgcmVhZCBmcm9tIHRoaW5ncyB0aGF0IHRoaXMgdGhyZWFkIHdpbGwg
d3JpdGUgdG8gaW4gdGhlIGZ1dHVyZSwgYW5kIGlmIGl0CisgICAgLy8gZG9lcywgdGhlbiBpdCBk
b2Vzbid0IG1hdHRlciB3aGV0aGVyIGl0IHNlZXMgdGhvc2Ugd3JpdGVzIG9yIG5vdC4gVGhlcmVm
b3JlLCBpZiB3ZSBoYXZlOgorICAgIC8vCisgICAgLy8gICAgIEZvbzxSZWxlYXNlPiguLi4pCisg
ICAgLy8gICAgIFN0b3JlKC4uLikKKyAgICAvLworICAgIC8vIFRoZW4gd2UgY291bGQgbW92ZSB0
aGUgc3RvcmUgdXAgYWJvdmUgdGhlIEZvby4gQnV0IGl0J3MgYSBvbmUtd2F5IHN0cmVldCAtIHRo
ZSBvcHBvc2l0ZSB3b3VsZCBub3QKKyAgICAvLyB3b3JrLgorICAgIC8vCisgICAgLy8gT24gWDg2
LCBzdG9yZSByZWxlYXNlIG5lZWRzIHRvIGJlIGNvZGVnZW5lcmF0ZWQgYXMgYW4gYXRvbWljIG9w
LCBsaWtlIHhjaGcsIHRvIGVuc3VyZSB0aGF0IGl0IGRvZXMKKyAgICAvLyBub3QgZ2V0IHJlb3Jk
ZXJlZCBhcm91bmQgbG9hZCBhY3F1aXJlcy4KKyAgICAvLworICAgIC8vIE9uIEFSTSwgdGhpcyBp
cyBhIG5hdGl2ZSBpbnN0cnVjdGlvbi4KKyAgICBib29sIGhhc1JlbGVhc2UoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIGlzQXRvbWljKG1fb3Bjb2RlKSB8fCBpc1N0b3JlKG1fb3Bjb2Rl
KTsKKyAgICB9CisgICAgYm9vbCByZWxlYXNlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3JlbGVhc2U7CisgICAgfQorICAgIHZvaWQgc2V0UmVsZWFzZShib29sIHJlbGVhc2UpCisg
ICAgeworICAgICAgICBBU1NFUlQoaGFzUmVsZWFzZSgpKTsKKyAgICAgICAgbV9yZWxlYXNlID0g
cmVsZWFzZTsKKyAgICB9CisgICAgCiAgICAgLy8gUnVsZXMgZm9yIGFkZGluZyBuZXcgcHJvcGVy
dGllczoKICAgICAvLyAtIFB1dCB0aGUgYWNjZXNzb3JzIGhlcmUuCiAgICAgLy8gLSBoYXNCbGFo
KCkgc2hvdWxkIGNoZWNrIGlmIHRoZSBvcGNvZGUgYWxsb3dzIGZvciB5b3VyIHByb3BlcnR5LgpA
QCAtMTUzLDcgKzIwOCw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX29wY29k
ZSA9PSBvdGhlci5tX29wY29kZQogICAgICAgICAgICAgJiYgbV9pc0NoaWxsID09IG90aGVyLm1f
aXNDaGlsbAotICAgICAgICAgICAgJiYgbV90cmFwcyA9PSBvdGhlci5tX3RyYXBzOworICAgICAg
ICAgICAgJiYgbV90cmFwcyA9PSBvdGhlci5tX3RyYXBzCisgICAgICAgICAgICAmJiBtX2FjcXVp
cmUgPT0gb3RoZXIubV9hY3F1aXJlCisgICAgICAgICAgICAmJiBtX3JlbGVhc2UgPT0gb3RoZXIu
bV9yZWxlYXNlOwogICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgS2luZCYg
b3RoZXIpIGNvbnN0CkBAIC0xNjcsMTMgKzIyNCwxNSBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICAvLyBJdCdzIGFsbW9zdCBjZXJ0YWlubHkgbW9yZSBpbXBvcnRhbnQgdGhhdCB0aGlzIGhhc2gg
ZnVuY3Rpb24gaXMgY2hlYXAgdG8gY29tcHV0ZSB0aGFuCiAgICAgICAgIC8vIGFueXRoaW5nIGVs
c2UuIFdlIGNhbiBsaXZlIHdpdGggc29tZSBraW5kIGhhc2ggY29sbGlzaW9ucy4KLSAgICAgICAg
cmV0dXJuIG1fb3Bjb2RlICsgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lzQ2hpbGwpIDw8IDE2
KSArIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90cmFwcykgPDwgNyk7CisgICAgICAgIHJldHVy
biBtX29wY29kZSArIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9pc0NoaWxsKSA8PCAxNikgKyAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdHJhcHMpIDw8IDcpICsgKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2FjcXVpcmUpIDw8IDExKSArIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9yZWxlYXNl
KSA8PCAzKTsKICAgICB9CiAgICAgCiAgICAgS2luZChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZVR5cGUpCiAgICAgICAgIDogbV9vcGNvZGUoT29wcykKICAgICAgICAgLCBtX2lzQ2hpbGwodHJ1
ZSkKICAgICAgICAgLCBtX3RyYXBzKGZhbHNlKQorICAgICAgICAsIG1fYWNxdWlyZShmYWxzZSkK
KyAgICAgICAgLCBtX3JlbGVhc2UoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKQEAgLTE4Niw2
ICsyNDUsOCBAQCBwcml2YXRlOgogICAgIE9wY29kZSBtX29wY29kZTsKICAgICBib29sIG1faXND
aGlsbCA6IDE7CiAgICAgYm9vbCBtX3RyYXBzIDogMTsKKyAgICBib29sIG1fYWNxdWlyZSA6IDE7
CisgICAgYm9vbCBtX3JlbGVhc2UgOiAxOwogfTsKIAogLy8gRm9yIGV2ZXJ5IGZsYWcgJ2Zvbycg
eW91IGFkZCwgaXQncyBjdXN0b21hcnkgdG8gY3JlYXRlIGEgS2luZCBCMzo6Zm9vKEtpbmQpIGZ1
bmN0aW9uIHRoYXQgbWFrZXMKQEAgLTIwOCw2ICsyNjksMTggQEAgaW5saW5lIEtpbmQgdHJhcHBp
bmcoS2luZCBraW5kKQogICAgIHJldHVybiBraW5kOwogfQogCitpbmxpbmUgS2luZCBhY3F1aXJl
KEtpbmQga2luZCkKK3sKKyAgICBraW5kLnNldEFjcXVpcmUodHJ1ZSk7CisgICAgcmV0dXJuIGtp
bmQ7Cit9CisKK2lubGluZSBLaW5kIHJlbGVhc2UoS2luZCBraW5kKQoreworICAgIGtpbmQuc2V0
UmVsZWFzZSh0cnVlKTsKKyAgICByZXR1cm4ga2luZDsKK30KKwogc3RydWN0IEtpbmRIYXNoIHsK
ICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBLaW5kJiBrZXkpIHsgcmV0dXJuIGtleS5o
YXNoKCk7IH0KICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLaW5kJiBhLCBjb25zdCBLaW5k
JiBiKSB7IHJldHVybiBhID09IGI7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMjEyODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDM2ICszOSw3IEBAIGNs
YXNzIEpTX0VYUE9SVF9QUklWQVRFIE1lbW9yeVZhbHVlIDogcHUKIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZC5v
cGNvZGUoKSkgewotICAgICAgICBjYXNlIExvYWQ4WjoKLSAgICAgICAgY2FzZSBMb2FkOFM6Ci0g
ICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAgICBjYXNl
IExvYWQ6Ci0gICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAg
ICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0
YXRpYyBib29sIGlzU3RvcmUoS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5k
Lm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6
Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHN0YXRpYyBib29sIGlzTG9hZChLaW5kIGtpbmQpCi0gICAgewotICAgICAgICByZXR1cm4g
YWNjZXB0cyhraW5kKSAmJiAhaXNTdG9yZShraW5kKTsKKyAgICAgICAgcmV0dXJuIGlzTWVtb3J5
QWNjZXNzKGtpbmQub3Bjb2RlKTsKICAgICB9CiAKICAgICB+TWVtb3J5VmFsdWUoKTsKQEAgLTc5
LDggKzUwLDggQEAgcHVibGljOgogICAgIGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UoKSBjb25zdCB7
IHJldHVybiBtX3JhbmdlOyB9CiAgICAgdm9pZCBzZXRSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJh
bmdlKSB7IG1fcmFuZ2UgPSByYW5nZTsgfQogCi0gICAgYm9vbCBpc1N0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpID09IFZvaWQ7IH0KLSAgICBib29sIGlzTG9hZCgpIGNvbnN0IHsgcmV0dXJu
IHR5cGUoKSAhPSBWb2lkOyB9CisgICAgYm9vbCBpc1N0b3JlKCkgY29uc3QgeyByZXR1cm4gaXNT
dG9yZShvcGNvZGUoKSk7IH0KKyAgICBib29sIGlzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIGlzTG9h
ZChvcGNvZGUoKSk7IH0KIAogICAgIHNpemVfdCBhY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0OwogCkBA
IC05MSwxMyArNjIsMTkgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBQcm9jZWR1cmU7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgor
ICAgIE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgVHlwZSB0eXBlLCBP
cmlnaW4gb3JpZ2luLCBpbnQzMl90IG9mZnNldCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAg
ICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIGFyZ3VtZW50
cy4uLi4pCisgICAgICAgIDogbV9vZmZzZXQob2Zmc2V0KQorICAgIHsKKyAgICB9CiAKICAgICAv
LyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkg
b2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CiAgICAgLy8gZGVzY3JpYmVzIHRo
ZSByZXR1cm5lZCB0eXBlKS4KICAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwg
T3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKICAgICAg
ICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCiAg
ICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0
b3AoKSkKICAgICB7CiAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CiAgICAgICAgICAg
ICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKQEAgLTEyNCwxMyArMTAxLDIzIEBAIHByaXZhdGU6
CiAgICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRl
ciwgaW50MzJfdCBvZmZzZXQgPSAwKQogICAgICAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMy
LCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKICAgICB7CisgICAgICAgIGlmICghQVNTRVJUX0RJ
U0FCTEVEKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAg
ICAgIGNhc2UgTG9hZDhaOgorICAgICAgICAgICAgY2FzZSBMb2FkOFM6CisgICAgICAgICAgICBj
YXNlIExvYWQxNlo6CisgICAgICAgICAgICBjYXNlIExvYWQxNlM6CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gVXNl
IHRoaXMgZm9ybSBmb3Igc3RvcmVzLgogICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2lu
IG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAw
KQogICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFs
dWUsIHBvaW50ZXIpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFu
Z2UoSGVhcFJhbmdlOjp0b3AoKSkKICAgICB7CiAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVE
KSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKQEAgLTE0Niw3ICsxMzMs
OCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIGludDMyX3QgbV9vZmZzZXQgeyAwIH07Ci0gICAg
SGVhcFJhbmdlIG1fcmFuZ2U7CisgICAgSGVhcFJhbmdlIG1fcmFuZ2UgeyBIZWFwUmFuZ2U6OnRv
cCgpIH07CisgICAgSGVhcFJhbmdlIG1fcGhhbnRvbVJhbmdlIHsgSGVhcFJhbmdlKCkgfTsKIH07
CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmgJKHJldmlzaW9uIDIxMjgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw2IEBAIGVudW0gT3Bjb2RlIDog
aW50MTZfdCB7CiAgICAgTW9kLCAvLyBBbGwgYmV0cyBhcmUgb2ZmIGFzIHRvIHdoYXQgd2lsbCBo
YXBwZW4gd2hlbiB5b3UgZXhlY3V0ZSB0aGlzIGZvciAtMl4zMSUtMSBhbmQgeCUwLgogICAgIFVN
b2QsCiAKLQogICAgIC8vIFBvbHltb3JwaGljIG5lZ2F0aW9uLiBOb3RlIHRoYXQgd2Ugb25seSBu
ZWVkIHRoaXMgZm9yIGZsb2F0aW5nIHBvaW50LCBzaW5jZSBpbnRlZ2VyIG5lZ2F0aW9uCiAgICAg
Ly8gaXMgZXhhY3RseSBsaWtlIFN1YigwLCB4KS4gQnV0IHRoYXQncyBub3QgdHJ1ZSBmb3IgZmxv
YXRpbmcgcG9pbnQuIFN1YigwLCAwKSBpcyAwLCB3aGlsZQogICAgIC8vIE5lZygwKSBpcyAtMC4g
QWxzbywgd2UgY2Fub25pY2FsaXplIFN1YigwLCB4KSBpbnRvIE5lZyh4KSBpbiBjYXNlIG9mIGlu
dGVnZXJzLgpAQCAtMTYyLDYgKzE2MSw5NCBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAg
IFN0b3JlMTYsCiAgICAgLy8gVGhpcyBpcyBhIHBvbHltb3JwaGljIHN0b3JlIGZvciBJbnQzMiwg
SW50NjQsIEZsb2F0LCBhbmQgRG91YmxlLgogICAgIFN0b3JlLAorICAgIAorICAgIC8vIEF0b21p
YyBjb21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4uIE1heSBjaG9vc2UgdG8g
ZG8gbm90aGluZyBhbmQgcmV0dXJuIGZhbHNlLiBZb3UgY2FuCisgICAgLy8gdXN1YWxseSBhc3N1
bWUgdGhhdCB0aGlzIGlzIGZhc3RlciBhbmQgcmVzdWx0cyBpbiBsZXNzIGNvZGUgdGhhbiBBdG9t
aWNTdHJvbmdDQVMsIHRob3VnaCB0aGF0J3MKKyAgICAvLyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSBv
biBJbnRlbCwgaWYgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIGRvZXMgaXRzIGpvYi4gSW1hZ2luZSB0
aGF0IHRoaXMgb3Bjb2RlIGlzCisgICAgLy8gYXMgaWYgeW91IGRpZCB0aGlzIGF0b21pY2FsbHk6
CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8vIGJvb2wgQXRvbWlj
V2Vha0NBUyhUKiBwdHIsIFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSkKKyAgICAvLyB7Cisg
ICAgLy8gICAgIGlmICghcmFuZCgpKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBS
ZWFsIHdvcmxkIGV4YW1wbGUgb2YgdGhpczogY29udGV4dCBzd2l0Y2ggb24gQVJNIHdoaWxlIGRv
aW5nIENBUy4KKyAgICAvLyAgICAgaWYgKCpwdHIgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyAgICAgKnB0ciA9IG5ld1ZhbHVlOworICAgIC8v
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgd2Vh
ayBDQVMgaGFzIG5vIGZlbmNpbmcgZ3VhcmFudGVlcyB3aGVuIGl0IGZhaWxzLiBUaGlzIG1lYW5z
IHRoYXQgdGhlIGZvbGxvd2luZworICAgIC8vIHRyYW5zZm9ybWF0aW9uIGlzIGFsd2F5cyB2YWxp
ZDoKKyAgICAvLworICAgIC8vIEJlZm9yZToKKyAgICAvLworICAgIC8vICAgICAgICAgQnJhbmNo
KEF0b21pY1dlYWtDQVMocHRyLCBleHBlY3RlZCwgbmV3KSkKKyAgICAvLyAgICAgICBTdWNjZXNz
b3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBBZnRlcjoKKyAg
ICAvLworICAgIC8vICAgICAgICAgQnJhbmNoKEVxdWFsKExvYWQocHRyKSwgZXhwZWN0ZWQpKQor
ICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I2F0dGVtcHQsIEVsc2U6I2ZhaWwKKyAgICAv
LyAgICAgQkIjYXR0ZW1wdDoKKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FTKHB0
ciwgZXhwZWN0ZWQsIG5ldykpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3VjY2Vz
cywgRWxzZTojZmFpbAorICAgIEF0b21pY1dlYWtDQVMsCisgICAgCisgICAgLy8gQXRvbWljIGNv
bXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIHRoZSBvbGQgdmFsdWUuIERvZXMgbm90IGhhdmUg
dGhlIG5vbmRldGVybWluaXNtIG9mIFdlYWtDQVMuCisgICAgLy8gVGhpcyBpcyBhIGJpdCBtb3Jl
IGNvZGUgYW5kIGEgYml0IHNsb3dlciBpbiBzb21lIGNhc2VzLCB0aG91Z2ggbm90IGJ5IGEgbG90
LiBJbWFnaW5lIHRoYXQgdGhpcworICAgIC8vIG9wY29kZSBpcyBhcyBpZiB5b3UgZGlkIHRoaXMg
YXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8g
VCBBdG9taWNTdHJvbmdDQVMoVCogcHRyLCBUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUpCisg
ICAgLy8geworICAgIC8vICAgICBUIG9sZFZhbHVlID0gKnB0cjsKKyAgICAvLyAgICAgaWYgKG9s
ZFZhbHVlID09IGV4cGVjdGVkVmFsdWUpCisgICAgLy8gICAgICAgICAqcHRyID0gbmV3VmFsdWU7
CisgICAgLy8gICAgIHJldHVybiBvbGRWYWx1ZQorICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5v
dGUgdGhhdCBBdG9taWNXZWFrQ0FTIGFuZCBBdG9taWNTdHJvbmdDQVMgaGF2ZSB0aGlzIGtpbmQg
b2YgZXF1aXZhbGVuY2U6CisgICAgLy8KKyAgICAvLyBBdG9taWNXZWFrQ0FTKEBwdHIsIEBleHAs
IEBuZXcpID09IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhAcHRyLCBAZXhwLCBAbmV3KSwgQGV4cCkK
KyAgICBBdG9taWNTdHJvbmdDQVMsCisgICAgCisgICAgLy8gQXRvbWljYWxseSBfX18gYSBtZW1v
cnkgbG9jYXRpb24gYW5kIHJldHVybiB0aGUgb2xkIHZhbHVlLiBTeW50YXg6CisgICAgLy8KKyAg
ICAvLyBAb2xkVmFsdWUgPSBBdG9taWNYY2hnX19fKEBwdHIsIEBvcGVyYW5kKQorICAgIEF0b21p
Y1hjaGdBZGQsCisgICAgQXRvbWljWGNoZ0FuZCwKKyAgICBBdG9taWNYY2hnT3IsCisgICAgQXRv
bWljWGNoZ1N1YiwKKyAgICBBdG9taWNYY2hnWG9yLAorICAgIAorICAgIC8vIEF0b21pY2FsbHkg
ZXhjaGFuZ2UgYSB2YWx1ZSB3aXRoIGEgbWVtb3J5IGxvY2F0aW9uLiBTeW50YXg6CisgICAgLy8K
KyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNYY2hnKEBwdHIsIEBuZXdWYWx1ZSkKKyAgICBBdG9t
aWNYY2hyLAorICAgIAorICAgIC8vIEludHJvZHVjZSBhbiBpbnZpc2libGUgZGVwZW5kZW5jeSBm
b3IgYmxvY2tpbmcgbW90aW9uIG9mIGxvYWRzIHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyLiBT
eW50YXg6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gRGVwZW5kKEBwaGFudG9tKQorICAgIC8v
CisgICAgLy8gVGhpcyBpcyBldmVudHVhbGx5IGNvZGVnZW5lcmF0ZWQgdG8gaGF2ZSBsb2NhbCBz
ZW1hbnRpY3MgYXMgaWYgd2UgZGlkOgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9ICQwCisgICAg
Ly8KKyAgICAvLyBCdXQgaXQgZW5zdXJlcyB0aGF0IHRoZSB1c2VycyBvZiBAcmVzdWx0IGNhbm5v
dCBleGVjdXRlIHVudGlsIEBwaGFudG9tIGlzIGNvbXB1dGVkLgorICAgIC8vCisgICAgLy8gVGhl
IGNvbXBpbGVyIGlzIG5vdCBhbGxvd2VkIHRvIHJlYXNvbiBhYm91dCB0aGUgZmFjdCB0aGF0IERl
cGVuZCBjb2RlZ2VuZXJhdGVzIHRoaXMgd2F5LiBBbnkga2luZAorICAgIC8vIG9mIHRyYW5zZm9y
bWF0aW9uIG9yIGFuYWx5c2lzIHRoYXQgcmVsaWVzIG9uIHRoZSBpbnNpZ2h0IHRoYXQgRGVwZW5k
IGlzIHJlYWxseSB6ZXJvIGlzIHVuc291bmQsCisgICAgLy8gYmVjYXVzZSBpdCB1bmxvY2tzIHJl
b3JkZXJpbmcgb2YgdXNlcnMgb2YgQHJlc3VsdCBhbmQgQHBoYW50b20uCisgICAgLy8KKyAgICAv
LyBPbiBYODYsIHRoaXMgaXMgbG93ZXJlZCB0byBhIGxvYWQtbG9hZCBmZW5jZSBhbmQgQHJlc3Vs
dCB1c2VzIEBwaGFudG9tIGRpcmVjdGx5LgorICAgIC8vCisgICAgLy8gT24gQVJNLCB0aGlzIGlz
IGxvd2VyZWQgYXMgaWYgbGlrZToKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSBCaXRYb3IoQHBo
YW50b20sIEBwaGFudG9tKQorICAgIC8vCisgICAgLy8gRXhjZXB0IHRoYXQgdGhlIGNvbXBpbGVy
IG5ldmVyIGdldHMgYW4gb3Bwb3J0dW5pdHkgdG8gc2ltcGxpZnkgb3V0IHRoZSBCaXRYb3IuCisg
ICAgRGVwZW5kLAogCiAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIGFjdHVhbCBh
ZGRyZXNzIG9mIGEgV2FzbSBtZW1vcnkgb3BlcmF0aW9uLiBJdCB0YWtlcyBhbiBJbnRQdHIKICAg
ICAvLyBhbmQgYSBwaW5uZWQgcmVnaXN0ZXIgdGhlbiBjb21wdXRlcyB0aGUgYXBwcm9wcmlhdGUg
SW50UHRyIGFkZHJlc3MuIEZvciB0aGUgdXNlLWNhc2Ugb2YKQEAgLTMwMSw2ICszODgsNzEgQEAg
aW5saW5lIGJvb2wgaXNEZWZpbml0ZWx5VGVybWluYWwoT3Bjb2RlIAogICAgIH0KIH0KIAoraW5s
aW5lIGJvb2wgaXNMb2FkKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsK
KyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6Cisg
ICAgY2FzZSBMb2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJv
b2wgaXNTdG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAg
Y2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
Cit9CisKK2lubGluZSBib29sIGlzTG9hZFN0b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dp
dGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBj
YXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICBjYXNl
IFN0b3JlODoKKyAgICBjYXNlIFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KworaW5saW5lIGJvb2wgaXNBdG9taWMoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9w
Y29kZSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NB
UzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAg
IGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0
b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hyOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUg
Ym9vbCBpc01lbW9yeUFjY2VzcyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHJldHVybiBpc0F0b21p
YyhvcGNvZGUpIHx8IGlzTG9hZFN0b3JlKG9wY29kZSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZS5jcHAJKHJldmlzaW9uIDIxMjgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE3LDE4ICs2MTcsNyBAQCBFZmZlY3RzIFZh
bHVlOjplZmZlY3RzKCkgY29uc3QKICAgICAgICAgY29uc3QgRmVuY2VWYWx1ZSogZmVuY2UgPSBh
czxGZW5jZVZhbHVlPigpOwogICAgICAgICByZXN1bHQucmVhZHMgPSBmZW5jZS0+cmVhZDsKICAg
ICAgICAgcmVzdWx0LndyaXRlcyA9IGZlbmNlLT53cml0ZTsKLSAgICAgICAgCi0gICAgICAgIC8v
IFByZXZlbnQga2lsbGluZyBvZiBmZW5jZXMgdGhhdCBjbGFpbSBub3QgdG8gd3JpdGUgYW55dGhp
bmcuIEl0J3MgYSBiaXQgd2VpcmQgdGhhdCB3ZSB1c2UKLSAgICAgICAgLy8gbG9jYWwgc3RhdGUg
YXMgdGhlIHdheSB0byBkbyB0aGlzLCBidXQgaXQgaGFwcGVucyB0byB3b3JrOiB3ZSBtdXN0IGFz
c3VtZSB0aGF0IHdlIGNhbm5vdAotICAgICAgICAvLyBraWxsIHdyaXRlc0xvY2FsU3RhdGUgdW5s
ZXNzIHdlIHVuZGVyc3RhbmRzIGV4YWN0bHkgd2hhdCB0aGUgaW5zdHJ1Y3Rpb24gaXMgZG9pbmcg
KGxpa2UKLSAgICAgICAgLy8gdGhlIHdheSB0aGF0IGZpeFNTQSB1bmRlcnN0YW5kcyBTZXQvR2V0
IGFuZCB0aGUgd2F5IHRoYXQgcmVkdWNlU3RyZW5ndGggYW5kIG90aGVycwotICAgICAgICAvLyB1
bmRlcnN0YW5kIFVwc2lsb24pLiBUaGlzIHdvdWxkIG9ubHkgYmVjb21lIGEgcHJvYmxlbSBpZiB3
ZSBoYWQgc29tZSBhbmFseXNpcyB0aGF0IHdhcwotICAgICAgICAvLyBsb29raW5nIHRvIHVzZSB0
aGUgd3JpdGVzTG9jYWxTdGF0ZSBiaXQgdG8gaW52YWxpZGF0ZSBhIENTRSBvdmVyIGxvY2FsIHN0
YXRlIG9wZXJhdGlvbnMuCi0gICAgICAgIC8vIFRoZW4gYSBGZW5jZSB3b3VsZCBsb29rIGJsb2Nr
LCBzYXksIHRoZSBlbGltaW5hdGlvbiBvZiBhIHJlZHVuZGFudCBHZXQuIEJ1dCBpdCBsaWtlCi0g
ICAgICAgIC8vIHRoYXQncyBub3QgYXQgYWxsIGhvdyBvdXIgb3B0aW1pemF0aW9ucyBmb3IgU2V0
L0dldC9VcHNpbG9uL1BoaSB3b3JrIC0gdGhleSBncm9rIHRoZWlyCi0gICAgICAgIC8vIG9wZXJh
dGlvbnMgZGVlcGx5IGVub3VnaCB0aGF0IHRoZXkgaGF2ZSBubyBuZWVkIHRvIGNoZWNrIHRoaXMg
Yml0IC0gc28gdGhpcyBjaGVhdCBpcwotICAgICAgICAvLyBmaW5lLgotICAgICAgICByZXN1bHQu
d3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENDYWxsOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302599</attachid>
            <date>2017-02-23 16:01:23 -0800</date>
            <delta_ts>2017-02-24 20:53:49 -0800</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>30608</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCShyZXZpc2lvbiAyMTI4
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODIsNyArODIsOCBAQCBib29sIEVmZmVjdHM6OmludGVyZmVyZXMoY29uc3QgRWZm
ZWN0cyYgCiAgICAgICAgIHx8IGludGVyZmVyZXNXaXRoV3JpdGVzUGlubmVkKG90aGVyLCAqdGhp
cykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKICAgICAgICAgfHwg
d3JpdGVzLm92ZXJsYXBzKG90aGVyLnJlYWRzKQotICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhv
dGhlci53cml0ZXMpOworICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53cml0ZXMpCisg
ICAgICAgIHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3Bl
cmF0b3I9PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTk1LDcgKzk2LDggQEAgYm9v
bCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIAogICAgICAgICAmJiB3cml0ZXNQ
aW5uZWQgPT0gb3RoZXIud3JpdGVzUGlubmVkCiAgICAgICAgICYmIHJlYWRzUGlubmVkID09IG90
aGVyLnJlYWRzUGlubmVkCiAgICAgICAgICYmIHdyaXRlcyA9PSBvdGhlci53cml0ZXMKLSAgICAg
ICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHM7CisgICAgICAgICYmIHJlYWRzID09IG90aGVyLnJl
YWRzCisgICAgICAgICYmIGZlbmNlID09IG90aGVyLmZlbmNlOwogfQogCiBib29sIEVmZmVjdHM6
Om9wZXJhdG9yIT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0CkBAIC0xMjAsNiArMTIyLDgg
QEAgdm9pZCBFZmZlY3RzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbgogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJXcml0ZXNQaW5uZWQiKTsKICAgICBpZiAocmVhZHNQaW5uZWQpCiAgICAg
ICAgIG91dC5wcmludChjb21tYSwgIlJlYWRzUGlubmVkIik7CisgICAgaWYgKGZlbmNlKQorICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJGZW5jZSIpOwogICAgIGlmICh3cml0ZXMpCiAgICAgICAg
IG91dC5wcmludChjb21tYSwgIldyaXRlczoiLCB3cml0ZXMpOwogICAgIGlmIChyZWFkcykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJKHJldmlzaW9uIDIxMjgwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkod29ya2luZyBjb3B5KQpAQCAt
NzEsNiArNzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBib29sIHJlYWRzUGlubmVkIHsgZmFs
c2UgfTsKICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07CisgICAgCisgICAgLy8gTWVt
b3J5IGZlbmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBlYWNoIG90aGVyIHJlZ2FyZGxl
c3Mgb2YgdGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisgICAgLy8gaWYgdGhlIG9wZXJh
dGlvbiBpcyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZlbmNlIHsgZmFsc2UgfTsKIAogICAg
IEhlYXBSYW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRzOwpAQCAtODksNiArOTMsNyBA
QCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9w
KCk7CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIHJlc3VsdC53
cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcgKzEwOCw3IEBAIHN0cnVjdCBFZmZl
Y3RzIHsKIAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8fCB3cml0
ZXMgfHwgd3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRl
d2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQgfHwgZmVu
Y2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHJlb3JkZXJpbmcgaW5zdHJ1Y3Rp
b25zIHdpdGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxkIGNoYW5nZSBwcm9ncmFtCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAkocmV2aXNpb24gMjEyODAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg4LDYgKzg4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwogICAgIH0KICAgICAKKyAgICBIZWFwUmFuZ2Ugb3BlcmF0b3J8KGNvbnN0IEhlYXBS
YW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSGVhcFJhbmdlKAorICAg
ICAgICAgICAgc3RkOjptaW4obV9iZWdpbiwgb3RoZXIubV9iZWdpbiksCisgICAgICAgICAgICBz
dGQ6Om1heChtX2VuZCwgb3RoZXIubV9lbmQpKTsKKyAgICB9CisgICAgCiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW4gIT0gbV9lbmQ7IH0KIAogICAg
IHVuc2lnbmVkIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24gMjEyODAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTg1LDYgKzE4NSwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fY2hh
bmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAgICAg
IGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGxvYWQtbG9h
ZCBmZW5jZS4gVGhpcyBjb2RlZ2VucyB0byBub3RoaW5nIG9uIFg4Ni4gV2UgdXNlIGl0IHRvIHRl
bGwgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGNvbXBpbGVyIG5vdCB0byBibG9jayBsb2Fk
IG1vdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgRmVuY2VWYWx1ZSogZmVuY2UgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnQ8RmVuY2VWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4pOworICAgICAgICAg
ICAgICAgICAgICBmZW5jZS0+cmVhZCA9IEhlYXBSYW5nZSgpOworICAgICAgICAgICAgICAgICAg
ICBmZW5jZS0+d3JpdGUgPSBIZWFwUmFuZ2U6OnRvcCgpOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgLy8gS2lsbCB0aGUgRGVwZW5kLCB3aGljaCBzaG91bGQgdW5s
b2NrIGEgYnVuY2ggb2YgY29kZSBzaW1wbGlmaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAg
bV9ub2RlLT5yZXBsYWNlV2l0aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCShyZXZpc2lvbiAyMTI4MDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU2MiwxMSArNTYyLDE2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQXJnUHJvbWlz
ZSBsb2FkUHJvbWlzZUFueU9wY29kZShWYWx1ZSogbG9hZFZhbHVlKQogICAgIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKSk7CiAgICAgICAgIGlm
ICghY2FuQmVJbnRlcm5hbChsb2FkVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwog
ICAgICAgICBpZiAoY3Jvc3Nlc0ludGVyZmVyZW5jZShsb2FkVmFsdWUpKQogICAgICAgICAgICAg
cmV0dXJuIEFyZygpOwotICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChhZGRyKGxvYWRWYWx1ZSks
IGxvYWRWYWx1ZSk7CisgICAgICAgIGlmIChsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5o
YXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIEFyZygpOworICAgICAgICBBcmcgbG9hZEFk
ZHIgPSBhZGRyKGxvYWRWYWx1ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxvYWRBZGRyKTsK
KyAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQobG9hZEFkZHIsIGxvYWRWYWx1ZSk7CiAgICAgICAg
IGlmIChsb2FkVmFsdWUtPnRyYXBzKCkpCiAgICAgICAgICAgICByZXN1bHQuc2V0VHJhcHModHJ1
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC05MzEsMTAgKzkzNiwxNSBAQCBwcml2YXRl
OgogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIENv
bW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wgdHJ5
QXBwZW5kU3RvcmVCaW5PcChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOworICAgICAgICAK
ICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwg
b3Bjb2RlNjQsIGxlZnQtPnR5cGUoKSk7CiAgICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3Bz
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFs
dWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAKICAgICAgICAgQXJnIHN0b3JlQWRkciA9IGFkZHIobV92YWx1ZSk7CiAg
ICAgICAgIEFTU0VSVChzdG9yZUFkZHIpOwogCkBAIC0yMTcwLDYgKzIxODAsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPFhvcjMyLCBYb3I2NCwgQWly
OjpPb3BzLCBBaXI6Ok9vcHMsIENvbW11dGF0aXZlPigKKyAgICAgICAgICAgICAgICBtX3ZhbHVl
LT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBTaGw6IHsKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5j
aGlsZCgxKS0+aXNJbnQzMigxKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TWVtb3J5VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M01lbW9yeVZhbHVlLmNwcAkocmV2aXNpb24gMjEyODAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNiArMzQsMTMg
QEAgTWVtb3J5VmFsdWU6On5NZW1vcnlWYWx1ZSgpCiB7CiB9CiAKK1R5cGUgTWVtb3J5VmFsdWU6
OmFjY2Vzc1R5cGUoKSBjb25zdAoreworICAgIGlmIChpc0xvYWQob3Bjb2RlKCkpKQorICAgICAg
ICByZXR1cm4gdHlwZSgpOworICAgIHJldHVybiBjaGlsZCgwKS0+dHlwZSgpOworfQorCiBzaXpl
X3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG9w
Y29kZSgpKSB7CkBAIC00OCw2ICs1NSwxNCBAQCBzaXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5
dGVTaXplKCkgY29uCiAgICAgY2FzZSBMb2FkOgogICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZSh0
eXBlKCkpOwogICAgIGNhc2UgU3RvcmU6CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNh
c2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0
b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hn
U3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CiAgICAg
ICAgIHJldHVybiBzaXplb2ZUeXBlKGNoaWxkKDApLT50eXBlKCkpOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02Miw2ICs3Nyw4IEBAIHZv
aWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYKICAgICBpZiAoKGlzTG9hZCgp
ICYmIGVmZmVjdHMoKS5yZWFkcyAhPSByYW5nZSgpKQogICAgICAgICB8fCAoaXNTdG9yZSgpICYm
IGVmZmVjdHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwg
InJhbmdlID0gIiwgcmFuZ2UoKSk7CisgICAgaWYgKHBoYW50b21SYW5nZSgpKQorICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJwaGFudG9tUmFuZ2UgPSAiLCBwaGFudG9tUmFuZ2UoKSk7CiB9CiAK
IFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKQEAgLTY5LDYgKzg2LDk0IEBA
IFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKICAgICByZXR1cm4gbmV3IE1l
bW9yeVZhbHVlKCp0aGlzKTsKIH0KIAorLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5v
dCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXgg
dGhhdAorLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KK01lbW9yeVZhbHVlOjpNZW1v
cnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50
ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQs
IHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBp
ZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsK
KyAgICAgICAgY2FzZSBMb2FkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTG9h
ZDhaOgorICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAg
ICBjYXNlIExvYWQxNlM6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3RvcmUx
NjoKKyAgICAgICAgY2FzZSBTdG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9y
bSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlWYWx1
ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwg
aW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9yaWdp
biwgcG9pbnRlciwgb2Zmc2V0KQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
ICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAg
ICAgY2FzZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2Fk
MTZTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMg
Zm9ybSBmb3Igc3RvcmVzIGFuZCBBdG9taWNYY2hnX19fLiBOb3RlIHRoYXQgYnkgZGVmYXVsdCwg
YXRvbWljcyBoYXZlIFRPUCBmb3IgdGhlaXIKKy8vIHBoYW50b20gaGVhcC4KK01lbW9yeVZhbHVl
OjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFs
dWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNv
ZGUsIGtpbmQsIGlzU3RvcmUoa2luZC5vcGNvZGUpID8gVm9pZCA6IHZhbHVlLT50eXBlKCksIG9y
aWdpbiwgdmFsdWUsIHBvaW50ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgLCBtX3Bo
YW50b21SYW5nZShpc1N0b3JlKGtpbmQub3Bjb2RlKSA/IEhlYXBSYW5nZSgpIDogSGVhcFJhbmdl
Ojp0b3AoKSkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2gg
KGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3Rv
cmUxNjoKKyAgICAgICAgY2FzZSBTdG9yZToKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgor
ICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgor
ICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoK
KyAgICAgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorfQorICAgIAorLy8gVXNlIHRoaXMgZm9ybSBmb3IgQ0FT
LgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFs
dWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMy
X3Qgb2Zmc2V0ID0gMCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIGtpbmQub3Bj
b2RlID09IEF0b21pY1dlYWtDQVMgPyBJbnQzMiA6IGV4cGVjdGVkVmFsdWUtPnR1cGUoKSwgb3Jp
Z2luLCBleHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9m
ZnNldCkKKyAgICAsIG1fcGhhbnRvbVJhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCit7CisgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Cisg
ICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2aXNpb24g
MjEyODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDQzICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsKIAotLy8gRklYTUU6IFdlIHdhbnQgdG8gYWxsb3cgZmVuY2VkIG1lbW9yeSBhY2Nl
c3NlcyBvbiBBUk0uCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYyMzQ5Ci0KIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIE1lbW9yeVZhbHVlIDogcHVibGljIFZh
bHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKICAgICB7
Ci0gICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICBjYXNlIExvYWQ4WjoK
LSAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgY2Fz
ZSBMb2FkMTZTOgotICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIGNhc2UgU3RvcmU4OgotICAg
ICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzU3RvcmUoS2luZCBraW5kKQotICAg
IHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgU3RvcmU4
OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzTG9hZChLaW5kIGtpbmQp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWNjZXB0cyhraW5kKSAmJiAhaXNTdG9yZShraW5kKTsK
KyAgICAgICAgcmV0dXJuIGlzTWVtb3J5QWNjZXNzKGtpbmQub3Bjb2RlKTsKICAgICB9CiAKICAg
ICB+TWVtb3J5VmFsdWUoKTsKQEAgLTc4LDExICs0NiwxNiBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBIZWFwUmFuZ2UmIHJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZTsgfQogICAgIHZvaWQg
c2V0UmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5nZSkgeyBtX3JhbmdlID0gcmFuZ2U7IH0KKyAg
ICAKKyAgICBjb25zdCBIZWFwUmFuZ2UmIHBoYW50b21SYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGhhbnRvbVJhbmdlOyB9CisgICAgdm9pZCBzZXRQaGFudG9tUmFuZ2UoY29uc3QgSGVhcFJhbmdl
JiByYW5nZSkgeyBtX3JhbmdlID0gcmFuZ2U7IH0KIAotICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBWb2lkOyB9Ci0gICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJl
dHVybiB0eXBlKCkgIT0gVm9pZDsgfQorICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IGlzU3RvcmUob3Bjb2RlKCkpOyB9CisgICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiBp
c0xvYWQob3Bjb2RlKCkpOyB9CiAKKyAgICBUeXBlIGFjY2Vzc1R5cGUoKSBjb25zdDsKICAgICBz
aXplX3QgYWNjZXNzQnl0ZVNpemUoKSBjb25zdDsKKyAgICBib29sIGhhc0ZlbmNlKCkgY29uc3Qg
eyByZXR1cm4gISFwaGFudG9tUmFuZ2UoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkdW1w
TWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwpA
QCAtOTEsNjIgKzY0LDI0IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgUHJvY2VkdXJlOwotCisgICAgCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0
IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZm
aXggdGhhdAogICAgIC8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCi0gICAgTWVtb3J5
VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVy
LCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2lu
ZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQotICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAg
ICAgICAgLCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCi0gICAgewotICAgICAgICBpZiAoIUFT
U0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0g
ICAgICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIExvYWQ4WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDhTOgotICAgICAgICAgICAgY2Fz
ZSBMb2FkMTZaOgotICAgICAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAgICAgICAgICAgIEFT
U0VSVCh0eXBlID09IEludDMyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAgICAgY2Fz
ZSBTdG9yZToKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBWb2lkKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CisgICAg
TWVtb3J5VmFsdWUoS2luZCwgVHlwZSwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQgPSAwKTsKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSBy
ZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2lu
IG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBN
ZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpCi0gICAgewot
ICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQz
Ml90IG9mZnNldCA9IDApOwogCi0gICAgLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgotICAg
IE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1
ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRP
cGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpCi0gICAgICAgICwgbV9v
ZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSkKLSAgICB7
Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtp
bmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICAgICAgY2Fz
ZSBTdG9yZTE2OgotICAgICAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9CisgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzIGFuZCBBdG9taWNYY2hnX19f
LiBOb3RlIHRoYXQgYnkgZGVmYXVsdCwgYXRvbWljcyBoYXZlIFRPUCBmb3IgdGhlaXIKKyAgICAv
LyBwaGFudG9tIGhlYXAuCisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogdmFs
dWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAorICAgIC8vIFVz
ZSB0aGlzIGZvcm0gZm9yIENBUy4KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVl
KiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90
IG9mZnNldCA9IDApOwogCiAgICAgaW50MzJfdCBtX29mZnNldCB7IDAgfTsKLSAgICBIZWFwUmFu
Z2UgbV9yYW5nZTsKKyAgICBIZWFwUmFuZ2UgbV9yYW5nZSB7IEhlYXBSYW5nZTo6dG9wKCkgfTsK
KyAgICBIZWFwUmFuZ2UgbV9waGFudG9tUmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUu
aAkocmV2aXNpb24gMjEyODAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDYgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90
IHsKICAgICBNb2QsIC8vIEFsbCBiZXRzIGFyZSBvZmYgYXMgdG8gd2hhdCB3aWxsIGhhcHBlbiB3
aGVuIHlvdSBleGVjdXRlIHRoaXMgZm9yIC0yXjMxJS0xIGFuZCB4JTAuCiAgICAgVU1vZCwKIAot
CiAgICAgLy8gUG9seW1vcnBoaWMgbmVnYXRpb24uIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdGhp
cyBmb3IgZmxvYXRpbmcgcG9pbnQsIHNpbmNlIGludGVnZXIgbmVnYXRpb24KICAgICAvLyBpcyBl
eGFjdGx5IGxpa2UgU3ViKDAsIHgpLiBCdXQgdGhhdCdzIG5vdCB0cnVlIGZvciBmbG9hdGluZyBw
b2ludC4gU3ViKDAsIDApIGlzIDAsIHdoaWxlCiAgICAgLy8gTmVnKDApIGlzIC0wLiBBbHNvLCB3
ZSBjYW5vbmljYWxpemUgU3ViKDAsIHgpIGludG8gTmVnKHgpIGluIGNhc2Ugb2YgaW50ZWdlcnMu
CkBAIC0xNjIsNiArMTYxLDk5IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgU3RvcmUx
NiwKICAgICAvLyBUaGlzIGlzIGEgcG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwg
RmxvYXQsIGFuZCBEb3VibGUuCiAgICAgU3RvcmUsCisgICAgCisgICAgLy8gQXRvbWljIGNvbXBh
cmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIGEgYm9vbGVhbi4gTWF5IGNob29zZSB0byBkbyBub3Ro
aW5nIGFuZCByZXR1cm4gZmFsc2UuIFlvdSBjYW4KKyAgICAvLyB1c3VhbGx5IGFzc3VtZSB0aGF0
IHRoaXMgaXMgZmFzdGVyIGFuZCByZXN1bHRzIGluIGxlc3MgY29kZSB0aGFuIEF0b21pY1N0cm9u
Z0NBUywgdGhvdWdoIHRoYXQncworICAgIC8vIG5vdCBuZWNlc3NhcmlseSB0cnVlIG9uIEludGVs
LCBpZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gZG9lcyBpdHMgam9iLiBJbWFnaW5lIHRoYXQgdGhp
cyBvcGNvZGUgaXMKKyAgICAvLyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAv
LworICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gYm9vbCBBdG9taWNXZWFrQ0FT
KFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAg
ICAgaWYgKCFyYW5kKCkpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFJlYWwgd29y
bGQgZXhhbXBsZSBvZiB0aGlzOiBjb250ZXh0IHN3aXRjaCBvbiBBUk0gd2hpbGUgZG9pbmcgQ0FT
LgorICAgIC8vICAgICBpZiAoKnB0ciAhPSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIC8vICAgICAqcHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJl
dHVybiB0cnVlOworICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBhbGwgYXRvbWlj
cyBwdXQgdGhlIHBvaW50ZXIgbGFzdCB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IGxvYWRzIGFu
ZCBzdG9yZXMgd29yay4gVGhpcworICAgIC8vIGlzIGEgZ29vZnkgdHJhZGl0aW9uLCBidXQgaXQn
cyBoYXJtbGVzcywgYW5kIGJldHRlciB0aGFuIGJlaW5nIGluY29uc2lzdGVudC4KKyAgICAvLwor
ICAgIC8vIE5vdGUgdGhhdCB3ZWFrIENBUyBoYXMgbm8gZmVuY2luZyBndWFyYW50ZWVzIHdoZW4g
aXQgZmFpbHMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nCisgICAgLy8gdHJhbnNmb3Jt
YXRpb24gaXMgYWx3YXlzIHZhbGlkOgorICAgIC8vCisgICAgLy8gQmVmb3JlOgorICAgIC8vCisg
ICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIpKQor
ICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICAv
LworICAgIC8vIEFmdGVyOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goRXF1YWwoTG9h
ZChwdHIpLCBleHBlY3RlZCkpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojYXR0ZW1w
dCwgRWxzZTojZmFpbAorICAgIC8vICAgICBCQiNhdHRlbXB0OgorICAgIC8vICAgICAgICAgQnJh
bmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNj
ZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgQXRvbWljV2Vha0NBUywKKyAg
ICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgdGhlIG9sZCB2
YWx1ZS4gRG9lcyBub3QgaGF2ZSB0aGUgbm9uZGV0ZXJtaW5pc20gb2YgV2Vha0NBUy4KKyAgICAv
LyBUaGlzIGlzIGEgYml0IG1vcmUgY29kZSBhbmQgYSBiaXQgc2xvd2VyIGluIHNvbWUgY2FzZXMs
IHRob3VnaCBub3QgYnkgYSBsb3QuIEltYWdpbmUgdGhhdCB0aGlzCisgICAgLy8gb3Bjb2RlIGlz
IGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICAvLyBUIEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQg
bmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7CisgICAgLy8gICAgIFQgb2xkVmFsdWUgPSAqcHRy
OworICAgIC8vICAgICBpZiAob2xkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAg
ICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIG9sZFZhbHVlCisgICAgLy8g
fQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5kIEF0b21pY1N0cm9u
Z0NBUyBzb3J0IG9mIGhhdmUgdGhpcyBraW5kIG9mIGVxdWl2YWxlbmNlOgorICAgIC8vCisgICAg
Ly8gQXRvbWljV2Vha0NBUyhAZXhwLCBAbmV3LCBAcHRyKSA9PSBFcXVhbChBdG9taWNTdHJvbmdD
QVMoQGV4cCwgQG5ldywgQHB0ciksIEBleHApCisgICAgLy8KKyAgICAvLyBBc3N1bWluZyB0aGF0
IHRoZSBXZWFrQ0FTIGRvZXMgbm90IHNwdXJpb3VzbHkgZmFpbCwgb2YgY291cnNlLgorICAgIEF0
b21pY1N0cm9uZ0NBUywKKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IF9fXyBhIG1lbW9yeSBsb2Nh
dGlvbiBhbmQgcmV0dXJuIHRoZSBvbGQgdmFsdWUuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBv
bGRWYWx1ZSA9IEF0b21pY1hjaGdfX18oQG9wZXJhbmQsIEBwdHIpCisgICAgQXRvbWljWGNoZ0Fk
ZCwKKyAgICBBdG9taWNYY2hnQW5kLAorICAgIEF0b21pY1hjaGdPciwKKyAgICBBdG9taWNYY2hn
U3ViLAorICAgIEF0b21pY1hjaGdYb3IsCisgICAgCisgICAgLy8gQXRvbWljYWxseSBleGNoYW5n
ZSBhIHZhbHVlIHdpdGggYSBtZW1vcnkgbG9jYXRpb24uIFN5bnRheDoKKyAgICAvLworICAgIC8v
IEBvbGRWYWx1ZSA9IEF0b21pY1hjaGcoQG5ld1ZhbHVlLCBAcHRyKQorICAgIEF0b21pY1hjaGcs
CisgICAgCisgICAgLy8gSW50cm9kdWNlIGFuIGludmlzaWJsZSBkZXBlbmRlbmN5IGZvciBibG9j
a2luZyBtb3Rpb24gb2YgbG9hZHMgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuIFN5bnRheDoK
KyAgICAvLworICAgIC8vIEByZXN1bHQgPSBEZXBlbmQoQHBoYW50b20pCisgICAgLy8KKyAgICAv
LyBUaGlzIGlzIGV2ZW50dWFsbHkgY29kZWdlbmVyYXRlZCB0byBoYXZlIGxvY2FsIHNlbWFudGlj
cyBhcyBpZiB3ZSBkaWQ6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gJDAKKyAgICAvLworICAg
IC8vIEJ1dCBpdCBlbnN1cmVzIHRoYXQgdGhlIHVzZXJzIG9mIEByZXN1bHQgY2Fubm90IGV4ZWN1
dGUgdW50aWwgQHBoYW50b20gaXMgY29tcHV0ZWQuCisgICAgLy8KKyAgICAvLyBUaGUgY29tcGls
ZXIgaXMgbm90IGFsbG93ZWQgdG8gcmVhc29uIGFib3V0IHRoZSBmYWN0IHRoYXQgRGVwZW5kIGNv
ZGVnZW5lcmF0ZXMgdGhpcyB3YXkuIEFueSBraW5kCisgICAgLy8gb2YgdHJhbnNmb3JtYXRpb24g
b3IgYW5hbHlzaXMgdGhhdCByZWxpZXMgb24gdGhlIGluc2lnaHQgdGhhdCBEZXBlbmQgaXMgcmVh
bGx5IHplcm8gaXMgdW5zb3VuZCwKKyAgICAvLyBiZWNhdXNlIGl0IHVubG9ja3MgcmVvcmRlcmlu
ZyBvZiB1c2VycyBvZiBAcmVzdWx0IGFuZCBAcGhhbnRvbS4KKyAgICAvLworICAgIC8vIE9uIFg4
NiwgdGhpcyBpcyBsb3dlcmVkIHRvIGEgbG9hZC1sb2FkIGZlbmNlIGFuZCBAcmVzdWx0IHVzZXMg
QHBoYW50b20gZGlyZWN0bHkuCisgICAgLy8KKyAgICAvLyBPbiBBUk0sIHRoaXMgaXMgbG93ZXJl
ZCBhcyBpZiBsaWtlOgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9IEJpdFhvcihAcGhhbnRvbSwg
QHBoYW50b20pCisgICAgLy8KKyAgICAvLyBFeGNlcHQgdGhhdCB0aGUgY29tcGlsZXIgbmV2ZXIg
Z2V0cyBhbiBvcHBvcnR1bml0eSB0byBzaW1wbGlmeSBvdXQgdGhlIEJpdFhvci4KKyAgICBEZXBl
bmQsCiAKICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIGFkZHJlc3Mg
b2YgYSBXYXNtIG1lbW9yeSBvcGVyYXRpb24uIEl0IHRha2VzIGFuIEludFB0cgogICAgIC8vIGFu
ZCBhIHBpbm5lZCByZWdpc3RlciB0aGVuIGNvbXB1dGVzIHRoZSBhcHByb3ByaWF0ZSBJbnRQdHIg
YWRkcmVzcy4gRm9yIHRoZSB1c2UtY2FzZSBvZgpAQCAtMzAxLDYgKzM5Myw3MSBAQCBpbmxpbmUg
Ym9vbCBpc0RlZmluaXRlbHlUZXJtaW5hbChPcGNvZGUgCiAgICAgfQogfQogCitpbmxpbmUgYm9v
bCBpc0xvYWQoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNh
c2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNl
IExvYWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1N0
b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIFN0
b3JlODoKKyAgICBjYXNlIFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwor
aW5saW5lIGJvb2wgaXNMb2FkU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9w
Y29kZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9h
ZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgU3RvcmU4
OgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxp
bmUgYm9vbCBpc0F0b21pYyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7
CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAg
IGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBB
dG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNo
Z1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlz
TWVtb3J5QWNjZXNzKE9wY29kZSBvcGNvZGUpCit7CisgICAgcmV0dXJuIGlzQXRvbWljKG9wY29k
ZSkgfHwgaXNMb2FkU3RvcmUob3Bjb2RlKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIz
CiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJv
Y2VkdXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2Vk
dXJlLmgJKHJldmlzaW9uIDIxMjgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1By
b2NlZHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGljOgogICAg
IFZhbHVlKiBhZGRJbnRDb25zdGFudChPcmlnaW4sIFR5cGUsIGludDY0X3QgdmFsdWUpOwogICAg
IFZhbHVlKiBhZGRJbnRDb25zdGFudChWYWx1ZSosIGludDY0X3QgdmFsdWUpOwogCisgICAgLy8g
WW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAgICBWYWx1ZSogYWRkQm90
dG9tKE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGFkZEJvdHRvbShWYWx1ZSopOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTI4MDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3MSw2ICszNzEsNDMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBl
KCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlw
ZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
dmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgw
KS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBl
KCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2
YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0Fu
ZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9t
aWNYY2hnU3ViOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAg
Y2FzZSBBdG9taWNYY2hnOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgp
LmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5
cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
PmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOgorICAgICAgICAgICAgICAgIFZBTElE
QVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1
ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZh
bHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0g
MSwgKCJBdCAiLCAqdmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5j
cHAJKHJldmlzaW9uIDIxMjgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg5LDYgKzU4OSw3IEBAIEVmZmVjdHMgVmFsdWU6OmVm
ZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9y
ZGVyZWQ6CiAgICAgY2FzZSBTZWxlY3Q6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTYwMCwxNiArNjAxLDQ0IEBAIEVm
ZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2Ug
TG9hZDE2WjoKICAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBMb2FkOgotICAgICAgICByZXN1
bHQucmVhZHMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIExvYWQ6IHsK
KyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAg
ICByZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPnBo
YW50b21SYW5nZSgpKSB7CisgICAgICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5waGFu
dG9tUmFuZ2UoKTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0K
ICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgY2FzZSBTdG9yZTg6CiAgICAgY2FzZSBTdG9yZTE2OgotICAgIGNhc2UgU3Rv
cmU6Ci0gICAgICAgIHJlc3VsdC53cml0ZXMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsK
KyAgICBjYXNlIFN0b3JlOiB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1v
cnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAg
ICAgICAgaWYgKG1lbW9yeS0+cGhhbnRvbVJhbmdlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5y
ZWFkcyA9IG1lbW9yeS0+cGhhbnRvbVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQuZmVuY2Ug
PSB0cnVlOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBj
YXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBB
dG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNo
Z1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOiB7Cisg
ICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAg
cmVzdWx0LnJlYWRzID0gbWVtb3J5LT5yYW5nZSgpIHwgbWVtb3J5LT5waGFudG9tUmFuZ2UoKTsK
KyAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2UoKSB8IG1lbW9ydHktPnBoYW50
b21SYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5waGFudG9tUmFuZ2UoKSkKKyAgICAgICAg
ICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAg
ICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpAQCAtNjE3
LDE4ICs2NDYsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICAgICAgY29u
c3QgRmVuY2VWYWx1ZSogZmVuY2UgPSBhczxGZW5jZVZhbHVlPigpOwogICAgICAgICByZXN1bHQu
cmVhZHMgPSBmZW5jZS0+cmVhZDsKICAgICAgICAgcmVzdWx0LndyaXRlcyA9IGZlbmNlLT53cml0
ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIFByZXZlbnQga2lsbGluZyBvZiBmZW5jZXMgdGhhdCBj
bGFpbSBub3QgdG8gd3JpdGUgYW55dGhpbmcuIEl0J3MgYSBiaXQgd2VpcmQgdGhhdCB3ZSB1c2UK
LSAgICAgICAgLy8gbG9jYWwgc3RhdGUgYXMgdGhlIHdheSB0byBkbyB0aGlzLCBidXQgaXQgaGFw
cGVucyB0byB3b3JrOiB3ZSBtdXN0IGFzc3VtZSB0aGF0IHdlIGNhbm5vdAotICAgICAgICAvLyBr
aWxsIHdyaXRlc0xvY2FsU3RhdGUgdW5sZXNzIHdlIHVuZGVyc3RhbmRzIGV4YWN0bHkgd2hhdCB0
aGUgaW5zdHJ1Y3Rpb24gaXMgZG9pbmcgKGxpa2UKLSAgICAgICAgLy8gdGhlIHdheSB0aGF0IGZp
eFNTQSB1bmRlcnN0YW5kcyBTZXQvR2V0IGFuZCB0aGUgd2F5IHRoYXQgcmVkdWNlU3RyZW5ndGgg
YW5kIG90aGVycwotICAgICAgICAvLyB1bmRlcnN0YW5kIFVwc2lsb24pLiBUaGlzIHdvdWxkIG9u
bHkgYmVjb21lIGEgcHJvYmxlbSBpZiB3ZSBoYWQgc29tZSBhbmFseXNpcyB0aGF0IHdhcwotICAg
ICAgICAvLyBsb29raW5nIHRvIHVzZSB0aGUgd3JpdGVzTG9jYWxTdGF0ZSBiaXQgdG8gaW52YWxp
ZGF0ZSBhIENTRSBvdmVyIGxvY2FsIHN0YXRlIG9wZXJhdGlvbnMuCi0gICAgICAgIC8vIFRoZW4g
YSBGZW5jZSB3b3VsZCBsb29rIGJsb2NrLCBzYXksIHRoZSBlbGltaW5hdGlvbiBvZiBhIHJlZHVu
ZGFudCBHZXQuIEJ1dCBpdCBsaWtlCi0gICAgICAgIC8vIHRoYXQncyBub3QgYXQgYWxsIGhvdyBv
dXIgb3B0aW1pemF0aW9ucyBmb3IgU2V0L0dldC9VcHNpbG9uL1BoaSB3b3JrIC0gdGhleSBncm9r
IHRoZWlyCi0gICAgICAgIC8vIG9wZXJhdGlvbnMgZGVlcGx5IGVub3VnaCB0aGF0IHRoZXkgaGF2
ZSBubyBuZWVkIHRvIGNoZWNrIHRoaXMgYml0IC0gc28gdGhpcyBjaGVhdCBpcwotICAgICAgICAv
LyBmaW5lLgotICAgICAgICByZXN1bHQud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CisgICAgICAg
IHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEND
YWxsOgpAQCAtNjk0LDYgKzcxMiw3IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAg
IGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICBjYXNlIE5lZzoKKyAgICBj
YXNlIERlcGVuZDoKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgpLCBjaGls
ZCgwKSk7CiAgICAgY2FzZSBBZGQ6CiAgICAgY2FzZSBTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlLmgJKHJldmlzaW9uIDIxMjgwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsOCBAQCBwdWJsaWM6
CiAgICAgLy8gdmFsdWVzIHdpdGggSWRlbnRpdGllcyBvbiBib3R0b20gY29uc3RhbnRzLiBGb3Ig
dGhpcyByZWFzb24sIHRoaXMgdGFrZXMgYSBjYWxsYmFjayB0aGF0IGlzCiAgICAgLy8gcmVzcG9u
c2libGUgZm9yIGNyZWF0aW5nIGJvdHRvbXMuIFRoZXJlJ3MgYSB1dGlsaXR5IGZvciB0aGlzLCBz
ZWUgQjNCb3R0b21Qcm92aWRlci5oLiBZb3UKICAgICAvLyBjYW4gYWxzbyBhY2Nlc3MgdGhhdCB1
dGlsaXR5IHVzaW5nIHJlcGxhY2VXaXRoQm90dG9tKEluc2VydGlvblNldCYsIHNpemVfdCkuCisg
ICAgLy8KKyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEJvdHRvbVByb3ZpZGVyPgogICAgIHZvaWQgcmVwbGFjZVdpdGhC
b3R0b20oY29uc3QgQm90dG9tUHJvdmlkZXImKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwkocmV2aXNpb24gMjEyODAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTY2OCwyOCArNjY4LDc2IEBAIExvYWQ4IFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1w
CiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOCBVOkc6OCwgWkQ6RzozMgorICAgIEFkZHIsIFRt
cAorICAgIEluZGV4LCBUbXAKKwogU3RvcmU4IFU6Rzo4LCBEOkc6OAogICAgIFRtcCwgSW5kZXgK
ICAgICBUbXAsIEFkZHIKICAgICB4ODY6IEltbSwgSW5kZXgKICAgICB4ODY6IEltbSwgQWRkcgog
CitTdG9yZVJlbDggVTpHOjgsIEQ6Rzo4CisgICAgVG1wLCBJbmRleAorICAgIFRtcCwgQWRkcgor
ICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisKIExvYWQ4U2lnbmVkRXh0
ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAor
TG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisg
ICAgSW5kZXgsIFRtcAorCiBMb2FkMTYgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAg
ICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTYgVTpHOjE2LCBaRDpHOjMyCisgICAgQWRkciwgVG1w
CisgICAgSW5kZXgsIFRtcAorCiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6Rzoz
MgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTE2U2lnbmVkRXh0ZW5k
VG8zMiBVOkc6MTYsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIFN0
b3JlMTYgVTpHOjE2LCBEOkc6MTYKICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAKK1N0
b3JlQWNxMTYgVTpHOjE2LCBEOkc6MTYKKyAgICBUbXAsIEluZGV4CisgICAgVG1wLCBBZGRyCisK
K0xvYWRBY3EzMiBVOkc6MzIgWkQ6RzozMgorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisg
ICAgSW5kZXgsIFRtcAorCitTdG9yZVJlbDMyIFU6RzozMiBaRDpHOjMyCisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4
CisKKzY0OiBMb2FkQWNxNjQgVTpHOjY0IFpEOkc6NjQKKyAgICBUbXAsIFRtcAorICAgIEFkZHIs
IFRtcAorICAgIEluZGV4LCBUbXAKKworNjQ6IFN0b3JlUmVsNjQgVTpHOjY0IFpEOkc6NjQKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6
IEltbSwgSW5kZXgKKwogQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIK
ICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVsQ29uZCwgVG1wLCBJbW0sIFRtcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302731</attachid>
            <date>2017-02-24 20:53:49 -0800</date>
            <delta_ts>2017-02-25 11:28:16 -0800</delta_ts>
            <desc>a bit more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>37595</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNBdG9t
aWNWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7CisKK0F0b21pY1ZhbHVlOjp+QXRvbWljVmFsdWUoKQoreworfQorCitXaWR0aCBB
dG9taWNWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3dpZHRoOwor
fQorCit2b2lkIEF0b21pY1ZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChjb21tYSwgIndpZHRoID0gIiwg
bV93aWR0aCk7CisgICAgCisgICAgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKGNvbW1hLCBvdXQpOwor
fQorCitWYWx1ZSogQXRvbWljVmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG5ldyBBdG9taWNWYWx1ZSgqdGhpcyk7Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShL
aW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwg
aW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2lu
ZCwgb3BlcmFuZC0+dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwgb3BlcmFuZCwgcG9pbnRlcikKK3sK
KyAgICBzZXRGZW5jZVJhbmdlKEhlYXBSYW5nZTo6dG9wKCkpOworICAgIAorICAgIHN3aXRjaCAo
a2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21p
Y1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3Vi
OgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KK30KKworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdp
biwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIs
IGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtp
bmQsIGtpbmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRWYWx1
ZS0+dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUsIHBvaW50
ZXIpCit7CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBz
d2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2Fz
ZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgor
I2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisK
K2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEF0b21pY1ZhbHVlIDogcHVibGljIE1lbW9yeVZhbHVl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBpc0F0b21pYyhraW5kLm9wY29kZSgpKTsKKyAgICB9CisgICAgCisgICAg
fkF0b21pY1ZhbHVlKCk7CisgICAgCisgICAgV2lkdGggYWNjZXNzV2lkdGgoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYs
IFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgCisgICAgVmFsdWUqIGNsb25lSW1w
bCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUHJv
Y2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIG9wZXJh
bmQsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAorICAgIEF0b21p
Y1ZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1
ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCisgICAgV2lkdGgg
bV93aWR0aDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJm
ZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAgICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQaW5u
ZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3JpdGVz
KQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8IHJl
YWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90
aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZlbmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAogYm9v
bCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtOTUs
NyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAgICAg
ICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhlci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYgcmVh
ZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5uZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90aGVy
LndyaXRlcwotICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYgcmVh
ZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9CiAK
IGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAg
LTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVjdHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
CiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChyZWFk
c1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAgICBp
ZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYgKHdy
aXRlcykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAgICAg
aWYgKHJlYWRzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNp
b24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw2ICs3MSwxMCBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzE3MwogICAgIGJvb2wgcmVh
ZHNQaW5uZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgd3JpdGVzUGlubmVkIHsgZmFsc2UgfTsKKyAg
ICAKKyAgICAvLyBNZW1vcnkgZmVuY2VzIGNhbm5vdCBiZSByZW9yZGVyZWQgYXJvdW5kIGVhY2gg
b3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBlZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQKKyAgICAv
LyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVtb3J5IGZlbmNlLgorICAgIGJvb2wgZmVuY2UgeyBm
YWxzZSB9OwogCiAgICAgSGVhcFJhbmdlIHdyaXRlczsKICAgICBIZWFwUmFuZ2UgcmVhZHM7CkBA
IC04OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZlY3RzIHsKICAgICAgICAgcmVzdWx0LnJlYWRzID0g
SGVhcFJhbmdlOjp0b3AoKTsKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAg
ICAgICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9
IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMDMsNyArMTA4LDcg
QEAgc3RydWN0IEVmZmVjdHMgewogCiAgICAgYm9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2Nh
bFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQ7CisgICAgICAgIHJldHVybiB0ZXJtaW5h
bCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRl
c1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgcmVvcmRl
cmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVzZSByZXNwZWN0aXZlIGVmZmVjdHMgd291bGQgY2hh
bmdlIHByb2dyYW0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNv
bW1vblN1YmV4cHJlc3Npb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAJKHJldmlzaW9uIDIxMjk5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJl
c3Npb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDIsNiArMTQyLDcgQEAgc3RydWN0IEltcHVyZUJs
b2NrRGF0YSB7CiAKICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlzIG9ubHkg
Z2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0b3JlIGVsaW1pbmF0aW9uLgogICAgIFJhbmdlU2V0PEhl
YXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdldHMgdXNlZCBmb3IgYm90aCBsb2FkIGFuZCBzdG9y
ZSBlbGltaW5hdGlvbi4KKyAgICBib29sIGZlbmNlOwogCiAgICAgTWVtb3J5VmFsdWVNYXAgc3Rv
cmVzQXRIZWFkOwogICAgIE1lbW9yeVZhbHVlTWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsKQEAgLTE3
NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNTdG9yZSgpCiAgICAgICAgICAgICAgICAgICAgICYm
ICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkKLSAgICAgICAgICAgICAgICAg
ICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkpCisgICAgICAgICAg
ICAgICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCisgICAg
ICAgICAgICAgICAgICAgICYmICghZGF0YS5mZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5jZSgpKSkK
ICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7CiAgICAg
ICAgICAgICAgICAgZGF0YS5yZWFkcy5hZGQoZWZmZWN0cy5yZWFkcyk7CiAKICAgICAgICAgICAg
ICAgICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9IGVmZmVjdHMud3JpdGVzKQogICAgICAgICAgICAg
ICAgICAgICBjbG9iYmVyKGRhdGEsIHdyaXRlcyk7CisgICAgICAgICAgICAgICAgZGF0YS5mZW5j
ZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7CkBAIC00
NzgsNiArNDgxLDkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAg
ICAgYm9vbCBmaW5kU3RvcmVBZnRlckNsb2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdl
LCBjb25zdCBGaWx0ZXImIGZpbHRlcikKICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxN
ZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3
YXJkIHBhdGggaGl0cyBhIHN0b3JlIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAg
ICAvLyBoaXR0aW5nIGFueSBvcGVyYXRpb24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMg
c2VhcmNoIHNlZW1zIGxpa2UgaXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0
IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1t
ZWRpYXRlbHkgaGl0IGFuIApAQCAtNjE0LDYgKzYyMCwxMiBAQCBwcml2YXRlOgogICAgICAgICBp
ZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFj
a3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIpOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFs
dWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVu
Y2VzLlxuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
CiAgICAgICAgIGlmIChNZW1vcnlWYWx1ZSogbWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRU
YWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCShyZXZpc2lvbiAyMTI5
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtODgsNiArODgsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7CiAgICAgfQogICAgIAorICAgIEhlYXBSYW5nZSBvcGVyYXRvcnwoY29uc3QgSGVh
cFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBIZWFwUmFuZ2UoCisg
ICAgICAgICAgICBzdGQ6Om1pbihtX2JlZ2luLCBvdGhlci5tX2JlZ2luKSwKKyAgICAgICAgICAg
IHN0ZDo6bWF4KG1fZW5kLCBvdGhlci5tX2VuZCkpOworICAgIH0KKyAgICAKICAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsgfQogCiAg
ICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xODUsNiArMTg1LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9j
aGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAg
ICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1s
b2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8g
dGVsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxv
YWQgbW90aW9uLgorICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAg
ICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1
bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAg
ICBtX25vZGUtPnJlcGxhY2VXaXRoQm90dG9tKG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4KTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDIxMjk5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NjIsMTEgKzU2MiwxNiBAQCBwcml2YXRlOgogICAgIAogICAgIEFyZ1Byb21p
c2UgbG9hZFByb21pc2VBbnlPcGNvZGUoVmFsdWUqIGxvYWRWYWx1ZSkKICAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGxvYWRWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOwogICAgICAgICBp
ZiAoIWNhbkJlSW50ZXJuYWwobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsK
ICAgICAgICAgaWYgKGNyb3NzZXNJbnRlcmZlcmVuY2UobG9hZFZhbHVlKSkKICAgICAgICAgICAg
IHJldHVybiBBcmcoKTsKLSAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQoYWRkcihsb2FkVmFsdWUp
LCBsb2FkVmFsdWUpOworICAgICAgICBpZiAobG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+
aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBBcmcoKTsKKyAgICAgICAgQXJnIGxvYWRB
ZGRyID0gYWRkcihsb2FkVmFsdWUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkQWRkcik7
CisgICAgICAgIEFyZ1Byb21pc2UgcmVzdWx0KGxvYWRBZGRyLCBsb2FkVmFsdWUpOwogICAgICAg
ICBpZiAobG9hZFZhbHVlLT50cmFwcygpKQogICAgICAgICAgICAgcmVzdWx0LnNldFRyYXBzKHRy
dWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTMxLDEwICs5MzYsMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBD
b21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZT4KICAgICBib29sIHRy
eUFwcGVuZFN0b3JlQmluT3AoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkKICAgICB7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKKyAgICAgICAg
CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIs
IG9wY29kZTY0LCBsZWZ0LT50eXBlKCkpOwogICAgICAgICBpZiAob3Bjb2RlID09IEFpcjo6T29w
cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCisgICAgICAgIGlmIChtX3Zh
bHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgCiAgICAgICAgIEFyZyBzdG9yZUFkZHIgPSBhZGRyKG1fdmFsdWUpOwog
ICAgICAgICBBU1NFUlQoc3RvcmVBZGRyKTsKIApAQCAtMjE2Niw2ICsyMTc2LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICBhcHBlbmRCaW5PcDxYb3IzMiwgWG9yNjQsIEFp
cjo6T29wcywgQWlyOjpPb3BzLCBDb21tdXRhdGl2ZT4oCisgICAgICAgICAgICAgICAgbV92YWx1
ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogCiAgICAgICAgIGNhc2UgU2hsOiB7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+
Y2hpbGQoMSktPmlzSW50MzIoMSkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M01lbW9yeVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNNZW1vcnlWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMzIgKzM0LDQw
IEBAIE1lbW9yeVZhbHVlOjp+TWVtb3J5VmFsdWUoKQogewogfQogCitUeXBlIE1lbW9yeVZhbHVl
OjphY2Nlc3NUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNMb2FkKG9wY29kZSgpKSkKKyAgICAg
ICAgcmV0dXJuIHR5cGUoKTsKKyAgICAvLyBUaGlzIGhhcHBlbnMgdG8gd29yayBmb3IgYXRvbWlj
cywgdG9vLiBUaGF0J3Mgd2h5IEF0b21pY1ZhbHVlIGRvZXMgbm90IG5lZWQgdG8gb3ZlcnJpZGUg
dGhpcy4KKyAgICByZXR1cm4gY2hpbGQoMCktPnR5cGUoKTsKK30KKwogc2l6ZV90IE1lbW9yeVZh
bHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0CiB7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dp
ZHRoKCkpOworfQorCitXaWR0aCBNZW1vcnlWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAorewog
ICAgIHN3aXRjaCAob3Bjb2RlKCkpIHsKICAgICBjYXNlIExvYWQ4WjoKICAgICBjYXNlIExvYWQ4
UzoKICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBX
aWR0aDg7CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKICAgICBjYXNlIFN0
b3JlMTY6Ci0gICAgICAgIHJldHVybiAyOworICAgICAgICByZXR1cm4gV2lkdGgxNjsKICAgICBj
YXNlIExvYWQ6Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKHR5cGUoKSk7CisgICAgICAgIHJl
dHVybiB3aWR0aEZvclR5cGUodHlwZSgpKTsKICAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1
cm4gc2l6ZW9mVHlwZShjaGlsZCgwKS0+dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9y
VHlwZShjaGlsZCgwKS0+dHlwZSgpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdp
ZHRoODsKICAgICB9CiB9CiAKLVdpZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHdpZHRoRm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7Ci19Ci0KIHZv
aWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKG1fb2Zmc2V0KQpAQCAtNjcsNiArNzUsOCBAQCB2b2lk
IE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImCiAgICAgaWYgKChpc0xvYWQoKSAm
JiBlZmZlY3RzKCkucmVhZHMgIT0gcmFuZ2UoKSkKICAgICAgICAgfHwgKGlzU3RvcmUoKSAmJiBl
ZmZlY3RzKCkud3JpdGVzICE9IHJhbmdlKCkpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJy
YW5nZSA9ICIsIHJhbmdlKCkpOworICAgIGlmIChwaGFudG9tUmFuZ2UoKSkKKyAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAicGhhbnRvbVJhbmdlID0gIiwgcGhhbnRvbVJhbmdlKCkpOwogfQogCiBW
YWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CkBAIC03NCw2ICs4NCw1OCBAQCBW
YWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAgICAgcmV0dXJuIG5ldyBNZW1v
cnlWYWx1ZSgqdGhpcyk7CiB9CiAKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1dCBub3Qg
TG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3VmZml4IHRo
YXQKKy8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCitNZW1vcnlWYWx1ZTo6TWVtb3J5
VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVy
LCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0
eXBlLCBvcmlnaW4sIHBvaW50ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCit7CisgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Cisg
ICAgICAgIGNhc2UgTG9hZDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExvYWQ4
WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAg
Y2FzZSBMb2FkMTZTOgorICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RvcmU4OgorICAgICAgICBjYXNlIFN0b3JlMTY6
CisgICAgICAgIGNhc2UgU3RvcmU6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBWb2lkKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0g
Zm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgorTWVtb3J5VmFsdWU6
Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGlu
dDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4s
IHBvaW50ZXIsIG9mZnNldCkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAg
ICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBMb2FkOFo6CisgICAgICAg
IGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQxNlo6CisgICAgICAgIGNhc2UgTG9hZDE2
UzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIGZv
cm0gZm9yIHN0b3Jlcy4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdp
biBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0g
MCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFsdWUs
IHBvaW50ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCit7CisgICAgQVNTRVJUKGlzU3RvcmUo
a2luZC5vcGNvZGUoKSkpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlm
IC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1v
cnlWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9y
eVZhbHVlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M01lbW9yeVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDQzICszMiwxMSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotLy8gRklYTUU6IFdlIHdhbnQgdG8gYWxsb3cg
ZmVuY2VkIG1lbW9yeSBhY2Nlc3NlcyBvbiBBUk0uCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMzQ5Ci0KIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIE1lbW9y
eVZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhY2NlcHRz
KEtpbmQga2luZCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAg
ICAgICBjYXNlIExvYWQ4WjoKLSAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgIGNhc2UgTG9h
ZDE2WjoKLSAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAg
IGNhc2UgU3RvcmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzU3Rv
cmUoS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0g
ICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2Ug
U3RvcmU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29s
IGlzTG9hZChLaW5kIGtpbmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWNjZXB0cyhraW5kKSAm
JiAhaXNTdG9yZShraW5kKTsKKyAgICAgICAgcmV0dXJuIGlzTWVtb3J5KGtpbmQub3Bjb2RlKCkp
OwogICAgIH0KIAogICAgIH5NZW1vcnlWYWx1ZSgpOwpAQCAtNzgsNzYgKzQ2LDUyIEBAIHB1Ymxp
YzoKIAogICAgIGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3Jhbmdl
OyB9CiAgICAgdm9pZCBzZXRSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fcmFuZ2Ug
PSByYW5nZTsgfQorICAgIAorICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHJhbmdlLgorICAg
IGNvbnN0IEhlYXBSYW5nZSYgYWNjZXNzUmFuZ2UoKSBjb25zdCB7IHJldHVybiByYW5nZSgpOyB9
CisgICAgdm9pZCBzZXRBY2Nlc3NSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IHNldFJh
bmdlKHJhbmdlKTsgfQorICAgIAorICAgIGNvbnN0IEhlYXBSYW5nZSYgZmVuY2VSYW5nZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZmVuY2VSYW5nZTsgfQorICAgIHZvaWQgc2V0RmVuY2VSYW5nZShjb25z
dCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fZmVuY2VSYW5nZSA9IHJhbmdlOyB9CisKKyAgICBib29s
IGlzU3RvcmUoKSBjb25zdCB7IHJldHVybiBpc1N0b3JlKG9wY29kZSgpKTsgfQorICAgIGJvb2wg
aXNMb2FkKCkgY29uc3QgeyByZXR1cm4gaXNMb2FkKG9wY29kZSgpKTsgfQogCi0gICAgYm9vbCBp
c1N0b3JlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFZvaWQ7IH0KLSAgICBib29sIGlzTG9h
ZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSAhPSBWb2lkOyB9CisgICAgYm9vbCBoYXNGZW5jZSgp
IGNvbnN0IHsgcmV0dXJuICEhZmVuY2VSYW5nZSgpOyB9CiAKKyAgICBUeXBlIGFjY2Vzc1R5cGUo
KSBjb25zdDsKICAgICBzaXplX3QgYWNjZXNzQnl0ZVNpemUoKSBjb25zdDsKLSAgICBXaWR0aCBh
Y2Nlc3NXaWR0aCgpIGNvbnN0OworCisgICAgdmlydHVhbCBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNv
bnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1h
LCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQ
cmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZhbHVlKiBjbG9u
ZUltcGwoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUHJv
Y2VkdXJlOwotCi0gICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFos
IExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAotICAg
IC8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBr
aW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9m
ZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3Jp
Z2luLCBwb2ludGVyKQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
KyAgICBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwg
T3JpZ2luIG9yaWdpbiwgaW50MzJfdCBvZmZzZXQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisg
ICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBhcmd1bWVu
dHMuLi4pCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVh
cFJhbmdlOjp0b3AoKSkKICAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTG9h
ZDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZDhaOgotICAg
ICAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAg
ICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAg
ICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAg
ICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICAvLyBVc2UgdGhpcyBm
b3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRz
IHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CisgICAgLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0
eXBlKS4KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBUeXBlLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVy
LCBpbnQzMl90IG9mZnNldCA9IDApOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMg
d2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBr
aW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQot
ICAgICAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNl
dCkKLSAgICB7Ci0gICAgfQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBz
dG9yZXMuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSog
dmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFs
dWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKLSAg
ICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRv
cCgpKQotICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAg
IHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAg
ICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUq
IHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKTsKKyAgICAKICAgICBp
bnQzMl90IG1fb2Zmc2V0IHsgMCB9OwotICAgIEhlYXBSYW5nZSBtX3JhbmdlOworICAgIEhlYXBS
YW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSBtX2ZlbmNl
UmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkocmV2aXNpb24gMjEyOTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDcgKzgyLDYgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBNb2QsIC8vIEFsbCBiZXRz
IGFyZSBvZmYgYXMgdG8gd2hhdCB3aWxsIGhhcHBlbiB3aGVuIHlvdSBleGVjdXRlIHRoaXMgZm9y
IC0yXjMxJS0xIGFuZCB4JTAuCiAgICAgVU1vZCwKIAotCiAgICAgLy8gUG9seW1vcnBoaWMgbmVn
YXRpb24uIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdGhpcyBmb3IgZmxvYXRpbmcgcG9pbnQsIHNp
bmNlIGludGVnZXIgbmVnYXRpb24KICAgICAvLyBpcyBleGFjdGx5IGxpa2UgU3ViKDAsIHgpLiBC
dXQgdGhhdCdzIG5vdCB0cnVlIGZvciBmbG9hdGluZyBwb2ludC4gU3ViKDAsIDApIGlzIDAsIHdo
aWxlCiAgICAgLy8gTmVnKDApIGlzIC0wLiBBbHNvLCB3ZSBjYW5vbmljYWxpemUgU3ViKDAsIHgp
IGludG8gTmVnKHgpIGluIGNhc2Ugb2YgaW50ZWdlcnMuCkBAIC0xNjIsNiArMTYxLDk5IEBAIGVu
dW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgU3RvcmUxNiwKICAgICAvLyBUaGlzIGlzIGEgcG9s
eW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgRmxvYXQsIGFuZCBEb3VibGUuCiAgICAg
U3RvcmUsCisgICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5z
IGEgYm9vbGVhbi4gTWF5IGNob29zZSB0byBkbyBub3RoaW5nIGFuZCByZXR1cm4gZmFsc2UuIFlv
dSBjYW4KKyAgICAvLyB1c3VhbGx5IGFzc3VtZSB0aGF0IHRoaXMgaXMgZmFzdGVyIGFuZCByZXN1
bHRzIGluIGxlc3MgY29kZSB0aGFuIEF0b21pY1N0cm9uZ0NBUywgdGhvdWdoIHRoYXQncworICAg
IC8vIG5vdCBuZWNlc3NhcmlseSB0cnVlIG9uIEludGVsLCBpZiBpbnN0cnVjdGlvbiBzZWxlY3Rp
b24gZG9lcyBpdHMgam9iLiBJbWFnaW5lIHRoYXQgdGhpcyBvcGNvZGUgaXMKKyAgICAvLyBhcyBp
ZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgLy8gYm9vbCBBdG9taWNXZWFrQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdW
YWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgaWYgKCFyYW5kKCkpCisgICAgLy8g
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFJlYWwgd29ybGQgZXhhbXBsZSBvZiB0aGlzOiBjb250
ZXh0IHN3aXRjaCBvbiBBUk0gd2hpbGUgZG9pbmcgQ0FTLgorICAgIC8vICAgICBpZiAoKnB0ciAh
PSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vICAg
ICAqcHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVybiB0cnVlOworICAgIC8vIH0KKyAg
ICAvLworICAgIC8vIE5vdGUgdGhhdCBhbGwgYXRvbWljcyBwdXQgdGhlIHBvaW50ZXIgbGFzdCB0
byBiZSBjb25zaXN0ZW50IHdpdGggaG93IGxvYWRzIGFuZCBzdG9yZXMgd29yay4gVGhpcworICAg
IC8vIGlzIGEgZ29vZnkgdHJhZGl0aW9uLCBidXQgaXQncyBoYXJtbGVzcywgYW5kIGJldHRlciB0
aGFuIGJlaW5nIGluY29uc2lzdGVudC4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCB3ZWFrIENB
UyBoYXMgbm8gZmVuY2luZyBndWFyYW50ZWVzIHdoZW4gaXQgZmFpbHMuIFRoaXMgbWVhbnMgdGhh
dCB0aGUgZm9sbG93aW5nCisgICAgLy8gdHJhbnNmb3JtYXRpb24gaXMgYWx3YXlzIHZhbGlkOgor
ICAgIC8vCisgICAgLy8gQmVmb3JlOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goQXRv
bWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6
IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICAvLworICAgIC8vIEFmdGVyOgorICAgIC8v
CisgICAgLy8gICAgICAgICBCcmFuY2goRXF1YWwoTG9hZChwdHIpLCBleHBlY3RlZCkpCisgICAg
Ly8gICAgICAgU3VjY2Vzc29yczogVGhlbjojYXR0ZW1wdCwgRWxzZTojZmFpbAorICAgIC8vICAg
ICBCQiNhdHRlbXB0OgorICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0
ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBF
bHNlOiNmYWlsCisgICAgQXRvbWljV2Vha0NBUywKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFy
ZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2ZSB0aGUg
bm9uZGV0ZXJtaW5pc20gb2YgV2Vha0NBUy4KKyAgICAvLyBUaGlzIGlzIGEgYml0IG1vcmUgY29k
ZSBhbmQgYSBiaXQgc2xvd2VyIGluIHNvbWUgY2FzZXMsIHRob3VnaCBub3QgYnkgYSBsb3QuIElt
YWdpbmUgdGhhdCB0aGlzCisgICAgLy8gb3Bjb2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9t
aWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBUIEF0
b21pY1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAgICAv
LyB7CisgICAgLy8gICAgIFQgb2xkVmFsdWUgPSAqcHRyOworICAgIC8vICAgICBpZiAob2xkVmFs
dWUgPT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAg
ICAvLyAgICAgcmV0dXJuIG9sZFZhbHVlCisgICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90ZSB0
aGF0IEF0b21pY1dlYWtDQVMgYW5kIEF0b21pY1N0cm9uZ0NBUyBzb3J0IG9mIGhhdmUgdGhpcyBr
aW5kIG9mIGVxdWl2YWxlbmNlOgorICAgIC8vCisgICAgLy8gQXRvbWljV2Vha0NBUyhAZXhwLCBA
bmV3LCBAcHRyKSA9PSBFcXVhbChBdG9taWNTdHJvbmdDQVMoQGV4cCwgQG5ldywgQHB0ciksIEBl
eHApCisgICAgLy8KKyAgICAvLyBBc3N1bWluZyB0aGF0IHRoZSBXZWFrQ0FTIGRvZXMgbm90IHNw
dXJpb3VzbHkgZmFpbCwgb2YgY291cnNlLgorICAgIEF0b21pY1N0cm9uZ0NBUywKKyAgICAKKyAg
ICAvLyBBdG9taWNhbGx5IF9fXyBhIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRoZSBvbGQg
dmFsdWUuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGdfX18o
QG9wZXJhbmQsIEBwdHIpCisgICAgQXRvbWljWGNoZ0FkZCwKKyAgICBBdG9taWNYY2hnQW5kLAor
ICAgIEF0b21pY1hjaGdPciwKKyAgICBBdG9taWNYY2hnU3ViLAorICAgIEF0b21pY1hjaGdYb3Is
CisgICAgCisgICAgLy8gQXRvbWljYWxseSBleGNoYW5nZSBhIHZhbHVlIHdpdGggYSBtZW1vcnkg
bG9jYXRpb24uIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGco
QG5ld1ZhbHVlLCBAcHRyKQorICAgIEF0b21pY1hjaGcsCisgICAgCisgICAgLy8gSW50cm9kdWNl
IGFuIGludmlzaWJsZSBkZXBlbmRlbmN5IGZvciBibG9ja2luZyBtb3Rpb24gb2YgbG9hZHMgd2l0
aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEByZXN1bHQg
PSBEZXBlbmQoQHBoYW50b20pCisgICAgLy8KKyAgICAvLyBUaGlzIGlzIGV2ZW50dWFsbHkgY29k
ZWdlbmVyYXRlZCB0byBoYXZlIGxvY2FsIHNlbWFudGljcyBhcyBpZiB3ZSBkaWQ6CisgICAgLy8K
KyAgICAvLyBAcmVzdWx0ID0gJDAKKyAgICAvLworICAgIC8vIEJ1dCBpdCBlbnN1cmVzIHRoYXQg
dGhlIHVzZXJzIG9mIEByZXN1bHQgY2Fubm90IGV4ZWN1dGUgdW50aWwgQHBoYW50b20gaXMgY29t
cHV0ZWQuCisgICAgLy8KKyAgICAvLyBUaGUgY29tcGlsZXIgaXMgbm90IGFsbG93ZWQgdG8gcmVh
c29uIGFib3V0IHRoZSBmYWN0IHRoYXQgRGVwZW5kIGNvZGVnZW5lcmF0ZXMgdGhpcyB3YXkuIEFu
eSBraW5kCisgICAgLy8gb2YgdHJhbnNmb3JtYXRpb24gb3IgYW5hbHlzaXMgdGhhdCByZWxpZXMg
b24gdGhlIGluc2lnaHQgdGhhdCBEZXBlbmQgaXMgcmVhbGx5IHplcm8gaXMgdW5zb3VuZCwKKyAg
ICAvLyBiZWNhdXNlIGl0IHVubG9ja3MgcmVvcmRlcmluZyBvZiB1c2VycyBvZiBAcmVzdWx0IGFu
ZCBAcGhhbnRvbS4KKyAgICAvLworICAgIC8vIE9uIFg4NiwgdGhpcyBpcyBsb3dlcmVkIHRvIGEg
bG9hZC1sb2FkIGZlbmNlIGFuZCBAcmVzdWx0IHVzZXMgQHBoYW50b20gZGlyZWN0bHkuCisgICAg
Ly8KKyAgICAvLyBPbiBBUk0sIHRoaXMgaXMgbG93ZXJlZCBhcyBpZiBsaWtlOgorICAgIC8vCisg
ICAgLy8gQHJlc3VsdCA9IEJpdFhvcihAcGhhbnRvbSwgQHBoYW50b20pCisgICAgLy8KKyAgICAv
LyBFeGNlcHQgdGhhdCB0aGUgY29tcGlsZXIgbmV2ZXIgZ2V0cyBhbiBvcHBvcnR1bml0eSB0byBz
aW1wbGlmeSBvdXQgdGhlIEJpdFhvci4KKyAgICBEZXBlbmQsCiAKICAgICAvLyBUaGlzIGlzIHVz
ZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIGFkZHJlc3Mgb2YgYSBXYXNtIG1lbW9yeSBvcGVyYXRp
b24uIEl0IHRha2VzIGFuIEludFB0cgogICAgIC8vIGFuZCBhIHBpbm5lZCByZWdpc3RlciB0aGVu
IGNvbXB1dGVzIHRoZSBhcHByb3ByaWF0ZSBJbnRQdHIgYWRkcmVzcy4gRm9yIHRoZSB1c2UtY2Fz
ZSBvZgpAQCAtMzAxLDYgKzM5Myw3MSBAQCBpbmxpbmUgYm9vbCBpc0RlZmluaXRlbHlUZXJtaW5h
bChPcGNvZGUgCiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBpc0xvYWQoT3Bjb2RlIG9wY29kZSkK
K3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9h
ZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBMb2Fk
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1N0b3JlKE9wY29kZSBvcGNvZGUpCit7Cisg
ICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNlIFN0b3JlMTY6
CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNMb2FkU3RvcmUo
T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgTG9hZDha
OgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6
CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3RvcmUxNjoKKyAg
ICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pYyhPcGNvZGUg
b3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FT
OgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAg
ICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBB
dG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hj
aGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzTWVtb3J5QWNjZXNzKE9wY29kZSBvcGNv
ZGUpCit7CisgICAgcmV0dXJuIGlzQXRvbWljKG9wY29kZSkgfHwgaXNMb2FkU3RvcmUob3Bjb2Rl
KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHJldmlzaW9uIDIxMjk5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGljOgogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChP
cmlnaW4sIFR5cGUsIGludDY0X3QgdmFsdWUpOwogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChW
YWx1ZSosIGludDY0X3QgdmFsdWUpOwogCisgICAgLy8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBi
b3R0b20gaXMgemVyby4KICAgICBWYWx1ZSogYWRkQm90dG9tKE9yaWdpbiwgVHlwZSk7CiAgICAg
VmFsdWUqIGFkZEJvdHRvbShWYWx1ZSopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3MSw2ICszNzEsNDMgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZh
bHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vh
a0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCks
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNo
aWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50
eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQo
dmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1
ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9u
Z0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCks
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNo
aWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNo
aWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURB
VEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0Fk
ZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIGNhc2UgQXRv
bWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAg
Y2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAg
ICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAy
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBl
KCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9p
bnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0
YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRGVwZW5kOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4
dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlw
ZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5r
aW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTg5LDYgKzU4OSw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2Ug
QmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgY2FzZSBTZWxlY3Q6
CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGl2OgogICAgIGNh
c2UgVURpdjoKQEAgLTYwMCwxNiArNjAxLDQ0IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBj
b25zdAogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgTG9hZDE2WjoKICAgICBjYXNlIExvYWQx
NlM6Ci0gICAgY2FzZSBMb2FkOgotICAgICAgICByZXN1bHQucmVhZHMgPSBhczxNZW1vcnlWYWx1
ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIExvYWQ6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1l
bW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnkt
PnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPnBoYW50b21SYW5nZSgpKSB7CisgICAgICAg
ICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAgICAg
IHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0LmNvbnRyb2xE
ZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBTdG9yZTg6
CiAgICAgY2FzZSBTdG9yZTE2OgotICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJlc3VsdC53cml0
ZXMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIFN0b3JlOiB7CisgICAg
ICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVz
dWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+cGhhbnRv
bVJhbmdlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cGhhbnRvbVJh
bmdlKCk7CisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOworICAgICAgICB9CisgICAg
ICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAg
ICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2Ug
QXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1v
cnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5y
YW5nZSgpIHwgbWVtb3J5LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9
IG1lbW9yeS0+cmFuZ2UoKSB8IG1lbW9ydHktPnBoYW50b21SYW5nZSgpOworICAgICAgICBpZiAo
bWVtb3J5LT5waGFudG9tUmFuZ2UoKSkKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7
CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CisgICAgfQogICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5l
ZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpAQCAtNjE3LDE4ICs2NDYsNyBAQCBFZmZlY3RzIFZh
bHVlOjplZmZlY3RzKCkgY29uc3QKICAgICAgICAgY29uc3QgRmVuY2VWYWx1ZSogZmVuY2UgPSBh
czxGZW5jZVZhbHVlPigpOwogICAgICAgICByZXN1bHQucmVhZHMgPSBmZW5jZS0+cmVhZDsKICAg
ICAgICAgcmVzdWx0LndyaXRlcyA9IGZlbmNlLT53cml0ZTsKLSAgICAgICAgCi0gICAgICAgIC8v
IFByZXZlbnQga2lsbGluZyBvZiBmZW5jZXMgdGhhdCBjbGFpbSBub3QgdG8gd3JpdGUgYW55dGhp
bmcuIEl0J3MgYSBiaXQgd2VpcmQgdGhhdCB3ZSB1c2UKLSAgICAgICAgLy8gbG9jYWwgc3RhdGUg
YXMgdGhlIHdheSB0byBkbyB0aGlzLCBidXQgaXQgaGFwcGVucyB0byB3b3JrOiB3ZSBtdXN0IGFz
c3VtZSB0aGF0IHdlIGNhbm5vdAotICAgICAgICAvLyBraWxsIHdyaXRlc0xvY2FsU3RhdGUgdW5s
ZXNzIHdlIHVuZGVyc3RhbmRzIGV4YWN0bHkgd2hhdCB0aGUgaW5zdHJ1Y3Rpb24gaXMgZG9pbmcg
KGxpa2UKLSAgICAgICAgLy8gdGhlIHdheSB0aGF0IGZpeFNTQSB1bmRlcnN0YW5kcyBTZXQvR2V0
IGFuZCB0aGUgd2F5IHRoYXQgcmVkdWNlU3RyZW5ndGggYW5kIG90aGVycwotICAgICAgICAvLyB1
bmRlcnN0YW5kIFVwc2lsb24pLiBUaGlzIHdvdWxkIG9ubHkgYmVjb21lIGEgcHJvYmxlbSBpZiB3
ZSBoYWQgc29tZSBhbmFseXNpcyB0aGF0IHdhcwotICAgICAgICAvLyBsb29raW5nIHRvIHVzZSB0
aGUgd3JpdGVzTG9jYWxTdGF0ZSBiaXQgdG8gaW52YWxpZGF0ZSBhIENTRSBvdmVyIGxvY2FsIHN0
YXRlIG9wZXJhdGlvbnMuCi0gICAgICAgIC8vIFRoZW4gYSBGZW5jZSB3b3VsZCBsb29rIGJsb2Nr
LCBzYXksIHRoZSBlbGltaW5hdGlvbiBvZiBhIHJlZHVuZGFudCBHZXQuIEJ1dCBpdCBsaWtlCi0g
ICAgICAgIC8vIHRoYXQncyBub3QgYXQgYWxsIGhvdyBvdXIgb3B0aW1pemF0aW9ucyBmb3IgU2V0
L0dldC9VcHNpbG9uL1BoaSB3b3JrIC0gdGhleSBncm9rIHRoZWlyCi0gICAgICAgIC8vIG9wZXJh
dGlvbnMgZGVlcGx5IGVub3VnaCB0aGF0IHRoZXkgaGF2ZSBubyBuZWVkIHRvIGNoZWNrIHRoaXMg
Yml0IC0gc28gdGhpcyBjaGVhdCBpcwotICAgICAgICAvLyBmaW5lLgotICAgICAgICByZXN1bHQu
d3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENDYWxsOgpAQCAtNjk0LDYgKzcxMiw3IEBA
IFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBC
aXR3aXNlQ2FzdDoKICAgICBjYXNlIE5lZzoKKyAgICBjYXNlIERlcGVuZDoKICAgICAgICAgcmV0
dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgpLCBjaGlsZCgwKSk7CiAgICAgY2FzZSBBZGQ6CiAg
ICAgY2FzZSBTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgLy8gdmFsdWVzIHdpdGggSWRl
bnRpdGllcyBvbiBib3R0b20gY29uc3RhbnRzLiBGb3IgdGhpcyByZWFzb24sIHRoaXMgdGFrZXMg
YSBjYWxsYmFjayB0aGF0IGlzCiAgICAgLy8gcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGJvdHRv
bXMuIFRoZXJlJ3MgYSB1dGlsaXR5IGZvciB0aGlzLCBzZWUgQjNCb3R0b21Qcm92aWRlci5oLiBZ
b3UKICAgICAvLyBjYW4gYWxzbyBhY2Nlc3MgdGhhdCB1dGlsaXR5IHVzaW5nIHJlcGxhY2VXaXRo
Qm90dG9tKEluc2VydGlvblNldCYsIHNpemVfdCkuCisgICAgLy8KKyAgICAvLyBZb3UncmUgZ3Vh
cmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJvdHRv
bVByb3ZpZGVyPgogICAgIHZvaWQgcmVwbGFjZVdpdGhCb3R0b20oY29uc3QgQm90dG9tUHJvdmlk
ZXImKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2Rl
Lm9wY29kZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJP
cGNvZGUub3Bjb2RlcwkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2OCwyOCArNjY4LDc2IEBAIExv
YWQ4IFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2Fk
QWNxOCBVOkc6OCwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogU3Rv
cmU4IFU6Rzo4LCBEOkc6OAogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKICAgICB4ODY6
IEltbSwgSW5kZXgKICAgICB4ODY6IEltbSwgQWRkcgogCitTdG9yZVJlbDggVTpHOjgsIEQ6Rzo4
CisgICAgVG1wLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAg
IHg4NjogSW1tLCBBZGRyCisKIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgog
ICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcThTaWduZWRFeHRlbmRUbzMy
IFU6Rzo4LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBMb2FkMTYg
VTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNx
MTYgVTpHOjE2LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBMb2Fk
MTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIElu
ZGV4LCBUbXAKIAorTG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKKyAg
ICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIFN0b3JlMTYgVTpHOjE2LCBEOkc6MTYKICAg
ICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAKK1N0b3JlQWNxMTYgVTpHOjE2LCBEOkc6MTYK
KyAgICBUbXAsIEluZGV4CisgICAgVG1wLCBBZGRyCisKK0xvYWRBY3EzMiBVOkc6MzIgWkQ6Rzoz
MgorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCitTdG9yZVJl
bDMyIFU6RzozMiBaRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorICAgIHg4
NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisKKzY0OiBMb2FkQWNxNjQgVTpHOjY0
IFpEOkc6NjQKKyAgICBUbXAsIFRtcAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwor
NjQ6IFN0b3JlUmVsNjQgVTpHOjY0IFpEOkc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKwogQ29tcGFyZTMy
IFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwg
VG1wCiAgICAgUmVsQ29uZCwgVG1wLCBJbW0sIFRtcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302760</attachid>
            <date>2017-02-25 11:28:16 -0800</date>
            <delta_ts>2017-02-25 12:01:08 -0800</delta_ts>
            <desc>added the instructions to Air</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>45008</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNBdG9t
aWNWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7CisKK0F0b21pY1ZhbHVlOjp+QXRvbWljVmFsdWUoKQoreworfQorCitXaWR0aCBB
dG9taWNWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3dpZHRoOwor
fQorCit2b2lkIEF0b21pY1ZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChjb21tYSwgIndpZHRoID0gIiwg
bV93aWR0aCk7CisgICAgCisgICAgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKGNvbW1hLCBvdXQpOwor
fQorCitWYWx1ZSogQXRvbWljVmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG5ldyBBdG9taWNWYWx1ZSgqdGhpcyk7Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShL
aW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFs
dWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNr
ZWRPcGNvZGUsIGtpbmQsIG9wZXJhbmQtPnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIG9wZXJhbmQs
IHBvaW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVh
cFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKG9wZXJhdGlvbldpZHRo
KCkpID09IG9wZXJhdGlvblR5cGUoKSk7CisgICAgCisgICAgc3dpdGNoIChraW5kLm9wY29kZSgp
KSB7CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAg
ICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBB
dG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitBdG9t
aWNWYWx1ZTo6QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0
aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIs
IGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtp
bmQsIGtpbmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRWYWx1
ZS0+dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUsIHBvaW50
ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVhcFJhbmdl
Ojp0b3AoKSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKG9wZXJhdGlvbldpZHRoKCkpID09
IG9wZXJhdGlvblR5cGUoKSk7CisKKyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBj
YXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklU
KQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisj
aW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEF0b21p
Y1ZhbHVlIDogcHVibGljIE1lbW9yeVZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBh
Y2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0F0b21pYyhraW5kLm9w
Y29kZSgpKTsKKyAgICB9CisgICAgCisgICAgfkF0b21pY1ZhbHVlKCk7CisgICAgCisgICAgVHlw
ZSBvcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gY2hpbGQoMCktPnR5cGUoKTsgfQorICAg
IAorICAgIFdpZHRoIG9wZXJhdGlvbldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQor
ICAgIAorICAgIC8vIFN5bm9ueW0gZm9yIHdpZHRoKCksIGlmIHlvdSdyZSBhY2Nlc3Npbmcgdmlh
IE1lbW9yeVZhbHVlLgorICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIAorICAgIFZhbHVlKiBjbG9uZUltcGwoKSBjb25z
dCBvdmVycmlkZTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsK
KyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBWYWx1ZSogb3BlcmFu
ZCwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCisgICAgQXRvbWlj
VmFsdWUoS2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBu
ZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCisgICAg
V2lkdGggbV93aWR0aDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYg
Ly8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZm
ZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Vm
ZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6
aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAgICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0
ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIu
d3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIucmVhZHMpCi0gICAgICAg
IHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7CisgICAgICAgIHx8IHJlYWRzLm92ZXJs
YXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZlbmNlICYmIG90aGVyLmZlbmNlKTsKIH0K
IAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApA
QCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYg
CiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhlci53cml0ZXNQaW5uZWQKICAgICAgICAg
JiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5uZWQKICAgICAgICAgJiYgd3JpdGVzID09
IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkczsKKyAgICAgICAg
JiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7
CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29u
c3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVjdHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlc1Bpbm5lZCIpOwogICAgIGlm
IChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsK
KyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkZlbmNlIik7CiAgICAg
aWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7
CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwxMCBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzE3MwogICAgIGJv
b2wgcmVhZHNQaW5uZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgd3JpdGVzUGlubmVkIHsgZmFsc2Ug
fTsKKyAgICAKKyAgICAvLyBNZW1vcnkgZmVuY2VzIGNhbm5vdCBiZSByZW9yZGVyZWQgYXJvdW5k
IGVhY2ggb3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBlZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQK
KyAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVtb3J5IGZlbmNlLgorICAgIGJvb2wgZmVu
Y2UgeyBmYWxzZSB9OwogCiAgICAgSGVhcFJhbmdlIHdyaXRlczsKICAgICBIZWFwUmFuZ2UgcmVh
ZHM7CkBAIC04OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZlY3RzIHsKICAgICAgICAgcmVzdWx0LnJl
YWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1
ZTsKICAgICAgICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIHJlc3VsdC5m
ZW5jZSA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMDMsNyAr
MTA4LDcgQEAgc3RydWN0IEVmZmVjdHMgewogCiAgICAgYm9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0
ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQ7CisgICAgICAgIHJldHVybiB0
ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8
IHdyaXRlc1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
cmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVzZSByZXNwZWN0aXZlIGVmZmVjdHMgd291
bGQgY2hhbmdlIHByb2dyYW0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1
YmV4cHJlc3Npb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDIsNiArMTQyLDcgQEAgc3RydWN0IElt
cHVyZUJsb2NrRGF0YSB7CiAKICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlz
IG9ubHkgZ2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0b3JlIGVsaW1pbmF0aW9uLgogICAgIFJhbmdl
U2V0PEhlYXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdldHMgdXNlZCBmb3IgYm90aCBsb2FkIGFu
ZCBzdG9yZSBlbGltaW5hdGlvbi4KKyAgICBib29sIGZlbmNlOwogCiAgICAgTWVtb3J5VmFsdWVN
YXAgc3RvcmVzQXRIZWFkOwogICAgIE1lbW9yeVZhbHVlTWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsK
QEAgLTE3NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNTdG9yZSgpCiAgICAgICAgICAgICAgICAg
ICAgICYmICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkKLSAgICAgICAgICAg
ICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkpCisgICAg
ICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkp
CisgICAgICAgICAgICAgICAgICAgICYmICghZGF0YS5mZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5j
ZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7
CiAgICAgICAgICAgICAgICAgZGF0YS5yZWFkcy5hZGQoZWZmZWN0cy5yZWFkcyk7CiAKICAgICAg
ICAgICAgICAgICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9IGVmZmVjdHMud3JpdGVzKQogICAgICAg
ICAgICAgICAgICAgICBjbG9iYmVyKGRhdGEsIHdyaXRlcyk7CisgICAgICAgICAgICAgICAgZGF0
YS5mZW5jZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeSkK
ICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7
CkBAIC00NzgsNiArNDgxLDkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0
ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVBZnRlckNsb2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdl
IHJhbmdlLCBjb25zdCBGaWx0ZXImIGZpbHRlcikKICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVl
LT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVy
eSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0b3JlIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQog
ICAgICAgICAvLyBoaXR0aW5nIGFueSBvcGVyYXRpb24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUu
IFRoaXMgc2VhcmNoIHNlZW1zIGxpa2UgaXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2
ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1v
c3QgaW1tZWRpYXRlbHkgaGl0IGFuIApAQCAtNjE0LDYgKzYyMCwxMiBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tp
bmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIpOwogICAgICAgICAKKyAgICAgICAgaWYg
KG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1
c2UgZmVuY2VzLlxuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgCiAgICAgICAgIGlmIChNZW1vcnlWYWx1ZSogbWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFs
dWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHku
XG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCShyZXZpc2lv
biAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtODgsNiArODgsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAorICAgIEhlYXBSYW5nZSBvcGVyYXRvcnwoY29u
c3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBIZWFwUmFu
Z2UoCisgICAgICAgICAgICBzdGQ6Om1pbihtX2JlZ2luLCBvdGhlci5tX2JlZ2luKSwKKyAgICAg
ICAgICAgIHN0ZDo6bWF4KG1fZW5kLCBvdGhlci5tX2VuZCkpOworICAgIH0KKyAgICAKICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsg
fQogCiAgICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xODUsNiArMTg1LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAg
ICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEg
bG9hZC1sb2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2Ug
aXQgdG8gdGVsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJs
b2NrIGxvYWQgbW90aW9uLgorICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7Cisg
ICAgICAgICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNo
b3VsZCB1bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAg
ICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoQm90dG9tKG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4
KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MzgsNyArNTM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJl
dHVybiBBcmcoKTsKIAogICAgICAgICBpbnQzMl90IG9mZnNldCA9IHZhbHVlLT5vZmZzZXQoKTsK
LSAgICAgICAgV2lkdGggd2lkdGggPSB2YWx1ZS0+YWNjZXNzV2lkdGgoKTsKKyAgICAgICAgV2lk
dGggd2lkdGggPSB2YWx1ZS0+bG9hZFN0b3JlV2lkdGgoKTsKIAogICAgICAgICBBcmcgcmVzdWx0
ID0gZWZmZWN0aXZlQWRkcih2YWx1ZS0+bGFzdENoaWxkKCksIG9mZnNldCwgd2lkdGgpOwogICAg
ICAgICBBU1NFUlQocmVzdWx0LmlzVmFsaWRGb3JtKHdpZHRoKSk7CkBAIC01NjIsMTEgKzU2Miwx
NiBAQCBwcml2YXRlOgogICAgIAogICAgIEFyZ1Byb21pc2UgbG9hZFByb21pc2VBbnlPcGNvZGUo
VmFsdWUqIGxvYWRWYWx1ZSkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxvYWRWYWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOwogICAgICAgICBpZiAoIWNhbkJlSW50ZXJuYWwobG9hZFZh
bHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKICAgICAgICAgaWYgKGNyb3NzZXNJbnRl
cmZlcmVuY2UobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKLSAgICAgICAg
QXJnUHJvbWlzZSByZXN1bHQoYWRkcihsb2FkVmFsdWUpLCBsb2FkVmFsdWUpOworICAgICAgICBp
ZiAobG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAg
IHJldHVybiBBcmcoKTsKKyAgICAgICAgQXJnIGxvYWRBZGRyID0gYWRkcihsb2FkVmFsdWUpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkQWRkcik7CisgICAgICAgIEFyZ1Byb21pc2UgcmVz
dWx0KGxvYWRBZGRyLCBsb2FkVmFsdWUpOwogICAgICAgICBpZiAobG9hZFZhbHVlLT50cmFwcygp
KQogICAgICAgICAgICAgcmVzdWx0LnNldFRyYXBzKHRydWUpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtOTMxLDEwICs5MzYsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgQWlyOjpPcGNvZGUg
b3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZp
dHkgPSBOb3RDb21tdXRhdGl2ZT4KICAgICBib29sIHRyeUFwcGVuZFN0b3JlQmluT3AoVmFsdWUq
IGxlZnQsIFZhbHVlKiByaWdodCkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFs
dWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKKyAgICAgICAgCiAgICAgICAgIEFpcjo6T3Bjb2RlIG9w
Y29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBsZWZ0LT50eXBlKCkp
OwogICAgICAgICBpZiAob3Bjb2RlID09IEFpcjo6T29wcykKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+
aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAg
IEFyZyBzdG9yZUFkZHIgPSBhZGRyKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlQoc3RvcmVBZGRy
KTsKIApAQCAtMjE2Niw2ICsyMTc2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV92
YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAg
ICAgICBhcHBlbmRCaW5PcDxYb3IzMiwgWG9yNjQsIEFpcjo6T29wcywgQWlyOjpPb3BzLCBDb21t
dXRhdGl2ZT4oCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNo
aWxkKDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2Ug
U2hsOiB7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50MzIoMSkpIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHJldmlz
aW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsMzAgKzM0LDQzIEBAIE1lbW9yeVZhbHVlOjp+TWVtb3J5
VmFsdWUoKQogewogfQogCitUeXBlIE1lbW9yeVZhbHVlOjphY2Nlc3NUeXBlKCkgY29uc3QKK3sK
KyAgICBpZiAoaXNMb2FkKG9wY29kZSgpKSkKKyAgICAgICAgcmV0dXJuIHR5cGUoKTsKKyAgICAv
LyBUaGlzIGhhcHBlbnMgdG8gd29yayBmb3IgYXRvbWljcywgdG9vLiBUaGF0J3Mgd2h5IEF0b21p
Y1ZhbHVlIGRvZXMgbm90IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy4KKyAgICByZXR1cm4gY2hpbGQo
MCktPnR5cGUoKTsKK30KKwogc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNv
bnN0CiB7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkpOworfQorCitXaWR0aCBNZW1v
cnlWYWx1ZTo6bG9hZFN0b3JlV2lkdGgoKSBjb25zdAorewogICAgIHN3aXRjaCAob3Bjb2RlKCkp
IHsKICAgICBjYXNlIExvYWQ4WjoKICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIFN0b3JlODoK
LSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBXaWR0aDg7CiAgICAgY2FzZSBMb2Fk
MTZaOgogICAgIGNhc2UgTG9hZDE2UzoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIHJldHVy
biAyOworICAgICAgICByZXR1cm4gV2lkdGgxNjsKICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJl
dHVybiBzaXplb2ZUeXBlKHR5cGUoKSk7CisgICAgICAgIHJldHVybiB3aWR0aEZvclR5cGUodHlw
ZSgpKTsKICAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZShjaGlsZCgw
KS0+dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZShjaGlsZCgwKS0+dHlwZSgp
KTsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICB9CiB9CiAKIFdp
ZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdpZHRo
Rm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJuIGxvYWRTdG9yZVdpZHRoKCk7
CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02Nyw2ICs4MCw4IEBAIHZvaWQgTWVtb3J5VmFsdWU6
OmR1bXBNZXRhKENvbW1hUHJpbnRlciYKICAgICBpZiAoKGlzTG9hZCgpICYmIGVmZmVjdHMoKS5y
ZWFkcyAhPSByYW5nZSgpKQogICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVmZmVjdHMoKS53cml0
ZXMgIT0gcmFuZ2UoKSkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgInJhbmdlID0gIiwgcmFu
Z2UoKSk7CisgICAgaWYgKHBoYW50b21SYW5nZSgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEs
ICJwaGFudG9tUmFuZ2UgPSAiLCBwaGFudG9tUmFuZ2UoKSk7CiB9CiAKIFZhbHVlKiBNZW1vcnlW
YWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKQEAgLTc0LDYgKzg5LDU4IEBAIFZhbHVlKiBNZW1vcnlW
YWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKICAgICByZXR1cm4gbmV3IE1lbW9yeVZhbHVlKCp0aGlz
KTsKIH0KIAorLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4
Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAorLy8gZGVzY3Jp
YmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtp
bmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zm
c2V0ID0gMCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwg
cG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNB
QkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBM
b2FkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICBj
YXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExvYWQxNlM6
CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3RvcmUxNjoKKyAgICAgICAgY2Fz
ZSBTdG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hl
cmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUo
S2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQg
PSAwKQorICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zm
c2V0KQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2lu
ZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6
CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVz
LgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFs
dWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDogVmFs
dWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKKyAg
ICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBBU1NFUlQoaXNTdG9yZShraW5kLm9wY29kZSgp
KSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIz
X0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsNDMgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxvdyBmZW5jZWQgbWVtb3J5
IGFjY2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVtb3J5VmFsdWUgOiBwdWJs
aWMgVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQog
ICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgTG9h
ZDhaOgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAg
ICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgY2FzZSBTdG9yZTg6
Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNTdG9yZShLaW5kIGtpbmQp
Ci0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgY2FzZSBT
dG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNMb2FkKEtpbmQg
a2luZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQpICYmICFpc1N0b3JlKGtp
bmQpOworICAgICAgICByZXR1cm4gaXNNZW1vcnkoa2luZC5vcGNvZGUoKSk7CiAgICAgfQogCiAg
ICAgfk1lbW9yeVZhbHVlKCk7CkBAIC03OCw3NiArNDYsNTUgQEAgcHVibGljOgogCiAgICAgY29u
c3QgSGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2U7IH0KICAgICB2b2lk
IHNldFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9yYW5nZSA9IHJhbmdlOyB9Cisg
ICAgCisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgcmFuZ2UuCisgICAgY29uc3QgSGVhcFJh
bmdlJiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlKCk7IH0KKyAgICB2b2lkIHNl
dEFjY2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgc2V0UmFuZ2UocmFuZ2UpOyB9
CisgICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBmZW5jZVJhbmdlKCkgY29uc3QgeyByZXR1cm4g
bV9mZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRGZW5jZVJhbmdlKGNvbnN0IEhlYXBSYW5nZSYg
cmFuZ2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0KKworICAgIGJvb2wgaXNTdG9yZSgpIGNv
bnN0IHsgcmV0dXJuIGlzU3RvcmUob3Bjb2RlKCkpOyB9CisgICAgYm9vbCBpc0xvYWQoKSBjb25z
dCB7IHJldHVybiBpc0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAgICBib29sIGlzU3RvcmUoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gVm9pZDsgfQotICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpICE9IFZvaWQ7IH0KKyAgICBib29sIGhhc0ZlbmNlKCkgY29uc3QgeyByZXR1
cm4gISFmZW5jZVJhbmdlKCk7IH0KIAorICAgIFR5cGUgYWNjZXNzVHlwZSgpIGNvbnN0OwogICAg
IHNpemVfdCBhY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0OwotICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkg
Y29uc3Q7CisgICAgCisgICAgLy8gU2xpZ2h0bHkgZmFzdGVyIHZlcnNpb24gb2YgYWNjZXNzV2lk
dGgsIGlmIHlvdSBrbm93IHRoYXQgeW91J3JlIHdvcmtpbmcgd2l0aCBhIGxvYWQgb3Igc3RvcmUu
CisgICAgV2lkdGggbG9hZFN0b3JlV2lkdGgoKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIFdp
ZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRh
KENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0KLSAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBM
b2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2
ZSBhIHN1ZmZpeCB0aGF0Ci0gICAgLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KLSAg
ICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUq
IHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bj
b2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCisgICAgCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtp
bmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBpbnQzMl90IG9mZnNldCwgQXJndW1l
bnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0
eXBlLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0g
ICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQogICAgIHsKLSAgICAgICAgaWYgKCFB
U1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewot
ICAgICAgICAgICAgY2FzZSBMb2FkOgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgICAgIGNh
c2UgTG9hZDE2WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAgICAgICAgICBB
U1NFUlQodHlwZSA9PSBJbnQzMik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNh
c2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gVm9pZCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQorICAg
IAorICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMs
IG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3VmZml4IHRoYXQKKyAgICAvLyBkZXNj
cmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgorICAgIE1lbW9yeVZhbHVlKEtpbmQsIFR5cGUsIE9y
aWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CiAKICAgICAvLyBVc2Ug
dGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KLSAg
ICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBp
bnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9y
aWdpbiwgcG9pbnRlciwgb2Zmc2V0KQotICAgIHsKLSAgICB9CisgICAgTWVtb3J5VmFsdWUoS2lu
ZCwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKTsKIAogICAgIC8v
IFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9y
aWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0
ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBvcmlnaW4s
IHZhbHVlLCBwb2ludGVyKQotICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAgICAgLCBt
X3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCi0gICAgewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNB
QkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgICAg
ICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNh
c2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCisgICAgTWVtb3J5VmFsdWUo
S2luZCwgT3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNl
dCA9IDApOworICAgIAogICAgIGludDMyX3QgbV9vZmZzZXQgeyAwIH07Ci0gICAgSGVhcFJhbmdl
IG1fcmFuZ2U7CisgICAgSGVhcFJhbmdlIG1fcmFuZ2UgeyBIZWFwUmFuZ2U6OnRvcCgpIH07Cisg
ICAgSGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhlYXBSYW5nZSgpIH07CiB9OwogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNiBAQCBlbnVtIE9wY29kZSA6IGludDE2X3Qgewog
ICAgIE1vZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBhcyB0byB3aGF0IHdpbGwgaGFwcGVuIHdoZW4g
eW91IGV4ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEgYW5kIHglMC4KICAgICBVTW9kLAogCi0KICAg
ICAvLyBQb2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90ZSB0aGF0IHdlIG9ubHkgbmVlZCB0aGlzIGZv
ciBmbG9hdGluZyBwb2ludCwgc2luY2UgaW50ZWdlciBuZWdhdGlvbgogICAgIC8vIGlzIGV4YWN0
bHkgbGlrZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mgbm90IHRydWUgZm9yIGZsb2F0aW5nIHBvaW50
LiBTdWIoMCwgMCkgaXMgMCwgd2hpbGUKICAgICAvLyBOZWcoMCkgaXMgLTAuIEFsc28sIHdlIGNh
bm9uaWNhbGl6ZSBTdWIoMCwgeCkgaW50byBOZWcoeCkgaW4gY2FzZSBvZiBpbnRlZ2Vycy4KQEAg
LTE2Miw2ICsxNjEsOTkgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBTdG9yZTE2LAog
ICAgIC8vIFRoaXMgaXMgYSBwb2x5bW9ycGhpYyBzdG9yZSBmb3IgSW50MzIsIEludDY0LCBGbG9h
dCwgYW5kIERvdWJsZS4KICAgICBTdG9yZSwKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBh
bmQgc3dhcCB0aGF0IHJldHVybnMgYSBib29sZWFuLiBNYXkgY2hvb3NlIHRvIGRvIG5vdGhpbmcg
YW5kIHJldHVybiBmYWxzZS4gWW91IGNhbgorICAgIC8vIHVzdWFsbHkgYXNzdW1lIHRoYXQgdGhp
cyBpcyBmYXN0ZXIgYW5kIHJlc3VsdHMgaW4gbGVzcyBjb2RlIHRoYW4gQXRvbWljU3Ryb25nQ0FT
LCB0aG91Z2ggdGhhdCdzCisgICAgLy8gbm90IG5lY2Vzc2FyaWx5IHRydWUgb24gSW50ZWwsIGlm
IGluc3RydWN0aW9uIHNlbGVjdGlvbiBkb2VzIGl0cyBqb2IuIEltYWdpbmUgdGhhdCB0aGlzIG9w
Y29kZSBpcworICAgIC8vIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisg
ICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBib29sIEF0b21pY1dlYWtDQVMoVCBl
eHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBUKiBwdHIpCisgICAgLy8geworICAgIC8vICAgICBp
ZiAoIXJhbmQoKSkKKyAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gUmVhbCB3b3JsZCBl
eGFtcGxlIG9mIHRoaXM6IGNvbnRleHQgc3dpdGNoIG9uIEFSTSB3aGlsZSBkb2luZyBDQVMuCisg
ICAgLy8gICAgIGlmICgqcHRyICE9IGV4cGVjdGVkVmFsdWUpCisgICAgLy8gICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgLy8gICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJu
IHRydWU7CisgICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IGFsbCBhdG9taWNzIHB1
dCB0aGUgcG9pbnRlciBsYXN0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cgbG9hZHMgYW5kIHN0
b3JlcyB3b3JrLiBUaGlzCisgICAgLy8gaXMgYSBnb29meSB0cmFkaXRpb24sIGJ1dCBpdCdzIGhh
cm1sZXNzLCBhbmQgYmV0dGVyIHRoYW4gYmVpbmcgaW5jb25zaXN0ZW50LgorICAgIC8vCisgICAg
Ly8gTm90ZSB0aGF0IHdlYWsgQ0FTIGhhcyBubyBmZW5jaW5nIGd1YXJhbnRlZXMgd2hlbiBpdCBm
YWlscy4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcKKyAgICAvLyB0cmFuc2Zvcm1hdGlv
biBpcyBhbHdheXMgdmFsaWQ6CisgICAgLy8KKyAgICAvLyBCZWZvcmU6CisgICAgLy8KKyAgICAv
LyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FTKGV4cGVjdGVkLCBuZXcsIHB0cikpCisgICAg
Ly8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3VjY2VzcywgRWxzZTojZmFpbAorICAgIC8vCisg
ICAgLy8gQWZ0ZXI6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5jaChFcXVhbChMb2FkKHB0
ciksIGV4cGVjdGVkKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNhdHRlbXB0LCBF
bHNlOiNmYWlsCisgICAgLy8gICAgIEJCI2F0dGVtcHQ6CisgICAgLy8gICAgICAgICBCcmFuY2go
QXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3Nv
cnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICBBdG9taWNXZWFrQ0FTLAorICAgIAor
ICAgIC8vIEF0b21pYyBjb21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyB0aGUgb2xkIHZhbHVl
LiBEb2VzIG5vdCBoYXZlIHRoZSBub25kZXRlcm1pbmlzbSBvZiBXZWFrQ0FTLgorICAgIC8vIFRo
aXMgaXMgYSBiaXQgbW9yZSBjb2RlIGFuZCBhIGJpdCBzbG93ZXIgaW4gc29tZSBjYXNlcywgdGhv
dWdoIG5vdCBieSBhIGxvdC4gSW1hZ2luZSB0aGF0IHRoaXMKKyAgICAvLyBvcGNvZGUgaXMgYXMg
aWYgeW91IGRpZCB0aGlzIGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIC8vIFQgQXRvbWljU3Ryb25nQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdW
YWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgVCBvbGRWYWx1ZSA9ICpwdHI7Cisg
ICAgLy8gICAgIGlmIChvbGRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAg
KnB0ciA9IG5ld1ZhbHVlOworICAgIC8vICAgICByZXR1cm4gb2xkVmFsdWUKKyAgICAvLyB9Cisg
ICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgQXRvbWljV2Vha0NBUyBhbmQgQXRvbWljU3Ryb25nQ0FT
IHNvcnQgb2YgaGF2ZSB0aGlzIGtpbmQgb2YgZXF1aXZhbGVuY2U6CisgICAgLy8KKyAgICAvLyBB
dG9taWNXZWFrQ0FTKEBleHAsIEBuZXcsIEBwdHIpID09IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhA
ZXhwLCBAbmV3LCBAcHRyKSwgQGV4cCkKKyAgICAvLworICAgIC8vIEFzc3VtaW5nIHRoYXQgdGhl
IFdlYWtDQVMgZG9lcyBub3Qgc3B1cmlvdXNseSBmYWlsLCBvZiBjb3Vyc2UuCisgICAgQXRvbWlj
U3Ryb25nQ0FTLAorICAgIAorICAgIC8vIEF0b21pY2FsbHkgX19fIGEgbWVtb3J5IGxvY2F0aW9u
IGFuZCByZXR1cm4gdGhlIG9sZCB2YWx1ZS4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZh
bHVlID0gQXRvbWljWGNoZ19fXyhAb3BlcmFuZCwgQHB0cikKKyAgICBBdG9taWNYY2hnQWRkLAor
ICAgIEF0b21pY1hjaGdBbmQsCisgICAgQXRvbWljWGNoZ09yLAorICAgIEF0b21pY1hjaGdTdWIs
CisgICAgQXRvbWljWGNoZ1hvciwKKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IGV4Y2hhbmdlIGEg
dmFsdWUgd2l0aCBhIG1lbW9yeSBsb2NhdGlvbi4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9s
ZFZhbHVlID0gQXRvbWljWGNoZyhAbmV3VmFsdWUsIEBwdHIpCisgICAgQXRvbWljWGNoZywKKyAg
ICAKKyAgICAvLyBJbnRyb2R1Y2UgYW4gaW52aXNpYmxlIGRlcGVuZGVuY3kgZm9yIGJsb2NraW5n
IG1vdGlvbiBvZiBsb2FkcyB3aXRoIHJlc3BlY3QgdG8gZWFjaCBvdGhlci4gU3ludGF4OgorICAg
IC8vCisgICAgLy8gQHJlc3VsdCA9IERlcGVuZChAcGhhbnRvbSkKKyAgICAvLworICAgIC8vIFRo
aXMgaXMgZXZlbnR1YWxseSBjb2RlZ2VuZXJhdGVkIHRvIGhhdmUgbG9jYWwgc2VtYW50aWNzIGFz
IGlmIHdlIGRpZDoKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSAkMAorICAgIC8vCisgICAgLy8g
QnV0IGl0IGVuc3VyZXMgdGhhdCB0aGUgdXNlcnMgb2YgQHJlc3VsdCBjYW5ub3QgZXhlY3V0ZSB1
bnRpbCBAcGhhbnRvbSBpcyBjb21wdXRlZC4KKyAgICAvLworICAgIC8vIFRoZSBjb21waWxlciBp
cyBub3QgYWxsb3dlZCB0byByZWFzb24gYWJvdXQgdGhlIGZhY3QgdGhhdCBEZXBlbmQgY29kZWdl
bmVyYXRlcyB0aGlzIHdheS4gQW55IGtpbmQKKyAgICAvLyBvZiB0cmFuc2Zvcm1hdGlvbiBvciBh
bmFseXNpcyB0aGF0IHJlbGllcyBvbiB0aGUgaW5zaWdodCB0aGF0IERlcGVuZCBpcyByZWFsbHkg
emVybyBpcyB1bnNvdW5kLAorICAgIC8vIGJlY2F1c2UgaXQgdW5sb2NrcyByZW9yZGVyaW5nIG9m
IHVzZXJzIG9mIEByZXN1bHQgYW5kIEBwaGFudG9tLgorICAgIC8vCisgICAgLy8gT24gWDg2LCB0
aGlzIGlzIGxvd2VyZWQgdG8gYSBsb2FkLWxvYWQgZmVuY2UgYW5kIEByZXN1bHQgdXNlcyBAcGhh
bnRvbSBkaXJlY3RseS4KKyAgICAvLworICAgIC8vIE9uIEFSTSwgdGhpcyBpcyBsb3dlcmVkIGFz
IGlmIGxpa2U6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gQml0WG9yKEBwaGFudG9tLCBAcGhh
bnRvbSkKKyAgICAvLworICAgIC8vIEV4Y2VwdCB0aGF0IHRoZSBjb21waWxlciBuZXZlciBnZXRz
IGFuIG9wcG9ydHVuaXR5IHRvIHNpbXBsaWZ5IG91dCB0aGUgQml0WG9yLgorICAgIERlcGVuZCwK
IAogICAgIC8vIFRoaXMgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBhY3R1YWwgYWRkcmVzcyBvZiBh
IFdhc20gbWVtb3J5IG9wZXJhdGlvbi4gSXQgdGFrZXMgYW4gSW50UHRyCiAgICAgLy8gYW5kIGEg
cGlubmVkIHJlZ2lzdGVyIHRoZW4gY29tcHV0ZXMgdGhlIGFwcHJvcHJpYXRlIEludFB0ciBhZGRy
ZXNzLiBGb3IgdGhlIHVzZS1jYXNlIG9mCkBAIC0zMDEsNiArMzkzLDcxIEBAIGlubGluZSBib29s
IGlzRGVmaW5pdGVseVRlcm1pbmFsKE9wY29kZSAKICAgICB9CiB9CiAKK2lubGluZSBib29sIGlz
TG9hZChPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBM
b2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9h
ZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzU3RvcmUo
T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgU3RvcmU4
OgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxp
bmUgYm9vbCBpc0xvYWRTdG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2Rl
KSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZa
OgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBTdG9yZTg6Cisg
ICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBi
b29sIGlzQXRvbWljKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAg
ICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2Fz
ZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21p
Y1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9y
OgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNNZW1v
cnlBY2Nlc3MoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICByZXR1cm4gaXNBdG9taWMob3Bjb2RlKSB8
fCBpc0xvYWRTdG9yZShvcGNvZGUpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAog
bmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUu
aAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2Vk
dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgVmFs
dWUqIGFkZEludENvbnN0YW50KE9yaWdpbiwgVHlwZSwgaW50NjRfdCB2YWx1ZSk7CiAgICAgVmFs
dWUqIGFkZEludENvbnN0YW50KFZhbHVlKiwgaW50NjRfdCB2YWx1ZSk7CiAKKyAgICAvLyBZb3Un
cmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIFZhbHVlKiBhZGRCb3R0b20o
T3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogYWRkQm90dG9tKFZhbHVlKik7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcxLDYgKzM3MSw0NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIHZh
bGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1
ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9
PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkg
PT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxp
ZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2
YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0
cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxs
KCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51
bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUt
PmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7
CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAg
ICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAg
ICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNo
Z1hvcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5j
aGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOwor
ICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAgICAgICAgVkFM
SURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAg
ICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9
PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYgKzU3NywxMyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0
ZUF0b21pYyhWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWlj
ID0gdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAKKyAgICAgICAgVkFMSURBVEUo
YmVzdFR5cGUoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSA9PSBhdG9taWMtPm9wZXJhdGlvblR5
cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICB9CiAKICAgICB2b2lkIHZhbGlkYXRlU3RhY2tB
Y2Nlc3MoVmFsdWUqIHZhbHVlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg5LDYgKzU4OSw3IEBAIEVmZmVjdHMgVmFs
dWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFs
T3JVbm9yZGVyZWQ6CiAgICAgY2FzZSBTZWxlY3Q6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTYwMCwxNiArNjAxLDQ0
IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgTG9hZDhTOgogICAg
IGNhc2UgTG9hZDE2WjoKICAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBMb2FkOgotICAgICAg
ICByZXN1bHQucmVhZHMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIExv
YWQ6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOwor
ICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1v
cnktPnBoYW50b21SYW5nZSgpKSB7CisgICAgICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5
LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAg
ICAgIH0KICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgY2FzZSBTdG9yZTg6CiAgICAgY2FzZSBTdG9yZTE2OgotICAgIGNh
c2UgU3RvcmU6Ci0gICAgICAgIHJlc3VsdC53cml0ZXMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFu
Z2UoKTsKKyAgICBjYXNlIFN0b3JlOiB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBh
czxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2Uo
KTsKKyAgICAgICAgaWYgKG1lbW9yeS0+cGhhbnRvbVJhbmdlKCkpIHsKKyAgICAgICAgICAgIHJl
c3VsdC5yZWFkcyA9IG1lbW9yeS0+cGhhbnRvbVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQu
ZmVuY2UgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50
ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoK
KyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAg
Y2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRv
bWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hn
OiB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAg
ICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5yYW5nZSgpIHwgbWVtb3J5LT5waGFudG9tUmFu
Z2UoKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2UoKSB8IG1lbW9ydHkt
PnBoYW50b21SYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5waGFudG9tUmFuZ2UoKSkKKyAg
ICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVw
ZW5kZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgV2FzbUFkZHJl
c3M6CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpA
QCAtNjE3LDE4ICs2NDYsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICAg
ICAgY29uc3QgRmVuY2VWYWx1ZSogZmVuY2UgPSBhczxGZW5jZVZhbHVlPigpOwogICAgICAgICBy
ZXN1bHQucmVhZHMgPSBmZW5jZS0+cmVhZDsKICAgICAgICAgcmVzdWx0LndyaXRlcyA9IGZlbmNl
LT53cml0ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIFByZXZlbnQga2lsbGluZyBvZiBmZW5jZXMg
dGhhdCBjbGFpbSBub3QgdG8gd3JpdGUgYW55dGhpbmcuIEl0J3MgYSBiaXQgd2VpcmQgdGhhdCB3
ZSB1c2UKLSAgICAgICAgLy8gbG9jYWwgc3RhdGUgYXMgdGhlIHdheSB0byBkbyB0aGlzLCBidXQg
aXQgaGFwcGVucyB0byB3b3JrOiB3ZSBtdXN0IGFzc3VtZSB0aGF0IHdlIGNhbm5vdAotICAgICAg
ICAvLyBraWxsIHdyaXRlc0xvY2FsU3RhdGUgdW5sZXNzIHdlIHVuZGVyc3RhbmRzIGV4YWN0bHkg
d2hhdCB0aGUgaW5zdHJ1Y3Rpb24gaXMgZG9pbmcgKGxpa2UKLSAgICAgICAgLy8gdGhlIHdheSB0
aGF0IGZpeFNTQSB1bmRlcnN0YW5kcyBTZXQvR2V0IGFuZCB0aGUgd2F5IHRoYXQgcmVkdWNlU3Ry
ZW5ndGggYW5kIG90aGVycwotICAgICAgICAvLyB1bmRlcnN0YW5kIFVwc2lsb24pLiBUaGlzIHdv
dWxkIG9ubHkgYmVjb21lIGEgcHJvYmxlbSBpZiB3ZSBoYWQgc29tZSBhbmFseXNpcyB0aGF0IHdh
cwotICAgICAgICAvLyBsb29raW5nIHRvIHVzZSB0aGUgd3JpdGVzTG9jYWxTdGF0ZSBiaXQgdG8g
aW52YWxpZGF0ZSBhIENTRSBvdmVyIGxvY2FsIHN0YXRlIG9wZXJhdGlvbnMuCi0gICAgICAgIC8v
IFRoZW4gYSBGZW5jZSB3b3VsZCBsb29rIGJsb2NrLCBzYXksIHRoZSBlbGltaW5hdGlvbiBvZiBh
IHJlZHVuZGFudCBHZXQuIEJ1dCBpdCBsaWtlCi0gICAgICAgIC8vIHRoYXQncyBub3QgYXQgYWxs
IGhvdyBvdXIgb3B0aW1pemF0aW9ucyBmb3IgU2V0L0dldC9VcHNpbG9uL1BoaSB3b3JrIC0gdGhl
eSBncm9rIHRoZWlyCi0gICAgICAgIC8vIG9wZXJhdGlvbnMgZGVlcGx5IGVub3VnaCB0aGF0IHRo
ZXkgaGF2ZSBubyBuZWVkIHRvIGNoZWNrIHRoaXMgYml0IC0gc28gdGhpcyBjaGVhdCBpcwotICAg
ICAgICAvLyBmaW5lLgotICAgICAgICByZXN1bHQud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7Cisg
ICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIENDYWxsOgpAQCAtNjk0LDYgKzcxMiw3IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25z
dAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICBjYXNlIE5lZzoK
KyAgICBjYXNlIERlcGVuZDoKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgp
LCBjaGlsZCgwKSk7CiAgICAgY2FzZSBBZGQ6CiAgICAgY2FzZSBTdWI6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsOCBAQCBw
dWJsaWM6CiAgICAgLy8gdmFsdWVzIHdpdGggSWRlbnRpdGllcyBvbiBib3R0b20gY29uc3RhbnRz
LiBGb3IgdGhpcyByZWFzb24sIHRoaXMgdGFrZXMgYSBjYWxsYmFjayB0aGF0IGlzCiAgICAgLy8g
cmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGJvdHRvbXMuIFRoZXJlJ3MgYSB1dGlsaXR5IGZvciB0
aGlzLCBzZWUgQjNCb3R0b21Qcm92aWRlci5oLiBZb3UKICAgICAvLyBjYW4gYWxzbyBhY2Nlc3Mg
dGhhdCB1dGlsaXR5IHVzaW5nIHJlcGxhY2VXaXRoQm90dG9tKEluc2VydGlvblNldCYsIHNpemVf
dCkuCisgICAgLy8KKyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJv
LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJvdHRvbVByb3ZpZGVyPgogICAgIHZvaWQgcmVwbGFj
ZVdpdGhCb3R0b20oY29uc3QgQm90dG9tUHJvdmlkZXImKTsKICAgICAKQEAgLTMyMSw2ICszMjMs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElUb0Y6CiAgICAgICAgIGNhc2UgQml0d2lzZUNh
c3Q6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIERlcGVuZDoKICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9IDEpKQogICAgICAgICAgICAgICAgIGJhZEtpbmQo
a2luZCwgbnVtQXJncyk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1dpZHRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNXaWR0aC5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1dpZHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMzggQEAKIAog
I2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKKworVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKQoreworICAgIHN3
aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICBjYXNlIFdpZHRoMTY6CisgICAg
Y2FzZSBXaWR0aDMyOgorICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoK
KyAgICAgICAgICAgIHJldHVybiBJbnQzMjsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAg
IHJldHVybiBGbG9hdDsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAg
IHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIElu
dDY0OworICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIERvdWJsZTsKKyAgICAg
ICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gVm9pZDsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gVm9pZDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKIG5hbWVzcGFjZSBX
VEYgewogCiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6V2lk
dGggd2lkdGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYyLDYgKzYyLDggQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yVHlwZShUeXBlIHR5cGUp
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK1R5cGUgYmVzdFR5cGUoQmFuayBiYW5r
LCBXaWR0aCB3aWR0aCk7CisKIGlubGluZSBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0aChCYW5rIGJh
bmspCiB7CiAgICAgcmV0dXJuIGJhbmsgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6IFdpZHRoNjQ7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29k
ZXMJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
T3Bjb2RlLm9wY29kZXMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NjgsMjggKzY2OCwzNDEgQEAgTG9hZDggVTpHOjgs
IFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3E4IFU6Rzo4
LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBTdG9yZTggVTpHOjgs
IEQ6Rzo4CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgogICAgIHg4NjogSW1tLCBJbmRl
eAogICAgIHg4NjogSW1tLCBBZGRyCiAKK1N0b3JlUmVsOCBVOkc6OCwgRDpHOjgKKyAgICBUbXAs
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0s
IEFkZHIKKwogTG9hZDhTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwg
VG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpE
Okc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIExvYWQxNiBVOkc6MTYsIFpE
Okc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3ExNiBVOkc6MTYs
IFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIExvYWQxNlNpZ25lZEV4
dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAog
CitMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgorICAgIEFkZHIsIFRt
cAorICAgIEluZGV4LCBUbXAKKwogU3RvcmUxNiBVOkc6MTYsIEQ6RzoxNgogICAgIFRtcCwgSW5k
ZXgKICAgICBUbXAsIEFkZHIKIAorU3RvcmVBY3ExNiBVOkc6MTYsIEQ6RzoxNgorICAgIFRtcCwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKworTG9hZEFjcTMyIFU6RzozMiBaRDpHOjMyCisgICAgVG1w
LCBUbXAKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK1N0b3JlUmVsMzIgVTpHOjMy
IFpEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFk
ZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKworNjQ6IExvYWRBY3E2NCBVOkc6NjQgWkQ6Rzo2NAor
ICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCis2NDogU3RvcmVS
ZWw2NCBVOkc6NjQgWkQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4
ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorCisjIFRoZSBmaXJzdCBvcGVyYW5k
IGlzIHJheC4KK3g4NjogTG9ja0NtcFhjaGc4IFVEOkc6OCBVRDpHOjggVTpHOjgKKyAgICBUbXAq
LCBBZGRyLCBUbXAKKyAgICBUbXAqLCBJbmRleCwgVG1wCisKK3g4NjogTG9ja0NtcFhjaGcxNiBV
RDpHOjE2IFVEOkc6MTYgVTpHOjMyCisgICAgVG1wKiwgQWRkciwgVG1wCisgICAgVG1wKiwgSW5k
ZXgsIFRtcAorCit4ODY6IExvY2tDbXBYY2hnMzIgVUQ6RzozMiBVRDpHOjMyIFU6RzozMgorICAg
IFRtcCosIEFkZHIsIFRtcAorICAgIFRtcCosIEluZGV4LCBUbXAKKworeDg2XzY0OiBMb2NrQ21w
WGNoZzY0IFVEOkc6NjQgVUQ6Rzo2NCBVOkc6NjQKKyAgICBUbXAqLCBBZGRyLCBUbXAKKyAgICBU
bXAqLCBJbmRleCwgVG1wCisKK3g4NjogTG9ja0FkZDggVTpHOjggVUQ6Rzo4CisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBMb2NrQWRkMTYgVTpHOjE2IFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tBZGQzMiBVOkc6MzIg
VUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9ja0FkZDY0IFU6Rzo2NCBVRDpHOjY0CisgICAgSW1t
LCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwor
eDg2OiBMb2NrU3ViOCBVOkc6OCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tTdWIxNiBVOkc6MTYg
VUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1N1YjMyIFU6RzozMiBVRDpHOjMyCisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
XzY0OiBMb2NrU3ViNjQgVTpHOjY0IFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tBbmQ4IFU6Rzo4
IFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogTG9ja0FuZDE2IFU6RzoxNiBVRDpHOjE2CisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBMb2NrQW5kMzIgVTpHOjMyIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IExvY2tBbmQ2NCBVOkc6
NjQgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja09yOCBVOkc6OCBVRDpHOjgKKyAgICBJbW0sIEFk
ZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IExvY2tPcjE2IFU6RzoxNiBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAor
ICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrT3IzMiBVOkc6MzIgVUQ6
RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4Nl82NDogTG9ja09yNjQgVTpHOjY0IFVEOkc6NjQKKyAgICBJbW0sIEFk
ZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IExvY2tYb3I4IFU6Rzo4IFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hvcjE2IFU6RzoxNiBVRDpH
OjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2OiBMb2NrWG9yMzIgVTpHOjMyIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIK
KyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6
IExvY2tYb3I2NCBVOkc6NjQgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja05lZzggVUQ6Rzo4Cisg
ICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogTG9ja05lZzE2IFVEOkc6MTYKKyAgICBBZGRyCisg
ICAgSW5kZXgKKworeDg2OiBMb2NrTmVnMzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAor
Cit4ODZfNjQ6IExvY2tOZWc2NCBVRDpHOjY0CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Njog
TG9ja05vdDggVUQ6Rzo4CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogTG9ja05vdDE2IFVE
Okc6MTYKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBMb2NrTm90MzIgVUQ6RzozMgorICAg
IEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IExvY2tOb3Q2NCBVRDpHOjY0CisgICAgQWRkcgor
ICAgIEluZGV4CisKK3g4NjogTG9ja1hBZGQ4IFVEOkc6OCBVRDpHOjgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hBZGQxNiBVRDpHOjE2IFVEOkc6MTYKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hBZGQzMiBVRDpHOjMyIFVEOkc6
MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9ja1hBZGQ2NCBV
RDpHOjY0IFVEOkc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9j
a1hjaGc4IFVEOkc6OCBVRDpHOjgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogTG9ja1hjaGcxNiBVRDpHOjE2IFVEOkc6MTYKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisKK3g4NjogTG9ja1hjaGczMiBVRDpHOjMyIFVEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9ja1hjaGc2NCBVRDpHOjY0IFVEOkc6NjQKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK2FybTY0OiBMb2FkTGluazggVTpHOjggWkQ6Rzo4
CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmtBY3E4IFU6
Rzo4IFpEOkc6OAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3Jl
Q29uZDggVTpHOjggRDpHOjggWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIElu
ZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDggVTpHOjggRDpHOjggWkQ6Rzo4CisgICAg
VG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rMTYg
VTpHOjE2IFpEOkc6MTYKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBM
b2FkTGlua0FjcTE2IFU6RzoxNiBaRDpHOjE2CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRt
cAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2IEQ6RzoxNiBaRDpHOjgKKyAgICBUbXAsIEFk
ZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMTYgVTpH
OjE2IEQ6RzoxNiBaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRt
cAorCithcm02NDogTG9hZExpbmszMiBVOkc6MzIgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAg
IEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMzIgVTpHOjMyIFpEOkc6MzIKKyAgICBB
ZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQzMiBVOkc6MzIgRDpH
OjMyIFpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2Fy
bTY0OiBTdG9yZUNvbmRSZWwzMiBVOkc6MzIgRDpHOjMyIFpEOkc6OAorICAgIFRtcCwgQWRkciwg
VG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGluazY0IFU6Rzo2NCBaRDpH
OjY0CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmtBY3E2
NCBVOkc6NjQgWkQ6Rzo2NAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6
IFN0b3JlQ29uZDY0IFU6Rzo2NCBEOkc6NjQgWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAg
ICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDY0IFU6Rzo2NCBEOkc6NjQg
WkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKwogQ29tcGFy
ZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRt
cCwgVG1wCiAgICAgUmVsQ29uZCwgVG1wLCBJbW0sIFRtcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302761</attachid>
            <date>2017-02-25 12:01:08 -0800</date>
            <delta_ts>2017-02-25 14:20:45 -0800</delta_ts>
            <desc>added isel for fences</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>52314</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNBdG9t
aWNWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7CisKK0F0b21pY1ZhbHVlOjp+QXRvbWljVmFsdWUoKQoreworfQorCitXaWR0aCBB
dG9taWNWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3dpZHRoOwor
fQorCit2b2lkIEF0b21pY1ZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChjb21tYSwgIndpZHRoID0gIiwg
bV93aWR0aCk7CisgICAgCisgICAgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKGNvbW1hLCBvdXQpOwor
fQorCitWYWx1ZSogQXRvbWljVmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG5ldyBBdG9taWNWYWx1ZSgqdGhpcyk7Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShL
aW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFs
dWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNr
ZWRPcGNvZGUsIGtpbmQsIG9wZXJhbmQtPnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIG9wZXJhbmQs
IHBvaW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVh
cFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKG9wZXJhdGlvbldpZHRo
KCkpID09IG9wZXJhdGlvblR5cGUoKSk7CisgICAgCisgICAgc3dpdGNoIChraW5kLm9wY29kZSgp
KSB7CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAg
ICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBB
dG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitBdG9t
aWNWYWx1ZTo6QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0
aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIs
IGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtp
bmQsIGtpbmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRWYWx1
ZS0+dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUsIHBvaW50
ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVhcFJhbmdl
Ojp0b3AoKSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKG9wZXJhdGlvbldpZHRoKCkpID09
IG9wZXJhdGlvblR5cGUoKSk7CisKKyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBj
YXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklU
KQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisj
aW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEF0b21p
Y1ZhbHVlIDogcHVibGljIE1lbW9yeVZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBh
Y2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0F0b21pYyhraW5kLm9w
Y29kZSgpKTsKKyAgICB9CisgICAgCisgICAgfkF0b21pY1ZhbHVlKCk7CisgICAgCisgICAgVHlw
ZSBvcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gY2hpbGQoMCktPnR5cGUoKTsgfQorICAg
IAorICAgIFdpZHRoIG9wZXJhdGlvbldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQor
ICAgIAorICAgIC8vIFN5bm9ueW0gZm9yIHdpZHRoKCksIGlmIHlvdSdyZSBhY2Nlc3Npbmcgdmlh
IE1lbW9yeVZhbHVlLgorICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIAorICAgIFZhbHVlKiBjbG9uZUltcGwoKSBjb25z
dCBvdmVycmlkZTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsK
KyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBWYWx1ZSogb3BlcmFu
ZCwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCisgICAgQXRvbWlj
VmFsdWUoS2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBu
ZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCisgICAg
V2lkdGggbV93aWR0aDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYg
Ly8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZm
ZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Vm
ZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6
aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAgICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0
ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIu
d3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIucmVhZHMpCi0gICAgICAg
IHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7CisgICAgICAgIHx8IHJlYWRzLm92ZXJs
YXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZlbmNlICYmIG90aGVyLmZlbmNlKTsKIH0K
IAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApA
QCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYg
CiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhlci53cml0ZXNQaW5uZWQKICAgICAgICAg
JiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5uZWQKICAgICAgICAgJiYgd3JpdGVzID09
IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkczsKKyAgICAgICAg
JiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7
CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29u
c3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVjdHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlc1Bpbm5lZCIpOwogICAgIGlm
IChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsK
KyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkZlbmNlIik7CiAgICAg
aWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7
CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwxMCBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzE3MwogICAgIGJv
b2wgcmVhZHNQaW5uZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgd3JpdGVzUGlubmVkIHsgZmFsc2Ug
fTsKKyAgICAKKyAgICAvLyBNZW1vcnkgZmVuY2VzIGNhbm5vdCBiZSByZW9yZGVyZWQgYXJvdW5k
IGVhY2ggb3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBlZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQK
KyAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVtb3J5IGZlbmNlLgorICAgIGJvb2wgZmVu
Y2UgeyBmYWxzZSB9OwogCiAgICAgSGVhcFJhbmdlIHdyaXRlczsKICAgICBIZWFwUmFuZ2UgcmVh
ZHM7CkBAIC04OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZlY3RzIHsKICAgICAgICAgcmVzdWx0LnJl
YWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1
ZTsKICAgICAgICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIHJlc3VsdC5m
ZW5jZSA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMDMsNyAr
MTA4LDcgQEAgc3RydWN0IEVmZmVjdHMgewogCiAgICAgYm9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0
ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQ7CisgICAgICAgIHJldHVybiB0
ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8
IHdyaXRlc1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
cmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVzZSByZXNwZWN0aXZlIGVmZmVjdHMgd291
bGQgY2hhbmdlIHByb2dyYW0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1
YmV4cHJlc3Npb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDIsNiArMTQyLDcgQEAgc3RydWN0IElt
cHVyZUJsb2NrRGF0YSB7CiAKICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlz
IG9ubHkgZ2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0b3JlIGVsaW1pbmF0aW9uLgogICAgIFJhbmdl
U2V0PEhlYXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdldHMgdXNlZCBmb3IgYm90aCBsb2FkIGFu
ZCBzdG9yZSBlbGltaW5hdGlvbi4KKyAgICBib29sIGZlbmNlOwogCiAgICAgTWVtb3J5VmFsdWVN
YXAgc3RvcmVzQXRIZWFkOwogICAgIE1lbW9yeVZhbHVlTWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsK
QEAgLTE3NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNTdG9yZSgpCiAgICAgICAgICAgICAgICAg
ICAgICYmICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkKLSAgICAgICAgICAg
ICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkpCisgICAg
ICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkp
CisgICAgICAgICAgICAgICAgICAgICYmICghZGF0YS5mZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5j
ZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7
CiAgICAgICAgICAgICAgICAgZGF0YS5yZWFkcy5hZGQoZWZmZWN0cy5yZWFkcyk7CiAKICAgICAg
ICAgICAgICAgICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9IGVmZmVjdHMud3JpdGVzKQogICAgICAg
ICAgICAgICAgICAgICBjbG9iYmVyKGRhdGEsIHdyaXRlcyk7CisgICAgICAgICAgICAgICAgZGF0
YS5mZW5jZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeSkK
ICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7
CkBAIC00NzgsNiArNDgxLDkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0
ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVBZnRlckNsb2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdl
IHJhbmdlLCBjb25zdCBGaWx0ZXImIGZpbHRlcikKICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVl
LT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVy
eSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0b3JlIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQog
ICAgICAgICAvLyBoaXR0aW5nIGFueSBvcGVyYXRpb24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUu
IFRoaXMgc2VhcmNoIHNlZW1zIGxpa2UgaXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2
ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1v
c3QgaW1tZWRpYXRlbHkgaGl0IGFuIApAQCAtNjE0LDYgKzYyMCwxMiBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tp
bmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIpOwogICAgICAgICAKKyAgICAgICAgaWYg
KG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1
c2UgZmVuY2VzLlxuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgCiAgICAgICAgIGlmIChNZW1vcnlWYWx1ZSogbWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFs
dWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHku
XG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCShyZXZpc2lv
biAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtODgsNiArODgsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAorICAgIEhlYXBSYW5nZSBvcGVyYXRvcnwoY29u
c3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBIZWFwUmFu
Z2UoCisgICAgICAgICAgICBzdGQ6Om1pbihtX2JlZ2luLCBvdGhlci5tX2JlZ2luKSwKKyAgICAg
ICAgICAgIHN0ZDo6bWF4KG1fZW5kLCBvdGhlci5tX2VuZCkpOworICAgIH0KKyAgICAKICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsg
fQogCiAgICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xODUsNiArMTg1LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAg
ICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEg
bG9hZC1sb2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2Ug
aXQgdG8gdGVsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJs
b2NrIGxvYWQgbW90aW9uLgorICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7Cisg
ICAgICAgICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNo
b3VsZCB1bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAg
ICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoQm90dG9tKG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4
KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MzgsNyArNTM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJl
dHVybiBBcmcoKTsKIAogICAgICAgICBpbnQzMl90IG9mZnNldCA9IHZhbHVlLT5vZmZzZXQoKTsK
LSAgICAgICAgV2lkdGggd2lkdGggPSB2YWx1ZS0+YWNjZXNzV2lkdGgoKTsKKyAgICAgICAgV2lk
dGggd2lkdGggPSB2YWx1ZS0+bG9hZFN0b3JlV2lkdGgoKTsKIAogICAgICAgICBBcmcgcmVzdWx0
ID0gZWZmZWN0aXZlQWRkcih2YWx1ZS0+bGFzdENoaWxkKCksIG9mZnNldCwgd2lkdGgpOwogICAg
ICAgICBBU1NFUlQocmVzdWx0LmlzVmFsaWRGb3JtKHdpZHRoKSk7CkBAIC01NjIsMTEgKzU2Miwx
NiBAQCBwcml2YXRlOgogICAgIAogICAgIEFyZ1Byb21pc2UgbG9hZFByb21pc2VBbnlPcGNvZGUo
VmFsdWUqIGxvYWRWYWx1ZSkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxvYWRWYWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOwogICAgICAgICBpZiAoIWNhbkJlSW50ZXJuYWwobG9hZFZh
bHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKICAgICAgICAgaWYgKGNyb3NzZXNJbnRl
cmZlcmVuY2UobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKLSAgICAgICAg
QXJnUHJvbWlzZSByZXN1bHQoYWRkcihsb2FkVmFsdWUpLCBsb2FkVmFsdWUpOworICAgICAgICBp
ZiAobG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAg
IHJldHVybiBBcmcoKTsKKyAgICAgICAgQXJnIGxvYWRBZGRyID0gYWRkcihsb2FkVmFsdWUpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkQWRkcik7CisgICAgICAgIEFyZ1Byb21pc2UgcmVz
dWx0KGxvYWRBZGRyLCBsb2FkVmFsdWUpOwogICAgICAgICBpZiAobG9hZFZhbHVlLT50cmFwcygp
KQogICAgICAgICAgICAgcmVzdWx0LnNldFRyYXBzKHRydWUpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtOTMxLDEwICs5MzYsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgQWlyOjpPcGNvZGUg
b3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZp
dHkgPSBOb3RDb21tdXRhdGl2ZT4KICAgICBib29sIHRyeUFwcGVuZFN0b3JlQmluT3AoVmFsdWUq
IGxlZnQsIFZhbHVlKiByaWdodCkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFs
dWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKKyAgICAgICAgCiAgICAgICAgIEFpcjo6T3Bjb2RlIG9w
Y29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBsZWZ0LT50eXBlKCkp
OwogICAgICAgICBpZiAob3Bjb2RlID09IEFpcjo6T29wcykKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+
aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAg
IEFyZyBzdG9yZUFkZHIgPSBhZGRyKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlQoc3RvcmVBZGRy
KTsKIApAQCAtOTk0LDEwICsxMDA0LDQ4IEBAIHByaXZhdGU6CiAKICAgICAgICAgcmV0dXJuIElu
c3QobW92ZSwgbV92YWx1ZSwgdG1wKHZhbHVlKSwgZGVzdCk7CiAgICAgfQorICAgIAorICAgIEFp
cjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFdpZHRoIHdpZHRoLCBCYW5rIGJhbmssIGJvb2wgcmVsZWFz
ZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICAgICAgY2FzZSBXaWR0aDg6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAgICAgICAgICAgIHJl
dHVybiByZWxlYXNlID8gU3RvcmVSZWw4IDogU3RvcmU4OworICAgICAgICBjYXNlIFdpZHRoMTY6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAgICAgICAgICAgIHJl
dHVybiByZWxlYXNlID8gU3RvcmVSZWwxNiA6IFN0b3JlMTY7CisgICAgICAgIGNhc2UgV2lkdGgz
MjoKKyAgICAgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBHUDoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMzIgOiBNb3ZlMzI7CisgICAg
ICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxlYXNl
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGlzNjRCaXQoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAg
ICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJl
bDY0IDogTW92ZTsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUg
c3RvcmVPcGNvZGUoVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1l
bW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHN0b3JlT3Bj
b2RlKG1lbW9yeS0+bG9hZFN0b3JlV2lkdGgoKSwgbWVtb3J5LT5hY2Nlc3NCYW5rKCksIG1lbW9y
eS0+aGFzRmVuY2UoKSk7CisgICAgfQogCiAgICAgSW5zdCBjcmVhdGVTdG9yZShWYWx1ZSogdmFs
dWUsIGNvbnN0IEFyZyYgZGVzdCkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNv
ZGUgPSBtb3ZlRm9yVHlwZSh2YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgQWlyOjpPcGNvZGUgbW92
ZU9wY29kZSA9IHN0b3JlT3Bjb2RlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3Jl
KG1vdmVPcGNvZGUsIHZhbHVlLCBkZXN0KTsKICAgICB9CiAKQEAgLTEwMDYsNyArMTA1NCw3IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIGNy
ZWF0ZVN0b3JlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpKTsKICAgICB9Ci0KKyAgICAK
ICAgICBBaXI6Ok9wY29kZSBtb3ZlRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBz
d2l0Y2ggKHR5cGUpIHsKQEAgLTExMjMsNyArMTE3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZhbHVlUmVwOjpTdGFja0FyZ3VtZW50Ogog
ICAgICAgICAgICAgICAgIGFyZyA9IEFyZzo6Y2FsbEFyZyh2YWx1ZS5yZXAoKS5vZmZzZXRGcm9t
U1AoKSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWUudmFsdWUoKSwgYXJnKTsK
KyAgICAgICAgICAgICAgICBhcHBlbmRTdG9yZShtb3ZlRm9yVHlwZSh2YWx1ZS52YWx1ZSgpKSwg
YXJnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE5NzEsMzAgKzIw
MTksNTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
TG9hZDogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBtb3ZlRm9y
VHlwZShtX3ZhbHVlLT50eXBlKCkpLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1
ZSkpKTsKKyAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBtX3ZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IEFpcjo6T29wczsK
KyAgICAgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKG1lbW9yeS0+dHlwZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJbnQzMjoKKyAg
ICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTMyOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEludDY0OgorICAgICAgICAgICAgICAgICAg
ICBvcGNvZGUgPSBMb2FkQWNxNjQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG9wY29kZSA9IG1vdmVGb3JU
eXBlKG1lbW9yeS0+dHlwZSgpKTsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92
YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
TG9hZDhTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQ4
U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7
CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1
ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMiA6IExvYWQ4U2lnbmVk
RXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bj
b2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDhaOiB7Ci0gICAgICAgICAg
ICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQ4LCBtX3ZhbHVlLCBhZGRyKG1fdmFs
dWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1f
dmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcTggOiBMb2FkODsK
KyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVl
LCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2UzogewotICAgICAgICAgICAgYXBwZW5kKHRy
YXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTZTaWduZWRFeHRlbmRUbzMyLCBtX3ZhbHVlLCBhZGRy
KG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcTE2U2ln
bmVkRXh0ZW5kVG8zMiA6IExvYWQxNlNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICBhcHBl
bmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwg
dG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIExvYWQxNlo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1
ZSwgTG9hZDE2LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAg
ICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5o
YXNGZW5jZSgpID8gTG9hZEFjcTE2IDogTG9hZDE2OworICAgICAgICAgICAgYXBwZW5kKHRyYXBw
aW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3Zh
bHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KKyAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEFkZDogewogICAgICAgICAgICAgaWYgKHRyeUFwcGVuZExlYSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxNjYsNiArMjIzNCwxMSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERl
cGVuZDogeworICAgICAgICAgICAgYXBwZW5kVW5PcDxEZXBlbmQzMiwgRGVwZW5kNjQ+KG1fdmFs
dWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAg
IGNhc2UgU2hsOiB7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50MzIo
MSkpIHsKQEAgLTIyNjYsNyArMjMzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZVRvU3RvcmUsIGFk
ZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjI4Nyw3ICsyMzYw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFpcjo6U3RvcmU4
LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUo
bV92YWx1ZSwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0yMzA4LDcgKzIzODEsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTE2LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92
YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgdmFsdWVUb1N0b3JlLCBh
ZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNzg0
LDYgKzI4NTcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGFwcGVuZChBaXI6OkVudHJ5U3dp
dGNoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgQXRvbWljV2Vha0NBUzogeworICAgICAgICAgICAgLy8gRklYTUUKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMzAgKzM0LDQ4IEBAIE1lbW9yeVZhbHVlOjp+
TWVtb3J5VmFsdWUoKQogewogfQogCitUeXBlIE1lbW9yeVZhbHVlOjphY2Nlc3NUeXBlKCkgY29u
c3QKK3sKKyAgICBpZiAoaXNMb2FkKG9wY29kZSgpKSkKKyAgICAgICAgcmV0dXJuIHR5cGUoKTsK
KyAgICAvLyBUaGlzIGhhcHBlbnMgdG8gd29yayBmb3IgYXRvbWljcywgdG9vLiBUaGF0J3Mgd2h5
IEF0b21pY1ZhbHVlIGRvZXMgbm90IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy4KKyAgICByZXR1cm4g
Y2hpbGQoMCktPnR5cGUoKTsKK30KKworQmFuayBNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuaygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGJhbmtGb3JUeXBlKGFjY2Vzc1R5cGUoKSk7Cit9CisKIHNpemVf
dCBNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUoKSBjb25zdAogeworICAgIHJldHVybiBieXRl
cyhhY2Nlc3NXaWR0aCgpKTsKK30KKworV2lkdGggTWVtb3J5VmFsdWU6OmxvYWRTdG9yZVdpZHRo
KCkgY29uc3QKK3sKICAgICBzd2l0Y2ggKG9wY29kZSgpKSB7CiAgICAgY2FzZSBMb2FkOFo6CiAg
ICAgY2FzZSBMb2FkOFM6CiAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIHJldHVybiAxOworICAg
ICAgICByZXR1cm4gV2lkdGg4OwogICAgIGNhc2UgTG9hZDE2WjoKICAgICBjYXNlIExvYWQxNlM6
CiAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgcmV0dXJuIFdp
ZHRoMTY7CiAgICAgY2FzZSBMb2FkOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZSh0eXBlKCkp
OworICAgICAgICByZXR1cm4gd2lkdGhGb3JUeXBlKHR5cGUoKSk7CiAgICAgY2FzZSBTdG9yZToK
LSAgICAgICAgcmV0dXJuIHNpemVvZlR5cGUoY2hpbGQoMCktPnR5cGUoKSk7CisgICAgICAgIHJl
dHVybiB3aWR0aEZvclR5cGUoY2hpbGQoMCktPnR5cGUoKSk7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBXaWR0aDg7CiAgICAgfQogfQogCiBXaWR0aCBNZW1vcnlWYWx1ZTo6YWNjZXNz
V2lkdGgoKSBjb25zdAogewotICAgIHJldHVybiB3aWR0aEZvckJ5dGVzKGFjY2Vzc0J5dGVTaXpl
KCkpOworICAgIHJldHVybiBsb2FkU3RvcmVXaWR0aCgpOwogfQogCiB2b2lkIE1lbW9yeVZhbHVl
OjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdApA
QCAtNjcsNiArODUsOCBAQCB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXIm
CiAgICAgaWYgKChpc0xvYWQoKSAmJiBlZmZlY3RzKCkucmVhZHMgIT0gcmFuZ2UoKSkKICAgICAg
ICAgfHwgKGlzU3RvcmUoKSAmJiBlZmZlY3RzKCkud3JpdGVzICE9IHJhbmdlKCkpKQogICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJyYW5nZSA9ICIsIHJhbmdlKCkpOworICAgIGlmIChwaGFudG9t
UmFuZ2UoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicGhhbnRvbVJhbmdlID0gIiwgcGhh
bnRvbVJhbmdlKCkpOwogfQogCiBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0
CkBAIC03NCw2ICs5NCw1OCBAQCBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0
CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlWYWx1ZSgqdGhpcyk7CiB9CiAKKy8vIFVzZSB0aGlzIGZv
cm0gZm9yIExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMg
dGhhdCBoYXZlIGEgc3VmZml4IHRoYXQKKy8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSku
CitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBv
cmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgOiBWYWx1ZShD
aGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCisgICAgLCBtX29mZnNl
dChvZmZzZXQpCit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgc3dpdGNo
IChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2UgTG9hZDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6CisgICAgICAgIGNh
c2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAgICAgQVNTRVJUKHR5
cGUgPT0gSW50MzIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RvcmU4Ogor
ICAgICAgICBjYXNlIFN0b3JlMTY6CisgICAgICAgIGNhc2UgU3RvcmU6CisgICAgICAgICAgICBB
U1NFUlQodHlwZSA9PSBWb2lkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBp
bXBsaWVkLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdp
biwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVl
KGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKK3sKKyAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAg
Y2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQxNlo6
CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KK01lbW9yeVZhbHVlOjpNZW1vcnlW
YWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50
ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQs
IFZvaWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCit7
CisgICAgQVNTRVJUKGlzU3RvcmUoa2luZC5vcGNvZGUoKSkpOworfQorCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDQ4ICsyNywxNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzQmFuay5o
IgogI2luY2x1ZGUgIkIzSGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotLy8gRklYTUU6IFdlIHdhbnQgdG8gYWxsb3cg
ZmVuY2VkIG1lbW9yeSBhY2Nlc3NlcyBvbiBBUk0uCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMzQ5Ci0KIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIE1lbW9y
eVZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhY2NlcHRz
KEtpbmQga2luZCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAg
ICAgICBjYXNlIExvYWQ4WjoKLSAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgIGNhc2UgTG9h
ZDE2WjoKLSAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAg
IGNhc2UgU3RvcmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzU3Rv
cmUoS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0g
ICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2Ug
U3RvcmU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29s
IGlzTG9hZChLaW5kIGtpbmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWNjZXB0cyhraW5kKSAm
JiAhaXNTdG9yZShraW5kKTsKKyAgICAgICAgcmV0dXJuIGlzTWVtb3J5KGtpbmQub3Bjb2RlKCkp
OwogICAgIH0KIAogICAgIH5NZW1vcnlWYWx1ZSgpOwpAQCAtNzgsNzYgKzQ3LDU2IEBAIHB1Ymxp
YzoKIAogICAgIGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3Jhbmdl
OyB9CiAgICAgdm9pZCBzZXRSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fcmFuZ2Ug
PSByYW5nZTsgfQorICAgIAorICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHJhbmdlLgorICAg
IGNvbnN0IEhlYXBSYW5nZSYgYWNjZXNzUmFuZ2UoKSBjb25zdCB7IHJldHVybiByYW5nZSgpOyB9
CisgICAgdm9pZCBzZXRBY2Nlc3NSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IHNldFJh
bmdlKHJhbmdlKTsgfQorICAgIAorICAgIGNvbnN0IEhlYXBSYW5nZSYgZmVuY2VSYW5nZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZmVuY2VSYW5nZTsgfQorICAgIHZvaWQgc2V0RmVuY2VSYW5nZShjb25z
dCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fZmVuY2VSYW5nZSA9IHJhbmdlOyB9CisKKyAgICBib29s
IGlzU3RvcmUoKSBjb25zdCB7IHJldHVybiBpc1N0b3JlKG9wY29kZSgpKTsgfQorICAgIGJvb2wg
aXNMb2FkKCkgY29uc3QgeyByZXR1cm4gaXNMb2FkKG9wY29kZSgpKTsgfQogCi0gICAgYm9vbCBp
c1N0b3JlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFZvaWQ7IH0KLSAgICBib29sIGlzTG9h
ZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSAhPSBWb2lkOyB9CisgICAgYm9vbCBoYXNGZW5jZSgp
IGNvbnN0IHsgcmV0dXJuICEhZmVuY2VSYW5nZSgpOyB9CiAKKyAgICBUeXBlIGFjY2Vzc1R5cGUo
KSBjb25zdDsKKyAgICBCYW5rIGFjY2Vzc0JhbmsoKSBjb25zdDsKICAgICBzaXplX3QgYWNjZXNz
Qnl0ZVNpemUoKSBjb25zdDsKLSAgICBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0OworICAgIAor
ICAgIC8vIFNsaWdodGx5IGZhc3RlciB2ZXJzaW9uIG9mIGFjY2Vzc1dpZHRoLCBpZiB5b3Uga25v
dyB0aGF0IHlvdSdyZSB3b3JraW5nIHdpdGggYSBsb2FkIG9yIHN0b3JlLgorICAgIFdpZHRoIGxv
YWRTdG9yZVdpZHRoKCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCBXaWR0aCBhY2Nlc3NXaWR0
aCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXIm
IGNvbW1hLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZHVtcE1ldGEo
Q29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZhbHVl
KiBjbG9uZUltcGwoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgUHJvY2VkdXJlOwotCi0gICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBM
b2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhh
dAotICAgIC8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCi0gICAgTWVtb3J5VmFsdWUo
S2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQz
Ml90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlw
ZSwgb3JpZ2luLCBwb2ludGVyKQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cz4KKyAgICBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUg
dHlwZSwgT3JpZ2luIG9yaWdpbiwgaW50MzJfdCBvZmZzZXQsIEFyZ3VtZW50cy4uLiBhcmd1bWVu
dHMpCisgICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBh
cmd1bWVudHMuLi4pCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFu
Z2UoSGVhcFJhbmdlOjp0b3AoKSkKICAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVE
KSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNh
c2UgTG9hZDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZDha
OgotICAgICAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6Ci0g
ICAgICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0g
SW50MzIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZTg6
Ci0gICAgICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAg
ICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICAvLyBVc2Ug
dGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhl
IExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CisgICAgLy8gZGVzY3JpYmVzIHRoZSByZXR1
cm5lZCB0eXBlKS4KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBUeXBlLCBPcmlnaW4sIFZhbHVlKiBw
b2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3Ig
bG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCi0gICAgTWVtb3J5VmFsdWUo
S2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQg
PSAwKQotICAgICAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIs
IG9mZnNldCkKLSAgICB7Ci0gICAgfQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFs
dWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3Jt
IGZvciBzdG9yZXMuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBW
YWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAg
IDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRl
cikKLSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFu
Z2U6OnRvcCgpKQotICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9yZTg6
Ci0gICAgICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwg
VmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKTsKKyAgICAK
ICAgICBpbnQzMl90IG1fb2Zmc2V0IHsgMCB9OwotICAgIEhlYXBSYW5nZSBtX3JhbmdlOworICAg
IEhlYXBSYW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSBt
X2ZlbmNlUmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgyLDcgKzgyLDYgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBNb2QsIC8vIEFs
bCBiZXRzIGFyZSBvZmYgYXMgdG8gd2hhdCB3aWxsIGhhcHBlbiB3aGVuIHlvdSBleGVjdXRlIHRo
aXMgZm9yIC0yXjMxJS0xIGFuZCB4JTAuCiAgICAgVU1vZCwKIAotCiAgICAgLy8gUG9seW1vcnBo
aWMgbmVnYXRpb24uIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdGhpcyBmb3IgZmxvYXRpbmcgcG9p
bnQsIHNpbmNlIGludGVnZXIgbmVnYXRpb24KICAgICAvLyBpcyBleGFjdGx5IGxpa2UgU3ViKDAs
IHgpLiBCdXQgdGhhdCdzIG5vdCB0cnVlIGZvciBmbG9hdGluZyBwb2ludC4gU3ViKDAsIDApIGlz
IDAsIHdoaWxlCiAgICAgLy8gTmVnKDApIGlzIC0wLiBBbHNvLCB3ZSBjYW5vbmljYWxpemUgU3Vi
KDAsIHgpIGludG8gTmVnKHgpIGluIGNhc2Ugb2YgaW50ZWdlcnMuCkBAIC0xNjIsNiArMTYxLDk5
IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgU3RvcmUxNiwKICAgICAvLyBUaGlzIGlz
IGEgcG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgRmxvYXQsIGFuZCBEb3VibGUu
CiAgICAgU3RvcmUsCisgICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCBy
ZXR1cm5zIGEgYm9vbGVhbi4gTWF5IGNob29zZSB0byBkbyBub3RoaW5nIGFuZCByZXR1cm4gZmFs
c2UuIFlvdSBjYW4KKyAgICAvLyB1c3VhbGx5IGFzc3VtZSB0aGF0IHRoaXMgaXMgZmFzdGVyIGFu
ZCByZXN1bHRzIGluIGxlc3MgY29kZSB0aGFuIEF0b21pY1N0cm9uZ0NBUywgdGhvdWdoIHRoYXQn
cworICAgIC8vIG5vdCBuZWNlc3NhcmlseSB0cnVlIG9uIEludGVsLCBpZiBpbnN0cnVjdGlvbiBz
ZWxlY3Rpb24gZG9lcyBpdHMgam9iLiBJbWFnaW5lIHRoYXQgdGhpcyBvcGNvZGUgaXMKKyAgICAv
LyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgLy8gYm9vbCBBdG9taWNXZWFrQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwg
VCBuZXdWYWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgaWYgKCFyYW5kKCkpCisg
ICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFJlYWwgd29ybGQgZXhhbXBsZSBvZiB0aGlz
OiBjb250ZXh0IHN3aXRjaCBvbiBBUk0gd2hpbGUgZG9pbmcgQ0FTLgorICAgIC8vICAgICBpZiAo
KnB0ciAhPSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IC8vICAgICAqcHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVybiB0cnVlOworICAgIC8v
IH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBhbGwgYXRvbWljcyBwdXQgdGhlIHBvaW50ZXIg
bGFzdCB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IGxvYWRzIGFuZCBzdG9yZXMgd29yay4gVGhp
cworICAgIC8vIGlzIGEgZ29vZnkgdHJhZGl0aW9uLCBidXQgaXQncyBoYXJtbGVzcywgYW5kIGJl
dHRlciB0aGFuIGJlaW5nIGluY29uc2lzdGVudC4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCB3
ZWFrIENBUyBoYXMgbm8gZmVuY2luZyBndWFyYW50ZWVzIHdoZW4gaXQgZmFpbHMuIFRoaXMgbWVh
bnMgdGhhdCB0aGUgZm9sbG93aW5nCisgICAgLy8gdHJhbnNmb3JtYXRpb24gaXMgYWx3YXlzIHZh
bGlkOgorICAgIC8vCisgICAgLy8gQmVmb3JlOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFu
Y2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nl
c3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICAvLworICAgIC8vIEFmdGVyOgor
ICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goRXF1YWwoTG9hZChwdHIpLCBleHBlY3RlZCkp
CisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojYXR0ZW1wdCwgRWxzZTojZmFpbAorICAg
IC8vICAgICBCQiNhdHRlbXB0OgorICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtDQVMo
ZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNj
ZXNzLCBFbHNlOiNmYWlsCisgICAgQXRvbWljV2Vha0NBUywKKyAgICAKKyAgICAvLyBBdG9taWMg
Y29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2
ZSB0aGUgbm9uZGV0ZXJtaW5pc20gb2YgV2Vha0NBUy4KKyAgICAvLyBUaGlzIGlzIGEgYml0IG1v
cmUgY29kZSBhbmQgYSBiaXQgc2xvd2VyIGluIHNvbWUgY2FzZXMsIHRob3VnaCBub3QgYnkgYSBs
b3QuIEltYWdpbmUgdGhhdCB0aGlzCisgICAgLy8gb3Bjb2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhp
cyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAv
LyBUIEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikK
KyAgICAvLyB7CisgICAgLy8gICAgIFQgb2xkVmFsdWUgPSAqcHRyOworICAgIC8vICAgICBpZiAo
b2xkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgICpwdHIgPSBuZXdWYWx1
ZTsKKyAgICAvLyAgICAgcmV0dXJuIG9sZFZhbHVlCisgICAgLy8gfQorICAgIC8vCisgICAgLy8g
Tm90ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5kIEF0b21pY1N0cm9uZ0NBUyBzb3J0IG9mIGhhdmUg
dGhpcyBraW5kIG9mIGVxdWl2YWxlbmNlOgorICAgIC8vCisgICAgLy8gQXRvbWljV2Vha0NBUyhA
ZXhwLCBAbmV3LCBAcHRyKSA9PSBFcXVhbChBdG9taWNTdHJvbmdDQVMoQGV4cCwgQG5ldywgQHB0
ciksIEBleHApCisgICAgLy8KKyAgICAvLyBBc3N1bWluZyB0aGF0IHRoZSBXZWFrQ0FTIGRvZXMg
bm90IHNwdXJpb3VzbHkgZmFpbCwgb2YgY291cnNlLgorICAgIEF0b21pY1N0cm9uZ0NBUywKKyAg
ICAKKyAgICAvLyBBdG9taWNhbGx5IF9fXyBhIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRo
ZSBvbGQgdmFsdWUuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hj
aGdfX18oQG9wZXJhbmQsIEBwdHIpCisgICAgQXRvbWljWGNoZ0FkZCwKKyAgICBBdG9taWNYY2hn
QW5kLAorICAgIEF0b21pY1hjaGdPciwKKyAgICBBdG9taWNYY2hnU3ViLAorICAgIEF0b21pY1hj
aGdYb3IsCisgICAgCisgICAgLy8gQXRvbWljYWxseSBleGNoYW5nZSBhIHZhbHVlIHdpdGggYSBt
ZW1vcnkgbG9jYXRpb24uIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21p
Y1hjaGcoQG5ld1ZhbHVlLCBAcHRyKQorICAgIEF0b21pY1hjaGcsCisgICAgCisgICAgLy8gSW50
cm9kdWNlIGFuIGludmlzaWJsZSBkZXBlbmRlbmN5IGZvciBibG9ja2luZyBtb3Rpb24gb2YgbG9h
ZHMgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBy
ZXN1bHQgPSBEZXBlbmQoQHBoYW50b20pCisgICAgLy8KKyAgICAvLyBUaGlzIGlzIGV2ZW50dWFs
bHkgY29kZWdlbmVyYXRlZCB0byBoYXZlIGxvY2FsIHNlbWFudGljcyBhcyBpZiB3ZSBkaWQ6Cisg
ICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gJDAKKyAgICAvLworICAgIC8vIEJ1dCBpdCBlbnN1cmVz
IHRoYXQgdGhlIHVzZXJzIG9mIEByZXN1bHQgY2Fubm90IGV4ZWN1dGUgdW50aWwgQHBoYW50b20g
aXMgY29tcHV0ZWQuCisgICAgLy8KKyAgICAvLyBUaGUgY29tcGlsZXIgaXMgbm90IGFsbG93ZWQg
dG8gcmVhc29uIGFib3V0IHRoZSBmYWN0IHRoYXQgRGVwZW5kIGNvZGVnZW5lcmF0ZXMgdGhpcyB3
YXkuIEFueSBraW5kCisgICAgLy8gb2YgdHJhbnNmb3JtYXRpb24gb3IgYW5hbHlzaXMgdGhhdCBy
ZWxpZXMgb24gdGhlIGluc2lnaHQgdGhhdCBEZXBlbmQgaXMgcmVhbGx5IHplcm8gaXMgdW5zb3Vu
ZCwKKyAgICAvLyBiZWNhdXNlIGl0IHVubG9ja3MgcmVvcmRlcmluZyBvZiB1c2VycyBvZiBAcmVz
dWx0IGFuZCBAcGhhbnRvbS4KKyAgICAvLworICAgIC8vIE9uIFg4NiwgdGhpcyBpcyBsb3dlcmVk
IHRvIGEgbG9hZC1sb2FkIGZlbmNlIGFuZCBAcmVzdWx0IHVzZXMgQHBoYW50b20gZGlyZWN0bHku
CisgICAgLy8KKyAgICAvLyBPbiBBUk0sIHRoaXMgaXMgbG93ZXJlZCBhcyBpZiBsaWtlOgorICAg
IC8vCisgICAgLy8gQHJlc3VsdCA9IEJpdFhvcihAcGhhbnRvbSwgQHBoYW50b20pCisgICAgLy8K
KyAgICAvLyBFeGNlcHQgdGhhdCB0aGUgY29tcGlsZXIgbmV2ZXIgZ2V0cyBhbiBvcHBvcnR1bml0
eSB0byBzaW1wbGlmeSBvdXQgdGhlIEJpdFhvci4KKyAgICBEZXBlbmQsCiAKICAgICAvLyBUaGlz
IGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIGFkZHJlc3Mgb2YgYSBXYXNtIG1lbW9yeSBv
cGVyYXRpb24uIEl0IHRha2VzIGFuIEludFB0cgogICAgIC8vIGFuZCBhIHBpbm5lZCByZWdpc3Rl
ciB0aGVuIGNvbXB1dGVzIHRoZSBhcHByb3ByaWF0ZSBJbnRQdHIgYWRkcmVzcy4gRm9yIHRoZSB1
c2UtY2FzZSBvZgpAQCAtMzAxLDYgKzM5Myw3MSBAQCBpbmxpbmUgYm9vbCBpc0RlZmluaXRlbHlU
ZXJtaW5hbChPcGNvZGUgCiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBpc0xvYWQoT3Bjb2RlIG9w
Y29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNh
c2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2Fz
ZSBMb2FkOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1N0b3JlKE9wY29kZSBvcGNvZGUp
Cit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNlIFN0
b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNMb2Fk
U3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2Ug
TG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExv
YWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3RvcmUx
NjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pYyhP
cGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNX
ZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0Fk
ZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAg
Y2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0
b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzTWVtb3J5QWNjZXNzKE9wY29k
ZSBvcGNvZGUpCit7CisgICAgcmV0dXJuIGlzQXRvbWljKG9wY29kZSkgfHwgaXNMb2FkU3RvcmUo
b3Bjb2RlKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGljOgogICAgIFZhbHVlKiBhZGRJbnRDb25z
dGFudChPcmlnaW4sIFR5cGUsIGludDY0X3QgdmFsdWUpOwogICAgIFZhbHVlKiBhZGRJbnRDb25z
dGFudChWYWx1ZSosIGludDY0X3QgdmFsdWUpOwogCisgICAgLy8gWW91J3JlIGd1YXJhbnRlZWQg
dGhhdCBib3R0b20gaXMgemVyby4KICAgICBWYWx1ZSogYWRkQm90dG9tKE9yaWdpbiwgVHlwZSk7
CiAgICAgVmFsdWUqIGFkZEJvdHRvbShWYWx1ZSopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw2ICszNDYs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVu
KCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAg
ICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIExvYWQ6CkBAIC0zNTMsNiArMzU0LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQg
IiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50
eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpICE9IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRh
dGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFN0b3JlODoKQEAgLTM2Miw2ICszNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZh
bHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkg
PT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFj
a0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFN0b3JlOgpAQCAtMzY5LDggKzM3Miw0OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlw
ZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50
eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0
ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVl
KTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NB
UzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxk
cmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50eXBl
KCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFs
dWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAg
ICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDMsICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2
YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBl
KCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5j
aGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlk
YXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgor
ICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdTdWI6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGc6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXND
aGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgp
KSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hp
bGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0
ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgRGVwZW5kOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhh
c0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+
dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVl
LT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsK
QEAgLTUzNyw2ICs1ODEsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVGZW5jZShWYWx1ZSogdmFsdWUpCisg
ICAgeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVl
PigpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgVkFMSURB
VEUobWVtb3J0eS0+YWNjZXNzQmFuaygpID09IEdQLCAoIkZlbmNlIGF0ICIsICptZW1vcnkpKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUF0b21pYyhWYWx1ZSogdmFsdWUpCisgICAg
eworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigp
OworICAgICAgICAKKyAgICAgICAgVkFMSURBVEUoYmVzdFR5cGUoYXRvbWljLT5vcGVyYXRpb25X
aWR0aCgpKSA9PSBhdG9taWMtPm9wZXJhdGlvblR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICB9CiAKICAgICB2b2lkIHZhbGlkYXRlU3RhY2tBY2Nlc3MoVmFsdWUqIHZhbHVlKQogICAgIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTg5LDYgKzU4OSw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNh
c2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgY2FzZSBTZWxl
Y3Q6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGl2OgogICAg
IGNhc2UgVURpdjoKQEAgLTYwMCwxNiArNjAxLDQ0IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMo
KSBjb25zdAogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgTG9hZDE2WjoKICAgICBjYXNlIExv
YWQxNlM6Ci0gICAgY2FzZSBMb2FkOgotICAgICAgICByZXN1bHQucmVhZHMgPSBhczxNZW1vcnlW
YWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIExvYWQ6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUq
IG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1v
cnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPnBoYW50b21SYW5nZSgpKSB7CisgICAg
ICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0LmNvbnRy
b2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBTdG9y
ZTg6CiAgICAgY2FzZSBTdG9yZTE2OgotICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJlc3VsdC53
cml0ZXMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIFN0b3JlOiB7Cisg
ICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAg
cmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+cGhh
bnRvbVJhbmdlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cGhhbnRv
bVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoK
KyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNh
c2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21p
Y1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5
LT5yYW5nZSgpIHwgbWVtb3J5LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAgcmVzdWx0LndyaXRl
cyA9IG1lbW9yeS0+cmFuZ2UoKSB8IG1lbW9ydHktPnBoYW50b21SYW5nZSgpOworICAgICAgICBp
ZiAobWVtb3J5LT5waGFudG9tUmFuZ2UoKSkKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRy
dWU7CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKICAgICAgICAgYnJl
YWs7CisgICAgfQogICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bp
bm5lZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpAQCAtNjE3LDE4ICs2NDYsNyBAQCBFZmZlY3Rz
IFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICAgICAgY29uc3QgRmVuY2VWYWx1ZSogZmVuY2Ug
PSBhczxGZW5jZVZhbHVlPigpOwogICAgICAgICByZXN1bHQucmVhZHMgPSBmZW5jZS0+cmVhZDsK
ICAgICAgICAgcmVzdWx0LndyaXRlcyA9IGZlbmNlLT53cml0ZTsKLSAgICAgICAgCi0gICAgICAg
IC8vIFByZXZlbnQga2lsbGluZyBvZiBmZW5jZXMgdGhhdCBjbGFpbSBub3QgdG8gd3JpdGUgYW55
dGhpbmcuIEl0J3MgYSBiaXQgd2VpcmQgdGhhdCB3ZSB1c2UKLSAgICAgICAgLy8gbG9jYWwgc3Rh
dGUgYXMgdGhlIHdheSB0byBkbyB0aGlzLCBidXQgaXQgaGFwcGVucyB0byB3b3JrOiB3ZSBtdXN0
IGFzc3VtZSB0aGF0IHdlIGNhbm5vdAotICAgICAgICAvLyBraWxsIHdyaXRlc0xvY2FsU3RhdGUg
dW5sZXNzIHdlIHVuZGVyc3RhbmRzIGV4YWN0bHkgd2hhdCB0aGUgaW5zdHJ1Y3Rpb24gaXMgZG9p
bmcgKGxpa2UKLSAgICAgICAgLy8gdGhlIHdheSB0aGF0IGZpeFNTQSB1bmRlcnN0YW5kcyBTZXQv
R2V0IGFuZCB0aGUgd2F5IHRoYXQgcmVkdWNlU3RyZW5ndGggYW5kIG90aGVycwotICAgICAgICAv
LyB1bmRlcnN0YW5kIFVwc2lsb24pLiBUaGlzIHdvdWxkIG9ubHkgYmVjb21lIGEgcHJvYmxlbSBp
ZiB3ZSBoYWQgc29tZSBhbmFseXNpcyB0aGF0IHdhcwotICAgICAgICAvLyBsb29raW5nIHRvIHVz
ZSB0aGUgd3JpdGVzTG9jYWxTdGF0ZSBiaXQgdG8gaW52YWxpZGF0ZSBhIENTRSBvdmVyIGxvY2Fs
IHN0YXRlIG9wZXJhdGlvbnMuCi0gICAgICAgIC8vIFRoZW4gYSBGZW5jZSB3b3VsZCBsb29rIGJs
b2NrLCBzYXksIHRoZSBlbGltaW5hdGlvbiBvZiBhIHJlZHVuZGFudCBHZXQuIEJ1dCBpdCBsaWtl
Ci0gICAgICAgIC8vIHRoYXQncyBub3QgYXQgYWxsIGhvdyBvdXIgb3B0aW1pemF0aW9ucyBmb3Ig
U2V0L0dldC9VcHNpbG9uL1BoaSB3b3JrIC0gdGhleSBncm9rIHRoZWlyCi0gICAgICAgIC8vIG9w
ZXJhdGlvbnMgZGVlcGx5IGVub3VnaCB0aGF0IHRoZXkgaGF2ZSBubyBuZWVkIHRvIGNoZWNrIHRo
aXMgYml0IC0gc28gdGhpcyBjaGVhdCBpcwotICAgICAgICAvLyBmaW5lLgotICAgICAgICByZXN1
bHQud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENDYWxsOgpAQCAtNjk0LDYgKzcxMiw3
IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2Fz
ZSBCaXR3aXNlQ2FzdDoKICAgICBjYXNlIE5lZzoKKyAgICBjYXNlIERlcGVuZDoKICAgICAgICAg
cmV0dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgpLCBjaGlsZCgwKSk7CiAgICAgY2FzZSBBZGQ6
CiAgICAgY2FzZSBTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHJldmlz
aW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgLy8gdmFsdWVzIHdpdGgg
SWRlbnRpdGllcyBvbiBib3R0b20gY29uc3RhbnRzLiBGb3IgdGhpcyByZWFzb24sIHRoaXMgdGFr
ZXMgYSBjYWxsYmFjayB0aGF0IGlzCiAgICAgLy8gcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGJv
dHRvbXMuIFRoZXJlJ3MgYSB1dGlsaXR5IGZvciB0aGlzLCBzZWUgQjNCb3R0b21Qcm92aWRlci5o
LiBZb3UKICAgICAvLyBjYW4gYWxzbyBhY2Nlc3MgdGhhdCB1dGlsaXR5IHVzaW5nIHJlcGxhY2VX
aXRoQm90dG9tKEluc2VydGlvblNldCYsIHNpemVfdCkuCisgICAgLy8KKyAgICAvLyBZb3UncmUg
Z3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJv
dHRvbVByb3ZpZGVyPgogICAgIHZvaWQgcmVwbGFjZVdpdGhCb3R0b20oY29uc3QgQm90dG9tUHJv
dmlkZXImKTsKICAgICAKQEAgLTMyMSw2ICszMjMsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IElUb0Y6CiAgICAgICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAgIGNhc2UgQnJhbmNoOgor
ICAgICAgICBjYXNlIERlcGVuZDoKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9
IDEpKQogICAgICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJncyk7CiAgICAgICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsMzggQEAKIAogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgogCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworVHlwZSBiZXN0VHlwZShCYW5r
IGJhbmssIFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdp
ZHRoODoKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICBzd2l0
Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJldHVybiBJbnQzMjsK
KyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBGbG9hdDsKKyAgICAgICAgfQor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9p
ZDsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBj
YXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDY0OworICAgICAgICBjYXNlIEZQOgorICAg
ICAgICAgICAgcmV0dXJuIERvdWJsZTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICB9CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVm9pZDsKK30KKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzCisKIG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6V2lkdGggd2lkdGgpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1dpZHRoLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1dpZHRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDggQEAgaW5saW5l
IFdpZHRoIHdpZHRoRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKK1R5cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIGlubGluZSBX
aWR0aCBjb25zZXJ2YXRpdmVXaWR0aChCYW5rIGJhbmspCiB7CiAgICAgcmV0dXJuIGJhbmsgPT0g
R1AgPyBwb2ludGVyV2lkdGgoKSA6IFdpZHRoNjQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
NjgsMjggKzY2OCwzNDcgQEAgTG9hZDggVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAg
ICBJbmRleCwgVG1wCiAKK0xvYWRBY3E4IFU6Rzo4LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisg
ICAgSW5kZXgsIFRtcAorCiBTdG9yZTggVTpHOjgsIEQ6Rzo4CiAgICAgVG1wLCBJbmRleAogICAg
IFRtcCwgQWRkcgogICAgIHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBBZGRyCiAKK1N0
b3JlUmVsOCBVOkc6OCwgRDpHOjgKKyAgICBUbXAsIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
eDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKwogTG9hZDhTaWduZWRFeHRlbmRU
bzMyIFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2Fk
QWNxOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJ
bmRleCwgVG1wCisKIExvYWQxNiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJ
bmRleCwgVG1wCiAKK0xvYWRBY3ExNiBVOkc6MTYsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAg
ICBJbmRleCwgVG1wCisKIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCiAg
ICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMy
IFU6RzoxNiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogU3RvcmUx
NiBVOkc6MTYsIEQ6RzoxNgogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKIAorU3RvcmVB
Y3ExNiBVOkc6MTYsIEQ6RzoxNgorICAgIFRtcCwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKworTG9h
ZEFjcTMyIFU6RzozMiBaRDpHOjMyCisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAKKyAgICBJ
bmRleCwgVG1wCisKK1N0b3JlUmVsMzIgVTpHOjMyIFpEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKwor
NjQ6IExvYWRBY3E2NCBVOkc6NjQgWkQ6Rzo2NAorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1w
CisgICAgSW5kZXgsIFRtcAorCis2NDogU3RvcmVSZWw2NCBVOkc6NjQgWkQ6Rzo2NAorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1t
LCBJbmRleAorCisjIFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4KK3g4NjogTG9ja0NtcFhjaGc4
IFVEOkc6OCBVRDpHOjggVTpHOjgKKyAgICBUbXAqLCBBZGRyLCBUbXAKKyAgICBUbXAqLCBJbmRl
eCwgVG1wCisKK3g4NjogTG9ja0NtcFhjaGcxNiBVRDpHOjE2IFVEOkc6MTYgVTpHOjMyCisgICAg
VG1wKiwgQWRkciwgVG1wCisgICAgVG1wKiwgSW5kZXgsIFRtcAorCit4ODY6IExvY2tDbXBYY2hn
MzIgVUQ6RzozMiBVRDpHOjMyIFU6RzozMgorICAgIFRtcCosIEFkZHIsIFRtcAorICAgIFRtcCos
IEluZGV4LCBUbXAKKworeDg2XzY0OiBMb2NrQ21wWGNoZzY0IFVEOkc6NjQgVUQ6Rzo2NCBVOkc6
NjQKKyAgICBUbXAqLCBBZGRyLCBUbXAKKyAgICBUbXAqLCBJbmRleCwgVG1wCisKK3g4NjogTG9j
a0FkZDggVTpHOjggVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrQWRkMTYgVTpHOjE2IFVEOkc6MTYK
KyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IExvY2tBZGQzMiBVOkc6MzIgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAg
IEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9j
a0FkZDY0IFU6Rzo2NCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrU3ViOCBVOkc6OCBVRDpHOjgK
KyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IExvY2tTdWIxNiBVOkc6MTYgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAg
IEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1N1
YjMyIFU6RzozMiBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBMb2NrU3ViNjQgVTpHOjY0IFVEOkc6
NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODY6IExvY2tBbmQ4IFU6Rzo4IFVEOkc6OAorICAgIEltbSwgQWRkcgorICAg
IEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja0Fu
ZDE2IFU6RzoxNiBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrQW5kMzIgVTpHOjMyIFVEOkc6MzIK
KyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODZfNjQ6IExvY2tBbmQ2NCBVOkc6NjQgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgor
ICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9j
a09yOCBVOkc6OCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tPcjE2IFU6RzoxNiBVRDpHOjE2Cisg
ICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2OiBMb2NrT3IzMiBVOkc6MzIgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIElt
bSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9ja09y
NjQgVTpHOjY0IFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tYb3I4IFU6Rzo4IFVEOkc6OAorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogTG9ja1hvcjE2IFU6RzoxNiBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1t
LCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrWG9yMzIg
VTpHOjMyIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IExvY2tYb3I2NCBVOkc6NjQgVUQ6Rzo2NAor
ICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisKK3g4NjogTG9ja05lZzggVUQ6Rzo4CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Njog
TG9ja05lZzE2IFVEOkc6MTYKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBMb2NrTmVnMzIg
VUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IExvY2tOZWc2NCBVRDpHOjY0
CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogTG9ja05vdDggVUQ6Rzo4CisgICAgQWRkcgor
ICAgIEluZGV4CisKK3g4NjogTG9ja05vdDE2IFVEOkc6MTYKKyAgICBBZGRyCisgICAgSW5kZXgK
KworeDg2OiBMb2NrTm90MzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6
IExvY2tOb3Q2NCBVRDpHOjY0CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogTG9ja1hBZGQ4
IFVEOkc6OCBVRDpHOjgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9j
a1hBZGQxNiBVRDpHOjE2IFVEOkc6MTYKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisK
K3g4NjogTG9ja1hBZGQzMiBVRDpHOjMyIFVEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4Nl82NDogTG9ja1hBZGQ2NCBVRDpHOjY0IFVEOkc6NjQKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hjaGc4IFVEOkc6OCBVRDpHOjgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hjaGcxNiBVRDpHOjE2IFVEOkc6
MTYKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hjaGczMiBVRDpH
OjMyIFVEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9j
a1hjaGc2NCBVRDpHOjY0IFVEOkc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisK
K2FybTY0OiBMb2FkTGluazggVTpHOjggWkQ6Rzo4CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgs
IFRtcAorCithcm02NDogTG9hZExpbmtBY3E4IFU6Rzo4IFpEOkc6OAorICAgIEFkZHIsIFRtcAor
ICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDggVTpHOjggRDpHOjggWkQ6Rzo4Cisg
ICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29u
ZFJlbDggVTpHOjggRDpHOjggWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIElu
ZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rMTYgVTpHOjE2IFpEOkc6MTYKKyAgICBBZGRyLCBU
bXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTE2IFU6RzoxNiBaRDpHOjE2
CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kMTYgVTpH
OjE2IEQ6RzoxNiBaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRt
cAorCithcm02NDogU3RvcmVDb25kUmVsMTYgVTpHOjE2IEQ6RzoxNiBaRDpHOjgKKyAgICBUbXAs
IEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmszMiBVOkc6
MzIgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRM
aW5rQWNxMzIgVTpHOjMyIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisK
K2FybTY0OiBTdG9yZUNvbmQzMiBVOkc6MzIgRDpHOjMyIFpEOkc6OAorICAgIFRtcCwgQWRkciwg
VG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWwzMiBVOkc6MzIg
RDpHOjMyIFpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisK
K2FybTY0OiBMb2FkTGluazY0IFU6Rzo2NCBaRDpHOjY0CisgICAgQWRkciwgVG1wCisgICAgSW5k
ZXgsIFRtcAorCithcm02NDogTG9hZExpbmtBY3E2NCBVOkc6NjQgWkQ6Rzo2NAorICAgIEFkZHIs
IFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDY0IFU6Rzo2NCBEOkc6NjQg
WkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6
IFN0b3JlQ29uZFJlbDY0IFU6Rzo2NCBEOkc6NjQgWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAK
KyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IERlcGVuZDMyIFU6RzozMiBEOkc6MzIKKyAg
ICBUbXAsIFRtcAorCithcm02NDogRGVwZW5kNjQgVTpHOjY0IEQ6Rzo2NAorICAgIFRtcCwgVG1w
CisKIENvbXBhcmUzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29u
ZCwgVG1wLCBUbXAsIFRtcAogICAgIFJlbENvbmQsIFRtcCwgSW1tLCBUbXAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302763</attachid>
            <date>2017-02-25 14:20:45 -0800</date>
            <delta_ts>2017-02-26 09:17:54 -0800</delta_ts>
            <desc>starting to work on isel for CAS</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>53984</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNBdG9t
aWNWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7CisKK0F0b21pY1ZhbHVlOjp+QXRvbWljVmFsdWUoKQoreworfQorCitXaWR0aCBB
dG9taWNWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3dpZHRoOwor
fQorCit2b2lkIEF0b21pY1ZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChjb21tYSwgIndpZHRoID0gIiwg
bV93aWR0aCk7CisgICAgCisgICAgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKGNvbW1hLCBvdXQpOwor
fQorCitWYWx1ZSogQXRvbWljVmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG5ldyBBdG9taWNWYWx1ZSgqdGhpcyk7Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShL
aW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFs
dWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNr
ZWRPcGNvZGUsIGtpbmQsIG9wZXJhbmQtPnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIG9wZXJhbmQs
IHBvaW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVh
cFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKG9wZXJhdGlvbldpZHRo
KCkpID09IG9wZXJhdGlvblR5cGUoKSk7CisgICAgCisgICAgc3dpdGNoIChraW5kLm9wY29kZSgp
KSB7CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAg
ICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBB
dG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitBdG9t
aWNWYWx1ZTo6QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0
aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIs
IGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtp
bmQsIGtpbmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRWYWx1
ZS0+dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUsIHBvaW50
ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVhcFJhbmdl
Ojp0b3AoKSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKG9wZXJhdGlvbldpZHRoKCkpID09
IG9wZXJhdGlvblR5cGUoKSk7CisKKyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBj
YXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklU
KQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisj
aW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEF0b21p
Y1ZhbHVlIDogcHVibGljIE1lbW9yeVZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBh
Y2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0F0b21pYyhraW5kLm9w
Y29kZSgpKTsKKyAgICB9CisgICAgCisgICAgfkF0b21pY1ZhbHVlKCk7CisgICAgCisgICAgVHlw
ZSBvcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gY2hpbGQoMCktPnR5cGUoKTsgfQorICAg
IAorICAgIFdpZHRoIG9wZXJhdGlvbldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQor
ICAgIAorICAgIC8vIFN5bm9ueW0gZm9yIHdpZHRoKCksIGlmIHlvdSdyZSBhY2Nlc3Npbmcgdmlh
IE1lbW9yeVZhbHVlLgorICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIAorICAgIFZhbHVlKiBjbG9uZUltcGwoKSBjb25z
dCBvdmVycmlkZTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsK
KyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBWYWx1ZSogb3BlcmFu
ZCwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCisgICAgQXRvbWlj
VmFsdWUoS2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBu
ZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCisgICAg
V2lkdGggbV93aWR0aDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYg
Ly8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZm
ZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Vm
ZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6
aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAgICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0
ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIu
d3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIucmVhZHMpCi0gICAgICAg
IHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7CisgICAgICAgIHx8IHJlYWRzLm92ZXJs
YXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZlbmNlICYmIG90aGVyLmZlbmNlKTsKIH0K
IAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApA
QCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYg
CiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhlci53cml0ZXNQaW5uZWQKICAgICAgICAg
JiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5uZWQKICAgICAgICAgJiYgd3JpdGVzID09
IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkczsKKyAgICAgICAg
JiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7
CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29u
c3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVjdHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlc1Bpbm5lZCIpOwogICAgIGlm
IChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsK
KyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkZlbmNlIik7CiAgICAg
aWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7
CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwxMCBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzE3MwogICAgIGJv
b2wgcmVhZHNQaW5uZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgd3JpdGVzUGlubmVkIHsgZmFsc2Ug
fTsKKyAgICAKKyAgICAvLyBNZW1vcnkgZmVuY2VzIGNhbm5vdCBiZSByZW9yZGVyZWQgYXJvdW5k
IGVhY2ggb3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBlZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQK
KyAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVtb3J5IGZlbmNlLgorICAgIGJvb2wgZmVu
Y2UgeyBmYWxzZSB9OwogCiAgICAgSGVhcFJhbmdlIHdyaXRlczsKICAgICBIZWFwUmFuZ2UgcmVh
ZHM7CkBAIC04OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZlY3RzIHsKICAgICAgICAgcmVzdWx0LnJl
YWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1
ZTsKICAgICAgICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIHJlc3VsdC5m
ZW5jZSA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMDMsNyAr
MTA4LDcgQEAgc3RydWN0IEVmZmVjdHMgewogCiAgICAgYm9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0
ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQ7CisgICAgICAgIHJldHVybiB0
ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8
IHdyaXRlc1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
cmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVzZSByZXNwZWN0aXZlIGVmZmVjdHMgd291
bGQgY2hhbmdlIHByb2dyYW0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1
YmV4cHJlc3Npb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDIsNiArMTQyLDcgQEAgc3RydWN0IElt
cHVyZUJsb2NrRGF0YSB7CiAKICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlz
IG9ubHkgZ2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0b3JlIGVsaW1pbmF0aW9uLgogICAgIFJhbmdl
U2V0PEhlYXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdldHMgdXNlZCBmb3IgYm90aCBsb2FkIGFu
ZCBzdG9yZSBlbGltaW5hdGlvbi4KKyAgICBib29sIGZlbmNlOwogCiAgICAgTWVtb3J5VmFsdWVN
YXAgc3RvcmVzQXRIZWFkOwogICAgIE1lbW9yeVZhbHVlTWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsK
QEAgLTE3NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNTdG9yZSgpCiAgICAgICAgICAgICAgICAg
ICAgICYmICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkKLSAgICAgICAgICAg
ICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkpCisgICAg
ICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkp
CisgICAgICAgICAgICAgICAgICAgICYmICghZGF0YS5mZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5j
ZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7
CiAgICAgICAgICAgICAgICAgZGF0YS5yZWFkcy5hZGQoZWZmZWN0cy5yZWFkcyk7CiAKICAgICAg
ICAgICAgICAgICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9IGVmZmVjdHMud3JpdGVzKQogICAgICAg
ICAgICAgICAgICAgICBjbG9iYmVyKGRhdGEsIHdyaXRlcyk7CisgICAgICAgICAgICAgICAgZGF0
YS5mZW5jZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeSkK
ICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7
CkBAIC00NzgsNiArNDgxLDkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0
ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVBZnRlckNsb2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdl
IHJhbmdlLCBjb25zdCBGaWx0ZXImIGZpbHRlcikKICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVl
LT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVy
eSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0b3JlIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQog
ICAgICAgICAvLyBoaXR0aW5nIGFueSBvcGVyYXRpb24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUu
IFRoaXMgc2VhcmNoIHNlZW1zIGxpa2UgaXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2
ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1v
c3QgaW1tZWRpYXRlbHkgaGl0IGFuIApAQCAtNjE0LDYgKzYyMCwxMiBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tp
bmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIpOwogICAgICAgICAKKyAgICAgICAgaWYg
KG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1
c2UgZmVuY2VzLlxuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgCiAgICAgICAgIGlmIChNZW1vcnlWYWx1ZSogbWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFs
dWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHku
XG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCShyZXZpc2lv
biAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtODgsNiArODgsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAorICAgIEhlYXBSYW5nZSBvcGVyYXRvcnwoY29u
c3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBIZWFwUmFu
Z2UoCisgICAgICAgICAgICBzdGQ6Om1pbihtX2JlZ2luLCBvdGhlci5tX2JlZ2luKSwKKyAgICAg
ICAgICAgIHN0ZDo6bWF4KG1fZW5kLCBvdGhlci5tX2VuZCkpOworICAgIH0KKyAgICAKICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsg
fQogCiAgICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xODUsNiArMTg1LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAg
ICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEg
bG9hZC1sb2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2Ug
aXQgdG8gdGVsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJs
b2NrIGxvYWQgbW90aW9uLgorICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7Cisg
ICAgICAgICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNo
b3VsZCB1bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAg
ICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoQm90dG9tKG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4
KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxNCBAQCBuYW1lc3BhY2UgewogCiBjb25zdCBib29s
IHZlcmJvc2UgPSBmYWxzZTsKIAorLy8gRklYTUU6IFdlIHdvdWxkbid0IG5lZWQgdGhpcyBpZiBB
aXIgc3VwcG9ydGVkIFdpZHRoIG1vZGlmaWVycyBpbiBBaXI6OktpbmQuCisvLyBPT1BTISEhIChu
ZWVkIGEgYnVnIFVSTCkKKyNkZWZpbmUgT1BDT0RFX0ZPUl9XSURUSChvcGNvZGUsIHdpZHRoKSAo
IFwKKyAgICAod2lkdGgpID09IFdpZHRoOCA/IG9wY29kZSAjIyA4IDogXAorICAgICh3aWR0aCkg
PT0gV2lkdGgxNiA/IG9wY29kZSAjIyAxNiA6IFwKKyAgICAod2lkdGgpID09IFdpZHRoMzIgPyBv
cGNvZGUgIyMgMzIgOiBcCisgICAgb3Bjb2RlICMjIDY0KQorCiBjbGFzcyBMb3dlclRvQWlyIHsK
IHB1YmxpYzoKICAgICBMb3dlclRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQpAQCAtNTM4LDcg
KzU0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAKICAgICAgICAg
aW50MzJfdCBvZmZzZXQgPSB2YWx1ZS0+b2Zmc2V0KCk7Ci0gICAgICAgIFdpZHRoIHdpZHRoID0g
dmFsdWUtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgIFdpZHRoIHdpZHRoID0gdmFsdWUtPmxvYWRT
dG9yZVdpZHRoKCk7CiAKICAgICAgICAgQXJnIHJlc3VsdCA9IGVmZmVjdGl2ZUFkZHIodmFsdWUt
Pmxhc3RDaGlsZCgpLCBvZmZzZXQsIHdpZHRoKTsKICAgICAgICAgQVNTRVJUKHJlc3VsdC5pc1Zh
bGlkRm9ybSh3aWR0aCkpOwpAQCAtNTYyLDExICs1NzAsMTYgQEAgcHJpdmF0ZToKICAgICAKICAg
ICBBcmdQcm9taXNlIGxvYWRQcm9taXNlQW55T3Bjb2RlKFZhbHVlKiBsb2FkVmFsdWUpCiAgICAg
eworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsK
ICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gQXJnKCk7CiAgICAgICAgIGlmIChjcm9zc2VzSW50ZXJmZXJlbmNlKGxvYWRWYWx1ZSkpCiAg
ICAgICAgICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAgIEFyZ1Byb21pc2UgcmVzdWx0KGFkZHIo
bG9hZFZhbHVlKSwgbG9hZFZhbHVlKTsKKyAgICAgICAgaWYgKGxvYWRWYWx1ZS0+YXM8TWVtb3J5
VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnKCk7CisgICAgICAg
IEFyZyBsb2FkQWRkciA9IGFkZHIobG9hZFZhbHVlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bG9hZEFkZHIpOworICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChsb2FkQWRkciwgbG9hZFZhbHVl
KTsKICAgICAgICAgaWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkKICAgICAgICAgICAgIHJlc3VsdC5z
ZXRUcmFwcyh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTkzMSwxMCArOTQ0LDE1
IEBAIHByaXZhdGU6CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBv
cGNvZGU2NCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmU+CiAg
ICAgYm9vbCB0cnlBcHBlbmRTdG9yZUJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCiAg
ICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKSk7
CisgICAgICAgIAogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBl
KG9wY29kZTMyLCBvcGNvZGU2NCwgbGVmdC0+dHlwZSgpKTsKICAgICAgICAgaWYgKG9wY29kZSA9
PSBBaXI6Ok9vcHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAorICAgICAg
ICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICBBcmcgc3RvcmVBZGRyID0gYWRkciht
X3ZhbHVlKTsKICAgICAgICAgQVNTRVJUKHN0b3JlQWRkcik7CiAKQEAgLTk5NCwxMCArMTAxMiw0
OCBAQCBwcml2YXRlOgogCiAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFsdWUsIHRtcCh2
YWx1ZSksIGRlc3QpOwogICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShX
aWR0aCB3aWR0aCwgQmFuayBiYW5rLCBib29sIHJlbGVhc2UpCisgICAgeworICAgICAgICBzd2l0
Y2ggKHdpZHRoKSB7CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVs
OCA6IFN0b3JlODsKKyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVs
MTYgOiBTdG9yZTE2OworICAgICAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgICAgICBzd2l0Y2gg
KGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
bGVhc2UgPyBTdG9yZVJlbDMyIDogTW92ZTMyOworICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIE1vdmVGbG9hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpczY0Qml0KCkpOwor
ICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQOgorICAgICAg
ICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWw2NCA6IE1vdmU7CisgICAgICAgICAg
ICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFZhbHVlKiB2YWx1
ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5
VmFsdWU+KCk7CisgICAgICAgIHJldHVybiBzdG9yZU9wY29kZShtZW1vcnktPmxvYWRTdG9yZVdp
ZHRoKCksIG1lbW9yeS0+YWNjZXNzQmFuaygpLCBtZW1vcnktPmhhc0ZlbmNlKCkpOworICAgIH0K
IAogICAgIEluc3QgY3JlYXRlU3RvcmUoVmFsdWUqIHZhbHVlLCBjb25zdCBBcmcmIGRlc3QpCiAg
ICAgewotICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gbW92ZUZvclR5cGUodmFsdWUt
PnR5cGUoKSk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBzdG9yZU9wY29kZSh2
YWx1ZSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVTdG9yZShtb3ZlT3Bjb2RlLCB2YWx1ZSwgZGVz
dCk7CiAgICAgfQogCkBAIC0xMDA2LDcgKzEwNjIsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVTdG9yZShzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pKSk7CiAgICAgfQotCisgICAgCiAgICAgQWlyOjpPcGNvZGUgbW92ZUZv
clR5cGUoVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xMTIz
LDcgKzExNzksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoKICAgICAgICAgICAgICAgICBhcmcgPSBB
cmc6OmNhbGxBcmcodmFsdWUucmVwKCkub2Zmc2V0RnJvbVNQKCkpOwotICAgICAgICAgICAgICAg
IGFwcGVuZFN0b3JlKHZhbHVlLnZhbHVlKCksIGFyZyk7CisgICAgICAgICAgICAgICAgYXBwZW5k
U3RvcmUobW92ZUZvclR5cGUodmFsdWUudmFsdWUoKSksIGFyZyk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTcxLDMwICsyMDI3LDUwIEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ6IHsKLSAgICAgICAgICAgIGFw
cGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgbW92ZUZvclR5cGUobV92YWx1ZS0+dHlwZSgpKSwg
bV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBNZW1v
cnlWYWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAg
ICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBBaXI6Ok9vcHM7CisgICAgICAgICAgICBpZiAobWVtb3J5
LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChtZW1vcnktPnR5cGUoKSkg
eworICAgICAgICAgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICAgICAgICAgIG9wY29k
ZSA9IExvYWRBY3EzMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTY0Owor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICBvcGNvZGUgPSBtb3ZlRm9yVHlwZShtZW1vcnktPnR5cGUoKSk7Cisg
ICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwg
YWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ4UzogewotICAgICAgICAgICAg
YXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOFNpZ25lZEV4dGVuZFRvMzIsIG1fdmFs
dWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2Fk
QWNxOFNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAg
ICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIExvYWQ4WjogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBMb2FkOCwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7Cisg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4o
KS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4IDogTG9hZDg7CisgICAgICAgICAgICBhcHBlbmQodHJh
cHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1f
dmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IExvYWQxNlM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9h
ZDE2U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUp
KSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkMTZT
aWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVl
LCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZaOiB7Ci0gICAg
ICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNiwgbV92YWx1ZSwgYWRk
cihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNiA6
IExvYWQxNjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2Rl
LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotCisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBZGQ6IHsKICAg
ICAgICAgICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yMTY2LDYgKzIyNDIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5j
aGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgIGFw
cGVuZFVuT3A8RGVwZW5kMzIsIERlcGVuZDY0PihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIFNobDogewogICAgICAgICAg
ICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludDMyKDEpKSB7CkBAIC0yMjY2LDcgKzIzNDcs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgYXBwZW5kU3RvcmUodmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAg
ICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTIyODcsNyArMjM2OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBhcHBlbmRTdG9yZShBaXI6OlN0b3JlOCwgdmFsdWVUb1N0b3JlLCBhZGRyKG1f
dmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIHZhbHVlVG9TdG9yZSwg
YWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjMw
OCw3ICsyMzg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFp
cjo6U3RvcmUxNiwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFw
cGVuZFN0b3JlKG1fdmFsdWUsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjc4NCw2ICsyODY1LDIwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBhcHBlbmQoQWlyOjpFbnRyeVN3aXRjaCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6
IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiB2YWx1ZSA9IG1fdmFsdWUtPmFzPEF0b21pY1Zh
bHVlPigpOworI2lmIENQVShYODZfNjQpCisgICAgICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJl
Z2lzdGVyczo6ZWF4KTsKKyAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUodmFs
dWUtPm9wZXJhdGlvblR5cGUoKSksIGltbU9yVG1wKHZhbHVlLT5jaGlsZCgwKSksIGVheCk7Cisg
ICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChMb2NrQ21wWGNoZywgdmFsdWUtPm9w
ZXJhdGlvbldpZHRoKCkpLCBlYXgsIHRtcCh2YWx1ZS0+Y2hpbGQoMSkpLCBhZGRyKHZhbHVlKSwg
dG1wKHZhbHVlKSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgICAgICAgICAvLyBGSVhNRTogTmVl
ZCB0byBiZSBhYmxlIHRvIGJyZWFrIHRoZSBiYXNpYyBibG9jaworI2Vsc2UKKyNlcnJvciAiQmFk
IGFyY2hpdGVjdHVyZSIKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCwzMCArMzQsNDggQEAgTWVtb3J5VmFsdWU6On5NZW1vcnlWYWx1ZSgpCiB7CiB9CiAKK1R5
cGUgTWVtb3J5VmFsdWU6OmFjY2Vzc1R5cGUoKSBjb25zdAoreworICAgIGlmIChpc0xvYWQob3Bj
b2RlKCkpKQorICAgICAgICByZXR1cm4gdHlwZSgpOworICAgIC8vIFRoaXMgaGFwcGVucyB0byB3
b3JrIGZvciBhdG9taWNzLCB0b28uIFRoYXQncyB3aHkgQXRvbWljVmFsdWUgZG9lcyBub3QgbmVl
ZCB0byBvdmVycmlkZSB0aGlzLgorICAgIHJldHVybiBjaGlsZCgwKS0+dHlwZSgpOworfQorCitC
YW5rIE1lbW9yeVZhbHVlOjphY2Nlc3NCYW5rKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYmFua0Zv
clR5cGUoYWNjZXNzVHlwZSgpKTsKK30KKwogc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRl
U2l6ZSgpIGNvbnN0CiB7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkpOworfQorCitX
aWR0aCBNZW1vcnlWYWx1ZTo6bG9hZFN0b3JlV2lkdGgoKSBjb25zdAorewogICAgIHN3aXRjaCAo
b3Bjb2RlKCkpIHsKICAgICBjYXNlIExvYWQ4WjoKICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNl
IFN0b3JlODoKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBXaWR0aDg7CiAgICAg
Y2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAg
ICAgIHJldHVybiAyOworICAgICAgICByZXR1cm4gV2lkdGgxNjsKICAgICBjYXNlIExvYWQ6Ci0g
ICAgICAgIHJldHVybiBzaXplb2ZUeXBlKHR5cGUoKSk7CisgICAgICAgIHJldHVybiB3aWR0aEZv
clR5cGUodHlwZSgpKTsKICAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlw
ZShjaGlsZCgwKS0+dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZShjaGlsZCgw
KS0+dHlwZSgpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICB9
CiB9CiAKIFdpZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHdpZHRoRm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJuIGxvYWRTdG9y
ZVdpZHRoKCk7CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYg
Y29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02Nyw2ICs4NSw4IEBAIHZvaWQgTWVt
b3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYKICAgICBpZiAoKGlzTG9hZCgpICYmIGVm
ZmVjdHMoKS5yZWFkcyAhPSByYW5nZSgpKQogICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVmZmVj
dHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgInJhbmdl
ID0gIiwgcmFuZ2UoKSk7CisgICAgaWYgKHBoYW50b21SYW5nZSgpKQorICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJwaGFudG9tUmFuZ2UgPSAiLCBwaGFudG9tUmFuZ2UoKSk7CiB9CiAKIFZhbHVl
KiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKQEAgLTc0LDYgKzk0LDU4IEBAIFZhbHVl
KiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKICAgICByZXR1cm4gbmV3IE1lbW9yeVZh
bHVlKCp0aGlzKTsKIH0KIAorLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2Fk
OFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAor
Ly8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1
ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGlu
dDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUs
IG9yaWdpbiwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBpZiAoIUFT
U0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAg
ICAgY2FzZSBMb2FkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTG9hZDhaOgor
ICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNl
IExvYWQxNlM6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3RvcmUxNjoKKyAg
ICAgICAgY2FzZSBTdG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3Ig
bG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlWYWx1ZTo6TWVt
b3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJf
dCBvZmZzZXQgPSAwKQorICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9p
bnRlciwgb2Zmc2V0KQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3
aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2Fz
ZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBm
b3Igc3RvcmVzLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9y
aWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQor
ICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9p
bnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBBU1NFUlQoaXNTdG9yZShraW5k
Lm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8g
RU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFs
dWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVt
b3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNDggKzI3LDE3IEBACiAKICNpZiBFTkFC
TEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNIZWFwUmFuZ2Uu
aCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMg
ewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxvdyBmZW5jZWQgbWVtb3J5IGFjY2Vzc2VzIG9u
IEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIzNDkK
LQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVtb3J5VmFsdWUgOiBwdWJsaWMgVmFsdWUgewog
cHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQogICAgIHsKLSAgICAg
ICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAg
ICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAgICBjYXNlIExvYWQx
NlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNh
c2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNTdG9yZShLaW5kIGtpbmQpCi0gICAgewotICAg
ICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAg
ICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNMb2FkKEtpbmQga2luZCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQpICYmICFpc1N0b3JlKGtpbmQpOworICAgICAg
ICByZXR1cm4gaXNNZW1vcnkoa2luZC5vcGNvZGUoKSk7CiAgICAgfQogCiAgICAgfk1lbW9yeVZh
bHVlKCk7CkBAIC03OCw3NiArNDcsNTYgQEAgcHVibGljOgogCiAgICAgY29uc3QgSGVhcFJhbmdl
JiByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2U7IH0KICAgICB2b2lkIHNldFJhbmdlKGNv
bnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9yYW5nZSA9IHJhbmdlOyB9CisgICAgCisgICAgLy8g
VGhpcyBpcyBhbiBhbGlhcyBmb3IgcmFuZ2UuCisgICAgY29uc3QgSGVhcFJhbmdlJiBhY2Nlc3NS
YW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlKCk7IH0KKyAgICB2b2lkIHNldEFjY2Vzc1Jhbmdl
KGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgc2V0UmFuZ2UocmFuZ2UpOyB9CisgICAgCisgICAg
Y29uc3QgSGVhcFJhbmdlJiBmZW5jZVJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9mZW5jZVJhbmdl
OyB9CisgICAgdm9pZCBzZXRGZW5jZVJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9m
ZW5jZVJhbmdlID0gcmFuZ2U7IH0KKworICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IGlzU3RvcmUob3Bjb2RlKCkpOyB9CisgICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiBp
c0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAgICBib29sIGlzU3RvcmUoKSBjb25zdCB7IHJldHVybiB0
eXBlKCkgPT0gVm9pZDsgfQotICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ICE9IFZvaWQ7IH0KKyAgICBib29sIGhhc0ZlbmNlKCkgY29uc3QgeyByZXR1cm4gISFmZW5jZVJh
bmdlKCk7IH0KIAorICAgIFR5cGUgYWNjZXNzVHlwZSgpIGNvbnN0OworICAgIEJhbmsgYWNjZXNz
QmFuaygpIGNvbnN0OwogICAgIHNpemVfdCBhY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0OwotICAgIFdp
ZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CisgICAgCisgICAgLy8gU2xpZ2h0bHkgZmFzdGVyIHZl
cnNpb24gb2YgYWNjZXNzV2lkdGgsIGlmIHlvdSBrbm93IHRoYXQgeW91J3JlIHdvcmtpbmcgd2l0
aCBhIGxvYWQgb3Igc3RvcmUuCisgICAgV2lkdGggbG9hZFN0b3JlV2lkdGgoKSBjb25zdDsKKyAg
ICAKKyAgICB2aXJ0dWFsIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoK
LSAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0cmVh
bSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJy
aWRlOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0KLSAgICAvLyBV
c2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2Yg
dGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0Ci0gICAgLy8gZGVzY3JpYmVzIHRoZSBy
ZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3Jp
Z2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAg
OiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCisgICAg
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIE1lbW9yeVZhbHVlKENo
ZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBpbnQz
Ml90IG9mZnNldCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShDaGVj
a2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKICAgICAgICAgLCBt
X29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQogICAg
IHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAo
a2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBMb2FkOgotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgICAgICBjYXNlIExvYWQ4
UzoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2UzoK
LSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUx
NjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUg
PT0gVm9pZCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9CiAgICAgfQorICAgIAorICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1dCBu
b3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3VmZml4
IHRoYXQKKyAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgorICAgIE1lbW9yeVZh
bHVlKEtpbmQsIFR5cGUsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0g
MCk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5
cGUgaXMgaW1wbGllZC4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4s
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogTWVtb3J5VmFs
dWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQotICAgIHsKLSAgICB9Cisg
ICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZz
ZXQgPSAwKTsKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KLSAgICBNZW1vcnlW
YWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50
ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBr
aW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQotICAgICAgICAsIG1fb2Zmc2V0KG9m
ZnNldCkKLSAgICAgICAgLCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCi0gICAgewotICAgICAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29k
ZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUx
NjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
CisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2lu
dGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAogICAgIGludDMyX3QgbV9vZmZzZXQgeyAw
IH07Ci0gICAgSGVhcFJhbmdlIG1fcmFuZ2U7CisgICAgSGVhcFJhbmdlIG1fcmFuZ2UgeyBIZWFw
UmFuZ2U6OnRvcCgpIH07CisgICAgSGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhlYXBSYW5nZSgp
IH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNiBAQCBlbnVtIE9w
Y29kZSA6IGludDE2X3QgewogICAgIE1vZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBhcyB0byB3aGF0
IHdpbGwgaGFwcGVuIHdoZW4geW91IGV4ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEgYW5kIHglMC4K
ICAgICBVTW9kLAogCi0KICAgICAvLyBQb2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90ZSB0aGF0IHdl
IG9ubHkgbmVlZCB0aGlzIGZvciBmbG9hdGluZyBwb2ludCwgc2luY2UgaW50ZWdlciBuZWdhdGlv
bgogICAgIC8vIGlzIGV4YWN0bHkgbGlrZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mgbm90IHRydWUg
Zm9yIGZsb2F0aW5nIHBvaW50LiBTdWIoMCwgMCkgaXMgMCwgd2hpbGUKICAgICAvLyBOZWcoMCkg
aXMgLTAuIEFsc28sIHdlIGNhbm9uaWNhbGl6ZSBTdWIoMCwgeCkgaW50byBOZWcoeCkgaW4gY2Fz
ZSBvZiBpbnRlZ2Vycy4KQEAgLTE2Miw2ICsxNjEsOTkgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90
IHsKICAgICBTdG9yZTE2LAogICAgIC8vIFRoaXMgaXMgYSBwb2x5bW9ycGhpYyBzdG9yZSBmb3Ig
SW50MzIsIEludDY0LCBGbG9hdCwgYW5kIERvdWJsZS4KICAgICBTdG9yZSwKKyAgICAKKyAgICAv
LyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgYSBib29sZWFuLiBNYXkgY2hv
b3NlIHRvIGRvIG5vdGhpbmcgYW5kIHJldHVybiBmYWxzZS4gWW91IGNhbgorICAgIC8vIHVzdWFs
bHkgYXNzdW1lIHRoYXQgdGhpcyBpcyBmYXN0ZXIgYW5kIHJlc3VsdHMgaW4gbGVzcyBjb2RlIHRo
YW4gQXRvbWljU3Ryb25nQ0FTLCB0aG91Z2ggdGhhdCdzCisgICAgLy8gbm90IG5lY2Vzc2FyaWx5
IHRydWUgb24gSW50ZWwsIGlmIGluc3RydWN0aW9uIHNlbGVjdGlvbiBkb2VzIGl0cyBqb2IuIElt
YWdpbmUgdGhhdCB0aGlzIG9wY29kZSBpcworICAgIC8vIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9t
aWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBib29s
IEF0b21pY1dlYWtDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBUKiBwdHIpCisgICAg
Ly8geworICAgIC8vICAgICBpZiAoIXJhbmQoKSkKKyAgICAvLyAgICAgICAgIHJldHVybiBmYWxz
ZTsgLy8gUmVhbCB3b3JsZCBleGFtcGxlIG9mIHRoaXM6IGNvbnRleHQgc3dpdGNoIG9uIEFSTSB3
aGlsZSBkb2luZyBDQVMuCisgICAgLy8gICAgIGlmICgqcHRyICE9IGV4cGVjdGVkVmFsdWUpCisg
ICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gICAgICpwdHIgPSBuZXdWYWx1ZTsK
KyAgICAvLyAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90ZSB0
aGF0IGFsbCBhdG9taWNzIHB1dCB0aGUgcG9pbnRlciBsYXN0IHRvIGJlIGNvbnNpc3RlbnQgd2l0
aCBob3cgbG9hZHMgYW5kIHN0b3JlcyB3b3JrLiBUaGlzCisgICAgLy8gaXMgYSBnb29meSB0cmFk
aXRpb24sIGJ1dCBpdCdzIGhhcm1sZXNzLCBhbmQgYmV0dGVyIHRoYW4gYmVpbmcgaW5jb25zaXN0
ZW50LgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHdlYWsgQ0FTIGhhcyBubyBmZW5jaW5nIGd1
YXJhbnRlZXMgd2hlbiBpdCBmYWlscy4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcKKyAg
ICAvLyB0cmFuc2Zvcm1hdGlvbiBpcyBhbHdheXMgdmFsaWQ6CisgICAgLy8KKyAgICAvLyBCZWZv
cmU6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FTKGV4cGVjdGVk
LCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3VjY2VzcywgRWxz
ZTojZmFpbAorICAgIC8vCisgICAgLy8gQWZ0ZXI6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJy
YW5jaChFcXVhbChMb2FkKHB0ciksIGV4cGVjdGVkKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3Jz
OiBUaGVuOiNhdHRlbXB0LCBFbHNlOiNmYWlsCisgICAgLy8gICAgIEJCI2F0dGVtcHQ6CisgICAg
Ly8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAg
IC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICBBdG9t
aWNXZWFrQ0FTLAorICAgIAorICAgIC8vIEF0b21pYyBjb21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0
dXJucyB0aGUgb2xkIHZhbHVlLiBEb2VzIG5vdCBoYXZlIHRoZSBub25kZXRlcm1pbmlzbSBvZiBX
ZWFrQ0FTLgorICAgIC8vIFRoaXMgaXMgYSBiaXQgbW9yZSBjb2RlIGFuZCBhIGJpdCBzbG93ZXIg
aW4gc29tZSBjYXNlcywgdGhvdWdoIG5vdCBieSBhIGxvdC4gSW1hZ2luZSB0aGF0IHRoaXMKKyAg
ICAvLyBvcGNvZGUgaXMgYXMgaWYgeW91IGRpZCB0aGlzIGF0b21pY2FsbHk6CisgICAgLy8KKyAg
ICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8vIFQgQXRvbWljU3Ryb25nQ0FTKFQgZXhw
ZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgVCBv
bGRWYWx1ZSA9ICpwdHI7CisgICAgLy8gICAgIGlmIChvbGRWYWx1ZSA9PSBleHBlY3RlZFZhbHVl
KQorICAgIC8vICAgICAgICAgKnB0ciA9IG5ld1ZhbHVlOworICAgIC8vICAgICByZXR1cm4gb2xk
VmFsdWUKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgQXRvbWljV2Vha0NBUyBh
bmQgQXRvbWljU3Ryb25nQ0FTIHNvcnQgb2YgaGF2ZSB0aGlzIGtpbmQgb2YgZXF1aXZhbGVuY2U6
CisgICAgLy8KKyAgICAvLyBBdG9taWNXZWFrQ0FTKEBleHAsIEBuZXcsIEBwdHIpID09IEVxdWFs
KEF0b21pY1N0cm9uZ0NBUyhAZXhwLCBAbmV3LCBAcHRyKSwgQGV4cCkKKyAgICAvLworICAgIC8v
IEFzc3VtaW5nIHRoYXQgdGhlIFdlYWtDQVMgZG9lcyBub3Qgc3B1cmlvdXNseSBmYWlsLCBvZiBj
b3Vyc2UuCisgICAgQXRvbWljU3Ryb25nQ0FTLAorICAgIAorICAgIC8vIEF0b21pY2FsbHkgX19f
IGEgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm4gdGhlIG9sZCB2YWx1ZS4gU3ludGF4OgorICAg
IC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWljWGNoZ19fXyhAb3BlcmFuZCwgQHB0cikKKyAg
ICBBdG9taWNYY2hnQWRkLAorICAgIEF0b21pY1hjaGdBbmQsCisgICAgQXRvbWljWGNoZ09yLAor
ICAgIEF0b21pY1hjaGdTdWIsCisgICAgQXRvbWljWGNoZ1hvciwKKyAgICAKKyAgICAvLyBBdG9t
aWNhbGx5IGV4Y2hhbmdlIGEgdmFsdWUgd2l0aCBhIG1lbW9yeSBsb2NhdGlvbi4gU3ludGF4Ogor
ICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWljWGNoZyhAbmV3VmFsdWUsIEBwdHIpCisg
ICAgQXRvbWljWGNoZywKKyAgICAKKyAgICAvLyBJbnRyb2R1Y2UgYW4gaW52aXNpYmxlIGRlcGVu
ZGVuY3kgZm9yIGJsb2NraW5nIG1vdGlvbiBvZiBsb2FkcyB3aXRoIHJlc3BlY3QgdG8gZWFjaCBv
dGhlci4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9IERlcGVuZChAcGhhbnRvbSkK
KyAgICAvLworICAgIC8vIFRoaXMgaXMgZXZlbnR1YWxseSBjb2RlZ2VuZXJhdGVkIHRvIGhhdmUg
bG9jYWwgc2VtYW50aWNzIGFzIGlmIHdlIGRpZDoKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSAk
MAorICAgIC8vCisgICAgLy8gQnV0IGl0IGVuc3VyZXMgdGhhdCB0aGUgdXNlcnMgb2YgQHJlc3Vs
dCBjYW5ub3QgZXhlY3V0ZSB1bnRpbCBAcGhhbnRvbSBpcyBjb21wdXRlZC4KKyAgICAvLworICAg
IC8vIFRoZSBjb21waWxlciBpcyBub3QgYWxsb3dlZCB0byByZWFzb24gYWJvdXQgdGhlIGZhY3Qg
dGhhdCBEZXBlbmQgY29kZWdlbmVyYXRlcyB0aGlzIHdheS4gQW55IGtpbmQKKyAgICAvLyBvZiB0
cmFuc2Zvcm1hdGlvbiBvciBhbmFseXNpcyB0aGF0IHJlbGllcyBvbiB0aGUgaW5zaWdodCB0aGF0
IERlcGVuZCBpcyByZWFsbHkgemVybyBpcyB1bnNvdW5kLAorICAgIC8vIGJlY2F1c2UgaXQgdW5s
b2NrcyByZW9yZGVyaW5nIG9mIHVzZXJzIG9mIEByZXN1bHQgYW5kIEBwaGFudG9tLgorICAgIC8v
CisgICAgLy8gT24gWDg2LCB0aGlzIGlzIGxvd2VyZWQgdG8gYSBsb2FkLWxvYWQgZmVuY2UgYW5k
IEByZXN1bHQgdXNlcyBAcGhhbnRvbSBkaXJlY3RseS4KKyAgICAvLworICAgIC8vIE9uIEFSTSwg
dGhpcyBpcyBsb3dlcmVkIGFzIGlmIGxpa2U6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gQml0
WG9yKEBwaGFudG9tLCBAcGhhbnRvbSkKKyAgICAvLworICAgIC8vIEV4Y2VwdCB0aGF0IHRoZSBj
b21waWxlciBuZXZlciBnZXRzIGFuIG9wcG9ydHVuaXR5IHRvIHNpbXBsaWZ5IG91dCB0aGUgQml0
WG9yLgorICAgIERlcGVuZCwKIAogICAgIC8vIFRoaXMgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBh
Y3R1YWwgYWRkcmVzcyBvZiBhIFdhc20gbWVtb3J5IG9wZXJhdGlvbi4gSXQgdGFrZXMgYW4gSW50
UHRyCiAgICAgLy8gYW5kIGEgcGlubmVkIHJlZ2lzdGVyIHRoZW4gY29tcHV0ZXMgdGhlIGFwcHJv
cHJpYXRlIEludFB0ciBhZGRyZXNzLiBGb3IgdGhlIHVzZS1jYXNlIG9mCkBAIC0zMDEsNiArMzkz
LDcxIEBAIGlubGluZSBib29sIGlzRGVmaW5pdGVseVRlcm1pbmFsKE9wY29kZSAKICAgICB9CiB9
CiAKK2lubGluZSBib29sIGlzTG9hZChPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bj
b2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2Fk
MTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lu
bGluZSBib29sIGlzU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkg
eworICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0xvYWRTdG9yZShPcGNvZGUgb3Bjb2RlKQorewor
ICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6
CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6Cisg
ICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dp
dGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNT
dHJvbmdDQVM6CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0Fu
ZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAg
Y2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwor
aW5saW5lIGJvb2wgaXNNZW1vcnlBY2Nlc3MoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICByZXR1cm4g
aXNBdG9taWMob3Bjb2RlKSB8fCBpc0xvYWRTdG9yZShvcGNvZGUpOworfQorCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsNyBA
QCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50KE9yaWdpbiwgVHlwZSwgaW50NjRf
dCB2YWx1ZSk7CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50KFZhbHVlKiwgaW50NjRfdCB2YWx1
ZSk7CiAKKyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAg
IFZhbHVlKiBhZGRCb3R0b20oT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogYWRkQm90dG9tKFZh
bHVlKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDYgKzM0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBv
aW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNj
ZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTG9h
ZDoKQEAgLTM1Myw2ICszNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkg
IT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNl
KHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU4OgpAQCAtMzYyLDYg
KzM2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQo
MCktPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9p
ZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVl
KTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU6CkBAIC0zNjksOCArMzcyLDQ5
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4o
KSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAg
ICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgIFZBTElE
QVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCkt
PnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIp
LT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFj
a0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQo
KS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkg
PT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRl
clR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21p
Yyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6Cisg
ICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2Ug
QXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09
IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJU
eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWMo
dmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0g
MSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlw
ZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoK
ICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hp
bGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYgKzU4MSwyMCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9p
ZCB2YWxpZGF0ZUZlbmNlKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVl
KiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIGlmIChtZW1vcnkt
Pmhhc0ZlbmNlKCkpCisgICAgICAgICAgICBWQUxJREFURShtZW1vcnR5LT5hY2Nlc3NCYW5rKCkg
PT0gR1AsICgiRmVuY2UgYXQgIiwgKm1lbW9yeSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHZh
bGlkYXRlQXRvbWljKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBh
dG9taWMgPSB2YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBWQUxJ
REFURShiZXN0VHlwZShhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpID09IGF0b21pYy0+b3BlcmF0
aW9uVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVT
dGFja0FjY2VzcyhWYWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDcgQEAgYm9vbCBW
YWx1ZTo6cmV0dXJuc0Jvb2woKSBjb25zdAogICAgIGNhc2UgQWJvdmVFcXVhbDoKICAgICBjYXNl
IEJlbG93RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgIGNhc2UgQXRvbWlj
V2Vha0NBUzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQaGk6CiAgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC01ODksNiArNTkwLDcgQEAg
RWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAg
IGNhc2UgRXF1YWxPclVub3JkZXJlZDoKICAgICBjYXNlIFNlbGVjdDoKKyAgICBjYXNlIERlcGVu
ZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXY6CiAgICAgY2FzZSBVRGl2OgpAQCAtNjAw
LDE2ICs2MDIsNDQgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBM
b2FkOFM6CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKLSAgICBjYXNlIExv
YWQ6Ci0gICAgICAgIHJlc3VsdC5yZWFkcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOwor
ICAgIGNhc2UgTG9hZDogeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5
VmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAg
ICAgaWYgKG1lbW9yeS0+cGhhbnRvbVJhbmdlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC53cml0
ZXMgPSBtZW1vcnktPnBoYW50b21SYW5nZSgpOworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0g
dHJ1ZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7
CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFN0b3JlODoKICAgICBjYXNlIFN0b3Jl
MTY6Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmVzdWx0LndyaXRlcyA9IGFzPE1lbW9yeVZh
bHVlPigpLT5yYW5nZSgpOworICAgIGNhc2UgU3RvcmU6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUq
IG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQud3JpdGVzID0gbWVt
b3J5LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5waGFudG9tUmFuZ2UoKSkgeworICAg
ICAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmNvbnRy
b2xEZXBlbmRlbnQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBBdG9t
aWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNo
Z0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6Cisg
ICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNl
IEF0b21pY1hjaGc6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZh
bHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCkgfCBtZW1vcnkt
PnBoYW50b21SYW5nZSgpOworICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5yYW5nZSgp
IHwgbWVtb3J0eS0+cGhhbnRvbVJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPnBoYW50b21S
YW5nZSgpKQorICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0
LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2Fz
ZSBXYXNtQWRkcmVzczoKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAg
ICAgYnJlYWs7CkBAIC02MTcsMTggKzY0Nyw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBj
b25zdAogICAgICAgICBjb25zdCBGZW5jZVZhbHVlKiBmZW5jZSA9IGFzPEZlbmNlVmFsdWU+KCk7
CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IGZlbmNlLT5yZWFkOwogICAgICAgICByZXN1bHQud3Jp
dGVzID0gZmVuY2UtPndyaXRlOwotICAgICAgICAKLSAgICAgICAgLy8gUHJldmVudCBraWxsaW5n
IG9mIGZlbmNlcyB0aGF0IGNsYWltIG5vdCB0byB3cml0ZSBhbnl0aGluZy4gSXQncyBhIGJpdCB3
ZWlyZCB0aGF0IHdlIHVzZQotICAgICAgICAvLyBsb2NhbCBzdGF0ZSBhcyB0aGUgd2F5IHRvIGRv
IHRoaXMsIGJ1dCBpdCBoYXBwZW5zIHRvIHdvcms6IHdlIG11c3QgYXNzdW1lIHRoYXQgd2UgY2Fu
bm90Ci0gICAgICAgIC8vIGtpbGwgd3JpdGVzTG9jYWxTdGF0ZSB1bmxlc3Mgd2UgdW5kZXJzdGFu
ZHMgZXhhY3RseSB3aGF0IHRoZSBpbnN0cnVjdGlvbiBpcyBkb2luZyAobGlrZQotICAgICAgICAv
LyB0aGUgd2F5IHRoYXQgZml4U1NBIHVuZGVyc3RhbmRzIFNldC9HZXQgYW5kIHRoZSB3YXkgdGhh
dCByZWR1Y2VTdHJlbmd0aCBhbmQgb3RoZXJzCi0gICAgICAgIC8vIHVuZGVyc3RhbmQgVXBzaWxv
bikuIFRoaXMgd291bGQgb25seSBiZWNvbWUgYSBwcm9ibGVtIGlmIHdlIGhhZCBzb21lIGFuYWx5
c2lzIHRoYXQgd2FzCi0gICAgICAgIC8vIGxvb2tpbmcgdG8gdXNlIHRoZSB3cml0ZXNMb2NhbFN0
YXRlIGJpdCB0byBpbnZhbGlkYXRlIGEgQ1NFIG92ZXIgbG9jYWwgc3RhdGUgb3BlcmF0aW9ucy4K
LSAgICAgICAgLy8gVGhlbiBhIEZlbmNlIHdvdWxkIGxvb2sgYmxvY2ssIHNheSwgdGhlIGVsaW1p
bmF0aW9uIG9mIGEgcmVkdW5kYW50IEdldC4gQnV0IGl0IGxpa2UKLSAgICAgICAgLy8gdGhhdCdz
IG5vdCBhdCBhbGwgaG93IG91ciBvcHRpbWl6YXRpb25zIGZvciBTZXQvR2V0L1Vwc2lsb24vUGhp
IHdvcmsgLSB0aGV5IGdyb2sgdGhlaXIKLSAgICAgICAgLy8gb3BlcmF0aW9ucyBkZWVwbHkgZW5v
dWdoIHRoYXQgdGhleSBoYXZlIG5vIG5lZWQgdG8gY2hlY2sgdGhpcyBiaXQgLSBzbyB0aGlzIGNo
ZWF0IGlzCi0gICAgICAgIC8vIGZpbmUuCi0gICAgICAgIHJlc3VsdC53cml0ZXNMb2NhbFN0YXRl
ID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgQ0NhbGw6CkBAIC02OTQsNiArNzEzLDcgQEAgVmFsdWVLZXkgVmFsdWU6
OmtleSgpIGNvbnN0CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAg
IGNhc2UgTmVnOgorICAgIGNhc2UgRGVwZW5kOgogICAgICAgICByZXR1cm4gVmFsdWVLZXkoa2lu
ZCgpLCB0eXBlKCksIGNoaWxkKDApKTsKICAgICBjYXNlIEFkZDoKICAgICBjYXNlIFN1YjoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYg
KzEwNyw4IEBAIHB1YmxpYzoKICAgICAvLyB2YWx1ZXMgd2l0aCBJZGVudGl0aWVzIG9uIGJvdHRv
bSBjb25zdGFudHMuIEZvciB0aGlzIHJlYXNvbiwgdGhpcyB0YWtlcyBhIGNhbGxiYWNrIHRoYXQg
aXMKICAgICAvLyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYm90dG9tcy4gVGhlcmUncyBhIHV0
aWxpdHkgZm9yIHRoaXMsIHNlZSBCM0JvdHRvbVByb3ZpZGVyLmguIFlvdQogICAgIC8vIGNhbiBh
bHNvIGFjY2VzcyB0aGF0IHV0aWxpdHkgdXNpbmcgcmVwbGFjZVdpdGhCb3R0b20oSW5zZXJ0aW9u
U2V0Jiwgc2l6ZV90KS4KKyAgICAvLworICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90
dG9tIGlzIHplcm8uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQm90dG9tUHJvdmlkZXI+CiAgICAg
dm9pZCByZXBsYWNlV2l0aEJvdHRvbShjb25zdCBCb3R0b21Qcm92aWRlciYpOwogICAgIApAQCAt
MzIxLDYgKzMyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSVRvRjoKICAgICAgICAgY2Fz
ZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgY2FzZSBCcmFuY2g6CisgICAgICAgIGNhc2UgRGVwZW5k
OgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgIT0gMSkpCiAgICAgICAgICAgICAg
ICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCwzOCBAQAogCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgeworCitUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgp
Cit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgIGNhc2UgV2lk
dGgxNjoKKyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAg
ICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDMyOworICAgICAgICBjYXNlIEZQOgor
ICAgICAgICAgICAgcmV0dXJuIEZsb2F0OworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lkOworICAgIGNhc2UgV2lkdGg2
NDoKKyAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAg
ICByZXR1cm4gSW50NjQ7CisgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICByZXR1cm4gRG91
YmxlOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBWb2lkOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBWb2lkOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKwog
bmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBK
U0M6OkIzOjpXaWR0aCB3aWR0aCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dp
ZHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAko
d29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsOCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JUeXBl
KFR5cGUgdHlwZSkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorVHlwZSBiZXN0VHlw
ZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKTsKKwogaW5saW5lIFdpZHRoIGNvbnNlcnZhdGl2ZVdp
ZHRoKEJhbmsgYmFuaykKIHsKICAgICByZXR1cm4gYmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgp
IDogV2lkdGg2NDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2Rl
Lm9wY29kZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJP
cGNvZGUub3Bjb2RlcwkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2OCwyOCArNjY4LDM2MyBAQCBM
b2FkOCBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9h
ZEFjcTggVTpHOjgsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIFN0
b3JlOCBVOkc6OCwgRDpHOjgKICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAgICAgeDg2
OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJbW0sIEFkZHIKIAorU3RvcmVSZWw4IFU6Rzo4LCBEOkc6
OAorICAgIFRtcCwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAg
ICB4ODY6IEltbSwgQWRkcgorCiBMb2FkOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIK
ICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3E4U2lnbmVkRXh0ZW5kVG8z
MiBVOkc6OCwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogTG9hZDE2
IFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFj
cTE2IFU6RzoxNiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogTG9h
ZDE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJ
bmRleCwgVG1wCiAKK0xvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCisg
ICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBTdG9yZTE2IFU6RzoxNiwgRDpHOjE2CiAg
ICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgogCitTdG9yZUFjcTE2IFU6RzoxNiwgRDpHOjE2
CisgICAgVG1wLCBJbmRleAorICAgIFRtcCwgQWRkcgorCitMb2FkQWNxMzIgVTpHOjMyIFpEOkc6
MzIKKyAgICBUbXAsIFRtcAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworU3RvcmVS
ZWwzMiBVOkc6MzIgWkQ6RzozMgorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4
ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorCis2NDogTG9hZEFjcTY0IFU6Rzo2
NCBaRDpHOjY0CisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisK
KzY0OiBTdG9yZVJlbDY0IFU6Rzo2NCBaRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisKKyMgVGhlIGZp
cnN0IG9wZXJhbmQgaXMgcmF4LgoreDg2OiBMb2NrQ21wWGNoZzggVUQ6Rzo4LCBVOkc6OCwgVUQ6
Rzo4LCBaRDpHOjgKKyAgICBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCosIFRtcCwgSW5k
ZXgsIFRtcAorCit4ODY6IExvY2tDbXBYY2hnMTYgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2LCBa
RDpHOjgKKyAgICBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCosIFRtcCwgSW5kZXgsIFRt
cAorCit4ODY6IExvY2tDbXBYY2hnMzIgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyLCBaRDpHOjgK
KyAgICBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4
ODZfNjQ6IExvY2tDbXBYY2hnNjQgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0LCBaRDpHOjgKKyAg
ICBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6
IEJyYW5jaExvY2tDbXBYY2hnOCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjggL2JyYW5jaAorICAgIFRt
cCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hMb2NrQ21w
WGNoZzE2IFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiAvYnJhbmNoCisgICAgVG1wKiwgVG1wLCBB
ZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEJyYW5jaExvY2tDbXBYY2hnMzIgVUQ6
RzozMiwgVTpHOjMyLCBVRDpHOjMyIC9icmFuY2gKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBU
bXAqLCBUbXAsIEluZGV4CisKK3g4Nl82NDogQnJhbmNoTG9ja0NtcFhjaGc2NCBVRDpHOjY0LCBV
Okc6NjQsIFVEOkc6NjQgL2JyYW5jaAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRt
cCwgSW5kZXgKKworeDg2OiBMb2NrQWRkOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2Nr
QWRkMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrQWRkMzIgVTpHOjMyLCBVRDpH
OjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2XzY0OiBMb2NrQWRkNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBMb2NrU3ViOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAor
ICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrU3ViMTYgVTpHOjE2LCBV
RDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2OiBMb2NrU3ViMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
XzY0OiBMb2NrU3ViNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrQW5kOCBVOkc6
OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgor
ICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrQW5kMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1t
LCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwor
eDg2OiBMb2NrQW5kMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBMb2NrQW5kNjQg
VTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwg
QWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrT3I4IFU6Rzo4LCBVRDpHOjgKKyAgICBJ
bW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IExvY2tPcjE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja09yMzIgVTpH
OjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBMb2NrT3I2NCBVOkc6NjQsIFVEOkc6NjQKKyAg
ICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODY6IExvY2tYb3I4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tYb3IxNiBV
Okc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tYb3IzMiBVOkc6MzIsIFVEOkc6MzIKKyAg
ICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODZfNjQ6IExvY2tYb3I2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tO
ZWc4IFVEOkc6OAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IExvY2tOZWcxNiBVRDpHOjE2
CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogTG9ja05lZzMyIFVEOkc6MzIKKyAgICBBZGRy
CisgICAgSW5kZXgKKworeDg2XzY0OiBMb2NrTmVnNjQgVUQ6Rzo2NAorICAgIEFkZHIKKyAgICBJ
bmRleAorCit4ODY6IExvY2tOb3Q4IFVEOkc6OAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6
IExvY2tOb3QxNiBVRDpHOjE2CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogTG9ja05vdDMy
IFVEOkc6MzIKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2XzY0OiBMb2NrTm90NjQgVUQ6Rzo2
NAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IExvY2tYQWRkOCBVRDpHOjgsIFVEOkc6OAor
ICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrWEFkZDE2IFVEOkc6MTYs
IFVEOkc6MTYKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hBZGQz
MiBVRDpHOjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZf
NjQ6IExvY2tYQWRkNjQgVUQ6Rzo2NCwgVUQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBMb2NrWGNoZzggVUQ6Rzo4LCBVRDpHOjgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hjaGcxNiBVRDpHOjE2LCBVRDpHOjE2CisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tYY2hnMzIgVUQ6RzozMiwgVUQ6Rzoz
MgorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBMb2NrWGNoZzY0IFVE
Okc6NjQsIFVEOkc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK2FybTY0OiBM
b2FkTGluazggVTpHOjgsIFpEOkc6OAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwor
YXJtNjQ6IExvYWRMaW5rQWNxOCBVOkc6OCwgWkQ6Rzo4CisgICAgQWRkciwgVG1wCisgICAgSW5k
ZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kOCBVOkc6OCwgRDpHOjgsIFpEOkc6OAorICAgIFRt
cCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw4
IFU6Rzo4LCBEOkc6OCwgWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4
LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rMTYgVTpHOjE2LCBaRDpHOjE2CisgICAgQWRkciwgVG1w
CisgICAgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmtBY3ExNiBVOkc6MTYsIFpEOkc6MTYK
KyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQxNiBVOkc6
MTYsIEQ6RzoxNiwgWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBU
bXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDE2IFU6RzoxNiwgRDpHOjE2LCBaRDpHOjgKKyAgICBU
bXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmszMiBV
Okc6MzIsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBM
b2FkTGlua0FjcTMyIFU6RzozMiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBU
bXAKKworYXJtNjQ6IFN0b3JlQ29uZDMyIFU6RzozMiwgRDpHOjMyLCBaRDpHOjgKKyAgICBUbXAs
IEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMzIg
VTpHOjMyLCBEOkc6MzIsIFpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRl
eCwgVG1wCisKK2FybTY0OiBMb2FkTGluazY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIEFkZHIsIFRt
cAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxNjQgVTpHOjY0LCBaRDpHOjY0
CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kNjQgVTpH
OjY0LCBEOkc6NjQsIFpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwg
VG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw2NCBVOkc6NjQsIEQ6Rzo2NCwgWkQ6Rzo4CisgICAg
VG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IERlcGVuZDMyIFU6
RzozMiwgRDpHOjMyCisgICAgVG1wLCBUbXAKKworYXJtNjQ6IERlcGVuZDY0IFU6Rzo2NCwgRDpH
OjY0CisgICAgVG1wLCBUbXAKKwogQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpE
Okc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVsQ29uZCwgVG1wLCBJbW0s
IFRtcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302786</attachid>
            <date>2017-02-26 09:17:54 -0800</date>
            <delta_ts>2017-02-26 12:57:03 -0800</delta_ts>
            <desc>built some tools I&apos;ll need for lowering CAS to LL/SC in isel</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>79312</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMSBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OwogCQkwRjJENERERDE5ODMyRDM0MDA3RDRC
MTkgLyogRGVidWdnZXJTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJENEREQjE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5j
cHAgKi87IH07CiAJCTBGMkQ0RERFMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENEREQzE5
ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBU
b1RoaXNTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyRDRERTUxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi87IH07
CkBAIC0yNzY0LDYgKzI3NjksMTEgQEAKIAkJMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIz
QmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0aCA9
IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRDFFNjBB
RTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7IHBhdGggPSBiMy9CM1dp
ZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0IzMUU2MzQzRTgwMEMx
MzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBC
M0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRvbWlj
VmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyog
QWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5z
ZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkExRTYz
NDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIvQWly
QmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRE
REIxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQ
cm9maWxlckxvZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI5Miw2ICs1MzAyLDggQEAKIAkJCQkwRkVD
ODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4
MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4
MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNC
YW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5j
cHAgKi8sCkBAIC01MzU0LDYgKzUzNjYsNyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyog
QjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4
MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3
NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTQ2OSw2ICs1NDgyLDggQEAKIAkJCQkwRjY0RUFG
MjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJE
QUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFD
REM3MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5oICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgw
MEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYz
NDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIx
QkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFD
NDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYx
ODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC03
OTU2LDYgKzc5NzEsNyBAQAogCQkJCTBGRUM4NTgwMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU4MTFCREFDREM3MDA4MEZGNzQgLyogQWlySW5z
dElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGREY2N0Q3MUQ5REM0NDIwMDFCOTgyNSAv
KiBBaXJLaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCQzFFNjM0NDBDMDBDMTM4Mzkg
LyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2ODRENDM4MUMw
MDE2MUMwMDgxRDY2MyAvKiBBaXJMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMzRD
MUExQzRCMzlBRTAwMDNBNTEyIC8qIEFpckxvZ1JlZ2lzdGVyUHJlc3N1cmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNjE4MzJGMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxs
b2MuaCBpbiBIZWFkZXJzICovLApAQCAtODA0Nyw2ICs4MDYzLDcgQEAKIAkJCQk0MzQyMkE2MzFD
MTU4RTZEMDBFMkVCOTggLyogQjNDb25zdEZsb2F0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUM4NUIzMUJERUQ5NTcwMDgwRkY3NCAvKiBCM0NvbnN0UHRyVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhFMEUxQkYwMjc2
QzAwMTNDODhGIC8qIEIzRGF0YVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzNGQ0ZD
MUMxNjI1QkUwMDMyM0Y2NyAvKiBCM0RvbWluYXRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NkI4QUQ5MUM0RUREQTIwMDk2OTA1MiAvKiBCM0R1cGxpY2F0ZVRhaWxzLmggaW4gSGVhZGVycyAq
LywKQEAgLTgzNjYsNiArODM4Myw3IEBACiAJCQkJMEYzOTJDOEExQjQ2MTg4NDAwODQ0NzI4IC8q
IERGR09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1
NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyMzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFu
dG9tSW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYw
MEM3MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIxOUQwQkE3
RDAwQjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjQ4LDYg
KzEwMjY2LDcgQEAKIAkJCQk5RTcyOTQwNzE5MEYwMUE1MDAxQTkxQjUgLyogSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVCNzE4NUI4QkQzMDA3RTk1QUQg
LyogSW5qZWN0ZWRTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxNEIyQzIxODVBNjg0
NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjJDNjNCNjFFNjM0M0VBMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNThFMzU5MTE4NjBERUNGMDAxRjI0RkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTNFNUNBMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4NDBFMjAxODdCN0I4NjAw
ODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAy
NjYsNiArMTAyODUsNyBAQAogCQkJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUzMjQzOEIx
ODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTBFNEI2MTE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBB
aXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTUxNjVEMjFCREYw
Qjk4MDAzQjc1QzEgLyogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNGMTA3RUMzNzYwMDQyN0E0OCAvKiBJbnRlcm5h
bEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNf
SklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworQXRvbWljVmFsdWU6On5B
dG9taWNWYWx1ZSgpCit7Cit9CisKK1dpZHRoIEF0b21pY1ZhbHVlOjphY2Nlc3NXaWR0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fd2lkdGg7Cit9CisKK3ZvaWQgQXRvbWljVmFsdWU6OmR1bXBN
ZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAg
b3V0LnByaW50KGNvbW1hLCAid2lkdGggPSAiLCBtX3dpZHRoKTsKKyAgICAKKyAgICBNZW1vcnlW
YWx1ZTo6ZHVtcE1ldGEoY29tbWEsIG91dCk7Cit9CisKK1ZhbHVlKiBBdG9taWNWYWx1ZTo6Y2xv
bmVJbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbmV3IEF0b21pY1ZhbHVlKCp0aGlzKTsKK30K
KworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lk
dGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQg
PSAwKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgb3BlcmFuZC0+dHlw
ZSgpLCBvcmlnaW4sIG9mZnNldCwgb3BlcmFuZCwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lk
dGgpCit7CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBB
U1NFUlQoYmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKyAg
ICAKKyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6
CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNh
c2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9t
aWNYY2hnOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtp
bmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFs
dWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDog
TWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwga2luZC5vcGNvZGUoKSA9PSBBdG9taWNX
ZWFrQ0FTID8gSW50MzIgOiBleHBlY3RlZFZhbHVlLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCBl
eHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7
CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBBU1NFUlQo
YmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKworICAgIHN3
aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNl
IEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQXRvbWljVmFsdWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisj
aW5jbHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwor
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQXRvbWljVmFsdWUgOiBwdWJsaWMgTWVtb3J5VmFsdWUg
eworcHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGlzQXRvbWljKGtpbmQub3Bjb2RlKCkpOworICAgIH0KKyAgICAKKyAgICB+
QXRvbWljVmFsdWUoKTsKKyAgICAKKyAgICBUeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJl
dHVybiBjaGlsZCgwKS0+dHlwZSgpOyB9CisgICAgCisgICAgV2lkdGggb3BlcmF0aW9uV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgCisgICAgLy8gU3lub255bSBmb3Igd2lk
dGgoKSwgaWYgeW91J3JlIGFjY2Vzc2luZyB2aWEgTWVtb3J5VmFsdWUuCisgICAgV2lkdGggYWNj
ZXNzV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1
bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
CisgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtpbmQs
IE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQgPSAwKTsKKyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBW
YWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwKTsKKyAgICAKKyAgICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2Vy
dGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMzUgKzM2LDEzIEBACiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsKIAogQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0
KFByb2NlZHVyZSAmcHJvYykKLSAgICA6IG1fcHJvYyhwcm9jKQorICAgIDogR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0KHByb2MubV9ibG9ja3MpCisgICAgLCBtX3Byb2MocHJvYykKIHsKIH0KIAog
QmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpIHsgfQogCi12b2lkIEJsb2Nr
SW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCi17Ci0gICAg
bV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOwotfQotCi1CYXNpY0Jsb2Nr
KiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVl
bmN5KQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNC
bG9jayhVSU5UX01BWCwgZnJlcXVlbmN5KSk7Ci0gICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxv
Y2suZ2V0KCk7Ci0gICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2Nr
KSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9u
U2V0OjppbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5KQot
ewotICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVl
bmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7Ci19Ci0KLUJhc2ljQmxvY2sq
IEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91Ymxl
IGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJl
cXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7Ci19
Ci0KIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcndhcmQoCiAgICAgQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqIGluc2Vy
dGlvblNldCwgZG91YmxlIGZyZXF1ZW5jeSkKIHsKQEAgLTEwMiwzMiArODAsNiBAQCBCYXNpY0Js
b2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotYm9vbCBCbG9ja0luc2VydGlvblNldDo6ZXhlY3V0ZSgpCi17Ci0gICAgaWYgKG1faW5zZXJ0
aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBXZSBh
bGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5l
ZWQgdG8gc29ydCB0aGVtIGJlZm9yZQotICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0
aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8g
YmUKLSAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCi0gICAgYnViYmxlU29ydCht
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKLQotICAgIGV4ZWN1dGVJ
bnNlcnRpb25zKG1fcHJvYy5tX2Jsb2NrcywgbV9pbnNlcnRpb25zKTsKLSAgICAKLSAgICAvLyBQ
cnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0
IGl0J3MKLSAgICAvLyBoZWFsdGh5IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5n
LgotICAgIG1fcHJvYy5tX2Jsb2Nrcy5yZW1vdmVBbGxNYXRjaGluZygKLSAgICAgICAgWyZdIChz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIHJldHVybiAhYmxvY2tQdHI7Ci0gICAgICAgIH0pOwotICAgIAotICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9wcm9jLm1fYmxvY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3By
b2MubV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQot
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5z
ZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKICNp
bmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwyNiArMzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CiAKIGNsYXNzIEluc2VydGlvblNldDsKIAotdHlwZWRlZiBXVEY6Okluc2Vy
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOwordHlwZWRl
ZiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJs
b2NrSW5zZXJ0aW9uOwogCi1jbGFzcyBCbG9ja0luc2VydGlvblNldCB7CitjbGFzcyBCbG9ja0lu
c2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4g
ewogcHVibGljOgogICAgIEJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSYpOwogICAgIH5CbG9j
a0luc2VydGlvblNldCgpOwogICAgIAotICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYp
OwotCi0gICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCi0gICAgQmFz
aWNCbG9jayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7
Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVz
dWFsbHkgeW91IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQotICAgIC8vIGFyZ3VtZW50LiBQ
YXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdi
ZWZvcmUnIGJsb2NrLiBUaGF0J3MKLSAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCi0gICAg
QmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1
ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2
ZW4gYmxvY2suCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIs
IGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQogICAgIC8vIEEgaGVscGVyIHRvIHNwbGl0IGEg
YmxvY2sgd2hlbiBmb3J3YXJkIGl0ZXJhdGluZyBvdmVyIGl0LiBJdCBjcmVhdGVzIGEgbmV3IGJs
b2NrIHRvIGhvbGQKICAgICAvLyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYXQg
dmFsdWVJbmRleC4gVGhlIGN1cnJlbnQgYmxvY2sgaXMgbGVmdCB3aXRoCiAgICAgLy8gZXZlcnl0
aGluZyBhdCBhbmQgYWZ0ZXIgdmFsdWVJbmRleC4gSWYgdGhlIG9wdGlvbmFsIEluc2VydGlvblNl
dCBpcyBwcm92aWRlZCwgaXQgd2lsbCBnZXQKQEAgLTgwLDEyICs2OCw5IEBAIHB1YmxpYzoKICAg
ICBCYXNpY0Jsb2NrKiBzcGxpdEZvcndhcmQoCiAgICAgICAgIEJhc2ljQmxvY2sqLCB1bnNpZ25l
ZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0KiA9IG51bGxwdHIsCiAgICAgICAgIGRvdWJsZSBm
cmVxdWVuY3kgPSBQTmFOKTsKLSAgICAKLSAgICBib29sIGV4ZWN1dGUoKTsKIAogcHJpdmF0ZToK
ICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKLSAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1f
aW5zZXJ0aW9uczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAg
ICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8
fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3Zlcmxh
cHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7
CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZl
bmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0
IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9w
ZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhl
ci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5u
ZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9
PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAg
JiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShj
b25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVj
dHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwg
IldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwxMCBA
QCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzE3MwogICAgIGJvb2wgcmVhZHNQaW5uZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgd3JpdGVzUGlubmVkIHsgZmFsc2UgfTsKKyAgICAKKyAgICAvLyBNZW1vcnkgZmVuY2VzIGNh
bm5vdCBiZSByZW9yZGVyZWQgYXJvdW5kIGVhY2ggb3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBl
ZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQKKyAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVt
b3J5IGZlbmNlLgorICAgIGJvb2wgZmVuY2UgeyBmYWxzZSB9OwogCiAgICAgSGVhcFJhbmdlIHdy
aXRlczsKICAgICBIZWFwUmFuZ2UgcmVhZHM7CkBAIC04OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZl
Y3RzIHsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKICAgICAgICAg
cmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9
IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCkBAIC0xMDMsNyArMTA4LDcgQEAgc3RydWN0IEVmZmVjdHMgewogCiAgICAg
Ym9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdGVybWluYWwg
fHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQ
aW5uZWQ7CisgICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRl
c0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9CiAK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgcmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVz
ZSByZXNwZWN0aXZlIGVmZmVjdHMgd291bGQgY2hhbmdlIHByb2dyYW0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NDIsNiArMTQyLDcgQEAgc3RydWN0IEltcHVyZUJsb2NrRGF0YSB7CiAKICAgICBSYW5nZVNldDxI
ZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlzIG9ubHkgZ2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0b3Jl
IGVsaW1pbmF0aW9uLgogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdl
dHMgdXNlZCBmb3IgYm90aCBsb2FkIGFuZCBzdG9yZSBlbGltaW5hdGlvbi4KKyAgICBib29sIGZl
bmNlOwogCiAgICAgTWVtb3J5VmFsdWVNYXAgc3RvcmVzQXRIZWFkOwogICAgIE1lbW9yeVZhbHVl
TWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsKQEAgLTE3NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNT
dG9yZSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9y
eS0+cmFuZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBz
KG1lbW9yeS0+cmFuZ2UoKSkpCisgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5v
dmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCisgICAgICAgICAgICAgICAgICAgICYmICghZGF0YS5m
ZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5jZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5z
dG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7CiAgICAgICAgICAgICAgICAgZGF0YS5yZWFkcy5hZGQo
ZWZmZWN0cy5yZWFkcyk7CiAKICAgICAgICAgICAgICAgICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9
IGVmZmVjdHMud3JpdGVzKQogICAgICAgICAgICAgICAgICAgICBjbG9iYmVyKGRhdGEsIHdyaXRl
cyk7CisgICAgICAgICAgICAgICAgZGF0YS5mZW5jZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG1lbW9yeSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlW
YWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7CkBAIC00NzgsNiArNDgxLDkgQEAgcHJpdmF0ZToKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVBZnRlckNsb2Ji
ZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXImIGZpbHRlcikKICAg
ICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBl
bGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0b3JlIHRvIHRo
ZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFueSBvcGVyYXRpb24g
dGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxpa2UgaXQgc2hvdWxk
IGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3Jp
dHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIApAQCAtNjE0LDYg
KzYyMCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIp
OwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNG
ZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChNZW1vcnlWYWx1ZSog
bWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7CiAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91
bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIz
X0pJVCkKKworI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBJbnNlcnRpb25T
ZXQ7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJhc2ljQmxvY2s+CitjbGFzcyBHZW5lcmljQmxvY2tJ
bnNlcnRpb25TZXQgeworcHVibGljOgorICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRpb248c3RkOjp1
bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBCbG9ja0luc2VydGlvbjsKKyAgICAKKyAgICBCbG9ja0lu
c2VydGlvblNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiYgYmxvY2tzKQor
ICAgICAgICA6IG1fYmxvY2tzKGJsb2NrcykKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQg
aW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5zZXJ0aW9uKQorICAgIHsKKyAgICAgICAgbV9pbnNl
cnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOworICAgIH0KKworICAgIC8vIEluc2Vy
dCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGluZGV4LgorICAgIEJhc2ljQmxvY2sqIGluc2VydCh1
bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pCisgICAgeworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgs
IGZyZXF1ZW5jeSkpOworICAgICAgICBCYXNpY0Jsb2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsK
KyAgICAgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8vIEluc2VydHMgYSBuZXcgYmxv
Y2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUg
ZnJlcXVlbmN5CisgICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVz
dCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxvY2suIFRoYXQncworICAgIC8v
IHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KKyAgICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFz
aWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAgICAg
IHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8g
ZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7CisgICAgfQorCisgICAgLy8gSW5zZXJ0
cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxvY2suCisgICAgQmFzaWNCbG9jayogaW5z
ZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGluc2VydChhZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5jeSA9
PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBhZnRlci0+ZnJlcXVlbmN5KCkpOworICAgIH0KKwor
ICAgIGJvb2wgZXhlY3V0ZSgpCisgICAgeworICAgICAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIC8vIFdl
IGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4gYW55IG9yZGVyLiBTbywgd2Ug
bmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCisgICAgICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRl
SW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQg
aXQgdG8gYmUKKyAgICAgICAgLy8gZmFzdCwgc28gd2UgdXNlIGJ1YmJsZSBzb3J0LgorICAgICAg
ICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOwor
ICAgICAgICAKKyAgICAgICAgZXhlY3V0ZUluc2VydGlvbnMobV9ibG9ja3MsIG1faW5zZXJ0aW9u
cyk7CisgICAgICAgIAorICAgICAgICAvLyBQcnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBp
c24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MKKyAgICAgICAgLy8gaGVhbHRoeSB0byBr
ZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KKyAgICAgICAgbV9ibG9ja3MucmVtb3Zl
QWxsTWF0Y2hpbmcoCisgICAgICAgICAgICBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2Nr
PiYgYmxvY2tQdHIpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIHJldHVybiAhYmxvY2tQdHI7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRo
ZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fYmxvY2tzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9ibG9ja3NbaV0t
Pm1faW5kZXggPSBpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitw
cml2YXRlOgorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBtX2Jsb2Nr
czsKKyAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtODgsNiArODgsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7CiAgICAgfQogICAgIAorICAgIEhlYXBSYW5nZSBvcGVyYXRvcnwoY29uc3QgSGVhcFJhbmdl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBIZWFwUmFuZ2UoCisgICAgICAg
ICAgICBzdGQ6Om1pbihtX2JlZ2luLCBvdGhlci5tX2JlZ2luKSwKKyAgICAgICAgICAgIHN0ZDo6
bWF4KG1fZW5kLCBvdGhlci5tX2VuZCkpOworICAgIH0KKyAgICAKICAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsgfQogCiAgICAgdW5z
aWduZWQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xODUsNiArMTg1LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2Vk
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAgICAgaWYg
KGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1sb2FkIGZl
bmNlLiBUaGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8gdGVsbCB0
aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxvYWQgbW90
aW9uLgorICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAgICAgICAg
ICAgICAgIGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAgICAgIGZl
bmNlLT53cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1bmxvY2sg
YSBidW5jaCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBtX25v
ZGUtPnJlcGxhY2VXaXRoQm90dG9tKG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4KTsKKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03Miw2ICs3MiwxNCBAQCBuYW1lc3BhY2UgewogCiBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKIAorLy8gRklYTUU6IFdlIHdvdWxkbid0IG5lZWQgdGhpcyBpZiBBaXIgc3VwcG9ydGVk
IFdpZHRoIG1vZGlmaWVycyBpbiBBaXI6OktpbmQuCisvLyBPT1BTISEhIChuZWVkIGEgYnVnIFVS
TCkKKyNkZWZpbmUgT1BDT0RFX0ZPUl9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKKyAgICAod2lk
dGgpID09IFdpZHRoOCA/IG9wY29kZSAjIyA4IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/
IG9wY29kZSAjIyAxNiA6IFwKKyAgICAod2lkdGgpID09IFdpZHRoMzIgPyBvcGNvZGUgIyMgMzIg
OiBcCisgICAgb3Bjb2RlICMjIDY0KQorCiBjbGFzcyBMb3dlclRvQWlyIHsKIHB1YmxpYzoKICAg
ICBMb3dlclRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQpAQCAtMTMyLDYgKzE0MCwxMiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJMb3dlcmluZyBCbG9jayAiLCAqYmxvY2ssICI6XG4iKTsKICAgICAgICAgICAgIAorICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3JyZWN0
bHkuCisgICAgICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxv
Y2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2Nr
XS0+c3VjY2Vzc29ycygpLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgQWlyOjpGcmVxdWVu
dGVkQmxvY2sobV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNjZXNzb3IuZnJl
cXVlbmN5KCkpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gUHJvY2VzcyBibG9j
a3MgaW4gcmV2ZXJzZSBvcmRlciBzbyB3ZSBzZWUgdXNlcyBiZWZvcmUgZGVmcy4gVGhhdCdzIHdo
YXQgYWxsb3dzIHVzCiAgICAgICAgICAgICAvLyB0byBtYXRjaCBwYXR0ZXJucyBlZmZlY3RpdmVs
eS4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGktLTspIHsK
QEAgLTE0OSwxOCArMTYzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2lu
c3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAg
ICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1f
aW5zdHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDog
bV9pbnN0c1tpXSkKLSAgICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5h
cHBlbmRJbnN0KFdURk1vdmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAv
LyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAg
ICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3Vj
Y2Vzc29ycygpKSB7Ci0gICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNj
ZXNzb3JzKCkuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9j
ayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3ko
KSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rp
b25zKG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KIAogICAgICAgICBBaXI6Oklu
c2VydGlvblNldCBpbnNlcnRpb25TZXQobV9jb2RlKTsKQEAgLTUzOCw3ICs1NDEsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwogCiAgICAgICAgIGludDMyX3Qgb2Zmc2V0
ID0gdmFsdWUtPm9mZnNldCgpOwotICAgICAgICBXaWR0aCB3aWR0aCA9IHZhbHVlLT5hY2Nlc3NX
aWR0aCgpOworICAgICAgICBXaWR0aCB3aWR0aCA9IHZhbHVlLT5sb2FkU3RvcmVXaWR0aCgpOwog
CiAgICAgICAgIEFyZyByZXN1bHQgPSBlZmZlY3RpdmVBZGRyKHZhbHVlLT5sYXN0Q2hpbGQoKSwg
b2Zmc2V0LCB3aWR0aCk7CiAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNWYWxpZEZvcm0od2lkdGgp
KTsKQEAgLTU2MiwxMSArNTY1LDE2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQXJnUHJvbWlzZSBs
b2FkUHJvbWlzZUFueU9wY29kZShWYWx1ZSogbG9hZFZhbHVlKQogICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKSk7CiAgICAgICAgIGlmICgh
Y2FuQmVJbnRlcm5hbChsb2FkVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwogICAg
ICAgICBpZiAoY3Jvc3Nlc0ludGVyZmVyZW5jZShsb2FkVmFsdWUpKQogICAgICAgICAgICAgcmV0
dXJuIEFyZygpOwotICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChhZGRyKGxvYWRWYWx1ZSksIGxv
YWRWYWx1ZSk7CisgICAgICAgIGlmIChsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNG
ZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIEFyZygpOworICAgICAgICBBcmcgbG9hZEFkZHIg
PSBhZGRyKGxvYWRWYWx1ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxvYWRBZGRyKTsKKyAg
ICAgICAgQXJnUHJvbWlzZSByZXN1bHQobG9hZEFkZHIsIGxvYWRWYWx1ZSk7CiAgICAgICAgIGlm
IChsb2FkVmFsdWUtPnRyYXBzKCkpCiAgICAgICAgICAgICByZXN1bHQuc2V0VHJhcHModHJ1ZSk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC05MzEsMTAgKzkzOSwxNSBAQCBwcml2YXRlOgog
ICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIENvbW11
dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wgdHJ5QXBw
ZW5kU3RvcmVCaW5PcChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOworICAgICAgICAKICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bj
b2RlNjQsIGxlZnQtPnR5cGUoKSk7CiAgICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUt
PmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAKICAgICAgICAgQXJnIHN0b3JlQWRkciA9IGFkZHIobV92YWx1ZSk7CiAgICAg
ICAgIEFTU0VSVChzdG9yZUFkZHIpOwogCkBAIC05OTQsMTAgKzEwMDcsNDggQEAgcHJpdmF0ZToK
IAogICAgICAgICByZXR1cm4gSW5zdChtb3ZlLCBtX3ZhbHVlLCB0bXAodmFsdWUpLCBkZXN0KTsK
ICAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNvZGUoV2lkdGggd2lkdGgsIEJh
bmsgYmFuaywgYm9vbCByZWxlYXNlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh3aWR0aCkgewor
ICAgICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0g
R1ApOworICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDggOiBTdG9yZTg7Cisg
ICAgICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0g
R1ApOworICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDE2IDogU3RvcmUxNjsK
KyAgICAgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAg
ICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVS
ZWwzMiA6IE1vdmUzMjsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRmxvYXQ7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXaWR0aDY0
OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM2NEJpdCgpKTsKKyAgICAgICAgICAgIHN3
aXRjaCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVsZWFzZSA/IFN0b3JlUmVsNjQgOiBNb3ZlOworICAgICAgICAgICAgY2FzZSBGUDoKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIE1vdmVEb3VibGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAg
ICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShWYWx1ZSogdmFsdWUpCisgICAgeworICAg
ICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAg
ICAgICByZXR1cm4gc3RvcmVPcGNvZGUobWVtb3J5LT5sb2FkU3RvcmVXaWR0aCgpLCBtZW1vcnkt
PmFjY2Vzc0JhbmsoKSwgbWVtb3J5LT5oYXNGZW5jZSgpKTsKKyAgICB9CiAKICAgICBJbnN0IGNy
ZWF0ZVN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsKLSAgICAgICAg
QWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IG1vdmVGb3JUeXBlKHZhbHVlLT50eXBlKCkpOworICAg
ICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gc3RvcmVPcGNvZGUodmFsdWUpOwogICAgICAg
ICByZXR1cm4gY3JlYXRlU3RvcmUobW92ZU9wY29kZSwgdmFsdWUsIGRlc3QpOwogICAgIH0KIApA
QCAtMTAwNiw3ICsxMDU3LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGFwcGVuZCh0cmFw
cGluZ0luc3QobV92YWx1ZSwgY3JlYXRlU3RvcmUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSkpOwogICAgIH0KLQorICAgIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlw
ZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTA3Myw2ICsxMTI0LDIxIEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoaW5zdCk7CiAg
ICAgfQorICAgIAorICAgIHZvaWQgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKEFpcjo6QmFz
aWNCbG9jayogdGFyZ2V0KQorICAgIHsKKyAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1
Y3Rpb25zLiBtX2luc3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJv
Y2VzcworICAgICAgICAvLyBpdCBpbiByZXZlcnNlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2luc3RzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDog
bV9pbnN0c1tpXSkKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmFwcGVuZEluc3QoV1RGTW92ZShp
bnN0KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdm9pZCBzcGxpdEJsb2NrKEJhc2lj
QmxvY2sqJiBwcmV2aW91c0Jsb2NrLCBCYXNpY0Jsb2NrKiYgbmV4dEJsb2NrKQorICAgIHsKKyAg
ICAgICAgCisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJn
dW1lbnRzPgogICAgIFQqIGVuc3VyZVNwZWNpYWwoVComIGZpZWxkLCBBcmd1bWVudHMmJi4uLiBh
cmd1bWVudHMpCkBAIC0xMTIzLDcgKzExODksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoKICAgICAg
ICAgICAgICAgICBhcmcgPSBBcmc6OmNhbGxBcmcodmFsdWUucmVwKCkub2Zmc2V0RnJvbVNQKCkp
OwotICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlLnZhbHVlKCksIGFyZyk7CisgICAg
ICAgICAgICAgICAgYXBwZW5kU3RvcmUobW92ZUZvclR5cGUodmFsdWUudmFsdWUoKSksIGFyZyk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTcxLDMwICsyMDM3LDUw
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ6
IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgbW92ZUZvclR5cGUo
bV92YWx1ZS0+dHlwZSgpKSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7
CisgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFs
dWU+KCk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBBaXI6Ok9vcHM7CisgICAg
ICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNo
IChtZW1vcnktPnR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAg
ICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3EzMjsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgICAgICAgICAgb3Bj
b2RlID0gTG9hZEFjcTY0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBvcGNvZGUgPSBtb3ZlRm9yVHlwZSht
ZW1vcnktPnR5cGUoKSk7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUs
IG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ4
UzogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOFNpZ25l
ZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAg
ICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkt
Pmhhc0ZlbmNlKCkgPyBMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkOFNpZ25lZEV4dGVu
ZFRvMzI7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwg
bV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQ4WjogewotICAgICAgICAgICAgYXBw
ZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOCwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwg
dG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVl
LT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4IDogTG9hZDg7CisgICAg
ICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRk
cihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBjYXNlIExvYWQxNlM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGlu
Z0luc3QobV92YWx1ZSwgTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBt
X3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNlNpZ25lZEV4
dGVuZFRvMzIgOiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRy
YXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcCht
X3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBMb2FkMTZaOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExv
YWQxNiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAg
ICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVu
Y2UoKSA/IExvYWRBY3ExNiA6IExvYWQxNjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0lu
c3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCisgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBBZGQ6IHsKICAgICAgICAgICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC0yMTY2LDYgKzIyNTIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEZXBlbmQ6
IHsKKyAgICAgICAgICAgIGFwcGVuZFVuT3A8RGVwZW5kMzIsIERlcGVuZDY0PihtX3ZhbHVlLT5j
aGlsZCgwKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBjYXNl
IFNobDogewogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludDMyKDEpKSB7
CkBAIC0yMjY2LDcgKzIzNTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWVUb1N0b3JlLCBhZGRyKG1f
dmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIGFkZHIobV92YWx1ZSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIyODcsNyArMjM3OCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcHBlbmRTdG9yZShBaXI6OlN0b3JlOCwgdmFs
dWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFs
dWUsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMjMwOCw3ICsyMzk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGFwcGVuZFN0b3JlKEFpcjo6U3RvcmUxNiwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUp
KTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIHZhbHVlVG9TdG9yZSwgYWRkciht
X3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjc4NCw2ICsy
ODc1LDM4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBhcHBlbmQoQWlyOjpFbnRyeVN3aXRjaCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIEF0b21pY1dlYWtDQVM6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiB2YWx1ZSA9IG1f
dmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworI2lmIENQVShYODZfNjQpCisgICAgICAgICAgICBU
bXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgICAgIGFwcGVuZChyZWxh
eGVkTW92ZUZvclR5cGUodmFsdWUtPm9wZXJhdGlvblR5cGUoKSksIGltbU9yVG1wKHZhbHVlLT5j
aGlsZCgwKSksIGVheCk7CisgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChMb2Nr
Q21wWGNoZywgdmFsdWUtPm9wZXJhdGlvbldpZHRoKCkpLCBlYXgsIHRtcCh2YWx1ZS0+Y2hpbGQo
MSkpLCBhZGRyKHZhbHVlKSwgdG1wKHZhbHVlKSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgICAg
ICAgICAvLyBGSVhNRTogTmVlZCB0byBiZSBhYmxlIHRvIGJyZWFrIHRoZSBiYXNpYyBibG9jay4g
SSB0aGluayB0aGF0IG1lYW5zIGZvcmNpbmcgdGhlIHByb2Nlc3NpbmcKKyAgICAgICAgICAgIC8v
IG9mIGFsbCBjdXJyZW50IG1faW5zdHMgaW50byBzb21lIGJsb2NrLCBnaXZpbmcgaXQgdG8gdXMg
YXMgdGhlIGNvbnRpbnVhdGlvbiwgYW5kIHRoZW4KKyAgICAgICAgICAgIC8vIGxldHRpbmcgdXMg
Ym90aCBjcmVhdGUgbmV3IGJsb2NrcyBhbmQgYXBwZW5kIGluc3RydWN0aW9ucyB0byB0aGUgbmV3
IGJsb2NrIGJlaW5nIHVzZWQgZm9yCisgICAgICAgICAgICAvLyB0aGUgaXNlbCBjdXJzb3IuIFRo
aXMgbWVhbnMgdGhhdCB3ZSBtdXN0IGFsc28gYmUgYWJsZSB0byBvdmVycmlkZSB0aGUgc3VjY2Vz
c29ycyB0byBiZQorICAgICAgICAgICAgLy8gdXNlZCB3aGVuZXZlciB0aGUgaXNlbCBjYXBzIG9m
ZiB0aGUgaXNlbCBjdXJzb3IgKGN1cnJlbnRseSBpdCB1c2VzIHRoZSBCMyBibG9jaydzCisgICAg
ICAgICAgICAvLyBzdWNjZXNzb3JzKS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgdGhpcyB3b3JrcyBiZWNhdXNlIHdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdG8gcHV0
IGFueSBvZiB0aGUgSW5zdHMgaW50byB0aGUgYmxvY2sKKyAgICAgICAgICAgIC8vIHVudGlsIHdo
ZW4gd2UgY2FwIG9mZi4gU28sIHdlIGRvbid0IGhhdmUgdG8ga25vdyB3aGV0aGVyIHRoZSBjb2Rl
IGlzIGdvaW5nIGludG8gdGhlCisgICAgICAgICAgICAvLyBibG9ja1RvQmxvY2sobV9ibG9jaykg
b3Igc29tZXdoZXJlIGVsc2UuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gSSB0aGlu
ayB0aGF0IHRoZSBjYXAtb2ZmLWFuZC1zcGxpdCBzdGVwIHNob3VsZCBtb3ZlIHRoZSBzdWNjZXNz
b3JzIGZyb20gdGhlCisgICAgICAgICAgICAvLyBibG9ja1RvQmxvY2sobV9ibG9jaykgaW50byB0
aGUgbmV3bHkgY3JlYXRlZCBibG9jaywgYW5kIHRoZW4gc2V0IHRoZQorICAgICAgICAgICAgLy8g
YmxvY2tUb0Jsb2NrKG1fYmxvY2spJ3Mgc3VjY2Vzc29yIGxpc3QgdG8gYmUgZW1wdHkuIFRoZSBj
bGllbnQgb2YgdGhlIHNwbGl0IGlzIHRoZW4gZnJlZQorICAgICAgICAgICAgLy8gdG8gbXV0YXRl
IGJsb2NrVG9CbG9jayhtX2Jsb2NrKSdzIHN1Y2Nlc3NvciBsaXN0LiBUaGUgb2RkYmFsbCBvdXRj
b21lIGlzIHRoYXQgdGhlIGJsb2NrcworICAgICAgICAgICAgLy8gd2UgY3JlYXRlIGFmdGVyIHNw
bGl0dGluZyBjb3VsZCBiZSBhd2t3YXJkbHkgb3JkZXJlZC4gQnV0IG1heWJlIHdlIGNhbiBoYW5k
bGUgdGhpcyBieQorICAgICAgICAgICAgLy8gdXNpbmcgYSBBaXI6OkJsb2NrSW5zZXJ0aW9uU2V0
LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIERheXVtIHRoYXQncyBhIGxvdCBvZiB3
b3JrLgorI2Vsc2UKKyNlcnJvciAiQmFkIGFyY2hpdGVjdHVyZSIKKyNlbmRpZgorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJy
ZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwzMCArMzQsNDggQEAgTWVtb3J5VmFsdWU6On5N
ZW1vcnlWYWx1ZSgpCiB7CiB9CiAKK1R5cGUgTWVtb3J5VmFsdWU6OmFjY2Vzc1R5cGUoKSBjb25z
dAoreworICAgIGlmIChpc0xvYWQob3Bjb2RlKCkpKQorICAgICAgICByZXR1cm4gdHlwZSgpOwor
ICAgIC8vIFRoaXMgaGFwcGVucyB0byB3b3JrIGZvciBhdG9taWNzLCB0b28uIFRoYXQncyB3aHkg
QXRvbWljVmFsdWUgZG9lcyBub3QgbmVlZCB0byBvdmVycmlkZSB0aGlzLgorICAgIHJldHVybiBj
aGlsZCgwKS0+dHlwZSgpOworfQorCitCYW5rIE1lbW9yeVZhbHVlOjphY2Nlc3NCYW5rKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gYmFua0ZvclR5cGUoYWNjZXNzVHlwZSgpKTsKK30KKwogc2l6ZV90
IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0CiB7CisgICAgcmV0dXJuIGJ5dGVz
KGFjY2Vzc1dpZHRoKCkpOworfQorCitXaWR0aCBNZW1vcnlWYWx1ZTo6bG9hZFN0b3JlV2lkdGgo
KSBjb25zdAorewogICAgIHN3aXRjaCAob3Bjb2RlKCkpIHsKICAgICBjYXNlIExvYWQ4WjoKICAg
ICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgcmV0dXJuIDE7CisgICAg
ICAgIHJldHVybiBXaWR0aDg7CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoK
ICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIHJldHVybiAyOworICAgICAgICByZXR1cm4gV2lk
dGgxNjsKICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKHR5cGUoKSk7
CisgICAgICAgIHJldHVybiB3aWR0aEZvclR5cGUodHlwZSgpKTsKICAgICBjYXNlIFN0b3JlOgot
ICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZShjaGlsZCgwKS0+dHlwZSgpKTsKKyAgICAgICAgcmV0
dXJuIHdpZHRoRm9yVHlwZShjaGlsZCgwKS0+dHlwZSgpKTsKICAgICBkZWZhdWx0OgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIFdpZHRoODsKICAgICB9CiB9CiAKIFdpZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NX
aWR0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdpZHRoRm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUo
KSk7CisgICAgcmV0dXJuIGxvYWRTdG9yZVdpZHRoKCk7CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6
OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkBA
IC02Nyw2ICs4NSw4IEBAIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYK
ICAgICBpZiAoKGlzTG9hZCgpICYmIGVmZmVjdHMoKS5yZWFkcyAhPSByYW5nZSgpKQogICAgICAg
ICB8fCAoaXNTdG9yZSgpICYmIGVmZmVjdHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkpCiAgICAgICAg
IG91dC5wcmludChjb21tYSwgInJhbmdlID0gIiwgcmFuZ2UoKSk7CisgICAgaWYgKHBoYW50b21S
YW5nZSgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJwaGFudG9tUmFuZ2UgPSAiLCBwaGFu
dG9tUmFuZ2UoKSk7CiB9CiAKIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QK
QEAgLTc0LDYgKzk0LDU4IEBAIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QK
ICAgICByZXR1cm4gbmV3IE1lbW9yeVZhbHVlKCp0aGlzKTsKIH0KIAorLy8gVXNlIHRoaXMgZm9y
bSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0
aGF0IGhhdmUgYSBzdWZmaXggdGhhdAorLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4K
K01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9y
aWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IFZhbHVlKENo
ZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0
KG9mZnNldCkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2gg
KGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBMb2FkOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2Fz
ZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExvYWQxNlM6CisgICAgICAgICAgICBBU1NFUlQodHlw
ZSA9PSBJbnQzMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdG9yZTg6Cisg
ICAgICAgIGNhc2UgU3RvcmUxNjoKKyAgICAgICAgY2FzZSBTdG9yZToKKyAgICAgICAgICAgIEFT
U0VSVCh0eXBlID09IFZvaWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30K
KworLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGlt
cGxpZWQuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2lu
LCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDogTWVtb3J5VmFsdWUo
a2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQoreworICAgIGlmICghQVNTRVJU
X0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBj
YXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoK
KyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0K
K30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZh
bHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRl
ciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwg
Vm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sK
KyAgICBBU1NFUlQoaXNTdG9yZShraW5kLm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NDggKzI3LDE3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNCYW5rLmgi
CiAjaW5jbHVkZSAiQjNIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxvdyBm
ZW5jZWQgbWVtb3J5IGFjY2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVtb3J5
VmFsdWUgOiBwdWJsaWMgVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2VwdHMo
S2luZCBraW5kKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAg
ICAgIGNhc2UgTG9hZDhaOgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBMb2Fk
MTZaOgotICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAg
Y2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNTdG9y
ZShLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAg
ICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBT
dG9yZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wg
aXNMb2FkKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQpICYm
ICFpc1N0b3JlKGtpbmQpOworICAgICAgICByZXR1cm4gaXNNZW1vcnkoa2luZC5vcGNvZGUoKSk7
CiAgICAgfQogCiAgICAgfk1lbW9yeVZhbHVlKCk7CkBAIC03OCw3NiArNDcsNTYgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgSGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2U7
IH0KICAgICB2b2lkIHNldFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9yYW5nZSA9
IHJhbmdlOyB9CisgICAgCisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgcmFuZ2UuCisgICAg
Y29uc3QgSGVhcFJhbmdlJiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlKCk7IH0K
KyAgICB2b2lkIHNldEFjY2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgc2V0UmFu
Z2UocmFuZ2UpOyB9CisgICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBmZW5jZVJhbmdlKCkgY29u
c3QgeyByZXR1cm4gbV9mZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRGZW5jZVJhbmdlKGNvbnN0
IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0KKworICAgIGJvb2wg
aXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3RvcmUob3Bjb2RlKCkpOyB9CisgICAgYm9vbCBp
c0xvYWQoKSBjb25zdCB7IHJldHVybiBpc0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAgICBib29sIGlz
U3RvcmUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVm9pZDsgfQotICAgIGJvb2wgaXNMb2Fk
KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpICE9IFZvaWQ7IH0KKyAgICBib29sIGhhc0ZlbmNlKCkg
Y29uc3QgeyByZXR1cm4gISFmZW5jZVJhbmdlKCk7IH0KIAorICAgIFR5cGUgYWNjZXNzVHlwZSgp
IGNvbnN0OworICAgIEJhbmsgYWNjZXNzQmFuaygpIGNvbnN0OwogICAgIHNpemVfdCBhY2Nlc3NC
eXRlU2l6ZSgpIGNvbnN0OwotICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CisgICAgCisg
ICAgLy8gU2xpZ2h0bHkgZmFzdGVyIHZlcnNpb24gb2YgYWNjZXNzV2lkdGgsIGlmIHlvdSBrbm93
IHRoYXQgeW91J3JlIHdvcmtpbmcgd2l0aCBhIGxvYWQgb3Igc3RvcmUuCisgICAgV2lkdGggbG9h
ZFN0b3JlV2lkdGgoKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIFdpZHRoIGFjY2Vzc1dpZHRo
KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYg
Y29tbWEsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShD
b21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmFsdWUq
IGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBQcm9jZWR1cmU7Ci0KLSAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExv
YWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0
Ci0gICAgLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShL
aW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMy
X3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBl
LCBvcmlnaW4sIHBvaW50ZXIpCisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgorICAgIE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgVHlwZSB0
eXBlLCBPcmlnaW4gb3JpZ2luLCBpbnQzMl90IG9mZnNldCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50
cykKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIGFy
Z3VtZW50cy4uLikKICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5n
ZShIZWFwUmFuZ2U6OnRvcCgpKQogICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQp
IHsKLSAgICAgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2Fz
ZSBMb2FkOgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBMb2FkOFo6
Ci0gICAgICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2WjoKLSAg
ICAgICAgICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJ
bnQzMik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoK
LSAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gVm9pZCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQorICAgIAorICAgIC8vIFVzZSB0
aGlzIGZvcm0gZm9yIExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUg
TG9hZHMgdGhhdCBoYXZlIGEgc3VmZml4IHRoYXQKKyAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVy
bmVkIHR5cGUpLgorICAgIE1lbW9yeVZhbHVlKEtpbmQsIFR5cGUsIE9yaWdpbiwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBs
b2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KLSAgICBNZW1vcnlWYWx1ZShL
aW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9
IDApCi0gICAgICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwg
b2Zmc2V0KQotICAgIHsKLSAgICB9CisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1
ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKTsKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0g
Zm9yIHN0b3Jlcy4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZh
bHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAg
OiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVy
KQotICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAgICAgLCBtX3JhbmdlKEhlYXBSYW5n
ZTo6dG9wKCkpCi0gICAgewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAg
ICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoK
LSAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotCisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBW
YWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAog
ICAgIGludDMyX3QgbV9vZmZzZXQgeyAwIH07Ci0gICAgSGVhcFJhbmdlIG1fcmFuZ2U7CisgICAg
SGVhcFJhbmdlIG1fcmFuZ2UgeyBIZWFwUmFuZ2U6OnRvcCgpIH07CisgICAgSGVhcFJhbmdlIG1f
ZmVuY2VSYW5nZSB7IEhlYXBSYW5nZSgpIH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtODIsNyArODIsNiBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIE1vZCwgLy8gQWxs
IGJldHMgYXJlIG9mZiBhcyB0byB3aGF0IHdpbGwgaGFwcGVuIHdoZW4geW91IGV4ZWN1dGUgdGhp
cyBmb3IgLTJeMzElLTEgYW5kIHglMC4KICAgICBVTW9kLAogCi0KICAgICAvLyBQb2x5bW9ycGhp
YyBuZWdhdGlvbi4gTm90ZSB0aGF0IHdlIG9ubHkgbmVlZCB0aGlzIGZvciBmbG9hdGluZyBwb2lu
dCwgc2luY2UgaW50ZWdlciBuZWdhdGlvbgogICAgIC8vIGlzIGV4YWN0bHkgbGlrZSBTdWIoMCwg
eCkuIEJ1dCB0aGF0J3Mgbm90IHRydWUgZm9yIGZsb2F0aW5nIHBvaW50LiBTdWIoMCwgMCkgaXMg
MCwgd2hpbGUKICAgICAvLyBOZWcoMCkgaXMgLTAuIEFsc28sIHdlIGNhbm9uaWNhbGl6ZSBTdWIo
MCwgeCkgaW50byBOZWcoeCkgaW4gY2FzZSBvZiBpbnRlZ2Vycy4KQEAgLTE2Miw2ICsxNjEsOTkg
QEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBTdG9yZTE2LAogICAgIC8vIFRoaXMgaXMg
YSBwb2x5bW9ycGhpYyBzdG9yZSBmb3IgSW50MzIsIEludDY0LCBGbG9hdCwgYW5kIERvdWJsZS4K
ICAgICBTdG9yZSwKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJl
dHVybnMgYSBib29sZWFuLiBNYXkgY2hvb3NlIHRvIGRvIG5vdGhpbmcgYW5kIHJldHVybiBmYWxz
ZS4gWW91IGNhbgorICAgIC8vIHVzdWFsbHkgYXNzdW1lIHRoYXQgdGhpcyBpcyBmYXN0ZXIgYW5k
IHJlc3VsdHMgaW4gbGVzcyBjb2RlIHRoYW4gQXRvbWljU3Ryb25nQ0FTLCB0aG91Z2ggdGhhdCdz
CisgICAgLy8gbm90IG5lY2Vzc2FyaWx5IHRydWUgb24gSW50ZWwsIGlmIGluc3RydWN0aW9uIHNl
bGVjdGlvbiBkb2VzIGl0cyBqb2IuIEltYWdpbmUgdGhhdCB0aGlzIG9wY29kZSBpcworICAgIC8v
IGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICAvLyBib29sIEF0b21pY1dlYWtDQVMoVCBleHBlY3RlZFZhbHVlLCBU
IG5ld1ZhbHVlLCBUKiBwdHIpCisgICAgLy8geworICAgIC8vICAgICBpZiAoIXJhbmQoKSkKKyAg
ICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gUmVhbCB3b3JsZCBleGFtcGxlIG9mIHRoaXM6
IGNvbnRleHQgc3dpdGNoIG9uIEFSTSB3aGlsZSBkb2luZyBDQVMuCisgICAgLy8gICAgIGlmICgq
cHRyICE9IGV4cGVjdGVkVmFsdWUpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Ly8gICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIHRydWU7CisgICAgLy8g
fQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IGFsbCBhdG9taWNzIHB1dCB0aGUgcG9pbnRlciBs
YXN0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cgbG9hZHMgYW5kIHN0b3JlcyB3b3JrLiBUaGlz
CisgICAgLy8gaXMgYSBnb29meSB0cmFkaXRpb24sIGJ1dCBpdCdzIGhhcm1sZXNzLCBhbmQgYmV0
dGVyIHRoYW4gYmVpbmcgaW5jb25zaXN0ZW50LgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHdl
YWsgQ0FTIGhhcyBubyBmZW5jaW5nIGd1YXJhbnRlZXMgd2hlbiBpdCBmYWlscy4gVGhpcyBtZWFu
cyB0aGF0IHRoZSBmb2xsb3dpbmcKKyAgICAvLyB0cmFuc2Zvcm1hdGlvbiBpcyBhbHdheXMgdmFs
aWQ6CisgICAgLy8KKyAgICAvLyBCZWZvcmU6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5j
aChBdG9taWNXZWFrQ0FTKGV4cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vz
c29yczogVGhlbjojc3VjY2VzcywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQWZ0ZXI6Cisg
ICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5jaChFcXVhbChMb2FkKHB0ciksIGV4cGVjdGVkKSkK
KyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNhdHRlbXB0LCBFbHNlOiNmYWlsCisgICAg
Ly8gICAgIEJCI2F0dGVtcHQ6CisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhl
eHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nl
c3MsIEVsc2U6I2ZhaWwKKyAgICBBdG9taWNXZWFrQ0FTLAorICAgIAorICAgIC8vIEF0b21pYyBj
b21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBEb2VzIG5vdCBoYXZl
IHRoZSBub25kZXRlcm1pbmlzbSBvZiBXZWFrQ0FTLgorICAgIC8vIFRoaXMgaXMgYSBiaXQgbW9y
ZSBjb2RlIGFuZCBhIGJpdCBzbG93ZXIgaW4gc29tZSBjYXNlcywgdGhvdWdoIG5vdCBieSBhIGxv
dC4gSW1hZ2luZSB0aGF0IHRoaXMKKyAgICAvLyBvcGNvZGUgaXMgYXMgaWYgeW91IGRpZCB0aGlz
IGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8v
IFQgQXRvbWljU3Ryb25nQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQor
ICAgIC8vIHsKKyAgICAvLyAgICAgVCBvbGRWYWx1ZSA9ICpwdHI7CisgICAgLy8gICAgIGlmIChv
bGRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgKnB0ciA9IG5ld1ZhbHVl
OworICAgIC8vICAgICByZXR1cm4gb2xkVmFsdWUKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBO
b3RlIHRoYXQgQXRvbWljV2Vha0NBUyBhbmQgQXRvbWljU3Ryb25nQ0FTIHNvcnQgb2YgaGF2ZSB0
aGlzIGtpbmQgb2YgZXF1aXZhbGVuY2U6CisgICAgLy8KKyAgICAvLyBBdG9taWNXZWFrQ0FTKEBl
eHAsIEBuZXcsIEBwdHIpID09IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhAZXhwLCBAbmV3LCBAcHRy
KSwgQGV4cCkKKyAgICAvLworICAgIC8vIEFzc3VtaW5nIHRoYXQgdGhlIFdlYWtDQVMgZG9lcyBu
b3Qgc3B1cmlvdXNseSBmYWlsLCBvZiBjb3Vyc2UuCisgICAgQXRvbWljU3Ryb25nQ0FTLAorICAg
IAorICAgIC8vIEF0b21pY2FsbHkgX19fIGEgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm4gdGhl
IG9sZCB2YWx1ZS4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWljWGNo
Z19fXyhAb3BlcmFuZCwgQHB0cikKKyAgICBBdG9taWNYY2hnQWRkLAorICAgIEF0b21pY1hjaGdB
bmQsCisgICAgQXRvbWljWGNoZ09yLAorICAgIEF0b21pY1hjaGdTdWIsCisgICAgQXRvbWljWGNo
Z1hvciwKKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IGV4Y2hhbmdlIGEgdmFsdWUgd2l0aCBhIG1l
bW9yeSBsb2NhdGlvbi4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWlj
WGNoZyhAbmV3VmFsdWUsIEBwdHIpCisgICAgQXRvbWljWGNoZywKKyAgICAKKyAgICAvLyBJbnRy
b2R1Y2UgYW4gaW52aXNpYmxlIGRlcGVuZGVuY3kgZm9yIGJsb2NraW5nIG1vdGlvbiBvZiBsb2Fk
cyB3aXRoIHJlc3BlY3QgdG8gZWFjaCBvdGhlci4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQHJl
c3VsdCA9IERlcGVuZChAcGhhbnRvbSkKKyAgICAvLworICAgIC8vIFRoaXMgaXMgZXZlbnR1YWxs
eSBjb2RlZ2VuZXJhdGVkIHRvIGhhdmUgbG9jYWwgc2VtYW50aWNzIGFzIGlmIHdlIGRpZDoKKyAg
ICAvLworICAgIC8vIEByZXN1bHQgPSAkMAorICAgIC8vCisgICAgLy8gQnV0IGl0IGVuc3VyZXMg
dGhhdCB0aGUgdXNlcnMgb2YgQHJlc3VsdCBjYW5ub3QgZXhlY3V0ZSB1bnRpbCBAcGhhbnRvbSBp
cyBjb21wdXRlZC4KKyAgICAvLworICAgIC8vIFRoZSBjb21waWxlciBpcyBub3QgYWxsb3dlZCB0
byByZWFzb24gYWJvdXQgdGhlIGZhY3QgdGhhdCBEZXBlbmQgY29kZWdlbmVyYXRlcyB0aGlzIHdh
eS4gQW55IGtpbmQKKyAgICAvLyBvZiB0cmFuc2Zvcm1hdGlvbiBvciBhbmFseXNpcyB0aGF0IHJl
bGllcyBvbiB0aGUgaW5zaWdodCB0aGF0IERlcGVuZCBpcyByZWFsbHkgemVybyBpcyB1bnNvdW5k
LAorICAgIC8vIGJlY2F1c2UgaXQgdW5sb2NrcyByZW9yZGVyaW5nIG9mIHVzZXJzIG9mIEByZXN1
bHQgYW5kIEBwaGFudG9tLgorICAgIC8vCisgICAgLy8gT24gWDg2LCB0aGlzIGlzIGxvd2VyZWQg
dG8gYSBsb2FkLWxvYWQgZmVuY2UgYW5kIEByZXN1bHQgdXNlcyBAcGhhbnRvbSBkaXJlY3RseS4K
KyAgICAvLworICAgIC8vIE9uIEFSTSwgdGhpcyBpcyBsb3dlcmVkIGFzIGlmIGxpa2U6CisgICAg
Ly8KKyAgICAvLyBAcmVzdWx0ID0gQml0WG9yKEBwaGFudG9tLCBAcGhhbnRvbSkKKyAgICAvLwor
ICAgIC8vIEV4Y2VwdCB0aGF0IHRoZSBjb21waWxlciBuZXZlciBnZXRzIGFuIG9wcG9ydHVuaXR5
IHRvIHNpbXBsaWZ5IG91dCB0aGUgQml0WG9yLgorICAgIERlcGVuZCwKIAogICAgIC8vIFRoaXMg
aXMgdXNlZCB0byBjb21wdXRlIHRoZSBhY3R1YWwgYWRkcmVzcyBvZiBhIFdhc20gbWVtb3J5IG9w
ZXJhdGlvbi4gSXQgdGFrZXMgYW4gSW50UHRyCiAgICAgLy8gYW5kIGEgcGlubmVkIHJlZ2lzdGVy
IHRoZW4gY29tcHV0ZXMgdGhlIGFwcHJvcHJpYXRlIEludFB0ciBhZGRyZXNzLiBGb3IgdGhlIHVz
ZS1jYXNlIG9mCkBAIC0zMDEsNiArMzkzLDcxIEBAIGlubGluZSBib29sIGlzRGVmaW5pdGVseVRl
cm1pbmFsKE9wY29kZSAKICAgICB9CiB9CiAKK2lubGluZSBib29sIGlzTG9hZChPcGNvZGUgb3Bj
b2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2Fz
ZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNl
IExvYWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzU3RvcmUoT3Bjb2RlIG9wY29kZSkK
K3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3Rv
cmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0xvYWRT
dG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBM
b2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9h
ZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9yZTE2
OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljKE9w
Y29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dl
YWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2FzZSBBdG9taWNYY2hnQWRk
OgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBj
YXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRv
bWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNNZW1vcnlBY2Nlc3MoT3Bjb2Rl
IG9wY29kZSkKK3sKKyAgICByZXR1cm4gaXNBdG9taWMob3Bjb2RlKSB8fCBpc0xvYWRTdG9yZShv
cGNvZGUpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkocmV2aXNpb24gMjEy
OTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZEludENvbnN0
YW50KE9yaWdpbiwgVHlwZSwgaW50NjRfdCB2YWx1ZSk7CiAgICAgVmFsdWUqIGFkZEludENvbnN0
YW50KFZhbHVlKiwgaW50NjRfdCB2YWx1ZSk7CiAKKyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0
aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIFZhbHVlKiBhZGRCb3R0b20oT3JpZ2luLCBUeXBlKTsK
ICAgICBWYWx1ZSogYWRkQm90dG9tKFZhbHVlKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDYgKzM0Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4o
KSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAg
ICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgTG9hZDoKQEAgLTM1Myw2ICszNTQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAi
LCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5
cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT50eXBlKCkgIT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0
ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgU3RvcmU4OgpAQCAtMzYyLDYgKzM2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFs
dWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9
PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNr
QWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
U3RvcmU6CkBAIC0zNjksOCArMzcyLDQ5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBl
KCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5
cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRl
RmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUp
OwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FT
OgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRy
ZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUo
KSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1
ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgICAgICAg
ICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUo
KSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNo
aWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRh
dGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6Cisg
ICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNo
Z1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgIGNhc2Ug
QXRvbWljWGNoZzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0No
aWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
Pm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkp
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGls
ZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRl
U3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBEZXBlbmQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFz
RXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50
eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUt
PmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwpA
QCAtNTM3LDYgKzU4MSwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUZlbmNlKFZhbHVlKiB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+
KCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICBWQUxJREFU
RShtZW1vcnR5LT5hY2Nlc3NCYW5rKCkgPT0gR1AsICgiRmVuY2UgYXQgIiwgKm1lbW9yeSkpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRlQXRvbWljKFZhbHVlKiB2YWx1ZSkKKyAgICB7
CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSB2YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7
CisgICAgICAgIAorICAgICAgICBWQUxJREFURShiZXN0VHlwZShhdG9taWMtPm9wZXJhdGlvbldp
ZHRoKCkpID09IGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
IH0KIAogICAgIHZvaWQgdmFsaWRhdGVTdGFja0FjY2VzcyhWYWx1ZSogdmFsdWUpCiAgICAgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MTAsNiArNTEwLDcgQEAgYm9vbCBWYWx1ZTo6cmV0dXJuc0Jvb2woKSBjb25zdAogICAgIGNh
c2UgQWJvdmVFcXVhbDoKICAgICBjYXNlIEJlbG93RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5v
cmRlcmVkOgorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgY2FzZSBQaGk6CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGhl
cmUuCkBAIC01ODksNiArNTkwLDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAg
ICAgY2FzZSBCZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKICAgICBjYXNl
IFNlbGVjdDoKKyAgICBjYXNlIERlcGVuZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXY6
CiAgICAgY2FzZSBVRGl2OgpAQCAtNjAwLDE2ICs2MDIsNDQgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZm
ZWN0cygpIGNvbnN0CiAgICAgY2FzZSBMb2FkOFM6CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNh
c2UgTG9hZDE2UzoKLSAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJlc3VsdC5yZWFkcyA9IGFzPE1l
bW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAgIGNhc2UgTG9hZDogeworICAgICAgICBNZW1vcnlW
YWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9
IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+cGhhbnRvbVJhbmdlKCkpIHsK
KyAgICAgICAgICAgIHJlc3VsdC53cml0ZXMgPSBtZW1vcnktPnBoYW50b21SYW5nZSgpOworICAg
ICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQu
Y29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNl
IFN0b3JlODoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmVz
dWx0LndyaXRlcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAgIGNhc2UgU3RvcmU6
IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAg
ICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5
LT5waGFudG9tUmFuZ2UoKSkgeworICAgICAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5w
aGFudG9tUmFuZ2UoKTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25n
Q0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6Cisg
ICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2Ug
QXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgTWVtb3J5VmFs
dWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBt
ZW1vcnktPnJhbmdlKCkgfCBtZW1vcnktPnBoYW50b21SYW5nZSgpOworICAgICAgICByZXN1bHQu
d3JpdGVzID0gbWVtb3J5LT5yYW5nZSgpIHwgbWVtb3J0eS0+cGhhbnRvbVJhbmdlKCk7CisgICAg
ICAgIGlmIChtZW1vcnktPnBoYW50b21SYW5nZSgpKQorICAgICAgICAgICAgcmVzdWx0LmZlbmNl
ID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgcmVzdWx0LnJl
YWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CkBAIC02MTcsMTggKzY0Nyw3IEBAIEVm
ZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgICAgICBjb25zdCBGZW5jZVZhbHVlKiBm
ZW5jZSA9IGFzPEZlbmNlVmFsdWU+KCk7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IGZlbmNlLT5y
ZWFkOwogICAgICAgICByZXN1bHQud3JpdGVzID0gZmVuY2UtPndyaXRlOwotICAgICAgICAKLSAg
ICAgICAgLy8gUHJldmVudCBraWxsaW5nIG9mIGZlbmNlcyB0aGF0IGNsYWltIG5vdCB0byB3cml0
ZSBhbnl0aGluZy4gSXQncyBhIGJpdCB3ZWlyZCB0aGF0IHdlIHVzZQotICAgICAgICAvLyBsb2Nh
bCBzdGF0ZSBhcyB0aGUgd2F5IHRvIGRvIHRoaXMsIGJ1dCBpdCBoYXBwZW5zIHRvIHdvcms6IHdl
IG11c3QgYXNzdW1lIHRoYXQgd2UgY2Fubm90Ci0gICAgICAgIC8vIGtpbGwgd3JpdGVzTG9jYWxT
dGF0ZSB1bmxlc3Mgd2UgdW5kZXJzdGFuZHMgZXhhY3RseSB3aGF0IHRoZSBpbnN0cnVjdGlvbiBp
cyBkb2luZyAobGlrZQotICAgICAgICAvLyB0aGUgd2F5IHRoYXQgZml4U1NBIHVuZGVyc3RhbmRz
IFNldC9HZXQgYW5kIHRoZSB3YXkgdGhhdCByZWR1Y2VTdHJlbmd0aCBhbmQgb3RoZXJzCi0gICAg
ICAgIC8vIHVuZGVyc3RhbmQgVXBzaWxvbikuIFRoaXMgd291bGQgb25seSBiZWNvbWUgYSBwcm9i
bGVtIGlmIHdlIGhhZCBzb21lIGFuYWx5c2lzIHRoYXQgd2FzCi0gICAgICAgIC8vIGxvb2tpbmcg
dG8gdXNlIHRoZSB3cml0ZXNMb2NhbFN0YXRlIGJpdCB0byBpbnZhbGlkYXRlIGEgQ1NFIG92ZXIg
bG9jYWwgc3RhdGUgb3BlcmF0aW9ucy4KLSAgICAgICAgLy8gVGhlbiBhIEZlbmNlIHdvdWxkIGxv
b2sgYmxvY2ssIHNheSwgdGhlIGVsaW1pbmF0aW9uIG9mIGEgcmVkdW5kYW50IEdldC4gQnV0IGl0
IGxpa2UKLSAgICAgICAgLy8gdGhhdCdzIG5vdCBhdCBhbGwgaG93IG91ciBvcHRpbWl6YXRpb25z
IGZvciBTZXQvR2V0L1Vwc2lsb24vUGhpIHdvcmsgLSB0aGV5IGdyb2sgdGhlaXIKLSAgICAgICAg
Ly8gb3BlcmF0aW9ucyBkZWVwbHkgZW5vdWdoIHRoYXQgdGhleSBoYXZlIG5vIG5lZWQgdG8gY2hl
Y2sgdGhpcyBiaXQgLSBzbyB0aGlzIGNoZWF0IGlzCi0gICAgICAgIC8vIGZpbmUuCi0gICAgICAg
IHJlc3VsdC53cml0ZXNMb2NhbFN0YXRlID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0g
dHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ0NhbGw6CkBAIC02OTQsNiAr
NzEzLDcgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgY2FzZSBDaGVjazoKICAg
ICBjYXNlIEJpdHdpc2VDYXN0OgogICAgIGNhc2UgTmVnOgorICAgIGNhc2UgRGVwZW5kOgogICAg
ICAgICByZXR1cm4gVmFsdWVLZXkoa2luZCgpLCB0eXBlKCksIGNoaWxkKDApKTsKICAgICBjYXNl
IEFkZDoKICAgICBjYXNlIFN1YjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw4IEBAIHB1YmxpYzoKICAgICAvLyB2YWx1ZXMg
d2l0aCBJZGVudGl0aWVzIG9uIGJvdHRvbSBjb25zdGFudHMuIEZvciB0aGlzIHJlYXNvbiwgdGhp
cyB0YWtlcyBhIGNhbGxiYWNrIHRoYXQgaXMKICAgICAvLyByZXNwb25zaWJsZSBmb3IgY3JlYXRp
bmcgYm90dG9tcy4gVGhlcmUncyBhIHV0aWxpdHkgZm9yIHRoaXMsIHNlZSBCM0JvdHRvbVByb3Zp
ZGVyLmguIFlvdQogICAgIC8vIGNhbiBhbHNvIGFjY2VzcyB0aGF0IHV0aWxpdHkgdXNpbmcgcmVw
bGFjZVdpdGhCb3R0b20oSW5zZXJ0aW9uU2V0Jiwgc2l6ZV90KS4KKyAgICAvLworICAgIC8vIFlv
dSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQm90dG9tUHJvdmlkZXI+CiAgICAgdm9pZCByZXBsYWNlV2l0aEJvdHRvbShjb25zdCBCb3R0
b21Qcm92aWRlciYpOwogICAgIApAQCAtMzIxLDYgKzMyMyw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgSVRvRjoKICAgICAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgY2FzZSBCcmFu
Y2g6CisgICAgICAgIGNhc2UgRGVwZW5kOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFy
Z3MgIT0gMSkpCiAgICAgICAgICAgICAgICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsKICAgICAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwzOCBAQAogCiAjaW5jbHVkZSA8d3RmL1ByaW50U3Ry
ZWFtLmg+CiAKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitUeXBlIGJlc3RUeXBl
KEJhbmsgYmFuaywgV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNh
c2UgV2lkdGg4OgorICAgIGNhc2UgV2lkdGgxNjoKKyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAg
IHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIElu
dDMyOworICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIEZsb2F0OworICAgICAg
ICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBWb2lkOworICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAg
ICAgIGNhc2UgR1A6CisgICAgICAgICAgICByZXR1cm4gSW50NjQ7CisgICAgICAgIGNhc2UgRlA6
CisgICAgICAgICAgICByZXR1cm4gRG91YmxlOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lkOworICAgIH0KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBWb2lkOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKKwogbmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkIzOjpXaWR0aCB3aWR0aCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzV2lkdGguaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzV2lkdGguaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsOCBAQCBp
bmxpbmUgV2lkdGggd2lkdGhGb3JUeXBlKFR5cGUgdHlwZSkKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAorVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKTsKKwogaW5s
aW5lIFdpZHRoIGNvbnNlcnZhdGl2ZVdpZHRoKEJhbmsgYmFuaykKIHsKICAgICByZXR1cm4gYmFu
ayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2NDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRp
b25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisj
aW5jbHVkZSAiQWlyQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRl
IDx3dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFt
ZXNwYWNlIEFpciB7CisKK0Jsb2NrSW5zZXJ0aW9uU2V0OjpCbG9ja0luc2VydGlvblNldChDb2Rl
ICZjb2RlKQorICAgIDogR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KGNvZGUubV9ibG9ja3MpCit7
Cit9CisKK0Jsb2NrSW5zZXJ0aW9uU2V0Ojp+QmxvY2tJbnNlcnRpb25TZXQoKQoreworfQorCit9
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklU
KQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9u
U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9j
a0luc2VydGlvblNldC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzR2VuZXJpY0Jsb2Nr
SXNuZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9JbnNl
cnRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworY2xhc3MgSW5zZXJ0aW9uU2V0OworCit0eXBl
ZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24g
QmxvY2tJbnNlcnRpb247CisKK2NsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVy
aWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPiB7CitwdWJsaWM6CisgICAgQmxvY2tJbnNl
cnRpb25TZXQoQ29kZSYpOworICAgIH5CbG9ja0luc2VydGlvblNldCgpOworICAgIAorICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgZXZlbnR1YWxseSBpbXBsZW1lbnQgQjM6OkJsb2NrSW5zZXJ0aW9u
U2V0J3Mgc3BsaXRGb3J3YXJkKCkuCit9OworCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6
QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NjY4LDI4ICs2NjgsMzYzIEBAIExvYWQ4IFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAg
ICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOCBVOkc6OCwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAor
ICAgIEluZGV4LCBUbXAKKwogU3RvcmU4IFU6Rzo4LCBEOkc6OAogICAgIFRtcCwgSW5kZXgKICAg
ICBUbXAsIEFkZHIKICAgICB4ODY6IEltbSwgSW5kZXgKICAgICB4ODY6IEltbSwgQWRkcgogCitT
dG9yZVJlbDggVTpHOjgsIEQ6Rzo4CisgICAgVG1wLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisKIExvYWQ4U2lnbmVkRXh0ZW5k
VG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9h
ZEFjcThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAg
SW5kZXgsIFRtcAorCiBMb2FkMTYgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAg
SW5kZXgsIFRtcAogCitMb2FkQWNxMTYgVTpHOjE2LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisg
ICAgSW5kZXgsIFRtcAorCiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgog
ICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8z
MiBVOkc6MTYsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIFN0b3Jl
MTYgVTpHOjE2LCBEOkc6MTYKICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAKK1N0b3Jl
QWNxMTYgVTpHOjE2LCBEOkc6MTYKKyAgICBUbXAsIEluZGV4CisgICAgVG1wLCBBZGRyCisKK0xv
YWRBY3EzMiBVOkc6MzIgWkQ6RzozMgorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisgICAg
SW5kZXgsIFRtcAorCitTdG9yZVJlbDMyIFU6RzozMiBaRDpHOjMyCisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisK
KzY0OiBMb2FkQWNxNjQgVTpHOjY0IFpEOkc6NjQKKyAgICBUbXAsIFRtcAorICAgIEFkZHIsIFRt
cAorICAgIEluZGV4LCBUbXAKKworNjQ6IFN0b3JlUmVsNjQgVTpHOjY0IFpEOkc6NjQKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IElt
bSwgSW5kZXgKKworIyBUaGUgZmlyc3Qgb3BlcmFuZCBpcyByYXguCit4ODY6IExvY2tDbXBYY2hn
OCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjgsIFpEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkciwgVG1w
CisgICAgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogTG9ja0NtcFhjaGcxNiBVRDpHOjE2
LCBVOkc6MzIsIFVEOkc6MTYsIFpEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAg
VG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogTG9ja0NtcFhjaGczMiBVRDpHOjMyLCBVOkc6
MzIsIFVEOkc6MzIsIFpEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgVG1wKiwg
VG1wLCBJbmRleCwgVG1wCisKK3g4Nl82NDogTG9ja0NtcFhjaGc2NCBVRDpHOjY0LCBVOkc6NjQs
IFVEOkc6NjQsIFpEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgVG1wKiwgVG1w
LCBJbmRleCwgVG1wCisKK3g4NjogQnJhbmNoTG9ja0NtcFhjaGc4IFVEOkc6OCwgVTpHOjgsIFVE
Okc6OCAvYnJhbmNoCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAor
Cit4ODY6IEJyYW5jaExvY2tDbXBYY2hnMTYgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2IC9icmFu
Y2gKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJh
bmNoTG9ja0NtcFhjaGczMiBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIgL2JyYW5jaAorICAgIFRt
cCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2XzY0OiBCcmFuY2hMb2Nr
Q21wWGNoZzY0IFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCAvYnJhbmNoCisgICAgVG1wKiwgVG1w
LCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IExvY2tBZGQ4IFU6Rzo4LCBVRDpH
OjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODY6IExvY2tBZGQxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIK
KyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExv
Y2tBZGQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IExvY2tBZGQ2NCBVOkc6NjQs
IFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tTdWI4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFk
ZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IExvY2tTdWIxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tTdWIzMiBVOkc6MzIs
IFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IExvY2tTdWI2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJ
bW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IExvY2tBbmQ4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tBbmQxNiBVOkc6
MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tBbmQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJ
bW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODZfNjQ6IExvY2tBbmQ2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJ
bW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tPcjgg
VTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja09yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2OiBMb2NrT3IzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IExvY2tPcjY0
IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAs
IEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hvcjggVTpHOjgsIFVEOkc6OAorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogTG9ja1hvcjE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIElt
bSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hvcjMy
IFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAs
IEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9ja1hvcjY0IFU6Rzo2NCwgVUQ6Rzo2
NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogTG9ja05lZzggVUQ6Rzo4CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4
NjogTG9ja05lZzE2IFVEOkc6MTYKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBMb2NrTmVn
MzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IExvY2tOZWc2NCBVRDpH
OjY0CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogTG9ja05vdDggVUQ6Rzo4CisgICAgQWRk
cgorICAgIEluZGV4CisKK3g4NjogTG9ja05vdDE2IFVEOkc6MTYKKyAgICBBZGRyCisgICAgSW5k
ZXgKKworeDg2OiBMb2NrTm90MzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZf
NjQ6IExvY2tOb3Q2NCBVRDpHOjY0CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogTG9ja1hB
ZGQ4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IExvY2tYQWRkMTYgVUQ6RzoxNiwgVUQ6RzoxNgorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2OiBMb2NrWEFkZDMyIFVEOkc6MzIsIFVEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9ja1hBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tYY2hnOCBVRDpHOjgsIFVEOkc6
OAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrWGNoZzE2IFVEOkc6
MTYsIFVEOkc6MTYKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hj
aGczMiBVRDpHOjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODZfNjQ6IExvY2tYY2hnNjQgVUQ6Rzo2NCwgVUQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworYXJtNjQ6IExvYWRMaW5rOCBVOkc6OCwgWkQ6Rzo4CisgICAgQWRkciwgVG1w
CisgICAgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmtBY3E4IFU6Rzo4LCBaRDpHOjgKKyAg
ICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQ4IFU6Rzo4LCBE
Okc6OCwgWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKwor
YXJtNjQ6IFN0b3JlQ29uZFJlbDggVTpHOjgsIEQ6Rzo4LCBaRDpHOjgKKyAgICBUbXAsIEFkZHIs
IFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmsxNiBVOkc6MTYsIFpE
Okc6MTYKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0Fj
cTE2IFU6RzoxNiwgWkQ6RzoxNgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJt
NjQ6IFN0b3JlQ29uZDE2IFU6RzoxNiwgRDpHOjE2LCBaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRt
cAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMTYgVTpHOjE2LCBE
Okc6MTYsIFpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisK
K2FybTY0OiBMb2FkTGluazMyIFU6RzozMiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIElu
ZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMzIgVTpHOjMyLCBaRDpHOjMyCisgICAgQWRk
ciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kMzIgVTpHOjMyLCBEOkc6
MzIsIFpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2Fy
bTY0OiBTdG9yZUNvbmRSZWwzMiBVOkc6MzIsIEQ6RzozMiwgWkQ6Rzo4CisgICAgVG1wLCBBZGRy
LCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rNjQgVTpHOjY0LCBa
RDpHOjY0CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmtB
Y3E2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2Fy
bTY0OiBTdG9yZUNvbmQ2NCBVOkc6NjQsIEQ6Rzo2NCwgWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBU
bXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDY0IFU6Rzo2NCwg
RDpHOjY0LCBaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAor
Cithcm02NDogRGVwZW5kMzIgVTpHOjMyLCBEOkc6MzIKKyAgICBUbXAsIFRtcAorCithcm02NDog
RGVwZW5kNjQgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcAorCiBDb21wYXJlMzIgVTpHOjMy
LCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAKICAg
ICBSZWxDb25kLCBUbXAsIEltbSwgVG1wCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302787</attachid>
            <date>2017-02-26 12:57:03 -0800</date>
            <delta_ts>2017-02-26 16:22:05 -0800</delta_ts>
            <desc>wrote some more isel</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>104135</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMSBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OwogCQkwRjJENERERDE5ODMyRDM0MDA3RDRC
MTkgLyogRGVidWdnZXJTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJENEREQjE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5j
cHAgKi87IH07CiAJCTBGMkQ0RERFMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENEREQzE5
ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBU
b1RoaXNTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyRDRERTUxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi87IH07
CkBAIC0yNzY0LDYgKzI3NjksMTEgQEAKIAkJMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIz
QmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0aCA9
IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRDFFNjBB
RTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7IHBhdGggPSBiMy9CM1dp
ZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0IzMUU2MzQzRTgwMEMx
MzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBC
M0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRvbWlj
VmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyog
QWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5z
ZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkExRTYz
NDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIvQWly
QmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRE
REIxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQ
cm9maWxlckxvZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI5Miw2ICs1MzAyLDggQEAKIAkJCQkwRkVD
ODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4
MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4
MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNC
YW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5j
cHAgKi8sCkBAIC01MzU0LDYgKzUzNjYsNyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyog
QjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4
MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3
NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTQ2OSw2ICs1NDgyLDggQEAKIAkJCQkwRjY0RUFG
MjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJE
QUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFD
REM3MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5oICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgw
MEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYz
NDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIx
QkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFD
NDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYx
ODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC03
OTU2LDYgKzc5NzEsNyBAQAogCQkJCTBGRUM4NTgwMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU4MTFCREFDREM3MDA4MEZGNzQgLyogQWlySW5z
dElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGREY2N0Q3MUQ5REM0NDIwMDFCOTgyNSAv
KiBBaXJLaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCQzFFNjM0NDBDMDBDMTM4Mzkg
LyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2ODRENDM4MUMw
MDE2MUMwMDgxRDY2MyAvKiBBaXJMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMzRD
MUExQzRCMzlBRTAwMDNBNTEyIC8qIEFpckxvZ1JlZ2lzdGVyUHJlc3N1cmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNjE4MzJGMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxs
b2MuaCBpbiBIZWFkZXJzICovLApAQCAtODA0Nyw2ICs4MDYzLDcgQEAKIAkJCQk0MzQyMkE2MzFD
MTU4RTZEMDBFMkVCOTggLyogQjNDb25zdEZsb2F0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUM4NUIzMUJERUQ5NTcwMDgwRkY3NCAvKiBCM0NvbnN0UHRyVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhFMEUxQkYwMjc2
QzAwMTNDODhGIC8qIEIzRGF0YVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzNGQ0ZD
MUMxNjI1QkUwMDMyM0Y2NyAvKiBCM0RvbWluYXRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NkI4QUQ5MUM0RUREQTIwMDk2OTA1MiAvKiBCM0R1cGxpY2F0ZVRhaWxzLmggaW4gSGVhZGVycyAq
LywKQEAgLTgzNjYsNiArODM4Myw3IEBACiAJCQkJMEYzOTJDOEExQjQ2MTg4NDAwODQ0NzI4IC8q
IERGR09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1
NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyMzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFu
dG9tSW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYw
MEM3MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIxOUQwQkE3
RDAwQjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjQ4LDYg
KzEwMjY2LDcgQEAKIAkJCQk5RTcyOTQwNzE5MEYwMUE1MDAxQTkxQjUgLyogSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVCNzE4NUI4QkQzMDA3RTk1QUQg
LyogSW5qZWN0ZWRTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxNEIyQzIxODVBNjg0
NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjJDNjNCNjFFNjM0M0VBMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNThFMzU5MTE4NjBERUNGMDAxRjI0RkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTNFNUNBMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4NDBFMjAxODdCN0I4NjAw
ODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAy
NjYsNiArMTAyODUsNyBAQAogCQkJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUzMjQzOEIx
ODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTBFNEI2MTE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBB
aXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTUxNjVEMjFCREYw
Qjk4MDAzQjc1QzEgLyogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNGMTA3RUMzNzYwMDQyN0E0OCAvKiBJbnRlcm5h
bEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNf
SklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworQXRvbWljVmFsdWU6On5B
dG9taWNWYWx1ZSgpCit7Cit9CisKK1dpZHRoIEF0b21pY1ZhbHVlOjphY2Nlc3NXaWR0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fd2lkdGg7Cit9CisKK3ZvaWQgQXRvbWljVmFsdWU6OmR1bXBN
ZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAg
b3V0LnByaW50KGNvbW1hLCAid2lkdGggPSAiLCBtX3dpZHRoKTsKKyAgICAKKyAgICBNZW1vcnlW
YWx1ZTo6ZHVtcE1ldGEoY29tbWEsIG91dCk7Cit9CisKK1ZhbHVlKiBBdG9taWNWYWx1ZTo6Y2xv
bmVJbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbmV3IEF0b21pY1ZhbHVlKCp0aGlzKTsKK30K
KworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lk
dGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQg
PSAwKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgb3BlcmFuZC0+dHlw
ZSgpLCBvcmlnaW4sIG9mZnNldCwgb3BlcmFuZCwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lk
dGgpCit7CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBB
U1NFUlQoYmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKyAg
ICAKKyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6
CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNh
c2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9t
aWNYY2hnOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtp
bmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFs
dWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDog
TWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwga2luZC5vcGNvZGUoKSA9PSBBdG9taWNX
ZWFrQ0FTID8gSW50MzIgOiBleHBlY3RlZFZhbHVlLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCBl
eHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7
CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBBU1NFUlQo
YmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKworICAgIHN3
aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNl
IEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQXRvbWljVmFsdWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisj
aW5jbHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwor
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQXRvbWljVmFsdWUgOiBwdWJsaWMgTWVtb3J5VmFsdWUg
eworcHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGlzQXRvbWljKGtpbmQub3Bjb2RlKCkpOworICAgIH0KKyAgICAKKyAgICB+
QXRvbWljVmFsdWUoKTsKKyAgICAKKyAgICBUeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJl
dHVybiBjaGlsZCgwKS0+dHlwZSgpOyB9CisgICAgCisgICAgV2lkdGggb3BlcmF0aW9uV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgCisgICAgLy8gU3lub255bSBmb3Igd2lk
dGgoKSwgaWYgeW91J3JlIGFjY2Vzc2luZyB2aWEgTWVtb3J5VmFsdWUuCisgICAgV2lkdGggYWNj
ZXNzV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1
bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
CisgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtpbmQs
IE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQgPSAwKTsKKyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBW
YWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwKTsKKyAgICAKKyAgICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2Vy
dGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMzUgKzM2LDEzIEBACiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsKIAogQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0
KFByb2NlZHVyZSAmcHJvYykKLSAgICA6IG1fcHJvYyhwcm9jKQorICAgIDogR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0KHByb2MubV9ibG9ja3MpCisgICAgLCBtX3Byb2MocHJvYykKIHsKIH0KIAog
QmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpIHsgfQogCi12b2lkIEJsb2Nr
SW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCi17Ci0gICAg
bV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOwotfQotCi1CYXNpY0Jsb2Nr
KiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVl
bmN5KQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNC
bG9jayhVSU5UX01BWCwgZnJlcXVlbmN5KSk7Ci0gICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxv
Y2suZ2V0KCk7Ci0gICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2Nr
KSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9u
U2V0OjppbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5KQot
ewotICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVl
bmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7Ci19Ci0KLUJhc2ljQmxvY2sq
IEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91Ymxl
IGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJl
cXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7Ci19
Ci0KIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcndhcmQoCiAgICAgQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqIGluc2Vy
dGlvblNldCwgZG91YmxlIGZyZXF1ZW5jeSkKIHsKQEAgLTEwMiwzMiArODAsNiBAQCBCYXNpY0Js
b2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotYm9vbCBCbG9ja0luc2VydGlvblNldDo6ZXhlY3V0ZSgpCi17Ci0gICAgaWYgKG1faW5zZXJ0
aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBXZSBh
bGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5l
ZWQgdG8gc29ydCB0aGVtIGJlZm9yZQotICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0
aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8g
YmUKLSAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCi0gICAgYnViYmxlU29ydCht
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKLQotICAgIGV4ZWN1dGVJ
bnNlcnRpb25zKG1fcHJvYy5tX2Jsb2NrcywgbV9pbnNlcnRpb25zKTsKLSAgICAKLSAgICAvLyBQ
cnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0
IGl0J3MKLSAgICAvLyBoZWFsdGh5IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5n
LgotICAgIG1fcHJvYy5tX2Jsb2Nrcy5yZW1vdmVBbGxNYXRjaGluZygKLSAgICAgICAgWyZdIChz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIHJldHVybiAhYmxvY2tQdHI7Ci0gICAgICAgIH0pOwotICAgIAotICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9wcm9jLm1fYmxvY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3By
b2MubV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQot
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5z
ZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKICNp
bmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwyNiArMzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CiAKIGNsYXNzIEluc2VydGlvblNldDsKIAotdHlwZWRlZiBXVEY6Okluc2Vy
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOwordHlwZWRl
ZiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJs
b2NrSW5zZXJ0aW9uOwogCi1jbGFzcyBCbG9ja0luc2VydGlvblNldCB7CitjbGFzcyBCbG9ja0lu
c2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4g
ewogcHVibGljOgogICAgIEJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSYpOwogICAgIH5CbG9j
a0luc2VydGlvblNldCgpOwogICAgIAotICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYp
OwotCi0gICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCi0gICAgQmFz
aWNCbG9jayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7
Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVz
dWFsbHkgeW91IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQotICAgIC8vIGFyZ3VtZW50LiBQ
YXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdi
ZWZvcmUnIGJsb2NrLiBUaGF0J3MKLSAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCi0gICAg
QmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1
ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2
ZW4gYmxvY2suCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIs
IGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQogICAgIC8vIEEgaGVscGVyIHRvIHNwbGl0IGEg
YmxvY2sgd2hlbiBmb3J3YXJkIGl0ZXJhdGluZyBvdmVyIGl0LiBJdCBjcmVhdGVzIGEgbmV3IGJs
b2NrIHRvIGhvbGQKICAgICAvLyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYXQg
dmFsdWVJbmRleC4gVGhlIGN1cnJlbnQgYmxvY2sgaXMgbGVmdCB3aXRoCiAgICAgLy8gZXZlcnl0
aGluZyBhdCBhbmQgYWZ0ZXIgdmFsdWVJbmRleC4gSWYgdGhlIG9wdGlvbmFsIEluc2VydGlvblNl
dCBpcyBwcm92aWRlZCwgaXQgd2lsbCBnZXQKQEAgLTgwLDEyICs2OCw5IEBAIHB1YmxpYzoKICAg
ICBCYXNpY0Jsb2NrKiBzcGxpdEZvcndhcmQoCiAgICAgICAgIEJhc2ljQmxvY2sqLCB1bnNpZ25l
ZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0KiA9IG51bGxwdHIsCiAgICAgICAgIGRvdWJsZSBm
cmVxdWVuY3kgPSBQTmFOKTsKLSAgICAKLSAgICBib29sIGV4ZWN1dGUoKTsKIAogcHJpdmF0ZToK
ICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKLSAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1f
aW5zZXJ0aW9uczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAg
ICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8
fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3Zlcmxh
cHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7
CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZl
bmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0
IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9w
ZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhl
ci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5u
ZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9
PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAg
JiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShj
b25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVj
dHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwg
IldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwxMCBA
QCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzE3MwogICAgIGJvb2wgcmVhZHNQaW5uZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgd3JpdGVzUGlubmVkIHsgZmFsc2UgfTsKKyAgICAKKyAgICAvLyBNZW1vcnkgZmVuY2VzIGNh
bm5vdCBiZSByZW9yZGVyZWQgYXJvdW5kIGVhY2ggb3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBl
ZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQKKyAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVt
b3J5IGZlbmNlLgorICAgIGJvb2wgZmVuY2UgeyBmYWxzZSB9OwogCiAgICAgSGVhcFJhbmdlIHdy
aXRlczsKICAgICBIZWFwUmFuZ2UgcmVhZHM7CkBAIC04OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZl
Y3RzIHsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKICAgICAgICAg
cmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9
IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCkBAIC0xMDMsNyArMTA4LDcgQEAgc3RydWN0IEVmZmVjdHMgewogCiAgICAg
Ym9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdGVybWluYWwg
fHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQ
aW5uZWQ7CisgICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRl
c0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9CiAK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgcmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVz
ZSByZXNwZWN0aXZlIGVmZmVjdHMgd291bGQgY2hhbmdlIHByb2dyYW0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NDIsNiArMTQyLDcgQEAgc3RydWN0IEltcHVyZUJsb2NrRGF0YSB7CiAKICAgICBSYW5nZVNldDxI
ZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlzIG9ubHkgZ2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0b3Jl
IGVsaW1pbmF0aW9uLgogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdl
dHMgdXNlZCBmb3IgYm90aCBsb2FkIGFuZCBzdG9yZSBlbGltaW5hdGlvbi4KKyAgICBib29sIGZl
bmNlOwogCiAgICAgTWVtb3J5VmFsdWVNYXAgc3RvcmVzQXRIZWFkOwogICAgIE1lbW9yeVZhbHVl
TWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsKQEAgLTE3NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNT
dG9yZSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9y
eS0+cmFuZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBz
KG1lbW9yeS0+cmFuZ2UoKSkpCisgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5v
dmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCisgICAgICAgICAgICAgICAgICAgICYmICghZGF0YS5m
ZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5jZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5z
dG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7CiAgICAgICAgICAgICAgICAgZGF0YS5yZWFkcy5hZGQo
ZWZmZWN0cy5yZWFkcyk7CiAKICAgICAgICAgICAgICAgICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9
IGVmZmVjdHMud3JpdGVzKQogICAgICAgICAgICAgICAgICAgICBjbG9iYmVyKGRhdGEsIHdyaXRl
cyk7CisgICAgICAgICAgICAgICAgZGF0YS5mZW5jZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG1lbW9yeSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlW
YWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7CkBAIC00NzgsNiArNDgxLDkgQEAgcHJpdmF0ZToKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVBZnRlckNsb2Ji
ZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXImIGZpbHRlcikKICAg
ICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBl
bGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0b3JlIHRvIHRo
ZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFueSBvcGVyYXRpb24g
dGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxpa2UgaXQgc2hvdWxk
IGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3Jp
dHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIApAQCAtNjE0LDYg
KzYyMCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIp
OwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNG
ZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChNZW1vcnlWYWx1ZSog
bWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7CiAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91
bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0dlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCB2
b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MDcKICAgICB9CiAKKyAgICAv
LyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgogICAgIGxvd2VyTWFjcm9zKHByb2Nl
ZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEluc2Vy
dGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9jaz4KK2NsYXNzIEdlbmVyaWNC
bG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOworICAgIAorICAgIEJs
b2NrSW5zZXJ0aW9uU2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBibG9j
a3MpCisgICAgICAgIDogbV9ibG9ja3MoYmxvY2tzKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
dm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCisgICAgeworICAgICAgICBt
X2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7CisgICAgfQorCisgICAgLy8g
SW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCisgICAgQmFzaWNCbG9jayogaW5z
ZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5U
X01BWCwgZnJlcXVlbmN5KSk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdl
dCgpOworICAgICAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2sp
KSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5l
dyBibG9jayBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNz
IHRoZSBmcmVxdWVuY3kKKyAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0
byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCisg
ICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3YW50LgorICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9y
ZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVxdWVu
Y3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsKKyAgICB9CisKKyAgICAvLyBJ
bnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KKyAgICBCYXNpY0Jsb2Nr
KiBpbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
CisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJlcXVl
bmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7CisgICAg
fQorCisgICAgYm9vbCBleGVjdXRlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2luc2VydGlvbnMu
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAg
Ly8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3JkZXIuIFNv
LCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKKyAgICAgICAgLy8gcnVubmluZyBXVEY6OmV4
ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBhbmQgd2Ug
d2FudCBpdCB0byBiZQorICAgICAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCisg
ICAgICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQo
KSk7CisgICAgICAgIAorICAgICAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX2Jsb2NrcywgbV9pbnNl
cnRpb25zKTsKKyAgICAgICAgCisgICAgICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBU
aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncworICAgICAgICAvLyBoZWFsdGh5
IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgorICAgICAgICBtX2Jsb2Nrcy5y
ZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+JiBibG9ja1B0cikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFibG9j
a1B0cjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2VzLgorICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9ibG9ja3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX2Jsb2Nr
c1tpXS0+bV9pbmRleCA9IGk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4mIG1f
YmxvY2tzOworICAgIFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJKHJldmlzaW9uIDIxMjk5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdlIG9wZXJhdG9yfChjb25zdCBIZWFw
UmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5nZSgKKyAg
ICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1fYmVnaW4pLAorICAgICAgICAgICAg
c3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAgfQorICAgIAogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1fZW5kOyB9CiAKICAg
ICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJbnNlcnRpb25TZXQ6Omluc2VydEJv
dHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9tKGluZGV4LCBsaWtlVmFsdWUtPm9y
aWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1ZhbHVlKiBJbnNlcnRpb25TZXQ6Omlu
c2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVlKQoreworICAgIHJldHVybiBpbnNl
cnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFsdWUpKTsKK30KKwogdm9pZCBJbnNl
cnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgYnViYmxlU29ydCht
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVf
dCBpbmRleCwgT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVfdCBp
bmRleCwgVmFsdWUqKTsKKyAgICAKKyAgICBWYWx1ZSogaW5zZXJ0Q2xvbmUoc2l6ZV90IGluZGV4
LCBWYWx1ZSopOwogCiAgICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHJ1bigpCiAgICAg
eworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wcm9jLmhhc1F1aXJrcygpKTsKKyAgICAgICAg
CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKICAgICAgICAgICAg
IG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgICAgIHByb2Nlc3NDdXJyZW50QmxvY2soKTsKQEAg
LTcyLDYgKzc0LDkgQEAgcHVibGljOgogICAgICAgICAgICAgbV9wcm9jLnJlc2V0UmVhY2hhYmls
aXR5KCk7CiAgICAgICAgICAgICBtX3Byb2MuaW52YWxpZGF0ZUNGRygpOwogICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBtX3Byb2Muc2V0SGFzUXVpcmtzKHRydWUpOworICAgICAgICAKICAg
ICAgICAgcmV0dXJuIG1fY2hhbmdlZDsKICAgICB9CiAgICAgCkBAIC0xODUsNyArMTkwLDczIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1sb2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRv
IG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8gdGVsbCB0aGUKKyAgICAgICAgICAgICAgICAg
ICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxvYWQgbW90aW9uLgorICAgICAgICAgICAgICAg
ICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVl
PihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0g
SGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5n
ZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBL
aWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBs
aWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoQm90dG9t
KG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIEF0b21p
Y1dlYWtDQVM6CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzogeworICAgICAgICAg
ICAgICAgIGlmIChpc1g4NigpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+
YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMt
Pm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYg
KGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSA9IGF0
b21pYy0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gT24g
QVJNLCB0aGUgbG9hZCBwYXJ0IG9mIHRoZSBDQVMgZG9lcyBhIGxvYWQgd2l0aCB6ZXJvIGV4dGVu
c2lvbi4gVGhlcmVmb3JlLCB3ZSBuZWVkCisgICAgICAgICAgICAgICAgLy8gdG8gemVyby1leHRl
bmQgdGhlIGlucHV0LgorICAgICAgICAgICAgICAgIFZhbHVlKiBtYXNrZWRFeHBlY3RlZFZhbHVl
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgbV9p
bmRleCwgQml0QW5kLCBtX29yaWdpbiwgZXhwZWN0ZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQobV9pbmRleCwgZXhwZWN0ZWRWYWx1
ZSwgbWFzayh3aWR0aCkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBhdG9t
aWMtPmNoaWxkKDApID0gbWFza2VkRXhwZWN0ZWRWYWx1ZTsKKyAgICAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6Cisg
ICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgICAgICAgICAv
LyBPbiBYODYsIHRoZXNlIGFjdHVhbGx5IHJldHVybiBnYXJiYWdlIGluIHRoZSBoaWdoIGJpdHMu
IE9uIEFSTTY0LCB0aGVzZSBzb3J0YQorICAgICAgICAgICAgICAgIC8vIHplcm8tZXh0ZW5kIHRo
ZWlyIGhpZ2ggYml0cywgZXhjZXB0IHRoYXQgdGhlIGhpZ2ggYml0cyBtaWdodCBnZXQgcG9sbHV0
ZWQgYnkgaGlnaAorICAgICAgICAgICAgICAgIC8vIGJpdHMgaW4gdGhlIG9wZXJhbmQuIC4gU28s
IGVpdGhleSB3YXksIHdlIG5lZWQgdG8gdGhyb3cgYSBzaWduLWV4dGVuZCBvbiB0aGVzZQorICAg
ICAgICAgICAgICAgIC8vIHRoaW5ncy4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAg
ICAgICAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgp
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBWYWx1ZSogbmV3VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAor
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBzaWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwgbV9v
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENsb25lKG1f
aW5kZXgsIG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX3Zh
bHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
TWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJP
cHRpbWl6YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDE1ICsxNTYsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGNhc2UgUm90TDogewogICAgICAgICAgICAgICAgIC8vIEFSTTY0
IGRvZXNuJ3QgaGF2ZSBhIHJvdGF0ZSBsZWZ0LgogICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVl
PihtX2luZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcm90YXRlID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0PFZhbHVlPihtX2luZGV4LCBSb3RSLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hp
bGQoMCksIG5ld1NoaWZ0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxh
Y2VXaXRoSWRlbnRpdHkocm90YXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlm
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5v
cmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSog
cm90YXRlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBSb3RSLCBtX3Zh
bHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCksIG5ld1NoaWZ0KTsKKyAgICAgICAgICAg
ICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw2ICs3MiwxNCBAQCBuYW1lc3BhY2UgewogCiBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKIAorLy8gRklYTUU6IFdlIHdvdWxkbid0IG5lZWQgdGhpcyBpZiBBaXIgc3VwcG9ydGVkIFdp
ZHRoIG1vZGlmaWVycyBpbiBBaXI6OktpbmQuCisvLyBPT1BTISEhIChuZWVkIGEgYnVnIFVSTCkK
KyNkZWZpbmUgT1BDT0RFX0ZPUl9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKKyAgICAod2lkdGgp
ID09IFdpZHRoOCA/IG9wY29kZSAjIyA4IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IG9w
Y29kZSAjIyAxNiA6IFwKKyAgICAod2lkdGgpID09IFdpZHRoMzIgPyBvcGNvZGUgIyMgMzIgOiBc
CisgICAgb3Bjb2RlICMjIDY0KQorCiBjbGFzcyBMb3dlclRvQWlyIHsKIHB1YmxpYzoKICAgICBM
b3dlclRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQpAQCAtODMsNiArOTEsNyBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV9kb21pbmF0b3JzKHByb2NlZHVyZS5kb21pbmF0b3JzKCkpCiAgICAgICAg
ICwgbV9wcm9jZWR1cmUocHJvY2VkdXJlKQogICAgICAgICAsIG1fY29kZShwcm9jZWR1cmUuY29k
ZSgpKQorICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQobV9jb2RlKQogICAgIHsKICAgICB9
CiAKQEAgLTEyNCwxNCArMTMzLDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3RlZCBhZGRy
ZXNzIGV4cHJlc3Npb24gYmVmb3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhlIGxvb3Au
CiAgICAgICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUuYmxvY2tz
SW5QcmVPcmRlcigpKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAgICAgICAg
ICAvLyBSZXNldCBzb21lIHN0YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CiAK
ICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAKICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5n
IEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KKyAgICAg
ICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vz
c29ycygpKSB7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNz
b3JzKCkuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayht
X2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkp
OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBpbiByZXZl
cnNlIG9yZGVyIHNvIHdlIHNlZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBhbGxvd3Mg
dXMKICAgICAgICAgICAgIC8vIHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5LgogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAtMTQ5LDE5
ICsxNjIsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRh
aW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAgICAgICAgLy8g
aXQgaW4gcmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6
ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0c1tp
XSkKLSAgICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBlbmRJbnN0
KFdURk1vdmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1
cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAgICAgICAg
IGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygp
KSB7Ci0gICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCku
YXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2Nr
VG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG1fYmxv
Y2tUb0Jsb2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fYmxvY2tJ
bnNlcnRpb25TZXQuZXhlY3V0ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0IGluc2Vy
dGlvblNldChtX2NvZGUpOwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xvZ3VlKQpA
QCAtNTM4LDcgKzU0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAK
ICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB2YWx1ZS0+b2Zmc2V0KCk7Ci0gICAgICAgIFdpZHRo
IHdpZHRoID0gdmFsdWUtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgIFdpZHRoIHdpZHRoID0gdmFs
dWUtPmxvYWRTdG9yZVdpZHRoKCk7CiAKICAgICAgICAgQXJnIHJlc3VsdCA9IGVmZmVjdGl2ZUFk
ZHIodmFsdWUtPmxhc3RDaGlsZCgpLCBvZmZzZXQsIHdpZHRoKTsKICAgICAgICAgQVNTRVJUKHJl
c3VsdC5pc1ZhbGlkRm9ybSh3aWR0aCkpOwpAQCAtNTYyLDExICs1NjYsMTYgQEAgcHJpdmF0ZToK
ICAgICAKICAgICBBcmdQcm9taXNlIGxvYWRQcm9taXNlQW55T3Bjb2RlKFZhbHVlKiBsb2FkVmFs
dWUpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkVmFsdWUtPmFzPE1lbW9yeVZh
bHVlPigpKTsKICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKGxvYWRWYWx1ZSkpCiAgICAgICAg
ICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAgIGlmIChjcm9zc2VzSW50ZXJmZXJlbmNlKGxvYWRW
YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAgIEFyZ1Byb21pc2UgcmVz
dWx0KGFkZHIobG9hZFZhbHVlKSwgbG9hZFZhbHVlKTsKKyAgICAgICAgaWYgKGxvYWRWYWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnKCk7
CisgICAgICAgIEFyZyBsb2FkQWRkciA9IGFkZHIobG9hZFZhbHVlKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobG9hZEFkZHIpOworICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChsb2FkQWRkciwg
bG9hZFZhbHVlKTsKICAgICAgICAgaWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkKICAgICAgICAgICAg
IHJlc3VsdC5zZXRUcmFwcyh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTkzMSwx
MCArOTQwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6
Ok9wY29kZSBvcGNvZGU2NCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0
YXRpdmU+CiAgICAgYm9vbCB0cnlBcHBlbmRTdG9yZUJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSog
cmlnaHQpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKSk7CisgICAgICAgIAogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNv
ZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgbGVmdC0+dHlwZSgpKTsKICAgICAgICAgaWYg
KG9wY29kZSA9PSBBaXI6Ok9vcHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IAorICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICBBcmcgc3RvcmVBZGRy
ID0gYWRkcihtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUKHN0b3JlQWRkcik7CiAKQEAgLTk5NCwx
MCArMTAwOCw0OCBAQCBwcml2YXRlOgogCiAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFs
dWUsIHRtcCh2YWx1ZSksIGRlc3QpOwogICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9y
ZU9wY29kZShXaWR0aCB3aWR0aCwgQmFuayBiYW5rLCBib29sIHJlbGVhc2UpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/
IFN0b3JlUmVsOCA6IFN0b3JlODsKKyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/
IFN0b3JlUmVsMTYgOiBTdG9yZTE2OworICAgICAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgICAg
ICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDMyIDogTW92ZTMyOworICAgICAgICAgICAgY2FzZSBG
UDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpczY0
Qml0KCkpOworICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQ
OgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWw2NCA6IE1vdmU7Cisg
ICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxl
YXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFZh
bHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJldHVybiBzdG9yZU9wY29kZShtZW1vcnktPmxv
YWRTdG9yZVdpZHRoKCksIG1lbW9yeS0+YWNjZXNzQmFuaygpLCBtZW1vcnktPmhhc0ZlbmNlKCkp
OworICAgIH0KIAogICAgIEluc3QgY3JlYXRlU3RvcmUoVmFsdWUqIHZhbHVlLCBjb25zdCBBcmcm
IGRlc3QpCiAgICAgewotICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gbW92ZUZvclR5
cGUodmFsdWUtPnR5cGUoKSk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBzdG9y
ZU9wY29kZSh2YWx1ZSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVTdG9yZShtb3ZlT3Bjb2RlLCB2
YWx1ZSwgZGVzdCk7CiAgICAgfQogCkBAIC0xMDA2LDcgKzEwNTgsNyBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVTdG9yZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSk7CiAgICAgfQotCisgICAgCiAgICAgQWlyOjpPcGNv
ZGUgbW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7
CkBAIC0xMDczLDcgKzExMjUsNDEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1faW5zdHMu
bGFzdCgpLmFwcGVuZChpbnN0KTsKICAgICB9CisgICAgCisgICAgdm9pZCBmaW5pc2hBcHBlbmRp
bmdJbnN0cnVjdGlvbnMoQWlyOjpCYXNpY0Jsb2NrKiB0YXJnZXQpCisgICAgeworICAgICAgICAv
LyBOb3cgYXBwZW5kIHRoZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMgY29udGFpbnMgdGhlbSBpbiBy
ZXZlcnNlIG9yZGVyLCBzbyB3ZSBwcm9jZXNzCisgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAg
ICAgICBmb3IgKEluc3QmIGluc3QgOiBtX2luc3RzW2ldKQorICAgICAgICAgICAgICAgIHRhcmdl
dC0+YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKKyAgICAgICAgfQorICAgICAgICBtX2luc3Rz
LnJlc2l6ZSgwKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpCYXNpY0Jsb2NrKiBuZXdCbG9jaygp
CisgICAgeworICAgICAgICByZXR1cm4gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlciht
X2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXSk7CisgICAgfQogCisgICAgLy8gTk9URTogVGhpcyB3aWxs
IGNyZWF0ZSBhIGNvbnRpbnVhdGlvbiBibG9jayAoYG5leHRCbG9ja2ApICphZnRlciogYW55IGJs
b2NrcyB5b3UndmUgY3JlYXRlZCB1c2luZworICAgIC8vIG5ld0Jsb2NrKCkuIFNvLCBpdCdzIHBy
ZWZlcmFibGUgdG8gY3JlYXRlIGFsbCBvZiB5b3VyIGJsb2NrcyB1cGZyb250IHVzaW5nIG5ld0Js
b2NrKCkuIEFsc28gbm90ZQorICAgIC8vIHRoYXQgYW55IGNvZGUgeW91IGVtaXQgYmVmb3JlIHRo
aXMgd2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIGNvbnRpbnVhdGlvbiwgYW5kIGFueSBjb2RlIHlv
dSBlbWl0CisgICAgLy8gYWZ0ZXIgdGhpcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBwcmV2aW91
cyBibG9jay4KKyAgICB2b2lkIHNwbGl0QmxvY2soQWlyOjpCYXNpY0Jsb2NrKiYgcHJldmlvdXNC
bG9jaywgQWlyOjpCYXNpY0Jsb2NrKiYgbmV4dEJsb2NrKQorICAgIHsKKyAgICAgICAgQWlyOjpC
YXNpY0Jsb2NrKiBibG9jayA9IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdOworICAgICAgICAKKyAg
ICAgICAgcHJldmlvdXNCbG9jayA9IGJsb2NrOworICAgICAgICBuZXh0QmxvY2sgPSBtX2Jsb2Nr
SW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKGJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGZpbmlz
aEFwcGVuZGluZ0luc3RydWN0aW9ucyhuZXh0QmxvY2spOworICAgICAgICBuZXh0QmxvY2stPnN1
Y2Nlc3NvcnMoKSA9IGJsb2NrLT5zdWNjZXNzb3JzKCk7CisgICAgICAgIGJsb2NrLT5zdWNjZXNz
b3JzKCkuY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJ
bnN0PigpKTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gQXJndW1lbnRzPgogICAgIFQqIGVuc3VyZVNwZWNpYWwoVComIGZpZWxkLCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCiAgICAgewpAQCAtMTEyMyw3ICsxMjA5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlN0YWNrQXJn
dW1lbnQ6CiAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjpjYWxsQXJnKHZhbHVlLnJlcCgpLm9m
ZnNldEZyb21TUCgpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZS52YWx1ZSgp
LCBhcmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1vdmVGb3JUeXBlKHZhbHVlLnZh
bHVlKCkpLCBhcmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTk2
MSw2ICsyMDQ3LDEyNCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
KyAgICB2b2lkIGFwcGVuZFg4NkRpdihCMzo6T3Bjb2RlIG9wKQorICAgIHsKKyNpZiBDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KQorICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4
KTsKKyAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7CisKKyAgICAgICAg
QWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2
OworICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgeworICAgICAgICBjYXNlIEludDMy
OgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdv
cmQzMjsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgSW50NjQ6CisgICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2
Q29udmVydFRvUXVhZFdvcmQ2NDsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjY0OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOworICAgICAgICBYODZSZWdpc3RlcnM6
OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBYODZS
ZWdpc3RlcnM6OmVkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxk
KDApKSwgZWF4KTsKKyAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdvcmQsIGVheCwgZWR4
KTsKKyAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkp
OworICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7CisKKyNl
bHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShvcCk7CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpP
cGNvZGUgb3ApCisgICAgeworI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgICAgIFRt
cCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBUbXAgZWR4ID0gVG1wKFg4
NlJlZ2lzdGVyczo6ZWR4KTsKKworICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50
eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CisKKyAgICAgICAgQVNTRVJU
KG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7CisgICAgICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0
ZXJJRCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBYODZSZWdpc3Rl
cnM6OmVkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwg
ZWF4KTsKKyAgICAgICAgYXBwZW5kKFhvcjY0LCBlZHgsIGVkeCk7CisgICAgICAgIGFwcGVuZChk
aXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5kKE1v
dmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BB
UkFNKG9wKTsKKyAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisjZW5kaWYKKyAg
ICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgbG9hZExpbmtPcGNvZGUoV2lkdGggd2lkdGgsIGJv
b2wgZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRI
KExvYWRMaW5rQWNxLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKExvYWRMaW5rLCB3aWR0aCk7
CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlQ29uZE9wY29kZShXaWR0aCB3aWR0
aCwgYm9vbCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmZW5jZSA/IE9QQ09ERV9GT1Jf
V0lEVEgoU3RvcmVDb25kUmVsLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZCwg
d2lkdGgpOworICAgIH0KKyAgICAKKyNpZiBDUFUoQVJNNjQpCisgICAgdm9pZCBhcHBlbmRBUk02
NFdlYWtDQVMoVmFsdWUqIGF0b21pY1ZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAg
IC8vIFdlIHdpc2ggdG8gZW1pdDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIExvYWRMaW5r
CisgICAgICAgIC8vICAgICBCcmFuY2ggTm90RXF1YWwKKyAgICAgICAgLy8gICBTdWNjZXNzb3Jz
OiBUaGVuOiNmYWlsLCBFbHNlOiAjc3RvcmUKKyAgICAgICAgLy8gQmxvY2sgI3N0b3JlOgorICAg
ICAgICAvLyAgICAgU3RvcmVDb25kCisgICAgICAgIC8vICAgICBYb3IgJDEsICVyZXN1bHQgICAg
PC0tLSBvbmx5IGlmICFpbnZlcnQKKyAgICAgICAgLy8gICAgIEp1bXAKKyAgICAgICAgLy8gICBT
dWNjZXNzb3JzOiAjZG9uZQorICAgICAgICAvLyBCbG9jayAjZmFpbDoKKyAgICAgICAgLy8gICAg
IE1vdmUgJGludmVydCwgJXJlc3VsdAorICAgICAgICAvLyAgICAgSnVtcAorICAgICAgICAvLyAg
IFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAgICAKKyAg
ICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IGF0b21pY1ZhbHVlLT5hczxBdG9taWNWYWx1ZT4o
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXRvbWljKTsKKyAgICAgICAgCisgICAgICAgIFdp
ZHRoIHdpZHRoID0gYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICAKKyAgICAgICAg
QXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisgICAgICAgIFRtcCB0bXAgPSBtX2NvZGUubmV3
VG1wKEdQKTsKKyAgICAgICAgVG1wIGV4cGVjdGVkVmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGls
ZCgwKSk7CisgICAgICAgIFRtcCBuZXdWYWx1ZVRtcCA9IHRtcChhdG9taWMtPmNoaWxkKDEpKTsK
KyAgICAgICAgVG1wIHJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgCisgICAgICAg
IEFpcjo6QmFzaWNCbG9jayogc3RvcmVCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6
QmFzaWNCbG9jayogZmFpbEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Js
b2NrKiBiZWdpbkJsb2NrOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAg
ICAgICAgc3BsaXRCbG9jayhiZWdpbkJsb2NrLCBkb25lQmxvY2spOworICAgICAgICAKKyAgICAg
ICAgYXBwZW5kKGxvYWRMaW5rT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3Zh
bHVlLCB0bXAsIGFkZHJlc3MpOworICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChCcmFu
Y2gsIGNhbm9uaWNhbFdpZHRoKHdpZHRoKSksIG1fdmFsdWUsIEFyZzo6cmVsQ29uZChNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwpIHRtcCwgZXhwZWN0ZWRWYWx1ZVRtcCk7CisgICAgICAgIGJlZ2lu
QmxvY2stPnNldFN1Y2Nlc3NvcnMoZmFpbEJsb2NrLCBzdG9yZUJsb2NrKTsKKyAgICAgICAgCisg
ICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+
aGFzRmVuY2UoKSksIG1fdmFsdWUsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzLCByZXN1bHRUbXApOwor
ICAgICAgICBpZiAoIWludmVydCkKKyAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChYb3Iz
MiwgbV92YWx1ZSwgQXJnOjpiaXRJbW0oMSksIHJlc3VsdFRtcCwgcmVzdWx0VG1wKTsKKyAgICAg
ICAgc3RvcmVCbG9jay0+YXBwZW5kKEp1bXAsIG1fdmFsdWUpOworICAgICAgICBzdG9yZUJsb2Nr
LT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgIAorICAgICAgICBmYWlsQmxvY2st
PmFwcGVuZChNb3ZlLCBBcmc6OmltbShpbnZlcnQpLCByZXN1bHQpOworICAgICAgICBmYWlsQmxv
Y2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKEFSTTY0
KQorICAgIAogICAgIHZvaWQgbG93ZXIoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX3ZhbHVl
LT5vcGNvZGUoKSkgewpAQCAtMTk3MSwzMCArMjE3NSw1MCBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOiB7Ci0gICAgICAgICAgICBhcHBlbmQo
dHJhcHBpbmdJbnN0KG1fdmFsdWUsIG1vdmVGb3JUeXBlKG1fdmFsdWUtPnR5cGUoKSksIG1fdmFs
dWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgTWVtb3J5VmFs
dWUqIG1lbW9yeSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICAgICAgQWly
OjpPcGNvZGUgb3Bjb2RlID0gQWlyOjpPb3BzOworICAgICAgICAgICAgaWYgKG1lbW9yeS0+aGFz
RmVuY2UoKSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAobWVtb3J5LT50eXBlKCkpIHsKKyAg
ICAgICAgICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBM
b2FkQWNxMzI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgSW50NjQ6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3E2NDsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgb3Bjb2RlID0gbW92ZUZvclR5cGUobWVtb3J5LT50eXBlKCkpOworICAgICAg
ICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIo
bV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOFM6IHsKLSAgICAgICAgICAgIGFwcGVu
ZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDhTaWduZWRFeHRlbmRUbzMyLCBtX3ZhbHVlLCBh
ZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9w
Y29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcThT
aWduZWRFeHRlbmRUbzMyIDogTG9hZDhTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgYXBw
ZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSks
IHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBMb2FkOFo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1
ZSwgTG9hZDgsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhh
c0ZlbmNlKCkgPyBMb2FkQWNxOCA6IExvYWQ4OworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5n
SW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVl
KSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2Fk
MTZTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNlNp
Z25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwor
ICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+
KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIDogTG9hZDE2U2lnbmVk
RXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bj
b2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2WjogewotICAgICAgICAg
ICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTYsIG1fdmFsdWUsIGFkZHIobV92
YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0g
bV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTYgOiBMb2Fk
MTY7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92
YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAg
ICAgICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA5
Miw3ICsyMzE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0NoaWxs
KCkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKICAgICAgICAg
ICAgIGlmIChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAgICAg
ICAgICBsb3dlclg4NkRpdihEaXYpOworICAgICAgICAgICAgICAgIGFwcGVuZFg4NkRpdihEaXYp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFT
U0VSVCghaXNYODYoKSB8fCBpc0Zsb2F0KG1fdmFsdWUtPnR5cGUoKSkpOwpAQCAtMjEwMyw3ICsy
MzI3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIFVEaXY6IHsKICAgICAgICAgICAgIGlm
IChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAgICBs
b3dlclg4NlVEaXYoVURpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2VURpdihVRGl2KTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTIxMTcsMTMgKzIz
NDEsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNb2Q6IHsKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGlzWDg2KCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdmFsdWUt
PmlzQ2hpbGwoKSk7Ci0gICAgICAgICAgICBsb3dlclg4NkRpdihNb2QpOworICAgICAgICAgICAg
YXBwZW5kWDg2RGl2KE1vZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIFVNb2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzWDg2KCkpOwot
ICAgICAgICAgICAgbG93ZXJYODZVRGl2KFVNb2QpOworICAgICAgICAgICAgYXBwZW5kWDg2VURp
dihVTW9kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMTY2LDYgKzIz
OTAsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92
YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgIGFwcGVuZFVuT3A8RGVw
ZW5kMzIsIERlcGVuZDY0PihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIFNobDogewogICAgICAgICAgICAgaWYgKG1fdmFs
dWUtPmNoaWxkKDEpLT5pc0ludDMyKDEpKSB7CkBAIC0yMjY2LDcgKzI0OTUsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5k
U3RvcmUodmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0
b3JlKG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTIyODcsNyArMjUxNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBh
cHBlbmRTdG9yZShBaXI6OlN0b3JlOCwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAg
ICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVl
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjMwOCw3ICsyNTM3LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFpcjo6U3RvcmUxNiwg
dmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1f
dmFsdWUsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtMjc4NCw2ICszMDEzLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBhcHBlbmQoQWlyOjpFbnRyeVN3aXRjaCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6IHsKKyAgICAgICAg
ICAgIEF0b21pY1ZhbHVlKiB2YWx1ZSA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworI2lm
IENQVShYODZfNjQpCisgICAgICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4
KTsKKyAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUodmFsdWUtPm9wZXJhdGlv
blR5cGUoKSksIGltbU9yVG1wKHZhbHVlLT5jaGlsZCgwKSksIGVheCk7CisgICAgICAgICAgICBh
cHBlbmQoT1BDT0RFX0ZPUl9XSURUSChMb2NrQ21wWGNoZywgdmFsdWUtPm9wZXJhdGlvbldpZHRo
KCkpLCBlYXgsIHRtcCh2YWx1ZS0+Y2hpbGQoMSkpLCBhZGRyKHZhbHVlKSwgdG1wKHZhbHVlKSk7
CisjZWxpZiBDUFUoQVJNNjQpCisgICAgICAgICAgICBhcHBlbmRBUk02NFdlYWtDQVModmFsdWUs
IGZhbHNlKTsKKyNlbHNlCisjZXJyb3IgIkJhZCBhcmNoaXRlY3R1cmUiCisjZW5kaWYKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTI3OTMsNjMgKzMwMzYsNiBAQCBwcml2YXRlOgogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHZvaWQgbG93ZXJYODZEaXYoQjM6
Ok9wY29kZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICAgICAg
VG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBlZHggPSBUbXAo
WDg2UmVnaXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJs
ZVdvcmQ7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKLSAgICAgICAgc3dpdGNoIChtX3ZhbHVl
LT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBJbnQzMjoKLSAgICAgICAgICAgIGNvbnZlcnRUb0Rv
dWJsZVdvcmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7Ci0gICAgICAgICAgICBkaXYgPSBY
ODZEaXYzMjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDY0OgotICAgICAg
ICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7Ci0gICAg
ICAgICAgICBkaXYgPSBYODZEaXY2NDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3Ag
PT0gTW9kKTsKLSAgICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09
IERpdiA/IFg4NlJlZ2lzdGVyczo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAg
YXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVu
ZChjb252ZXJ0VG9Eb3VibGVXb3JkLCBlYXgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVh
eCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRt
cChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOwotCi0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0o
b3ApOwotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZgotICAgIH0K
LQotICAgIHZvaWQgbG93ZXJYODZVRGl2KEIzOjpPcGNvZGUgb3ApCi0gICAgewotI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjpl
YXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4KTsKLQotICAgICAg
ICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIg
OiBYODZVRGl2NjQ7Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7
Ci0gICAgICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBVRGl2ID8g
WDg2UmVnaXN0ZXJzOjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQo
TW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKFhvcjY0
LCBlZHgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+
Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1
ZSkpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KICAgICBJbmRleFNldDxWYWx1ZT4g
bV9sb2NrZWQ7IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCB3aWxsIGhhdmUgbm8gVG1wIGluIEFp
ci4KICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3ZhbHVlVG9UbXA7IC8vIFRoZXNlIGFyZSB2
YWx1ZXMgdGhhdCBtdXN0IGhhdmUgYSBUbXAgaW4gQWlyLiBXZSBzYXkgdGhhdCBhIFZhbHVlKiB3
aXRoIGEgbm9uLW51bGwgVG1wIGlzICJwaW5uZWQiLgogICAgIEluZGV4TWFwPFZhbHVlLCBUbXA+
IG1fcGhpVG9UbXA7IC8vIEVhY2ggUGhpIGdldHMgaXRzIG93biBUbXAuCkBAIC0yODY0LDcgKzMw
NTAsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFZlY3RvcjxJbnN0LCA0Pj4gbV9pbnN0czsK
ICAgICBWZWN0b3I8SW5zdD4gbV9wcm9sb2d1ZTsKLQorICAgIAogICAgIEIzOjpCYXNpY0Jsb2Nr
KiBtX2Jsb2NrOwogICAgIGJvb2wgbV9pc1JhcmU7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKQEAg
LTI4NzUsNiArMzA2MSw4IEBAIHByaXZhdGU6CiAKICAgICBQcm9jZWR1cmUmIG1fcHJvY2VkdXJl
OwogICAgIENvZGUmIG1fY29kZTsKKworICAgIEFpcjo6QmxvY2tJbnNlcnRpb25TZXQgbV9ibG9j
a0luc2VydGlvblNldDsKIH07CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCwzMCArMzQsNDggQEAgTWVtb3J5VmFsdWU6On5NZW1vcnlWYWx1ZSgpCiB7
CiB9CiAKK1R5cGUgTWVtb3J5VmFsdWU6OmFjY2Vzc1R5cGUoKSBjb25zdAoreworICAgIGlmIChp
c0xvYWQob3Bjb2RlKCkpKQorICAgICAgICByZXR1cm4gdHlwZSgpOworICAgIC8vIFRoaXMgaGFw
cGVucyB0byB3b3JrIGZvciBhdG9taWNzLCB0b28uIFRoYXQncyB3aHkgQXRvbWljVmFsdWUgZG9l
cyBub3QgbmVlZCB0byBvdmVycmlkZSB0aGlzLgorICAgIHJldHVybiBjaGlsZCgwKS0+dHlwZSgp
OworfQorCitCYW5rIE1lbW9yeVZhbHVlOjphY2Nlc3NCYW5rKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gYmFua0ZvclR5cGUoYWNjZXNzVHlwZSgpKTsKK30KKwogc2l6ZV90IE1lbW9yeVZhbHVlOjph
Y2Nlc3NCeXRlU2l6ZSgpIGNvbnN0CiB7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkp
OworfQorCitXaWR0aCBNZW1vcnlWYWx1ZTo6bG9hZFN0b3JlV2lkdGgoKSBjb25zdAorewogICAg
IHN3aXRjaCAob3Bjb2RlKCkpIHsKICAgICBjYXNlIExvYWQ4WjoKICAgICBjYXNlIExvYWQ4UzoK
ICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBXaWR0
aDg7CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKICAgICBjYXNlIFN0b3Jl
MTY6Ci0gICAgICAgIHJldHVybiAyOworICAgICAgICByZXR1cm4gV2lkdGgxNjsKICAgICBjYXNl
IExvYWQ6Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKHR5cGUoKSk7CisgICAgICAgIHJldHVy
biB3aWR0aEZvclR5cGUodHlwZSgpKTsKICAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1cm4g
c2l6ZW9mVHlwZShjaGlsZCgwKS0+dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlw
ZShjaGlsZCgwKS0+dHlwZSgpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdpZHRo
ODsKICAgICB9CiB9CiAKIFdpZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHdpZHRoRm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJu
IGxvYWRTdG9yZVdpZHRoKCk7CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1h
UHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02Nyw2ICs4NSw4IEBA
IHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYKICAgICBpZiAoKGlzTG9h
ZCgpICYmIGVmZmVjdHMoKS5yZWFkcyAhPSByYW5nZSgpKQogICAgICAgICB8fCAoaXNTdG9yZSgp
ICYmIGVmZmVjdHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkpCiAgICAgICAgIG91dC5wcmludChjb21t
YSwgInJhbmdlID0gIiwgcmFuZ2UoKSk7CisgICAgaWYgKHBoYW50b21SYW5nZSgpKQorICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJwaGFudG9tUmFuZ2UgPSAiLCBwaGFudG9tUmFuZ2UoKSk7CiB9
CiAKIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKQEAgLTc0LDYgKzk0LDU4
IEBAIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKICAgICByZXR1cm4gbmV3
IE1lbW9yeVZhbHVlKCp0aGlzKTsKIH0KIAorLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0
IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZm
aXggdGhhdAorLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KK01lbW9yeVZhbHVlOjpN
ZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtp
bmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkp
IHsKKyAgICAgICAgY2FzZSBMb2FkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
TG9hZDhaOgorICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAg
ICAgICBjYXNlIExvYWQxNlM6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3Rv
cmUxNjoKKyAgICAgICAgY2FzZSBTdG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZv
aWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMg
Zm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlW
YWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRl
ciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9y
aWdpbiwgcG9pbnRlciwgb2Zmc2V0KQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Cisg
ICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAg
ICAgICAgY2FzZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBM
b2FkMTZTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRo
aXMgZm9ybSBmb3Igc3RvcmVzLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwg
T3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZz
ZXQgPSAwKQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2
YWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBBU1NFUlQoaXNT
dG9yZShraW5kLm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNDggKzI3LDE3IEBACiAK
ICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNI
ZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxvdyBmZW5jZWQgbWVtb3J5IGFj
Y2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVtb3J5VmFsdWUgOiBwdWJsaWMg
VmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQogICAg
IHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgTG9hZDha
OgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAgICBj
YXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0g
ICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNTdG9yZShLaW5kIGtpbmQpCi0g
ICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgY2FzZSBTdG9y
ZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNMb2FkKEtpbmQga2lu
ZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQpICYmICFpc1N0b3JlKGtpbmQp
OworICAgICAgICByZXR1cm4gaXNNZW1vcnkoa2luZC5vcGNvZGUoKSk7CiAgICAgfQogCiAgICAg
fk1lbW9yeVZhbHVlKCk7CkBAIC03OCw3NiArNDcsNTYgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
SGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2U7IH0KICAgICB2b2lkIHNl
dFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9yYW5nZSA9IHJhbmdlOyB9CisgICAg
CisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgcmFuZ2UuCisgICAgY29uc3QgSGVhcFJhbmdl
JiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlKCk7IH0KKyAgICB2b2lkIHNldEFj
Y2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgc2V0UmFuZ2UocmFuZ2UpOyB9Cisg
ICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBmZW5jZVJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9m
ZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRGZW5jZVJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFu
Z2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0KKworICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0
IHsgcmV0dXJuIGlzU3RvcmUob3Bjb2RlKCkpOyB9CisgICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7
IHJldHVybiBpc0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAgICBib29sIGlzU3RvcmUoKSBjb25zdCB7
IHJldHVybiB0eXBlKCkgPT0gVm9pZDsgfQotICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1
cm4gdHlwZSgpICE9IFZvaWQ7IH0KKyAgICBib29sIGhhc0ZlbmNlKCkgY29uc3QgeyByZXR1cm4g
ISFmZW5jZVJhbmdlKCk7IH0KIAorICAgIFR5cGUgYWNjZXNzVHlwZSgpIGNvbnN0OworICAgIEJh
bmsgYWNjZXNzQmFuaygpIGNvbnN0OwogICAgIHNpemVfdCBhY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0
OwotICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CisgICAgCisgICAgLy8gU2xpZ2h0bHkg
ZmFzdGVyIHZlcnNpb24gb2YgYWNjZXNzV2lkdGgsIGlmIHlvdSBrbm93IHRoYXQgeW91J3JlIHdv
cmtpbmcgd2l0aCBhIGxvYWQgb3Igc3RvcmUuCisgICAgV2lkdGggbG9hZFN0b3JlV2lkdGgoKSBj
b25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3Ry
ZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQ
cmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNv
bnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0K
LSAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBv
ciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0Ci0gICAgLy8gZGVzY3Jp
YmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUg
dHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkK
LSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50
ZXIpCisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIE1lbW9y
eVZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3Jp
Z2luLCBpbnQzMl90IG9mZnNldCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBW
YWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKICAg
ICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRv
cCgpKQogICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAg
IHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBMb2FkOgotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgICAgICBj
YXNlIExvYWQ4UzoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgICAgIGNhc2Ug
TG9hZDE2UzoKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNh
c2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKHR5cGUgPT0gVm9pZCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9CiAgICAgfQorICAgIAorICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExv
YWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZl
IGEgc3VmZml4IHRoYXQKKyAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgorICAg
IE1lbW9yeVZhbHVlKEtpbmQsIFR5cGUsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qg
b2Zmc2V0ID0gMCk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUg
cmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdp
biBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDog
TWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQotICAgIHsK
LSAgICB9CisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwKTsKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KLSAg
ICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFs
dWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2Vk
T3Bjb2RlLCBraW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQotICAgICAgICAsIG1f
b2Zmc2V0KG9mZnNldCkKLSAgICAgICAgLCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCi0gICAg
ewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChr
aW5kLm9wY29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNh
c2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZh
bHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAogICAgIGludDMyX3QgbV9v
ZmZzZXQgeyAwIH07Ci0gICAgSGVhcFJhbmdlIG1fcmFuZ2U7CisgICAgSGVhcFJhbmdlIG1fcmFu
Z2UgeyBIZWFwUmFuZ2U6OnRvcCgpIH07CisgICAgSGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhl
YXBSYW5nZSgpIH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcg
QEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAi
QjNXaWR0aC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIApAQCAtODIsNyArODMsNiBAQCBlbnVtIE9wY29kZSA6IGludDE2X3Qgewog
ICAgIE1vZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBhcyB0byB3aGF0IHdpbGwgaGFwcGVuIHdoZW4g
eW91IGV4ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEgYW5kIHglMC4KICAgICBVTW9kLAogCi0KICAg
ICAvLyBQb2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90ZSB0aGF0IHdlIG9ubHkgbmVlZCB0aGlzIGZv
ciBmbG9hdGluZyBwb2ludCwgc2luY2UgaW50ZWdlciBuZWdhdGlvbgogICAgIC8vIGlzIGV4YWN0
bHkgbGlrZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mgbm90IHRydWUgZm9yIGZsb2F0aW5nIHBvaW50
LiBTdWIoMCwgMCkgaXMgMCwgd2hpbGUKICAgICAvLyBOZWcoMCkgaXMgLTAuIEFsc28sIHdlIGNh
bm9uaWNhbGl6ZSBTdWIoMCwgeCkgaW50byBOZWcoeCkgaW4gY2FzZSBvZiBpbnRlZ2Vycy4KQEAg
LTE2Miw2ICsxNjIsMTA1IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgU3RvcmUxNiwK
ICAgICAvLyBUaGlzIGlzIGEgcG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgRmxv
YXQsIGFuZCBEb3VibGUuCiAgICAgU3RvcmUsCisgICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUg
YW5kIHN3YXAgdGhhdCByZXR1cm5zIGEgYm9vbGVhbi4gTWF5IGNob29zZSB0byBkbyBub3RoaW5n
IGFuZCByZXR1cm4gZmFsc2UuIFlvdSBjYW4KKyAgICAvLyB1c3VhbGx5IGFzc3VtZSB0aGF0IHRo
aXMgaXMgZmFzdGVyIGFuZCByZXN1bHRzIGluIGxlc3MgY29kZSB0aGFuIEF0b21pY1N0cm9uZ0NB
UywgdGhvdWdoIHRoYXQncworICAgIC8vIG5vdCBuZWNlc3NhcmlseSB0cnVlIG9uIEludGVsLCBp
ZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gZG9lcyBpdHMgam9iLiBJbWFnaW5lIHRoYXQgdGhpcyBv
cGNvZGUgaXMKKyAgICAvLyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAvLwor
ICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gYm9vbCBBdG9taWNXZWFrQ0FTKFQg
ZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAg
aWYgKCFyYW5kKCkpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFJlYWwgd29ybGQg
ZXhhbXBsZSBvZiB0aGlzOiBjb250ZXh0IHN3aXRjaCBvbiBBUk0gd2hpbGUgZG9pbmcgQ0FTLgor
ICAgIC8vICAgICBpZiAoKnB0ciAhPSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIC8vICAgICAqcHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVy
biB0cnVlOworICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBhbGwgYXRvbWljcyBw
dXQgdGhlIHBvaW50ZXIgbGFzdCB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IGxvYWRzIGFuZCBz
dG9yZXMgd29yay4gVGhpcworICAgIC8vIGlzIGEgZ29vZnkgdHJhZGl0aW9uLCBidXQgaXQncyBo
YXJtbGVzcywgYW5kIGJldHRlciB0aGFuIGJlaW5nIGluY29uc2lzdGVudC4KKyAgICAvLworICAg
IC8vIE5vdGUgdGhhdCB3ZWFrIENBUyBoYXMgbm8gZmVuY2luZyBndWFyYW50ZWVzIHdoZW4gaXQg
ZmFpbHMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nCisgICAgLy8gdHJhbnNmb3JtYXRp
b24gaXMgYWx3YXlzIHZhbGlkOgorICAgIC8vCisgICAgLy8gQmVmb3JlOgorICAgIC8vCisgICAg
Ly8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAg
IC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICAvLwor
ICAgIC8vIEFmdGVyOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goRXF1YWwoTG9hZChw
dHIpLCBleHBlY3RlZCkpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojYXR0ZW1wdCwg
RWxzZTojZmFpbAorICAgIC8vICAgICBCQiNhdHRlbXB0OgorICAgIC8vICAgICAgICAgQnJhbmNo
KEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNz
b3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBCb3RoIGtpbmRz
IG9mIENBUyBmb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNikgaWdu
b3JlIHRoZSBpcnJlbGV2YW50IGJpdHMgb2YgdGhlCisgICAgLy8gaW5wdXQuCisgICAgQXRvbWlj
V2Vha0NBUywKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVy
bnMgdGhlIG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2ZSB0aGUgbm9uZGV0ZXJtaW5pc20gb2YgV2Vh
a0NBUy4KKyAgICAvLyBUaGlzIGlzIGEgYml0IG1vcmUgY29kZSBhbmQgYSBiaXQgc2xvd2VyIGlu
IHNvbWUgY2FzZXMsIHRob3VnaCBub3QgYnkgYSBsb3QuIEltYWdpbmUgdGhhdCB0aGlzCisgICAg
Ly8gb3Bjb2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAg
Ly8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBUIEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVj
dGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7CisgICAgLy8gICAgIFQgb2xk
VmFsdWUgPSAqcHRyOworICAgIC8vICAgICBpZiAob2xkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSkK
KyAgICAvLyAgICAgICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIG9sZFZh
bHVlCisgICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5k
IEF0b21pY1N0cm9uZ0NBUyBzb3J0IG9mIGhhdmUgdGhpcyBraW5kIG9mIGVxdWl2YWxlbmNlOgor
ICAgIC8vCisgICAgLy8gQXRvbWljV2Vha0NBUyhAZXhwLCBAbmV3LCBAcHRyKSA9PSBFcXVhbChB
dG9taWNTdHJvbmdDQVMoQGV4cCwgQG5ldywgQHB0ciksIEBleHApCisgICAgLy8KKyAgICAvLyBB
c3N1bWluZyB0aGF0IHRoZSBXZWFrQ0FTIGRvZXMgbm90IHNwdXJpb3VzbHkgZmFpbCwgb2YgY291
cnNlLgorICAgIEF0b21pY1N0cm9uZ0NBUywKKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IF9fXyBh
IG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRoZSBvbGQgdmFsdWUuIFN5bnRheDoKKyAgICAv
LworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGdfX18oQG9wZXJhbmQsIEBwdHIpCisgICAg
Ly8KKyAgICAvLyBGb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNiks
IHRoZXNlIHJldHVybiBzaWduLWV4dGVuZGVkIHJlc3VsdHMgYW5kIGlnbm9yZSB0aGUKKyAgICAv
LyBpcnJlbGV2YW50IGJpdHMgb2YgdGhlaXIgaW5wdXRzLgorICAgIEF0b21pY1hjaGdBZGQsCisg
ICAgQXRvbWljWGNoZ0FuZCwKKyAgICBBdG9taWNYY2hnT3IsCisgICAgQXRvbWljWGNoZ1N1YiwK
KyAgICBBdG9taWNYY2hnWG9yLAorICAgIAorICAgIC8vIEF0b21pY2FsbHkgZXhjaGFuZ2UgYSB2
YWx1ZSB3aXRoIGEgbWVtb3J5IGxvY2F0aW9uLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAb2xk
VmFsdWUgPSBBdG9taWNYY2hnKEBuZXdWYWx1ZSwgQHB0cikKKyAgICBBdG9taWNYY2hnLAorICAg
IAorICAgIC8vIEludHJvZHVjZSBhbiBpbnZpc2libGUgZGVwZW5kZW5jeSBmb3IgYmxvY2tpbmcg
bW90aW9uIG9mIGxvYWRzIHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyLiBTeW50YXg6CisgICAg
Ly8KKyAgICAvLyBAcmVzdWx0ID0gRGVwZW5kKEBwaGFudG9tKQorICAgIC8vCisgICAgLy8gVGhp
cyBpcyBldmVudHVhbGx5IGNvZGVnZW5lcmF0ZWQgdG8gaGF2ZSBsb2NhbCBzZW1hbnRpY3MgYXMg
aWYgd2UgZGlkOgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9ICQwCisgICAgLy8KKyAgICAvLyBC
dXQgaXQgZW5zdXJlcyB0aGF0IHRoZSB1c2VycyBvZiBAcmVzdWx0IGNhbm5vdCBleGVjdXRlIHVu
dGlsIEBwaGFudG9tIGlzIGNvbXB1dGVkLgorICAgIC8vCisgICAgLy8gVGhlIGNvbXBpbGVyIGlz
IG5vdCBhbGxvd2VkIHRvIHJlYXNvbiBhYm91dCB0aGUgZmFjdCB0aGF0IERlcGVuZCBjb2RlZ2Vu
ZXJhdGVzIHRoaXMgd2F5LiBBbnkga2luZAorICAgIC8vIG9mIHRyYW5zZm9ybWF0aW9uIG9yIGFu
YWx5c2lzIHRoYXQgcmVsaWVzIG9uIHRoZSBpbnNpZ2h0IHRoYXQgRGVwZW5kIGlzIHJlYWxseSB6
ZXJvIGlzIHVuc291bmQsCisgICAgLy8gYmVjYXVzZSBpdCB1bmxvY2tzIHJlb3JkZXJpbmcgb2Yg
dXNlcnMgb2YgQHJlc3VsdCBhbmQgQHBoYW50b20uCisgICAgLy8KKyAgICAvLyBPbiBYODYsIHRo
aXMgaXMgbG93ZXJlZCB0byBhIGxvYWQtbG9hZCBmZW5jZSBhbmQgQHJlc3VsdCB1c2VzIEBwaGFu
dG9tIGRpcmVjdGx5LgorICAgIC8vCisgICAgLy8gT24gQVJNLCB0aGlzIGlzIGxvd2VyZWQgYXMg
aWYgbGlrZToKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSBCaXRYb3IoQHBoYW50b20sIEBwaGFu
dG9tKQorICAgIC8vCisgICAgLy8gRXhjZXB0IHRoYXQgdGhlIGNvbXBpbGVyIG5ldmVyIGdldHMg
YW4gb3Bwb3J0dW5pdHkgdG8gc2ltcGxpZnkgb3V0IHRoZSBCaXRYb3IuCisgICAgRGVwZW5kLAog
CiAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIGFjdHVhbCBhZGRyZXNzIG9mIGEg
V2FzbSBtZW1vcnkgb3BlcmF0aW9uLiBJdCB0YWtlcyBhbiBJbnRQdHIKICAgICAvLyBhbmQgYSBw
aW5uZWQgcmVnaXN0ZXIgdGhlbiBjb21wdXRlcyB0aGUgYXBwcm9wcmlhdGUgSW50UHRyIGFkZHJl
c3MuIEZvciB0aGUgdXNlLWNhc2Ugb2YKQEAgLTMwMSw2ICs0MDAsMTEwIEBAIGlubGluZSBib29s
IGlzRGVmaW5pdGVseVRlcm1pbmFsKE9wY29kZSAKICAgICB9CiB9CiAKK2lubGluZSBib29sIGlz
TG9hZChPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBM
b2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9h
ZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzU3RvcmUo
T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgU3RvcmU4
OgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxp
bmUgYm9vbCBpc0xvYWRTdG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2Rl
KSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZa
OgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBTdG9yZTg6Cisg
ICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBi
b29sIGlzQXRvbWljKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAg
ICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2Fz
ZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21p
Y1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9y
OgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9t
aWNDQVMoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2Ug
QXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwor
aW5saW5lIGJvb2wgaXNBdG9taWNYY2hnKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChv
cGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5k
OgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBj
YXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitp
bmxpbmUgYm9vbCBpc01lbW9yeUFjY2VzcyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHJldHVybiBp
c0F0b21pYyhvcGNvZGUpIHx8IGlzTG9hZFN0b3JlKG9wY29kZSk7Cit9CisKK2lubGluZSBPcGNv
ZGUgc2lnbkV4dGVuZE9wY29kZShXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7
CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiBTRXh0ODsKKyAgICBjYXNlIFdpZHRo
MTY6CisgICAgICAgIHJldHVybiBTRXh0MTY7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIE9vcHM7CisgICAgfQorfQor
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwMiw2ICsyMDIsOCBAQCB2b2lkIFByb2NlZHVyZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjCiAgICAgICAgIH0KICAgICAgICAgZGF0YUxvZygiICAgICIsIGRlZXBEdW1wKCp0aGlzLCB2
YWx1ZSksICJcbiIpOwogICAgIH0KKyAgICBpZiAoaGFzUXVpcmtzKCkpCisgICAgICAgIG91dC5w
cmludCgiSGFzIFF1aXJrczogVHJ1ZVxuIik7CiAgICAgaWYgKHZhcmlhYmxlcygpLnNpemUoKSkg
ewogICAgICAgICBvdXQucHJpbnQoIlZhcmlhYmxlczpcbiIpOwogICAgICAgICBmb3IgKFZhcmlh
YmxlKiB2YXJpYWJsZSA6IHZhcmlhYmxlcygpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUHJvY2VkdXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1Byb2NlZHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVi
bGljOgogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChPcmlnaW4sIFR5cGUsIGludDY0X3QgdmFs
dWUpOwogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChWYWx1ZSosIGludDY0X3QgdmFsdWUpOwog
CisgICAgLy8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAgICBWYWx1
ZSogYWRkQm90dG9tKE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGFkZEJvdHRvbShWYWx1ZSop
OwogCkBAIC0xOTUsNiArMTk2LDEyIEBAIHB1YmxpYzoKICAgICAvLyBhbGl2ZS4gR3JlYXQgZm9y
IGNvbXBpbGVyLWdlbmVyYXRlZCBkYXRhIHNlY3Rpb25zLCBsaWtlIHN3aXRjaCBqdW1wIHRhYmxl
cyBhbmQgY29uc3RhbnQgcG9vbHMuCiAgICAgLy8gVGhpcyByZXR1cm5zIG1lbW9yeSB0aGF0IGhh
cyBiZWVuIHplcm8taW5pdGlhbGl6ZWQuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWRk
RGF0YVNlY3Rpb24oc2l6ZV90KTsKKyAgICAKKyAgICAvLyBTb21lIG9wZXJhdGlvbnMgYXJlIHNw
ZWNpZmllZCBpbiBCMyBJUiB0byBiZWhhdmUgb25lIHdheSBidXQgb24gdGhpcyBnaXZlbiBDUFUg
dGhleSBiZWhhdmUgYQorICAgIC8vIGRpZmZlcmVudCB3YXkuIFdoZW4gdHJ1ZSwgdGhvc2UgQjMg
SVIgb3BzIHN3aXRjaCB0byBiZWhhdmluZyB0aGUgQ1BVIHdheSwgYW5kIHRoZSBvcHRpbWl6ZXIg
bWF5CisgICAgLy8gc3RhcnQgdGFraW5nIGFkdmFudGFnZSBvZiBpdC4KKyAgICBib29sIGhhc1F1
aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUXVpcmtzOyB9CisgICAgdm9pZCBzZXRIYXNRdWly
a3MoYm9vbCB2YWx1ZSkgeyBtX2hhc1F1aXJrcyA9IHZhbHVlOyB9CiAKICAgICBPcGFxdWVCeXBy
b2R1Y3RzJiBieXByb2R1Y3RzKCkgeyByZXR1cm4gKm1fYnlwcm9kdWN0czsgfQogCkBAIC0yNTIs
NiArMjU5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFByaW50U3Ry
ZWFtJiwgT3JpZ2luKT4+IG1fb3JpZ2luUHJpbnRlcjsKICAgICBjb25zdCB2b2lkKiBtX2Zyb250
ZW5kRGF0YTsKICAgICBQQ1RvT3JpZ2luTWFwIG1fcGNUb09yaWdpbk1hcDsKKyAgICBib29sIG1f
aGFzUXVpcmtzIHsgZmFsc2UgfTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5n
dGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjk1LDYgKzEyOTUsMTYgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgewor
ICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDgoQXRvbWljWGNoZ19fXykKKyAgICAg
ICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBp
ZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5vcGVyYXRp
b25XaWR0aCgpID09IFdpZHRoOCkgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aElk
ZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBTRXh0MTY6CkBAIC0xMzQzLDYgKzEzNTMsMTYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgeworICAgICAgICAgICAgICAg
IC8vIFR1cm4gdGhpczogU0V4dDE2KEF0b21pY1hjaGdfX18pCisgICAgICAgICAgICAgICAgLy8g
SW50byB0aGlzOiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAgICAgaWYgKGlzQXRvbWljWGNo
ZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgICAgICYmIG1f
dmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+b3BlcmF0aW9uV2lkdGgoKSA9PSBX
aWR0aDE2KSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1
ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNF
eHQzMjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJldmlz
aW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQ2LDYgKzM0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50
ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2
YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNz
KHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTG9hZDoK
QEAgLTM1Myw2ICszNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0
ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgIT0g
Vm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZh
bHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU4OgpAQCAtMzYyLDYgKzM2
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCkt
PnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2
YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsK
ICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU6CkBAIC0zNjksOCArMzcyLDQ5IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9
PSAyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5j
aGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAg
ICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRF
KCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5
cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50
eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0Fj
Y2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0
b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5p
c0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0g
dmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5
cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2
YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAg
ICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdP
cjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRv
bWljWGNoZ1hvcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgICAg
ICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBl
KCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFs
dWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgp
ID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAg
ICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRy
ZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYgKzU4MSwyMCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCB2
YWxpZGF0ZUZlbmNlKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIGlmIChtZW1vcnktPmhh
c0ZlbmNlKCkpCisgICAgICAgICAgICBWQUxJREFURShtZW1vcnR5LT5hY2Nlc3NCYW5rKCkgPT0g
R1AsICgiRmVuY2UgYXQgIiwgKm1lbW9yeSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlk
YXRlQXRvbWljKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9t
aWMgPSB2YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBWQUxJREFU
RShiZXN0VHlwZShhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpID09IGF0b21pYy0+b3BlcmF0aW9u
VHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVTdGFj
a0FjY2VzcyhWYWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDcgQEAgYm9vbCBWYWx1
ZTo6cmV0dXJuc0Jvb2woKSBjb25zdAogICAgIGNhc2UgQWJvdmVFcXVhbDoKICAgICBjYXNlIEJl
bG93RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgIGNhc2UgQXRvbWljV2Vh
a0NBUzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQaGk6CiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC01ODksNiArNTkwLDcgQEAgRWZm
ZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAgIGNh
c2UgRXF1YWxPclVub3JkZXJlZDoKICAgICBjYXNlIFNlbGVjdDoKKyAgICBjYXNlIERlcGVuZDoK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXY6CiAgICAgY2FzZSBVRGl2OgpAQCAtNjAwLDE2
ICs2MDIsNDQgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBMb2Fk
OFM6CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKLSAgICBjYXNlIExvYWQ6
Ci0gICAgICAgIHJlc3VsdC5yZWFkcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAg
IGNhc2UgTG9hZDogeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5VmFs
dWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAg
aWYgKG1lbW9yeS0+cGhhbnRvbVJhbmdlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC53cml0ZXMg
PSBtZW1vcnktPnBoYW50b21SYW5nZSgpOworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1
ZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFN0b3JlODoKICAgICBjYXNlIFN0b3JlMTY6
Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmVzdWx0LndyaXRlcyA9IGFzPE1lbW9yeVZhbHVl
PigpLT5yYW5nZSgpOworICAgIGNhc2UgU3RvcmU6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1l
bW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5
LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5waGFudG9tUmFuZ2UoKSkgeworICAgICAg
ICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAgICAg
IHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmNvbnRyb2xE
ZXBlbmRlbnQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBBdG9taWNX
ZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0Fk
ZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAg
Y2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0
b21pY1hjaGc6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVl
PigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCkgfCBtZW1vcnktPnBo
YW50b21SYW5nZSgpOworICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5yYW5nZSgpIHwg
bWVtb3J0eS0+cGhhbnRvbVJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPnBoYW50b21SYW5n
ZSgpKQorICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LmNv
bnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBX
YXNtQWRkcmVzczoKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CkBAIC02MTcsMTggKzY0Nyw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25z
dAogICAgICAgICBjb25zdCBGZW5jZVZhbHVlKiBmZW5jZSA9IGFzPEZlbmNlVmFsdWU+KCk7CiAg
ICAgICAgIHJlc3VsdC5yZWFkcyA9IGZlbmNlLT5yZWFkOwogICAgICAgICByZXN1bHQud3JpdGVz
ID0gZmVuY2UtPndyaXRlOwotICAgICAgICAKLSAgICAgICAgLy8gUHJldmVudCBraWxsaW5nIG9m
IGZlbmNlcyB0aGF0IGNsYWltIG5vdCB0byB3cml0ZSBhbnl0aGluZy4gSXQncyBhIGJpdCB3ZWly
ZCB0aGF0IHdlIHVzZQotICAgICAgICAvLyBsb2NhbCBzdGF0ZSBhcyB0aGUgd2F5IHRvIGRvIHRo
aXMsIGJ1dCBpdCBoYXBwZW5zIHRvIHdvcms6IHdlIG11c3QgYXNzdW1lIHRoYXQgd2UgY2Fubm90
Ci0gICAgICAgIC8vIGtpbGwgd3JpdGVzTG9jYWxTdGF0ZSB1bmxlc3Mgd2UgdW5kZXJzdGFuZHMg
ZXhhY3RseSB3aGF0IHRoZSBpbnN0cnVjdGlvbiBpcyBkb2luZyAobGlrZQotICAgICAgICAvLyB0
aGUgd2F5IHRoYXQgZml4U1NBIHVuZGVyc3RhbmRzIFNldC9HZXQgYW5kIHRoZSB3YXkgdGhhdCBy
ZWR1Y2VTdHJlbmd0aCBhbmQgb3RoZXJzCi0gICAgICAgIC8vIHVuZGVyc3RhbmQgVXBzaWxvbiku
IFRoaXMgd291bGQgb25seSBiZWNvbWUgYSBwcm9ibGVtIGlmIHdlIGhhZCBzb21lIGFuYWx5c2lz
IHRoYXQgd2FzCi0gICAgICAgIC8vIGxvb2tpbmcgdG8gdXNlIHRoZSB3cml0ZXNMb2NhbFN0YXRl
IGJpdCB0byBpbnZhbGlkYXRlIGEgQ1NFIG92ZXIgbG9jYWwgc3RhdGUgb3BlcmF0aW9ucy4KLSAg
ICAgICAgLy8gVGhlbiBhIEZlbmNlIHdvdWxkIGxvb2sgYmxvY2ssIHNheSwgdGhlIGVsaW1pbmF0
aW9uIG9mIGEgcmVkdW5kYW50IEdldC4gQnV0IGl0IGxpa2UKLSAgICAgICAgLy8gdGhhdCdzIG5v
dCBhdCBhbGwgaG93IG91ciBvcHRpbWl6YXRpb25zIGZvciBTZXQvR2V0L1Vwc2lsb24vUGhpIHdv
cmsgLSB0aGV5IGdyb2sgdGhlaXIKLSAgICAgICAgLy8gb3BlcmF0aW9ucyBkZWVwbHkgZW5vdWdo
IHRoYXQgdGhleSBoYXZlIG5vIG5lZWQgdG8gY2hlY2sgdGhpcyBiaXQgLSBzbyB0aGlzIGNoZWF0
IGlzCi0gICAgICAgIC8vIGZpbmUuCi0gICAgICAgIHJlc3VsdC53cml0ZXNMb2NhbFN0YXRlID0g
dHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGNhc2UgQ0NhbGw6CkBAIC02OTQsNiArNzEzLDcgQEAgVmFsdWVLZXkgVmFsdWU6Omtl
eSgpIGNvbnN0CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAgIGNh
c2UgTmVnOgorICAgIGNhc2UgRGVwZW5kOgogICAgICAgICByZXR1cm4gVmFsdWVLZXkoa2luZCgp
LCB0eXBlKCksIGNoaWxkKDApKTsKICAgICBjYXNlIEFkZDoKICAgICBjYXNlIFN1YjoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEw
Nyw4IEBAIHB1YmxpYzoKICAgICAvLyB2YWx1ZXMgd2l0aCBJZGVudGl0aWVzIG9uIGJvdHRvbSBj
b25zdGFudHMuIEZvciB0aGlzIHJlYXNvbiwgdGhpcyB0YWtlcyBhIGNhbGxiYWNrIHRoYXQgaXMK
ICAgICAvLyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYm90dG9tcy4gVGhlcmUncyBhIHV0aWxp
dHkgZm9yIHRoaXMsIHNlZSBCM0JvdHRvbVByb3ZpZGVyLmguIFlvdQogICAgIC8vIGNhbiBhbHNv
IGFjY2VzcyB0aGF0IHV0aWxpdHkgdXNpbmcgcmVwbGFjZVdpdGhCb3R0b20oSW5zZXJ0aW9uU2V0
Jiwgc2l6ZV90KS4KKyAgICAvLworICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9t
IGlzIHplcm8uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQm90dG9tUHJvdmlkZXI+CiAgICAgdm9p
ZCByZXBsYWNlV2l0aEJvdHRvbShjb25zdCBCb3R0b21Qcm92aWRlciYpOwogICAgIApAQCAtMzIx
LDYgKzMyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSVRvRjoKICAgICAgICAgY2FzZSBC
aXR3aXNlQ2FzdDoKICAgICAgICAgY2FzZSBCcmFuY2g6CisgICAgICAgIGNhc2UgRGVwZW5kOgog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgIT0gMSkpCiAgICAgICAgICAgICAgICAg
YmFkS2luZChraW5kLCBudW1BcmdzKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwz
OCBAQAogCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgeworCitUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpCit7
CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgIGNhc2UgV2lkdGgx
NjoKKyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBj
YXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDMyOworICAgICAgICBjYXNlIEZQOgorICAg
ICAgICAgICAgcmV0dXJuIEZsb2F0OworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lkOworICAgIGNhc2UgV2lkdGg2NDoK
KyAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICBy
ZXR1cm4gSW50NjQ7CisgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICByZXR1cm4gRG91Ymxl
OworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBWb2lkOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBWb2lkOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKwogbmFt
ZXNwYWNlIFdURiB7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6
OkIzOjpXaWR0aCB3aWR0aCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRo
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTggQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yVHlwZShU
eXBlIHR5cGUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2lubGluZSBXaWR0aCBj
YW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gc3RkOjptYXgoV2lkdGgz
Miwgd2lkdGgpOworfQorCitpbmxpbmUgV2lkdGggaXNDYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0
aCkKK3sKKyAgICByZXR1cm4gd2lkdGggPj0gV2lkdGgzMjsKK30KKworVHlwZSBiZXN0VHlwZShC
YW5rIGJhbmssIFdpZHRoIHdpZHRoKTsKKwogaW5saW5lIFdpZHRoIGNvbnNlcnZhdGl2ZVdpZHRo
KEJhbmsgYmFuaykKIHsKICAgICByZXR1cm4gYmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDog
V2lkdGg2NDsKQEAgLTkzLDYgKzEwNSwyMCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JCeXRlcyh1
bnNpZ25lZCBieXRlCiAgICAgfQogfQogCitpbmxpbmUgdWludDY0X3QgbWFzayhXaWR0aCB3aWR0
aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJl
dHVybiAweDAwMDAwMDAwMDAwMDAwZmZsbHU7CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICBy
ZXR1cm4gMHgwMDAwMDAwMDAwMDBmZmZmbGx1OworICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAg
cmV0dXJuIDB4MDAwMDAwMDBmZmZmZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAg
IHJldHVybiAweGZmZmZmZmZmZmZmZmZmZmZsbHU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFyZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJBcmcuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckFyZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw2ICsyODUsOSBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6
OkVhcmx5RGVmOgogICAgICAgICBvdXQucHJpbnQoIkVhcmx5RGVmIik7CiAgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgorICAgICAgICBvdXQucHJpbnQoIkVhcmx5WkRl
ZiIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgIG91
dC5wcmludCgiU2NyYXRjaCIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQXJnLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsOCBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIGFzIFVzZSBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yOiB0aGUg
dXNlIG1heSBoYXBwZW4gYmVmb3JlIHRoZSBkZWYsIG9yIGl0IG1heSBoYXBwZW4gYWZ0ZXIKICAg
ICAgICAgLy8gaXQuCiAgICAgICAgIEVhcmx5RGVmLAorICAgICAgICAgICAgCisgICAgICAgIEVh
cmx5WkRlZiwKIAogICAgICAgICAvLyBTb21lIGluc3RydWN0aW9ucyBuZWVkIGEgc2NyYXRjaCBy
ZWdpc3Rlci4gV2UgbW9kZWwgdGhpcyBieSBzYXlpbmcgdGhhdCB0aGUgdGVtcG9yYXJ5IGlzCiAg
ICAgICAgIC8vIGRlZmluZWQgZWFybHkgYW5kIHVzZWQgbGF0ZS4gVGhpcyByb2xlIGltcGxpZXMg
dGhhdC4KQEAgLTE4Niw2ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAg
ICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNl
IEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIwNiw2ICsyMDksNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVh
cmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIyOCw2ICsy
MzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBTY3Jh
dGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAg
ICAgICAgICAgIHJldHVybiByb2xlOwogICAgICAgICBjYXNlIFVzZToKICAgICAgICAgICAgIHJl
dHVybiBDb2xkVXNlOwpAQCAtMjUzLDYgKzI1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBM
YXRlQ29sZFVzZToKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVm
OgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI3NCw2ICsyODAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAg
ICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTI5NCw2ICszMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAg
Y2FzZSBVc2VaRGVmOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5
WkRlZjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KQEAgLTMxNSw2ICszMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgTGF0ZUNv
bGRVc2U6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgRWFybHlEZWY6
CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzMwLDYgKzMzOSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIExhdGVVc2U6CiAgICAgICAgIGNh
c2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0
Y2g6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zNTgsNiArMzY4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlWkRlZjoKKyAgICAgICAgY2FzZSBF
YXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogCiBj
b25zdCBjaGFyKiBjb25zdCBCYXNpY0Jsb2NrOjpkdW1wUHJlZml4ID0gIiMiOwogCit2b2lkIEJh
c2ljQmxvY2s6OnNldFN1Y2Nlc3NvcnMoQmFzaWNCbG9jayogYmxvY2spCit7CisgICAgbV9zdWNj
ZXNzb3JzLnJlc2l6ZSgxKTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0gPSB0YXJnZXQ7Cit9CisKK3Zv
aWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sgdGFrZW4sIEZyZXF1
ZW50ZWRCbG9jayBub3RUYWtlbikKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVzaXplKDIpOworICAg
IG1fc3VjY2Vzc29yc1swXSA9IHRha2VuOworICAgIG1fc3VjY2Vzc29yc1sxXSA9IG5vdFRha2Vu
OworfQorCiBib29sIEJhc2ljQmxvY2s6OmFkZFByZWRlY2Vzc29yKEJhc2ljQmxvY2sqIGJsb2Nr
KQogewogICAgIHJldHVybiBCMzo6YWRkUHJlZGVjZXNzb3IodGhpcywgYmxvY2spOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdWNj
ZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAg
ICAgU3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQog
CisgICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayk7CisgICAgdm9pZCBzZXRT
dWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jaywgRnJlcXVlbnRlZEJsb2NrKTsKKwogICAgIEJhc2lj
QmxvY2sqIHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBzdWNj
ZXNzb3IoaW5kZXgpLmJsb2NrKCk7IH0KICAgICBCYXNpY0Jsb2NrKiYgc3VjY2Vzc29yQmxvY2so
dW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQogICAg
IFN1Y2Nlc3NvckNvbGxlY3Rpb248QmFzaWNCbG9jaywgU3VjY2Vzc29yTGlzdD4gc3VjY2Vzc29y
QmxvY2tzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNl
cnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0
LmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQmFzaWNCbG9jay5oIgor
I2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK0Jsb2NrSW5zZXJ0
aW9uU2V0OjpCbG9ja0luc2VydGlvblNldChDb2RlICZjb2RlKQorICAgIDogR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0KGNvZGUubV9ibG9ja3MpCit7Cit9CisKK0Jsb2NrSW5zZXJ0aW9uU2V0Ojp+
QmxvY2tJbnNlcnRpb25TZXQoKQoreworfQorCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6
QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJ
VCkKKworI2luY2x1ZGUgIkIzR2VuZXJpY0Jsb2NrSXNuZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAi
QWlyQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsK
KworY2xhc3MgSW5zZXJ0aW9uU2V0OworCit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNl
dDxCYXNpY0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CisKK2NsYXNzIEJs
b2NrSW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Js
b2NrPiB7CitwdWJsaWM6CisgICAgQmxvY2tJbnNlcnRpb25TZXQoQ29kZSYpOworICAgIH5CbG9j
a0luc2VydGlvblNldCgpOworICAgIAorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZXZlbnR1YWxs
eSBpbXBsZW1lbnQgQjM6OkJsb2NrSW5zZXJ0aW9uU2V0J3Mgc3BsaXRGb3J3YXJkKCkuCit9Owor
Cit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNf
SklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5v
cGNvZGVzCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjY4LDI4ICs2NjgsMzYzIEBAIExvYWQ4IFU6
Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOCBV
Okc6OCwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogU3RvcmU4IFU6
Rzo4LCBEOkc6OAogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKICAgICB4ODY6IEltbSwg
SW5kZXgKICAgICB4ODY6IEltbSwgQWRkcgogCitTdG9yZVJlbDggVTpHOjgsIEQ6Rzo4CisgICAg
VG1wLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4Njog
SW1tLCBBZGRyCisKIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFk
ZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4
LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBMb2FkMTYgVTpHOjE2
LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTYgVTpH
OjE2LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBMb2FkMTZTaWdu
ZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBU
bXAKIAorTG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKKyAgICBBZGRy
LCBUbXAKKyAgICBJbmRleCwgVG1wCisKIFN0b3JlMTYgVTpHOjE2LCBEOkc6MTYKICAgICBUbXAs
IEluZGV4CiAgICAgVG1wLCBBZGRyCiAKK1N0b3JlQWNxMTYgVTpHOjE2LCBEOkc6MTYKKyAgICBU
bXAsIEluZGV4CisgICAgVG1wLCBBZGRyCisKK0xvYWRBY3EzMiBVOkc6MzIgWkQ6RzozMgorICAg
IFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCitTdG9yZVJlbDMyIFU6
RzozMiBaRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorICAgIHg4NjogSW1t
LCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisKKzY0OiBMb2FkQWNxNjQgVTpHOjY0IFpEOkc6
NjQKKyAgICBUbXAsIFRtcAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworNjQ6IFN0
b3JlUmVsNjQgVTpHOjY0IFpEOkc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4Cisg
ICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKworIyBUaGUgZmlyc3Qgb3Bl
cmFuZCBpcyByYXguCit4ODY6IExvY2tDbXBYY2hnOCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjgsIFpE
Okc6OAorICAgIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgVG1wKiwgVG1wLCBJbmRleCwgVG1w
CisKK3g4NjogTG9ja0NtcFhjaGcxNiBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYsIFpEOkc6OAor
ICAgIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4
NjogTG9ja0NtcFhjaGczMiBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIsIFpEOkc6OAorICAgIFRt
cCosIFRtcCwgQWRkciwgVG1wCisgICAgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4Nl82NDog
TG9ja0NtcFhjaGc2NCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQsIFpEOkc6OAorICAgIFRtcCos
IFRtcCwgQWRkciwgVG1wCisgICAgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogQnJhbmNo
TG9ja0NtcFhjaGc4IFVEOkc6OCwgVTpHOjgsIFVEOkc6OCAvYnJhbmNoCisgICAgVG1wKiwgVG1w
LCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEJyYW5jaExvY2tDbXBYY2hnMTYg
VUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2IC9icmFuY2gKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAg
ICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoTG9ja0NtcFhjaGczMiBVRDpHOjMyLCBV
Okc6MzIsIFVEOkc6MzIgL2JyYW5jaAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRt
cCwgSW5kZXgKKworeDg2XzY0OiBCcmFuY2hMb2NrQ21wWGNoZzY0IFVEOkc6NjQsIFU6Rzo2NCwg
VUQ6Rzo2NCAvYnJhbmNoCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRl
eAorCit4ODY6IExvY2tBZGQ4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tBZGQxNiBV
Okc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tBZGQzMiBVOkc6MzIsIFVEOkc6MzIKKyAg
ICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODZfNjQ6IExvY2tBZGQ2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tT
dWI4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tTdWIxNiBVOkc6MTYsIFVEOkc6MTYK
KyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IExvY2tTdWIzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IExv
Y2tTdWI2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tBbmQ4IFU6Rzo4LCBVRDpH
OjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODY6IExvY2tBbmQxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIK
KyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExv
Y2tBbmQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IExvY2tBbmQ2NCBVOkc6NjQs
IFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tPcjggVTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRk
cgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Njog
TG9ja09yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAor
ICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrT3IzMiBVOkc6MzIsIFVE
Okc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODZfNjQ6IExvY2tPcjY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogTG9ja1hvcjggVTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hvcjE2IFU6RzoxNiwg
VUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hvcjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
Nl82NDogTG9ja1hvcjY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja05lZzggVUQ6
Rzo4CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogTG9ja05lZzE2IFVEOkc6MTYKKyAgICBB
ZGRyCisgICAgSW5kZXgKKworeDg2OiBMb2NrTmVnMzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJ
bmRleAorCit4ODZfNjQ6IExvY2tOZWc2NCBVRDpHOjY0CisgICAgQWRkcgorICAgIEluZGV4CisK
K3g4NjogTG9ja05vdDggVUQ6Rzo4CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogTG9ja05v
dDE2IFVEOkc6MTYKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBMb2NrTm90MzIgVUQ6Rzoz
MgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IExvY2tOb3Q2NCBVRDpHOjY0CisgICAg
QWRkcgorICAgIEluZGV4CisKK3g4NjogTG9ja1hBZGQ4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tYQWRkMTYgVUQ6RzoxNiwgVUQ6Rzox
NgorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrWEFkZDMyIFVEOkc6
MzIsIFVEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9j
a1hBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IExvY2tYY2hnOCBVRDpHOjgsIFVEOkc6OAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBMb2NrWGNoZzE2IFVEOkc6MTYsIFVEOkc6MTYKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hjaGczMiBVRDpHOjMyLCBVRDpHOjMyCisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IExvY2tYY2hnNjQgVUQ6Rzo2NCwg
VUQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworYXJtNjQ6IExvYWRMaW5r
OCBVOkc6OCwgWkQ6Rzo4CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDog
TG9hZExpbmtBY3E4IFU6Rzo4LCBaRDpHOjgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1w
CisKK2FybTY0OiBTdG9yZUNvbmQ4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRtcCwgQWRk
ciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw4IFU6Rzo4
LCBEOkc6OCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1w
CisKK2FybTY0OiBMb2FkTGluazE2IFU6RzoxNiwgWkQ6RzoxNgorICAgIEFkZHIsIFRtcAorICAg
IEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMTYgVTpHOjE2LCBaRDpHOjE2CisgICAg
QWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2LCBE
Okc6MTYsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAor
Cithcm02NDogU3RvcmVDb25kUmVsMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAs
IEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmszMiBVOkc6
MzIsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2Fk
TGlua0FjcTMyIFU6RzozMiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAK
KworYXJtNjQ6IFN0b3JlQ29uZDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBB
ZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDMyIFU6
RzozMiwgRDpHOjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4
LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rNjQgVTpHOjY0LCBaRDpHOjY0CisgICAgQWRkciwgVG1w
CisgICAgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmtBY3E2NCBVOkc6NjQsIFpEOkc6NjQK
KyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQ2NCBVOkc6
NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwg
VG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAg
IFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBEZXBlbmQzMiBV
Okc6MzIsIEQ6RzozMgorICAgIFRtcCwgVG1wCisKK2FybTY0OiBEZXBlbmQ2NCBVOkc6NjQsIEQ6
Rzo2NAorICAgIFRtcCwgVG1wCisKIENvbXBhcmUzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBa
RDpHOjMyCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRtcAogICAgIFJlbENvbmQsIFRtcCwgSW1t
LCBUbXAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJl
bmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBh
ZEludGVyZmVyZW5jZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NiArNDgsNyBAQCB2b2lkIHBhZEludGVyZmVyZW5jZShDb2RlJiBjb2RlKQogICAgICAgICAgICAg
ICAgIFsmXSAoQXJnJiwgQXJnOjpSb2xlIHJvbGUsIEJhbmssIFdpZHRoKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAocm9sZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
RWFybHlEZWY6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBoYXNFYXJseURlZiA9IHRydWU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVVc2U6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5
dGhpbmcuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUs
NyBAQCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFyZzo6TGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpT
Y3JhdGNoOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlEZWY6CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKFJlZyByZWcgOiBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoYmFuaykpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNldEJlZm9yZS5nZXQocmVnKSAmJiAhc2V0QWZ0
ZXIuZ2V0KHJlZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWZ0ZXIu
c2V0KHJlZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5l
cmF0b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNv
ZGVfZ2VuZXJhdG9yLnJiCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsx
ODIsNyBAQCBkZWYgbGV4KHN0ciwgZmlsZU5hbWUpCiBlbmQKIAogZGVmIGlzUm9sZSh0b2tlbikK
LSAgICB0b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUykpXFovCisg
ICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoWkQpfChVWkQpfChVQSl8KFMpfChFRCl8KEVa
RCl8KExVKSlcWi8KIGVuZAogCiBkZWYgaXNHRih0b2tlbikKQEAgLTY1MSw2ICs2NTEsMTIgQEAg
d3JpdGVIKCJPcGNvZGVVdGlscyIpIHsKICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VB
ZGRyIgogICAgICAgICAgICAgICAgIHdoZW4gIlMiCiAgICAgICAgICAgICAgICAgICAgIHJvbGUg
PSAiU2NyYXRjaCIKKyAgICAgICAgICAgICAgICB3aGVuICJFRCIKKyAgICAgICAgICAgICAgICAg
ICAgcm9sZSA9ICJFYXJseURlZiIKKyAgICAgICAgICAgICAgICB3aGVuICJFWkQiCisgICAgICAg
ICAgICAgICAgICAgIHJvbGUgPSAiRWFybHlaRGVmIgorICAgICAgICAgICAgICAgIHdoZW4gIkxV
IgorICAgICAgICAgICAgICAgICAgICByb2xlID0gIkxhdGVVc2UiCiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302795</attachid>
            <date>2017-02-26 16:22:05 -0800</date>
            <delta_ts>2017-02-27 09:53:46 -0800</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>109594</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMSBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OwogCQkwRjJENERERDE5ODMyRDM0MDA3RDRC
MTkgLyogRGVidWdnZXJTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJENEREQjE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5j
cHAgKi87IH07CiAJCTBGMkQ0RERFMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENEREQzE5
ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBU
b1RoaXNTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyRDRERTUxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi87IH07
CkBAIC0yNzY0LDYgKzI3NjksMTEgQEAKIAkJMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIz
QmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0aCA9
IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRDFFNjBB
RTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7IHBhdGggPSBiMy9CM1dp
ZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0IzMUU2MzQzRTgwMEMx
MzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBC
M0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRvbWlj
VmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyog
QWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5z
ZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkExRTYz
NDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIvQWly
QmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRE
REIxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQ
cm9maWxlckxvZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI5Miw2ICs1MzAyLDggQEAKIAkJCQkwRkVD
ODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4
MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4
MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNC
YW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5j
cHAgKi8sCkBAIC01MzU0LDYgKzUzNjYsNyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyog
QjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4
MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3
NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTQ2OSw2ICs1NDgyLDggQEAKIAkJCQkwRjY0RUFG
MjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJE
QUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFD
REM3MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5oICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgw
MEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYz
NDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIx
QkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFD
NDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYx
ODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC03
OTU2LDYgKzc5NzEsNyBAQAogCQkJCTBGRUM4NTgwMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU4MTFCREFDREM3MDA4MEZGNzQgLyogQWlySW5z
dElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGREY2N0Q3MUQ5REM0NDIwMDFCOTgyNSAv
KiBBaXJLaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCQzFFNjM0NDBDMDBDMTM4Mzkg
LyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2ODRENDM4MUMw
MDE2MUMwMDgxRDY2MyAvKiBBaXJMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMzRD
MUExQzRCMzlBRTAwMDNBNTEyIC8qIEFpckxvZ1JlZ2lzdGVyUHJlc3N1cmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNjE4MzJGMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlckFmdGVyUmVnQWxs
b2MuaCBpbiBIZWFkZXJzICovLApAQCAtODA0Nyw2ICs4MDYzLDcgQEAKIAkJCQk0MzQyMkE2MzFD
MTU4RTZEMDBFMkVCOTggLyogQjNDb25zdEZsb2F0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUM4NUIzMUJERUQ5NTcwMDgwRkY3NCAvKiBCM0NvbnN0UHRyVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhFMEUxQkYwMjc2
QzAwMTNDODhGIC8qIEIzRGF0YVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzNGQ0ZD
MUMxNjI1QkUwMDMyM0Y2NyAvKiBCM0RvbWluYXRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NkI4QUQ5MUM0RUREQTIwMDk2OTA1MiAvKiBCM0R1cGxpY2F0ZVRhaWxzLmggaW4gSGVhZGVycyAq
LywKQEAgLTgzNjYsNiArODM4Myw3IEBACiAJCQkJMEYzOTJDOEExQjQ2MTg4NDAwODQ0NzI4IC8q
IERGR09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1
NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyMzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFu
dG9tSW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYw
MEM3MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIxOUQwQkE3
RDAwQjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjQ4LDYg
KzEwMjY2LDcgQEAKIAkJCQk5RTcyOTQwNzE5MEYwMUE1MDAxQTkxQjUgLyogSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVCNzE4NUI4QkQzMDA3RTk1QUQg
LyogSW5qZWN0ZWRTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxNEIyQzIxODVBNjg0
NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjJDNjNCNjFFNjM0M0VBMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNThFMzU5MTE4NjBERUNGMDAxRjI0RkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTNFNUNBMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4NDBFMjAxODdCN0I4NjAw
ODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAy
NjYsNiArMTAyODUsNyBAQAogCQkJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUzMjQzOEIx
ODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTBFNEI2MTE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBB
aXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTUxNjVEMjFCREYw
Qjk4MDAzQjc1QzEgLyogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNGMTA3RUMzNzYwMDQyN0E0OCAvKiBJbnRlcm5h
bEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNf
SklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworQXRvbWljVmFsdWU6On5B
dG9taWNWYWx1ZSgpCit7Cit9CisKK1dpZHRoIEF0b21pY1ZhbHVlOjphY2Nlc3NXaWR0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fd2lkdGg7Cit9CisKK3ZvaWQgQXRvbWljVmFsdWU6OmR1bXBN
ZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAg
b3V0LnByaW50KGNvbW1hLCAid2lkdGggPSAiLCBtX3dpZHRoKTsKKyAgICAKKyAgICBNZW1vcnlW
YWx1ZTo6ZHVtcE1ldGEoY29tbWEsIG91dCk7Cit9CisKK1ZhbHVlKiBBdG9taWNWYWx1ZTo6Y2xv
bmVJbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbmV3IEF0b21pY1ZhbHVlKCp0aGlzKTsKK30K
KworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lk
dGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQg
PSAwKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgb3BlcmFuZC0+dHlw
ZSgpLCBvcmlnaW4sIG9mZnNldCwgb3BlcmFuZCwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lk
dGgpCit7CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBB
U1NFUlQoYmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKyAg
ICAKKyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6
CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNh
c2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9t
aWNYY2hnOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtp
bmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFs
dWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDog
TWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwga2luZC5vcGNvZGUoKSA9PSBBdG9taWNX
ZWFrQ0FTID8gSW50MzIgOiBleHBlY3RlZFZhbHVlLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCBl
eHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7
CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBBU1NFUlQo
YmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKworICAgIHN3
aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNl
IEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQXRvbWljVmFsdWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisj
aW5jbHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwor
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQXRvbWljVmFsdWUgOiBwdWJsaWMgTWVtb3J5VmFsdWUg
eworcHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGlzQXRvbWljKGtpbmQub3Bjb2RlKCkpOworICAgIH0KKyAgICAKKyAgICB+
QXRvbWljVmFsdWUoKTsKKyAgICAKKyAgICBUeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJl
dHVybiBjaGlsZCgwKS0+dHlwZSgpOyB9CisgICAgCisgICAgV2lkdGggb3BlcmF0aW9uV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgCisgICAgLy8gU3lub255bSBmb3Igd2lk
dGgoKSwgaWYgeW91J3JlIGFjY2Vzc2luZyB2aWEgTWVtb3J5VmFsdWUuCisgICAgV2lkdGggYWNj
ZXNzV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1
bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
CisgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtpbmQs
IE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQgPSAwKTsKKyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBW
YWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwKTsKKyAgICAKKyAgICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2Vy
dGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMzUgKzM2LDEzIEBACiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsKIAogQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0
KFByb2NlZHVyZSAmcHJvYykKLSAgICA6IG1fcHJvYyhwcm9jKQorICAgIDogR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0KHByb2MubV9ibG9ja3MpCisgICAgLCBtX3Byb2MocHJvYykKIHsKIH0KIAog
QmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpIHsgfQogCi12b2lkIEJsb2Nr
SW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCi17Ci0gICAg
bV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOwotfQotCi1CYXNpY0Jsb2Nr
KiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVl
bmN5KQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNC
bG9jayhVSU5UX01BWCwgZnJlcXVlbmN5KSk7Ci0gICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxv
Y2suZ2V0KCk7Ci0gICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2Nr
KSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9u
U2V0OjppbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5KQot
ewotICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVl
bmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7Ci19Ci0KLUJhc2ljQmxvY2sq
IEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91Ymxl
IGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJl
cXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7Ci19
Ci0KIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcndhcmQoCiAgICAgQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqIGluc2Vy
dGlvblNldCwgZG91YmxlIGZyZXF1ZW5jeSkKIHsKQEAgLTEwMiwzMiArODAsNiBAQCBCYXNpY0Js
b2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotYm9vbCBCbG9ja0luc2VydGlvblNldDo6ZXhlY3V0ZSgpCi17Ci0gICAgaWYgKG1faW5zZXJ0
aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBXZSBh
bGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5l
ZWQgdG8gc29ydCB0aGVtIGJlZm9yZQotICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0
aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8g
YmUKLSAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCi0gICAgYnViYmxlU29ydCht
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKLQotICAgIGV4ZWN1dGVJ
bnNlcnRpb25zKG1fcHJvYy5tX2Jsb2NrcywgbV9pbnNlcnRpb25zKTsKLSAgICAKLSAgICAvLyBQ
cnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0
IGl0J3MKLSAgICAvLyBoZWFsdGh5IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5n
LgotICAgIG1fcHJvYy5tX2Jsb2Nrcy5yZW1vdmVBbGxNYXRjaGluZygKLSAgICAgICAgWyZdIChz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIHJldHVybiAhYmxvY2tQdHI7Ci0gICAgICAgIH0pOwotICAgIAotICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9wcm9jLm1fYmxvY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3By
b2MubV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQot
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5z
ZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKICNp
bmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwyNiArMzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CiAKIGNsYXNzIEluc2VydGlvblNldDsKIAotdHlwZWRlZiBXVEY6Okluc2Vy
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOwordHlwZWRl
ZiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJs
b2NrSW5zZXJ0aW9uOwogCi1jbGFzcyBCbG9ja0luc2VydGlvblNldCB7CitjbGFzcyBCbG9ja0lu
c2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4g
ewogcHVibGljOgogICAgIEJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSYpOwogICAgIH5CbG9j
a0luc2VydGlvblNldCgpOwogICAgIAotICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYp
OwotCi0gICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCi0gICAgQmFz
aWNCbG9jayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7
Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVz
dWFsbHkgeW91IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQotICAgIC8vIGFyZ3VtZW50LiBQ
YXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdi
ZWZvcmUnIGJsb2NrLiBUaGF0J3MKLSAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCi0gICAg
QmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1
ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2
ZW4gYmxvY2suCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIs
IGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQogICAgIC8vIEEgaGVscGVyIHRvIHNwbGl0IGEg
YmxvY2sgd2hlbiBmb3J3YXJkIGl0ZXJhdGluZyBvdmVyIGl0LiBJdCBjcmVhdGVzIGEgbmV3IGJs
b2NrIHRvIGhvbGQKICAgICAvLyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYXQg
dmFsdWVJbmRleC4gVGhlIGN1cnJlbnQgYmxvY2sgaXMgbGVmdCB3aXRoCiAgICAgLy8gZXZlcnl0
aGluZyBhdCBhbmQgYWZ0ZXIgdmFsdWVJbmRleC4gSWYgdGhlIG9wdGlvbmFsIEluc2VydGlvblNl
dCBpcyBwcm92aWRlZCwgaXQgd2lsbCBnZXQKQEAgLTgwLDEyICs2OCw5IEBAIHB1YmxpYzoKICAg
ICBCYXNpY0Jsb2NrKiBzcGxpdEZvcndhcmQoCiAgICAgICAgIEJhc2ljQmxvY2sqLCB1bnNpZ25l
ZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0KiA9IG51bGxwdHIsCiAgICAgICAgIGRvdWJsZSBm
cmVxdWVuY3kgPSBQTmFOKTsKLSAgICAKLSAgICBib29sIGV4ZWN1dGUoKTsKIAogcHJpdmF0ZToK
ICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKLSAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1f
aW5zZXJ0aW9uczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAg
ICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8
fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3Zlcmxh
cHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7
CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZl
bmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0
IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9w
ZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhl
ci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5u
ZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9
PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAg
JiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShj
b25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVj
dHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwg
IldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwxMCBA
QCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzE3MwogICAgIGJvb2wgcmVhZHNQaW5uZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgd3JpdGVzUGlubmVkIHsgZmFsc2UgfTsKKyAgICAKKyAgICAvLyBNZW1vcnkgZmVuY2VzIGNh
bm5vdCBiZSByZW9yZGVyZWQgYXJvdW5kIGVhY2ggb3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBl
ZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQKKyAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVt
b3J5IGZlbmNlLgorICAgIGJvb2wgZmVuY2UgeyBmYWxzZSB9OwogCiAgICAgSGVhcFJhbmdlIHdy
aXRlczsKICAgICBIZWFwUmFuZ2UgcmVhZHM7CkBAIC04OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZl
Y3RzIHsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKICAgICAgICAg
cmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9
IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCkBAIC0xMDMsNyArMTA4LDcgQEAgc3RydWN0IEVmZmVjdHMgewogCiAgICAg
Ym9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdGVybWluYWwg
fHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQ
aW5uZWQ7CisgICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRl
c0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9CiAK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgcmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVz
ZSByZXNwZWN0aXZlIGVmZmVjdHMgd291bGQgY2hhbmdlIHByb2dyYW0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NDIsNiArMTQyLDcgQEAgc3RydWN0IEltcHVyZUJsb2NrRGF0YSB7CiAKICAgICBSYW5nZVNldDxI
ZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlzIG9ubHkgZ2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0b3Jl
IGVsaW1pbmF0aW9uLgogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdl
dHMgdXNlZCBmb3IgYm90aCBsb2FkIGFuZCBzdG9yZSBlbGltaW5hdGlvbi4KKyAgICBib29sIGZl
bmNlOwogCiAgICAgTWVtb3J5VmFsdWVNYXAgc3RvcmVzQXRIZWFkOwogICAgIE1lbW9yeVZhbHVl
TWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsKQEAgLTE3NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNT
dG9yZSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9y
eS0+cmFuZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBz
KG1lbW9yeS0+cmFuZ2UoKSkpCisgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5v
dmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCisgICAgICAgICAgICAgICAgICAgICYmICghZGF0YS5m
ZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5jZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5z
dG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7CiAgICAgICAgICAgICAgICAgZGF0YS5yZWFkcy5hZGQo
ZWZmZWN0cy5yZWFkcyk7CiAKICAgICAgICAgICAgICAgICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9
IGVmZmVjdHMud3JpdGVzKQogICAgICAgICAgICAgICAgICAgICBjbG9iYmVyKGRhdGEsIHdyaXRl
cyk7CisgICAgICAgICAgICAgICAgZGF0YS5mZW5jZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG1lbW9yeSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlW
YWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7CkBAIC00NzgsNiArNDgxLDkgQEAgcHJpdmF0ZToKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVBZnRlckNsb2Ji
ZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXImIGZpbHRlcikKICAg
ICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBl
bGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0b3JlIHRvIHRo
ZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFueSBvcGVyYXRpb24g
dGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxpa2UgaXQgc2hvdWxk
IGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3Jp
dHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIApAQCAtNjE0LDYg
KzYyMCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIp
OwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNG
ZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChNZW1vcnlWYWx1ZSog
bWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7CiAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91
bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0dlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCB2
b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MDcKICAgICB9CiAKKyAgICAv
LyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgogICAgIGxvd2VyTWFjcm9zKHByb2Nl
ZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEluc2Vy
dGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9jaz4KK2NsYXNzIEdlbmVyaWNC
bG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOworICAgIAorICAgIEJs
b2NrSW5zZXJ0aW9uU2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBibG9j
a3MpCisgICAgICAgIDogbV9ibG9ja3MoYmxvY2tzKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
dm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCisgICAgeworICAgICAgICBt
X2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7CisgICAgfQorCisgICAgLy8g
SW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCisgICAgQmFzaWNCbG9jayogaW5z
ZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5U
X01BWCwgZnJlcXVlbmN5KSk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdl
dCgpOworICAgICAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2sp
KSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5l
dyBibG9jayBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNz
IHRoZSBmcmVxdWVuY3kKKyAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0
byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCisg
ICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3YW50LgorICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9y
ZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVxdWVu
Y3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsKKyAgICB9CisKKyAgICAvLyBJ
bnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KKyAgICBCYXNpY0Jsb2Nr
KiBpbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
CisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJlcXVl
bmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7CisgICAg
fQorCisgICAgYm9vbCBleGVjdXRlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2luc2VydGlvbnMu
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAg
Ly8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3JkZXIuIFNv
LCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKKyAgICAgICAgLy8gcnVubmluZyBXVEY6OmV4
ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBhbmQgd2Ug
d2FudCBpdCB0byBiZQorICAgICAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCisg
ICAgICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQo
KSk7CisgICAgICAgIAorICAgICAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX2Jsb2NrcywgbV9pbnNl
cnRpb25zKTsKKyAgICAgICAgCisgICAgICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBU
aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncworICAgICAgICAvLyBoZWFsdGh5
IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgorICAgICAgICBtX2Jsb2Nrcy5y
ZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+JiBibG9ja1B0cikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFibG9j
a1B0cjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2VzLgorICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9ibG9ja3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX2Jsb2Nr
c1tpXS0+bV9pbmRleCA9IGk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4mIG1f
YmxvY2tzOworICAgIFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJKHJldmlzaW9uIDIxMjk5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdlIG9wZXJhdG9yfChjb25zdCBIZWFw
UmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5nZSgKKyAg
ICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1fYmVnaW4pLAorICAgICAgICAgICAg
c3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAgfQorICAgIAogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1fZW5kOyB9CiAKICAg
ICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJbnNlcnRpb25TZXQ6Omluc2VydEJv
dHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9tKGluZGV4LCBsaWtlVmFsdWUtPm9y
aWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1ZhbHVlKiBJbnNlcnRpb25TZXQ6Omlu
c2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVlKQoreworICAgIHJldHVybiBpbnNl
cnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFsdWUpKTsKK30KKwogdm9pZCBJbnNl
cnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgYnViYmxlU29ydCht
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVf
dCBpbmRleCwgT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVfdCBp
bmRleCwgVmFsdWUqKTsKKyAgICAKKyAgICBWYWx1ZSogaW5zZXJ0Q2xvbmUoc2l6ZV90IGluZGV4
LCBWYWx1ZSopOwogCiAgICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHJ1bigpCiAgICAg
eworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wcm9jLmhhc1F1aXJrcygpKTsKKyAgICAgICAg
CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKICAgICAgICAgICAg
IG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgICAgIHByb2Nlc3NDdXJyZW50QmxvY2soKTsKQEAg
LTcyLDYgKzc0LDkgQEAgcHVibGljOgogICAgICAgICAgICAgbV9wcm9jLnJlc2V0UmVhY2hhYmls
aXR5KCk7CiAgICAgICAgICAgICBtX3Byb2MuaW52YWxpZGF0ZUNGRygpOwogICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBtX3Byb2Muc2V0SGFzUXVpcmtzKHRydWUpOworICAgICAgICAKICAg
ICAgICAgcmV0dXJuIG1fY2hhbmdlZDsKICAgICB9CiAgICAgCkBAIC0xODUsNyArMTkwLDczIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1sb2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRv
IG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8gdGVsbCB0aGUKKyAgICAgICAgICAgICAgICAg
ICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxvYWQgbW90aW9uLgorICAgICAgICAgICAgICAg
ICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVl
PihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0g
SGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5n
ZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBL
aWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBs
aWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoQm90dG9t
KG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIEF0b21p
Y1dlYWtDQVM6CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzogeworICAgICAgICAg
ICAgICAgIGlmIChpc1g4NigpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+
YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMt
Pm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYg
KGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSA9IGF0
b21pYy0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gT24g
QVJNLCB0aGUgbG9hZCBwYXJ0IG9mIHRoZSBDQVMgZG9lcyBhIGxvYWQgd2l0aCB6ZXJvIGV4dGVu
c2lvbi4gVGhlcmVmb3JlLCB3ZSBuZWVkCisgICAgICAgICAgICAgICAgLy8gdG8gemVyby1leHRl
bmQgdGhlIGlucHV0LgorICAgICAgICAgICAgICAgIFZhbHVlKiBtYXNrZWRFeHBlY3RlZFZhbHVl
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgbV9p
bmRleCwgQml0QW5kLCBtX29yaWdpbiwgZXhwZWN0ZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQobV9pbmRleCwgZXhwZWN0ZWRWYWx1
ZSwgbWFzayh3aWR0aCkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBhdG9t
aWMtPmNoaWxkKDApID0gbWFza2VkRXhwZWN0ZWRWYWx1ZTsKKyAgICAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6Cisg
ICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgICAgICAgICAv
LyBPbiBYODYsIHRoZXNlIGFjdHVhbGx5IHJldHVybiBnYXJiYWdlIGluIHRoZSBoaWdoIGJpdHMu
IE9uIEFSTTY0LCB0aGVzZSBzb3J0YQorICAgICAgICAgICAgICAgIC8vIHplcm8tZXh0ZW5kIHRo
ZWlyIGhpZ2ggYml0cywgZXhjZXB0IHRoYXQgdGhlIGhpZ2ggYml0cyBtaWdodCBnZXQgcG9sbHV0
ZWQgYnkgaGlnaAorICAgICAgICAgICAgICAgIC8vIGJpdHMgaW4gdGhlIG9wZXJhbmQuIC4gU28s
IGVpdGhleSB3YXksIHdlIG5lZWQgdG8gdGhyb3cgYSBzaWduLWV4dGVuZCBvbiB0aGVzZQorICAg
ICAgICAgICAgICAgIC8vIHRoaW5ncy4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAg
ICAgICAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgp
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBWYWx1ZSogbmV3VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAor
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBzaWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwgbV9v
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENsb25lKG1f
aW5kZXgsIG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX3Zh
bHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
TWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJP
cHRpbWl6YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDE1ICsxNTYsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGNhc2UgUm90TDogewogICAgICAgICAgICAgICAgIC8vIEFSTTY0
IGRvZXNuJ3QgaGF2ZSBhIHJvdGF0ZSBsZWZ0LgogICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVl
PihtX2luZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcm90YXRlID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0PFZhbHVlPihtX2luZGV4LCBSb3RSLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hp
bGQoMCksIG5ld1NoaWZ0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxh
Y2VXaXRoSWRlbnRpdHkocm90YXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlm
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5v
cmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSog
cm90YXRlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBSb3RSLCBtX3Zh
bHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCksIG5ld1NoaWZ0KTsKKyAgICAgICAgICAg
ICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw2ICs3MiwxNCBAQCBuYW1lc3BhY2UgewogCiBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKIAorLy8gRklYTUU6IFdlIHdvdWxkbid0IG5lZWQgdGhpcyBpZiBBaXIgc3VwcG9ydGVkIFdp
ZHRoIG1vZGlmaWVycyBpbiBBaXI6OktpbmQuCisvLyBPT1BTISEhIChuZWVkIGEgYnVnIFVSTCkK
KyNkZWZpbmUgT1BDT0RFX0ZPUl9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKKyAgICAod2lkdGgp
ID09IFdpZHRoOCA/IG9wY29kZSAjIyA4IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IG9w
Y29kZSAjIyAxNiA6IFwKKyAgICAod2lkdGgpID09IFdpZHRoMzIgPyBvcGNvZGUgIyMgMzIgOiBc
CisgICAgb3Bjb2RlICMjIDY0KQorCiBjbGFzcyBMb3dlclRvQWlyIHsKIHB1YmxpYzoKICAgICBM
b3dlclRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQpAQCAtODMsNiArOTEsNyBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV9kb21pbmF0b3JzKHByb2NlZHVyZS5kb21pbmF0b3JzKCkpCiAgICAgICAg
ICwgbV9wcm9jZWR1cmUocHJvY2VkdXJlKQogICAgICAgICAsIG1fY29kZShwcm9jZWR1cmUuY29k
ZSgpKQorICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQobV9jb2RlKQogICAgIHsKICAgICB9
CiAKQEAgLTEyNCwxNCArMTMzLDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3RlZCBhZGRy
ZXNzIGV4cHJlc3Npb24gYmVmb3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhlIGxvb3Au
CiAgICAgICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUuYmxvY2tz
SW5QcmVPcmRlcigpKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAgICAgICAg
ICAvLyBSZXNldCBzb21lIHN0YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CiAK
ICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAKICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5n
IEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KKyAgICAg
ICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vz
c29ycygpKSB7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNz
b3JzKCkuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayht
X2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkp
OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBpbiByZXZl
cnNlIG9yZGVyIHNvIHdlIHNlZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBhbGxvd3Mg
dXMKICAgICAgICAgICAgIC8vIHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5LgogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAtMTQ5LDE5
ICsxNjIsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRh
aW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAgICAgICAgLy8g
aXQgaW4gcmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6
ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0c1tp
XSkKLSAgICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBlbmRJbnN0
KFdURk1vdmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1
cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAgICAgICAg
IGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygp
KSB7Ci0gICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCku
YXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2Nr
VG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG1fYmxv
Y2tUb0Jsb2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fYmxvY2tJ
bnNlcnRpb25TZXQuZXhlY3V0ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0IGluc2Vy
dGlvblNldChtX2NvZGUpOwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xvZ3VlKQpA
QCAtNTM4LDcgKzU0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAK
ICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB2YWx1ZS0+b2Zmc2V0KCk7Ci0gICAgICAgIFdpZHRo
IHdpZHRoID0gdmFsdWUtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgIFdpZHRoIHdpZHRoID0gdmFs
dWUtPmxvYWRTdG9yZVdpZHRoKCk7CiAKICAgICAgICAgQXJnIHJlc3VsdCA9IGVmZmVjdGl2ZUFk
ZHIodmFsdWUtPmxhc3RDaGlsZCgpLCBvZmZzZXQsIHdpZHRoKTsKICAgICAgICAgQVNTRVJUKHJl
c3VsdC5pc1ZhbGlkRm9ybSh3aWR0aCkpOwpAQCAtNTYyLDExICs1NjYsMTYgQEAgcHJpdmF0ZToK
ICAgICAKICAgICBBcmdQcm9taXNlIGxvYWRQcm9taXNlQW55T3Bjb2RlKFZhbHVlKiBsb2FkVmFs
dWUpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkVmFsdWUtPmFzPE1lbW9yeVZh
bHVlPigpKTsKICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKGxvYWRWYWx1ZSkpCiAgICAgICAg
ICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAgIGlmIChjcm9zc2VzSW50ZXJmZXJlbmNlKGxvYWRW
YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAgIEFyZ1Byb21pc2UgcmVz
dWx0KGFkZHIobG9hZFZhbHVlKSwgbG9hZFZhbHVlKTsKKyAgICAgICAgaWYgKGxvYWRWYWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnKCk7
CisgICAgICAgIEFyZyBsb2FkQWRkciA9IGFkZHIobG9hZFZhbHVlKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobG9hZEFkZHIpOworICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChsb2FkQWRkciwg
bG9hZFZhbHVlKTsKICAgICAgICAgaWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkKICAgICAgICAgICAg
IHJlc3VsdC5zZXRUcmFwcyh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTkzMSwx
MCArOTQwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6
Ok9wY29kZSBvcGNvZGU2NCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0
YXRpdmU+CiAgICAgYm9vbCB0cnlBcHBlbmRTdG9yZUJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSog
cmlnaHQpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKSk7CisgICAgICAgIAogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNv
ZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgbGVmdC0+dHlwZSgpKTsKICAgICAgICAgaWYg
KG9wY29kZSA9PSBBaXI6Ok9vcHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IAorICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICBBcmcgc3RvcmVBZGRy
ID0gYWRkcihtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUKHN0b3JlQWRkcik7CiAKQEAgLTk5NCwx
MCArMTAwOCw0OCBAQCBwcml2YXRlOgogCiAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFs
dWUsIHRtcCh2YWx1ZSksIGRlc3QpOwogICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9y
ZU9wY29kZShXaWR0aCB3aWR0aCwgQmFuayBiYW5rLCBib29sIHJlbGVhc2UpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/
IFN0b3JlUmVsOCA6IFN0b3JlODsKKyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/
IFN0b3JlUmVsMTYgOiBTdG9yZTE2OworICAgICAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgICAg
ICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDMyIDogTW92ZTMyOworICAgICAgICAgICAgY2FzZSBG
UDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpczY0
Qml0KCkpOworICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQ
OgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWw2NCA6IE1vdmU7Cisg
ICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxl
YXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFZh
bHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJldHVybiBzdG9yZU9wY29kZShtZW1vcnktPmxv
YWRTdG9yZVdpZHRoKCksIG1lbW9yeS0+YWNjZXNzQmFuaygpLCBtZW1vcnktPmhhc0ZlbmNlKCkp
OworICAgIH0KIAogICAgIEluc3QgY3JlYXRlU3RvcmUoVmFsdWUqIHZhbHVlLCBjb25zdCBBcmcm
IGRlc3QpCiAgICAgewotICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gbW92ZUZvclR5
cGUodmFsdWUtPnR5cGUoKSk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBzdG9y
ZU9wY29kZSh2YWx1ZSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVTdG9yZShtb3ZlT3Bjb2RlLCB2
YWx1ZSwgZGVzdCk7CiAgICAgfQogCkBAIC0xMDA2LDcgKzEwNTgsNyBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVTdG9yZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSk7CiAgICAgfQotCisgICAgCiAgICAgQWlyOjpPcGNv
ZGUgbW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7
CkBAIC0xMDczLDcgKzExMjUsNDEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1faW5zdHMu
bGFzdCgpLmFwcGVuZChpbnN0KTsKICAgICB9CisgICAgCisgICAgdm9pZCBmaW5pc2hBcHBlbmRp
bmdJbnN0cnVjdGlvbnMoQWlyOjpCYXNpY0Jsb2NrKiB0YXJnZXQpCisgICAgeworICAgICAgICAv
LyBOb3cgYXBwZW5kIHRoZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMgY29udGFpbnMgdGhlbSBpbiBy
ZXZlcnNlIG9yZGVyLCBzbyB3ZSBwcm9jZXNzCisgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAg
ICAgICBmb3IgKEluc3QmIGluc3QgOiBtX2luc3RzW2ldKQorICAgICAgICAgICAgICAgIHRhcmdl
dC0+YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKKyAgICAgICAgfQorICAgICAgICBtX2luc3Rz
LnJlc2l6ZSgwKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpCYXNpY0Jsb2NrKiBuZXdCbG9jaygp
CisgICAgeworICAgICAgICByZXR1cm4gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlciht
X2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXSk7CisgICAgfQogCisgICAgLy8gTk9URTogVGhpcyB3aWxs
IGNyZWF0ZSBhIGNvbnRpbnVhdGlvbiBibG9jayAoYG5leHRCbG9ja2ApICphZnRlciogYW55IGJs
b2NrcyB5b3UndmUgY3JlYXRlZCB1c2luZworICAgIC8vIG5ld0Jsb2NrKCkuIFNvLCBpdCdzIHBy
ZWZlcmFibGUgdG8gY3JlYXRlIGFsbCBvZiB5b3VyIGJsb2NrcyB1cGZyb250IHVzaW5nIG5ld0Js
b2NrKCkuIEFsc28gbm90ZQorICAgIC8vIHRoYXQgYW55IGNvZGUgeW91IGVtaXQgYmVmb3JlIHRo
aXMgd2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIGNvbnRpbnVhdGlvbiwgYW5kIGFueSBjb2RlIHlv
dSBlbWl0CisgICAgLy8gYWZ0ZXIgdGhpcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBwcmV2aW91
cyBibG9jay4KKyAgICB2b2lkIHNwbGl0QmxvY2soQWlyOjpCYXNpY0Jsb2NrKiYgcHJldmlvdXNC
bG9jaywgQWlyOjpCYXNpY0Jsb2NrKiYgbmV4dEJsb2NrKQorICAgIHsKKyAgICAgICAgQWlyOjpC
YXNpY0Jsb2NrKiBibG9jayA9IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdOworICAgICAgICAKKyAg
ICAgICAgcHJldmlvdXNCbG9jayA9IGJsb2NrOworICAgICAgICBuZXh0QmxvY2sgPSBtX2Jsb2Nr
SW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKGJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGZpbmlz
aEFwcGVuZGluZ0luc3RydWN0aW9ucyhuZXh0QmxvY2spOworICAgICAgICBuZXh0QmxvY2stPnN1
Y2Nlc3NvcnMoKSA9IGJsb2NrLT5zdWNjZXNzb3JzKCk7CisgICAgICAgIGJsb2NrLT5zdWNjZXNz
b3JzKCkuY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJ
bnN0PigpKTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gQXJndW1lbnRzPgogICAgIFQqIGVuc3VyZVNwZWNpYWwoVComIGZpZWxkLCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCiAgICAgewpAQCAtMTEyMyw3ICsxMjA5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlN0YWNrQXJn
dW1lbnQ6CiAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjpjYWxsQXJnKHZhbHVlLnJlcCgpLm9m
ZnNldEZyb21TUCgpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZS52YWx1ZSgp
LCBhcmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1vdmVGb3JUeXBlKHZhbHVlLnZh
bHVlKCkpLCBhcmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTk2
MSw2ICsyMDQ3LDIzMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
KyAgICB2b2lkIGFwcGVuZFg4NkRpdihCMzo6T3Bjb2RlIG9wKQorICAgIHsKKyNpZiBDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KQorICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4
KTsKKyAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7CisKKyAgICAgICAg
QWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2
OworICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgeworICAgICAgICBjYXNlIEludDMy
OgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdv
cmQzMjsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgSW50NjQ6CisgICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2
Q29udmVydFRvUXVhZFdvcmQ2NDsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjY0OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOworICAgICAgICBYODZSZWdpc3RlcnM6
OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBYODZS
ZWdpc3RlcnM6OmVkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxk
KDApKSwgZWF4KTsKKyAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdvcmQsIGVheCwgZWR4
KTsKKyAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkp
OworICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7CisKKyNl
bHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShvcCk7CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpP
cGNvZGUgb3ApCisgICAgeworI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgICAgIFRt
cCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBUbXAgZWR4ID0gVG1wKFg4
NlJlZ2lzdGVyczo6ZWR4KTsKKworICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50
eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CisKKyAgICAgICAgQVNTRVJU
KG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7CisgICAgICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0
ZXJJRCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBYODZSZWdpc3Rl
cnM6OmVkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwg
ZWF4KTsKKyAgICAgICAgYXBwZW5kKFhvcjY0LCBlZHgsIGVkeCk7CisgICAgICAgIGFwcGVuZChk
aXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5kKE1v
dmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BB
UkFNKG9wKTsKKyAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisjZW5kaWYKKyAg
ICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgbG9hZExpbmtPcGNvZGUoV2lkdGggd2lkdGgsIGJv
b2wgZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRI
KExvYWRMaW5rQWNxLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKExvYWRMaW5rLCB3aWR0aCk7
CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlQ29uZE9wY29kZShXaWR0aCB3aWR0
aCwgYm9vbCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmZW5jZSA/IE9QQ09ERV9GT1Jf
V0lEVEgoU3RvcmVDb25kUmVsLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZCwg
d2lkdGgpOworICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIGNhbiBlbWl0IGNvZGUgZm9yIHRoZSBm
b2xsb3dpbmcgcGF0dGVybnM6CisgICAgLy8gQXRvbWljV2Vha0NBUworICAgIC8vIEJpdFhvcihB
dG9taWNXZWFrQ0FTLCAxKQorICAgIC8vIEF0b21pY1N0cm9uZ0NBUworICAgIC8vIEVxdWFsKEF0
b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gTm90RXF1YWwoQXRvbWljU3Ryb25nQ0FT
LCBleHBlY3RlZCkKKyAgICAvLyBCcmFuY2goQXRvbWljV2Vha0NBUykKKyAgICAvLyBCcmFuY2go
RXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAgLy8gQnJhbmNoKE5vdEVxdWFs
KEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vCisgICAgLy8gSXQgYXNzdW1lcyB0
aGF0IGF0b21pY1ZhbHVlIHBvaW50cyB0byB0aGUgQ0FTLCBhbmQgbV92YWx1ZSBwb2ludHMgdG8g
dGhlIGluc3RydWN0aW9uIGJlaW5nCisgICAgLy8gZ2VuZXJhdGVkLiBJdCBhc3N1bWVzIHRoYXQg
eW91J3ZlIGNvbnN1bWVkIGV2ZXJ5dGhpbmcgdGhhdCBuZWVkcyB0byBiZSBjb25zdW1lZC4KKyAg
ICBib29sIGFwcGVuZENBUyhWYWx1ZSogYXRvbWljVmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHsK
KyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IGF0b21pY1ZhbHVlLT5hczxBdG9taWNWYWx1
ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXRvbWljKTsKKyAgICAgICAgCisgICAgICAg
IGJvb2wgaXNCcmFuY2ggPSBtX3ZhbHVlLT5vcCgpID09IEJyYW5jaDsKKyAgICAgICAgYm9vbCBp
c1N0cm9uZyA9IGF0b21pYy0+b3AoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wg
cmV0dXJuc09sZFZhbHVlID0gbV92YWx1ZS0+b3AoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAg
ICAgIAorICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKTsKKyAg
ICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisKKyAgICAgICAgVG1wIHZhbHVlUmVz
dWx0VG1wOworICAgICAgICBUbXAgYm9vbFJlc3VsdFRtcDsKKyAgICAgICAgaWYgKHJldHVybnNP
bGRWYWx1ZSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWludmVydCk7CisgICAgICAg
ICAgICB2YWx1ZVJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgICAgIGJvb2xSZXN1
bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0JyYW5jaCkg
eworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAg
ICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAg
ICAgICAgICBib29sUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBUbXAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXA7CisgICAgICAgIGlmIChpc1N0cm9u
ZyAmJiAhaXNCcmFuY2gpCisgICAgICAgICAgICBzdWNjZXNzQm9vbFJlc3VsdFRtcCA9IG1fY29k
ZS5uZXdUbXAoR1ApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWNjZXNzQm9vbFJlc3Vs
dFRtcCA9IGJvb2xSZXN1bHRUbXA7CisKKyAgICAgICAgVG1wIGV4cGVjdGVkVmFsdWVUbXAgPSB0
bXAoYXRvbWljLT5jaGlsZCgwKSk7CisgICAgICAgIFRtcCBuZXdWYWx1ZVRtcCA9IHRtcChhdG9t
aWMtPmNoaWxkKDEpKTsKKyAgICAgICAgCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayBzdWNjZXNz
OworICAgICAgICBGcmVxdWVudGVkQmxvY2sgZmFpbHVyZTsKKyAgICAgICAgaWYgKGlzQnJhbmNo
KSB7CisgICAgICAgICAgICBzdWNjZXNzID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9ja10tPnN1Y2Nl
c3NvcihpbnZlcnQpOworICAgICAgICAgICAgZmFpbHVyZSA9IG1fYmxvY2tUb0Jsb2NrW21fYmxv
Y2tdLT5zdWNjZXNzb3IoIWludmVydCk7CisgICAgICAgIH0KKyAgICAgICAgCisjaWYgQ1BVKFg4
Nl82NCkKKyAgICAgICAgVG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAg
IGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5vcGVyYXRpb25UeXBlKCkpLCBpbW1P
clRtcChhdG9taWMtPmNoaWxkKDApKSwgZWF4KTsKKyAgICAgICAgaWYgKHJldHVybnNPbGRWYWx1
ZSkgeworICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoTG9ja0NtcFhjaGcsIHdp
ZHRoKSwgZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICBhcHBlbmQocmVs
YXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpKSwgZWF4LCB2YWx1ZVJlc3Vs
dFRtcCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIGFwcGVu
ZChPUENPREVfRk9SX1dJRFRIKEJyYW5jaExvY2tDbXBYY2hnLCB3aWR0aCksIGVheCwgbmV3VmFs
dWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbbV9ibG9ja10tPnNl
dFN1Y2Nlc3NvcnMoc3VjY2VzcywgZmFpbHVyZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChMb2NrQ21wWGNoZywgd2lkdGgpLCBlYXgsIHRt
cChhdG9taWMtPmNoaWxkKDEpKSwgYWRkcmVzcywgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAg
ICBpZiAoaW52ZXJ0KQorICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKFhv
ciwgY2Fub25pY2FsV2lkdGgod2lkdGgpKSwgQXJnOjppbW0oMSksIGJvb2xSZXN1bHRUbXApOwor
ICAgICAgICB9CisjZWxpZiBDUFUoQVJNNjQpCisgICAgICAgIC8vIFdlIHdpc2ggdG8gZW1pdDoK
KyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIExv
YWRMaW5rCisgICAgICAgIC8vICAgICBCcmFuY2ggTm90RXF1YWwKKyAgICAgICAgLy8gICBTdWNj
ZXNzb3JzOiBUaGVuOiNmYWlsLCBFbHNlOiAjc3RvcmUKKyAgICAgICAgLy8gQmxvY2sgI3N0b3Jl
OgorICAgICAgICAvLyAgICAgU3RvcmVDb25kCisgICAgICAgIC8vICAgICBYb3IgJDEsICVyZXN1
bHQgICAgPC0tLSBvbmx5IGlmICFpbnZlcnQKKyAgICAgICAgLy8gICAgIEp1bXAKKyAgICAgICAg
Ly8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAgICAvLyBCbG9jayAjZmFpbDoKKyAgICAgICAg
Ly8gICAgIE1vdmUgJGludmVydCwgJXJlc3VsdAorICAgICAgICAvLyAgICAgSnVtcAorICAgICAg
ICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAg
ICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2NrKCk7Cisg
ICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3RvcmVCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAg
IEFpcjo6QmFzaWNCbG9jayogc3VjY2Vzc0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFp
c0JyYW5jaCAmJiBpc1N0cm9uZykKKyAgICAgICAgICAgIHN1Y2Nlc3NCbG9jayA9IG5ld0Jsb2Nr
KCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogZmFpbEJsb2NrID0gbnVsbHB0cjsKKyAgICAg
ICAgaWYgKCFpc0JyYW5jaCkKKyAgICAgICAgICAgIGZhaWxCbG9jayA9IG5ld0Jsb2NrKCk7Cisg
ICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3Ryb25nRmFpbEJsb2NrOworICAgICAgICBpZiAoaXNT
dHJvbmcpCisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAg
ICBGcmVxdWVudGVkQmxvY2sgY29tcGFyaXNvbkZhaWw7CisgICAgICAgIEZyZXF1ZW50ZWRCbG9j
ayB3ZWFrRmFpbDsKKyAgICAgICAgaWYgKGlzU3Ryb25nKSB7CisgICAgICAgICAgICBjb21wYXJp
c29uRmFpbCA9IHN0cm9uZ0ZhaWxCbG9jazsKKyAgICAgICAgICAgIHdlYWtGYWlsID0gcmVsb29w
QmxvY2s7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNCcmFuY2gpCisgICAg
ICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBmYWlsdXJlOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGNvbXBhcmlzb25GYWlsID0gZmFpbEJsb2NrOworICAgICAgICAgICAg
d2Vha0ZhaWwgPSBmYWlsdXJlOworICAgICAgICB9CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayog
YmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAg
IHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9uZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFw
cGVuZChKdW1wKTsKKyAgICAgICAgYmVnaW5CbG9jay0+c2V0U3VjY2Vzc29ycyhyZWxvb3BCbG9j
ayk7CisgICAgICAgIAorICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKGxvYWRMaW5rT3Bjb2Rl
KHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRk
cmVzcyk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChCcmFu
Y2gsIGNhbm9uaWNhbFdpZHRoKHdpZHRoKSksIG1fdmFsdWUsIEFyZzo6cmVsQ29uZChNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwpIHZhbHVlUmVzdWx0VG1wLCBleHBlY3RlZFZhbHVlVG1wKTsKKyAg
ICAgICAgcmVsb29wQmxvY2stPnNldFN1Y2Nlc3NvcnMoY29tcGFyaXNvbkZhaWwsIHN0b3JlQmxv
Y2spOworICAgICAgICAKKyAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29k
ZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgbmV3VmFsdWVUbXAsIGFkZHJl
c3MsIHN1Y2Nlc3NCb29sUmVzdWx0VG1wKTsKKyAgICAgICAgaWYgKGlzQnJhbmNoKSB7CisgICAg
ICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBBcmc6OnJlc0NvbmQoTWFj
cm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVzdWx0VG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAg
ICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCB3ZWFrRmFpbCk7Cisg
ICAgICAgICAgICBkb25lQmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIWRvbmVCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGRvbmVCbG9j
ay0+YXBwZW5kKE9vcHMsIG1fdmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKGlzU3Ryb25nKSB7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEJyYW5j
aFRlc3QzMiwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgc3VjY2Vzc0Jvb2xS
ZXN1bHRUbXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+
c2V0U3VjY2Vzc29ycyhzdWNjZXNzQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBB
cmc6OmltbSghaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICAgICAgc3VjY2Vz
c0Jsb2NrLT5hcHBlbmQoSnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3VjY2Vzc0Js
b2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmICghaW52ZXJ0KQorICAgICAgICAgICAgICAgICAgICBzdG9yZUJsb2Nr
LT5hcHBlbmQoWG9yMzIsIG1fdmFsdWUsIEFyZzo6Yml0SW1tKDEpLCBib29sUmVzdWx0VG1wLCBi
b29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzdG9yZUJs
b2NrLT5hcHBlbmQoSnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+
c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBmYWlsQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6OmltbShpbnZl
cnQpLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKEp1bXAs
IG1fdmFsdWUpOworICAgICAgICAgICAgZmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9j
ayk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1N0cm9uZykgeworICAgICAg
ICAgICAgVG1wIHRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgc3Ryb25nRmFp
bEJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkp
LCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcywgdG1wKTsKKyAgICAgICAgICAgIHN0
cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgQXJnOjpyZXNDb25kKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvKSwgdG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICAgICAgc3Ryb25n
RmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGZhaWxCbG9jaywgcmVsb29wQmxvY2spOworICAgICAg
ICB9CisjZWxzZQorI2Vycm9yICJCYWQgYXJjaGl0ZWN0dXJlIgorI2VuZGlmCisgICAgfQorICAg
IAogICAgIHZvaWQgbG93ZXIoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNv
ZGUoKSkgewpAQCAtMTk3MSwzMCArMjI4Myw1MCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBp
bmdJbnN0KG1fdmFsdWUsIG1vdmVGb3JUeXBlKG1fdmFsdWUtPnR5cGUoKSksIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1l
bW9yeSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgb3Bjb2RlID0gQWlyOjpPb3BzOworICAgICAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2Uo
KSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAobWVtb3J5LT50eXBlKCkpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNx
MzI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgSW50
NjQ6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3E2NDsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgb3Bjb2RlID0gbW92ZUZvclR5cGUobWVtb3J5LT50eXBlKCkpOworICAgICAgICAgICAg
YXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1
ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOFM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFw
cGluZ0luc3QobV92YWx1ZSwgTG9hZDhTaWduZWRFeHRlbmRUbzMyLCBtX3ZhbHVlLCBhZGRyKG1f
dmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9
IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcThTaWduZWRF
eHRlbmRUbzMyIDogTG9hZDhTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRy
YXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcCht
X3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBMb2FkOFo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9h
ZDgsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAg
QWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNl
KCkgPyBMb2FkQWNxOCA6IExvYWQ4OworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZTOiB7
Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNlNpZ25lZEV4
dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhh
c0ZlbmNlKCkgPyBMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIDogTG9hZDE2U2lnbmVkRXh0ZW5k
VG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBt
X3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2WjogewotICAgICAgICAgICAgYXBw
ZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTYsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSks
IHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTYgOiBMb2FkMTY7Cisg
ICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwg
YWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAgICBp
ZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA5Miw3ICsy
NDI0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0NoaWxsKCkpCiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKICAgICAgICAgICAgIGlm
IChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAgICBs
b3dlclg4NkRpdihEaXYpOworICAgICAgICAgICAgICAgIGFwcGVuZFg4NkRpdihEaXYpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVCgh
aXNYODYoKSB8fCBpc0Zsb2F0KG1fdmFsdWUtPnR5cGUoKSkpOwpAQCAtMjEwMyw3ICsyNDM1LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIFVEaXY6IHsKICAgICAgICAgICAgIGlmIChpc0lu
dChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAgICBsb3dlclg4
NlVEaXYoVURpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2VURpdihVRGl2KTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTIxMTcsMTMgKzI0NDksMTMg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNb2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzWDg2KCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdmFsdWUtPmlzQ2hp
bGwoKSk7Ci0gICAgICAgICAgICBsb3dlclg4NkRpdihNb2QpOworICAgICAgICAgICAgYXBwZW5k
WDg2RGl2KE1vZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIFVNb2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzWDg2KCkpOwotICAgICAg
ICAgICAgbG93ZXJYODZVRGl2KFVNb2QpOworICAgICAgICAgICAgYXBwZW5kWDg2VURpdihVTW9k
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMTY2LDYgKzI0OTgsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+
Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgIGFwcGVuZFVuT3A8RGVwZW5kMzIs
IERlcGVuZDY0PihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIFNobDogewogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNo
aWxkKDEpLT5pc0ludDMyKDEpKSB7CkBAIC0yMjY2LDcgKzI2MDMsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5kU3RvcmUo
dmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1f
dmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTIyODcsNyArMjYyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcHBlbmRT
dG9yZShBaXI6OlN0b3JlOCwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAg
ICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjMwOCw3ICsyNjQ1LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFpcjo6U3RvcmUxNiwgdmFsdWVU
b1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUs
IHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMjc4NCw2ICszMTIxLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBhcHBl
bmQoQWlyOjpFbnRyeVN3aXRjaCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6IHsKKyAgICAgICAgICAgIEF0
b21pY1ZhbHVlKiB2YWx1ZSA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworI2lmIENQVShY
ODZfNjQpCisgICAgICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAg
ICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUodmFsdWUtPm9wZXJhdGlvblR5cGUo
KSksIGltbU9yVG1wKHZhbHVlLT5jaGlsZCgwKSksIGVheCk7CisgICAgICAgICAgICBhcHBlbmQo
T1BDT0RFX0ZPUl9XSURUSChMb2NrQ21wWGNoZywgdmFsdWUtPm9wZXJhdGlvbldpZHRoKCkpLCBl
YXgsIHRtcCh2YWx1ZS0+Y2hpbGQoMSkpLCBhZGRyKHZhbHVlKSwgdG1wKHZhbHVlKSk7CisjZWxp
ZiBDUFUoQVJNNjQpCisgICAgICAgICAgICBhcHBlbmRBUk02NFdlYWtDQVModmFsdWUsIGZhbHNl
KTsKKyNlbHNlCisjZXJyb3IgIkJhZCBhcmNoaXRlY3R1cmUiCisjZW5kaWYKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVh
azsKQEAgLTI3OTMsNjMgKzMxNDQsNiBAQCBwcml2YXRlOgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHZvaWQgbG93ZXJYODZEaXYoQjM6Ok9wY29k
ZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICAgICAgVG1wIGVh
eCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBlZHggPSBUbXAoWDg2UmVn
aXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7
Ci0gICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKLSAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBl
KCkpIHsKLSAgICAgICAgY2FzZSBJbnQzMjoKLSAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdv
cmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7Ci0gICAgICAgICAgICBkaXYgPSBYODZEaXYz
MjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDY0OgotICAgICAgICAgICAg
Y29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7Ci0gICAgICAgICAg
ICBkaXYgPSBYODZEaXY2NDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9k
KTsKLSAgICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09IERpdiA/
IFg4NlJlZ2lzdGVyczo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5k
KE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChjb252
ZXJ0VG9Eb3VibGVXb3JkLCBlYXgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4
LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1
bHQpLCB0bXAobV92YWx1ZSkpOwotCi0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0ob3ApOwot
ICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZgotICAgIH0KLQotICAg
IHZvaWQgbG93ZXJYODZVRGl2KEIzOjpPcGNvZGUgb3ApCi0gICAgewotI2lmIENQVShYODYpIHx8
IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOwot
ICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4KTsKLQotICAgICAgICBBaXI6
Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZV
RGl2NjQ7Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7Ci0gICAg
ICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gWDg2UmVn
aXN0ZXJzOjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwg
dG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKFhvcjY0LCBlZHgs
IGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQo
MSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOwot
I2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KICAgICBJbmRleFNldDxWYWx1ZT4gbV9sb2Nr
ZWQ7IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCB3aWxsIGhhdmUgbm8gVG1wIGluIEFpci4KICAg
ICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3ZhbHVlVG9UbXA7IC8vIFRoZXNlIGFyZSB2YWx1ZXMg
dGhhdCBtdXN0IGhhdmUgYSBUbXAgaW4gQWlyLiBXZSBzYXkgdGhhdCBhIFZhbHVlKiB3aXRoIGEg
bm9uLW51bGwgVG1wIGlzICJwaW5uZWQiLgogICAgIEluZGV4TWFwPFZhbHVlLCBUbXA+IG1fcGhp
VG9UbXA7IC8vIEVhY2ggUGhpIGdldHMgaXRzIG93biBUbXAuCkBAIC0yODY0LDcgKzMxNTgsNyBA
QCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFZlY3RvcjxJbnN0LCA0Pj4gbV9pbnN0czsKICAgICBW
ZWN0b3I8SW5zdD4gbV9wcm9sb2d1ZTsKLQorICAgIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBtX2Js
b2NrOwogICAgIGJvb2wgbV9pc1JhcmU7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKQEAgLTI4NzUs
NiArMzE2OSw4IEBAIHByaXZhdGU6CiAKICAgICBQcm9jZWR1cmUmIG1fcHJvY2VkdXJlOwogICAg
IENvZGUmIG1fY29kZTsKKworICAgIEFpcjo6QmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2Vy
dGlvblNldDsKIH07CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCwzMCArMzQsNDggQEAgTWVtb3J5VmFsdWU6On5NZW1vcnlWYWx1ZSgpCiB7CiB9CiAK
K1R5cGUgTWVtb3J5VmFsdWU6OmFjY2Vzc1R5cGUoKSBjb25zdAoreworICAgIGlmIChpc0xvYWQo
b3Bjb2RlKCkpKQorICAgICAgICByZXR1cm4gdHlwZSgpOworICAgIC8vIFRoaXMgaGFwcGVucyB0
byB3b3JrIGZvciBhdG9taWNzLCB0b28uIFRoYXQncyB3aHkgQXRvbWljVmFsdWUgZG9lcyBub3Qg
bmVlZCB0byBvdmVycmlkZSB0aGlzLgorICAgIHJldHVybiBjaGlsZCgwKS0+dHlwZSgpOworfQor
CitCYW5rIE1lbW9yeVZhbHVlOjphY2Nlc3NCYW5rKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYmFu
a0ZvclR5cGUoYWNjZXNzVHlwZSgpKTsKK30KKwogc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NC
eXRlU2l6ZSgpIGNvbnN0CiB7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkpOworfQor
CitXaWR0aCBNZW1vcnlWYWx1ZTo6bG9hZFN0b3JlV2lkdGgoKSBjb25zdAorewogICAgIHN3aXRj
aCAob3Bjb2RlKCkpIHsKICAgICBjYXNlIExvYWQ4WjoKICAgICBjYXNlIExvYWQ4UzoKICAgICBj
YXNlIFN0b3JlODoKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBXaWR0aDg7CiAg
ICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKICAgICBjYXNlIFN0b3JlMTY6Ci0g
ICAgICAgIHJldHVybiAyOworICAgICAgICByZXR1cm4gV2lkdGgxNjsKICAgICBjYXNlIExvYWQ6
Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKHR5cGUoKSk7CisgICAgICAgIHJldHVybiB3aWR0
aEZvclR5cGUodHlwZSgpKTsKICAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9m
VHlwZShjaGlsZCgwKS0+dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZShjaGls
ZCgwKS0+dHlwZSgpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAg
ICB9CiB9CiAKIFdpZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHdpZHRoRm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJuIGxvYWRT
dG9yZVdpZHRoKCk7CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRl
ciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02Nyw2ICs4NSw4IEBAIHZvaWQg
TWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYKICAgICBpZiAoKGlzTG9hZCgpICYm
IGVmZmVjdHMoKS5yZWFkcyAhPSByYW5nZSgpKQogICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVm
ZmVjdHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgInJh
bmdlID0gIiwgcmFuZ2UoKSk7CisgICAgaWYgKHBoYW50b21SYW5nZSgpKQorICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJwaGFudG9tUmFuZ2UgPSAiLCBwaGFudG9tUmFuZ2UoKSk7CiB9CiAKIFZh
bHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKQEAgLTc0LDYgKzk0LDU4IEBAIFZh
bHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKICAgICByZXR1cm4gbmV3IE1lbW9y
eVZhbHVlKCp0aGlzKTsKIH0KIAorLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBM
b2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhh
dAorLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KK01lbW9yeVZhbHVlOjpNZW1vcnlW
YWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIs
IGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5
cGUsIG9yaWdpbiwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBpZiAo
IUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAg
ICAgICAgY2FzZSBMb2FkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTG9hZDha
OgorICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBj
YXNlIExvYWQxNlM6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3RvcmUxNjoK
KyAgICAgICAgY2FzZSBTdG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBm
b3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlWYWx1ZTo6
TWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwKQorICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwg
cG9pbnRlciwgb2Zmc2V0KQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAg
IHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAg
Y2FzZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZT
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9y
bSBmb3Igc3RvcmVzLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2lu
IG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAw
KQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwg
cG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBBU1NFUlQoaXNTdG9yZShr
aW5kLm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYg
Ly8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9y
eVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5
VmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNDggKzI3LDE3IEBACiAKICNpZiBF
TkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNIZWFwUmFu
Z2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxvdyBmZW5jZWQgbWVtb3J5IGFjY2Vzc2Vz
IG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIz
NDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVtb3J5VmFsdWUgOiBwdWJsaWMgVmFsdWUg
ewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQogICAgIHsKLSAg
ICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgTG9hZDhaOgotICAg
ICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAgICBjYXNlIExv
YWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAg
IGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNTdG9yZShLaW5kIGtpbmQpCi0gICAgewot
ICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0g
ICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNMb2FkKEtpbmQga2luZCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQpICYmICFpc1N0b3JlKGtpbmQpOworICAg
ICAgICByZXR1cm4gaXNNZW1vcnkoa2luZC5vcGNvZGUoKSk7CiAgICAgfQogCiAgICAgfk1lbW9y
eVZhbHVlKCk7CkBAIC03OCw3NiArNDcsNTYgQEAgcHVibGljOgogCiAgICAgY29uc3QgSGVhcFJh
bmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2U7IH0KICAgICB2b2lkIHNldFJhbmdl
KGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9yYW5nZSA9IHJhbmdlOyB9CisgICAgCisgICAg
Ly8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgcmFuZ2UuCisgICAgY29uc3QgSGVhcFJhbmdlJiBhY2Nl
c3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlKCk7IH0KKyAgICB2b2lkIHNldEFjY2Vzc1Jh
bmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgc2V0UmFuZ2UocmFuZ2UpOyB9CisgICAgCisg
ICAgY29uc3QgSGVhcFJhbmdlJiBmZW5jZVJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9mZW5jZVJh
bmdlOyB9CisgICAgdm9pZCBzZXRGZW5jZVJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsg
bV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0KKworICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0
dXJuIGlzU3RvcmUob3Bjb2RlKCkpOyB9CisgICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVy
biBpc0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAgICBib29sIGlzU3RvcmUoKSBjb25zdCB7IHJldHVy
biB0eXBlKCkgPT0gVm9pZDsgfQotICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1cm4gdHlw
ZSgpICE9IFZvaWQ7IH0KKyAgICBib29sIGhhc0ZlbmNlKCkgY29uc3QgeyByZXR1cm4gISFmZW5j
ZVJhbmdlKCk7IH0KIAorICAgIFR5cGUgYWNjZXNzVHlwZSgpIGNvbnN0OworICAgIEJhbmsgYWNj
ZXNzQmFuaygpIGNvbnN0OwogICAgIHNpemVfdCBhY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0OwotICAg
IFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CisgICAgCisgICAgLy8gU2xpZ2h0bHkgZmFzdGVy
IHZlcnNpb24gb2YgYWNjZXNzV2lkdGgsIGlmIHlvdSBrbm93IHRoYXQgeW91J3JlIHdvcmtpbmcg
d2l0aCBhIGxvYWQgb3Igc3RvcmUuCisgICAgV2lkdGggbG9hZFN0b3JlV2lkdGgoKSBjb25zdDsK
KyAgICAKKyAgICB2aXJ0dWFsIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CiAKIHByb3RlY3Rl
ZDoKLSAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92
ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0KLSAgICAv
LyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkg
b2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0Ci0gICAgLy8gZGVzY3JpYmVzIHRo
ZSByZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwg
T3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAg
ICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCisg
ICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIE1lbW9yeVZhbHVl
KENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBp
bnQzMl90IG9mZnNldCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShD
aGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKICAgICAgICAg
LCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQog
ICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRj
aCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBMb2FkOgotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgICAgICBjYXNlIExv
YWQ4UzoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2
UzoKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3Rv
cmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5
cGUgPT0gVm9pZCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9CiAgICAgfQorICAgIAorICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1
dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3Vm
Zml4IHRoYXQKKyAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgorICAgIE1lbW9y
eVZhbHVlKEtpbmQsIFR5cGUsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0
ID0gMCk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJu
IHR5cGUgaXMgaW1wbGllZC4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmln
aW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogTWVtb3J5
VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQotICAgIHsKLSAgICB9
CisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQgPSAwKTsKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KLSAgICBNZW1v
cnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2Rl
LCBraW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQotICAgICAgICAsIG1fb2Zmc2V0
KG9mZnNldCkKLSAgICAgICAgLCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCi0gICAgewotICAg
ICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9w
Y29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3Rv
cmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBw
b2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAogICAgIGludDMyX3QgbV9vZmZzZXQg
eyAwIH07Ci0gICAgSGVhcFJhbmdlIG1fcmFuZ2U7CisgICAgSGVhcFJhbmdlIG1fcmFuZ2UgeyBI
ZWFwUmFuZ2U6OnRvcCgpIH07CisgICAgSGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhlYXBSYW5n
ZSgpIH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKICNp
ZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAiQjNXaWR0
aC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIApAQCAtODIsNyArODMsNiBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIE1v
ZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBhcyB0byB3aGF0IHdpbGwgaGFwcGVuIHdoZW4geW91IGV4
ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEgYW5kIHglMC4KICAgICBVTW9kLAogCi0KICAgICAvLyBQ
b2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90ZSB0aGF0IHdlIG9ubHkgbmVlZCB0aGlzIGZvciBmbG9h
dGluZyBwb2ludCwgc2luY2UgaW50ZWdlciBuZWdhdGlvbgogICAgIC8vIGlzIGV4YWN0bHkgbGlr
ZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mgbm90IHRydWUgZm9yIGZsb2F0aW5nIHBvaW50LiBTdWIo
MCwgMCkgaXMgMCwgd2hpbGUKICAgICAvLyBOZWcoMCkgaXMgLTAuIEFsc28sIHdlIGNhbm9uaWNh
bGl6ZSBTdWIoMCwgeCkgaW50byBOZWcoeCkgaW4gY2FzZSBvZiBpbnRlZ2Vycy4KQEAgLTE2Miw2
ICsxNjIsMTA1IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgU3RvcmUxNiwKICAgICAv
LyBUaGlzIGlzIGEgcG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgRmxvYXQsIGFu
ZCBEb3VibGUuCiAgICAgU3RvcmUsCisgICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3
YXAgdGhhdCByZXR1cm5zIGEgYm9vbGVhbi4gTWF5IGNob29zZSB0byBkbyBub3RoaW5nIGFuZCBy
ZXR1cm4gZmFsc2UuIFlvdSBjYW4KKyAgICAvLyB1c3VhbGx5IGFzc3VtZSB0aGF0IHRoaXMgaXMg
ZmFzdGVyIGFuZCByZXN1bHRzIGluIGxlc3MgY29kZSB0aGFuIEF0b21pY1N0cm9uZ0NBUywgdGhv
dWdoIHRoYXQncworICAgIC8vIG5vdCBuZWNlc3NhcmlseSB0cnVlIG9uIEludGVsLCBpZiBpbnN0
cnVjdGlvbiBzZWxlY3Rpb24gZG9lcyBpdHMgam9iLiBJbWFnaW5lIHRoYXQgdGhpcyBvcGNvZGUg
aXMKKyAgICAvLyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8v
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gYm9vbCBBdG9taWNXZWFrQ0FTKFQgZXhwZWN0
ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgaWYgKCFy
YW5kKCkpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFJlYWwgd29ybGQgZXhhbXBs
ZSBvZiB0aGlzOiBjb250ZXh0IHN3aXRjaCBvbiBBUk0gd2hpbGUgZG9pbmcgQ0FTLgorICAgIC8v
ICAgICBpZiAoKnB0ciAhPSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIC8vICAgICAqcHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVybiB0cnVl
OworICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBhbGwgYXRvbWljcyBwdXQgdGhl
IHBvaW50ZXIgbGFzdCB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IGxvYWRzIGFuZCBzdG9yZXMg
d29yay4gVGhpcworICAgIC8vIGlzIGEgZ29vZnkgdHJhZGl0aW9uLCBidXQgaXQncyBoYXJtbGVz
cywgYW5kIGJldHRlciB0aGFuIGJlaW5nIGluY29uc2lzdGVudC4KKyAgICAvLworICAgIC8vIE5v
dGUgdGhhdCB3ZWFrIENBUyBoYXMgbm8gZmVuY2luZyBndWFyYW50ZWVzIHdoZW4gaXQgZmFpbHMu
IFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nCisgICAgLy8gdHJhbnNmb3JtYXRpb24gaXMg
YWx3YXlzIHZhbGlkOgorICAgIC8vCisgICAgLy8gQmVmb3JlOgorICAgIC8vCisgICAgLy8gICAg
ICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAg
ICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICAvLworICAgIC8v
IEFmdGVyOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goRXF1YWwoTG9hZChwdHIpLCBl
eHBlY3RlZCkpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojYXR0ZW1wdCwgRWxzZToj
ZmFpbAorICAgIC8vICAgICBCQiNhdHRlbXB0OgorICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21p
Y1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBU
aGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBCb3RoIGtpbmRzIG9mIENB
UyBmb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNikgaWdub3JlIHRo
ZSBpcnJlbGV2YW50IGJpdHMgb2YgdGhlCisgICAgLy8gaW5wdXQuCisgICAgQXRvbWljV2Vha0NB
UywKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgdGhl
IG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2ZSB0aGUgbm9uZGV0ZXJtaW5pc20gb2YgV2Vha0NBUy4K
KyAgICAvLyBUaGlzIGlzIGEgYml0IG1vcmUgY29kZSBhbmQgYSBiaXQgc2xvd2VyIGluIHNvbWUg
Y2FzZXMsIHRob3VnaCBub3QgYnkgYSBsb3QuIEltYWdpbmUgdGhhdCB0aGlzCisgICAgLy8gb3Bj
b2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBUIEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFs
dWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7CisgICAgLy8gICAgIFQgb2xkVmFsdWUg
PSAqcHRyOworICAgIC8vICAgICBpZiAob2xkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAv
LyAgICAgICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIG9sZFZhbHVlCisg
ICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5kIEF0b21p
Y1N0cm9uZ0NBUyBzb3J0IG9mIGhhdmUgdGhpcyBraW5kIG9mIGVxdWl2YWxlbmNlOgorICAgIC8v
CisgICAgLy8gQXRvbWljV2Vha0NBUyhAZXhwLCBAbmV3LCBAcHRyKSA9PSBFcXVhbChBdG9taWNT
dHJvbmdDQVMoQGV4cCwgQG5ldywgQHB0ciksIEBleHApCisgICAgLy8KKyAgICAvLyBBc3N1bWlu
ZyB0aGF0IHRoZSBXZWFrQ0FTIGRvZXMgbm90IHNwdXJpb3VzbHkgZmFpbCwgb2YgY291cnNlLgor
ICAgIEF0b21pY1N0cm9uZ0NBUywKKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IF9fXyBhIG1lbW9y
eSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRoZSBvbGQgdmFsdWUuIFN5bnRheDoKKyAgICAvLworICAg
IC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGdfX18oQG9wZXJhbmQsIEBwdHIpCisgICAgLy8KKyAg
ICAvLyBGb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNiksIHRoZXNl
IHJldHVybiBzaWduLWV4dGVuZGVkIHJlc3VsdHMgYW5kIGlnbm9yZSB0aGUKKyAgICAvLyBpcnJl
bGV2YW50IGJpdHMgb2YgdGhlaXIgaW5wdXRzLgorICAgIEF0b21pY1hjaGdBZGQsCisgICAgQXRv
bWljWGNoZ0FuZCwKKyAgICBBdG9taWNYY2hnT3IsCisgICAgQXRvbWljWGNoZ1N1YiwKKyAgICBB
dG9taWNYY2hnWG9yLAorICAgIAorICAgIC8vIEF0b21pY2FsbHkgZXhjaGFuZ2UgYSB2YWx1ZSB3
aXRoIGEgbWVtb3J5IGxvY2F0aW9uLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAb2xkVmFsdWUg
PSBBdG9taWNYY2hnKEBuZXdWYWx1ZSwgQHB0cikKKyAgICBBdG9taWNYY2hnLAorICAgIAorICAg
IC8vIEludHJvZHVjZSBhbiBpbnZpc2libGUgZGVwZW5kZW5jeSBmb3IgYmxvY2tpbmcgbW90aW9u
IG9mIGxvYWRzIHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyLiBTeW50YXg6CisgICAgLy8KKyAg
ICAvLyBAcmVzdWx0ID0gRGVwZW5kKEBwaGFudG9tKQorICAgIC8vCisgICAgLy8gVGhpcyBpcyBl
dmVudHVhbGx5IGNvZGVnZW5lcmF0ZWQgdG8gaGF2ZSBsb2NhbCBzZW1hbnRpY3MgYXMgaWYgd2Ug
ZGlkOgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9ICQwCisgICAgLy8KKyAgICAvLyBCdXQgaXQg
ZW5zdXJlcyB0aGF0IHRoZSB1c2VycyBvZiBAcmVzdWx0IGNhbm5vdCBleGVjdXRlIHVudGlsIEBw
aGFudG9tIGlzIGNvbXB1dGVkLgorICAgIC8vCisgICAgLy8gVGhlIGNvbXBpbGVyIGlzIG5vdCBh
bGxvd2VkIHRvIHJlYXNvbiBhYm91dCB0aGUgZmFjdCB0aGF0IERlcGVuZCBjb2RlZ2VuZXJhdGVz
IHRoaXMgd2F5LiBBbnkga2luZAorICAgIC8vIG9mIHRyYW5zZm9ybWF0aW9uIG9yIGFuYWx5c2lz
IHRoYXQgcmVsaWVzIG9uIHRoZSBpbnNpZ2h0IHRoYXQgRGVwZW5kIGlzIHJlYWxseSB6ZXJvIGlz
IHVuc291bmQsCisgICAgLy8gYmVjYXVzZSBpdCB1bmxvY2tzIHJlb3JkZXJpbmcgb2YgdXNlcnMg
b2YgQHJlc3VsdCBhbmQgQHBoYW50b20uCisgICAgLy8KKyAgICAvLyBPbiBYODYsIHRoaXMgaXMg
bG93ZXJlZCB0byBhIGxvYWQtbG9hZCBmZW5jZSBhbmQgQHJlc3VsdCB1c2VzIEBwaGFudG9tIGRp
cmVjdGx5LgorICAgIC8vCisgICAgLy8gT24gQVJNLCB0aGlzIGlzIGxvd2VyZWQgYXMgaWYgbGlr
ZToKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSBCaXRYb3IoQHBoYW50b20sIEBwaGFudG9tKQor
ICAgIC8vCisgICAgLy8gRXhjZXB0IHRoYXQgdGhlIGNvbXBpbGVyIG5ldmVyIGdldHMgYW4gb3Bw
b3J0dW5pdHkgdG8gc2ltcGxpZnkgb3V0IHRoZSBCaXRYb3IuCisgICAgRGVwZW5kLAogCiAgICAg
Ly8gVGhpcyBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIGFjdHVhbCBhZGRyZXNzIG9mIGEgV2FzbSBt
ZW1vcnkgb3BlcmF0aW9uLiBJdCB0YWtlcyBhbiBJbnRQdHIKICAgICAvLyBhbmQgYSBwaW5uZWQg
cmVnaXN0ZXIgdGhlbiBjb21wdXRlcyB0aGUgYXBwcm9wcmlhdGUgSW50UHRyIGFkZHJlc3MuIEZv
ciB0aGUgdXNlLWNhc2Ugb2YKQEAgLTMwMSw2ICs0MDAsMTEwIEBAIGlubGluZSBib29sIGlzRGVm
aW5pdGVseVRlcm1pbmFsKE9wY29kZSAKICAgICB9CiB9CiAKK2lubGluZSBib29sIGlzTG9hZChP
cGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6
CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoK
KyAgICBjYXNlIExvYWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzU3RvcmUoT3Bjb2Rl
IG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgU3RvcmU4OgorICAg
IGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9v
bCBpc0xvYWRTdG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7Cisg
ICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAg
IGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2Fz
ZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlz
QXRvbWljKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNl
IEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2FzZSBBdG9t
aWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdP
cjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAg
IGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNDQVMo
T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWlj
V2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5l
IGJvb2wgaXNBdG9taWNYY2hnKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUp
IHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAg
IGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0
b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUg
Ym9vbCBpc01lbW9yeUFjY2VzcyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHJldHVybiBpc0F0b21p
YyhvcGNvZGUpIHx8IGlzTG9hZFN0b3JlKG9wY29kZSk7Cit9CisKK2lubGluZSBPcGNvZGUgc2ln
bkV4dGVuZE9wY29kZShXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAg
Y2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiBTRXh0ODsKKyAgICBjYXNlIFdpZHRoMTY6Cisg
ICAgICAgIHJldHVybiBTRXh0MTY7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIE9vcHM7CisgICAgfQorfQorCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
Miw2ICsyMDIsOCBAQCB2b2lkIFByb2NlZHVyZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjCiAg
ICAgICAgIH0KICAgICAgICAgZGF0YUxvZygiICAgICIsIGRlZXBEdW1wKCp0aGlzLCB2YWx1ZSks
ICJcbiIpOwogICAgIH0KKyAgICBpZiAoaGFzUXVpcmtzKCkpCisgICAgICAgIG91dC5wcmludCgi
SGFzIFF1aXJrczogVHJ1ZVxuIik7CiAgICAgaWYgKHZhcmlhYmxlcygpLnNpemUoKSkgewogICAg
ICAgICBvdXQucHJpbnQoIlZhcmlhYmxlczpcbiIpOwogICAgICAgICBmb3IgKFZhcmlhYmxlKiB2
YXJpYWJsZSA6IHZhcmlhYmxlcygpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJv
Y2VkdXJlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1Byb2NlZHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGljOgog
ICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChPcmlnaW4sIFR5cGUsIGludDY0X3QgdmFsdWUpOwog
ICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChWYWx1ZSosIGludDY0X3QgdmFsdWUpOwogCisgICAg
Ly8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAgICBWYWx1ZSogYWRk
Qm90dG9tKE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGFkZEJvdHRvbShWYWx1ZSopOwogCkBA
IC0xOTUsNiArMTk2LDEyIEBAIHB1YmxpYzoKICAgICAvLyBhbGl2ZS4gR3JlYXQgZm9yIGNvbXBp
bGVyLWdlbmVyYXRlZCBkYXRhIHNlY3Rpb25zLCBsaWtlIHN3aXRjaCBqdW1wIHRhYmxlcyBhbmQg
Y29uc3RhbnQgcG9vbHMuCiAgICAgLy8gVGhpcyByZXR1cm5zIG1lbW9yeSB0aGF0IGhhcyBiZWVu
IHplcm8taW5pdGlhbGl6ZWQuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWRkRGF0YVNl
Y3Rpb24oc2l6ZV90KTsKKyAgICAKKyAgICAvLyBTb21lIG9wZXJhdGlvbnMgYXJlIHNwZWNpZmll
ZCBpbiBCMyBJUiB0byBiZWhhdmUgb25lIHdheSBidXQgb24gdGhpcyBnaXZlbiBDUFUgdGhleSBi
ZWhhdmUgYQorICAgIC8vIGRpZmZlcmVudCB3YXkuIFdoZW4gdHJ1ZSwgdGhvc2UgQjMgSVIgb3Bz
IHN3aXRjaCB0byBiZWhhdmluZyB0aGUgQ1BVIHdheSwgYW5kIHRoZSBvcHRpbWl6ZXIgbWF5Cisg
ICAgLy8gc3RhcnQgdGFraW5nIGFkdmFudGFnZSBvZiBpdC4KKyAgICBib29sIGhhc1F1aXJrcygp
IGNvbnN0IHsgcmV0dXJuIG1faGFzUXVpcmtzOyB9CisgICAgdm9pZCBzZXRIYXNRdWlya3MoYm9v
bCB2YWx1ZSkgeyBtX2hhc1F1aXJrcyA9IHZhbHVlOyB9CiAKICAgICBPcGFxdWVCeXByb2R1Y3Rz
JiBieXByb2R1Y3RzKCkgeyByZXR1cm4gKm1fYnlwcm9kdWN0czsgfQogCkBAIC0yNTIsNiArMjU5
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFByaW50U3RyZWFtJiwg
T3JpZ2luKT4+IG1fb3JpZ2luUHJpbnRlcjsKICAgICBjb25zdCB2b2lkKiBtX2Zyb250ZW5kRGF0
YTsKICAgICBQQ1RvT3JpZ2luTWFwIG1fcGNUb09yaWdpbk1hcDsKKyAgICBib29sIG1faGFzUXVp
cmtzIHsgZmFsc2UgfTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkocmV2aXNpb24g
MjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjk1LDYgKzEyOTUsMTYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgeworICAgICAg
ICAgICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDgoQXRvbWljWGNoZ19fXykKKyAgICAgICAgICAg
ICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBpZiAoaXNB
dG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAg
ICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5vcGVyYXRpb25XaWR0
aCgpID09IFdpZHRoOCkgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aElkZW50aXR5
KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBTRXh0MTY6CkBAIC0xMzQzLDYgKzEzNTMsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1
cm4gdGhpczogU0V4dDE2KEF0b21pY1hjaGdfX18pCisgICAgICAgICAgICAgICAgLy8gSW50byB0
aGlzOiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAgICAgaWYgKGlzQXRvbWljWGNoZyhtX3Zh
bHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgICAgICYmIG1fdmFsdWUt
PmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+b3BlcmF0aW9uV2lkdGgoKSA9PSBXaWR0aDE2
KSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hp
bGQoMCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNFeHQzMjoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQ2LDYgKzM0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBl
KCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5
cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0
ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVl
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTG9hZDoKQEAgLTM1
Myw2ICszNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51
bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2
YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgIT0gVm9pZCwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsK
ICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU4OgpAQCAtMzYyLDYgKzM2NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUo
KSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAg
ICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU6CkBAIC0zNjksOCArMzcyLDQ5IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgx
KS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZh
bGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1
ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9
PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkg
PT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxp
ZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2
YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0
cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxs
KCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51
bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUt
PmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7
CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAg
ICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAg
ICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNo
Z1hvcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5j
aGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOwor
ICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAgICAgICAgVkFM
SURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAg
ICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9
PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYgKzU4MSwyMCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0
ZUZlbmNlKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkg
PSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNl
KCkpCisgICAgICAgICAgICBWQUxJREFURShtZW1vcnR5LT5hY2Nlc3NCYW5rKCkgPT0gR1AsICgi
RmVuY2UgYXQgIiwgKm1lbW9yeSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRlQXRv
bWljKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSB2
YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBWQUxJREFURShiZXN0
VHlwZShhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpID09IGF0b21pYy0+b3BlcmF0aW9uVHlwZSgp
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVTdGFja0FjY2Vz
cyhWYWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDcgQEAgYm9vbCBWYWx1ZTo6cmV0
dXJuc0Jvb2woKSBjb25zdAogICAgIGNhc2UgQWJvdmVFcXVhbDoKICAgICBjYXNlIEJlbG93RXF1
YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQaGk6CiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC01ODksNiArNTkwLDcgQEAgRWZmZWN0cyBW
YWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1
YWxPclVub3JkZXJlZDoKICAgICBjYXNlIFNlbGVjdDoKKyAgICBjYXNlIERlcGVuZDoKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBEaXY6CiAgICAgY2FzZSBVRGl2OgpAQCAtNjAwLDE2ICs2MDIs
NDQgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBMb2FkOFM6CiAg
ICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKLSAgICBjYXNlIExvYWQ6Ci0gICAg
ICAgIHJlc3VsdC5yZWFkcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAgIGNhc2Ug
TG9hZDogeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7
CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1l
bW9yeS0+cGhhbnRvbVJhbmdlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC53cml0ZXMgPSBtZW1v
cnktPnBoYW50b21SYW5nZSgpOworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKKyAg
ICAgICAgfQogICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAg
IGJyZWFrOworICAgIH0KICAgICBjYXNlIFN0b3JlODoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAg
Y2FzZSBTdG9yZToKLSAgICAgICAgcmVzdWx0LndyaXRlcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5y
YW5nZSgpOworICAgIGNhc2UgU3RvcmU6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9
IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5yYW5n
ZSgpOworICAgICAgICBpZiAobWVtb3J5LT5waGFudG9tUmFuZ2UoKSkgeworICAgICAgICAgICAg
cmVzdWx0LnJlYWRzID0gbWVtb3J5LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRl
bnQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBBdG9taWNXZWFrQ0FT
OgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAg
ICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBB
dG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hj
aGc6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOwor
ICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCkgfCBtZW1vcnktPnBoYW50b21S
YW5nZSgpOworICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5yYW5nZSgpIHwgbWVtb3J0
eS0+cGhhbnRvbVJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPnBoYW50b21SYW5nZSgpKQor
ICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LmNvbnRyb2xE
ZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBXYXNtQWRk
cmVzczoKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CkBAIC02MTcsMTggKzY0Nyw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAg
ICAgICBjb25zdCBGZW5jZVZhbHVlKiBmZW5jZSA9IGFzPEZlbmNlVmFsdWU+KCk7CiAgICAgICAg
IHJlc3VsdC5yZWFkcyA9IGZlbmNlLT5yZWFkOwogICAgICAgICByZXN1bHQud3JpdGVzID0gZmVu
Y2UtPndyaXRlOwotICAgICAgICAKLSAgICAgICAgLy8gUHJldmVudCBraWxsaW5nIG9mIGZlbmNl
cyB0aGF0IGNsYWltIG5vdCB0byB3cml0ZSBhbnl0aGluZy4gSXQncyBhIGJpdCB3ZWlyZCB0aGF0
IHdlIHVzZQotICAgICAgICAvLyBsb2NhbCBzdGF0ZSBhcyB0aGUgd2F5IHRvIGRvIHRoaXMsIGJ1
dCBpdCBoYXBwZW5zIHRvIHdvcms6IHdlIG11c3QgYXNzdW1lIHRoYXQgd2UgY2Fubm90Ci0gICAg
ICAgIC8vIGtpbGwgd3JpdGVzTG9jYWxTdGF0ZSB1bmxlc3Mgd2UgdW5kZXJzdGFuZHMgZXhhY3Rs
eSB3aGF0IHRoZSBpbnN0cnVjdGlvbiBpcyBkb2luZyAobGlrZQotICAgICAgICAvLyB0aGUgd2F5
IHRoYXQgZml4U1NBIHVuZGVyc3RhbmRzIFNldC9HZXQgYW5kIHRoZSB3YXkgdGhhdCByZWR1Y2VT
dHJlbmd0aCBhbmQgb3RoZXJzCi0gICAgICAgIC8vIHVuZGVyc3RhbmQgVXBzaWxvbikuIFRoaXMg
d291bGQgb25seSBiZWNvbWUgYSBwcm9ibGVtIGlmIHdlIGhhZCBzb21lIGFuYWx5c2lzIHRoYXQg
d2FzCi0gICAgICAgIC8vIGxvb2tpbmcgdG8gdXNlIHRoZSB3cml0ZXNMb2NhbFN0YXRlIGJpdCB0
byBpbnZhbGlkYXRlIGEgQ1NFIG92ZXIgbG9jYWwgc3RhdGUgb3BlcmF0aW9ucy4KLSAgICAgICAg
Ly8gVGhlbiBhIEZlbmNlIHdvdWxkIGxvb2sgYmxvY2ssIHNheSwgdGhlIGVsaW1pbmF0aW9uIG9m
IGEgcmVkdW5kYW50IEdldC4gQnV0IGl0IGxpa2UKLSAgICAgICAgLy8gdGhhdCdzIG5vdCBhdCBh
bGwgaG93IG91ciBvcHRpbWl6YXRpb25zIGZvciBTZXQvR2V0L1Vwc2lsb24vUGhpIHdvcmsgLSB0
aGV5IGdyb2sgdGhlaXIKLSAgICAgICAgLy8gb3BlcmF0aW9ucyBkZWVwbHkgZW5vdWdoIHRoYXQg
dGhleSBoYXZlIG5vIG5lZWQgdG8gY2hlY2sgdGhpcyBiaXQgLSBzbyB0aGlzIGNoZWF0IGlzCi0g
ICAgICAgIC8vIGZpbmUuCi0gICAgICAgIHJlc3VsdC53cml0ZXNMb2NhbFN0YXRlID0gdHJ1ZTsK
KyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgQ0NhbGw6CkBAIC02OTQsNiArNzEzLDcgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNv
bnN0CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAgIGNhc2UgTmVn
OgorICAgIGNhc2UgRGVwZW5kOgogICAgICAgICByZXR1cm4gVmFsdWVLZXkoa2luZCgpLCB0eXBl
KCksIGNoaWxkKDApKTsKICAgICBjYXNlIEFkZDoKICAgICBjYXNlIFN1YjoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw4IEBA
IHB1YmxpYzoKICAgICAvLyB2YWx1ZXMgd2l0aCBJZGVudGl0aWVzIG9uIGJvdHRvbSBjb25zdGFu
dHMuIEZvciB0aGlzIHJlYXNvbiwgdGhpcyB0YWtlcyBhIGNhbGxiYWNrIHRoYXQgaXMKICAgICAv
LyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYm90dG9tcy4gVGhlcmUncyBhIHV0aWxpdHkgZm9y
IHRoaXMsIHNlZSBCM0JvdHRvbVByb3ZpZGVyLmguIFlvdQogICAgIC8vIGNhbiBhbHNvIGFjY2Vz
cyB0aGF0IHV0aWxpdHkgdXNpbmcgcmVwbGFjZVdpdGhCb3R0b20oSW5zZXJ0aW9uU2V0Jiwgc2l6
ZV90KS4KKyAgICAvLworICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHpl
cm8uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQm90dG9tUHJvdmlkZXI+CiAgICAgdm9pZCByZXBs
YWNlV2l0aEJvdHRvbShjb25zdCBCb3R0b21Qcm92aWRlciYpOwogICAgIApAQCAtMzIxLDYgKzMy
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSVRvRjoKICAgICAgICAgY2FzZSBCaXR3aXNl
Q2FzdDoKICAgICAgICAgY2FzZSBCcmFuY2g6CisgICAgICAgIGNhc2UgRGVwZW5kOgogICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgIT0gMSkpCiAgICAgICAgICAgICAgICAgYmFkS2lu
ZChraW5kLCBudW1BcmdzKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1dpZHRoLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzV2lkdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwzOCBAQAog
CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeworCitUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpCit7CisgICAg
c3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgIGNhc2UgV2lkdGgxNjoKKyAg
ICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNlIEdQ
OgorICAgICAgICAgICAgcmV0dXJuIEludDMyOworICAgICAgICBjYXNlIEZQOgorICAgICAgICAg
ICAgcmV0dXJuIEZsb2F0OworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lkOworICAgIGNhc2UgV2lkdGg2NDoKKyAgICAg
ICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICByZXR1cm4g
SW50NjQ7CisgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICByZXR1cm4gRG91YmxlOworICAg
ICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBWb2lkOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBWb2lkOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKwogbmFtZXNwYWNl
IFdURiB7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkIzOjpX
aWR0aCB3aWR0aCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkocmV2aXNpb24g
MjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkod29ya2luZyBj
b3B5KQpAQCAtNjIsNiArNjIsMTggQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yVHlwZShUeXBlIHR5
cGUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2lubGluZSBXaWR0aCBjYW5vbmlj
YWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gc3RkOjptYXgoV2lkdGgzMiwgd2lk
dGgpOworfQorCitpbmxpbmUgV2lkdGggaXNDYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sK
KyAgICByZXR1cm4gd2lkdGggPj0gV2lkdGgzMjsKK30KKworVHlwZSBiZXN0VHlwZShCYW5rIGJh
bmssIFdpZHRoIHdpZHRoKTsKKwogaW5saW5lIFdpZHRoIGNvbnNlcnZhdGl2ZVdpZHRoKEJhbmsg
YmFuaykKIHsKICAgICByZXR1cm4gYmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2
NDsKQEAgLTkzLDYgKzEwNSwyMCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JCeXRlcyh1bnNpZ25l
ZCBieXRlCiAgICAgfQogfQogCitpbmxpbmUgdWludDY0X3QgbWFzayhXaWR0aCB3aWR0aCkKK3sK
KyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiAw
eDAwMDAwMDAwMDAwMDAwZmZsbHU7CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4g
MHgwMDAwMDAwMDAwMDBmZmZmbGx1OworICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgcmV0dXJu
IDB4MDAwMDAwMDBmZmZmZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHJldHVy
biAweGZmZmZmZmZmZmZmZmZmZmZsbHU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFyZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJBcmcuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFyZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw2ICsyODUsOSBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkVhcmx5
RGVmOgogICAgICAgICBvdXQucHJpbnQoIkVhcmx5RGVmIik7CiAgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEFyZzo6RWFybHlaRGVmOgorICAgICAgICBvdXQucHJpbnQoIkVhcmx5WkRlZiIpOwor
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgIG91dC5wcmlu
dCgiU2NyYXRjaCIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFyZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQXJnLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQXJnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsOCBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIGFzIFVzZSBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yOiB0aGUgdXNlIG1h
eSBoYXBwZW4gYmVmb3JlIHRoZSBkZWYsIG9yIGl0IG1heSBoYXBwZW4gYWZ0ZXIKICAgICAgICAg
Ly8gaXQuCiAgICAgICAgIEVhcmx5RGVmLAorICAgICAgICAgICAgCisgICAgICAgIEVhcmx5WkRl
ZiwKIAogICAgICAgICAvLyBTb21lIGluc3RydWN0aW9ucyBuZWVkIGEgc2NyYXRjaCByZWdpc3Rl
ci4gV2UgbW9kZWwgdGhpcyBieSBzYXlpbmcgdGhhdCB0aGUgdGVtcG9yYXJ5IGlzCiAgICAgICAg
IC8vIGRlZmluZWQgZWFybHkgYW5kIHVzZWQgbGF0ZS4gVGhpcyByb2xlIGltcGxpZXMgdGhhdC4K
QEAgLTE4Niw2ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAg
Y2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5
WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIwNiw2ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNh
c2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVm
OgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIyOCw2ICsyMzIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgog
ICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAg
ICAgIHJldHVybiByb2xlOwogICAgICAgICBjYXNlIFVzZToKICAgICAgICAgICAgIHJldHVybiBD
b2xkVXNlOwpAQCAtMjUzLDYgKzI1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29s
ZFVzZToKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAg
ICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI3NCw2ICsyODAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBj
YXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5
NCw2ICszMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBV
c2VaRGVmOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoK
ICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KQEAgLTMxNSw2ICszMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAg
ICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzMwLDYgKzMzOSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIExhdGVVc2U6CiAgICAgICAgIGNhc2UgRWFy
bHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAg
ICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0z
NTgsNiArMzY4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlWkRlZjoKKyAgICAgICAgY2FzZSBFYXJseVpE
ZWY6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFz
aWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
MTkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogCiBjb25zdCBj
aGFyKiBjb25zdCBCYXNpY0Jsb2NrOjpkdW1wUHJlZml4ID0gIiMiOwogCit2b2lkIEJhc2ljQmxv
Y2s6OnNldFN1Y2Nlc3NvcnMoQmFzaWNCbG9jayogYmxvY2spCit7CisgICAgbV9zdWNjZXNzb3Jz
LnJlc2l6ZSgxKTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0gPSB0YXJnZXQ7Cit9CisKK3ZvaWQgQmFz
aWNCbG9jazo6c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sgdGFrZW4sIEZyZXF1ZW50ZWRC
bG9jayBub3RUYWtlbikKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVzaXplKDIpOworICAgIG1fc3Vj
Y2Vzc29yc1swXSA9IHRha2VuOworICAgIG1fc3VjY2Vzc29yc1sxXSA9IG5vdFRha2VuOworfQor
CiBib29sIEJhc2ljQmxvY2s6OmFkZFByZWRlY2Vzc29yKEJhc2ljQmxvY2sqIGJsb2NrKQogewog
ICAgIHJldHVybiBCMzo6YWRkUHJlZGVjZXNzb3IodGhpcywgYmxvY2spOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIxMjk5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OSw2ICs5OSw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdWNjZXNzb3JM
aXN0JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAgICAgU3Vj
Y2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQogCisgICAg
dm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayk7CisgICAgdm9pZCBzZXRTdWNjZXNz
b3JzKEZyZXF1ZW50ZWRCbG9jaywgRnJlcXVlbnRlZEJsb2NrKTsKKwogICAgIEJhc2ljQmxvY2sq
IHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBzdWNjZXNzb3Io
aW5kZXgpLmJsb2NrKCk7IH0KICAgICBCYXNpY0Jsb2NrKiYgc3VjY2Vzc29yQmxvY2sodW5zaWdu
ZWQgaW5kZXgpIHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQogICAgIFN1Y2Nl
c3NvckNvbGxlY3Rpb248QmFzaWNCbG9jaywgU3VjY2Vzc29yTGlzdD4gc3VjY2Vzc29yQmxvY2tz
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25T
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxv
Y2tJbnNlcnRpb25TZXQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCisK
KyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQmFzaWNCbG9jay5oIgorI2luY2x1
ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK0Jsb2NrSW5zZXJ0aW9uU2V0
OjpCbG9ja0luc2VydGlvblNldChDb2RlICZjb2RlKQorICAgIDogR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0KGNvZGUubV9ibG9ja3MpCit7Cit9CisKK0Jsb2NrSW5zZXJ0aW9uU2V0Ojp+QmxvY2tJ
bnNlcnRpb25TZXQoKQoreworfQorCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisK
KyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKwor
I2luY2x1ZGUgIkIzR2VuZXJpY0Jsb2NrSXNuZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiQWlyQ29k
ZS5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworY2xh
c3MgSW5zZXJ0aW9uU2V0OworCit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNp
Y0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CisKK2NsYXNzIEJsb2NrSW5z
ZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPiB7
CitwdWJsaWM6CisgICAgQmxvY2tJbnNlcnRpb25TZXQoQ29kZSYpOworICAgIH5CbG9ja0luc2Vy
dGlvblNldCgpOworICAgIAorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZXZlbnR1YWxseSBpbXBs
ZW1lbnQgQjM6OkJsb2NrSW5zZXJ0aW9uU2V0J3Mgc3BsaXRGb3J3YXJkKCkuCit9OworCit9IH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw4IEBAIHZvaWQgcHJlcGFyZUZvckdl
bmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAgICAgZGF0YUxvZygiSW5pdGlhbCBhaXI6XG4iKTsK
ICAgICAgICAgZGF0YUxvZyhjb2RlKTsKICAgICB9CisgICAgCisgICAgc2ltcGxpZnlDRkcoY29k
ZSk7CiAKICAgICBsb3dlck1hY3Jvcyhjb2RlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NjY4LDI4ICs2NjgsMzc5IEBAIExvYWQ4IFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAg
ICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOCBVOkc6OCwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAor
ICAgIEluZGV4LCBUbXAKKwogU3RvcmU4IFU6Rzo4LCBEOkc6OAogICAgIFRtcCwgSW5kZXgKICAg
ICBUbXAsIEFkZHIKICAgICB4ODY6IEltbSwgSW5kZXgKICAgICB4ODY6IEltbSwgQWRkcgogCitT
dG9yZVJlbDggVTpHOjgsIEQ6Rzo4CisgICAgVG1wLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisKIExvYWQ4U2lnbmVkRXh0ZW5k
VG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9h
ZEFjcThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAg
SW5kZXgsIFRtcAorCiBMb2FkMTYgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAg
SW5kZXgsIFRtcAogCitMb2FkQWNxMTYgVTpHOjE2LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisg
ICAgSW5kZXgsIFRtcAorCiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgog
ICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8z
MiBVOkc6MTYsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIFN0b3Jl
MTYgVTpHOjE2LCBEOkc6MTYKICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAKK1N0b3Jl
QWNxMTYgVTpHOjE2LCBEOkc6MTYKKyAgICBUbXAsIEluZGV4CisgICAgVG1wLCBBZGRyCisKK0xv
YWRBY3EzMiBVOkc6MzIgWkQ6RzozMgorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisgICAg
SW5kZXgsIFRtcAorCitTdG9yZVJlbDMyIFU6RzozMiBaRDpHOjMyCisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisK
KzY0OiBMb2FkQWNxNjQgVTpHOjY0IFpEOkc6NjQKKyAgICBUbXAsIFRtcAorICAgIEFkZHIsIFRt
cAorICAgIEluZGV4LCBUbXAKKworNjQ6IFN0b3JlUmVsNjQgVTpHOjY0IFpEOkc6NjQKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IElt
bSwgSW5kZXgKKworIyBUaGUgZmlyc3Qgb3BlcmFuZCBpcyByYXguCit4ODY6IExvY2tDbXBYY2hn
OCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjgsIFpEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkciwgVG1w
CisgICAgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogTG9ja0NtcFhjaGcxNiBVRDpHOjE2
LCBVOkc6MzIsIFVEOkc6MTYsIFpEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAg
VG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogTG9ja0NtcFhjaGczMiBVRDpHOjMyLCBVOkc6
MzIsIFVEOkc6MzIsIFpEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgVG1wKiwg
VG1wLCBJbmRleCwgVG1wCisKK3g4Nl82NDogTG9ja0NtcFhjaGc2NCBVRDpHOjY0LCBVOkc6NjQs
IFVEOkc6NjQsIFpEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgVG1wKiwgVG1w
LCBJbmRleCwgVG1wCisKK3g4NjogTG9ja0NtcFhjaGc4IFVEOkc6OCwgVTpHOjgsIFVEOkc6OAor
ICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrQ21w
WGNoZzE2IFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNgorICAgIFRtcCosIFRtcCwgQWRkcgorICAg
IFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrQ21wWGNoZzMyIFVEOkc6MzIsIFU6RzozMiwg
VUQ6RzozMgorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2
XzY0OiBMb2NrQ21wWGNoZzY0IFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NAorICAgIFRtcCosIFRt
cCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hMb2NrQ21wWGNoZzgg
VUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4IC9icmFuY2gKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBU
bXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoTG9ja0NtcFhjaGcxNiBVRDpHOjE2LCBVOkc6
MzIsIFVEOkc6MTYgL2JyYW5jaAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwg
SW5kZXgKKworeDg2OiBCcmFuY2hMb2NrQ21wWGNoZzMyIFVEOkc6MzIsIFU6RzozMiwgVUQ6Rzoz
MiAvYnJhbmNoCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4
ODZfNjQ6IEJyYW5jaExvY2tDbXBYY2hnNjQgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFu
Y2gKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogTG9j
a0FkZDggVTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja0FkZDE2IFU6RzoxNiwgVUQ6Rzox
NgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogTG9ja0FkZDMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgor
ICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDog
TG9ja0FkZDY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1N1YjggVTpHOjgsIFVE
Okc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4NjogTG9ja1N1YjE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRk
cgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Njog
TG9ja1N1YjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9ja1N1YjY0IFU6Rzo2
NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja0FuZDggVTpHOjgsIFVEOkc6OAorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogTG9ja0FuZDE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja0FuZDMyIFU6Rzoz
MiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9ja0FuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogTG9ja09yOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrT3IxNiBVOkc6
MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tPcjMyIFU6RzozMiwgVUQ6RzozMgorICAgIElt
bSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisK
K3g4Nl82NDogTG9ja09yNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1t
LCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrWG9yOCBV
Okc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrWG9yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2OiBMb2NrWG9yMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1t
LCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBMb2NrWG9y
NjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrTmVnOCBVRDpHOjgKKyAgICBBZGRy
CisgICAgSW5kZXgKKworeDg2OiBMb2NrTmVnMTYgVUQ6RzoxNgorICAgIEFkZHIKKyAgICBJbmRl
eAorCit4ODY6IExvY2tOZWczMiBVRDpHOjMyCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Nl82
NDogTG9ja05lZzY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBMb2NrTm90
OCBVRDpHOjgKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBMb2NrTm90MTYgVUQ6RzoxNgor
ICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IExvY2tOb3QzMiBVRDpHOjMyCisgICAgQWRkcgor
ICAgIEluZGV4CisKK3g4Nl82NDogTG9ja05vdDY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5k
ZXgKKworeDg2OiBMb2NrWEFkZDggVUQ6Rzo4LCBVRDpHOjgKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4NjogTG9ja1hBZGQxNiBVRDpHOjE2LCBVRDpHOjE2CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tYQWRkMzIgVUQ6RzozMiwgVUQ6RzozMgor
ICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBMb2NrWEFkZDY0IFVEOkc6
NjQsIFVEOkc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hj
aGc4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IExvY2tYY2hnMTYgVUQ6RzoxNiwgVUQ6RzoxNgorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2OiBMb2NrWGNoZzMyIFVEOkc6MzIsIFVEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9ja1hjaGc2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCithcm02NDogTG9hZExpbms4IFU6Rzo4LCBaRDpH
OjgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTgg
VTpHOjgsIFpEOkc6OAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0
b3JlQ29uZDggVTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBU
bXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDggVTpHOjgsIEQ6Rzo4LCBFWkQ6
Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExv
YWRMaW5rMTYgVTpHOjE2LCBaRDpHOjE2CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAor
Cithcm02NDogTG9hZExpbmtBY3ExNiBVOkc6MTYsIFpEOkc6MTYKKyAgICBBZGRyLCBUbXAKKyAg
ICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQxNiBVOkc6MTYsIEQ6RzoxNiwgRVpEOkc6
OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9y
ZUNvbmRSZWwxNiBVOkc6MTYsIEQ6RzoxNiwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisg
ICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGluazMyIFU6RzozMiwgWkQ6RzozMgor
ICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMzIgVTpH
OjMyLCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogU3Rv
cmVDb25kMzIgVTpHOjMyLCBEOkc6MzIsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAg
IFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMzIgVTpHOjMyLCBEOkc6MzIs
IEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02
NDogTG9hZExpbms2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwg
VG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIEFkZHIsIFRt
cAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDY0IFU6Rzo2NCwgRDpHOjY0LCBF
WkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6
IFN0b3JlQ29uZFJlbDY0IFU6Rzo2NCwgRDpHOjY0LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBU
bXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IERlcGVuZDMyIFU6RzozMiwgRDpHOjMy
CisgICAgVG1wLCBUbXAKKworYXJtNjQ6IERlcGVuZDY0IFU6Rzo2NCwgRDpHOjY0CisgICAgVG1w
LCBUbXAKKwogQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBS
ZWxDb25kLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVsQ29uZCwgVG1wLCBJbW0sIFRtcApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNl
LmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJQYWRJbnRlcmZlcmVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHZv
aWQgcGFkSW50ZXJmZXJlbmNlKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgWyZdIChBcmcm
LCBBcmc6OlJvbGUgcm9sZSwgQmFuaywgV2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgc3dp
dGNoIChyb2xlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseURlZjoKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKICAgICAgICAgICAgICAgICAg
ICAgICAgIGhhc0Vhcmx5RGVmID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6TGF0ZVVzZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgc3Bp
bGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpM
YXRlQ29sZFVzZToKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBcmc6OkVhcmx5WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVnIHJl
ZyA6IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcihiYW5rKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghc2V0QmVmb3JlLmdldChyZWcpICYmICFzZXRBZnRlci5nZXQocmVnKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBZnRlci5zZXQocmVnKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3Iu
cmIJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bj
b2RlX2dlbmVyYXRvci5yYgkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIGRlZiBs
ZXgoc3RyLCBmaWxlTmFtZSkKIGVuZAogCiBkZWYgaXNSb2xlKHRva2VuKQotICAgIHRva2VuID1+
IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEpfChTKSlcWi8KKyAgICB0b2tlbiA9fiAv
XEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUyl8KEVEKXwoRVpEKXwoTFUpKVxaLwog
ZW5kCiAKIGRlZiBpc0dGKHRva2VuKQpAQCAtNjUxLDYgKzY1MSwxMiBAQCB3cml0ZUgoIk9wY29k
ZVV0aWxzIikgewogICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZUFkZHIiCiAgICAgICAg
ICAgICAgICAgd2hlbiAiUyIKICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3JhdGNoIgor
ICAgICAgICAgICAgICAgIHdoZW4gIkVEIgorICAgICAgICAgICAgICAgICAgICByb2xlID0gIkVh
cmx5RGVmIgorICAgICAgICAgICAgICAgIHdoZW4gIkVaRCIKKyAgICAgICAgICAgICAgICAgICAg
cm9sZSA9ICJFYXJseVpEZWYiCisgICAgICAgICAgICAgICAgd2hlbiAiTFUiCisgICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSAiTGF0ZVVzZSIKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302845</attachid>
            <date>2017-02-27 09:53:46 -0800</date>
            <delta_ts>2017-02-27 16:49:45 -0800</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>121256</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMiBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNCRTFFNjQ5REM0MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRDFFNjQ5REMyMDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAq
LzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhp
c1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAg
LTI3NjQsNiArMjc3MCwxMiBAQAogCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5r
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQmFuay5oOyBwYXRoID0gYjMv
QjNCYW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM2M0FEMUU2MEFFM0Mw
MEMxMzgzOSAvKiBCM1dpZHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEIzV2lkdGguY3BwOyBwYXRoID0gYjMvQjNXaWR0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2lkdGguaDsgcGF0aCA9IGIzL0IzV2lkdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjMxRTYzNDNFODAwQzEzODM5
IC8qIEIzQXRvbWljVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQjNBdG9taWNWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0F0b21pY1ZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNBdG9taWNWYWx1
ZS5oOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25T
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQuaDsgcGF0aCA9IGIzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJC
bG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBBaXJCbG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRp
b25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCQTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGIzL2Fpci9BaXJCbG9j
a0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCRDFF
NjQ5REMyMDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQzNDAwN0Q0QjE5IC8qIERl
YnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVi
dWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERDMTk4
MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTI5Miw2ICs1MzA0LDggQEAKIAkJCQkwRkVDODRCMzFCREFDRDg4MDA4MEZGNzQgLyog
YWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFs
dWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVn
VmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1
ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUu
aCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJ
CQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi8sCiAJCQkJMEZFQzg0QjYx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5jcHAgKi8sCkBAIC01MzU0LDYgKzUzNjgs
NyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5o
ICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywK
IAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oICovLAorCQkJCTBG
MkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oICov
LAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxv
Y2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3Bw
ICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5nZS5oICovLApA
QCAtNTQ2OSw2ICs1NDg0LDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWly
QXJnSW5saW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNp
Y0Jsb2NrLmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFzaWNC
bG9jay5oICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2Vy
dGlvblNldC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2Nr
SW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJs
b2NrV29ya2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC03MzI2LDYgKzczNDMsNyBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2OTg3
QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRDFFNjQ5REMyMDBDMTM4MzkgLyog
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAwRjg0
NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENENzBD
MDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJODY0
MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCkBAIC03MzU0LDgg
KzczNzIsOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxl
ck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJs
ZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9B
c3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIxIC8q
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0MxMDBG
ODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4NUE4
RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKQEAgLTc5
NTYsNiArNzk3NCw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3RDcxRDlEQzQ0MjAwMUI5ODI1IC8q
IEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0JDMUU2MzQ0MEMwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0MzgxQzAw
MTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUzNEMx
QTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxv
Yy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDQ3LDYgKzgwNjYsNyBAQAogCQkJCTQzNDIyQTYzMUMx
NThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQdHJWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNGNzAwQzEzODM5IC8qIEIzR2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOEUwRTFCRjAyNzZD
MDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRkMx
QzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRlVGFpbHMuaCBpbiBIZWFkZXJzICov
LApAQCAtODM2Niw2ICs4Mzg2LDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4NDQ3MjggLyog
REZHT1NSRXhpdEZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEzQjYwMDU2
N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50
b21JbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMxNEVGOTBBRjAw
QzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFQjE5RDBCQTdE
MDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAtOTc5Miw2ICs5
ODEzLDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
IAkJCQkwRkZBNTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9wY29kZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjJDNjNCRTFFNjQ5REM0MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDQ5MzdDMzFEREJFNjE0MDA3N0M4MDcgLyog
QWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUYwRjQxNEQx
MDYzOTAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM3MEI0
RjUxQkYyNjIwMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI0OCw2ICsxMDI3MCw3IEBACiAJCQkJ
OUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTEx
ODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQwRTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3Rl
ZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMjY2LDYgKzEwMjg5LDcgQEAK
IAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAv
KiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRC
NjExODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBBMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25T
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIElu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NG
ODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIKKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisKKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIHN3aXRj
aCAoY29uZGl0aW9uKSB7CisgICAgY2FzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNz
OgorICAgICAgICBvdXQucHJpbnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6RmFpbHVyZToKKyAgICAgICAgb3V0LnByaW50KCJG
YWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODksNiArODksMjMgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gVGltZXNFaWdodDsKICAgICB9CiAgICAgCisgICAgZW51bSBTdGF0dXNDb25k
aXRpb24geworICAgICAgICBTdWNjZXNzLAorICAgICAgICBGYWlsdXJlCisgICAgfTsKKyAgICAK
KyAgICBzdGF0aWMgU3RhdHVzQ29uZGl0aW9uIGludmVydChTdGF0dXNDb25kaXRpb24gY29uZGl0
aW9uKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICAgICAgY2FzZSBT
dWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIEZhaWx1cmU7CisgICAgICAgIGNhc2UgRmFpbHVy
ZToKKyAgICAgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgIH0K
KyAgICAKICAgICBzdHJ1Y3QgQmFzZUluZGV4OwogICAgIAogICAgIC8vIEFkZHJlc3M6CkBAIC0x
MTA4LDMgKzExMjUsMTYgQEAgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlLCBN
YQogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQworCisj
aWYgRU5BQkxFKEFTU0VNQkxFUikKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3Ry
ZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisj
ZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNf
SklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworQXRvbWljVmFsdWU6On5B
dG9taWNWYWx1ZSgpCit7Cit9CisKK1dpZHRoIEF0b21pY1ZhbHVlOjphY2Nlc3NXaWR0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fd2lkdGg7Cit9CisKK3ZvaWQgQXRvbWljVmFsdWU6OmR1bXBN
ZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAg
b3V0LnByaW50KGNvbW1hLCAid2lkdGggPSAiLCBtX3dpZHRoKTsKKyAgICAKKyAgICBNZW1vcnlW
YWx1ZTo6ZHVtcE1ldGEoY29tbWEsIG91dCk7Cit9CisKK1ZhbHVlKiBBdG9taWNWYWx1ZTo6Y2xv
bmVJbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbmV3IEF0b21pY1ZhbHVlKCp0aGlzKTsKK30K
KworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lk
dGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQg
PSAwKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgb3BlcmFuZC0+dHlw
ZSgpLCBvcmlnaW4sIG9mZnNldCwgb3BlcmFuZCwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lk
dGgpCit7CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBB
U1NFUlQoYmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKyAg
ICAKKyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6
CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNh
c2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9t
aWNYY2hnOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtp
bmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFs
dWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDog
TWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwga2luZC5vcGNvZGUoKSA9PSBBdG9taWNX
ZWFrQ0FTID8gSW50MzIgOiBleHBlY3RlZFZhbHVlLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCBl
eHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7
CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBBU1NFUlQo
YmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKworICAgIHN3
aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNl
IEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQXRvbWljVmFsdWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisj
aW5jbHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwor
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQXRvbWljVmFsdWUgOiBwdWJsaWMgTWVtb3J5VmFsdWUg
eworcHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGlzQXRvbWljKGtpbmQub3Bjb2RlKCkpOworICAgIH0KKyAgICAKKyAgICB+
QXRvbWljVmFsdWUoKTsKKyAgICAKKyAgICBUeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJl
dHVybiBjaGlsZCgwKS0+dHlwZSgpOyB9CisgICAgCisgICAgV2lkdGggb3BlcmF0aW9uV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgCisgICAgLy8gU3lub255bSBmb3Igd2lk
dGgoKSwgaWYgeW91J3JlIGFjY2Vzc2luZyB2aWEgTWVtb3J5VmFsdWUuCisgICAgV2lkdGggYWNj
ZXNzV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1
bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
CisgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtpbmQs
IE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQgPSAwKTsKKyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBW
YWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwKTsKKyAgICAKKyAgICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2Vy
dGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMzUgKzM2LDEzIEBACiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsKIAogQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0
KFByb2NlZHVyZSAmcHJvYykKLSAgICA6IG1fcHJvYyhwcm9jKQorICAgIDogR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0KHByb2MubV9ibG9ja3MpCisgICAgLCBtX3Byb2MocHJvYykKIHsKIH0KIAog
QmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpIHsgfQogCi12b2lkIEJsb2Nr
SW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCi17Ci0gICAg
bV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOwotfQotCi1CYXNpY0Jsb2Nr
KiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVl
bmN5KQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNC
bG9jayhVSU5UX01BWCwgZnJlcXVlbmN5KSk7Ci0gICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxv
Y2suZ2V0KCk7Ci0gICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2Nr
KSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9u
U2V0OjppbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5KQot
ewotICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVl
bmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7Ci19Ci0KLUJhc2ljQmxvY2sq
IEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91Ymxl
IGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJl
cXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7Ci19
Ci0KIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcndhcmQoCiAgICAgQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqIGluc2Vy
dGlvblNldCwgZG91YmxlIGZyZXF1ZW5jeSkKIHsKQEAgLTEwMiwzMiArODAsNiBAQCBCYXNpY0Js
b2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotYm9vbCBCbG9ja0luc2VydGlvblNldDo6ZXhlY3V0ZSgpCi17Ci0gICAgaWYgKG1faW5zZXJ0
aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBXZSBh
bGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5l
ZWQgdG8gc29ydCB0aGVtIGJlZm9yZQotICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0
aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8g
YmUKLSAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCi0gICAgYnViYmxlU29ydCht
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKLQotICAgIGV4ZWN1dGVJ
bnNlcnRpb25zKG1fcHJvYy5tX2Jsb2NrcywgbV9pbnNlcnRpb25zKTsKLSAgICAKLSAgICAvLyBQ
cnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0
IGl0J3MKLSAgICAvLyBoZWFsdGh5IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5n
LgotICAgIG1fcHJvYy5tX2Jsb2Nrcy5yZW1vdmVBbGxNYXRjaGluZygKLSAgICAgICAgWyZdIChz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIHJldHVybiAhYmxvY2tQdHI7Ci0gICAgICAgIH0pOwotICAgIAotICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9wcm9jLm1fYmxvY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3By
b2MubV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQot
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5z
ZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKICNp
bmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwyNiArMzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CiAKIGNsYXNzIEluc2VydGlvblNldDsKIAotdHlwZWRlZiBXVEY6Okluc2Vy
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOwordHlwZWRl
ZiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJs
b2NrSW5zZXJ0aW9uOwogCi1jbGFzcyBCbG9ja0luc2VydGlvblNldCB7CitjbGFzcyBCbG9ja0lu
c2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4g
ewogcHVibGljOgogICAgIEJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSYpOwogICAgIH5CbG9j
a0luc2VydGlvblNldCgpOwogICAgIAotICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYp
OwotCi0gICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCi0gICAgQmFz
aWNCbG9jayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7
Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVz
dWFsbHkgeW91IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQotICAgIC8vIGFyZ3VtZW50LiBQ
YXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdi
ZWZvcmUnIGJsb2NrLiBUaGF0J3MKLSAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCi0gICAg
QmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1
ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2
ZW4gYmxvY2suCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIs
IGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQogICAgIC8vIEEgaGVscGVyIHRvIHNwbGl0IGEg
YmxvY2sgd2hlbiBmb3J3YXJkIGl0ZXJhdGluZyBvdmVyIGl0LiBJdCBjcmVhdGVzIGEgbmV3IGJs
b2NrIHRvIGhvbGQKICAgICAvLyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYXQg
dmFsdWVJbmRleC4gVGhlIGN1cnJlbnQgYmxvY2sgaXMgbGVmdCB3aXRoCiAgICAgLy8gZXZlcnl0
aGluZyBhdCBhbmQgYWZ0ZXIgdmFsdWVJbmRleC4gSWYgdGhlIG9wdGlvbmFsIEluc2VydGlvblNl
dCBpcyBwcm92aWRlZCwgaXQgd2lsbCBnZXQKQEAgLTgwLDEyICs2OCw5IEBAIHB1YmxpYzoKICAg
ICBCYXNpY0Jsb2NrKiBzcGxpdEZvcndhcmQoCiAgICAgICAgIEJhc2ljQmxvY2sqLCB1bnNpZ25l
ZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0KiA9IG51bGxwdHIsCiAgICAgICAgIGRvdWJsZSBm
cmVxdWVuY3kgPSBQTmFOKTsKLSAgICAKLSAgICBib29sIGV4ZWN1dGUoKTsKIAogcHJpdmF0ZToK
ICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKLSAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1f
aW5zZXJ0aW9uczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAg
ICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8
fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3Zlcmxh
cHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7
CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZl
bmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0
IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9w
ZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhl
ci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5u
ZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9
PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAg
JiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShj
b25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVj
dHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwg
IldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwxMCBA
QCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzE3MwogICAgIGJvb2wgcmVhZHNQaW5uZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgd3JpdGVzUGlubmVkIHsgZmFsc2UgfTsKKyAgICAKKyAgICAvLyBNZW1vcnkgZmVuY2VzIGNh
bm5vdCBiZSByZW9yZGVyZWQgYXJvdW5kIGVhY2ggb3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBl
ZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQKKyAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVt
b3J5IGZlbmNlLgorICAgIGJvb2wgZmVuY2UgeyBmYWxzZSB9OwogCiAgICAgSGVhcFJhbmdlIHdy
aXRlczsKICAgICBIZWFwUmFuZ2UgcmVhZHM7CkBAIC04OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZl
Y3RzIHsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKICAgICAgICAg
cmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9
IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCkBAIC0xMDMsNyArMTA4LDcgQEAgc3RydWN0IEVmZmVjdHMgewogCiAgICAg
Ym9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdGVybWluYWwg
fHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQ
aW5uZWQ7CisgICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRl
c0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9CiAK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgcmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVz
ZSByZXNwZWN0aXZlIGVmZmVjdHMgd291bGQgY2hhbmdlIHByb2dyYW0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NDIsNiArMTQyLDcgQEAgc3RydWN0IEltcHVyZUJsb2NrRGF0YSB7CiAKICAgICBSYW5nZVNldDxI
ZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlzIG9ubHkgZ2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0b3Jl
IGVsaW1pbmF0aW9uLgogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdl
dHMgdXNlZCBmb3IgYm90aCBsb2FkIGFuZCBzdG9yZSBlbGltaW5hdGlvbi4KKyAgICBib29sIGZl
bmNlOwogCiAgICAgTWVtb3J5VmFsdWVNYXAgc3RvcmVzQXRIZWFkOwogICAgIE1lbW9yeVZhbHVl
TWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsKQEAgLTE3NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNT
dG9yZSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9y
eS0+cmFuZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBz
KG1lbW9yeS0+cmFuZ2UoKSkpCisgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5v
dmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCisgICAgICAgICAgICAgICAgICAgICYmICghZGF0YS5m
ZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5jZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5z
dG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7CiAgICAgICAgICAgICAgICAgZGF0YS5yZWFkcy5hZGQo
ZWZmZWN0cy5yZWFkcyk7CiAKICAgICAgICAgICAgICAgICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9
IGVmZmVjdHMud3JpdGVzKQogICAgICAgICAgICAgICAgICAgICBjbG9iYmVyKGRhdGEsIHdyaXRl
cyk7CisgICAgICAgICAgICAgICAgZGF0YS5mZW5jZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG1lbW9yeSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlW
YWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7CkBAIC00NzgsNiArNDgxLDkgQEAgcHJpdmF0ZToKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVBZnRlckNsb2Ji
ZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXImIGZpbHRlcikKICAg
ICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBl
bGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0b3JlIHRvIHRo
ZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFueSBvcGVyYXRpb24g
dGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxpa2UgaXQgc2hvdWxk
IGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3Jp
dHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIApAQCAtNjE0LDYg
KzYyMCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIp
OwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNG
ZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChNZW1vcnlWYWx1ZSog
bWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7CiAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91
bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0dlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCB2
b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MDcKICAgICB9CiAKKyAgICAv
LyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgogICAgIGxvd2VyTWFjcm9zKHByb2Nl
ZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEluc2Vy
dGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9jaz4KK2NsYXNzIEdlbmVyaWNC
bG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOworICAgIAorICAgIEJs
b2NrSW5zZXJ0aW9uU2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBibG9j
a3MpCisgICAgICAgIDogbV9ibG9ja3MoYmxvY2tzKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
dm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCisgICAgeworICAgICAgICBt
X2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7CisgICAgfQorCisgICAgLy8g
SW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCisgICAgQmFzaWNCbG9jayogaW5z
ZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5U
X01BWCwgZnJlcXVlbmN5KSk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdl
dCgpOworICAgICAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2sp
KSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5l
dyBibG9jayBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNz
IHRoZSBmcmVxdWVuY3kKKyAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0
byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCisg
ICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3YW50LgorICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9y
ZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVxdWVu
Y3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsKKyAgICB9CisKKyAgICAvLyBJ
bnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KKyAgICBCYXNpY0Jsb2Nr
KiBpbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
CisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJlcXVl
bmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7CisgICAg
fQorCisgICAgYm9vbCBleGVjdXRlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2luc2VydGlvbnMu
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAg
Ly8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3JkZXIuIFNv
LCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKKyAgICAgICAgLy8gcnVubmluZyBXVEY6OmV4
ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBhbmQgd2Ug
d2FudCBpdCB0byBiZQorICAgICAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCisg
ICAgICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQo
KSk7CisgICAgICAgIAorICAgICAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX2Jsb2NrcywgbV9pbnNl
cnRpb25zKTsKKyAgICAgICAgCisgICAgICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBU
aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncworICAgICAgICAvLyBoZWFsdGh5
IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgorICAgICAgICBtX2Jsb2Nrcy5y
ZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+JiBibG9ja1B0cikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFibG9j
a1B0cjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2VzLgorICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9ibG9ja3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX2Jsb2Nr
c1tpXS0+bV9pbmRleCA9IGk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4mIG1f
YmxvY2tzOworICAgIFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJKHJldmlzaW9uIDIxMjk5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdlIG9wZXJhdG9yfChjb25zdCBIZWFw
UmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5nZSgKKyAg
ICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1fYmVnaW4pLAorICAgICAgICAgICAg
c3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAgfQorICAgIAogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1fZW5kOyB9CiAKICAg
ICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJbnNlcnRpb25TZXQ6Omluc2VydEJv
dHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9tKGluZGV4LCBsaWtlVmFsdWUtPm9y
aWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1ZhbHVlKiBJbnNlcnRpb25TZXQ6Omlu
c2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVlKQoreworICAgIHJldHVybiBpbnNl
cnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFsdWUpKTsKK30KKwogdm9pZCBJbnNl
cnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgYnViYmxlU29ydCht
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVf
dCBpbmRleCwgT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVfdCBp
bmRleCwgVmFsdWUqKTsKKyAgICAKKyAgICBWYWx1ZSogaW5zZXJ0Q2xvbmUoc2l6ZV90IGluZGV4
LCBWYWx1ZSopOwogCiAgICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHJ1bigpCiAgICAg
eworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wcm9jLmhhc1F1aXJrcygpKTsKKyAgICAgICAg
CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKICAgICAgICAgICAg
IG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgICAgIHByb2Nlc3NDdXJyZW50QmxvY2soKTsKQEAg
LTcyLDYgKzc0LDkgQEAgcHVibGljOgogICAgICAgICAgICAgbV9wcm9jLnJlc2V0UmVhY2hhYmls
aXR5KCk7CiAgICAgICAgICAgICBtX3Byb2MuaW52YWxpZGF0ZUNGRygpOwogICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBtX3Byb2Muc2V0SGFzUXVpcmtzKHRydWUpOworICAgICAgICAKICAg
ICAgICAgcmV0dXJuIG1fY2hhbmdlZDsKICAgICB9CiAgICAgCkBAIC0xODUsNyArMTkwLDczIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
IGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1sb2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRv
IG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8gdGVsbCB0aGUKKyAgICAgICAgICAgICAgICAg
ICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxvYWQgbW90aW9uLgorICAgICAgICAgICAgICAg
ICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVl
PihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0g
SGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5n
ZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBL
aWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBs
aWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoQm90dG9t
KG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIEF0b21p
Y1dlYWtDQVM6CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzogeworICAgICAgICAg
ICAgICAgIGlmIChpc1g4NigpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+
YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMt
Pm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYg
KGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSA9IGF0
b21pYy0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gT24g
QVJNLCB0aGUgbG9hZCBwYXJ0IG9mIHRoZSBDQVMgZG9lcyBhIGxvYWQgd2l0aCB6ZXJvIGV4dGVu
c2lvbi4gVGhlcmVmb3JlLCB3ZSBuZWVkCisgICAgICAgICAgICAgICAgLy8gdG8gemVyby1leHRl
bmQgdGhlIGlucHV0LgorICAgICAgICAgICAgICAgIFZhbHVlKiBtYXNrZWRFeHBlY3RlZFZhbHVl
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgbV9p
bmRleCwgQml0QW5kLCBtX29yaWdpbiwgZXhwZWN0ZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQobV9pbmRleCwgZXhwZWN0ZWRWYWx1
ZSwgbWFzayh3aWR0aCkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBhdG9t
aWMtPmNoaWxkKDApID0gbWFza2VkRXhwZWN0ZWRWYWx1ZTsKKyAgICAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6Cisg
ICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgICAgICAgICAv
LyBPbiBYODYsIHRoZXNlIGFjdHVhbGx5IHJldHVybiBnYXJiYWdlIGluIHRoZSBoaWdoIGJpdHMu
IE9uIEFSTTY0LCB0aGVzZSBzb3J0YQorICAgICAgICAgICAgICAgIC8vIHplcm8tZXh0ZW5kIHRo
ZWlyIGhpZ2ggYml0cywgZXhjZXB0IHRoYXQgdGhlIGhpZ2ggYml0cyBtaWdodCBnZXQgcG9sbHV0
ZWQgYnkgaGlnaAorICAgICAgICAgICAgICAgIC8vIGJpdHMgaW4gdGhlIG9wZXJhbmQuIC4gU28s
IGVpdGhleSB3YXksIHdlIG5lZWQgdG8gdGhyb3cgYSBzaWduLWV4dGVuZCBvbiB0aGVzZQorICAg
ICAgICAgICAgICAgIC8vIHRoaW5ncy4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAg
ICAgICAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgp
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBWYWx1ZSogbmV3VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAor
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBzaWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwgbV9v
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENsb25lKG1f
aW5kZXgsIG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX3Zh
bHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
TWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJP
cHRpbWl6YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDE1ICsxNTYsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGNhc2UgUm90TDogewogICAgICAgICAgICAgICAgIC8vIEFSTTY0
IGRvZXNuJ3QgaGF2ZSBhIHJvdGF0ZSBsZWZ0LgogICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVl
PihtX2luZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcm90YXRlID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0PFZhbHVlPihtX2luZGV4LCBSb3RSLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hp
bGQoMCksIG5ld1NoaWZ0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxh
Y2VXaXRoSWRlbnRpdHkocm90YXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlm
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5v
cmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSog
cm90YXRlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBSb3RSLCBtX3Zh
bHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCksIG5ld1NoaWZ0KTsKKyAgICAgICAgICAg
ICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw2ICs3MiwxNCBAQCBuYW1lc3BhY2UgewogCiBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKIAorLy8gRklYTUU6IFdlIHdvdWxkbid0IG5lZWQgdGhpcyBpZiBBaXIgc3VwcG9ydGVkIFdp
ZHRoIG1vZGlmaWVycyBpbiBBaXI6OktpbmQuCisvLyBPT1BTISEhIChuZWVkIGEgYnVnIFVSTCkK
KyNkZWZpbmUgT1BDT0RFX0ZPUl9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKKyAgICAod2lkdGgp
ID09IFdpZHRoOCA/IG9wY29kZSAjIyA4IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IG9w
Y29kZSAjIyAxNiA6IFwKKyAgICAod2lkdGgpID09IFdpZHRoMzIgPyBvcGNvZGUgIyMgMzIgOiBc
CisgICAgb3Bjb2RlICMjIDY0KQorCiBjbGFzcyBMb3dlclRvQWlyIHsKIHB1YmxpYzoKICAgICBM
b3dlclRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQpAQCAtODMsNiArOTEsNyBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV9kb21pbmF0b3JzKHByb2NlZHVyZS5kb21pbmF0b3JzKCkpCiAgICAgICAg
ICwgbV9wcm9jZWR1cmUocHJvY2VkdXJlKQogICAgICAgICAsIG1fY29kZShwcm9jZWR1cmUuY29k
ZSgpKQorICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQobV9jb2RlKQogICAgIHsKICAgICB9
CiAKQEAgLTEyNCwxNCArMTMzLDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3RlZCBhZGRy
ZXNzIGV4cHJlc3Npb24gYmVmb3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhlIGxvb3Au
CiAgICAgICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUuYmxvY2tz
SW5QcmVPcmRlcigpKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAgICAgICAg
ICAvLyBSZXNldCBzb21lIHN0YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CiAK
ICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAKICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5n
IEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KKyAgICAg
ICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vz
c29ycygpKSB7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNz
b3JzKCkuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayht
X2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkp
OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBpbiByZXZl
cnNlIG9yZGVyIHNvIHdlIHNlZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBhbGxvd3Mg
dXMKICAgICAgICAgICAgIC8vIHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5LgogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAtMTQ5LDE5
ICsxNjIsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRh
aW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAgICAgICAgLy8g
aXQgaW4gcmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6
ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0c1tp
XSkKLSAgICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBlbmRJbnN0
KFdURk1vdmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1
cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAgICAgICAg
IGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygp
KSB7Ci0gICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCku
YXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2Nr
VG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG1fYmxv
Y2tUb0Jsb2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fYmxvY2tJ
bnNlcnRpb25TZXQuZXhlY3V0ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0IGluc2Vy
dGlvblNldChtX2NvZGUpOwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xvZ3VlKQpA
QCAtNTM4LDcgKzU0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAK
ICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB2YWx1ZS0+b2Zmc2V0KCk7Ci0gICAgICAgIFdpZHRo
IHdpZHRoID0gdmFsdWUtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgIFdpZHRoIHdpZHRoID0gdmFs
dWUtPmxvYWRTdG9yZVdpZHRoKCk7CiAKICAgICAgICAgQXJnIHJlc3VsdCA9IGVmZmVjdGl2ZUFk
ZHIodmFsdWUtPmxhc3RDaGlsZCgpLCBvZmZzZXQsIHdpZHRoKTsKICAgICAgICAgQVNTRVJUKHJl
c3VsdC5pc1ZhbGlkRm9ybSh3aWR0aCkpOwpAQCAtNTYyLDExICs1NjYsMTYgQEAgcHJpdmF0ZToK
ICAgICAKICAgICBBcmdQcm9taXNlIGxvYWRQcm9taXNlQW55T3Bjb2RlKFZhbHVlKiBsb2FkVmFs
dWUpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkVmFsdWUtPmFzPE1lbW9yeVZh
bHVlPigpKTsKICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKGxvYWRWYWx1ZSkpCiAgICAgICAg
ICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAgIGlmIChjcm9zc2VzSW50ZXJmZXJlbmNlKGxvYWRW
YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAgIEFyZ1Byb21pc2UgcmVz
dWx0KGFkZHIobG9hZFZhbHVlKSwgbG9hZFZhbHVlKTsKKyAgICAgICAgaWYgKGxvYWRWYWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnKCk7
CisgICAgICAgIEFyZyBsb2FkQWRkciA9IGFkZHIobG9hZFZhbHVlKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobG9hZEFkZHIpOworICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChsb2FkQWRkciwg
bG9hZFZhbHVlKTsKICAgICAgICAgaWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkKICAgICAgICAgICAg
IHJlc3VsdC5zZXRUcmFwcyh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTkzMSwx
MCArOTQwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6
Ok9wY29kZSBvcGNvZGU2NCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0
YXRpdmU+CiAgICAgYm9vbCB0cnlBcHBlbmRTdG9yZUJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSog
cmlnaHQpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKSk7CisgICAgICAgIAogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNv
ZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgbGVmdC0+dHlwZSgpKTsKICAgICAgICAgaWYg
KG9wY29kZSA9PSBBaXI6Ok9vcHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IAorICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICBBcmcgc3RvcmVBZGRy
ID0gYWRkcihtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUKHN0b3JlQWRkcik7CiAKQEAgLTk5NCwx
MCArMTAwOCw0OCBAQCBwcml2YXRlOgogCiAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFs
dWUsIHRtcCh2YWx1ZSksIGRlc3QpOwogICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9y
ZU9wY29kZShXaWR0aCB3aWR0aCwgQmFuayBiYW5rLCBib29sIHJlbGVhc2UpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/
IFN0b3JlUmVsOCA6IFN0b3JlODsKKyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/
IFN0b3JlUmVsMTYgOiBTdG9yZTE2OworICAgICAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgICAg
ICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDMyIDogTW92ZTMyOworICAgICAgICAgICAgY2FzZSBG
UDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpczY0
Qml0KCkpOworICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQ
OgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWw2NCA6IE1vdmU7Cisg
ICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxl
YXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFZh
bHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJldHVybiBzdG9yZU9wY29kZShtZW1vcnktPmxv
YWRTdG9yZVdpZHRoKCksIG1lbW9yeS0+YWNjZXNzQmFuaygpLCBtZW1vcnktPmhhc0ZlbmNlKCkp
OworICAgIH0KIAogICAgIEluc3QgY3JlYXRlU3RvcmUoVmFsdWUqIHZhbHVlLCBjb25zdCBBcmcm
IGRlc3QpCiAgICAgewotICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gbW92ZUZvclR5
cGUodmFsdWUtPnR5cGUoKSk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBzdG9y
ZU9wY29kZSh2YWx1ZSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVTdG9yZShtb3ZlT3Bjb2RlLCB2
YWx1ZSwgZGVzdCk7CiAgICAgfQogCkBAIC0xMDA2LDcgKzEwNTgsNyBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVTdG9yZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSk7CiAgICAgfQotCisgICAgCiAgICAgQWlyOjpPcGNv
ZGUgbW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7
CkBAIC0xMDczLDcgKzExMjUsNDEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1faW5zdHMu
bGFzdCgpLmFwcGVuZChpbnN0KTsKICAgICB9CisgICAgCisgICAgdm9pZCBmaW5pc2hBcHBlbmRp
bmdJbnN0cnVjdGlvbnMoQWlyOjpCYXNpY0Jsb2NrKiB0YXJnZXQpCisgICAgeworICAgICAgICAv
LyBOb3cgYXBwZW5kIHRoZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMgY29udGFpbnMgdGhlbSBpbiBy
ZXZlcnNlIG9yZGVyLCBzbyB3ZSBwcm9jZXNzCisgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAg
ICAgICBmb3IgKEluc3QmIGluc3QgOiBtX2luc3RzW2ldKQorICAgICAgICAgICAgICAgIHRhcmdl
dC0+YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKKyAgICAgICAgfQorICAgICAgICBtX2luc3Rz
LnJlc2l6ZSgwKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpCYXNpY0Jsb2NrKiBuZXdCbG9jaygp
CisgICAgeworICAgICAgICByZXR1cm4gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlciht
X2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXSk7CisgICAgfQogCisgICAgLy8gTk9URTogVGhpcyB3aWxs
IGNyZWF0ZSBhIGNvbnRpbnVhdGlvbiBibG9jayAoYG5leHRCbG9ja2ApICphZnRlciogYW55IGJs
b2NrcyB5b3UndmUgY3JlYXRlZCB1c2luZworICAgIC8vIG5ld0Jsb2NrKCkuIFNvLCBpdCdzIHBy
ZWZlcmFibGUgdG8gY3JlYXRlIGFsbCBvZiB5b3VyIGJsb2NrcyB1cGZyb250IHVzaW5nIG5ld0Js
b2NrKCkuIEFsc28gbm90ZQorICAgIC8vIHRoYXQgYW55IGNvZGUgeW91IGVtaXQgYmVmb3JlIHRo
aXMgd2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIGNvbnRpbnVhdGlvbiwgYW5kIGFueSBjb2RlIHlv
dSBlbWl0CisgICAgLy8gYWZ0ZXIgdGhpcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBwcmV2aW91
cyBibG9jay4KKyAgICB2b2lkIHNwbGl0QmxvY2soQWlyOjpCYXNpY0Jsb2NrKiYgcHJldmlvdXNC
bG9jaywgQWlyOjpCYXNpY0Jsb2NrKiYgbmV4dEJsb2NrKQorICAgIHsKKyAgICAgICAgQWlyOjpC
YXNpY0Jsb2NrKiBibG9jayA9IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdOworICAgICAgICAKKyAg
ICAgICAgcHJldmlvdXNCbG9jayA9IGJsb2NrOworICAgICAgICBuZXh0QmxvY2sgPSBtX2Jsb2Nr
SW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKGJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGZpbmlz
aEFwcGVuZGluZ0luc3RydWN0aW9ucyhuZXh0QmxvY2spOworICAgICAgICBuZXh0QmxvY2stPnN1
Y2Nlc3NvcnMoKSA9IGJsb2NrLT5zdWNjZXNzb3JzKCk7CisgICAgICAgIGJsb2NrLT5zdWNjZXNz
b3JzKCkuY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJ
bnN0PigpKTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gQXJndW1lbnRzPgogICAgIFQqIGVuc3VyZVNwZWNpYWwoVComIGZpZWxkLCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCiAgICAgewpAQCAtMTEyMyw3ICsxMjA5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlN0YWNrQXJn
dW1lbnQ6CiAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjpjYWxsQXJnKHZhbHVlLnJlcCgpLm9m
ZnNldEZyb21TUCgpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZS52YWx1ZSgp
LCBhcmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1vdmVGb3JUeXBlKHZhbHVlLnZh
bHVlKCkpLCBhcmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTk2
MSw2ICsyMDQ3LDIzMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
KyAgICB2b2lkIGFwcGVuZFg4NkRpdihCMzo6T3Bjb2RlIG9wKQorICAgIHsKKyNpZiBDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KQorICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4
KTsKKyAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7CisKKyAgICAgICAg
QWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2
OworICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgeworICAgICAgICBjYXNlIEludDMy
OgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdv
cmQzMjsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgSW50NjQ6CisgICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2
Q29udmVydFRvUXVhZFdvcmQ2NDsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjY0OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOworICAgICAgICBYODZSZWdpc3RlcnM6
OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBYODZS
ZWdpc3RlcnM6OmVkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxk
KDApKSwgZWF4KTsKKyAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdvcmQsIGVheCwgZWR4
KTsKKyAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkp
OworICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7CisKKyNl
bHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShvcCk7CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpP
cGNvZGUgb3ApCisgICAgeworI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgICAgIFRt
cCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBUbXAgZWR4ID0gVG1wKFg4
NlJlZ2lzdGVyczo6ZWR4KTsKKworICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50
eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CisKKyAgICAgICAgQVNTRVJU
KG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7CisgICAgICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0
ZXJJRCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBYODZSZWdpc3Rl
cnM6OmVkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwg
ZWF4KTsKKyAgICAgICAgYXBwZW5kKFhvcjY0LCBlZHgsIGVkeCk7CisgICAgICAgIGFwcGVuZChk
aXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5kKE1v
dmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BB
UkFNKG9wKTsKKyAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisjZW5kaWYKKyAg
ICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgbG9hZExpbmtPcGNvZGUoV2lkdGggd2lkdGgsIGJv
b2wgZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRI
KExvYWRMaW5rQWNxLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKExvYWRMaW5rLCB3aWR0aCk7
CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlQ29uZE9wY29kZShXaWR0aCB3aWR0
aCwgYm9vbCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmZW5jZSA/IE9QQ09ERV9GT1Jf
V0lEVEgoU3RvcmVDb25kUmVsLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZCwg
d2lkdGgpOworICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIGNhbiBlbWl0IGNvZGUgZm9yIHRoZSBm
b2xsb3dpbmcgcGF0dGVybnM6CisgICAgLy8gQXRvbWljV2Vha0NBUworICAgIC8vIEJpdFhvcihB
dG9taWNXZWFrQ0FTLCAxKQorICAgIC8vIEF0b21pY1N0cm9uZ0NBUworICAgIC8vIEVxdWFsKEF0
b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gTm90RXF1YWwoQXRvbWljU3Ryb25nQ0FT
LCBleHBlY3RlZCkKKyAgICAvLyBCcmFuY2goQXRvbWljV2Vha0NBUykKKyAgICAvLyBCcmFuY2go
RXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAgLy8gQnJhbmNoKE5vdEVxdWFs
KEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vCisgICAgLy8gSXQgYXNzdW1lcyB0
aGF0IGF0b21pY1ZhbHVlIHBvaW50cyB0byB0aGUgQ0FTLCBhbmQgbV92YWx1ZSBwb2ludHMgdG8g
dGhlIGluc3RydWN0aW9uIGJlaW5nCisgICAgLy8gZ2VuZXJhdGVkLiBJdCBhc3N1bWVzIHRoYXQg
eW91J3ZlIGNvbnN1bWVkIGV2ZXJ5dGhpbmcgdGhhdCBuZWVkcyB0byBiZSBjb25zdW1lZC4KKyAg
ICBib29sIGFwcGVuZENBUyhWYWx1ZSogYXRvbWljVmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHsK
KyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IGF0b21pY1ZhbHVlLT5hczxBdG9taWNWYWx1
ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXRvbWljKTsKKyAgICAgICAgCisgICAgICAg
IGJvb2wgaXNCcmFuY2ggPSBtX3ZhbHVlLT5vcCgpID09IEJyYW5jaDsKKyAgICAgICAgYm9vbCBp
c1N0cm9uZyA9IGF0b21pYy0+b3AoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wg
cmV0dXJuc09sZFZhbHVlID0gbV92YWx1ZS0+b3AoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAg
ICAgIAorICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKTsKKyAg
ICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisKKyAgICAgICAgVG1wIHZhbHVlUmVz
dWx0VG1wOworICAgICAgICBUbXAgYm9vbFJlc3VsdFRtcDsKKyAgICAgICAgaWYgKHJldHVybnNP
bGRWYWx1ZSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWludmVydCk7CisgICAgICAg
ICAgICB2YWx1ZVJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgICAgIGJvb2xSZXN1
bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0JyYW5jaCkg
eworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAg
ICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAg
ICAgICAgICBib29sUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBUbXAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXA7CisgICAgICAgIGlmIChpc1N0cm9u
ZyAmJiAhaXNCcmFuY2gpCisgICAgICAgICAgICBzdWNjZXNzQm9vbFJlc3VsdFRtcCA9IG1fY29k
ZS5uZXdUbXAoR1ApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWNjZXNzQm9vbFJlc3Vs
dFRtcCA9IGJvb2xSZXN1bHRUbXA7CisKKyAgICAgICAgVG1wIGV4cGVjdGVkVmFsdWVUbXAgPSB0
bXAoYXRvbWljLT5jaGlsZCgwKSk7CisgICAgICAgIFRtcCBuZXdWYWx1ZVRtcCA9IHRtcChhdG9t
aWMtPmNoaWxkKDEpKTsKKyAgICAgICAgCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayBzdWNjZXNz
OworICAgICAgICBGcmVxdWVudGVkQmxvY2sgZmFpbHVyZTsKKyAgICAgICAgaWYgKGlzQnJhbmNo
KSB7CisgICAgICAgICAgICBzdWNjZXNzID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9ja10tPnN1Y2Nl
c3NvcihpbnZlcnQpOworICAgICAgICAgICAgZmFpbHVyZSA9IG1fYmxvY2tUb0Jsb2NrW21fYmxv
Y2tdLT5zdWNjZXNzb3IoIWludmVydCk7CisgICAgICAgIH0KKyAgICAgICAgCisjaWYgQ1BVKFg4
Nl82NCkKKyAgICAgICAgVG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAg
IGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5vcGVyYXRpb25UeXBlKCkpLCBpbW1P
clRtcChhdG9taWMtPmNoaWxkKDApKSwgZWF4KTsKKyAgICAgICAgaWYgKHJldHVybnNPbGRWYWx1
ZSkgeworICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoTG9ja0NtcFhjaGcsIHdp
ZHRoKSwgZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICBhcHBlbmQocmVs
YXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpKSwgZWF4LCB2YWx1ZVJlc3Vs
dFRtcCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIGFwcGVu
ZChPUENPREVfRk9SX1dJRFRIKEJyYW5jaExvY2tDbXBYY2hnLCB3aWR0aCksIGVheCwgbmV3VmFs
dWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbbV9ibG9ja10tPnNl
dFN1Y2Nlc3NvcnMoc3VjY2VzcywgZmFpbHVyZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChMb2NrQ21wWGNoZywgd2lkdGgpLCBlYXgsIHRt
cChhdG9taWMtPmNoaWxkKDEpKSwgYWRkcmVzcywgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAg
ICBpZiAoaW52ZXJ0KQorICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKFhv
ciwgY2Fub25pY2FsV2lkdGgod2lkdGgpKSwgQXJnOjppbW0oMSksIGJvb2xSZXN1bHRUbXApOwor
ICAgICAgICB9CisjZWxpZiBDUFUoQVJNNjQpCisgICAgICAgIC8vIFdlIHdpc2ggdG8gZW1pdDoK
KyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIExv
YWRMaW5rCisgICAgICAgIC8vICAgICBCcmFuY2ggTm90RXF1YWwKKyAgICAgICAgLy8gICBTdWNj
ZXNzb3JzOiBUaGVuOiNmYWlsLCBFbHNlOiAjc3RvcmUKKyAgICAgICAgLy8gQmxvY2sgI3N0b3Jl
OgorICAgICAgICAvLyAgICAgU3RvcmVDb25kCisgICAgICAgIC8vICAgICBYb3IgJDEsICVyZXN1
bHQgICAgPC0tLSBvbmx5IGlmICFpbnZlcnQKKyAgICAgICAgLy8gICAgIEp1bXAKKyAgICAgICAg
Ly8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAgICAvLyBCbG9jayAjZmFpbDoKKyAgICAgICAg
Ly8gICAgIE1vdmUgJGludmVydCwgJXJlc3VsdAorICAgICAgICAvLyAgICAgSnVtcAorICAgICAg
ICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAg
ICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2NrKCk7Cisg
ICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3RvcmVCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAg
IEFpcjo6QmFzaWNCbG9jayogc3VjY2Vzc0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFp
c0JyYW5jaCAmJiBpc1N0cm9uZykKKyAgICAgICAgICAgIHN1Y2Nlc3NCbG9jayA9IG5ld0Jsb2Nr
KCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogZmFpbEJsb2NrID0gbnVsbHB0cjsKKyAgICAg
ICAgaWYgKCFpc0JyYW5jaCkKKyAgICAgICAgICAgIGZhaWxCbG9jayA9IG5ld0Jsb2NrKCk7Cisg
ICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3Ryb25nRmFpbEJsb2NrOworICAgICAgICBpZiAoaXNT
dHJvbmcpCisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAg
ICBGcmVxdWVudGVkQmxvY2sgY29tcGFyaXNvbkZhaWw7CisgICAgICAgIEZyZXF1ZW50ZWRCbG9j
ayB3ZWFrRmFpbDsKKyAgICAgICAgaWYgKGlzU3Ryb25nKSB7CisgICAgICAgICAgICBjb21wYXJp
c29uRmFpbCA9IHN0cm9uZ0ZhaWxCbG9jazsKKyAgICAgICAgICAgIHdlYWtGYWlsID0gcmVsb29w
QmxvY2s7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNCcmFuY2gpCisgICAg
ICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBmYWlsdXJlOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGNvbXBhcmlzb25GYWlsID0gZmFpbEJsb2NrOworICAgICAgICAgICAg
d2Vha0ZhaWwgPSBmYWlsdXJlOworICAgICAgICB9CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayog
YmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAg
IHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9uZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFw
cGVuZChKdW1wKTsKKyAgICAgICAgYmVnaW5CbG9jay0+c2V0U3VjY2Vzc29ycyhyZWxvb3BCbG9j
ayk7CisgICAgICAgIAorICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKGxvYWRMaW5rT3Bjb2Rl
KHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRk
cmVzcyk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChCcmFu
Y2gsIGNhbm9uaWNhbFdpZHRoKHdpZHRoKSksIG1fdmFsdWUsIEFyZzo6cmVsQ29uZChNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwpIHZhbHVlUmVzdWx0VG1wLCBleHBlY3RlZFZhbHVlVG1wKTsKKyAg
ICAgICAgcmVsb29wQmxvY2stPnNldFN1Y2Nlc3NvcnMoY29tcGFyaXNvbkZhaWwsIHN0b3JlQmxv
Y2spOworICAgICAgICAKKyAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29k
ZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgbmV3VmFsdWVUbXAsIGFkZHJl
c3MsIHN1Y2Nlc3NCb29sUmVzdWx0VG1wKTsKKyAgICAgICAgaWYgKGlzQnJhbmNoKSB7CisgICAg
ICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBBcmc6OnJlc0NvbmQoTWFj
cm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVzdWx0VG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAg
ICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCB3ZWFrRmFpbCk7Cisg
ICAgICAgICAgICBkb25lQmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIWRvbmVCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGRvbmVCbG9j
ay0+YXBwZW5kKE9vcHMsIG1fdmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKGlzU3Ryb25nKSB7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEJyYW5j
aFRlc3QzMiwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgc3VjY2Vzc0Jvb2xS
ZXN1bHRUbXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+
c2V0U3VjY2Vzc29ycyhzdWNjZXNzQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBB
cmc6OmltbSghaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICAgICAgc3VjY2Vz
c0Jsb2NrLT5hcHBlbmQoSnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3VjY2Vzc0Js
b2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmICghaW52ZXJ0KQorICAgICAgICAgICAgICAgICAgICBzdG9yZUJsb2Nr
LT5hcHBlbmQoWG9yMzIsIG1fdmFsdWUsIEFyZzo6Yml0SW1tKDEpLCBib29sUmVzdWx0VG1wLCBi
b29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzdG9yZUJs
b2NrLT5hcHBlbmQoSnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+
c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBmYWlsQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6OmltbShpbnZl
cnQpLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKEp1bXAs
IG1fdmFsdWUpOworICAgICAgICAgICAgZmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9j
ayk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1N0cm9uZykgeworICAgICAg
ICAgICAgVG1wIHRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgc3Ryb25nRmFp
bEJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkp
LCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcywgdG1wKTsKKyAgICAgICAgICAgIHN0
cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgQXJnOjpyZXNDb25kKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvKSwgdG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICAgICAgc3Ryb25n
RmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGZhaWxCbG9jaywgcmVsb29wQmxvY2spOworICAgICAg
ICB9CisjZWxzZQorI2Vycm9yICJCYWQgYXJjaGl0ZWN0dXJlIgorI2VuZGlmCisgICAgfQorICAg
IAogICAgIHZvaWQgbG93ZXIoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNv
ZGUoKSkgewpAQCAtMTk3MSwzMCArMjI4Myw1MCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBp
bmdJbnN0KG1fdmFsdWUsIG1vdmVGb3JUeXBlKG1fdmFsdWUtPnR5cGUoKSksIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1l
bW9yeSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgb3Bjb2RlID0gQWlyOjpPb3BzOworICAgICAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2Uo
KSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAobWVtb3J5LT50eXBlKCkpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNx
MzI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgSW50
NjQ6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3E2NDsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgb3Bjb2RlID0gbW92ZUZvclR5cGUobWVtb3J5LT50eXBlKCkpOworICAgICAgICAgICAg
YXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1
ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOFM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFw
cGluZ0luc3QobV92YWx1ZSwgTG9hZDhTaWduZWRFeHRlbmRUbzMyLCBtX3ZhbHVlLCBhZGRyKG1f
dmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9
IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcThTaWduZWRF
eHRlbmRUbzMyIDogTG9hZDhTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRy
YXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcCht
X3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBMb2FkOFo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9h
ZDgsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAg
QWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNl
KCkgPyBMb2FkQWNxOCA6IExvYWQ4OworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZTOiB7
Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNlNpZ25lZEV4
dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhh
c0ZlbmNlKCkgPyBMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIDogTG9hZDE2U2lnbmVkRXh0ZW5k
VG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBt
X3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2WjogewotICAgICAgICAgICAgYXBw
ZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTYsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSks
IHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTYgOiBMb2FkMTY7Cisg
ICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwg
YWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAgICBp
ZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA5Miw3ICsy
NDI0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0NoaWxsKCkpCiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKICAgICAgICAgICAgIGlm
IChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAgICBs
b3dlclg4NkRpdihEaXYpOworICAgICAgICAgICAgICAgIGFwcGVuZFg4NkRpdihEaXYpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVCgh
aXNYODYoKSB8fCBpc0Zsb2F0KG1fdmFsdWUtPnR5cGUoKSkpOwpAQCAtMjEwMyw3ICsyNDM1LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIFVEaXY6IHsKICAgICAgICAgICAgIGlmIChpc0lu
dChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAgICBsb3dlclg4
NlVEaXYoVURpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2VURpdihVRGl2KTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTIxMTcsMTMgKzI0NDksMTMg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNb2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzWDg2KCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdmFsdWUtPmlzQ2hp
bGwoKSk7Ci0gICAgICAgICAgICBsb3dlclg4NkRpdihNb2QpOworICAgICAgICAgICAgYXBwZW5k
WDg2RGl2KE1vZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIFVNb2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzWDg2KCkpOwotICAgICAg
ICAgICAgbG93ZXJYODZVRGl2KFVNb2QpOworICAgICAgICAgICAgYXBwZW5kWDg2VURpdihVTW9k
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMTYyLDEwICsyNDk0LDI0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxOb3QzMiwgTm90NjQ+KG1f
dmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQo
MSkKKyAgICAgICAgICAgICAgICAmJiBpc0F0b21pY0NBUyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bj
b2RlKCkpCisgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgw
KSkpIHsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSk7
CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUtPmNoaWxkKDApLCB0cnVlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAg
ICAgICAgIGFwcGVuZEJpbk9wPFhvcjMyLCBYb3I2NCwgWG9yRG91YmxlLCBYb3JGbG9hdCwgQ29t
bXV0YXRpdmU+KAogICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5j
aGlsZCgxKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAgYXBwZW5kVW5PcDxEZXBlbmQzMiwg
RGVwZW5kNjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogCiAgICAgICAgIGNhc2UgU2hsOiB7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hp
bGQoMSktPmlzSW50MzIoMSkpIHsKQEAgLTIyNjYsNyArMjYxMiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhcHBlbmRTdG9yZSh2
YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92
YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMjI4Nyw3ICsyNjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZFN0
b3JlKEFpcjo6U3RvcmU4LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAg
ICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMzA4LDcgKzI2NTQsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTE2LCB2YWx1ZVRv
U3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwg
dmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC0yNzg0LDYgKzMxMzAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGFwcGVu
ZChBaXI6OkVudHJ5U3dpdGNoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgY2FzZSBBdG9t
aWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLCBmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0yNzkzLDYzICszMTQ1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICB2b2lkIGxvd2VyWDg2RGl2
KEIzOjpPcGNvZGUgb3ApCi0gICAgewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAg
ICAgIFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4ID0g
VG1wKFg4NlJlZ2lzdGVyczo6ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9E
b3VibGVXb3JkOwotICAgICAgICBBaXI6Ok9wY29kZSBkaXY7Ci0gICAgICAgIHN3aXRjaCAobV92
YWx1ZS0+dHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgSW50MzI6Ci0gICAgICAgICAgICBjb252ZXJ0
VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvRG91YmxlV29yZDMyOwotICAgICAgICAgICAgZGl2
ID0gWDg2RGl2MzI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ2NDoKLSAg
ICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0Owot
ICAgICAgICAgICAgZGl2ID0gWDg2RGl2NjQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8
IG9wID09IE1vZCk7Ci0gICAgICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBv
cCA9PSBEaXYgPyBYODZSZWdpc3RlcnM6OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAg
ICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBh
cHBlbmQoY29udmVydFRvRG91YmxlV29yZCwgZWF4LCBlZHgpOwotICAgICAgICBhcHBlbmQoZGl2
LCBlYXgsIGVkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChNb3Zl
LCBUbXAocmVzdWx0KSwgdG1wKG1fdmFsdWUpKTsKLQotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BB
UkFNKG9wKTsKLSAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAg
ICB9Ci0KLSAgICB2b2lkIGxvd2VyWDg2VURpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBD
UFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVy
czo6ZWF4KTsKLSAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAg
ICAgICAgQWlyOjpPcGNvZGUgZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURp
djMyIDogWDg2VURpdjY0OwotCi0gICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVN
b2QpOwotICAgICAgICBYODZSZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gVURp
diA/IFg4NlJlZ2lzdGVyczo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBw
ZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChY
b3I2NCwgZWR4LCBlZHgpOwotICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1fdmFs
dWUtPmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1wKG1f
dmFsdWUpKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVB
Q0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlmCi0gICAgfQotCiAgICAgSW5kZXhTZXQ8VmFs
dWU+IG1fbG9ja2VkOyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQgd2lsbCBoYXZlIG5vIFRtcCBp
biBBaXIuCiAgICAgSW5kZXhNYXA8VmFsdWUsIFRtcD4gbV92YWx1ZVRvVG1wOyAvLyBUaGVzZSBh
cmUgdmFsdWVzIHRoYXQgbXVzdCBoYXZlIGEgVG1wIGluIEFpci4gV2Ugc2F5IHRoYXQgYSBWYWx1
ZSogd2l0aCBhIG5vbi1udWxsIFRtcCBpcyAicGlubmVkIi4KICAgICBJbmRleE1hcDxWYWx1ZSwg
VG1wPiBtX3BoaVRvVG1wOyAvLyBFYWNoIFBoaSBnZXRzIGl0cyBvd24gVG1wLgpAQCAtMjg2NCw3
ICszMTU5LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxWZWN0b3I8SW5zdCwgND4+IG1faW5z
dHM7CiAgICAgVmVjdG9yPEluc3Q+IG1fcHJvbG9ndWU7Ci0KKyAgICAKICAgICBCMzo6QmFzaWNC
bG9jayogbV9ibG9jazsKICAgICBib29sIG1faXNSYXJlOwogICAgIHVuc2lnbmVkIG1faW5kZXg7
CkBAIC0yODc1LDYgKzMxNzAsOCBAQCBwcml2YXRlOgogCiAgICAgUHJvY2VkdXJlJiBtX3Byb2Nl
ZHVyZTsKICAgICBDb2RlJiBtX2NvZGU7CisKKyAgICBBaXI6OkJsb2NrSW5zZXJ0aW9uU2V0IG1f
YmxvY2tJbnNlcnRpb25TZXQ7CiB9OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQsMzAgKzM0LDQ4IEBAIE1lbW9yeVZhbHVlOjp+TWVtb3J5VmFsdWUo
KQogewogfQogCitUeXBlIE1lbW9yeVZhbHVlOjphY2Nlc3NUeXBlKCkgY29uc3QKK3sKKyAgICBp
ZiAoaXNMb2FkKG9wY29kZSgpKSkKKyAgICAgICAgcmV0dXJuIHR5cGUoKTsKKyAgICAvLyBUaGlz
IGhhcHBlbnMgdG8gd29yayBmb3IgYXRvbWljcywgdG9vLiBUaGF0J3Mgd2h5IEF0b21pY1ZhbHVl
IGRvZXMgbm90IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy4KKyAgICByZXR1cm4gY2hpbGQoMCktPnR5
cGUoKTsKK30KKworQmFuayBNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuaygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGJhbmtGb3JUeXBlKGFjY2Vzc1R5cGUoKSk7Cit9CisKIHNpemVfdCBNZW1vcnlWYWx1
ZTo6YWNjZXNzQnl0ZVNpemUoKSBjb25zdAogeworICAgIHJldHVybiBieXRlcyhhY2Nlc3NXaWR0
aCgpKTsKK30KKworV2lkdGggTWVtb3J5VmFsdWU6OmxvYWRTdG9yZVdpZHRoKCkgY29uc3QKK3sK
ICAgICBzd2l0Y2ggKG9wY29kZSgpKSB7CiAgICAgY2FzZSBMb2FkOFo6CiAgICAgY2FzZSBMb2Fk
OFM6CiAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4g
V2lkdGg4OwogICAgIGNhc2UgTG9hZDE2WjoKICAgICBjYXNlIExvYWQxNlM6CiAgICAgY2FzZSBT
dG9yZTE2OgotICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgcmV0dXJuIFdpZHRoMTY7CiAgICAg
Y2FzZSBMb2FkOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZSh0eXBlKCkpOworICAgICAgICBy
ZXR1cm4gd2lkdGhGb3JUeXBlKHR5cGUoKSk7CiAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmV0
dXJuIHNpemVvZlR5cGUoY2hpbGQoMCktPnR5cGUoKSk7CisgICAgICAgIHJldHVybiB3aWR0aEZv
clR5cGUoY2hpbGQoMCktPnR5cGUoKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBX
aWR0aDg7CiAgICAgfQogfQogCiBXaWR0aCBNZW1vcnlWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25z
dAogewotICAgIHJldHVybiB3aWR0aEZvckJ5dGVzKGFjY2Vzc0J5dGVTaXplKCkpOworICAgIHJl
dHVybiBsb2FkU3RvcmVXaWR0aCgpOwogfQogCiB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShD
b21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdApAQCAtNjcsNiArODUs
OCBAQCB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImCiAgICAgaWYgKChp
c0xvYWQoKSAmJiBlZmZlY3RzKCkucmVhZHMgIT0gcmFuZ2UoKSkKICAgICAgICAgfHwgKGlzU3Rv
cmUoKSAmJiBlZmZlY3RzKCkud3JpdGVzICE9IHJhbmdlKCkpKQogICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJyYW5nZSA9ICIsIHJhbmdlKCkpOworICAgIGlmIChwaGFudG9tUmFuZ2UoKSkKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAicGhhbnRvbVJhbmdlID0gIiwgcGhhbnRvbVJhbmdlKCkp
OwogfQogCiBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CkBAIC03NCw2ICs5
NCw1OCBAQCBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAgICAgcmV0dXJu
IG5ldyBNZW1vcnlWYWx1ZSgqdGhpcyk7CiB9CiAKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQg
KGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEg
c3VmZml4IHRoYXQKKy8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCitNZW1vcnlWYWx1
ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2Rl
LCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCit7
CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29k
ZSgpKSB7CisgICAgICAgIGNhc2UgTG9hZDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoK
KyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RvcmU4OgorICAgICAgICBjYXNl
IFN0b3JlMTY6CisgICAgICAgIGNhc2UgU3RvcmU6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9
PSBWb2lkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0
aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgorTWVt
b3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMy
LCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkg
eworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBMb2FkOFo6
CisgICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQxNlo6CisgICAgICAgIGNh
c2UgTG9hZDE2UzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVz
ZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtp
bmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qg
b2Zmc2V0ID0gMCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdp
biwgdmFsdWUsIHBvaW50ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCit7CisgICAgQVNTRVJU
KGlzU3RvcmUoa2luZC5vcGNvZGUoKSkpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
IAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNNZW1vcnlWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM01lbW9yeVZhbHVlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDQ4ICsyNywxNyBA
QAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzQmFuay5oIgogI2luY2x1ZGUg
IkIzSGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsKIAotLy8gRklYTUU6IFdlIHdhbnQgdG8gYWxsb3cgZmVuY2VkIG1lbW9y
eSBhY2Nlc3NlcyBvbiBBUk0uCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyMzQ5Ci0KIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIE1lbW9yeVZhbHVlIDogcHVi
bGljIFZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkK
ICAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICBjYXNlIExv
YWQ4WjoKLSAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAg
ICAgY2FzZSBMb2FkMTZTOgotICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIGNhc2UgU3RvcmU4
OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzU3RvcmUoS2luZCBraW5k
KQotICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2Ug
U3RvcmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzTG9hZChLaW5k
IGtpbmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWNjZXB0cyhraW5kKSAmJiAhaXNTdG9yZShr
aW5kKTsKKyAgICAgICAgcmV0dXJuIGlzTWVtb3J5KGtpbmQub3Bjb2RlKCkpOwogICAgIH0KIAog
ICAgIH5NZW1vcnlWYWx1ZSgpOwpAQCAtNzgsNzYgKzQ3LDU2IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IEhlYXBSYW5nZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CiAgICAgdm9p
ZCBzZXRSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fcmFuZ2UgPSByYW5nZTsgfQor
ICAgIAorICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHJhbmdlLgorICAgIGNvbnN0IEhlYXBS
YW5nZSYgYWNjZXNzUmFuZ2UoKSBjb25zdCB7IHJldHVybiByYW5nZSgpOyB9CisgICAgdm9pZCBz
ZXRBY2Nlc3NSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IHNldFJhbmdlKHJhbmdlKTsg
fQorICAgIAorICAgIGNvbnN0IEhlYXBSYW5nZSYgZmVuY2VSYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmVuY2VSYW5nZTsgfQorICAgIHZvaWQgc2V0RmVuY2VSYW5nZShjb25zdCBIZWFwUmFuZ2Um
IHJhbmdlKSB7IG1fZmVuY2VSYW5nZSA9IHJhbmdlOyB9CisKKyAgICBib29sIGlzU3RvcmUoKSBj
b25zdCB7IHJldHVybiBpc1N0b3JlKG9wY29kZSgpKTsgfQorICAgIGJvb2wgaXNMb2FkKCkgY29u
c3QgeyByZXR1cm4gaXNMb2FkKG9wY29kZSgpKTsgfQogCi0gICAgYm9vbCBpc1N0b3JlKCkgY29u
c3QgeyByZXR1cm4gdHlwZSgpID09IFZvaWQ7IH0KLSAgICBib29sIGlzTG9hZCgpIGNvbnN0IHsg
cmV0dXJuIHR5cGUoKSAhPSBWb2lkOyB9CisgICAgYm9vbCBoYXNGZW5jZSgpIGNvbnN0IHsgcmV0
dXJuICEhZmVuY2VSYW5nZSgpOyB9CiAKKyAgICBUeXBlIGFjY2Vzc1R5cGUoKSBjb25zdDsKKyAg
ICBCYW5rIGFjY2Vzc0JhbmsoKSBjb25zdDsKICAgICBzaXplX3QgYWNjZXNzQnl0ZVNpemUoKSBj
b25zdDsKLSAgICBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0OworICAgIAorICAgIC8vIFNsaWdo
dGx5IGZhc3RlciB2ZXJzaW9uIG9mIGFjY2Vzc1dpZHRoLCBpZiB5b3Uga25vdyB0aGF0IHlvdSdy
ZSB3b3JraW5nIHdpdGggYSBsb2FkIG9yIHN0b3JlLgorICAgIFdpZHRoIGxvYWRTdG9yZVdpZHRo
KCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0Owog
CiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmlu
dFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVy
JiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZhbHVlKiBjbG9uZUltcGwo
KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJl
OwotCi0gICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4
Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAotICAgIC8vIGRl
c2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBU
eXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9
IDApCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBw
b2ludGVyKQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBN
ZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2lu
IG9yaWdpbiwgaW50MzJfdCBvZmZzZXQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAg
IDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBhcmd1bWVudHMuLi4p
CiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdl
Ojp0b3AoKSkKICAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTG9hZDoKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAgICAg
ICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAgICAgICBj
YXNlIExvYWQxNlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAg
ICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAg
IEFTU0VSVCh0eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICAvLyBVc2UgdGhpcyBmb3JtIGZv
ciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQg
aGF2ZSBhIHN1ZmZpeCB0aGF0CisgICAgLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4K
KyAgICBNZW1vcnlWYWx1ZShLaW5kLCBUeXBlLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQz
Ml90IG9mZnNldCA9IDApOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUg
dGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBP
cmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAg
ICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKLSAg
ICB7Ci0gICAgfQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIs
IGludDMyX3Qgb2Zmc2V0ID0gMCk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBzdG9yZXMu
Ci0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUs
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUoQ2hl
Y2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKLSAgICAgICAg
LCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQot
ICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRj
aCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAg
ICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHZhbHVl
LCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKTsKKyAgICAKICAgICBpbnQzMl90
IG1fb2Zmc2V0IHsgMCB9OwotICAgIEhlYXBSYW5nZSBtX3JhbmdlOworICAgIEhlYXBSYW5nZSBt
X3JhbmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSBtX2ZlbmNlUmFuZ2Ug
eyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzVHlwZS5oIgorI2luY2x1
ZGUgIkIzV2lkdGguaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAKQEAgLTgyLDcgKzgzLDYgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90
IHsKICAgICBNb2QsIC8vIEFsbCBiZXRzIGFyZSBvZmYgYXMgdG8gd2hhdCB3aWxsIGhhcHBlbiB3
aGVuIHlvdSBleGVjdXRlIHRoaXMgZm9yIC0yXjMxJS0xIGFuZCB4JTAuCiAgICAgVU1vZCwKIAot
CiAgICAgLy8gUG9seW1vcnBoaWMgbmVnYXRpb24uIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdGhp
cyBmb3IgZmxvYXRpbmcgcG9pbnQsIHNpbmNlIGludGVnZXIgbmVnYXRpb24KICAgICAvLyBpcyBl
eGFjdGx5IGxpa2UgU3ViKDAsIHgpLiBCdXQgdGhhdCdzIG5vdCB0cnVlIGZvciBmbG9hdGluZyBw
b2ludC4gU3ViKDAsIDApIGlzIDAsIHdoaWxlCiAgICAgLy8gTmVnKDApIGlzIC0wLiBBbHNvLCB3
ZSBjYW5vbmljYWxpemUgU3ViKDAsIHgpIGludG8gTmVnKHgpIGluIGNhc2Ugb2YgaW50ZWdlcnMu
CkBAIC0xNjIsNiArMTYyLDEwNSBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIFN0b3Jl
MTYsCiAgICAgLy8gVGhpcyBpcyBhIHBvbHltb3JwaGljIHN0b3JlIGZvciBJbnQzMiwgSW50NjQs
IEZsb2F0LCBhbmQgRG91YmxlLgogICAgIFN0b3JlLAorICAgIAorICAgIC8vIEF0b21pYyBjb21w
YXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4uIE1heSBjaG9vc2UgdG8gZG8gbm90
aGluZyBhbmQgcmV0dXJuIGZhbHNlLiBZb3UgY2FuCisgICAgLy8gdXN1YWxseSBhc3N1bWUgdGhh
dCB0aGlzIGlzIGZhc3RlciBhbmQgcmVzdWx0cyBpbiBsZXNzIGNvZGUgdGhhbiBBdG9taWNTdHJv
bmdDQVMsIHRob3VnaCB0aGF0J3MKKyAgICAvLyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSBvbiBJbnRl
bCwgaWYgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIGRvZXMgaXRzIGpvYi4gSW1hZ2luZSB0aGF0IHRo
aXMgb3Bjb2RlIGlzCisgICAgLy8gYXMgaWYgeW91IGRpZCB0aGlzIGF0b21pY2FsbHk6CisgICAg
Ly8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8vIGJvb2wgQXRvbWljV2Vha0NB
UyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7CisgICAgLy8g
ICAgIGlmICghcmFuZCgpKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBSZWFsIHdv
cmxkIGV4YW1wbGUgb2YgdGhpczogY29udGV4dCBzd2l0Y2ggb24gQVJNIHdoaWxlIGRvaW5nIENB
Uy4KKyAgICAvLyAgICAgaWYgKCpwdHIgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAvLyAgICAgKnB0ciA9IG5ld1ZhbHVlOworICAgIC8vICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgYWxsIGF0b21p
Y3MgcHV0IHRoZSBwb2ludGVyIGxhc3QgdG8gYmUgY29uc2lzdGVudCB3aXRoIGhvdyBsb2FkcyBh
bmQgc3RvcmVzIHdvcmsuIFRoaXMKKyAgICAvLyBpcyBhIGdvb2Z5IHRyYWRpdGlvbiwgYnV0IGl0
J3MgaGFybWxlc3MsIGFuZCBiZXR0ZXIgdGhhbiBiZWluZyBpbmNvbnNpc3RlbnQuCisgICAgLy8K
KyAgICAvLyBOb3RlIHRoYXQgd2VhayBDQVMgaGFzIG5vIGZlbmNpbmcgZ3VhcmFudGVlcyB3aGVu
IGl0IGZhaWxzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZworICAgIC8vIHRyYW5zZm9y
bWF0aW9uIGlzIGFsd2F5cyB2YWxpZDoKKyAgICAvLworICAgIC8vIEJlZm9yZToKKyAgICAvLwor
ICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkK
KyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAg
Ly8KKyAgICAvLyBBZnRlcjoKKyAgICAvLworICAgIC8vICAgICAgICAgQnJhbmNoKEVxdWFsKExv
YWQocHRyKSwgZXhwZWN0ZWQpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I2F0dGVt
cHQsIEVsc2U6I2ZhaWwKKyAgICAvLyAgICAgQkIjYXR0ZW1wdDoKKyAgICAvLyAgICAgICAgIEJy
YW5jaChBdG9taWNXZWFrQ0FTKGV4cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3Vj
Y2Vzc29yczogVGhlbjojc3VjY2VzcywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQm90aCBr
aW5kcyBvZiBDQVMgZm9yIG5vbi1jYW5vbmljYWwgd2lkdGhzIChXaWR0aDggYW5kIFdpZHRoMTYp
IGlnbm9yZSB0aGUgaXJyZWxldmFudCBiaXRzIG9mIHRoZQorICAgIC8vIGlucHV0LgorICAgIEF0
b21pY1dlYWtDQVMsCisgICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCBy
ZXR1cm5zIHRoZSBvbGQgdmFsdWUuIERvZXMgbm90IGhhdmUgdGhlIG5vbmRldGVybWluaXNtIG9m
IFdlYWtDQVMuCisgICAgLy8gVGhpcyBpcyBhIGJpdCBtb3JlIGNvZGUgYW5kIGEgYml0IHNsb3dl
ciBpbiBzb21lIGNhc2VzLCB0aG91Z2ggbm90IGJ5IGEgbG90LiBJbWFnaW5lIHRoYXQgdGhpcwor
ICAgIC8vIG9wY29kZSBpcyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAvLwor
ICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gVCBBdG9taWNTdHJvbmdDQVMoVCBl
eHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBUKiBwdHIpCisgICAgLy8geworICAgIC8vICAgICBU
IG9sZFZhbHVlID0gKnB0cjsKKyAgICAvLyAgICAgaWYgKG9sZFZhbHVlID09IGV4cGVjdGVkVmFs
dWUpCisgICAgLy8gICAgICAgICAqcHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVybiBv
bGRWYWx1ZQorICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBBdG9taWNXZWFrQ0FT
IGFuZCBBdG9taWNTdHJvbmdDQVMgc29ydCBvZiBoYXZlIHRoaXMga2luZCBvZiBlcXVpdmFsZW5j
ZToKKyAgICAvLworICAgIC8vIEF0b21pY1dlYWtDQVMoQGV4cCwgQG5ldywgQHB0cikgPT0gRXF1
YWwoQXRvbWljU3Ryb25nQ0FTKEBleHAsIEBuZXcsIEBwdHIpLCBAZXhwKQorICAgIC8vCisgICAg
Ly8gQXNzdW1pbmcgdGhhdCB0aGUgV2Vha0NBUyBkb2VzIG5vdCBzcHVyaW91c2x5IGZhaWwsIG9m
IGNvdXJzZS4KKyAgICBBdG9taWNTdHJvbmdDQVMsCisgICAgCisgICAgLy8gQXRvbWljYWxseSBf
X18gYSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybiB0aGUgb2xkIHZhbHVlLiBTeW50YXg6Cisg
ICAgLy8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNYY2hnX19fKEBvcGVyYW5kLCBAcHRyKQor
ICAgIC8vCisgICAgLy8gRm9yIG5vbi1jYW5vbmljYWwgd2lkdGhzIChXaWR0aDggYW5kIFdpZHRo
MTYpLCB0aGVzZSByZXR1cm4gc2lnbi1leHRlbmRlZCByZXN1bHRzIGFuZCBpZ25vcmUgdGhlCisg
ICAgLy8gaXJyZWxldmFudCBiaXRzIG9mIHRoZWlyIGlucHV0cy4KKyAgICBBdG9taWNYY2hnQWRk
LAorICAgIEF0b21pY1hjaGdBbmQsCisgICAgQXRvbWljWGNoZ09yLAorICAgIEF0b21pY1hjaGdT
dWIsCisgICAgQXRvbWljWGNoZ1hvciwKKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IGV4Y2hhbmdl
IGEgdmFsdWUgd2l0aCBhIG1lbW9yeSBsb2NhdGlvbi4gU3ludGF4OgorICAgIC8vCisgICAgLy8g
QG9sZFZhbHVlID0gQXRvbWljWGNoZyhAbmV3VmFsdWUsIEBwdHIpCisgICAgQXRvbWljWGNoZywK
KyAgICAKKyAgICAvLyBJbnRyb2R1Y2UgYW4gaW52aXNpYmxlIGRlcGVuZGVuY3kgZm9yIGJsb2Nr
aW5nIG1vdGlvbiBvZiBsb2FkcyB3aXRoIHJlc3BlY3QgdG8gZWFjaCBvdGhlci4gU3ludGF4Ogor
ICAgIC8vCisgICAgLy8gQHJlc3VsdCA9IERlcGVuZChAcGhhbnRvbSkKKyAgICAvLworICAgIC8v
IFRoaXMgaXMgZXZlbnR1YWxseSBjb2RlZ2VuZXJhdGVkIHRvIGhhdmUgbG9jYWwgc2VtYW50aWNz
IGFzIGlmIHdlIGRpZDoKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSAkMAorICAgIC8vCisgICAg
Ly8gQnV0IGl0IGVuc3VyZXMgdGhhdCB0aGUgdXNlcnMgb2YgQHJlc3VsdCBjYW5ub3QgZXhlY3V0
ZSB1bnRpbCBAcGhhbnRvbSBpcyBjb21wdXRlZC4KKyAgICAvLworICAgIC8vIFRoZSBjb21waWxl
ciBpcyBub3QgYWxsb3dlZCB0byByZWFzb24gYWJvdXQgdGhlIGZhY3QgdGhhdCBEZXBlbmQgY29k
ZWdlbmVyYXRlcyB0aGlzIHdheS4gQW55IGtpbmQKKyAgICAvLyBvZiB0cmFuc2Zvcm1hdGlvbiBv
ciBhbmFseXNpcyB0aGF0IHJlbGllcyBvbiB0aGUgaW5zaWdodCB0aGF0IERlcGVuZCBpcyByZWFs
bHkgemVybyBpcyB1bnNvdW5kLAorICAgIC8vIGJlY2F1c2UgaXQgdW5sb2NrcyByZW9yZGVyaW5n
IG9mIHVzZXJzIG9mIEByZXN1bHQgYW5kIEBwaGFudG9tLgorICAgIC8vCisgICAgLy8gT24gWDg2
LCB0aGlzIGlzIGxvd2VyZWQgdG8gYSBsb2FkLWxvYWQgZmVuY2UgYW5kIEByZXN1bHQgdXNlcyBA
cGhhbnRvbSBkaXJlY3RseS4KKyAgICAvLworICAgIC8vIE9uIEFSTSwgdGhpcyBpcyBsb3dlcmVk
IGFzIGlmIGxpa2U6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gQml0WG9yKEBwaGFudG9tLCBA
cGhhbnRvbSkKKyAgICAvLworICAgIC8vIEV4Y2VwdCB0aGF0IHRoZSBjb21waWxlciBuZXZlciBn
ZXRzIGFuIG9wcG9ydHVuaXR5IHRvIHNpbXBsaWZ5IG91dCB0aGUgQml0WG9yLgorICAgIERlcGVu
ZCwKIAogICAgIC8vIFRoaXMgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBhY3R1YWwgYWRkcmVzcyBv
ZiBhIFdhc20gbWVtb3J5IG9wZXJhdGlvbi4gSXQgdGFrZXMgYW4gSW50UHRyCiAgICAgLy8gYW5k
IGEgcGlubmVkIHJlZ2lzdGVyIHRoZW4gY29tcHV0ZXMgdGhlIGFwcHJvcHJpYXRlIEludFB0ciBh
ZGRyZXNzLiBGb3IgdGhlIHVzZS1jYXNlIG9mCkBAIC0zMDEsNiArNDAwLDExMCBAQCBpbmxpbmUg
Ym9vbCBpc0RlZmluaXRlbHlUZXJtaW5hbChPcGNvZGUgCiAgICAgfQogfQogCitpbmxpbmUgYm9v
bCBpc0xvYWQoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNh
c2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNl
IExvYWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1N0
b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIFN0
b3JlODoKKyAgICBjYXNlIFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwor
aW5saW5lIGJvb2wgaXNMb2FkU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9w
Y29kZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9h
ZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgU3RvcmU4
OgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxp
bmUgYm9vbCBpc0F0b21pYyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7
CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAg
IGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBB
dG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNo
Z1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlz
QXRvbWljQ0FTKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBj
YXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9
CisKK2lubGluZSBib29sIGlzQXRvbWljWGNoZyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRj
aCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNo
Z0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6Cisg
ICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KworaW5saW5lIGJvb2wgaXNNZW1vcnlBY2Nlc3MoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICByZXR1
cm4gaXNBdG9taWMob3Bjb2RlKSB8fCBpc0xvYWRTdG9yZShvcGNvZGUpOworfQorCitpbmxpbmUg
T3Bjb2RlIHNpZ25FeHRlbmRPcGNvZGUoV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0
aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgICAgICByZXR1cm4gU0V4dDg7CisgICAgY2FzZSBX
aWR0aDE2OgorICAgICAgICByZXR1cm4gU0V4dDE2OworICAgIGRlZmF1bHQ6CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBPb3BzOworICAgIH0K
K30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDIsNiArMjAyLDggQEAgdm9pZCBQcm9jZWR1cmU6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgYwogICAgICAgICB9CiAgICAgICAgIGRhdGFMb2coIiAgICAiLCBkZWVwRHVtcCgqdGhp
cywgdmFsdWUpLCAiXG4iKTsKICAgICB9CisgICAgaWYgKGhhc1F1aXJrcygpKQorICAgICAgICBv
dXQucHJpbnQoIkhhcyBRdWlya3M6IFRydWVcbiIpOwogICAgIGlmICh2YXJpYWJsZXMoKS5zaXpl
KCkpIHsKICAgICAgICAgb3V0LnByaW50KCJWYXJpYWJsZXM6XG4iKTsKICAgICAgICAgZm9yIChW
YXJpYWJsZSogdmFyaWFibGUgOiB2YXJpYWJsZXMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1Byb2NlZHVyZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQcm9jZWR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw3IEBA
IHB1YmxpYzoKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoT3JpZ2luLCBUeXBlLCBpbnQ2NF90
IHZhbHVlKTsKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoVmFsdWUqLCBpbnQ2NF90IHZhbHVl
KTsKIAorICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAg
VmFsdWUqIGFkZEJvdHRvbShPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBhZGRCb3R0b20oVmFs
dWUqKTsKIApAQCAtMTk1LDYgKzE5NiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gYWxpdmUuIEdyZWF0
IGZvciBjb21waWxlci1nZW5lcmF0ZWQgZGF0YSBzZWN0aW9ucywgbGlrZSBzd2l0Y2gganVtcCB0
YWJsZXMgYW5kIGNvbnN0YW50IHBvb2xzLgogICAgIC8vIFRoaXMgcmV0dXJucyBtZW1vcnkgdGhh
dCBoYXMgYmVlbiB6ZXJvLWluaXRpYWxpemVkLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQq
IGFkZERhdGFTZWN0aW9uKHNpemVfdCk7CisgICAgCisgICAgLy8gU29tZSBvcGVyYXRpb25zIGFy
ZSBzcGVjaWZpZWQgaW4gQjMgSVIgdG8gYmVoYXZlIG9uZSB3YXkgYnV0IG9uIHRoaXMgZ2l2ZW4g
Q1BVIHRoZXkgYmVoYXZlIGEKKyAgICAvLyBkaWZmZXJlbnQgd2F5LiBXaGVuIHRydWUsIHRob3Nl
IEIzIElSIG9wcyBzd2l0Y2ggdG8gYmVoYXZpbmcgdGhlIENQVSB3YXksIGFuZCB0aGUgb3B0aW1p
emVyIG1heQorICAgIC8vIHN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2YgaXQuCisgICAgYm9vbCBo
YXNRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX2hhc1F1aXJrczsgfQorICAgIHZvaWQgc2V0SGFz
UXVpcmtzKGJvb2wgdmFsdWUpIHsgbV9oYXNRdWlya3MgPSB2YWx1ZTsgfQogCiAgICAgT3BhcXVl
Qnlwcm9kdWN0cyYgYnlwcm9kdWN0cygpIHsgcmV0dXJuICptX2J5cHJvZHVjdHM7IH0KIApAQCAt
MjUyLDYgKzI1OSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChQcmlu
dFN0cmVhbSYsIE9yaWdpbik+PiBtX29yaWdpblByaW50ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9m
cm9udGVuZERhdGE7CiAgICAgUENUb09yaWdpbk1hcCBtX3BjVG9PcmlnaW5NYXA7CisgICAgYm9v
bCBtX2hhc1F1aXJrcyB7IGZhbHNlIH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0
cmVuZ3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5NSw2ICsxMjk1LDE2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFtX3Byb2MuaGFzUXVpcmtzKCkp
IHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNFeHQ4KEF0b21pY1hjaGdfX18pCisg
ICAgICAgICAgICAgICAgLy8gSW50byB0aGlzOiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAg
ICAgaWYgKGlzQXRvbWljWGNoZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAg
ICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+b3Bl
cmF0aW9uV2lkdGgoKSA9PSBXaWR0aDgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdp
dGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgU0V4dDE2OgpAQCAtMTM0Myw2ICsxMzUzLDE2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCFtX3Byb2MuaGFzUXVpcmtzKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBUdXJuIHRoaXM6IFNFeHQxNihBdG9taWNYY2hnX19fKQorICAgICAgICAgICAgICAg
IC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXworICAgICAgICAgICAgICAgIGlmIChpc0F0b21p
Y1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAgICAgICAm
JiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFsdWU+KCktPm9wZXJhdGlvbldpZHRoKCkg
PT0gV2lkdGgxNikgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aElkZW50aXR5KG1f
dmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBTRXh0MzI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw2ICszNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBw
b2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0Fj
Y2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIExv
YWQ6CkBAIC0zNTMsNiArMzU0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgp
ICE9IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5j
ZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFN0b3JlODoKQEAgLTM2Miw2
ICszNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxk
KDApLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZv
aWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1
ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFN0b3JlOgpAQCAtMzY5LDggKzM3Miw0
OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVu
KCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAg
ICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDAp
LT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgy
KS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3Rh
Y2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5k
KCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5udW1DaGlsZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgp
ID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50
ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9t
aWModmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgor
ICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgY2FzZSBBdG9taWNY
Y2hnT3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGdYb3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9
PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVy
VHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWlj
KHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOgorICAgICAgICAg
ICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09
IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5
cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2FzbUFkZHJlc3M6
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCks
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNo
aWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKQEAgLTUzNyw2ICs1ODEsMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHZv
aWQgdmFsaWRhdGVGZW5jZShWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBNZW1vcnlWYWx1
ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICBpZiAobWVtb3J5
LT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgVkFMSURBVEUobWVtb3J0eS0+YWNjZXNzQmFuaygp
ID09IEdQLCAoIkZlbmNlIGF0ICIsICptZW1vcnkpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB2
YWxpZGF0ZUF0b21pYyhWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSog
YXRvbWljID0gdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAKKyAgICAgICAgVkFM
SURBVEUoYmVzdFR5cGUoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSA9PSBhdG9taWMtPm9wZXJh
dGlvblR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICB9CiAKICAgICB2b2lkIHZhbGlkYXRl
U3RhY2tBY2Nlc3MoVmFsdWUqIHZhbHVlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYgKzUxMCw3IEBAIGJvb2wg
VmFsdWU6OnJldHVybnNCb29sKCkgY29uc3QKICAgICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgY2Fz
ZSBCZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKKyAgICBjYXNlIEF0b21p
Y1dlYWtDQVM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgUGhpOgogICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBzdG9yeSBoZXJlLgpAQCAtNTg5LDYgKzU5MCw3IEBA
IEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAg
ICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgY2FzZSBTZWxlY3Q6CisgICAgY2FzZSBEZXBl
bmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTYw
MCwxNiArNjAyLDQ0IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2Ug
TG9hZDhTOgogICAgIGNhc2UgTG9hZDE2WjoKICAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBM
b2FkOgotICAgICAgICByZXN1bHQucmVhZHMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsK
KyAgICBjYXNlIExvYWQ6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9y
eVZhbHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAg
ICAgIGlmIChtZW1vcnktPnBoYW50b21SYW5nZSgpKSB7CisgICAgICAgICAgICByZXN1bHQud3Jp
dGVzID0gbWVtb3J5LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9
IHRydWU7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVl
OwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBTdG9yZTg6CiAgICAgY2FzZSBTdG9y
ZTE2OgotICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJlc3VsdC53cml0ZXMgPSBhczxNZW1vcnlW
YWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIFN0b3JlOiB7CisgICAgICAgIE1lbW9yeVZhbHVl
KiBtZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1l
bW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+cGhhbnRvbVJhbmdlKCkpIHsKKyAg
ICAgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cGhhbnRvbVJhbmdlKCk7CisgICAgICAg
ICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC5jb250
cm9sRGVwZW5kZW50ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQXRv
bWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hj
aGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgor
ICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2Fz
ZSBBdG9taWNYY2hnOiB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlW
YWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5yYW5nZSgpIHwgbWVtb3J5
LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2Uo
KSB8IG1lbW9ydHktPnBoYW50b21SYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5waGFudG9t
UmFuZ2UoKSkKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJlc3Vs
dC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNh
c2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNjE3LDE4ICs2NDcsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkg
Y29uc3QKICAgICAgICAgY29uc3QgRmVuY2VWYWx1ZSogZmVuY2UgPSBhczxGZW5jZVZhbHVlPigp
OwogICAgICAgICByZXN1bHQucmVhZHMgPSBmZW5jZS0+cmVhZDsKICAgICAgICAgcmVzdWx0Lndy
aXRlcyA9IGZlbmNlLT53cml0ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIFByZXZlbnQga2lsbGlu
ZyBvZiBmZW5jZXMgdGhhdCBjbGFpbSBub3QgdG8gd3JpdGUgYW55dGhpbmcuIEl0J3MgYSBiaXQg
d2VpcmQgdGhhdCB3ZSB1c2UKLSAgICAgICAgLy8gbG9jYWwgc3RhdGUgYXMgdGhlIHdheSB0byBk
byB0aGlzLCBidXQgaXQgaGFwcGVucyB0byB3b3JrOiB3ZSBtdXN0IGFzc3VtZSB0aGF0IHdlIGNh
bm5vdAotICAgICAgICAvLyBraWxsIHdyaXRlc0xvY2FsU3RhdGUgdW5sZXNzIHdlIHVuZGVyc3Rh
bmRzIGV4YWN0bHkgd2hhdCB0aGUgaW5zdHJ1Y3Rpb24gaXMgZG9pbmcgKGxpa2UKLSAgICAgICAg
Ly8gdGhlIHdheSB0aGF0IGZpeFNTQSB1bmRlcnN0YW5kcyBTZXQvR2V0IGFuZCB0aGUgd2F5IHRo
YXQgcmVkdWNlU3RyZW5ndGggYW5kIG90aGVycwotICAgICAgICAvLyB1bmRlcnN0YW5kIFVwc2ls
b24pLiBUaGlzIHdvdWxkIG9ubHkgYmVjb21lIGEgcHJvYmxlbSBpZiB3ZSBoYWQgc29tZSBhbmFs
eXNpcyB0aGF0IHdhcwotICAgICAgICAvLyBsb29raW5nIHRvIHVzZSB0aGUgd3JpdGVzTG9jYWxT
dGF0ZSBiaXQgdG8gaW52YWxpZGF0ZSBhIENTRSBvdmVyIGxvY2FsIHN0YXRlIG9wZXJhdGlvbnMu
Ci0gICAgICAgIC8vIFRoZW4gYSBGZW5jZSB3b3VsZCBsb29rIGJsb2NrLCBzYXksIHRoZSBlbGlt
aW5hdGlvbiBvZiBhIHJlZHVuZGFudCBHZXQuIEJ1dCBpdCBsaWtlCi0gICAgICAgIC8vIHRoYXQn
cyBub3QgYXQgYWxsIGhvdyBvdXIgb3B0aW1pemF0aW9ucyBmb3IgU2V0L0dldC9VcHNpbG9uL1Bo
aSB3b3JrIC0gdGhleSBncm9rIHRoZWlyCi0gICAgICAgIC8vIG9wZXJhdGlvbnMgZGVlcGx5IGVu
b3VnaCB0aGF0IHRoZXkgaGF2ZSBubyBuZWVkIHRvIGNoZWNrIHRoaXMgYml0IC0gc28gdGhpcyBj
aGVhdCBpcwotICAgICAgICAvLyBmaW5lLgotICAgICAgICByZXN1bHQud3JpdGVzTG9jYWxTdGF0
ZSA9IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIENDYWxsOgpAQCAtNjk0LDYgKzcxMyw3IEBAIFZhbHVlS2V5IFZhbHVl
OjprZXkoKSBjb25zdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAg
ICBjYXNlIE5lZzoKKyAgICBjYXNlIERlcGVuZDoKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KGtp
bmQoKSwgdHlwZSgpLCBjaGlsZCgwKSk7CiAgICAgY2FzZSBBZGQ6CiAgICAgY2FzZSBTdWI6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2
ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgLy8gdmFsdWVzIHdpdGggSWRlbnRpdGllcyBvbiBib3R0
b20gY29uc3RhbnRzLiBGb3IgdGhpcyByZWFzb24sIHRoaXMgdGFrZXMgYSBjYWxsYmFjayB0aGF0
IGlzCiAgICAgLy8gcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGJvdHRvbXMuIFRoZXJlJ3MgYSB1
dGlsaXR5IGZvciB0aGlzLCBzZWUgQjNCb3R0b21Qcm92aWRlci5oLiBZb3UKICAgICAvLyBjYW4g
YWxzbyBhY2Nlc3MgdGhhdCB1dGlsaXR5IHVzaW5nIHJlcGxhY2VXaXRoQm90dG9tKEluc2VydGlv
blNldCYsIHNpemVfdCkuCisgICAgLy8KKyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJv
dHRvbSBpcyB6ZXJvLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJvdHRvbVByb3ZpZGVyPgogICAg
IHZvaWQgcmVwbGFjZVdpdGhCb3R0b20oY29uc3QgQm90dG9tUHJvdmlkZXImKTsKICAgICAKQEAg
LTMyMSw2ICszMjMsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElUb0Y6CiAgICAgICAgIGNh
c2UgQml0d2lzZUNhc3Q6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIERlcGVu
ZDoKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9IDEpKQogICAgICAgICAgICAg
ICAgIGJhZEtpbmQoa2luZCwgbnVtQXJncyk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsMzggQEAKIAogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsKKworVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRo
KQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICBjYXNlIFdp
ZHRoMTY6CisgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAg
ICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJldHVybiBJbnQzMjsKKyAgICAgICAgY2FzZSBGUDoK
KyAgICAgICAgICAgIHJldHVybiBGbG9hdDsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICBjYXNlIFdpZHRo
NjQ6CisgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNlIEdQOgorICAgICAgICAg
ICAgcmV0dXJuIEludDY0OworICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIERv
dWJsZTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gVm9pZDsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gVm9pZDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisK
IG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
SlNDOjpCMzo6V2lkdGggd2lkdGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNX
aWR0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDE4IEBAIGlubGluZSBXaWR0aCB3aWR0aEZvclR5
cGUoVHlwZSB0eXBlKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitpbmxpbmUgV2lk
dGggY2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgpCit7CisgICAgcmV0dXJuIHN0ZDo6bWF4KFdp
ZHRoMzIsIHdpZHRoKTsKK30KKworaW5saW5lIFdpZHRoIGlzQ2Fub25pY2FsV2lkdGgoV2lkdGgg
d2lkdGgpCit7CisgICAgcmV0dXJuIHdpZHRoID49IFdpZHRoMzI7Cit9CisKK1R5cGUgYmVzdFR5
cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIGlubGluZSBXaWR0aCBjb25zZXJ2YXRpdmVX
aWR0aChCYW5rIGJhbmspCiB7CiAgICAgcmV0dXJuIGJhbmsgPT0gR1AgPyBwb2ludGVyV2lkdGgo
KSA6IFdpZHRoNjQ7CkBAIC05Myw2ICsxMDUsMjAgQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yQnl0
ZXModW5zaWduZWQgYnl0ZQogICAgIH0KIH0KIAoraW5saW5lIHVpbnQ2NF90IG1hc2soV2lkdGgg
d2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgICAg
ICByZXR1cm4gMHgwMDAwMDAwMDAwMDAwMGZmbGx1OworICAgIGNhc2UgV2lkdGgxNjoKKyAgICAg
ICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAwZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoMzI6CisgICAg
ICAgIHJldHVybiAweDAwMDAwMDAwZmZmZmZmZmZsbHU7CisgICAgY2FzZSBXaWR0aDY0OgorICAg
ICAgICByZXR1cm4gMHhmZmZmZmZmZmZmZmZmZmZmbGx1OworICAgIH0KK30KKwogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQXJnLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAy
LDcgQEAgdW5zaWduZWQgQXJnOjpqc0hhc2goKSBjb25zdAogICAgIGNhc2UgUmVsQ29uZDoKICAg
ICBjYXNlIFJlc0NvbmQ6CiAgICAgY2FzZSBEb3VibGVDb25kOgorICAgIGNhc2UgU3RhdHVzQ29u
ZDoKICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fb2Zmc2V0KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODIsNiArMTgzLDkgQEAgdm9p
ZCBBcmc6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNlIERvdWJsZUNvbmQ6
CiAgICAgICAgIG91dC5wcmludChhc0RvdWJsZUNvbmRpdGlvbigpKTsKICAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgU3RhdHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KGFzU3RhdHVzQ29uZGl0
aW9uKCkpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBvdXQu
cHJpbnQocG9pbnRlckR1bXAoc3BlY2lhbCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI0MSw2
ICsyNDUsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAg
Y2FzZSBBcmc6OkRvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5wcmludCgiRG91YmxlQ29uZCIpOwog
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlN0YXR1c0NvbmQ6CisgICAgICAgIG91dC5w
cmludCgiU3RhdHVzQ29uZCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNwZWNp
YWw6CiAgICAgICAgIG91dC5wcmludCgiU3BlY2lhbCIpOwogICAgICAgICByZXR1cm47CkBAIC0y
ODUsNiArMjkyLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwog
ICAgIGNhc2UgQXJnOjpFYXJseURlZjoKICAgICAgICAgb3V0LnByaW50KCJFYXJseURlZiIpOwog
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKKyAgICAgICAgb3V0LnBy
aW50KCJFYXJseVpEZWYiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpTY3JhdGNo
OgogICAgICAgICBvdXQucHJpbnQoIlNjcmF0Y2giKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04
Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVsQ29uZCwKICAgICAgICAgUmVzQ29uZCwK
ICAgICAgICAgRG91YmxlQ29uZCwKKyAgICAgICAgU3RhdHVzQ29uZCwKICAgICAgICAgU3BlY2lh
bCwKICAgICAgICAgV2lkdGhBcmcKICAgICB9OwpAQCAtMTUxLDYgKzE1Miw4IEBAIHB1YmxpYzoK
ICAgICAgICAgLy8gYXMgVXNlIGhhcyB1bmRlZmluZWQgYmVoYXZpb3I6IHRoZSB1c2UgbWF5IGhh
cHBlbiBiZWZvcmUgdGhlIGRlZiwgb3IgaXQgbWF5IGhhcHBlbiBhZnRlcgogICAgICAgICAvLyBp
dC4KICAgICAgICAgRWFybHlEZWYsCisgICAgICAgICAgICAKKyAgICAgICAgRWFybHlaRGVmLAog
CiAgICAgICAgIC8vIFNvbWUgaW5zdHJ1Y3Rpb25zIG5lZWQgYSBzY3JhdGNoIHJlZ2lzdGVyLiBX
ZSBtb2RlbCB0aGlzIGJ5IHNheWluZyB0aGF0IHRoZSB0ZW1wb3JhcnkgaXMKICAgICAgICAgLy8g
ZGVmaW5lZCBlYXJseSBhbmQgdXNlZCBsYXRlLiBUaGlzIHJvbGUgaW1wbGllcyB0aGF0LgpAQCAt
MTg2LDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNl
IFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVm
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtMjA2LDYgKzIxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBV
c2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6Cisg
ICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI4LDYgKzIzMyw3IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAg
ICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAg
cmV0dXJuIHJvbGU7CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICAgICAgcmV0dXJuIENvbGRV
c2U7CkBAIC0yNTMsNiArMjU5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNl
OgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAg
IGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjc0LDYgKzI4MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2Ug
RWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk0LDYg
KzMwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZVpE
ZWY6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAg
ICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpA
QCAtMzE1LDYgKzMyNCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAg
Y2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CkBAIC0zMzAsNiArMzQwLDcgQEAgcHVibGljOgogICAgICAgICBj
YXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAgY2FzZSBFYXJseURl
ZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAg
ICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1OCw2
ICszNjksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNh
c2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtNTMzLDYgKzU0NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIEFyZyBzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVy
OjpTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQorICAgIHsKKyAgICAgICAgQXJnIHJlc3VsdDsK
KyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFN0YXR1c0NvbmQ7CisgICAgICAgIHJlc3VsdC5tX29m
ZnNldCA9IGNvbmRpdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBz
dGF0aWMgQXJnIHNwZWNpYWwoQWlyOjpTcGVjaWFsKiBzcGVjaWFsKQogICAgIHsKICAgICAgICAg
QXJnIHJlc3VsdDsKQEAgLTY1OCwxMiArNjc4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGtpbmQoKSA9PSBEb3VibGVDb25kOwogICAgIH0KIAorICAgIGJvb2wgaXNTdGF0dXNDb25kKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0gU3RhdHVzQ29uZDsKKyAgICB9
CisKICAgICBib29sIGlzQ29uZGl0aW9uKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
a2luZCgpKSB7CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgog
ICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtODUxLDYgKzg3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25k
OgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAg
ICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2Ug
V2lkdGhBcmc6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg3Miw2ICs4OTksNyBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAg
ICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAg
Y2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICBjYXNlIEludmFs
aWQ6CkBAIC0xMDU4LDYgKzEwODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoK
ICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAg
IGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdp
ZHRoQXJnOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTc3LDYgKzEyMDYsMTIgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZUNvbmRpdGlvbj4obV9vZmZzZXQpOwogICAgIH0KICAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
U3RhdHVzQ29uZGl0aW9uIGFzU3RhdHVzQ29uZGl0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChpc1N0YXR1c0NvbmQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNy
b0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uPihtX29mZnNldCk7CisgICAgfQorICAgIAogICAg
IC8vIFRlbGxzIHlvdSBpZiB0aGUgQXJnIGlzIGludmVydGlibGUuIE9ubHkgY29uZGl0aW9uIGFy
Z3VtZW50cyBhcmUgaW52ZXJ0aWJsZSwgYW5kIGV2ZW4gZm9yIHRob3NlLCB0aGVyZQogICAgIC8v
IGFyZSBhIGZldyBleGNlcHRpb25zIC0gbm90YWJseSBPdmVyZmxvdyBhbmQgU2lnbmVkLgogICAg
IGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3QKQEAgLTExODQsNiArMTIxOSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAg
ICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXI6OmlzSW52ZXJ0aWJsZShhc1Jlc3VsdENvbmRpdGlvbigpKTsKQEAgLTEy
MDQsNiArMTI0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiByZXNDb25kKE1hY3Jv
QXNzZW1ibGVyOjppbnZlcnQoYXNSZXN1bHRDb25kaXRpb24oKSkpOwogICAgICAgICBjYXNlIERv
dWJsZUNvbmQ6CiAgICAgICAgICAgICByZXR1cm4gZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6
aW52ZXJ0KGFzRG91YmxlQ29uZGl0aW9uKCkpKTsKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgor
ICAgICAgICAgICAgcmV0dXJuIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1N0
YXR1c0NvbmRpdGlvbigpKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlCiAKIGNvbnN0IGNoYXIqIGNvbnN0IEJhc2ljQmxvY2s6
OmR1bXBQcmVmaXggPSAiIyI7CiAKK3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhCYXNp
Y0Jsb2NrKiBibG9jaykKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVzaXplKDEpOworICAgIG1fc3Vj
Y2Vzc29yc1swXSA9IHRhcmdldDsKK30KKwordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3Jz
KEZyZXF1ZW50ZWRCbG9jayB0YWtlbiwgRnJlcXVlbnRlZEJsb2NrIG5vdFRha2VuKQoreworICAg
IG1fc3VjY2Vzc29ycy5yZXNpemUoMik7CisgICAgbV9zdWNjZXNzb3JzWzBdID0gdGFrZW47Cisg
ICAgbV9zdWNjZXNzb3JzWzFdID0gbm90VGFrZW47Cit9CisKIGJvb2wgQmFzaWNCbG9jazo6YWRk
UHJlZGVjZXNzb3IoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgcmV0dXJuIEIzOjphZGRQcmVk
ZWNlc3Nvcih0aGlzLCBibG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckJhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckJhc2ljQmxvY2suaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5
LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3NvcnMoKSBjb25z
dCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KICAgICBTdWNjZXNzb3JMaXN0JiBzdWNjZXNzb3Jz
KCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAKKyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJl
cXVlbnRlZEJsb2NrKTsKKyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrLCBG
cmVxdWVudGVkQmxvY2spOworCiAgICAgQmFzaWNCbG9jayogc3VjY2Vzc29yQmxvY2sodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQogICAg
IEJhc2ljQmxvY2sqJiBzdWNjZXNzb3JCbG9jayh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gc3Vj
Y2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAgU3VjY2Vzc29yQ29sbGVjdGlvbjxCYXNpY0Js
b2NrLCBTdWNjZXNzb3JMaXN0PiBzdWNjZXNzb3JCbG9ja3MoKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2Vy
dGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRpb25TZXQuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisK
KyNpbmNsdWRlICJBaXJCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1
ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UgQWlyIHsKKworQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KENv
ZGUgJmNvZGUpCisgICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoY29kZS5tX2Jsb2NrcykK
K3sKK30KKworQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpCit7Cit9CisK
K30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19K
SVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRp
b25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJs
b2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNHZW5lcmljQmxv
Y2tJc25lcnRpb25TZXQuaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0lu
c2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCitjbGFzcyBJbnNlcnRpb25TZXQ7CisKK3R5
cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+OjpCbG9ja0luc2VydGlv
biBCbG9ja0luc2VydGlvbjsKKworY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgOiBwdWJsaWMgR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+IHsKK3B1YmxpYzoKKyAgICBCbG9ja0lu
c2VydGlvblNldChDb2RlJik7CisgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7CisgICAgCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBldmVudHVhbGx5IGltcGxlbWVudCBCMzo6QmxvY2tJbnNlcnRp
b25TZXQncyBzcGxpdEZvcndhcmQoKS4KK307CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIz
OjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTczLDYgKzczLDggQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQog
ICAgICAgICBkYXRhTG9nKCJJbml0aWFsIGFpcjpcbiIpOwogICAgICAgICBkYXRhTG9nKGNvZGUp
OwogICAgIH0KKyAgICAKKyAgICBzaW1wbGlmeUNGRyhjb2RlKTsKIAogICAgIGxvd2VyTWFjcm9z
KGNvZGUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5v
cGNvZGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bj
b2RlLm9wY29kZXMJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0j
IENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NjgsMjggKzY2OCwzNzkgQEAgTG9h
ZDggVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRB
Y3E4IFU6Rzo4LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBTdG9y
ZTggVTpHOjgsIEQ6Rzo4CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgogICAgIHg4Njog
SW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBBZGRyCiAKK1N0b3JlUmVsOCBVOkc6OCwgRDpHOjgK
KyAgICBUbXAsIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAg
eDg2OiBJbW0sIEFkZHIKKwogTG9hZDhTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyCiAg
ICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIg
VTpHOjgsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIExvYWQxNiBV
Okc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3Ex
NiBVOkc6MTYsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIExvYWQx
NlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5k
ZXgsIFRtcAogCitMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgorICAg
IEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogU3RvcmUxNiBVOkc6MTYsIEQ6RzoxNgogICAg
IFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKIAorU3RvcmVBY3ExNiBVOkc6MTYsIEQ6RzoxNgor
ICAgIFRtcCwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKworTG9hZEFjcTMyIFU6RzozMiBaRDpHOjMy
CisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK1N0b3JlUmVs
MzIgVTpHOjMyIFpEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAgeDg2
OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKworNjQ6IExvYWRBY3E2NCBVOkc6NjQg
WkQ6Rzo2NAorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCis2
NDogU3RvcmVSZWw2NCBVOkc6NjQgWkQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorCisjIFRoZSBmaXJz
dCBvcGVyYW5kIGlzIHJheC4KK3g4NjogTG9ja0NtcFhjaGc4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6
OCwgVUQ6Rzo4LCBaRDpHOjgKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAor
ICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6IExvY2tDbXBYY2hn
MTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYsIFpEOkc6OAorICAgIFN0YXR1c0Nv
bmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRl
eCwgVG1wCisKK3g4NjogTG9ja0NtcFhjaGczMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6
RzozMiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2XzY0OiBMb2NrQ21wWGNoZzY0
IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0LCBaRDpHOjgKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgs
IFRtcAorCit4ODY6IExvY2tDbXBYY2hnOCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjgKKyAgICBUbXAq
LCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogTG9ja0NtcFhjaGcxNiBV
RDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBU
bXAsIEluZGV4CisKK3g4NjogTG9ja0NtcFhjaGczMiBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIK
KyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9j
a0NtcFhjaGc2NCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQKKyAgICBUbXAqLCBUbXAsIEFkZHIK
KyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoTG9ja0NtcFhjaGc4IFU6RzozMiwg
VUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAs
IEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoTG9j
a0NtcFhjaGcxNiBVOkc6MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiAvYnJhbmNoCisgICAg
U3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJ
bmRleAorCit4ODY6IEJyYW5jaExvY2tDbXBYY2hnMzIgVTpHOjMyLCBVRDpHOjMyLCBVOkc6MzIs
IFVEOkc6MzIgL2JyYW5jaAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0
YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2XzY0OiBCcmFuY2hMb2NrQ21wWGNoZzY0
IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2gKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4
NjogTG9ja0FkZDggVTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja0FkZDE2IFU6RzoxNiwg
VUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogTG9ja0FkZDMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
Nl82NDogTG9ja0FkZDY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1N1YjggVTpH
OjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1N1YjE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIElt
bSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisK
K3g4NjogTG9ja1N1YjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9ja1N1YjY0
IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAs
IEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja0FuZDggVTpHOjgsIFVEOkc6OAorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogTG9ja0FuZDE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIElt
bSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja0FuZDMy
IFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAs
IEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9ja0FuZDY0IFU6Rzo2NCwgVUQ6Rzo2
NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogTG9ja09yOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrT3Ix
NiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tPcjMyIFU6RzozMiwgVUQ6RzozMgor
ICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisKK3g4Nl82NDogTG9ja09yNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2Nr
WG9yOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrWG9yMTYgVTpHOjE2LCBVRDpHOjE2
CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBMb2NrWG9yMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBM
b2NrWG9yNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAor
ICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBMb2NrTmVnOCBVRDpHOjgKKyAg
ICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBMb2NrTmVnMTYgVUQ6RzoxNgorICAgIEFkZHIKKyAg
ICBJbmRleAorCit4ODY6IExvY2tOZWczMiBVRDpHOjMyCisgICAgQWRkcgorICAgIEluZGV4CisK
K3g4Nl82NDogTG9ja05lZzY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBM
b2NrTm90OCBVRDpHOjgKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBMb2NrTm90MTYgVUQ6
RzoxNgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IExvY2tOb3QzMiBVRDpHOjMyCisgICAg
QWRkcgorICAgIEluZGV4CisKK3g4Nl82NDogTG9ja05vdDY0IFVEOkc6NjQKKyAgICBBZGRyCisg
ICAgSW5kZXgKKworeDg2OiBMb2NrWEFkZDggVUQ6Rzo4LCBVRDpHOjgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogTG9ja1hBZGQxNiBVRDpHOjE2LCBVRDpHOjE2CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IExvY2tYQWRkMzIgVUQ6RzozMiwgVUQ6
RzozMgorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBMb2NrWEFkZDY0
IFVEOkc6NjQsIFVEOkc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Njog
TG9ja1hjaGc4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IExvY2tYY2hnMTYgVUQ6RzoxNiwgVUQ6RzoxNgorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2OiBMb2NrWGNoZzMyIFVEOkc6MzIsIFVEOkc6MzIKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogTG9ja1hjaGc2NCBVRDpHOjY0LCBVRDpHOjY0
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCithcm02NDogTG9hZExpbms4IFU6Rzo4
LCBaRDpHOjgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlu
a0FjcTggVTpHOjgsIFpEOkc6OAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJt
NjQ6IFN0b3JlQ29uZDggVTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAK
KyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDggVTpHOjgsIEQ6Rzo4
LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJt
NjQ6IExvYWRMaW5rMTYgVTpHOjE2LCBaRDpHOjE2CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgs
IFRtcAorCithcm02NDogTG9hZExpbmtBY3ExNiBVOkc6MTYsIFpEOkc6MTYKKyAgICBBZGRyLCBU
bXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQxNiBVOkc6MTYsIEQ6RzoxNiwg
RVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0
OiBTdG9yZUNvbmRSZWwxNiBVOkc6MTYsIEQ6RzoxNiwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwg
VG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGluazMyIFU6RzozMiwgWkQ6
RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNx
MzIgVTpHOjMyLCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02
NDogU3RvcmVDb25kMzIgVTpHOjMyLCBEOkc6MzIsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRt
cAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMzIgVTpHOjMyLCBE
Okc6MzIsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAor
Cithcm02NDogTG9hZExpbms2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAKKyAgICBJ
bmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIEFk
ZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDY0IFU6Rzo2NCwgRDpH
OjY0LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKwor
YXJtNjQ6IFN0b3JlQ29uZFJlbDY0IFU6Rzo2NCwgRDpHOjY0LCBFWkQ6Rzo4CisgICAgVG1wLCBB
ZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IERlcGVuZDMyIFU6RzozMiwg
RDpHOjMyCisgICAgVG1wLCBUbXAKKworYXJtNjQ6IERlcGVuZDY0IFU6Rzo2NCwgRDpHOjY0Cisg
ICAgVG1wLCBUbXAKKwogQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIK
ICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCiAgICAgUmVsQ29uZCwgVG1wLCBJbW0sIFRtcApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3B0aW1p
emVCbG9ja09yZGVyLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTc3LDYgKzE3NywxMCBAQCB2b2lkIG9wdGltaXplQmxvY2tPcmRlcihDb2RlJiBjb2RlKQogICAg
ICAgICBjYXNlIEJyYW5jaFN1YjY0OgogICAgICAgICBjYXNlIEJyYW5jaE5lZzMyOgogICAgICAg
ICBjYXNlIEJyYW5jaE5lZzY0OgorICAgICAgICBjYXNlIEJyYW5jaExvY2tDbXBYY2hnODoKKyAg
ICAgICAgY2FzZSBCcmFuY2hMb2NrQ21wWGNoZzE2OgorICAgICAgICBjYXNlIEJyYW5jaExvY2tD
bXBYY2hnMzI6CisgICAgICAgIGNhc2UgQnJhbmNoTG9ja0NtcFhjaGc2NDoKICAgICAgICAgICAg
IGlmIChjb2RlLmZpbmROZXh0QmxvY2soYmxvY2spID09IGJsb2NrLT5zdWNjZXNzb3JCbG9jaygw
KSAmJiBicmFuY2guYXJnc1swXS5pc0ludmVydGlibGUoKSkgewogICAgICAgICAgICAgICAgIHN0
ZDo6c3dhcChibG9jay0+c3VjY2Vzc29yKDApLCBibG9jay0+c3VjY2Vzc29yKDEpKTsKICAgICAg
ICAgICAgICAgICBicmFuY2guYXJnc1swXSA9IGJyYW5jaC5hcmdzWzBdLmludmVydGVkKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZl
cmVuY2UuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcg
QEAgdm9pZCBwYWRJbnRlcmZlcmVuY2UoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBbJl0g
KEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewogICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHJvbGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVm
OgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAg
ICAgICAgICAgICAgaGFzRWFybHlEZWYgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlVXNlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNw
cAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJT
cGlsbEV2ZXJ5dGhpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9p
ZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OkxhdGVDb2xkVXNlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U2NyYXRjaDoK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChS
ZWcgcmVnIDogY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKGJhbmspKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFzZXRCZWZvcmUuZ2V0KHJlZykgJiYgIXNldEFmdGVyLmdldChy
ZWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVy
YXRvci5yYgkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9vcGNvZGVfZ2VuZXJhdG9yLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAg
ZGVmIGxleChzdHIsIGZpbGVOYW1lKQogZW5kCiAKIGRlZiBpc1JvbGUodG9rZW4pCi0gICAgdG9r
ZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoWkQpfChVWkQpfChVQSl8KFMpKVxaLworICAgIHRva2Vu
ID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEpfChTKXwoRUQpfChFWkQpfChMVSkp
XFovCiBlbmQKIAogZGVmIGlzR0YodG9rZW4pCkBAIC0xOTAsNyArMTkwLDcgQEAgZGVmIGlzR0Yo
dG9rZW4pCiBlbmQKIAogZGVmIGlzS2luZCh0b2tlbikKLSAgICB0b2tlbiA9fiAvXEEoKFRtcCl8
KEltbSl8KEJpZ0ltbSl8KEJpdEltbSl8KEJpdEltbTY0KXwoQWRkcil8KEluZGV4KXwoUmVsQ29u
ZCl8KFJlc0NvbmQpfChEb3VibGVDb25kKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEoKFRtcCl8KElt
bSl8KEJpZ0ltbSl8KEJpdEltbSl8KEJpdEltbTY0KXwoQWRkcil8KEluZGV4KXwoUmVsQ29uZCl8
KFJlc0NvbmQpfChEb3VibGVDb25kKXwoU3RhdHVzQ29uZCkpXFovCiBlbmQKIAogZGVmIGlzQXJj
aCh0b2tlbikKQEAgLTI2NCw3ICsyNjQsNyBAQCBjbGFzcyBQYXJzZXIKIAogICAgIGRlZiBjb25z
dW1lS2luZAogICAgICAgICByZXN1bHQgPSB0b2tlbi5zdHJpbmcKLSAgICAgICAgcGFyc2VFcnJv
cigiRXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgQWRk
ciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIG9yIERvdWJsZUNvbmQpIikgdW5sZXNzIGlzS2lu
ZChyZXN1bHQpCisgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGtpbmQgKEltbSwgQmlnSW1t
LCBCaXRJbW0sIEJpdEltbTY0LCBUbXAsIEFkZHIsIEluZGV4LCBSZWxDb25kLCBSZXNDb25kLCBE
b3VibGVDb25kLCBvciBTdGF0dXNDb25kKSIpIHVubGVzcyBpc0tpbmQocmVzdWx0KQogICAgICAg
ICBhZHZhbmNlCiAgICAgICAgIHJlc3VsdAogICAgIGVuZApAQCAtNjUxLDYgKzY1MSwxMiBAQCB3
cml0ZUgoIk9wY29kZVV0aWxzIikgewogICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZUFk
ZHIiCiAgICAgICAgICAgICAgICAgd2hlbiAiUyIKICAgICAgICAgICAgICAgICAgICAgcm9sZSA9
ICJTY3JhdGNoIgorICAgICAgICAgICAgICAgIHdoZW4gIkVEIgorICAgICAgICAgICAgICAgICAg
ICByb2xlID0gIkVhcmx5RGVmIgorICAgICAgICAgICAgICAgIHdoZW4gIkVaRCIKKyAgICAgICAg
ICAgICAgICAgICAgcm9sZSA9ICJFYXJseVpEZWYiCisgICAgICAgICAgICAgICAgd2hlbiAiTFUi
CisgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiTGF0ZVVzZSIKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgZW5kCkBAIC04
MTksNiArODI1LDcgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAg
ICAgd2hlbiAiUmVsQ29uZCIKICAgICAgICAgICAgICAgICB3aGVuICJSZXNDb25kIgogICAgICAg
ICAgICAgICAgIHdoZW4gIkRvdWJsZUNvbmQiCisgICAgICAgICAgICAgICAgd2hlbiAiU3RhdHVz
Q29uZCIKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlICJV
bmV4cGVjdGVkIGtpbmQ6ICN7a2luZC5uYW1lfSIKICAgICAgICAgICAgICAgICBlbmQKQEAgLTEx
MDUsNiArMTExMiw4IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAg
ICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc1Jlc3VsdENvbmRpdGlvbigpIgog
ICAgICAgICAgICAgICAgIHdoZW4gIkRvdWJsZUNvbmQiCiAgICAgICAgICAgICAgICAgICAgIG91
dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzRG91YmxlQ29uZGl0aW9uKCkiCisgICAgICAgICAg
ICAgICAgd2hlbiAiU3RhdHVzQ29uZCIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAi
YXJnc1sje2luZGV4fV0uYXNTdGF0dXNDb25kaXRpb24oKSIKICAgICAgICAgICAgICAgICBlbmQK
ICAgICAgICAgICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302892</attachid>
            <date>2017-02-27 16:49:45 -0800</date>
            <delta_ts>2017-02-27 20:17:25 -0800</delta_ts>
            <desc>done with B3-&gt;Air isel for all atomics</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>134296</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMiBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNCRTFFNjQ5REM0MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRDFFNjQ5REMyMDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAq
LzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhp
c1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAg
LTI3NjQsNiArMjc3MCwxMiBAQAogCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5r
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQmFuay5oOyBwYXRoID0gYjMv
QjNCYW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM2M0FEMUU2MEFFM0Mw
MEMxMzgzOSAvKiBCM1dpZHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEIzV2lkdGguY3BwOyBwYXRoID0gYjMvQjNXaWR0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2lkdGguaDsgcGF0aCA9IGIzL0IzV2lkdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjMxRTYzNDNFODAwQzEzODM5
IC8qIEIzQXRvbWljVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQjNBdG9taWNWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0F0b21pY1ZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNBdG9taWNWYWx1
ZS5oOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25T
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQuaDsgcGF0aCA9IGIzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJC
bG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBBaXJCbG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRp
b25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCQTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGIzL2Fpci9BaXJCbG9j
a0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCRDFF
NjQ5REMyMDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQzNDAwN0Q0QjE5IC8qIERl
YnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVi
dWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERDMTk4
MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTI5Miw2ICs1MzA0LDggQEAKIAkJCQkwRkVDODRCMzFCREFDRDg4MDA4MEZGNzQgLyog
YWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFs
dWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVn
VmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1
ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUu
aCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJ
CQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi8sCiAJCQkJMEZFQzg0QjYx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5jcHAgKi8sCkBAIC01MzU0LDYgKzUzNjgs
NyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5o
ICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywK
IAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oICovLAorCQkJCTBG
MkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oICov
LAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxv
Y2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3Bw
ICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5nZS5oICovLApA
QCAtNTQ2OSw2ICs1NDg0LDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWly
QXJnSW5saW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNp
Y0Jsb2NrLmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFzaWNC
bG9jay5oICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2Vy
dGlvblNldC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2Nr
SW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJs
b2NrV29ya2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC03MzI2LDYgKzczNDMsNyBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2OTg3
QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRDFFNjQ5REMyMDBDMTM4MzkgLyog
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAwRjg0
NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENENzBD
MDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJODY0
MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCkBAIC03MzU0LDgg
KzczNzIsOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxl
ck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJs
ZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9B
c3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIxIC8q
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0MxMDBG
ODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4NUE4
RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKQEAgLTc5
NTYsNiArNzk3NCw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3RDcxRDlEQzQ0MjAwMUI5ODI1IC8q
IEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0JDMUU2MzQ0MEMwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0MzgxQzAw
MTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUzNEMx
QTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxv
Yy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDQ3LDYgKzgwNjYsNyBAQAogCQkJCTQzNDIyQTYzMUMx
NThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQdHJWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNGNzAwQzEzODM5IC8qIEIzR2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOEUwRTFCRjAyNzZD
MDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRkMx
QzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRlVGFpbHMuaCBpbiBIZWFkZXJzICov
LApAQCAtODM2Niw2ICs4Mzg2LDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4NDQ3MjggLyog
REZHT1NSRXhpdEZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEzQjYwMDU2
N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50
b21JbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMxNEVGOTBBRjAw
QzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFQjE5RDBCQTdE
MDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAtOTc5Miw2ICs5
ODEzLDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
IAkJCQkwRkZBNTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9wY29kZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjJDNjNCRTFFNjQ5REM0MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDQ5MzdDMzFEREJFNjE0MDA3N0M4MDcgLyog
QWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUYwRjQxNEQx
MDYzOTAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM3MEI0
RjUxQkYyNjIwMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI0OCw2ICsxMDI3MCw3IEBACiAJCQkJ
OUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTEx
ODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQwRTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3Rl
ZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMjY2LDYgKzEwMjg5LDcgQEAK
IAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAv
KiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRC
NjExODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBBMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25T
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIElu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NG
ODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIKKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisKKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIHN3aXRj
aCAoY29uZGl0aW9uKSB7CisgICAgY2FzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNz
OgorICAgICAgICBvdXQucHJpbnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6RmFpbHVyZToKKyAgICAgICAgb3V0LnByaW50KCJG
YWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODksNiArODksMjMgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gVGltZXNFaWdodDsKICAgICB9CiAgICAgCisgICAgZW51bSBTdGF0dXNDb25k
aXRpb24geworICAgICAgICBTdWNjZXNzLAorICAgICAgICBGYWlsdXJlCisgICAgfTsKKyAgICAK
KyAgICBzdGF0aWMgU3RhdHVzQ29uZGl0aW9uIGludmVydChTdGF0dXNDb25kaXRpb24gY29uZGl0
aW9uKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICAgICAgY2FzZSBT
dWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIEZhaWx1cmU7CisgICAgICAgIGNhc2UgRmFpbHVy
ZToKKyAgICAgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgIH0K
KyAgICAKICAgICBzdHJ1Y3QgQmFzZUluZGV4OwogICAgIAogICAgIC8vIEFkZHJlc3M6CkBAIC0x
MTA4LDMgKzExMjUsMTYgQEAgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlLCBN
YQogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQworCisj
aWYgRU5BQkxFKEFTU0VNQkxFUikKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3Ry
ZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisj
ZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNf
SklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworQXRvbWljVmFsdWU6On5B
dG9taWNWYWx1ZSgpCit7Cit9CisKK1dpZHRoIEF0b21pY1ZhbHVlOjphY2Nlc3NXaWR0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fd2lkdGg7Cit9CisKK3ZvaWQgQXRvbWljVmFsdWU6OmR1bXBN
ZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAg
b3V0LnByaW50KGNvbW1hLCAid2lkdGggPSAiLCBtX3dpZHRoKTsKKyAgICAKKyAgICBNZW1vcnlW
YWx1ZTo6ZHVtcE1ldGEoY29tbWEsIG91dCk7Cit9CisKK1ZhbHVlKiBBdG9taWNWYWx1ZTo6Y2xv
bmVJbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbmV3IEF0b21pY1ZhbHVlKCp0aGlzKTsKK30K
KworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lk
dGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQg
PSAwKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgb3BlcmFuZC0+dHlw
ZSgpLCBvcmlnaW4sIG9mZnNldCwgb3BlcmFuZCwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lk
dGgpCit7CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBB
U1NFUlQoYmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKyAg
ICAKKyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6
CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNh
c2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9t
aWNYY2hnOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtp
bmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFs
dWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDog
TWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwga2luZC5vcGNvZGUoKSA9PSBBdG9taWNX
ZWFrQ0FTID8gSW50MzIgOiBleHBlY3RlZFZhbHVlLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCBl
eHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7
CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBBU1NFUlQo
YmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKworICAgIHN3
aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNl
IEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQXRvbWljVmFsdWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisj
aW5jbHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwor
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQXRvbWljVmFsdWUgOiBwdWJsaWMgTWVtb3J5VmFsdWUg
eworcHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGlzQXRvbWljKGtpbmQub3Bjb2RlKCkpOworICAgIH0KKyAgICAKKyAgICB+
QXRvbWljVmFsdWUoKTsKKyAgICAKKyAgICBUeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJl
dHVybiBjaGlsZCgwKS0+dHlwZSgpOyB9CisgICAgCisgICAgV2lkdGggb3BlcmF0aW9uV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgCisgICAgLy8gU3lub255bSBmb3Igd2lk
dGgoKSwgaWYgeW91J3JlIGFjY2Vzc2luZyB2aWEgTWVtb3J5VmFsdWUuCisgICAgV2lkdGggYWNj
ZXNzV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1
bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
CisgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtpbmQs
IE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQgPSAwKTsKKyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBW
YWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwKTsKKyAgICAKKyAgICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2Vy
dGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMzUgKzM2LDEzIEBACiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsKIAogQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0
KFByb2NlZHVyZSAmcHJvYykKLSAgICA6IG1fcHJvYyhwcm9jKQorICAgIDogR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0KHByb2MubV9ibG9ja3MpCisgICAgLCBtX3Byb2MocHJvYykKIHsKIH0KIAog
QmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpIHsgfQogCi12b2lkIEJsb2Nr
SW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCi17Ci0gICAg
bV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOwotfQotCi1CYXNpY0Jsb2Nr
KiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVl
bmN5KQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNC
bG9jayhVSU5UX01BWCwgZnJlcXVlbmN5KSk7Ci0gICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxv
Y2suZ2V0KCk7Ci0gICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2Nr
KSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9u
U2V0OjppbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5KQot
ewotICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVl
bmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7Ci19Ci0KLUJhc2ljQmxvY2sq
IEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91Ymxl
IGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJl
cXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7Ci19
Ci0KIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcndhcmQoCiAgICAgQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqIGluc2Vy
dGlvblNldCwgZG91YmxlIGZyZXF1ZW5jeSkKIHsKQEAgLTEwMiwzMiArODAsNiBAQCBCYXNpY0Js
b2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotYm9vbCBCbG9ja0luc2VydGlvblNldDo6ZXhlY3V0ZSgpCi17Ci0gICAgaWYgKG1faW5zZXJ0
aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBXZSBh
bGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5l
ZWQgdG8gc29ydCB0aGVtIGJlZm9yZQotICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0
aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8g
YmUKLSAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCi0gICAgYnViYmxlU29ydCht
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKLQotICAgIGV4ZWN1dGVJ
bnNlcnRpb25zKG1fcHJvYy5tX2Jsb2NrcywgbV9pbnNlcnRpb25zKTsKLSAgICAKLSAgICAvLyBQ
cnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0
IGl0J3MKLSAgICAvLyBoZWFsdGh5IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5n
LgotICAgIG1fcHJvYy5tX2Jsb2Nrcy5yZW1vdmVBbGxNYXRjaGluZygKLSAgICAgICAgWyZdIChz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIHJldHVybiAhYmxvY2tQdHI7Ci0gICAgICAgIH0pOwotICAgIAotICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9wcm9jLm1fYmxvY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3By
b2MubV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQot
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5z
ZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKICNp
bmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwyNiArMzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CiAKIGNsYXNzIEluc2VydGlvblNldDsKIAotdHlwZWRlZiBXVEY6Okluc2Vy
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOwordHlwZWRl
ZiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJs
b2NrSW5zZXJ0aW9uOwogCi1jbGFzcyBCbG9ja0luc2VydGlvblNldCB7CitjbGFzcyBCbG9ja0lu
c2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4g
ewogcHVibGljOgogICAgIEJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSYpOwogICAgIH5CbG9j
a0luc2VydGlvblNldCgpOwogICAgIAotICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYp
OwotCi0gICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCi0gICAgQmFz
aWNCbG9jayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7
Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVz
dWFsbHkgeW91IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQotICAgIC8vIGFyZ3VtZW50LiBQ
YXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdi
ZWZvcmUnIGJsb2NrLiBUaGF0J3MKLSAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCi0gICAg
QmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1
ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2
ZW4gYmxvY2suCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIs
IGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQogICAgIC8vIEEgaGVscGVyIHRvIHNwbGl0IGEg
YmxvY2sgd2hlbiBmb3J3YXJkIGl0ZXJhdGluZyBvdmVyIGl0LiBJdCBjcmVhdGVzIGEgbmV3IGJs
b2NrIHRvIGhvbGQKICAgICAvLyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYXQg
dmFsdWVJbmRleC4gVGhlIGN1cnJlbnQgYmxvY2sgaXMgbGVmdCB3aXRoCiAgICAgLy8gZXZlcnl0
aGluZyBhdCBhbmQgYWZ0ZXIgdmFsdWVJbmRleC4gSWYgdGhlIG9wdGlvbmFsIEluc2VydGlvblNl
dCBpcyBwcm92aWRlZCwgaXQgd2lsbCBnZXQKQEAgLTgwLDEyICs2OCw5IEBAIHB1YmxpYzoKICAg
ICBCYXNpY0Jsb2NrKiBzcGxpdEZvcndhcmQoCiAgICAgICAgIEJhc2ljQmxvY2sqLCB1bnNpZ25l
ZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0KiA9IG51bGxwdHIsCiAgICAgICAgIGRvdWJsZSBm
cmVxdWVuY3kgPSBQTmFOKTsKLSAgICAKLSAgICBib29sIGV4ZWN1dGUoKTsKIAogcHJpdmF0ZToK
ICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKLSAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1f
aW5zZXJ0aW9uczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAg
ICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8
fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3Zlcmxh
cHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7
CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZl
bmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0
IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9w
ZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhl
ci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5u
ZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9
PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAg
JiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShj
b25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVj
dHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwg
IldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwxMCBA
QCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzE3MwogICAgIGJvb2wgcmVhZHNQaW5uZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgd3JpdGVzUGlubmVkIHsgZmFsc2UgfTsKKyAgICAKKyAgICAvLyBNZW1vcnkgZmVuY2VzIGNh
bm5vdCBiZSByZW9yZGVyZWQgYXJvdW5kIGVhY2ggb3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBl
ZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQKKyAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVt
b3J5IGZlbmNlLgorICAgIGJvb2wgZmVuY2UgeyBmYWxzZSB9OwogCiAgICAgSGVhcFJhbmdlIHdy
aXRlczsKICAgICBIZWFwUmFuZ2UgcmVhZHM7CkBAIC04OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZl
Y3RzIHsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKICAgICAgICAg
cmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9
IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCkBAIC0xMDMsNyArMTA4LDcgQEAgc3RydWN0IEVmZmVjdHMgewogCiAgICAg
Ym9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdGVybWluYWwg
fHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQ
aW5uZWQ7CisgICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRl
c0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9CiAK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgcmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVz
ZSByZXNwZWN0aXZlIGVmZmVjdHMgd291bGQgY2hhbmdlIHByb2dyYW0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NDIsNiArMTQyLDcgQEAgc3RydWN0IEltcHVyZUJsb2NrRGF0YSB7CiAKICAgICBSYW5nZVNldDxI
ZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlzIG9ubHkgZ2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0b3Jl
IGVsaW1pbmF0aW9uLgogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdl
dHMgdXNlZCBmb3IgYm90aCBsb2FkIGFuZCBzdG9yZSBlbGltaW5hdGlvbi4KKyAgICBib29sIGZl
bmNlOwogCiAgICAgTWVtb3J5VmFsdWVNYXAgc3RvcmVzQXRIZWFkOwogICAgIE1lbW9yeVZhbHVl
TWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsKQEAgLTE3NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNT
dG9yZSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9y
eS0+cmFuZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBz
KG1lbW9yeS0+cmFuZ2UoKSkpCisgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5v
dmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCisgICAgICAgICAgICAgICAgICAgICYmICghZGF0YS5m
ZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5jZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5z
dG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7CiAgICAgICAgICAgICAgICAgZGF0YS5yZWFkcy5hZGQo
ZWZmZWN0cy5yZWFkcyk7CiAKICAgICAgICAgICAgICAgICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9
IGVmZmVjdHMud3JpdGVzKQogICAgICAgICAgICAgICAgICAgICBjbG9iYmVyKGRhdGEsIHdyaXRl
cyk7CisgICAgICAgICAgICAgICAgZGF0YS5mZW5jZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG1lbW9yeSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlW
YWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7CkBAIC00NzgsNiArNDgxLDkgQEAgcHJpdmF0ZToKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVBZnRlckNsb2Ji
ZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXImIGZpbHRlcikKICAg
ICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBl
bGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0b3JlIHRvIHRo
ZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFueSBvcGVyYXRpb24g
dGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxpa2UgaXQgc2hvdWxk
IGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3Jp
dHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIApAQCAtNjE0LDYg
KzYyMCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIp
OwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNG
ZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChNZW1vcnlWYWx1ZSog
bWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7CiAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91
bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0dlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCB2
b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MDcKICAgICB9CiAKKyAgICAv
LyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgogICAgIGxvd2VyTWFjcm9zKHByb2Nl
ZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEluc2Vy
dGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9jaz4KK2NsYXNzIEdlbmVyaWNC
bG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOworICAgIAorICAgIEJs
b2NrSW5zZXJ0aW9uU2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBibG9j
a3MpCisgICAgICAgIDogbV9ibG9ja3MoYmxvY2tzKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
dm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCisgICAgeworICAgICAgICBt
X2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7CisgICAgfQorCisgICAgLy8g
SW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCisgICAgQmFzaWNCbG9jayogaW5z
ZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5U
X01BWCwgZnJlcXVlbmN5KSk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdl
dCgpOworICAgICAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2sp
KSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5l
dyBibG9jayBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNz
IHRoZSBmcmVxdWVuY3kKKyAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0
byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCisg
ICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3YW50LgorICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9y
ZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVxdWVu
Y3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsKKyAgICB9CisKKyAgICAvLyBJ
bnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KKyAgICBCYXNpY0Jsb2Nr
KiBpbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
CisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJlcXVl
bmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7CisgICAg
fQorCisgICAgYm9vbCBleGVjdXRlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2luc2VydGlvbnMu
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAg
Ly8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3JkZXIuIFNv
LCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKKyAgICAgICAgLy8gcnVubmluZyBXVEY6OmV4
ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBhbmQgd2Ug
d2FudCBpdCB0byBiZQorICAgICAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCisg
ICAgICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQo
KSk7CisgICAgICAgIAorICAgICAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX2Jsb2NrcywgbV9pbnNl
cnRpb25zKTsKKyAgICAgICAgCisgICAgICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBU
aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncworICAgICAgICAvLyBoZWFsdGh5
IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgorICAgICAgICBtX2Jsb2Nrcy5y
ZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+JiBibG9ja1B0cikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFibG9j
a1B0cjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2VzLgorICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9ibG9ja3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX2Jsb2Nr
c1tpXS0+bV9pbmRleCA9IGk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4mIG1f
YmxvY2tzOworICAgIFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJKHJldmlzaW9uIDIxMjk5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdlIG9wZXJhdG9yfChjb25zdCBIZWFw
UmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5nZSgKKyAg
ICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1fYmVnaW4pLAorICAgICAgICAgICAg
c3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAgfQorICAgIAogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1fZW5kOyB9CiAKICAg
ICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJbnNlcnRpb25TZXQ6Omluc2VydEJv
dHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9tKGluZGV4LCBsaWtlVmFsdWUtPm9y
aWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1ZhbHVlKiBJbnNlcnRpb25TZXQ6Omlu
c2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVlKQoreworICAgIHJldHVybiBpbnNl
cnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFsdWUpKTsKK30KKwogdm9pZCBJbnNl
cnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgYnViYmxlU29ydCht
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVf
dCBpbmRleCwgT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVfdCBp
bmRleCwgVmFsdWUqKTsKKyAgICAKKyAgICBWYWx1ZSogaW5zZXJ0Q2xvbmUoc2l6ZV90IGluZGV4
LCBWYWx1ZSopOwogCiAgICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTgsMTEgKzU4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3Byb2MocHJv
YykKICAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MpCiAgICAgICAgICwgbV9pbnNl
cnRpb25TZXQocHJvYykKKyAgICAgICAgLCBtX3VzZUNvdW50cyhwcm9jKQogICAgIHsKICAgICB9
CiAKICAgICBib29sIHJ1bigpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wcm9j
Lmhhc1F1aXJrcygpKTsKKyAgICAgICAgCiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sg
OiBtX3Byb2MpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgICAgIHBy
b2Nlc3NDdXJyZW50QmxvY2soKTsKQEAgLTcyLDYgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG1fcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICAgICAgbV9wcm9jLmludmFs
aWRhdGVDRkcoKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBpbmRpY2F0
ZXMgdGhhdCB3ZSd2ZSAKKyAgICAgICAgbV9wcm9jLnNldEhhc1F1aXJrcyh0cnVlKTsKKyAgICAg
ICAgCiAgICAgICAgIHJldHVybiBtX2NoYW5nZWQ7CiAgICAgfQogICAgIApAQCAtMTg1LDcgKzE5
Miw5NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGxvYWQtbG9hZCBmZW5jZS4gVGhpcyBjb2Rl
Z2VucyB0byBub3RoaW5nIG9uIFg4Ni4gV2UgdXNlIGl0IHRvIHRlbGwgdGhlCisgICAgICAgICAg
ICAgICAgICAgIC8vIGNvbXBpbGVyIG5vdCB0byBibG9jayBsb2FkIG1vdGlvbi4KKyAgICAgICAg
ICAgICAgICAgICAgRmVuY2VWYWx1ZSogZmVuY2UgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8RmVu
Y2VWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4pOworICAgICAgICAgICAgICAgICAgICBmZW5jZS0+
cmVhZCA9IEhlYXBSYW5nZSgpOworICAgICAgICAgICAgICAgICAgICBmZW5jZS0+d3JpdGUgPSBI
ZWFwUmFuZ2U6OnRvcCgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgLy8gS2lsbCB0aGUgRGVwZW5kLCB3aGljaCBzaG91bGQgdW5sb2NrIGEgYnVuY2ggb2YgY29k
ZSBzaW1wbGlmaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5yZXBsYWNlV2l0
aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgY2Fz
ZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6IHsKKyAg
ICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1f
dmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgICAgIFdpZHRoIHdpZHRoID0g
YXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIGV4cGVjdGVkVmFs
dWUgPSBhdG9taWMtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IC8vIE9uIEFSTSwgdGhlIGxvYWQgcGFydCBvZiB0aGUgQ0FTIGRvZXMgYSBsb2FkIHdpdGggemVy
byBleHRlbnNpb24uIFRoZXJlZm9yZSwgd2UgbmVlZAorICAgICAgICAgICAgICAgIC8vIHRvIHpl
cm8tZXh0ZW5kIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFza2VkRXhwZWN0
ZWRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
ICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIGV4cGVjdGVkVmFsdWUsCisgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KG1faW5kZXgsIGV4cGVj
dGVkVmFsdWUsIG1hc2sod2lkdGgpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgYXRvbWljLT5jaGlsZCgwKSA9IG1hc2tlZEV4cGVjdGVkVmFsdWU7CisgICAgICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAg
ICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNo
Z09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgY2FzZSBB
dG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgICAg
ICAgICAgLy8gT24gWDg2LCB0aGVzZSBtYXkgYWN0dWFsbHkgcmV0dXJuIGdhcmJhZ2UgaW4gdGhl
IGhpZ2ggYml0cy4gT24gQVJNNjQsIHRoZXNlIHNvcnRhCisgICAgICAgICAgICAgICAgLy8gemVy
by1leHRlbmQgdGhlaXIgaGlnaCBiaXRzLCBleGNlcHQgdGhhdCB0aGUgaGlnaCBiaXRzIG1pZ2h0
IGdldCBwb2xsdXRlZCBieSBoaWdoCisgICAgICAgICAgICAgICAgLy8gYml0cyBpbiB0aGUgb3Bl
cmFuZC4gLiBTbywgZWl0aGVyIHdheSwgd2UgbmVlZCB0byB0aHJvdyBhIHNpZ24tZXh0ZW5kIG9u
IHRoZXNlCisgICAgICAgICAgICAgICAgLy8gdGhpbmdzLgorICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3Zh
bHVlLT5vcGNvZGUoKSA9PSBBdG9taWNYY2hnU3ViICYmIG1fdXNlQ291bnRzLm51bVVzZXMobV92
YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9uIHg4NiwgeGNoZ2FkZCBpcyBi
ZXR0ZXIgdGhhbiB4Y2hnc3ViIGlmIGl0IGhhcyBhbnkgdXNlcnMuCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3ZhbHVlLT5zZXRLaW5kVW5zYWZlbHkoQXRvbWljWGNoZ0FkZCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgxKSA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgTmVnLCBtX29y
aWdpbiwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBib29sIGV4ZW1wdCA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgICAg
ICAgICAgICAgZXhlbXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZW1w
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92
YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3VmFsdWUgPSBt
X2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4
LCBzaWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwgbV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydENsb25lKG1faW5kZXgsIG1fdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG5l
d1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQ3MCw2
ICs1NjYsNyBAQCBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwogICAgIEJsb2NrSW5z
ZXJ0aW9uU2V0IG1fYmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0
aW9uU2V0OworICAgIFVzZUNvdW50cyBtX3VzZUNvdW50czsKICAgICBCYXNpY0Jsb2NrKiBtX2Js
b2NrOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CiAgICAgVmFsdWUqIG1fdmFsdWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NB
ZnRlck9wdGltaXphdGlvbnMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NiwxNSArMTU2LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFJv
dEw6IHsKICAgICAgICAgICAgICAgICAvLyBBUk02NCBkb2Vzbid0IGhhdmUgYSByb3RhdGUgbGVm
dC4KICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlm
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5v
cmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90Uiwg
bV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLCBuZXdTaGlmdCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDEp
KTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxWYWx1ZT4obV9pbmRleCwgUm90UiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNo
aWxkKDApLCBuZXdTaGlmdCk7CisgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VX
aXRoSWRlbnRpdHkocm90YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsMTQgQEAgbmFtZXNwYWNl
IHsKIAogY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKKy8vIEZJWE1FOiBXZSB3b3VsZG4n
dCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRlZCBXaWR0aCBtb2RpZmllcnMgaW4gQWlyOjpLaW5k
LgorLy8gT09QUyEhISAobmVlZCBhIGJ1ZyBVUkwpCisjZGVmaW5lIE9QQ09ERV9GT1JfV0lEVEgo
b3Bjb2RlLCB3aWR0aCkgKCBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDggPyBvcGNvZGUgIyMgOCA6
IFwKKyAgICAod2lkdGgpID09IFdpZHRoMTYgPyBvcGNvZGUgIyMgMTYgOiBcCisgICAgKHdpZHRo
KSA9PSBXaWR0aDMyID8gb3Bjb2RlICMjIDMyIDogXAorICAgIG9wY29kZSAjIyA2NCkKKwogY2xh
c3MgTG93ZXJUb0FpciB7CiBwdWJsaWM6CiAgICAgTG93ZXJUb0FpcihQcm9jZWR1cmUmIHByb2Nl
ZHVyZSkKQEAgLTgzLDYgKzkxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RvbWluYXRvcnMo
cHJvY2VkdXJlLmRvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX3Byb2NlZHVyZShwcm9jZWR1cmUp
CiAgICAgICAgICwgbV9jb2RlKHByb2NlZHVyZS5jb2RlKCkpCisgICAgICAgICwgbV9ibG9ja0lu
c2VydGlvblNldChtX2NvZGUpCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICAgICAg
LCBtX2VheChYODZSZWdpc3RlcnM6OmVheCkKKyAgICAgICAgLCBtX2VjeChYODZSZWdpc3RlcnM6
OmVjeCkKKyAgICAgICAgLCBtX2VkeChYODZSZWdpc3RlcnM6OmVkeCkKKyNlbmRpZgogICAgIHsK
ICAgICB9CiAKQEAgLTEyNCwxNCArMTM4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3Rl
ZCBhZGRyZXNzIGV4cHJlc3Npb24gYmVmb3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhl
IGxvb3AuCiAgICAgICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUu
YmxvY2tzSW5QcmVPcmRlcigpKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAg
ICAgICAgICAvLyBSZXNldCBzb21lIHN0YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUo
MCk7CiAKICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7
CiAKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxv
d2VyaW5nIEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4K
KyAgICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+
c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5z
dWNjZXNzb3JzKCkuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRC
bG9jayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVu
Y3koKSkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBp
biByZXZlcnNlIG9yZGVyIHNvIHdlIHNlZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBh
bGxvd3MgdXMKICAgICAgICAgICAgIC8vIHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5Lgog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAt
MTQ5LDE5ICsxNjcsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3Rz
IGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAgICAg
ICAgLy8gaXQgaW4gcmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5z
dHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9p
bnN0c1tpXSkKLSAgICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBl
bmRJbnN0KFdURk1vdmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAg
ICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vz
c29ycygpKSB7Ci0gICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNz
b3JzKCkuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayht
X2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25z
KG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1f
YmxvY2tJbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0
IGluc2VydGlvblNldChtX2NvZGUpOwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xv
Z3VlKQpAQCAtNTM4LDcgKzU0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gQXJn
KCk7CiAKICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB2YWx1ZS0+b2Zmc2V0KCk7Ci0gICAgICAg
IFdpZHRoIHdpZHRoID0gdmFsdWUtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgIFdpZHRoIHdpZHRo
ID0gdmFsdWUtPmxvYWRTdG9yZVdpZHRoKCk7CiAKICAgICAgICAgQXJnIHJlc3VsdCA9IGVmZmVj
dGl2ZUFkZHIodmFsdWUtPmxhc3RDaGlsZCgpLCBvZmZzZXQsIHdpZHRoKTsKICAgICAgICAgQVNT
RVJUKHJlc3VsdC5pc1ZhbGlkRm9ybSh3aWR0aCkpOwpAQCAtNTYyLDExICs1NzEsMTYgQEAgcHJp
dmF0ZToKICAgICAKICAgICBBcmdQcm9taXNlIGxvYWRQcm9taXNlQW55T3Bjb2RlKFZhbHVlKiBs
b2FkVmFsdWUpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkVmFsdWUtPmFzPE1l
bW9yeVZhbHVlPigpKTsKICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKGxvYWRWYWx1ZSkpCiAg
ICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAgIGlmIChjcm9zc2VzSW50ZXJmZXJlbmNl
KGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAgIEFyZ1Byb21p
c2UgcmVzdWx0KGFkZHIobG9hZFZhbHVlKSwgbG9hZFZhbHVlKTsKKyAgICAgICAgaWYgKGxvYWRW
YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4g
QXJnKCk7CisgICAgICAgIEFyZyBsb2FkQWRkciA9IGFkZHIobG9hZFZhbHVlKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobG9hZEFkZHIpOworICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChsb2Fk
QWRkciwgbG9hZFZhbHVlKTsKICAgICAgICAgaWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkKICAgICAg
ICAgICAgIHJlc3VsdC5zZXRUcmFwcyh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAg
LTg5OCwxMSArOTEyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICAgICAgYXBwZW5kKE1vdmUsIHRt
cCh2YWx1ZSksIHRtcChtX3ZhbHVlKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1vdW50
KSwgVG1wKFg4NlJlZ2lzdGVyczo6ZWN4KSk7Ci0gICAgICAgIGFwcGVuZChvcGNvZGUsIFRtcChY
ODZSZWdpc3RlcnM6OmVjeCksIHRtcChtX3ZhbHVlKSk7Ci0jZW5kaWYKKyAgICAgICAgYXBwZW5k
KE1vdmUsIHRtcChhbW91bnQpLCBtX2VjeCk7CisgICAgICAgIGFwcGVuZChvcGNvZGUsIG1fZWN4
LCB0bXAobV92YWx1ZSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29k
ZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2ND4KQEAgLTkzMSwxMCArOTQzLDE1IEBAIHByaXZhdGU6
CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQ29t
bXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmU+CiAgICAgYm9vbCB0cnlB
cHBlbmRTdG9yZUJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCiAgICAgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKSk7CisgICAgICAgIAog
ICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBv
cGNvZGU2NCwgbGVmdC0+dHlwZSgpKTsKICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6Ok9vcHMp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAorICAgICAgICBpZiAobV92YWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIAogICAgICAgICBBcmcgc3RvcmVBZGRyID0gYWRkcihtX3ZhbHVlKTsKICAg
ICAgICAgQVNTRVJUKHN0b3JlQWRkcik7CiAKQEAgLTk5NCwxMCArMTAxMSw0OCBAQCBwcml2YXRl
OgogCiAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFsdWUsIHRtcCh2YWx1ZSksIGRlc3Qp
OwogICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShXaWR0aCB3aWR0aCwg
QmFuayBiYW5rLCBib29sIHJlbGVhc2UpCisgICAgeworICAgICAgICBzd2l0Y2ggKHdpZHRoKSB7
CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9
PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsOCA6IFN0b3JlODsK
KyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9
PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMTYgOiBTdG9yZTE2
OworICAgICAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAg
ICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9y
ZVJlbDMyIDogTW92ZTMyOworICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVGbG9h
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdpZHRo
NjQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpczY0Qml0KCkpOworICAgICAgICAgICAg
c3dpdGNoIChiYW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJl
dHVybiByZWxlYXNlID8gU3RvcmVSZWw2NCA6IE1vdmU7CisgICAgICAgICAgICBjYXNlIEZQOgor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
ICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFZhbHVlKiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7Cisg
ICAgICAgIHJldHVybiBzdG9yZU9wY29kZShtZW1vcnktPmxvYWRTdG9yZVdpZHRoKCksIG1lbW9y
eS0+YWNjZXNzQmFuaygpLCBtZW1vcnktPmhhc0ZlbmNlKCkpOworICAgIH0KIAogICAgIEluc3Qg
Y3JlYXRlU3RvcmUoVmFsdWUqIHZhbHVlLCBjb25zdCBBcmcmIGRlc3QpCiAgICAgewotICAgICAg
ICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gbW92ZUZvclR5cGUodmFsdWUtPnR5cGUoKSk7Cisg
ICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBzdG9yZU9wY29kZSh2YWx1ZSk7CiAgICAg
ICAgIHJldHVybiBjcmVhdGVTdG9yZShtb3ZlT3Bjb2RlLCB2YWx1ZSwgZGVzdCk7CiAgICAgfQog
CkBAIC0xMDA2LDcgKzEwNjEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgYXBwZW5kKHRy
YXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVTdG9yZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKSk7CiAgICAgfQotCisgICAgCiAgICAgQWlyOjpPcGNvZGUgbW92ZUZvclR5cGUoVHlwZSB0
eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xMDczLDcgKzExMjgsNDEg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChpbnN0KTsK
ICAgICB9CisgICAgCisgICAgdm9pZCBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMoQWlyOjpC
YXNpY0Jsb2NrKiB0YXJnZXQpCisgICAgeworICAgICAgICAvLyBOb3cgYXBwZW5kIHRoZSBpbnN0
cnVjdGlvbnMuIG1faW5zdHMgY29udGFpbnMgdGhlbSBpbiByZXZlcnNlIG9yZGVyLCBzbyB3ZSBw
cm9jZXNzCisgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBmb3IgKEluc3QmIGluc3Qg
OiBtX2luc3RzW2ldKQorICAgICAgICAgICAgICAgIHRhcmdldC0+YXBwZW5kSW5zdChXVEZNb3Zl
KGluc3QpKTsKKyAgICAgICAgfQorICAgICAgICBtX2luc3RzLnJlc2l6ZSgwKTsKKyAgICB9Cisg
ICAgCisgICAgQWlyOjpCYXNpY0Jsb2NrKiBuZXdCbG9jaygpCisgICAgeworICAgICAgICByZXR1
cm4gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlcihtX2Jsb2NrVG9CbG9ja1ttX2Jsb2Nr
XSk7CisgICAgfQogCisgICAgLy8gTk9URTogVGhpcyB3aWxsIGNyZWF0ZSBhIGNvbnRpbnVhdGlv
biBibG9jayAoYG5leHRCbG9ja2ApICphZnRlciogYW55IGJsb2NrcyB5b3UndmUgY3JlYXRlZCB1
c2luZworICAgIC8vIG5ld0Jsb2NrKCkuIFNvLCBpdCdzIHByZWZlcmFibGUgdG8gY3JlYXRlIGFs
bCBvZiB5b3VyIGJsb2NrcyB1cGZyb250IHVzaW5nIG5ld0Jsb2NrKCkuIEFsc28gbm90ZQorICAg
IC8vIHRoYXQgYW55IGNvZGUgeW91IGVtaXQgYmVmb3JlIHRoaXMgd2lsbCBiZSBwcmVwZW5kZWQg
dG8gdGhlIGNvbnRpbnVhdGlvbiwgYW5kIGFueSBjb2RlIHlvdSBlbWl0CisgICAgLy8gYWZ0ZXIg
dGhpcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBwcmV2aW91cyBibG9jay4KKyAgICB2b2lkIHNw
bGl0QmxvY2soQWlyOjpCYXNpY0Jsb2NrKiYgcHJldmlvdXNCbG9jaywgQWlyOjpCYXNpY0Jsb2Nr
KiYgbmV4dEJsb2NrKQorICAgIHsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA9IG1f
YmxvY2tUb0Jsb2NrW21fYmxvY2tdOworICAgICAgICAKKyAgICAgICAgcHJldmlvdXNCbG9jayA9
IGJsb2NrOworICAgICAgICBuZXh0QmxvY2sgPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEFm
dGVyKGJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9u
cyhuZXh0QmxvY2spOworICAgICAgICBuZXh0QmxvY2stPnN1Y2Nlc3NvcnMoKSA9IGJsb2NrLT5z
dWNjZXNzb3JzKCk7CisgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKCkuY2xlYXIoKTsKKyAgICAg
ICAgCisgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJbnN0PigpKTsKKyAgICB9CisgICAg
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIFQq
IGVuc3VyZVNwZWNpYWwoVComIGZpZWxkLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAg
ewpAQCAtMTEyMyw3ICsxMjEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlN0YWNrQXJndW1lbnQ6CiAgICAgICAgICAgICAg
ICAgYXJnID0gQXJnOjpjYWxsQXJnKHZhbHVlLnJlcCgpLm9mZnNldEZyb21TUCgpKTsKLSAgICAg
ICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZS52YWx1ZSgpLCBhcmcpOworICAgICAgICAgICAg
ICAgIGFwcGVuZFN0b3JlKG1vdmVGb3JUeXBlKHZhbHVlLnZhbHVlKCkpLCBhcmcpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTk2MSw2ICsyMDUwLDMwOCBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZFg4NkRp
dihCMzo6T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91
YmxlV29yZDsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2OworICAgICAgICBzd2l0Y2ggKG1fdmFs
dWUtPnR5cGUoKSkgeworICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgY29udmVydFRv
RG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMjsKKyAgICAgICAgICAgIGRpdiA9
IFg4NkRpdjMyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NjQ6CisgICAg
ICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvUXVhZFdvcmQ2NDsKKyAg
ICAgICAgICAgIGRpdiA9IFg4NkRpdjY0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKG9wID09IERpdiB8fCBv
cCA9PSBNb2QpOworICAgICAgICBUbXAgcmVzdWx0ID0gb3AgPT0gRGl2ID8gbV9lYXggOiBtX2Vk
eDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgbV9lYXgp
OworICAgICAgICBhcHBlbmQoY29udmVydFRvRG91YmxlV29yZCwgbV9lYXgsIG1fZWR4KTsKKyAg
ICAgICAgYXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsK
KyAgICAgICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwgdG1wKG1fdmFsdWUpKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGVuZFg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFpcjo6
T3Bjb2RlIGRpdiA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVE
aXY2NDsKKworICAgICAgICBBU1NFUlQob3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKKyAgICAg
ICAgVG1wIHJlc3VsdCA9IG9wID09IFVEaXYgPyBtX2VheCA6IG1fZWR4OworCisgICAgICAgIGFw
cGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgIGFwcGVu
ZChYb3I2NCwgbV9lZHgsIG1fZWR4KTsKKyAgICAgICAgYXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4
LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwg
dG1wKG1fdmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgbG9hZExpbmtPcGNv
ZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2Ug
PyBPUENPREVfRk9SX1dJRFRIKExvYWRMaW5rQWNxLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRI
KExvYWRMaW5rLCB3aWR0aCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlQ29u
ZE9wY29kZShXaWR0aCB3aWR0aCwgYm9vbCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
ZW5jZSA/IE9QQ09ERV9GT1JfV0lEVEgoU3RvcmVDb25kUmVsLCB3aWR0aCkgOiBPUENPREVfRk9S
X1dJRFRIKFN0b3JlQ29uZCwgd2lkdGgpOworICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIGNhbiBl
bWl0IGNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcGF0dGVybnM6CisgICAgLy8gQXRvbWljV2Vha0NB
UworICAgIC8vIEJpdFhvcihBdG9taWNXZWFrQ0FTLCAxKQorICAgIC8vIEF0b21pY1N0cm9uZ0NB
UworICAgIC8vIEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gTm90RXF1
YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkKKyAgICAvLyBCcmFuY2goQXRvbWljV2Vha0NB
UykKKyAgICAvLyBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAg
Ly8gQnJhbmNoKE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vCisg
ICAgLy8gSXQgYXNzdW1lcyB0aGF0IGF0b21pY1ZhbHVlIHBvaW50cyB0byB0aGUgQ0FTLCBhbmQg
bV92YWx1ZSBwb2ludHMgdG8gdGhlIGluc3RydWN0aW9uIGJlaW5nCisgICAgLy8gZ2VuZXJhdGVk
LiBJdCBhc3N1bWVzIHRoYXQgeW91J3ZlIGNvbnN1bWVkIGV2ZXJ5dGhpbmcgdGhhdCBuZWVkcyB0
byBiZSBjb25zdW1lZC4KKyAgICB2b2lkIGFwcGVuZENBUyhWYWx1ZSogYXRvbWljVmFsdWUsIGJv
b2wgaW52ZXJ0KQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IGF0b21pY1Zh
bHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXRvbWljKTsK
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCcmFuY2ggPSBtX3ZhbHVlLT5vcCgpID09IEJyYW5j
aDsKKyAgICAgICAgYm9vbCBpc1N0cm9uZyA9IGF0b21pYy0+b3AoKSA9PSBBdG9taWNTdHJvbmdD
QVM7CisgICAgICAgIGJvb2wgcmV0dXJuc09sZFZhbHVlID0gbV92YWx1ZS0+b3AoKSA9PSBBdG9t
aWNTdHJvbmdDQVM7CisgICAgICAgIAorICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3Bl
cmF0aW9uV2lkdGgoKTsKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisKKyAg
ICAgICAgVG1wIHZhbHVlUmVzdWx0VG1wOworICAgICAgICBUbXAgYm9vbFJlc3VsdFRtcDsKKyAg
ICAgICAgaWYgKHJldHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IWludmVydCk7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAg
ICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgfSBl
bHNlIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUu
bmV3VG1wKEdQKTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQ
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2Rl
Lm5ld1RtcChHUCk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBUbXAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXA7Cisg
ICAgICAgIGlmIChpc1N0cm9uZyAmJiAhaXNCcmFuY2gpCisgICAgICAgICAgICBzdWNjZXNzQm9v
bFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBzdWNjZXNzQm9vbFJlc3VsdFRtcCA9IGJvb2xSZXN1bHRUbXA7CisKKyAgICAgICAgVG1wIGV4
cGVjdGVkVmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGlsZCgwKSk7CisgICAgICAgIFRtcCBuZXdW
YWx1ZVRtcCA9IHRtcChhdG9taWMtPmNoaWxkKDEpKTsKKyAgICAgICAgCisgICAgICAgIEZyZXF1
ZW50ZWRCbG9jayBzdWNjZXNzOworICAgICAgICBGcmVxdWVudGVkQmxvY2sgZmFpbHVyZTsKKyAg
ICAgICAgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gbV9ibG9ja1RvQmxv
Y2tbbV9ibG9ja10tPnN1Y2Nlc3NvcihpbnZlcnQpOworICAgICAgICAgICAgZmFpbHVyZSA9IG1f
YmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoIWludmVydCk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBhcHBlbmQocmVsYXhl
ZE1vdmVGb3JUeXBlKGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpKSwgaW1tT3JUbXAoYXRvbWljLT5j
aGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdHJvbmdDQVMsIHdp
ZHRoKSwgbV9lYXgsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBhcHBl
bmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpKSwgbV9lYXgsIHZh
bHVlUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAg
ICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChCcmFuY2hBdG9taWNTdHJvbmdDQVMs
IHdpZHRoKSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgs
IG5ld1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tt
X2Jsb2NrXS0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCBmYWlsdXJlKTsKKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0cm9u
Z0NBUywgd2lkdGgpLCBBcmc6OnN0YXR1c0NvbmQoaW52ZXJ0ID8gTWFjcm9Bc3NlbWJsZXI6OkZh
aWx1cmUgOiBNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCB0bXAoYXRvbWljLT5jaGls
ZCgxKSksIGFkZHJlc3MsIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOworICAg
ICAgICAvLyBXZSB3aXNoIHRvIGVtaXQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJsb2NrICNy
ZWxvb3A6CisgICAgICAgIC8vICAgICBMb2FkTGluaworICAgICAgICAvLyAgICAgQnJhbmNoIE5v
dEVxdWFsCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogVGhlbjojZmFpbCwgRWxzZTogI3N0b3Jl
CisgICAgICAgIC8vIEJsb2NrICNzdG9yZToKKyAgICAgICAgLy8gICAgIFN0b3JlQ29uZAorICAg
ICAgICAvLyAgICAgWG9yICQxLCAlcmVzdWx0ICAgIDwtLS0gb25seSBpZiAhaW52ZXJ0CisgICAg
ICAgIC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAgICAgICAg
Ly8gQmxvY2sgI2ZhaWw6CisgICAgICAgIC8vICAgICBNb3ZlICRpbnZlcnQsICVyZXN1bHQKKyAg
ICAgICAgLy8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAg
ICAvLyBCbG9jayAjZG9uZToKKyAgICAgICAgCisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogcmVs
b29wQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0b3JlQmxv
Y2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN1Y2Nlc3NCbG9jayA9
IG51bGxwdHI7CisgICAgICAgIGlmICghaXNCcmFuY2ggJiYgaXNTdHJvbmcpCisgICAgICAgICAg
ICBzdWNjZXNzQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGZh
aWxCbG9jayA9IG51bGxwdHI7CisgICAgICAgIGlmICghaXNCcmFuY2gpCisgICAgICAgICAgICBm
YWlsQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0cm9uZ0Zh
aWxCbG9jazsKKyAgICAgICAgaWYgKGlzU3Ryb25nKQorICAgICAgICAgICAgc3Ryb25nRmFpbEJs
b2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrIGNvbXBhcmlzb25GYWls
OworICAgICAgICBGcmVxdWVudGVkQmxvY2sgd2Vha0ZhaWw7CisgICAgICAgIGlmIChpc1N0cm9u
ZykgeworICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBzdHJvbmdGYWlsQmxvY2s7CisgICAg
ICAgICAgICB3ZWFrRmFpbCA9IHJlbG9vcEJsb2NrOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaWYgKGlzQnJhbmNoKQorICAgICAgICAgICAgICAgIGNvbXBhcmlzb25GYWlsID0gZmFp
bHVyZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21wYXJpc29uRmFpbCA9
IGZhaWxCbG9jazsKKyAgICAgICAgICAgIHdlYWtGYWlsID0gZmFpbHVyZTsKKyAgICAgICAgfQor
ICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFpcjo6QmFzaWNC
bG9jayogZG9uZUJsb2NrOworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ssIGRvbmVCbG9j
ayk7CisgICAgICAgIAorICAgICAgICBhcHBlbmQoSnVtcCk7CisgICAgICAgIGJlZ2luQmxvY2st
PnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAgICAKKyAgICAgICAgcmVsb29wQmxv
Y2stPmFwcGVuZChsb2FkTGlua09wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92
YWx1ZSwgdmFsdWVSZXN1bHRUbXAsIGFkZHJlc3MpOworICAgICAgICByZWxvb3BCbG9jay0+YXBw
ZW5kKE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNoLCBjYW5vbmljYWxXaWR0aCh3aWR0aCkpLCBtX3Zh
bHVlLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSB2YWx1ZVJlc3VsdFRt
cCwgZXhwZWN0ZWRWYWx1ZVRtcCk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5zZXRTdWNjZXNzb3Jz
KGNvbXBhcmlzb25GYWlsLCBzdG9yZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHN0b3JlQmxv
Y2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1f
dmFsdWUsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCk7CisgICAg
ICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEJyYW5j
aFRlc3QzMiwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3VsdFRt
cCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3Nv
cnMoc3VjY2Vzcywgd2Vha0ZhaWwpOworICAgICAgICAgICAgZG9uZUJsb2NrLT5zdWNjZXNzb3Jz
KCkuY2xlYXIoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkb25lQmxvY2stPnNpemUo
KSk7CisgICAgICAgICAgICBkb25lQmxvY2stPmFwcGVuZChPb3BzLCBtX3ZhbHVlKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpc1N0cm9uZykgeworICAgICAgICAgICAgICAg
IHN0b3JlQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2Vt
Ymxlcjo6WmVybyksIHN1Y2Nlc3NCb29sUmVzdWx0VG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAg
ICAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMoc3VjY2Vzc0Jsb2NrLCByZWxv
b3BCbG9jayk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2Nr
LT5hcHBlbmQoTW92ZSwgbV92YWx1ZSwgQXJnOjppbW0oIWludmVydCksIGJvb2xSZXN1bHRUbXAp
OworICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+YXBwZW5kKEp1bXAsIG1fdmFsdWUpOwor
ICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIWludmVydCkKKyAgICAg
ICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKFhvcjMyLCBtX3ZhbHVlLCBBcmc6OmJp
dEltbSgxKSwgYm9vbFJlc3VsdFRtcCwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEp1bXAsIG1fdmFsdWUpOworICAg
ICAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmFpbEJsb2NrLT5hcHBlbmQoTW92
ZSwgbV92YWx1ZSwgQXJnOjppbW0oaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAg
ICBmYWlsQmxvY2stPmFwcGVuZChKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgIGZhaWxCbG9j
ay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgIFRtcCB0bXAgPSBtX2NvZGUubmV3VG1wKEdQ
KTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29kZSh3
aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgdmFsdWVSZXN1bHRUbXAsIGFkZHJl
c3MsIHRtcCk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0
MzIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHRtcCwgQXJnOjpiaXRJbW0o
LTEpKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+c2V0U3VjY2Vzc29ycyhmYWlsQmxv
Y2ssIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBib29sIGFwcGVu
ZFZvaWRBdG9taWMoQWlyOjpPcGNvZGUgYXRvbWljT3Bjb2RlKQorICAgIHsKKyAgICAgICAgaWYg
KG1fdXNlQ291bnRzLm51bVVzZXMobV92YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIAorICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAg
IAorICAgICAgICBpZiAoaXNWYWxpZEZvcm0oYXRvbWljT3Bjb2RlLCBBcmc6OkltbSwgYWRkcmVz
cy5raW5kKCkpICYmIGltbShtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgIGFwcGVu
ZChhdG9taWNPcGNvZGUsIGltbShtX3ZhbHVlLT5jaGlsZCgwKSksIGFkZHJlc3MpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1Zh
bGlkRm9ybShhdG9taWNPcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAg
ICAgICAgIGFwcGVuZChhdG9taWNPcGNvZGUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGFkZHJl
c3MpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZEdlbmVyYWxBdG9t
aWMoQWlyOjpPcGNvZGUgb3Bjb2RlKQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21p
YyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAKKyAgICAgICAgQXJnIGFk
ZHJlc3MgPSBhZGRyKG1fdmFsdWUpOworICAgICAgICBUbXAgb2xkVmFsdWUgPSBtX2NvZGUubmV3
VG1wKEdQKTsKKyAgICAgICAgVG1wIG5ld1ZhbHVlID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAg
ICAgIAorICAgICAgICAvLyBXZSBuZWVkIGEgQ0FTIGxvb3Agb3IgYSBMTC9TQyBsb29wLiBVc2lu
ZyBwcmVwYXJlL2F0dGVtcHQgamFyZ29uLCB3ZSB3YW50OgorICAgICAgICAvLworICAgICAgICAv
LyBCbG9jayAjcmVsb29wOgorICAgICAgICAvLyAgICAgUHJlcGFyZQorICAgICAgICAvLyAgICAg
b3Bjb2RlCisgICAgICAgIC8vICAgICBBdHRlbXB0CisgICAgICAgIC8vICAgU3VjY2Vzc29yczog
VGhlbjojZG9uZSwgRWxzZTojcmVsb29wCisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAg
ICAvLyAgICAgTW92ZSBvbGRWYWx1ZSwgcmVzdWx0CisgICAgICAgIAorICAgICAgICBhcHBlbmQo
cmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgb2xkVmFsdWUsIHRtcChhdG9taWMp
KTsKKyAgICAgICAgCisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogcmVsb29wQmxvY2sgPSBuZXdC
bG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFp
cjo6QmFzaWNCbG9jayogZG9uZUJsb2NrOworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ss
IGRvbmVCbG9jayk7CisgICAgICAgIAorICAgICAgICBhcHBlbmQoSnVtcCk7CisgICAgICAgIGJl
Z2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAgICAKKyAgICAgICAg
QWlyOjpPcGNvZGUgcHJlcGFyZU9wY29kZTsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSB7CisgICAgICAgICAgICBj
YXNlIFdpZHRoODoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDhTaWduZWRF
eHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0
aDE2OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkMTZTaWduZWRFeHRlbmRU
bzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDMyOgor
ICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlMzI7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICAgICAgcHJlcGFy
ZU9wY29kZSA9IE1vdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwor
ICAgICAgICAgICAgb3Bjb2RlID0gbG9hZExpbmtPcGNvZGUoYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpLCBhdG9taWMtPmhhc0ZlbmNlKCkpOworICAgICAgICB9CisgICAgICAgIHJlbG9vcEJsb2Nr
LT5hcHBlbmQocHJlcGFyZU9wY29kZSwgbV92YWx1ZSwgYWRkcmVzcywgb2xkVmFsdWUpOworICAg
ICAgICAKKyAgICAgICAgaWYgKG9wY29kZSAhPSBOb3ApIHsKKyAgICAgICAgICAgIGlmIChpbW0o
YXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpU
bXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29k
ZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwor
ICAgICAgICAgICAgZWxzZSBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpU
bXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29k
ZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChy
ZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwor
ICAgICAgICAgICAgICAgIGlmIChpbW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0o
b3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICByZWxvb3BC
bG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdW
YWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZWxvb3BC
bG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdW
YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNYODYoKSkg
eworICAgICAgICAgICAgQWlyOjpPcGNvZGUgY2FzT3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChC
cmFuY2hBdG9taWNTdHJvbmdDQVMsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSk7CisgICAgICAg
ICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUo
KSksIG9sZFZhbHVlLCBtX2VheCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKGNh
c09wY29kZSwgbV92YWx1ZSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNz
KSwgbV9lYXgsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBUbXAgYm9vbFJlc3Vs
dCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChz
dG9yZUNvbmRPcGNvZGUoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpLCBhdG9taWMtPmhhc0ZlbmNl
KCkpLCBuZXdWYWx1ZSwgYWRkcmVzcywgYm9vbFJlc3VsdCk7CisgICAgICAgICAgICByZWxvb3BC
bG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpa
ZXJvKSwgYm9vbFJlc3VsdCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgfQorICAgICAgICBy
ZWxvb3BCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICB9
CisgICAgCiAgICAgdm9pZCBsb3dlcigpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUt
Pm9wY29kZSgpKSB7CkBAIC0xOTcxLDMwICsyMzYyLDUwIEBAIHByaXZhdGU6CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0
cmFwcGluZ0luc3QobV92YWx1ZSwgbW92ZUZvclR5cGUobV92YWx1ZS0+dHlwZSgpKSwgbV92YWx1
ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBNZW1vcnlWYWx1
ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUgPSBBaXI6Ok9vcHM7CisgICAgICAgICAgICBpZiAobWVtb3J5LT5oYXNG
ZW5jZSgpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChtZW1vcnktPnR5cGUoKSkgeworICAg
ICAgICAgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExv
YWRBY3EzMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBJbnQ2NDoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTY0OworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBvcGNvZGUgPSBtb3ZlRm9yVHlwZShtZW1vcnktPnR5cGUoKSk7CisgICAgICAg
ICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkciht
X3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ4UzogewotICAgICAgICAgICAgYXBwZW5k
KHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOFNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOFNp
Z25lZEV4dGVuZFRvMzIgOiBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICBhcHBl
bmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwg
dG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIExvYWQ4WjogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVl
LCBMb2FkOCwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAg
ICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFz
RmVuY2UoKSA/IExvYWRBY3E4IDogTG9hZDg7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJ
bnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUp
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQx
NlM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDE2U2ln
bmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7Cisg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4o
KS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkMTZTaWduZWRF
eHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNv
ZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZaOiB7Ci0gICAgICAgICAg
ICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNiwgbV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBt
X3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNiA6IExvYWQx
NjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3Zh
bHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotCisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBZGQ6IHsKICAgICAgICAg
ICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDky
LDcgKzI1MDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmlzQ2hpbGwo
KSkKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwogICAgICAgICAg
ICAgaWYgKGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAg
ICAgIGxvd2VyWDg2RGl2KERpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2RGl2KERpdik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNT
RVJUKCFpc1g4NigpIHx8IGlzRmxvYXQobV92YWx1ZS0+dHlwZSgpKSk7CkBAIC0yMTAzLDcgKzI1
MTQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgVURpdjogewogICAgICAgICAgICAgaWYg
KGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAgIGxv
d2VyWDg2VURpdihVRGl2KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVEaXYpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjExNywxMyArMjUy
OCwxMyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE1vZDogewogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaXNYODYoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV92YWx1ZS0+
aXNDaGlsbCgpKTsKLSAgICAgICAgICAgIGxvd2VyWDg2RGl2KE1vZCk7CisgICAgICAgICAgICBh
cHBlbmRYODZEaXYoTW9kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAg
ICAgIGNhc2UgVU1vZDogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7Ci0g
ICAgICAgICAgICBsb3dlclg4NlVEaXYoVU1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZVRGl2
KFVNb2QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxNjIsMTAgKzI1
NzMsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPE5vdDMyLCBOb3Q2
ND4obV92YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5p
c0ludCgxKQorICAgICAgICAgICAgICAgICYmIGlzQXRvbWljQ0FTKG1fdmFsdWUtPmNoaWxkKDAp
LT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAmJiBjYW5CZUludGVybmFsKG1fdmFsdWUtPmNo
aWxkKDApKSkgeworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxk
KDApKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZS0+Y2hpbGQoMCksIHRydWUp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAog
ICAgICAgICAgICAgYXBwZW5kQmluT3A8WG9yMzIsIFhvcjY0LCBYb3JEb3VibGUsIFhvckZsb2F0
LCBDb21tdXRhdGl2ZT4oCiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFs
dWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICBhcHBlbmRVbk9wPERlcGVu
ZDMyLCBEZXBlbmQ2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTaGw6IHsKICAgICAgICAgICAgIGlmIChtX3ZhbHVl
LT5jaGlsZCgxKS0+aXNJbnQzMigxKSkgewpAQCAtMjI2Niw3ICsyNjkxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZFN0
b3JlKHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9y
ZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0yMjg3LDcgKzI3MTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBw
ZW5kU3RvcmUoQWlyOjpTdG9yZTgsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAg
ICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIzMDgsNyArMjczMyw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcHBlbmRTdG9yZShBaXI6OlN0b3JlMTYsIHZh
bHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3Zh
bHVlLCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTI0MTYsNyArMjg0MSwyMiBAQCBwcml2YXRlOgogICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBFcXVhbDoKLSAgICAgICAgY2FzZSBOb3RFcXVhbDoKKyAgICAgICAgY2Fz
ZSBOb3RFcXVhbDogeworICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUo
KSA9PSBBdG9taWNTdHJvbmdDQVMKKyAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgw
KS0+Y2hpbGQoMCkgPT0gbV92YWx1ZS0+Y2hpbGQoMSkKKyAgICAgICAgICAgICAgICAmJiBjYW5C
ZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCgh
bV9sb2NrZWQuY29udGFpbnMobV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpKSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgxKSkpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUt
PmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZS0+Y2hpbGQoMCks
IG1fdmFsdWUtPm9wY29kZSgpID09IE5vdEVxdWFsKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBtX2luc3RzLmxh
c3QoKS5hcHBlbmQoY3JlYXRlQ29tcGFyZShtX3ZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIExlc3NUaGFuOgogICAgICAg
ICBjYXNlIEdyZWF0ZXJUaGFuOgogICAgICAgICBjYXNlIExlc3NFcXVhbDoKQEAgLTI3MjcsNiAr
MzE2NywzOSBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBCcmFuY2g6IHsK
KyAgICAgICAgICAgIGlmIChjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAg
ICAgICAgICAgICAgIFZhbHVlKiBicmFuY2hDaGlsZCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAg
ICAgICAgICAgICAgIHN3aXRjaCAoYnJhbmNoQ2hpbGQtPm9wY29kZSgpKSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRl
cm5hbChicmFuY2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hD
aGlsZCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICAg
ICAgICAgICAgICAvLyBBIGJyYW5jaCBpcyBhIGNvbXBhcmlzb24gdG8gemVyby4KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+aXNJbnQoMCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZCwgZmFsc2UpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBj
YXNlIEVxdWFsOgorICAgICAgICAgICAgICAgIGNhc2UgTm90RXF1YWw6CisgICAgICAgICAgICAg
ICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9u
Z0NBUworICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChicmFuY2hDaGls
ZC0+b3Bjb2RlKDApKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgYnJhbmNoQ2hpbGQtPmNo
aWxkKDApLT5jaGlsZCgwKSA9PSBicmFuY2hDaGlsZC0+Y2hpbGQoMSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkLT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLCBicmFuY2hD
aGlsZC0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnN0
cy5sYXN0KCkuYXBwZW5kKGNyZWF0ZUJyYW5jaChtX3ZhbHVlLT5jaGlsZCgwKSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNzg0LDcgKzMyNTcsODEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGFwcGVuZChBaXI6OkVudHJ5U3dpdGNoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoK
KyAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgIGFwcGVuZENBUyht
X3ZhbHVlLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6IHsKKyAgICAgICAgICAgIEF0b21pY1Zh
bHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlm
IChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQWRkLCBhdG9taWMtPm9w
ZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAgICAgQWly
OjpPcGNvZGUgb3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnQWRkLCBhdG9taWMt
Pm9wZXJhdGlvbldpZHRoKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWRPcGNvZGUob3Bjb2Rl
LCBBcmc6OlRtcCwgYWRkcmVzcykpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1v
dmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0bXAoYXRv
bWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyksIGFkZHJl
c3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEFkZCwgY2Fub25pY2FsV2lk
dGgoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOiB7CisgICAgICAgICAgICBBdG9t
aWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAg
ICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1N1YiwgYXRvbWlj
LT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoU3Vi
LCBjYW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hj
aGdBbmQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxB
dG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9G
T1JfV0lEVEgoQXRvbWljQW5kLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxB
dG9taWMoT1BDT0RFX0ZPUl9XSURUSChBbmQsIGNhbm9uaWNhbFdpZHRoKGF0b21pYy0+b3BlcmF0
aW9uV2lkdGgoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1
ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAo
YXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY09yLCBhdG9taWMtPm9wZXJh
dGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChPciwgY2Fub25p
Y2FsV2lkdGgoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOiB7
CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFs
dWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRI
KEF0b21pY1hvciwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9Q
Q09ERV9GT1JfV0lEVEgoWG9yLCBjYW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
QXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hjaGcsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgo
KSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZE9wY29kZShvcGNvZGUsIEFyZzo6VG1wLCBhZGRy
ZXNzKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWlj
LT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9taWMpKTsKKyAgICAgICAg
ICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVzcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBh
cHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoWG9yLCBjYW5vbmljYWxXaWR0aChh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTI3OTIsNjQgKzMzMzksNyBAQCBwcml2YXRlOgogICAgICAgICBkYXRhTG9n
KCJGQVRBTDogY291bGQgbm90IGxvd2VyICIsIGRlZXBEdW1wKG1fcHJvY2VkdXJlLCBtX3ZhbHVl
KSwgIlxuIik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQot
Ci0gICAgdm9pZCBsb3dlclg4NkRpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4
KTsKLSAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAgICAgICAg
QWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKLSAgICAgICAgQWlyOjpPcGNvZGUgZGl2
OwotICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgewotICAgICAgICBjYXNlIEludDMy
OgotICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdv
cmQzMjsKLSAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgSW50NjQ6Ci0gICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2
Q29udmVydFRvUXVhZFdvcmQ2NDsKLSAgICAgICAgICAgIGRpdiA9IFg4NkRpdjY0OwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOwotICAgICAgICBYODZSZWdpc3RlcnM6
OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBYODZS
ZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxk
KDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdvcmQsIGVheCwgZWR4
KTsKLSAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkp
OwotICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7Ci0KLSNl
bHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOwotI2VuZGlmCi0gICAgfQotCi0gICAgdm9pZCBsb3dlclg4NlVEaXYoQjM6Ok9w
Y29kZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICAgICAgVG1w
IGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBlZHggPSBUbXAoWDg2
UmVnaXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGRpdiA9IG1fdmFsdWUtPnR5
cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsKLQotICAgICAgICBBU1NFUlQo
b3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKLSAgICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3Rl
cklEIHJlc3VsdCA9IG9wID09IFVEaXYgPyBYODZSZWdpc3RlcnM6OmVheCA6IFg4NlJlZ2lzdGVy
czo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBl
YXgpOwotICAgICAgICBhcHBlbmQoWG9yNjQsIGVkeCwgZWR4KTsKLSAgICAgICAgYXBwZW5kKGRp
diwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOwotICAgICAgICBhcHBlbmQoTW92
ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFS
QU0ob3ApOwotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZgotICAg
IH0KLQorICAgIAogICAgIEluZGV4U2V0PFZhbHVlPiBtX2xvY2tlZDsgLy8gVGhlc2UgYXJlIHZh
bHVlcyB0aGF0IHdpbGwgaGF2ZSBubyBUbXAgaW4gQWlyLgogICAgIEluZGV4TWFwPFZhbHVlLCBU
bXA+IG1fdmFsdWVUb1RtcDsgLy8gVGhlc2UgYXJlIHZhbHVlcyB0aGF0IG11c3QgaGF2ZSBhIFRt
cCBpbiBBaXIuIFdlIHNheSB0aGF0IGEgVmFsdWUqIHdpdGggYSBub24tbnVsbCBUbXAgaXMgInBp
bm5lZCIuCiAgICAgSW5kZXhNYXA8VmFsdWUsIFRtcD4gbV9waGlUb1RtcDsgLy8gRWFjaCBQaGkg
Z2V0cyBpdHMgb3duIFRtcC4KQEAgLTI4NjQsNyArMzM1NCw3IEBAIHByaXZhdGU6CiAKICAgICBW
ZWN0b3I8VmVjdG9yPEluc3QsIDQ+PiBtX2luc3RzOwogICAgIFZlY3RvcjxJbnN0PiBtX3Byb2xv
Z3VlOwotCisgICAgCiAgICAgQjM6OkJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgYm9vbCBtX2lz
UmFyZTsKICAgICB1bnNpZ25lZCBtX2luZGV4OwpAQCAtMjg3NSw2ICszMzY1LDEyIEBAIHByaXZh
dGU6CiAKICAgICBQcm9jZWR1cmUmIG1fcHJvY2VkdXJlOwogICAgIENvZGUmIG1fY29kZTsKKwor
ICAgIEFpcjo6QmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsKKworICAgIFRt
cCBtX2VheDsKKyAgICBUbXAgbV9lY3g7CisgICAgVG1wIG1fZWR4OwogfTsKIAogfSAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5
VmFsdWUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNNZW1vcnlWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDMwICszNCw0OCBAQCBNZW1v
cnlWYWx1ZTo6fk1lbW9yeVZhbHVlKCkKIHsKIH0KIAorVHlwZSBNZW1vcnlWYWx1ZTo6YWNjZXNz
VHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzTG9hZChvcGNvZGUoKSkpCisgICAgICAgIHJldHVy
biB0eXBlKCk7CisgICAgLy8gVGhpcyBoYXBwZW5zIHRvIHdvcmsgZm9yIGF0b21pY3MsIHRvby4g
VGhhdCdzIHdoeSBBdG9taWNWYWx1ZSBkb2VzIG5vdCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMuCisg
ICAgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7Cit9CisKK0JhbmsgTWVtb3J5VmFsdWU6OmFjY2Vz
c0JhbmsoKSBjb25zdAoreworICAgIHJldHVybiBiYW5rRm9yVHlwZShhY2Nlc3NUeXBlKCkpOwor
fQorCiBzaXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkgY29uc3QKIHsKKyAgICBy
ZXR1cm4gYnl0ZXMoYWNjZXNzV2lkdGgoKSk7Cit9CisKK1dpZHRoIE1lbW9yeVZhbHVlOjpsb2Fk
U3RvcmVXaWR0aCgpIGNvbnN0Cit7CiAgICAgc3dpdGNoIChvcGNvZGUoKSkgewogICAgIGNhc2Ug
TG9hZDhaOgogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgU3RvcmU4OgotICAgICAgICByZXR1
cm4gMTsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICBjYXNlIExvYWQxNlo6CiAgICAgY2Fz
ZSBMb2FkMTZTOgogICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgcmV0dXJuIDI7CisgICAgICAg
IHJldHVybiBXaWR0aDE2OwogICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmV0dXJuIHNpemVvZlR5
cGUodHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZSh0eXBlKCkpOwogICAgIGNh
c2UgU3RvcmU6Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKGNoaWxkKDApLT50eXBlKCkpOwor
ICAgICAgICByZXR1cm4gd2lkdGhGb3JUeXBlKGNoaWxkKDApLT50eXBlKCkpOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gV2lkdGg4OwogICAgIH0KIH0KIAogV2lkdGggTWVtb3J5VmFs
dWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2lkdGhGb3JCeXRlcyhhY2Nl
c3NCeXRlU2l6ZSgpKTsKKyAgICByZXR1cm4gbG9hZFN0b3JlV2lkdGgoKTsKIH0KIAogdm9pZCBN
ZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKQEAgLTY3LDYgKzg1LDggQEAgdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29t
bWFQcmludGVyJgogICAgIGlmICgoaXNMb2FkKCkgJiYgZWZmZWN0cygpLnJlYWRzICE9IHJhbmdl
KCkpCiAgICAgICAgIHx8IChpc1N0b3JlKCkgJiYgZWZmZWN0cygpLndyaXRlcyAhPSByYW5nZSgp
KSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicmFuZ2UgPSAiLCByYW5nZSgpKTsKKyAgICBp
ZiAocGhhbnRvbVJhbmdlKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgInBoYW50b21SYW5n
ZSA9ICIsIHBoYW50b21SYW5nZSgpKTsKIH0KIAogVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9uZUlt
cGwoKSBjb25zdApAQCAtNzQsNiArOTQsNTggQEAgVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9uZUlt
cGwoKSBjb25zdAogICAgIHJldHVybiBuZXcgTWVtb3J5VmFsdWUoKnRoaXMpOwogfQogCisvLyBV
c2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2Yg
dGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CisvLyBkZXNjcmliZXMgdGhlIHJldHVy
bmVkIHR5cGUpLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBl
LCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAg
IDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQorICAg
ICwgbV9vZmZzZXQob2Zmc2V0KQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
ICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhTOgor
ICAgICAgICBjYXNlIExvYWQxNlo6CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAgICAg
IEFTU0VSVCh0eXBlID09IEludDMyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0b3JlODoKKyAgICAgICAgY2FzZSBTdG9yZTE2OgorICAgICAgICBjYXNlIFN0b3JlOgorICAg
ICAgICAgICAgQVNTRVJUKHR5cGUgPT0gVm9pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9
CisgICAgfQorfQorCisvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJu
IHR5cGUgaXMgaW1wbGllZC4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9y
aWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgOiBN
ZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpCit7CisgICAg
aWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7
CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2Fz
ZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExvYWQxNlM6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgfQorfQorCisvLyBVc2UgdGhpcyBmb3JtIGZvciBzdG9yZXMuCitNZW1vcnlWYWx1
ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZh
bHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgOiBWYWx1ZShDaGVja2VkT3Bj
b2RlLCBraW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQo
b2Zmc2V0KQoreworICAgIEFTU0VSVChpc1N0b3JlKGtpbmQub3Bjb2RlKCkpKTsKK30KKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw0OCArMjcsMTcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRl
ICJCM0JhbmsuaCIKICNpbmNsdWRlICJCM0hlYXBSYW5nZS5oIgogI2luY2x1ZGUgIkIzVmFsdWUu
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLS8vIEZJWE1FOiBXZSB3YW50
IHRvIGFsbG93IGZlbmNlZCBtZW1vcnkgYWNjZXNzZXMgb24gQVJNLgotLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0OQotCiBjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBNZW1vcnlWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgYWNjZXB0cyhLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2Rl
KCkpIHsKLSAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgIGNhc2UgTG9hZDhTOgotICAgICAg
ICBjYXNlIExvYWQxNlo6Ci0gICAgICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAgY2FzZSBMb2Fk
OgotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICBj
YXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMg
Ym9vbCBpc1N0b3JlKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZC5vcGNv
ZGUoKSkgewotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9yZTE2OgotICAg
ICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBz
dGF0aWMgYm9vbCBpc0xvYWQoS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFjY2Vw
dHMoa2luZCkgJiYgIWlzU3RvcmUoa2luZCk7CisgICAgICAgIHJldHVybiBpc01lbW9yeShraW5k
Lm9wY29kZSgpKTsKICAgICB9CiAKICAgICB+TWVtb3J5VmFsdWUoKTsKQEAgLTc4LDc2ICs0Nyw1
NiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKCkgY29uc3QgeyByZXR1
cm4gbV9yYW5nZTsgfQogICAgIHZvaWQgc2V0UmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5nZSkg
eyBtX3JhbmdlID0gcmFuZ2U7IH0KKyAgICAKKyAgICAvLyBUaGlzIGlzIGFuIGFsaWFzIGZvciBy
YW5nZS4KKyAgICBjb25zdCBIZWFwUmFuZ2UmIGFjY2Vzc1JhbmdlKCkgY29uc3QgeyByZXR1cm4g
cmFuZ2UoKTsgfQorICAgIHZvaWQgc2V0QWNjZXNzUmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5n
ZSkgeyBzZXRSYW5nZShyYW5nZSk7IH0KKyAgICAKKyAgICBjb25zdCBIZWFwUmFuZ2UmIGZlbmNl
UmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2ZlbmNlUmFuZ2U7IH0KKyAgICB2b2lkIHNldEZlbmNl
UmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5nZSkgeyBtX2ZlbmNlUmFuZ2UgPSByYW5nZTsgfQor
CisgICAgYm9vbCBpc1N0b3JlKCkgY29uc3QgeyByZXR1cm4gaXNTdG9yZShvcGNvZGUoKSk7IH0K
KyAgICBib29sIGlzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIGlzTG9hZChvcGNvZGUoKSk7IH0KIAot
ICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBWb2lkOyB9Ci0gICAg
Ym9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgIT0gVm9pZDsgfQorICAgIGJvb2wg
aGFzRmVuY2UoKSBjb25zdCB7IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsgfQogCisgICAgVHlwZSBh
Y2Nlc3NUeXBlKCkgY29uc3Q7CisgICAgQmFuayBhY2Nlc3NCYW5rKCkgY29uc3Q7CiAgICAgc2l6
ZV90IGFjY2Vzc0J5dGVTaXplKCkgY29uc3Q7Ci0gICAgV2lkdGggYWNjZXNzV2lkdGgoKSBjb25z
dDsKKyAgICAKKyAgICAvLyBTbGlnaHRseSBmYXN0ZXIgdmVyc2lvbiBvZiBhY2Nlc3NXaWR0aCwg
aWYgeW91IGtub3cgdGhhdCB5b3UncmUgd29ya2luZyB3aXRoIGEgbG9hZCBvciBzdG9yZS4KKyAg
ICBXaWR0aCBsb2FkU3RvcmVXaWR0aCgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgV2lkdGgg
YWNjZXNzV2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1ldGEoQ29t
bWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lk
IGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKLQotICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQg
KGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEg
c3VmZml4IHRoYXQKLSAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgotICAgIE1l
bW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9p
bnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUs
IGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBr
aW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zmc2V0LCBBcmd1bWVudHMu
Li4gYXJndW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUs
IG9yaWdpbiwgYXJndW1lbnRzLi4uKQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAg
ICAgLCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCiAgICAgewotICAgICAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAg
ICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIExvYWQ4WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDhTOgotICAgICAgICAgICAgY2FzZSBM
b2FkMTZaOgotICAgICAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAgICAgICAgICAgIEFTU0VS
VCh0eXBlID09IEludDMyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAgICAgY2FzZSBT
dG9yZToKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBWb2lkKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CisgICAgCisg
ICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3Ig
YW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAorICAgIC8vIGRlc2NyaWJl
cyB0aGUgcmV0dXJuZWQgdHlwZSkuCisgICAgTWVtb3J5VmFsdWUoS2luZCwgVHlwZSwgT3JpZ2lu
LCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKTsKIAogICAgIC8vIFVzZSB0aGlz
IGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgotICAgIE1l
bW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMy
X3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2lu
LCBwb2ludGVyLCBvZmZzZXQpCi0gICAgewotICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBP
cmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOwogCiAgICAgLy8gVXNl
IHRoaXMgZm9ybSBmb3Igc3RvcmVzLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2lu
IG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAw
KQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFs
dWUsIHBvaW50ZXIpCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFu
Z2UoSGVhcFJhbmdlOjp0b3AoKSkKLSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVE
KSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNh
c2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAgICAgY2FzZSBT
dG9yZToKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KKyAgICBNZW1vcnlWYWx1ZShLaW5k
LCBPcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0g
MCk7CisgICAgCiAgICAgaW50MzJfdCBtX29mZnNldCB7IDAgfTsKLSAgICBIZWFwUmFuZ2UgbV9y
YW5nZTsKKyAgICBIZWFwUmFuZ2UgbV9yYW5nZSB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKyAgICBI
ZWFwUmFuZ2UgbV9mZW5jZVJhbmdlIHsgSGVhcFJhbmdlKCkgfTsKIH07CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHJldmlz
aW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNs
dWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC04Miw3ICs4Myw2IEBA
IGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgTW9kLCAvLyBBbGwgYmV0cyBhcmUgb2ZmIGFz
IHRvIHdoYXQgd2lsbCBoYXBwZW4gd2hlbiB5b3UgZXhlY3V0ZSB0aGlzIGZvciAtMl4zMSUtMSBh
bmQgeCUwLgogICAgIFVNb2QsCiAKLQogICAgIC8vIFBvbHltb3JwaGljIG5lZ2F0aW9uLiBOb3Rl
IHRoYXQgd2Ugb25seSBuZWVkIHRoaXMgZm9yIGZsb2F0aW5nIHBvaW50LCBzaW5jZSBpbnRlZ2Vy
IG5lZ2F0aW9uCiAgICAgLy8gaXMgZXhhY3RseSBsaWtlIFN1YigwLCB4KS4gQnV0IHRoYXQncyBu
b3QgdHJ1ZSBmb3IgZmxvYXRpbmcgcG9pbnQuIFN1YigwLCAwKSBpcyAwLCB3aGlsZQogICAgIC8v
IE5lZygwKSBpcyAtMC4gQWxzbywgd2UgY2Fub25pY2FsaXplIFN1YigwLCB4KSBpbnRvIE5lZyh4
KSBpbiBjYXNlIG9mIGludGVnZXJzLgpAQCAtMTYyLDYgKzE2MiwxMDUgQEAgZW51bSBPcGNvZGUg
OiBpbnQxNl90IHsKICAgICBTdG9yZTE2LAogICAgIC8vIFRoaXMgaXMgYSBwb2x5bW9ycGhpYyBz
dG9yZSBmb3IgSW50MzIsIEludDY0LCBGbG9hdCwgYW5kIERvdWJsZS4KICAgICBTdG9yZSwKKyAg
ICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgYSBib29sZWFu
LiBNYXkgY2hvb3NlIHRvIGRvIG5vdGhpbmcgYW5kIHJldHVybiBmYWxzZS4gWW91IGNhbgorICAg
IC8vIHVzdWFsbHkgYXNzdW1lIHRoYXQgdGhpcyBpcyBmYXN0ZXIgYW5kIHJlc3VsdHMgaW4gbGVz
cyBjb2RlIHRoYW4gQXRvbWljU3Ryb25nQ0FTLCB0aG91Z2ggdGhhdCdzCisgICAgLy8gbm90IG5l
Y2Vzc2FyaWx5IHRydWUgb24gSW50ZWwsIGlmIGluc3RydWN0aW9uIHNlbGVjdGlvbiBkb2VzIGl0
cyBqb2IuIEltYWdpbmUgdGhhdCB0aGlzIG9wY29kZSBpcworICAgIC8vIGFzIGlmIHlvdSBkaWQg
dGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICAvLyBib29sIEF0b21pY1dlYWtDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBUKiBw
dHIpCisgICAgLy8geworICAgIC8vICAgICBpZiAoIXJhbmQoKSkKKyAgICAvLyAgICAgICAgIHJl
dHVybiBmYWxzZTsgLy8gUmVhbCB3b3JsZCBleGFtcGxlIG9mIHRoaXM6IGNvbnRleHQgc3dpdGNo
IG9uIEFSTSB3aGlsZSBkb2luZyBDQVMuCisgICAgLy8gICAgIGlmICgqcHRyICE9IGV4cGVjdGVk
VmFsdWUpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gICAgICpwdHIgPSBu
ZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gfQorICAgIC8vCisgICAg
Ly8gTm90ZSB0aGF0IGFsbCBhdG9taWNzIHB1dCB0aGUgcG9pbnRlciBsYXN0IHRvIGJlIGNvbnNp
c3RlbnQgd2l0aCBob3cgbG9hZHMgYW5kIHN0b3JlcyB3b3JrLiBUaGlzCisgICAgLy8gaXMgYSBn
b29meSB0cmFkaXRpb24sIGJ1dCBpdCdzIGhhcm1sZXNzLCBhbmQgYmV0dGVyIHRoYW4gYmVpbmcg
aW5jb25zaXN0ZW50LgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHdlYWsgQ0FTIGhhcyBubyBm
ZW5jaW5nIGd1YXJhbnRlZXMgd2hlbiBpdCBmYWlscy4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xs
b3dpbmcKKyAgICAvLyB0cmFuc2Zvcm1hdGlvbiBpcyBhbHdheXMgdmFsaWQ6CisgICAgLy8KKyAg
ICAvLyBCZWZvcmU6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FT
KGV4cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3Vj
Y2VzcywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQWZ0ZXI6CisgICAgLy8KKyAgICAvLyAg
ICAgICAgIEJyYW5jaChFcXVhbChMb2FkKHB0ciksIGV4cGVjdGVkKSkKKyAgICAvLyAgICAgICBT
dWNjZXNzb3JzOiBUaGVuOiNhdHRlbXB0LCBFbHNlOiNmYWlsCisgICAgLy8gICAgIEJCI2F0dGVt
cHQ6CisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBw
dHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwK
KyAgICAvLworICAgIC8vIEJvdGgga2luZHMgb2YgQ0FTIGZvciBub24tY2Fub25pY2FsIHdpZHRo
cyAoV2lkdGg4IGFuZCBXaWR0aDE2KSBpZ25vcmUgdGhlIGlycmVsZXZhbnQgYml0cyBvZiB0aGUK
KyAgICAvLyBpbnB1dC4KKyAgICBBdG9taWNXZWFrQ0FTLAorICAgIAorICAgIC8vIEF0b21pYyBj
b21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBEb2VzIG5vdCBoYXZl
IHRoZSBub25kZXRlcm1pbmlzbSBvZiBXZWFrQ0FTLgorICAgIC8vIFRoaXMgaXMgYSBiaXQgbW9y
ZSBjb2RlIGFuZCBhIGJpdCBzbG93ZXIgaW4gc29tZSBjYXNlcywgdGhvdWdoIG5vdCBieSBhIGxv
dC4gSW1hZ2luZSB0aGF0IHRoaXMKKyAgICAvLyBvcGNvZGUgaXMgYXMgaWYgeW91IGRpZCB0aGlz
IGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8v
IFQgQXRvbWljU3Ryb25nQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQor
ICAgIC8vIHsKKyAgICAvLyAgICAgVCBvbGRWYWx1ZSA9ICpwdHI7CisgICAgLy8gICAgIGlmIChv
bGRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgKnB0ciA9IG5ld1ZhbHVl
OworICAgIC8vICAgICByZXR1cm4gb2xkVmFsdWUKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBO
b3RlIHRoYXQgQXRvbWljV2Vha0NBUyBhbmQgQXRvbWljU3Ryb25nQ0FTIHNvcnQgb2YgaGF2ZSB0
aGlzIGtpbmQgb2YgZXF1aXZhbGVuY2U6CisgICAgLy8KKyAgICAvLyBBdG9taWNXZWFrQ0FTKEBl
eHAsIEBuZXcsIEBwdHIpID09IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhAZXhwLCBAbmV3LCBAcHRy
KSwgQGV4cCkKKyAgICAvLworICAgIC8vIEFzc3VtaW5nIHRoYXQgdGhlIFdlYWtDQVMgZG9lcyBu
b3Qgc3B1cmlvdXNseSBmYWlsLCBvZiBjb3Vyc2UuCisgICAgQXRvbWljU3Ryb25nQ0FTLAorICAg
IAorICAgIC8vIEF0b21pY2FsbHkgX19fIGEgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm4gdGhl
IG9sZCB2YWx1ZS4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWljWGNo
Z19fXyhAb3BlcmFuZCwgQHB0cikKKyAgICAvLworICAgIC8vIEZvciBub24tY2Fub25pY2FsIHdp
ZHRocyAoV2lkdGg4IGFuZCBXaWR0aDE2KSwgdGhlc2UgcmV0dXJuIHNpZ24tZXh0ZW5kZWQgcmVz
dWx0cyBhbmQgaWdub3JlIHRoZQorICAgIC8vIGlycmVsZXZhbnQgYml0cyBvZiB0aGVpciBpbnB1
dHMuCisgICAgQXRvbWljWGNoZ0FkZCwKKyAgICBBdG9taWNYY2hnQW5kLAorICAgIEF0b21pY1hj
aGdPciwKKyAgICBBdG9taWNYY2hnU3ViLAorICAgIEF0b21pY1hjaGdYb3IsCisgICAgCisgICAg
Ly8gQXRvbWljYWxseSBleGNoYW5nZSBhIHZhbHVlIHdpdGggYSBtZW1vcnkgbG9jYXRpb24uIFN5
bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGcoQG5ld1ZhbHVlLCBA
cHRyKQorICAgIEF0b21pY1hjaGcsCisgICAgCisgICAgLy8gSW50cm9kdWNlIGFuIGludmlzaWJs
ZSBkZXBlbmRlbmN5IGZvciBibG9ja2luZyBtb3Rpb24gb2YgbG9hZHMgd2l0aCByZXNwZWN0IHRv
IGVhY2ggb3RoZXIuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSBEZXBlbmQoQHBo
YW50b20pCisgICAgLy8KKyAgICAvLyBUaGlzIGlzIGV2ZW50dWFsbHkgY29kZWdlbmVyYXRlZCB0
byBoYXZlIGxvY2FsIHNlbWFudGljcyBhcyBpZiB3ZSBkaWQ6CisgICAgLy8KKyAgICAvLyBAcmVz
dWx0ID0gJDAKKyAgICAvLworICAgIC8vIEJ1dCBpdCBlbnN1cmVzIHRoYXQgdGhlIHVzZXJzIG9m
IEByZXN1bHQgY2Fubm90IGV4ZWN1dGUgdW50aWwgQHBoYW50b20gaXMgY29tcHV0ZWQuCisgICAg
Ly8KKyAgICAvLyBUaGUgY29tcGlsZXIgaXMgbm90IGFsbG93ZWQgdG8gcmVhc29uIGFib3V0IHRo
ZSBmYWN0IHRoYXQgRGVwZW5kIGNvZGVnZW5lcmF0ZXMgdGhpcyB3YXkuIEFueSBraW5kCisgICAg
Ly8gb2YgdHJhbnNmb3JtYXRpb24gb3IgYW5hbHlzaXMgdGhhdCByZWxpZXMgb24gdGhlIGluc2ln
aHQgdGhhdCBEZXBlbmQgaXMgcmVhbGx5IHplcm8gaXMgdW5zb3VuZCwKKyAgICAvLyBiZWNhdXNl
IGl0IHVubG9ja3MgcmVvcmRlcmluZyBvZiB1c2VycyBvZiBAcmVzdWx0IGFuZCBAcGhhbnRvbS4K
KyAgICAvLworICAgIC8vIE9uIFg4NiwgdGhpcyBpcyBsb3dlcmVkIHRvIGEgbG9hZC1sb2FkIGZl
bmNlIGFuZCBAcmVzdWx0IHVzZXMgQHBoYW50b20gZGlyZWN0bHkuCisgICAgLy8KKyAgICAvLyBP
biBBUk0sIHRoaXMgaXMgbG93ZXJlZCBhcyBpZiBsaWtlOgorICAgIC8vCisgICAgLy8gQHJlc3Vs
dCA9IEJpdFhvcihAcGhhbnRvbSwgQHBoYW50b20pCisgICAgLy8KKyAgICAvLyBFeGNlcHQgdGhh
dCB0aGUgY29tcGlsZXIgbmV2ZXIgZ2V0cyBhbiBvcHBvcnR1bml0eSB0byBzaW1wbGlmeSBvdXQg
dGhlIEJpdFhvci4KKyAgICBEZXBlbmQsCiAKICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gY29tcHV0
ZSB0aGUgYWN0dWFsIGFkZHJlc3Mgb2YgYSBXYXNtIG1lbW9yeSBvcGVyYXRpb24uIEl0IHRha2Vz
IGFuIEludFB0cgogICAgIC8vIGFuZCBhIHBpbm5lZCByZWdpc3RlciB0aGVuIGNvbXB1dGVzIHRo
ZSBhcHByb3ByaWF0ZSBJbnRQdHIgYWRkcmVzcy4gRm9yIHRoZSB1c2UtY2FzZSBvZgpAQCAtMzAx
LDYgKzQwMCwxMTAgQEAgaW5saW5lIGJvb2wgaXNEZWZpbml0ZWx5VGVybWluYWwoT3Bjb2RlIAog
ICAgIH0KIH0KIAoraW5saW5lIGJvb2wgaXNMb2FkKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dp
dGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBj
YXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKworaW5saW5lIGJvb2wgaXNTdG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAo
b3Bjb2RlKSB7CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2Ug
U3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzTG9hZFN0b3JlKE9wY29kZSBvcGNv
ZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNl
IExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2FkMTZTOgorICAgIGNhc2Ug
TG9hZDoKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNlIFN0b3JlMTY6CisgICAgY2FzZSBTdG9y
ZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWMoT3Bjb2RlIG9wY29kZSkKK3sK
KyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNl
IEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9t
aWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1
YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY0NBUyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3
aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWlj
U3Ryb25nQ0FTOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1hjaGcoT3Bjb2Rl
IG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0Fk
ZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAg
Y2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0
b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzTWVtb3J5QWNjZXNzKE9wY29k
ZSBvcGNvZGUpCit7CisgICAgcmV0dXJuIGlzQXRvbWljKG9wY29kZSkgfHwgaXNMb2FkU3RvcmUo
b3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZSBzaWduRXh0ZW5kT3Bjb2RlKFdpZHRoIHdpZHRo
KQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgcmV0
dXJuIFNFeHQ4OworICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgcmV0dXJuIFNFeHQxNjsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gT29wczsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBu
YW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVy
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJv
Y2VkdXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiw4IEBAIHZvaWQgUHJvY2Vk
dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGMKICAgICAgICAgfQogICAgICAgICBkYXRhTG9n
KCIgICAgIiwgZGVlcER1bXAoKnRoaXMsIHZhbHVlKSwgIlxuIik7CiAgICAgfQorICAgIGlmICho
YXNRdWlya3MoKSkKKyAgICAgICAgb3V0LnByaW50KCJIYXMgUXVpcmtzOiBUcnVlXG4iKTsKICAg
ICBpZiAodmFyaWFibGVzKCkuc2l6ZSgpKSB7CiAgICAgICAgIG91dC5wcmludCgiVmFyaWFibGVz
OlxuIik7CiAgICAgICAgIGZvciAoVmFyaWFibGUqIHZhcmlhYmxlIDogdmFyaWFibGVzKCkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50
KE9yaWdpbiwgVHlwZSwgaW50NjRfdCB2YWx1ZSk7CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50
KFZhbHVlKiwgaW50NjRfdCB2YWx1ZSk7CiAKKyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0
IGJvdHRvbSBpcyB6ZXJvLgogICAgIFZhbHVlKiBhZGRCb3R0b20oT3JpZ2luLCBUeXBlKTsKICAg
ICBWYWx1ZSogYWRkQm90dG9tKFZhbHVlKik7CiAKQEAgLTE5NSw2ICsxOTYsMTIgQEAgcHVibGlj
OgogICAgIC8vIGFsaXZlLiBHcmVhdCBmb3IgY29tcGlsZXItZ2VuZXJhdGVkIGRhdGEgc2VjdGlv
bnMsIGxpa2Ugc3dpdGNoIGp1bXAgdGFibGVzIGFuZCBjb25zdGFudCBwb29scy4KICAgICAvLyBU
aGlzIHJldHVybnMgbWVtb3J5IHRoYXQgaGFzIGJlZW4gemVyby1pbml0aWFsaXplZC4KICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkKiBhZGREYXRhU2VjdGlvbihzaXplX3QpOworICAgIAorICAg
IC8vIFNvbWUgb3BlcmF0aW9ucyBhcmUgc3BlY2lmaWVkIGluIEIzIElSIHRvIGJlaGF2ZSBvbmUg
d2F5IGJ1dCBvbiB0aGlzIGdpdmVuIENQVSB0aGV5IGJlaGF2ZSBhCisgICAgLy8gZGlmZmVyZW50
IHdheS4gV2hlbiB0cnVlLCB0aG9zZSBCMyBJUiBvcHMgc3dpdGNoIHRvIGJlaGF2aW5nIHRoZSBD
UFUgd2F5LCBhbmQgdGhlIG9wdGltaXplciBtYXkKKyAgICAvLyBzdGFydCB0YWtpbmcgYWR2YW50
YWdlIG9mIGl0LgorICAgIGJvb2wgaGFzUXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNRdWly
a3M7IH0KKyAgICB2b2lkIHNldEhhc1F1aXJrcyhib29sIHZhbHVlKSB7IG1faGFzUXVpcmtzID0g
dmFsdWU7IH0KIAogICAgIE9wYXF1ZUJ5cHJvZHVjdHMmIGJ5cHJvZHVjdHMoKSB7IHJldHVybiAq
bV9ieXByb2R1Y3RzOyB9CiAKQEAgLTI1Miw2ICsyNTksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxTaGFyZWRUYXNrPHZvaWQoUHJpbnRTdHJlYW0mLCBPcmlnaW4pPj4gbV9vcmlnaW5QcmludGVy
OwogICAgIGNvbnN0IHZvaWQqIG1fZnJvbnRlbmREYXRhOwogICAgIFBDVG9PcmlnaW5NYXAgbV9w
Y1RvT3JpZ2luTWFwOworICAgIGJvb2wgbV9oYXNRdWlya3MgeyBmYWxzZSB9OwogfTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VTdHJlbmd0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUmVkdWNlU3RyZW5ndGguY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwMiw3
ICs2MDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBicmVhazsK
LQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmVnOgogICAgICAgICAgICAgLy8gVHVybiB0
aGlzOiBOZWcoY29uc3RhbnQpCiAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IC1jb25zdGFudApA
QCAtMTI5NSw2ICsxMjk1LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKCFtX3Byb2MuaGFzUXVpcmtzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJu
IHRoaXM6IFNFeHQ4KEF0b21pY1hjaGdfX18pCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlz
OiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAgICAgaWYgKGlzQXRvbWljWGNoZyhtX3ZhbHVl
LT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNo
aWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+b3BlcmF0aW9uV2lkdGgoKSA9PSBXaWR0aDgpIHsK
KyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgw
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU0V4dDE2OgpAQCAt
MTM0Myw2ICsxMzUzLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFtX3By
b2MuaGFzUXVpcmtzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNFeHQxNihB
dG9taWNYY2hnX19fKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19f
XworICAgICAgICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9w
Y29kZSgpKQorICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRv
bWljVmFsdWU+KCktPm9wZXJhdGlvbldpZHRoKCkgPT0gV2lkdGgxNikgeworICAgICAgICAgICAg
ICAgICAgICByZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTRXh0MzI6CkBAIC0yMTAxLDIyICsyMTIx
LDI1IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChtX3ZhbHVlLT5udW1DaGlsZHJlbigpID49
IDIpOwogICAgICAgICAKICAgICAgICAgLy8gTGVhdmUgaXQgYWxvbmUgaWYgdGhlIHJpZ2h0IGNo
aWxkIGlzIGEgY29uc3RhbnQuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNDb25z
dGFudCgpKQorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKQorICAg
ICAgICAgICAgfHwgbV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NB
UykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIGlmIChtX3ZhbHVlLT5j
aGlsZCgwKS0+aXNDb25zdGFudCgpKSB7CisgICAgICAgIGF1dG8gc3dhcCA9IFsmXSAoKSB7CiAg
ICAgICAgICAgICBzdGQ6OnN3YXAobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEp
KTsKICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNo
aWxkKDApLT5pc0NvbnN0YW50KCkpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOworICAgICAg
ICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJv
bmdDQVMpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOworICAgICAgICAKICAgICAgICAgLy8g
U29ydCB0aGUgb3BlcmFuZHMuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGNhbm9uaWNhbGl6YXRpb24u
IFdlIHVzZSB0aGUgaW5kZXggaW5zdGVhZCBvZgogICAgICAgICAvLyB0aGUgYWRkcmVzcyB0byBt
YWtlIHRoaXMgYXQgbGVhc3Qgc2xpZ2h0bHkgZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAgaWYgKG1f
dmFsdWUtPmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4KCkpIHsK
LSAgICAgICAgICAgIHN0ZDo6c3dhcChtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQo
MSkpOwotICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmluZGV4KCkgPiBtX3Zh
bHVlLT5jaGlsZCgxKS0+aW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7CiAgICAg
fQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBhIGZvcndhcmQgYW5hbHlz
aXMuIEluc3RlYWQsIHdlIHVzZXMgYSBib3VuZGVkLXNlYXJjaCBiYWNrd2FyZHMKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQ2LDYgKzM0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQg
IiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJ
bnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZh
bHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTG9hZDoKQEAgLTM1Myw2ICszNTQs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVu
KCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgIT0gVm9pZCwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAg
ICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgU3RvcmU4OgpAQCAtMzYyLDYgKzM2NCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQz
MiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hp
bGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAg
ICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgU3RvcmU6CkBAIC0zNjksOCArMzcyLDQ5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2
YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgp
ID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3Rh
Y2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgp
LmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSB2YWx1ZS0+
Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRl
clR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21p
Yyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoK
KyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVu
KCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEp
LT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJ
bnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0
b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAg
IGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAg
ICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFs
dWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+
dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50
KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAg
ICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZh
bHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGls
ZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgICAgICAgICBW
QUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0
ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYgKzU4MSwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUZlbmNlKFZh
bHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAg
ICAgICAgICBWQUxJREFURShtZW1vcnR5LT5hY2Nlc3NCYW5rKCkgPT0gR1AsICgiRmVuY2UgYXQg
IiwgKm1lbW9yeSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRlQXRvbWljKFZhbHVl
KiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSB2YWx1ZS0+YXM8
QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBWQUxJREFURShiZXN0VHlwZShhdG9t
aWMtPm9wZXJhdGlvbldpZHRoKCkpID09IGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVTdGFja0FjY2VzcyhWYWx1ZSog
dmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDcgQEAgYm9vbCBWYWx1ZTo6cmV0dXJuc0Jvb2wo
KSBjb25zdAogICAgIGNhc2UgQWJvdmVFcXVhbDoKICAgICBjYXNlIEJlbG93RXF1YWw6CiAgICAg
Y2FzZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgY2FzZSBQaGk6CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
aGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC01ODksNiArNTkwLDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZm
ZWN0cygpIGNvbnN0CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1YWxPclVub3Jk
ZXJlZDoKICAgICBjYXNlIFNlbGVjdDoKKyAgICBjYXNlIERlcGVuZDoKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBEaXY6CiAgICAgY2FzZSBVRGl2OgpAQCAtNjAwLDE2ICs2MDIsNDQgQEAgRWZm
ZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBMb2FkOFM6CiAgICAgY2FzZSBM
b2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKLSAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJlc3Vs
dC5yZWFkcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAgIGNhc2UgTG9hZDogewor
ICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAg
IHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+cGhh
bnRvbVJhbmdlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC53cml0ZXMgPSBtZW1vcnktPnBoYW50
b21SYW5nZSgpOworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQog
ICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICBjYXNlIFN0b3JlODoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgY2FzZSBTdG9y
ZToKLSAgICAgICAgcmVzdWx0LndyaXRlcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOwor
ICAgIGNhc2UgU3RvcmU6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9y
eVZhbHVlPigpOworICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5yYW5nZSgpOworICAg
ICAgICBpZiAobWVtb3J5LT5waGFudG9tUmFuZ2UoKSkgeworICAgICAgICAgICAgcmVzdWx0LnJl
YWRzID0gbWVtb3J5LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVl
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNh
c2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0
b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hn
U3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAg
ICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICBy
ZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCkgfCBtZW1vcnktPnBoYW50b21SYW5nZSgpOwor
ICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5yYW5nZSgpIHwgbWVtb3J0eS0+cGhhbnRv
bVJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPnBoYW50b21SYW5nZSgpKQorICAgICAgICAg
ICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQg
PSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAg
ICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CkBAIC02MTcs
MTggKzY0Nyw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgICAgICBjb25z
dCBGZW5jZVZhbHVlKiBmZW5jZSA9IGFzPEZlbmNlVmFsdWU+KCk7CiAgICAgICAgIHJlc3VsdC5y
ZWFkcyA9IGZlbmNlLT5yZWFkOwogICAgICAgICByZXN1bHQud3JpdGVzID0gZmVuY2UtPndyaXRl
OwotICAgICAgICAKLSAgICAgICAgLy8gUHJldmVudCBraWxsaW5nIG9mIGZlbmNlcyB0aGF0IGNs
YWltIG5vdCB0byB3cml0ZSBhbnl0aGluZy4gSXQncyBhIGJpdCB3ZWlyZCB0aGF0IHdlIHVzZQot
ICAgICAgICAvLyBsb2NhbCBzdGF0ZSBhcyB0aGUgd2F5IHRvIGRvIHRoaXMsIGJ1dCBpdCBoYXBw
ZW5zIHRvIHdvcms6IHdlIG11c3QgYXNzdW1lIHRoYXQgd2UgY2Fubm90Ci0gICAgICAgIC8vIGtp
bGwgd3JpdGVzTG9jYWxTdGF0ZSB1bmxlc3Mgd2UgdW5kZXJzdGFuZHMgZXhhY3RseSB3aGF0IHRo
ZSBpbnN0cnVjdGlvbiBpcyBkb2luZyAobGlrZQotICAgICAgICAvLyB0aGUgd2F5IHRoYXQgZml4
U1NBIHVuZGVyc3RhbmRzIFNldC9HZXQgYW5kIHRoZSB3YXkgdGhhdCByZWR1Y2VTdHJlbmd0aCBh
bmQgb3RoZXJzCi0gICAgICAgIC8vIHVuZGVyc3RhbmQgVXBzaWxvbikuIFRoaXMgd291bGQgb25s
eSBiZWNvbWUgYSBwcm9ibGVtIGlmIHdlIGhhZCBzb21lIGFuYWx5c2lzIHRoYXQgd2FzCi0gICAg
ICAgIC8vIGxvb2tpbmcgdG8gdXNlIHRoZSB3cml0ZXNMb2NhbFN0YXRlIGJpdCB0byBpbnZhbGlk
YXRlIGEgQ1NFIG92ZXIgbG9jYWwgc3RhdGUgb3BlcmF0aW9ucy4KLSAgICAgICAgLy8gVGhlbiBh
IEZlbmNlIHdvdWxkIGxvb2sgYmxvY2ssIHNheSwgdGhlIGVsaW1pbmF0aW9uIG9mIGEgcmVkdW5k
YW50IEdldC4gQnV0IGl0IGxpa2UKLSAgICAgICAgLy8gdGhhdCdzIG5vdCBhdCBhbGwgaG93IG91
ciBvcHRpbWl6YXRpb25zIGZvciBTZXQvR2V0L1Vwc2lsb24vUGhpIHdvcmsgLSB0aGV5IGdyb2sg
dGhlaXIKLSAgICAgICAgLy8gb3BlcmF0aW9ucyBkZWVwbHkgZW5vdWdoIHRoYXQgdGhleSBoYXZl
IG5vIG5lZWQgdG8gY2hlY2sgdGhpcyBiaXQgLSBzbyB0aGlzIGNoZWF0IGlzCi0gICAgICAgIC8v
IGZpbmUuCi0gICAgICAgIHJlc3VsdC53cml0ZXNMb2NhbFN0YXRlID0gdHJ1ZTsKKyAgICAgICAg
cmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ0Nh
bGw6CkBAIC02OTQsNiArNzEzLDcgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAg
Y2FzZSBDaGVjazoKICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAgIGNhc2UgTmVnOgorICAgIGNh
c2UgRGVwZW5kOgogICAgICAgICByZXR1cm4gVmFsdWVLZXkoa2luZCgpLCB0eXBlKCksIGNoaWxk
KDApKTsKICAgICBjYXNlIEFkZDoKICAgICBjYXNlIFN1YjoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTAgQEAgcHVibGljOgog
ICAgIAogICAgIE9wY29kZSBvcGNvZGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkub3Bjb2RlKCk7
IH0KICAgICAKKyAgICAvLyBOb3RlIHRoYXQgdGhlIGtpbmQgaXMgbWVhbnQgdG8gYmUgaW1tdXRh
YmxlLiBEbyB0aGlzIHdoZW4geW91IGtub3cgdGhhdCB0aGlzIGlzIHNhZmUuIEl0J3Mgbm90Cisg
ICAgLy8gdXN1YWxseSBzYWZlLgorICAgIHZvaWQgc2V0S2luZFVuc2FmZWx5KEtpbmQga2luZCkg
eyBtX2tpbmQgPSBraW5kOyB9CisgICAgCiAgICAgLy8gSXQncyBnb29kIHByYWN0aWNlIHRvIG1p
cnJvciBLaW5kIG1ldGhvZHMgaGVyZSwgc28geW91IGNhbiBzYXkgdmFsdWUtPmlzQmxhaCgpCiAg
ICAgLy8gaW5zdGVhZCBvZiB2YWx1ZS0+a2luZCgpLmlzQmxhaCgpLgogICAgIGJvb2wgaXNDaGls
bCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKS5pc0NoaWxsKCk7IH0KQEAgLTEwNyw2ICsxMTEsOCBA
QCBwdWJsaWM6CiAgICAgLy8gdmFsdWVzIHdpdGggSWRlbnRpdGllcyBvbiBib3R0b20gY29uc3Rh
bnRzLiBGb3IgdGhpcyByZWFzb24sIHRoaXMgdGFrZXMgYSBjYWxsYmFjayB0aGF0IGlzCiAgICAg
Ly8gcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGJvdHRvbXMuIFRoZXJlJ3MgYSB1dGlsaXR5IGZv
ciB0aGlzLCBzZWUgQjNCb3R0b21Qcm92aWRlci5oLiBZb3UKICAgICAvLyBjYW4gYWxzbyBhY2Nl
c3MgdGhhdCB1dGlsaXR5IHVzaW5nIHJlcGxhY2VXaXRoQm90dG9tKEluc2VydGlvblNldCYsIHNp
emVfdCkuCisgICAgLy8KKyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6
ZXJvLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJvdHRvbVByb3ZpZGVyPgogICAgIHZvaWQgcmVw
bGFjZVdpdGhCb3R0b20oY29uc3QgQm90dG9tUHJvdmlkZXImKTsKICAgICAKQEAgLTMyMSw2ICsz
MjcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElUb0Y6CiAgICAgICAgIGNhc2UgQml0d2lz
ZUNhc3Q6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIERlcGVuZDoKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9IDEpKQogICAgICAgICAgICAgICAgIGJhZEtp
bmQoa2luZCwgbnVtQXJncyk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNXaWR0aC5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMzggQEAK
IAogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsKKworVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKQoreworICAg
IHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICBjYXNlIFdpZHRoMTY6Cisg
ICAgY2FzZSBXaWR0aDMyOgorICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBH
UDoKKyAgICAgICAgICAgIHJldHVybiBJbnQzMjsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAg
ICAgIHJldHVybiBGbG9hdDsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAg
ICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJu
IEludDY0OworICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIERvdWJsZTsKKyAg
ICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gVm9pZDsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gVm9pZDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKIG5hbWVzcGFj
ZSBXVEYgewogCiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6
V2lkdGggd2lkdGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDYgKzYyLDE4IEBAIGlubGluZSBXaWR0aCB3aWR0aEZvclR5cGUoVHlwZSB0
eXBlKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitpbmxpbmUgV2lkdGggY2Fub25p
Y2FsV2lkdGgoV2lkdGggd2lkdGgpCit7CisgICAgcmV0dXJuIHN0ZDo6bWF4KFdpZHRoMzIsIHdp
ZHRoKTsKK30KKworaW5saW5lIFdpZHRoIGlzQ2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgpCit7
CisgICAgcmV0dXJuIHdpZHRoID49IFdpZHRoMzI7Cit9CisKK1R5cGUgYmVzdFR5cGUoQmFuayBi
YW5rLCBXaWR0aCB3aWR0aCk7CisKIGlubGluZSBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0aChCYW5r
IGJhbmspCiB7CiAgICAgcmV0dXJuIGJhbmsgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6IFdpZHRo
NjQ7CkBAIC05Myw2ICsxMDUsMjAgQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yQnl0ZXModW5zaWdu
ZWQgYnl0ZQogICAgIH0KIH0KIAoraW5saW5lIHVpbnQ2NF90IG1hc2soV2lkdGggd2lkdGgpCit7
CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgICAgICByZXR1cm4g
MHgwMDAwMDAwMDAwMDAwMGZmbGx1OworICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgcmV0dXJu
IDB4MDAwMDAwMDAwMDAwZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHJldHVy
biAweDAwMDAwMDAwZmZmZmZmZmZsbHU7CisgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICByZXR1
cm4gMHhmZmZmZmZmZmZmZmZmZmZmbGx1OworICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBcmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQXJnLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJBcmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgdW5z
aWduZWQgQXJnOjpqc0hhc2goKSBjb25zdAogICAgIGNhc2UgUmVsQ29uZDoKICAgICBjYXNlIFJl
c0NvbmQ6CiAgICAgY2FzZSBEb3VibGVDb25kOgorICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICBj
YXNlIFdpZHRoQXJnOgogICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
b2Zmc2V0KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODIsNiArMTgzLDkgQEAgdm9pZCBBcmc6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAg
IG91dC5wcmludChhc0RvdWJsZUNvbmRpdGlvbigpKTsKICAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgU3RhdHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KGFzU3RhdHVzQ29uZGl0aW9uKCkpOwor
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBvdXQucHJpbnQocG9p
bnRlckR1bXAoc3BlY2lhbCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI0MSw2ICsyNDUsOSBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6
OkRvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5wcmludCgiRG91YmxlQ29uZCIpOwogICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBBcmc6OlN0YXR1c0NvbmQ6CisgICAgICAgIG91dC5wcmludCgiU3Rh
dHVzQ29uZCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNwZWNpYWw6CiAgICAg
ICAgIG91dC5wcmludCgiU3BlY2lhbCIpOwogICAgICAgICByZXR1cm47CkBAIC0yODUsNiArMjky
LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2Ug
QXJnOjpFYXJseURlZjoKICAgICAgICAgb3V0LnByaW50KCJFYXJseURlZiIpOwogICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKKyAgICAgICAgb3V0LnByaW50KCJFYXJs
eVpEZWYiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpTY3JhdGNoOgogICAgICAg
ICBvdXQucHJpbnQoIlNjcmF0Y2giKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3
IEBAIHB1YmxpYzoKICAgICAgICAgUmVsQ29uZCwKICAgICAgICAgUmVzQ29uZCwKICAgICAgICAg
RG91YmxlQ29uZCwKKyAgICAgICAgU3RhdHVzQ29uZCwKICAgICAgICAgU3BlY2lhbCwKICAgICAg
ICAgV2lkdGhBcmcKICAgICB9OwpAQCAtMTUxLDYgKzE1Miw4IEBAIHB1YmxpYzoKICAgICAgICAg
Ly8gYXMgVXNlIGhhcyB1bmRlZmluZWQgYmVoYXZpb3I6IHRoZSB1c2UgbWF5IGhhcHBlbiBiZWZv
cmUgdGhlIGRlZiwgb3IgaXQgbWF5IGhhcHBlbiBhZnRlcgogICAgICAgICAvLyBpdC4KICAgICAg
ICAgRWFybHlEZWYsCisgICAgICAgICAgICAKKyAgICAgICAgRWFybHlaRGVmLAogCiAgICAgICAg
IC8vIFNvbWUgaW5zdHJ1Y3Rpb25zIG5lZWQgYSBzY3JhdGNoIHJlZ2lzdGVyLiBXZSBtb2RlbCB0
aGlzIGJ5IHNheWluZyB0aGF0IHRoZSB0ZW1wb3JhcnkgaXMKICAgICAgICAgLy8gZGVmaW5lZCBl
YXJseSBhbmQgdXNlZCBsYXRlLiBUaGlzIHJvbGUgaW1wbGllcyB0aGF0LgpAQCAtMTg2LDYgKzE4
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6
CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMjA2LDYgKzIxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgog
ICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNh
c2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI4LDYgKzIzMyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2Ug
RWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHJv
bGU7CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICAgICAgcmV0dXJuIENvbGRVc2U7CkBAIC0y
NTMsNiArMjU5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAg
ICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFy
bHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjc0LDYgKzI4MSw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6
CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk0LDYgKzMwMiw3IEBA
IHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAg
ICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNl
IFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzE1LDYg
KzMyNCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJs
eVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CkBAIC0zMzAsNiArMzQwLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFk
ZHI6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAg
ICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBM
YXRlQ29sZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1OCw2ICszNjksNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgWkRlZjoK
ICAgICAgICAgY2FzZSBVc2VaRGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtNTMzLDYgKzU0NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCisgICAgc3RhdGljIEFyZyBzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdGF0dXND
b25kaXRpb24gY29uZGl0aW9uKQorICAgIHsKKyAgICAgICAgQXJnIHJlc3VsdDsKKyAgICAgICAg
cmVzdWx0Lm1fa2luZCA9IFN0YXR1c0NvbmQ7CisgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IGNv
bmRpdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBzdGF0aWMgQXJn
IHNwZWNpYWwoQWlyOjpTcGVjaWFsKiBzcGVjaWFsKQogICAgIHsKICAgICAgICAgQXJnIHJlc3Vs
dDsKQEAgLTY1OCwxMiArNjc4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGtpbmQoKSA9
PSBEb3VibGVDb25kOwogICAgIH0KIAorICAgIGJvb2wgaXNTdGF0dXNDb25kKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0gU3RhdHVzQ29uZDsKKyAgICB9CisKICAgICBi
b29sIGlzQ29uZGl0aW9uKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7
CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBj
YXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtODUxLDYgKzg3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAg
ICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBT
dGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg3Miw2ICs4OTksNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNl
IERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVj
aWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICBjYXNlIEludmFsaWQ6CkBAIC0x
MDU4LDYgKzEwODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAg
Y2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3Rh
dHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTc3LDYgKzEyMDYsMTIgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlv
bj4obV9vZmZzZXQpOwogICAgIH0KICAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29u
ZGl0aW9uIGFzU3RhdHVzQ29uZGl0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChp
c1N0YXR1c0NvbmQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxl
cjo6U3RhdHVzQ29uZGl0aW9uPihtX29mZnNldCk7CisgICAgfQorICAgIAogICAgIC8vIFRlbGxz
IHlvdSBpZiB0aGUgQXJnIGlzIGludmVydGlibGUuIE9ubHkgY29uZGl0aW9uIGFyZ3VtZW50cyBh
cmUgaW52ZXJ0aWJsZSwgYW5kIGV2ZW4gZm9yIHRob3NlLCB0aGVyZQogICAgIC8vIGFyZSBhIGZl
dyBleGNlcHRpb25zIC0gbm90YWJseSBPdmVyZmxvdyBhbmQgU2lnbmVkLgogICAgIGJvb2wgaXNJ
bnZlcnRpYmxlKCkgY29uc3QKQEAgLTExODQsNiArMTIxOSw3IEBAIHB1YmxpYzoKICAgICAgICAg
c3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIERv
dWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXI6OmlzSW52ZXJ0aWJsZShhc1Jlc3VsdENvbmRpdGlvbigpKTsKQEAgLTEyMDQsNiArMTI0
MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiByZXNDb25kKE1hY3JvQXNzZW1ibGVy
OjppbnZlcnQoYXNSZXN1bHRDb25kaXRpb24oKSkpOwogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6
CiAgICAgICAgICAgICByZXR1cm4gZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFz
RG91YmxlQ29uZGl0aW9uKCkpKTsKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgorICAgICAgICAg
ICAgcmV0dXJuIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1N0YXR1c0NvbmRp
dGlvbigpKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAyMTI5
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsgbmFtZXNwYWNlCiAKIGNvbnN0IGNoYXIqIGNvbnN0IEJhc2ljQmxvY2s6OmR1bXBQcmVm
aXggPSAiIyI7CiAKK3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhCYXNpY0Jsb2NrKiBi
bG9jaykKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVzaXplKDEpOworICAgIG1fc3VjY2Vzc29yc1sw
XSA9IHRhcmdldDsKK30KKwordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50
ZWRCbG9jayB0YWtlbiwgRnJlcXVlbnRlZEJsb2NrIG5vdFRha2VuKQoreworICAgIG1fc3VjY2Vz
c29ycy5yZXNpemUoMik7CisgICAgbV9zdWNjZXNzb3JzWzBdID0gdGFrZW47CisgICAgbV9zdWNj
ZXNzb3JzWzFdID0gbm90VGFrZW47Cit9CisKIGJvb2wgQmFzaWNCbG9jazo6YWRkUHJlZGVjZXNz
b3IoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgcmV0dXJuIEIzOjphZGRQcmVkZWNlc3Nvcih0
aGlzLCBibG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2lj
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJh
c2ljQmxvY2suaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDkgQEAgcHVi
bGljOgogICAgIGNvbnN0IFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVy
biBtX3N1Y2Nlc3NvcnM7IH0KICAgICBTdWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgeyByZXR1
cm4gbV9zdWNjZXNzb3JzOyB9CiAKKyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJs
b2NrKTsKKyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrLCBGcmVxdWVudGVk
QmxvY2spOworCiAgICAgQmFzaWNCbG9jayogc3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQogICAgIEJhc2ljQmxv
Y2sqJiBzdWNjZXNzb3JCbG9jayh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gc3VjY2Vzc29yKGlu
ZGV4KS5ibG9jaygpOyB9CiAgICAgU3VjY2Vzc29yQ29sbGVjdGlvbjxCYXNpY0Jsb2NrLCBTdWNj
ZXNzb3JMaXN0PiBzdWNjZXNzb3JCbG9ja3MoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QWlyQmxvY2tJbnNlcnRpb25TZXQuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRl
ICJBaXJCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9C
dWJibGVTb3J0Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2Ug
QWlyIHsKKworQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KENvZGUgJmNvZGUp
CisgICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoY29kZS5tX2Jsb2NrcykKK3sKK30KKwor
QmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpCit7Cit9CisKK30gfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0
aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJc25lcnRp
b25TZXQuaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7IG5hbWVzcGFjZSBBaXIgeworCitjbGFzcyBJbnNlcnRpb25TZXQ7CisKK3R5cGVkZWYgR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+OjpCbG9ja0luc2VydGlvbiBCbG9ja0lu
c2VydGlvbjsKKworY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+IHsKK3B1YmxpYzoKKyAgICBCbG9ja0luc2VydGlvblNl
dChDb2RlJik7CisgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7CisgICAgCisgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBldmVudHVhbGx5IGltcGxlbWVudCBCMzo6QmxvY2tJbnNlcnRpb25TZXQncyBz
cGxpdEZvcndhcmQoKS4KK307CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKwor
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckdlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckdlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDYg
KzczLDggQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgICAgICBk
YXRhTG9nKCJJbml0aWFsIGFpcjpcbiIpOwogICAgICAgICBkYXRhTG9nKGNvZGUpOwogICAgIH0K
KyAgICAKKyAgICBzaW1wbGlmeUNGRyhjb2RlKTsKIAogICAgIGxvd2VyTWFjcm9zKGNvZGUpOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29k
ZXMJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
T3Bjb2RlLm9wY29kZXMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NjgsMjggKzY2OCwzODAgQEAgTG9hZDggVTpHOjgs
IFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3E4IFU6Rzo4
LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBTdG9yZTggVTpHOjgs
IEQ6Rzo4CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgogICAgIHg4NjogSW1tLCBJbmRl
eAogICAgIHg4NjogSW1tLCBBZGRyCiAKK1N0b3JlUmVsOCBVOkc6OCwgRDpHOjgKKyAgICBUbXAs
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0s
IEFkZHIKKwogTG9hZDhTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwg
VG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpE
Okc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIExvYWQxNiBVOkc6MTYsIFpE
Okc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3ExNiBVOkc6MTYs
IFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIExvYWQxNlNpZ25lZEV4
dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAog
CitMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgorICAgIEFkZHIsIFRt
cAorICAgIEluZGV4LCBUbXAKKwogU3RvcmUxNiBVOkc6MTYsIEQ6RzoxNgogICAgIFRtcCwgSW5k
ZXgKICAgICBUbXAsIEFkZHIKIAorU3RvcmVBY3ExNiBVOkc6MTYsIEQ6RzoxNgorICAgIFRtcCwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKworTG9hZEFjcTMyIFU6RzozMiBaRDpHOjMyCisgICAgVG1w
LCBUbXAKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK1N0b3JlUmVsMzIgVTpHOjMy
IFpEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFk
ZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKworNjQ6IExvYWRBY3E2NCBVOkc6NjQgWkQ6Rzo2NAor
ICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCis2NDogU3RvcmVS
ZWw2NCBVOkc6NjQgWkQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4
ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorCisjIFRoZSBmaXJzdCBvcGVyYW5k
IGlzIHJheC4KK3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIsIFVEOkc6OCwgVTpHOjgsIFVE
Okc6OCwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMx
NiBVOkc6MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29u
ZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4
LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwg
VUQ6RzozMiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAg
ICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2XzY0OiBBdG9taWNTdHJv
bmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCwgWkQ6Rzo4CisgICAgU3Rh
dHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAs
IEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVM4IFVEOkc6OCwgVTpHOjgsIFVEOkc6
OAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNTdHJvbmdDQVMxNiBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYKKyAgICBUbXAqLCBUbXAsIEFk
ZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMzIgVUQ6Rzoz
MiwgVTpHOjMyLCBVRDpHOjMyCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJ
bmRleAorCit4ODZfNjQ6IEF0b21pY1N0cm9uZ0NBUzY0IFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2
NAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFu
Y2hBdG9taWNTdHJvbmdDQVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4IC9icmFuY2gK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBU
bXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYgVTpHOjMyLCBVRDpHOjE2
LCBVOkc6MzIsIFVEOkc6MTYgL2JyYW5jaAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRk
cgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNT
dHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiAvYnJhbmNoCisgICAg
U3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJ
bmRleAorCit4ODZfNjQ6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0IFU6RzozMiwgVUQ6Rzo2NCwg
VTpHOjY0LCBVRDpHOjY0IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQWRkOCBVOkc6
OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgor
ICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJ
bW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IEF0b21pY0FkZDMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIElt
bSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWlj
QWRkNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWI4IFU6Rzo4LCBVRDpH
OjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODY6IEF0b21pY1N1YjE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRk
cgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Njog
QXRvbWljU3ViMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRl
eAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNTdWI2NCBV
Okc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDggVTpHOjgsIFVEOkc6OAorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogQXRvbWljQW5kMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNB
bmQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY0FuZDY0IFU6Rzo2NCwg
VUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3I4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFk
ZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IEF0b21pY09yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRl
eAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNPcjMyIFU6Rzoz
MiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljT3I2NCBVOkc6NjQsIFVEOkc6NjQKKyAg
ICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODY6IEF0b21pY1hvcjggVTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIElt
bSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9y
MTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYb3IzMiBVOkc6MzIsIFVEOkc6
MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hvcjY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljTmVnOCBVRDpHOjgKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNO
ZWcxNiBVRDpHOjE2CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTmVnMzIgVUQ6
RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0b21pY05lZzY0IFVEOkc6NjQK
KyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3Q4IFVEOkc6OAorICAgIEFkZHIK
KyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDE2IFVEOkc6MTYKKyAgICBBZGRyCisgICAgSW5k
ZXgKKworeDg2OiBBdG9taWNOb3QzMiBVRDpHOjMyCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4
Nl82NDogQXRvbWljTm90NjQgVUQ6Rzo2NAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0
b21pY1hjaGdBZGQ4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODY6IEF0b21pY1hjaGdBZGQxNiBVRDpHOjE2LCBVRDpHOjE2CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQzMiBVRDpHOjMyLCBVRDpHOjMy
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hjaGdBZGQ2
NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IEF0b21pY1hjaGc4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODY6IEF0b21pY1hjaGcxNiBVRDpHOjE2LCBVRDpHOjE2CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGczMiBVRDpHOjMyLCBVRDpHOjMyCisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hjaGc2NCBVRDpHOjY0
LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCithcm02NDogTG9hZExp
bms4IFU6Rzo4LCBaRDpHOjgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0
OiBMb2FkTGlua0FjcTggVTpHOjgsIFpEOkc6OAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBU
bXAKKworIyBTdXBlciBjb25mdXNpbmcgZmFjdDogdGhpcyByZXR1cm5zIDAgdG8gbWVhbiBzdWNj
ZXNzLCAxIHRvIG1lYW4gZmFpbHVyZS4KK2FybTY0OiBTdG9yZUNvbmQ4IFU6Rzo4LCBEOkc6OCwg
RVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0
OiBTdG9yZUNvbmRSZWw4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1w
CisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGluazE2IFU6RzoxNiwgWkQ6Rzox
NgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMTYg
VTpHOjE2LCBaRDpHOjE2CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDog
U3RvcmVDb25kMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAor
ICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMTYgVTpHOjE2LCBEOkc6
MTYsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCith
cm02NDogTG9hZExpbmszMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRl
eCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTMyIFU6RzozMiwgWkQ6RzozMgorICAgIEFkZHIs
IFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDMyIFU6RzozMiwgRDpHOjMy
LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJt
NjQ6IFN0b3JlQ29uZFJlbDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRy
LCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rNjQgVTpHOjY0LCBa
RDpHOjY0CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmtB
Y3E2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2Fy
bTY0OiBTdG9yZUNvbmQ2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwg
VG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw2NCBVOkc6NjQs
IEQ6Rzo2NCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1w
CisKK2FybTY0OiBEZXBlbmQzMiBVOkc6MzIsIEQ6RzozMgorICAgIFRtcCwgVG1wCisKK2FybTY0
OiBEZXBlbmQ2NCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wCisKIENvbXBhcmUzMiBVOkc6
MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRtcAog
ICAgIFJlbENvbmQsIFRtcCwgSW1tLCBUbXAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3B0aW1pemVCbG9ja09y
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3Nyw2ICsxNzcsMTAgQEAgdm9pZCBvcHRpbWl6
ZUJsb2NrT3JkZXIoQ29kZSYgY29kZSkKICAgICAgICAgY2FzZSBCcmFuY2hTdWI2NDoKICAgICAg
ICAgY2FzZSBCcmFuY2hOZWczMjoKICAgICAgICAgY2FzZSBCcmFuY2hOZWc2NDoKKyAgICAgICAg
Y2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVM4OgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0
cm9uZ0NBUzE2OgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyOgorICAgICAg
ICBjYXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0OgogICAgICAgICAgICAgaWYgKGNvZGUuZmlu
ZE5leHRCbG9jayhibG9jaykgPT0gYmxvY2stPnN1Y2Nlc3NvckJsb2NrKDApICYmIGJyYW5jaC5h
cmdzWzBdLmlzSW52ZXJ0aWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgc3RkOjpzd2FwKGJsb2Nr
LT5zdWNjZXNzb3IoMCksIGJsb2NrLT5zdWNjZXNzb3IoMSkpOwogICAgICAgICAgICAgICAgIGJy
YW5jaC5hcmdzWzBdID0gYnJhbmNoLmFyZ3NbMF0uaW52ZXJ0ZWQoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50
ZXJmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCB2b2lkIHBhZElu
dGVyZmVyZW5jZShDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAgIFsmXSAoQXJnJiwgQXJnOjpS
b2xlIHJvbGUsIEJhbmssIFdpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocm9s
ZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlEZWY6CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CiAgICAgICAgICAgICAgICAgICAgICAgICBo
YXNFYXJseURlZiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVVc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsNyBAQCB2b2lkIHNwaWxsRXZlcnl0
aGluZyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6TGF0ZUNvbGRV
c2U6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpTY3JhdGNoOgogICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFyZzo6RWFybHlEZWY6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpFYXJseVpEZWY6CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiBjb2Rl
LnJlZ3NJblByaW9yaXR5T3JkZXIoYmFuaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIXNldEJlZm9yZS5nZXQocmVnKSAmJiAhc2V0QWZ0ZXIuZ2V0KHJlZykpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWZ0ZXIuc2V0KHJlZyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5l
cmF0b3IucmIJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBAQCBkZWYgbGV4KHN0ciwg
ZmlsZU5hbWUpCiBlbmQKIAogZGVmIGlzUm9sZSh0b2tlbikKLSAgICB0b2tlbiA9fiAvXEEoKFUp
fChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUykpXFovCisgICAgdG9rZW4gPX4gL1xBKChVKXwo
RCl8KFVEKXwoWkQpfChVWkQpfChVQSl8KFMpfChFRCl8KEVaRCl8KExVKSlcWi8KIGVuZAogCiBk
ZWYgaXNHRih0b2tlbikKQEAgLTE5MCw3ICsxOTAsNyBAQCBkZWYgaXNHRih0b2tlbikKIGVuZAog
CiBkZWYgaXNLaW5kKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1t
KXwoQml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8
KERvdWJsZUNvbmQpKVxaLworICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwo
Qml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERv
dWJsZUNvbmQpfChTdGF0dXNDb25kKSlcWi8KIGVuZAogCiBkZWYgaXNBcmNoKHRva2VuKQpAQCAt
MjY0LDcgKzI2NCw3IEBAIGNsYXNzIFBhcnNlcgogCiAgICAgZGVmIGNvbnN1bWVLaW5kCiAgICAg
ICAgIHJlc3VsdCA9IHRva2VuLnN0cmluZwotICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBr
aW5kIChJbW0sIEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVs
Q29uZCwgUmVzQ29uZCwgb3IgRG91YmxlQ29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKKyAg
ICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0
SW1tNjQsIFRtcCwgQWRkciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIERvdWJsZUNvbmQsIG9y
IFN0YXR1c0NvbmQpIikgdW5sZXNzIGlzS2luZChyZXN1bHQpCiAgICAgICAgIGFkdmFuY2UKICAg
ICAgICAgcmVzdWx0CiAgICAgZW5kCkBAIC02NTEsNiArNjUxLDEyIEBAIHdyaXRlSCgiT3Bjb2Rl
VXRpbHMiKSB7CiAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlQWRkciIKICAgICAgICAg
ICAgICAgICB3aGVuICJTIgogICAgICAgICAgICAgICAgICAgICByb2xlID0gIlNjcmF0Y2giCisg
ICAgICAgICAgICAgICAgd2hlbiAiRUQiCisgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiRWFy
bHlEZWYiCisgICAgICAgICAgICAgICAgd2hlbiAiRVpEIgorICAgICAgICAgICAgICAgICAgICBy
b2xlID0gIkVhcmx5WkRlZiIKKyAgICAgICAgICAgICAgICB3aGVuICJMVSIKKyAgICAgICAgICAg
ICAgICAgICAgcm9sZSA9ICJMYXRlVXNlIgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICBlbmQKQEAgLTgxOSw2ICs4MjUsNyBA
QCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJSZWxD
b25kIgogICAgICAgICAgICAgICAgIHdoZW4gIlJlc0NvbmQiCiAgICAgICAgICAgICAgICAgd2hl
biAiRG91YmxlQ29uZCIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQga2lu
ZDogI3traW5kLm5hbWV9IgogICAgICAgICAgICAgICAgIGVuZApAQCAtMTEwNSw2ICsxMTEyLDgg
QEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dHAu
cHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzUmVzdWx0Q29uZGl0aW9uKCkiCiAgICAgICAgICAgICAg
ICAgd2hlbiAiRG91YmxlQ29uZCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJn
c1sje2luZGV4fV0uYXNEb3VibGVDb25kaXRpb24oKSIKKyAgICAgICAgICAgICAgICB3aGVuICJT
dGF0dXNDb25kIgorICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9
XS5hc1N0YXR1c0NvbmRpdGlvbigpIgogICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAg
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302917</attachid>
            <date>2017-02-27 20:17:25 -0800</date>
            <delta_ts>2017-02-27 21:46:41 -0800</delta_ts>
            <desc>adding X86 instruction formatting for atomics</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>136936</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMiBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNCRTFFNjQ5REM0MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRDFFNjQ5REMyMDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAq
LzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhp
c1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAg
LTI3NjQsNiArMjc3MCwxMiBAQAogCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5r
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQmFuay5oOyBwYXRoID0gYjMv
QjNCYW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM2M0FEMUU2MEFFM0Mw
MEMxMzgzOSAvKiBCM1dpZHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEIzV2lkdGguY3BwOyBwYXRoID0gYjMvQjNXaWR0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2lkdGguaDsgcGF0aCA9IGIzL0IzV2lkdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjMxRTYzNDNFODAwQzEzODM5
IC8qIEIzQXRvbWljVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQjNBdG9taWNWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0F0b21pY1ZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNBdG9taWNWYWx1
ZS5oOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25T
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQuaDsgcGF0aCA9IGIzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJC
bG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBBaXJCbG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRp
b25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCQTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGIzL2Fpci9BaXJCbG9j
a0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCRDFF
NjQ5REMyMDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQzNDAwN0Q0QjE5IC8qIERl
YnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVi
dWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERDMTk4
MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTI5Miw2ICs1MzA0LDggQEAKIAkJCQkwRkVDODRCMzFCREFDRDg4MDA4MEZGNzQgLyog
YWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFs
dWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVn
VmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1
ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUu
aCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJ
CQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi8sCiAJCQkJMEZFQzg0QjYx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5jcHAgKi8sCkBAIC01MzU0LDYgKzUzNjgs
NyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5o
ICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywK
IAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oICovLAorCQkJCTBG
MkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oICov
LAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxv
Y2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3Bw
ICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5nZS5oICovLApA
QCAtNTQ2OSw2ICs1NDg0LDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWly
QXJnSW5saW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNp
Y0Jsb2NrLmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFzaWNC
bG9jay5oICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2Vy
dGlvblNldC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2Nr
SW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJs
b2NrV29ya2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC03MzI2LDYgKzczNDMsNyBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2OTg3
QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRDFFNjQ5REMyMDBDMTM4MzkgLyog
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAwRjg0
NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENENzBD
MDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJODY0
MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCkBAIC03MzU0LDgg
KzczNzIsOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxl
ck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJs
ZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9B
c3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIxIC8q
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0MxMDBG
ODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4NUE4
RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKQEAgLTc5
NTYsNiArNzk3NCw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3RDcxRDlEQzQ0MjAwMUI5ODI1IC8q
IEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0JDMUU2MzQ0MEMwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0MzgxQzAw
MTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUzNEMx
QTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxv
Yy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDQ3LDYgKzgwNjYsNyBAQAogCQkJCTQzNDIyQTYzMUMx
NThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQdHJWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNGNzAwQzEzODM5IC8qIEIzR2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOEUwRTFCRjAyNzZD
MDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRkMx
QzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRlVGFpbHMuaCBpbiBIZWFkZXJzICov
LApAQCAtODM2Niw2ICs4Mzg2LDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4NDQ3MjggLyog
REZHT1NSRXhpdEZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEzQjYwMDU2
N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50
b21JbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMxNEVGOTBBRjAw
QzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFQjE5RDBCQTdE
MDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAtOTc5Miw2ICs5
ODEzLDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
IAkJCQkwRkZBNTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9wY29kZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjJDNjNCRTFFNjQ5REM0MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDQ5MzdDMzFEREJFNjE0MDA3N0M4MDcgLyog
QWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUYwRjQxNEQx
MDYzOTAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM3MEI0
RjUxQkYyNjIwMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI0OCw2ICsxMDI3MCw3IEBACiAJCQkJ
OUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTEx
ODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQwRTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3Rl
ZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMjY2LDYgKzEwMjg5LDcgQEAK
IAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAv
KiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRC
NjExODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBBMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25T
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIElu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NG
ODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIKKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisKKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIHN3aXRj
aCAoY29uZGl0aW9uKSB7CisgICAgY2FzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNz
OgorICAgICAgICBvdXQucHJpbnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6RmFpbHVyZToKKyAgICAgICAgb3V0LnByaW50KCJG
YWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODksNiArODksMjMgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gVGltZXNFaWdodDsKICAgICB9CiAgICAgCisgICAgZW51bSBTdGF0dXNDb25k
aXRpb24geworICAgICAgICBTdWNjZXNzLAorICAgICAgICBGYWlsdXJlCisgICAgfTsKKyAgICAK
KyAgICBzdGF0aWMgU3RhdHVzQ29uZGl0aW9uIGludmVydChTdGF0dXNDb25kaXRpb24gY29uZGl0
aW9uKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICAgICAgY2FzZSBT
dWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIEZhaWx1cmU7CisgICAgICAgIGNhc2UgRmFpbHVy
ZToKKyAgICAgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgIH0K
KyAgICAKICAgICBzdHJ1Y3QgQmFzZUluZGV4OwogICAgIAogICAgIC8vIEFkZHJlc3M6CkBAIC0x
MTA4LDMgKzExMjUsMTYgQEAgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlLCBN
YQogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQworCisj
aWYgRU5BQkxFKEFTU0VNQkxFUikKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3Ry
ZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisj
ZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTAsNiArMjkwLDggQEAgcHJpdmF0ZToKICAgICAgICAgT1BfU0VUQ0MgICAgICAgICAg
ICA9IDB4OTAsCiAgICAgICAgIE9QMl8zQllURV9FU0NBUEVfQUUgPSAweEFFLAogICAgICAgICBP
UDJfSU1VTF9HdkV2ICAgICAgID0gMHhBRiwKKyAgICAgICAgT1AyX0NNUFhDSEdiICAgICAgICA9
IDB4QjAsCisgICAgICAgIE9QMl9DTVBYQ0hHICAgICAgICAgPSAweEIxLAogICAgICAgICBPUDJf
TU9WWlhfR3ZFYiAgICAgID0gMHhCNiwKICAgICAgICAgT1AyX0JTRiAgICAgICAgICAgICA9IDB4
QkMsCiAgICAgICAgIE9QMl9UWkNOVCAgICAgICAgICAgPSAweEJDLApAQCAtMjk4LDYgKzMwMCw4
IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9NT1ZTWF9HdkViICAgICAgPSAweEJFLAogICAgICAg
ICBPUDJfTU9WWlhfR3ZFdyAgICAgID0gMHhCNywKICAgICAgICAgT1AyX01PVlNYX0d2RXcgICAg
ICA9IDB4QkYsCisgICAgICAgIE9QMl9YQUREYiAgICAgICAgICAgPSAweEMwLAorICAgICAgICBP
UDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAgT1AyX1BFWFRSV19HZFVkSWIgICA9
IDB4QzUsCiAgICAgICAgIE9QMl9QU0xMUV9VZHFJYiAgICAgPSAweDczLAogICAgICAgICBPUDJf
UFNSTFFfVWRxSWIgICAgID0gMHg3MywKQEAgLTI3NzUsNiArMjc3OSw0OCBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfTE9DSyk7CiAgICAgfQogICAgIAorICAgIHZv
aWQgY21weGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX0NNUFhDSEdiLCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ2Jfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJf
Q01QWENIR2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGNtcHhjaGd3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRf
U0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGd3X3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9T
SVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hn
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9m
ZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4
Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0NNUFhDSEcsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hncV9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENI
Rywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAogICAgIHZv
aWQgbWZlbmNlKCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wKE9QMl8z
QllURV9FU0NBUEVfQUUsIE9QM19NRkVOQ0UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNf
SklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworQXRvbWljVmFsdWU6On5B
dG9taWNWYWx1ZSgpCit7Cit9CisKK1dpZHRoIEF0b21pY1ZhbHVlOjphY2Nlc3NXaWR0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fd2lkdGg7Cit9CisKK3ZvaWQgQXRvbWljVmFsdWU6OmR1bXBN
ZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAg
b3V0LnByaW50KGNvbW1hLCAid2lkdGggPSAiLCBtX3dpZHRoKTsKKyAgICAKKyAgICBNZW1vcnlW
YWx1ZTo6ZHVtcE1ldGEoY29tbWEsIG91dCk7Cit9CisKK1ZhbHVlKiBBdG9taWNWYWx1ZTo6Y2xv
bmVJbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbmV3IEF0b21pY1ZhbHVlKCp0aGlzKTsKK30K
KworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lk
dGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQg
PSAwKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgb3BlcmFuZC0+dHlw
ZSgpLCBvcmlnaW4sIG9mZnNldCwgb3BlcmFuZCwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lk
dGgpCit7CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBB
U1NFUlQoYmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKyAg
ICAKKyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6
CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNh
c2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9t
aWNYY2hnOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtp
bmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFs
dWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDog
TWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwga2luZC5vcGNvZGUoKSA9PSBBdG9taWNX
ZWFrQ0FTID8gSW50MzIgOiBleHBlY3RlZFZhbHVlLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCBl
eHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7
CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBBU1NFUlQo
YmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKworICAgIHN3
aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNl
IEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQXRvbWljVmFsdWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisj
aW5jbHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwor
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQXRvbWljVmFsdWUgOiBwdWJsaWMgTWVtb3J5VmFsdWUg
eworcHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGlzQXRvbWljKGtpbmQub3Bjb2RlKCkpOworICAgIH0KKyAgICAKKyAgICB+
QXRvbWljVmFsdWUoKTsKKyAgICAKKyAgICBUeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJl
dHVybiBjaGlsZCgwKS0+dHlwZSgpOyB9CisgICAgCisgICAgV2lkdGggb3BlcmF0aW9uV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgCisgICAgLy8gU3lub255bSBmb3Igd2lk
dGgoKSwgaWYgeW91J3JlIGFjY2Vzc2luZyB2aWEgTWVtb3J5VmFsdWUuCisgICAgV2lkdGggYWNj
ZXNzV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1
bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
CisgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtpbmQs
IE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQgPSAwKTsKKyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBW
YWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwKTsKKyAgICAKKyAgICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2Vy
dGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMzUgKzM2LDEzIEBACiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsKIAogQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0
KFByb2NlZHVyZSAmcHJvYykKLSAgICA6IG1fcHJvYyhwcm9jKQorICAgIDogR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0KHByb2MubV9ibG9ja3MpCisgICAgLCBtX3Byb2MocHJvYykKIHsKIH0KIAog
QmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpIHsgfQogCi12b2lkIEJsb2Nr
SW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCi17Ci0gICAg
bV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOwotfQotCi1CYXNpY0Jsb2Nr
KiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVl
bmN5KQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNC
bG9jayhVSU5UX01BWCwgZnJlcXVlbmN5KSk7Ci0gICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxv
Y2suZ2V0KCk7Ci0gICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2Nr
KSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9u
U2V0OjppbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5KQot
ewotICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVl
bmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7Ci19Ci0KLUJhc2ljQmxvY2sq
IEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91Ymxl
IGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJl
cXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7Ci19
Ci0KIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcndhcmQoCiAgICAgQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqIGluc2Vy
dGlvblNldCwgZG91YmxlIGZyZXF1ZW5jeSkKIHsKQEAgLTEwMiwzMiArODAsNiBAQCBCYXNpY0Js
b2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotYm9vbCBCbG9ja0luc2VydGlvblNldDo6ZXhlY3V0ZSgpCi17Ci0gICAgaWYgKG1faW5zZXJ0
aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBXZSBh
bGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5l
ZWQgdG8gc29ydCB0aGVtIGJlZm9yZQotICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0
aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8g
YmUKLSAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCi0gICAgYnViYmxlU29ydCht
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKLQotICAgIGV4ZWN1dGVJ
bnNlcnRpb25zKG1fcHJvYy5tX2Jsb2NrcywgbV9pbnNlcnRpb25zKTsKLSAgICAKLSAgICAvLyBQ
cnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0
IGl0J3MKLSAgICAvLyBoZWFsdGh5IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5n
LgotICAgIG1fcHJvYy5tX2Jsb2Nrcy5yZW1vdmVBbGxNYXRjaGluZygKLSAgICAgICAgWyZdIChz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIHJldHVybiAhYmxvY2tQdHI7Ci0gICAgICAgIH0pOwotICAgIAotICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9wcm9jLm1fYmxvY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3By
b2MubV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQot
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5z
ZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKICNp
bmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwyNiArMzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CiAKIGNsYXNzIEluc2VydGlvblNldDsKIAotdHlwZWRlZiBXVEY6Okluc2Vy
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOwordHlwZWRl
ZiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJs
b2NrSW5zZXJ0aW9uOwogCi1jbGFzcyBCbG9ja0luc2VydGlvblNldCB7CitjbGFzcyBCbG9ja0lu
c2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4g
ewogcHVibGljOgogICAgIEJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSYpOwogICAgIH5CbG9j
a0luc2VydGlvblNldCgpOwogICAgIAotICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYp
OwotCi0gICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCi0gICAgQmFz
aWNCbG9jayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7
Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVz
dWFsbHkgeW91IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQotICAgIC8vIGFyZ3VtZW50LiBQ
YXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdi
ZWZvcmUnIGJsb2NrLiBUaGF0J3MKLSAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCi0gICAg
QmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1
ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2
ZW4gYmxvY2suCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIs
IGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQogICAgIC8vIEEgaGVscGVyIHRvIHNwbGl0IGEg
YmxvY2sgd2hlbiBmb3J3YXJkIGl0ZXJhdGluZyBvdmVyIGl0LiBJdCBjcmVhdGVzIGEgbmV3IGJs
b2NrIHRvIGhvbGQKICAgICAvLyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYXQg
dmFsdWVJbmRleC4gVGhlIGN1cnJlbnQgYmxvY2sgaXMgbGVmdCB3aXRoCiAgICAgLy8gZXZlcnl0
aGluZyBhdCBhbmQgYWZ0ZXIgdmFsdWVJbmRleC4gSWYgdGhlIG9wdGlvbmFsIEluc2VydGlvblNl
dCBpcyBwcm92aWRlZCwgaXQgd2lsbCBnZXQKQEAgLTgwLDEyICs2OCw5IEBAIHB1YmxpYzoKICAg
ICBCYXNpY0Jsb2NrKiBzcGxpdEZvcndhcmQoCiAgICAgICAgIEJhc2ljQmxvY2sqLCB1bnNpZ25l
ZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0KiA9IG51bGxwdHIsCiAgICAgICAgIGRvdWJsZSBm
cmVxdWVuY3kgPSBQTmFOKTsKLSAgICAKLSAgICBib29sIGV4ZWN1dGUoKTsKIAogcHJpdmF0ZToK
ICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKLSAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1f
aW5zZXJ0aW9uczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAg
ICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8
fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3Zlcmxh
cHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7
CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZl
bmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0
IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9w
ZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhl
ci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5u
ZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9
PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAg
JiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShj
b25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVj
dHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwg
IldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwxMCBA
QCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzE3MwogICAgIGJvb2wgcmVhZHNQaW5uZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgd3JpdGVzUGlubmVkIHsgZmFsc2UgfTsKKyAgICAKKyAgICAvLyBNZW1vcnkgZmVuY2VzIGNh
bm5vdCBiZSByZW9yZGVyZWQgYXJvdW5kIGVhY2ggb3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBl
ZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQKKyAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVt
b3J5IGZlbmNlLgorICAgIGJvb2wgZmVuY2UgeyBmYWxzZSB9OwogCiAgICAgSGVhcFJhbmdlIHdy
aXRlczsKICAgICBIZWFwUmFuZ2UgcmVhZHM7CkBAIC04OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZl
Y3RzIHsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKICAgICAgICAg
cmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9
IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCkBAIC0xMDMsNyArMTA4LDcgQEAgc3RydWN0IEVmZmVjdHMgewogCiAgICAg
Ym9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdGVybWluYWwg
fHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQ
aW5uZWQ7CisgICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRl
c0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9CiAK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgcmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVz
ZSByZXNwZWN0aXZlIGVmZmVjdHMgd291bGQgY2hhbmdlIHByb2dyYW0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NDIsNiArMTQyLDcgQEAgc3RydWN0IEltcHVyZUJsb2NrRGF0YSB7CiAKICAgICBSYW5nZVNldDxI
ZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlzIG9ubHkgZ2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0b3Jl
IGVsaW1pbmF0aW9uLgogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdl
dHMgdXNlZCBmb3IgYm90aCBsb2FkIGFuZCBzdG9yZSBlbGltaW5hdGlvbi4KKyAgICBib29sIGZl
bmNlOwogCiAgICAgTWVtb3J5VmFsdWVNYXAgc3RvcmVzQXRIZWFkOwogICAgIE1lbW9yeVZhbHVl
TWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsKQEAgLTE3NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNT
dG9yZSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9y
eS0+cmFuZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBz
KG1lbW9yeS0+cmFuZ2UoKSkpCisgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5v
dmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCisgICAgICAgICAgICAgICAgICAgICYmICghZGF0YS5m
ZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5jZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5z
dG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7CiAgICAgICAgICAgICAgICAgZGF0YS5yZWFkcy5hZGQo
ZWZmZWN0cy5yZWFkcyk7CiAKICAgICAgICAgICAgICAgICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9
IGVmZmVjdHMud3JpdGVzKQogICAgICAgICAgICAgICAgICAgICBjbG9iYmVyKGRhdGEsIHdyaXRl
cyk7CisgICAgICAgICAgICAgICAgZGF0YS5mZW5jZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG1lbW9yeSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlW
YWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7CkBAIC00NzgsNiArNDgxLDkgQEAgcHJpdmF0ZToKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVBZnRlckNsb2Ji
ZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXImIGZpbHRlcikKICAg
ICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBl
bGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0b3JlIHRvIHRo
ZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFueSBvcGVyYXRpb24g
dGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxpa2UgaXQgc2hvdWxk
IGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3Jp
dHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIApAQCAtNjE0LDYg
KzYyMCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIp
OwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNG
ZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChNZW1vcnlWYWx1ZSog
bWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7CiAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91
bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0dlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCB2
b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MDcKICAgICB9CiAKKyAgICAv
LyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgogICAgIGxvd2VyTWFjcm9zKHByb2Nl
ZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEluc2Vy
dGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9jaz4KK2NsYXNzIEdlbmVyaWNC
bG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOworICAgIAorICAgIEJs
b2NrSW5zZXJ0aW9uU2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBibG9j
a3MpCisgICAgICAgIDogbV9ibG9ja3MoYmxvY2tzKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
dm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCisgICAgeworICAgICAgICBt
X2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7CisgICAgfQorCisgICAgLy8g
SW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCisgICAgQmFzaWNCbG9jayogaW5z
ZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5U
X01BWCwgZnJlcXVlbmN5KSk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdl
dCgpOworICAgICAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2sp
KSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5l
dyBibG9jayBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNz
IHRoZSBmcmVxdWVuY3kKKyAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0
byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCisg
ICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3YW50LgorICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9y
ZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVxdWVu
Y3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsKKyAgICB9CisKKyAgICAvLyBJ
bnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KKyAgICBCYXNpY0Jsb2Nr
KiBpbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
CisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJlcXVl
bmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7CisgICAg
fQorCisgICAgYm9vbCBleGVjdXRlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2luc2VydGlvbnMu
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAg
Ly8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3JkZXIuIFNv
LCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKKyAgICAgICAgLy8gcnVubmluZyBXVEY6OmV4
ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBhbmQgd2Ug
d2FudCBpdCB0byBiZQorICAgICAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCisg
ICAgICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQo
KSk7CisgICAgICAgIAorICAgICAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX2Jsb2NrcywgbV9pbnNl
cnRpb25zKTsKKyAgICAgICAgCisgICAgICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBU
aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncworICAgICAgICAvLyBoZWFsdGh5
IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgorICAgICAgICBtX2Jsb2Nrcy5y
ZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+JiBibG9ja1B0cikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFibG9j
a1B0cjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2VzLgorICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9ibG9ja3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX2Jsb2Nr
c1tpXS0+bV9pbmRleCA9IGk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4mIG1f
YmxvY2tzOworICAgIFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJKHJldmlzaW9uIDIxMjk5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdlIG9wZXJhdG9yfChjb25zdCBIZWFw
UmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5nZSgKKyAg
ICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1fYmVnaW4pLAorICAgICAgICAgICAg
c3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAgfQorICAgIAogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1fZW5kOyB9CiAKICAg
ICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJbnNlcnRpb25TZXQ6Omluc2VydEJv
dHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9tKGluZGV4LCBsaWtlVmFsdWUtPm9y
aWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1ZhbHVlKiBJbnNlcnRpb25TZXQ6Omlu
c2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVlKQoreworICAgIHJldHVybiBpbnNl
cnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFsdWUpKTsKK30KKwogdm9pZCBJbnNl
cnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgYnViYmxlU29ydCht
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVf
dCBpbmRleCwgT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVfdCBp
bmRleCwgVmFsdWUqKTsKKyAgICAKKyAgICBWYWx1ZSogaW5zZXJ0Q2xvbmUoc2l6ZV90IGluZGV4
LCBWYWx1ZSopOwogCiAgICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTgsMTEgKzU4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3Byb2MocHJv
YykKICAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MpCiAgICAgICAgICwgbV9pbnNl
cnRpb25TZXQocHJvYykKKyAgICAgICAgLCBtX3VzZUNvdW50cyhwcm9jKQogICAgIHsKICAgICB9
CiAKICAgICBib29sIHJ1bigpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wcm9j
Lmhhc1F1aXJrcygpKTsKKyAgICAgICAgCiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sg
OiBtX3Byb2MpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgICAgIHBy
b2Nlc3NDdXJyZW50QmxvY2soKTsKQEAgLTcyLDYgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG1fcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICAgICAgbV9wcm9jLmludmFs
aWRhdGVDRkcoKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBpbmRpY2F0
ZXMgdGhhdCB3ZSd2ZSAKKyAgICAgICAgbV9wcm9jLnNldEhhc1F1aXJrcyh0cnVlKTsKKyAgICAg
ICAgCiAgICAgICAgIHJldHVybiBtX2NoYW5nZWQ7CiAgICAgfQogICAgIApAQCAtMTg1LDcgKzE5
Miw5NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGxvYWQtbG9hZCBmZW5jZS4gVGhpcyBjb2Rl
Z2VucyB0byBub3RoaW5nIG9uIFg4Ni4gV2UgdXNlIGl0IHRvIHRlbGwgdGhlCisgICAgICAgICAg
ICAgICAgICAgIC8vIGNvbXBpbGVyIG5vdCB0byBibG9jayBsb2FkIG1vdGlvbi4KKyAgICAgICAg
ICAgICAgICAgICAgRmVuY2VWYWx1ZSogZmVuY2UgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8RmVu
Y2VWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4pOworICAgICAgICAgICAgICAgICAgICBmZW5jZS0+
cmVhZCA9IEhlYXBSYW5nZSgpOworICAgICAgICAgICAgICAgICAgICBmZW5jZS0+d3JpdGUgPSBI
ZWFwUmFuZ2U6OnRvcCgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgLy8gS2lsbCB0aGUgRGVwZW5kLCB3aGljaCBzaG91bGQgdW5sb2NrIGEgYnVuY2ggb2YgY29k
ZSBzaW1wbGlmaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5yZXBsYWNlV2l0
aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgY2Fz
ZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6IHsKKyAg
ICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1f
dmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgICAgIFdpZHRoIHdpZHRoID0g
YXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIGV4cGVjdGVkVmFs
dWUgPSBhdG9taWMtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IC8vIE9uIEFSTSwgdGhlIGxvYWQgcGFydCBvZiB0aGUgQ0FTIGRvZXMgYSBsb2FkIHdpdGggemVy
byBleHRlbnNpb24uIFRoZXJlZm9yZSwgd2UgbmVlZAorICAgICAgICAgICAgICAgIC8vIHRvIHpl
cm8tZXh0ZW5kIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFza2VkRXhwZWN0
ZWRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
ICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIGV4cGVjdGVkVmFsdWUsCisgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KG1faW5kZXgsIGV4cGVj
dGVkVmFsdWUsIG1hc2sod2lkdGgpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgYXRvbWljLT5jaGlsZCgwKSA9IG1hc2tlZEV4cGVjdGVkVmFsdWU7CisgICAgICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAg
ICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNo
Z09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgY2FzZSBB
dG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgICAg
ICAgICAgLy8gT24gWDg2LCB0aGVzZSBtYXkgYWN0dWFsbHkgcmV0dXJuIGdhcmJhZ2UgaW4gdGhl
IGhpZ2ggYml0cy4gT24gQVJNNjQsIHRoZXNlIHNvcnRhCisgICAgICAgICAgICAgICAgLy8gemVy
by1leHRlbmQgdGhlaXIgaGlnaCBiaXRzLCBleGNlcHQgdGhhdCB0aGUgaGlnaCBiaXRzIG1pZ2h0
IGdldCBwb2xsdXRlZCBieSBoaWdoCisgICAgICAgICAgICAgICAgLy8gYml0cyBpbiB0aGUgb3Bl
cmFuZC4gLiBTbywgZWl0aGVyIHdheSwgd2UgbmVlZCB0byB0aHJvdyBhIHNpZ24tZXh0ZW5kIG9u
IHRoZXNlCisgICAgICAgICAgICAgICAgLy8gdGhpbmdzLgorICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3Zh
bHVlLT5vcGNvZGUoKSA9PSBBdG9taWNYY2hnU3ViICYmIG1fdXNlQ291bnRzLm51bVVzZXMobV92
YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9uIHg4NiwgeGNoZ2FkZCBpcyBi
ZXR0ZXIgdGhhbiB4Y2hnc3ViIGlmIGl0IGhhcyBhbnkgdXNlcnMuCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3ZhbHVlLT5zZXRLaW5kVW5zYWZlbHkoQXRvbWljWGNoZ0FkZCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgxKSA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgTmVnLCBtX29y
aWdpbiwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBib29sIGV4ZW1wdCA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgICAg
ICAgICAgICAgZXhlbXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZW1w
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92
YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3VmFsdWUgPSBt
X2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4
LCBzaWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwgbV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydENsb25lKG1faW5kZXgsIG1fdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG5l
d1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQ3MCw2
ICs1NjYsNyBAQCBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwogICAgIEJsb2NrSW5z
ZXJ0aW9uU2V0IG1fYmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0
aW9uU2V0OworICAgIFVzZUNvdW50cyBtX3VzZUNvdW50czsKICAgICBCYXNpY0Jsb2NrKiBtX2Js
b2NrOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CiAgICAgVmFsdWUqIG1fdmFsdWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NB
ZnRlck9wdGltaXphdGlvbnMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NiwxNSArMTU2LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFJv
dEw6IHsKICAgICAgICAgICAgICAgICAvLyBBUk02NCBkb2Vzbid0IGhhdmUgYSByb3RhdGUgbGVm
dC4KICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlm
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5v
cmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90Uiwg
bV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLCBuZXdTaGlmdCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDEp
KTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxWYWx1ZT4obV9pbmRleCwgUm90UiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNo
aWxkKDApLCBuZXdTaGlmdCk7CisgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VX
aXRoSWRlbnRpdHkocm90YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsMTQgQEAgbmFtZXNwYWNl
IHsKIAogY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKKy8vIEZJWE1FOiBXZSB3b3VsZG4n
dCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRlZCBXaWR0aCBtb2RpZmllcnMgaW4gQWlyOjpLaW5k
LgorLy8gT09QUyEhISAobmVlZCBhIGJ1ZyBVUkwpCisjZGVmaW5lIE9QQ09ERV9GT1JfV0lEVEgo
b3Bjb2RlLCB3aWR0aCkgKCBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDggPyBvcGNvZGUgIyMgOCA6
IFwKKyAgICAod2lkdGgpID09IFdpZHRoMTYgPyBvcGNvZGUgIyMgMTYgOiBcCisgICAgKHdpZHRo
KSA9PSBXaWR0aDMyID8gb3Bjb2RlICMjIDMyIDogXAorICAgIG9wY29kZSAjIyA2NCkKKwogY2xh
c3MgTG93ZXJUb0FpciB7CiBwdWJsaWM6CiAgICAgTG93ZXJUb0FpcihQcm9jZWR1cmUmIHByb2Nl
ZHVyZSkKQEAgLTgzLDYgKzkxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RvbWluYXRvcnMo
cHJvY2VkdXJlLmRvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX3Byb2NlZHVyZShwcm9jZWR1cmUp
CiAgICAgICAgICwgbV9jb2RlKHByb2NlZHVyZS5jb2RlKCkpCisgICAgICAgICwgbV9ibG9ja0lu
c2VydGlvblNldChtX2NvZGUpCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICAgICAg
LCBtX2VheChYODZSZWdpc3RlcnM6OmVheCkKKyAgICAgICAgLCBtX2VjeChYODZSZWdpc3RlcnM6
OmVjeCkKKyAgICAgICAgLCBtX2VkeChYODZSZWdpc3RlcnM6OmVkeCkKKyNlbmRpZgogICAgIHsK
ICAgICB9CiAKQEAgLTEyNCwxNCArMTM4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3Rl
ZCBhZGRyZXNzIGV4cHJlc3Npb24gYmVmb3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhl
IGxvb3AuCiAgICAgICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUu
YmxvY2tzSW5QcmVPcmRlcigpKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAg
ICAgICAgICAvLyBSZXNldCBzb21lIHN0YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUo
MCk7CiAKICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7
CiAKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxv
d2VyaW5nIEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4K
KyAgICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+
c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5z
dWNjZXNzb3JzKCkuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRC
bG9jayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVu
Y3koKSkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBp
biByZXZlcnNlIG9yZGVyIHNvIHdlIHNlZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBh
bGxvd3MgdXMKICAgICAgICAgICAgIC8vIHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5Lgog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAt
MTQ5LDE5ICsxNjcsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3Rz
IGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAgICAg
ICAgLy8gaXQgaW4gcmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5z
dHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9p
bnN0c1tpXSkKLSAgICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBl
bmRJbnN0KFdURk1vdmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAg
ICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vz
c29ycygpKSB7Ci0gICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNz
b3JzKCkuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayht
X2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25z
KG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1f
YmxvY2tJbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0
IGluc2VydGlvblNldChtX2NvZGUpOwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xv
Z3VlKQpAQCAtNTM4LDcgKzU0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gQXJn
KCk7CiAKICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB2YWx1ZS0+b2Zmc2V0KCk7Ci0gICAgICAg
IFdpZHRoIHdpZHRoID0gdmFsdWUtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgIFdpZHRoIHdpZHRo
ID0gdmFsdWUtPmxvYWRTdG9yZVdpZHRoKCk7CiAKICAgICAgICAgQXJnIHJlc3VsdCA9IGVmZmVj
dGl2ZUFkZHIodmFsdWUtPmxhc3RDaGlsZCgpLCBvZmZzZXQsIHdpZHRoKTsKICAgICAgICAgQVNT
RVJUKHJlc3VsdC5pc1ZhbGlkRm9ybSh3aWR0aCkpOwpAQCAtNTYyLDExICs1NzEsMTYgQEAgcHJp
dmF0ZToKICAgICAKICAgICBBcmdQcm9taXNlIGxvYWRQcm9taXNlQW55T3Bjb2RlKFZhbHVlKiBs
b2FkVmFsdWUpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkVmFsdWUtPmFzPE1l
bW9yeVZhbHVlPigpKTsKICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKGxvYWRWYWx1ZSkpCiAg
ICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAgIGlmIChjcm9zc2VzSW50ZXJmZXJlbmNl
KGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAgIEFyZ1Byb21p
c2UgcmVzdWx0KGFkZHIobG9hZFZhbHVlKSwgbG9hZFZhbHVlKTsKKyAgICAgICAgaWYgKGxvYWRW
YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4g
QXJnKCk7CisgICAgICAgIEFyZyBsb2FkQWRkciA9IGFkZHIobG9hZFZhbHVlKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobG9hZEFkZHIpOworICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChsb2Fk
QWRkciwgbG9hZFZhbHVlKTsKICAgICAgICAgaWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkKICAgICAg
ICAgICAgIHJlc3VsdC5zZXRUcmFwcyh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAg
LTg5OCwxMSArOTEyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICAgICAgYXBwZW5kKE1vdmUsIHRt
cCh2YWx1ZSksIHRtcChtX3ZhbHVlKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1vdW50
KSwgVG1wKFg4NlJlZ2lzdGVyczo6ZWN4KSk7Ci0gICAgICAgIGFwcGVuZChvcGNvZGUsIFRtcChY
ODZSZWdpc3RlcnM6OmVjeCksIHRtcChtX3ZhbHVlKSk7Ci0jZW5kaWYKKyAgICAgICAgYXBwZW5k
KE1vdmUsIHRtcChhbW91bnQpLCBtX2VjeCk7CisgICAgICAgIGFwcGVuZChvcGNvZGUsIG1fZWN4
LCB0bXAobV92YWx1ZSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29k
ZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2ND4KQEAgLTkzMSwxMCArOTQzLDE1IEBAIHByaXZhdGU6
CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQ29t
bXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmU+CiAgICAgYm9vbCB0cnlB
cHBlbmRTdG9yZUJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCiAgICAgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKSk7CisgICAgICAgIAog
ICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBv
cGNvZGU2NCwgbGVmdC0+dHlwZSgpKTsKICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6Ok9vcHMp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAorICAgICAgICBpZiAobV92YWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIAogICAgICAgICBBcmcgc3RvcmVBZGRyID0gYWRkcihtX3ZhbHVlKTsKICAg
ICAgICAgQVNTRVJUKHN0b3JlQWRkcik7CiAKQEAgLTk5NCwxMCArMTAxMSw0OCBAQCBwcml2YXRl
OgogCiAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFsdWUsIHRtcCh2YWx1ZSksIGRlc3Qp
OwogICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShXaWR0aCB3aWR0aCwg
QmFuayBiYW5rLCBib29sIHJlbGVhc2UpCisgICAgeworICAgICAgICBzd2l0Y2ggKHdpZHRoKSB7
CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9
PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsOCA6IFN0b3JlODsK
KyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9
PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMTYgOiBTdG9yZTE2
OworICAgICAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAg
ICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9y
ZVJlbDMyIDogTW92ZTMyOworICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVGbG9h
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdpZHRo
NjQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpczY0Qml0KCkpOworICAgICAgICAgICAg
c3dpdGNoIChiYW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJl
dHVybiByZWxlYXNlID8gU3RvcmVSZWw2NCA6IE1vdmU7CisgICAgICAgICAgICBjYXNlIEZQOgor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
ICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFZhbHVlKiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7Cisg
ICAgICAgIHJldHVybiBzdG9yZU9wY29kZShtZW1vcnktPmxvYWRTdG9yZVdpZHRoKCksIG1lbW9y
eS0+YWNjZXNzQmFuaygpLCBtZW1vcnktPmhhc0ZlbmNlKCkpOworICAgIH0KIAogICAgIEluc3Qg
Y3JlYXRlU3RvcmUoVmFsdWUqIHZhbHVlLCBjb25zdCBBcmcmIGRlc3QpCiAgICAgewotICAgICAg
ICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gbW92ZUZvclR5cGUodmFsdWUtPnR5cGUoKSk7Cisg
ICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBzdG9yZU9wY29kZSh2YWx1ZSk7CiAgICAg
ICAgIHJldHVybiBjcmVhdGVTdG9yZShtb3ZlT3Bjb2RlLCB2YWx1ZSwgZGVzdCk7CiAgICAgfQog
CkBAIC0xMDA2LDcgKzEwNjEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgYXBwZW5kKHRy
YXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVTdG9yZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKSk7CiAgICAgfQotCisgICAgCiAgICAgQWlyOjpPcGNvZGUgbW92ZUZvclR5cGUoVHlwZSB0
eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xMDczLDcgKzExMjgsNDEg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChpbnN0KTsK
ICAgICB9CisgICAgCisgICAgdm9pZCBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMoQWlyOjpC
YXNpY0Jsb2NrKiB0YXJnZXQpCisgICAgeworICAgICAgICAvLyBOb3cgYXBwZW5kIHRoZSBpbnN0
cnVjdGlvbnMuIG1faW5zdHMgY29udGFpbnMgdGhlbSBpbiByZXZlcnNlIG9yZGVyLCBzbyB3ZSBw
cm9jZXNzCisgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBmb3IgKEluc3QmIGluc3Qg
OiBtX2luc3RzW2ldKQorICAgICAgICAgICAgICAgIHRhcmdldC0+YXBwZW5kSW5zdChXVEZNb3Zl
KGluc3QpKTsKKyAgICAgICAgfQorICAgICAgICBtX2luc3RzLnJlc2l6ZSgwKTsKKyAgICB9Cisg
ICAgCisgICAgQWlyOjpCYXNpY0Jsb2NrKiBuZXdCbG9jaygpCisgICAgeworICAgICAgICByZXR1
cm4gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlcihtX2Jsb2NrVG9CbG9ja1ttX2Jsb2Nr
XSk7CisgICAgfQogCisgICAgLy8gTk9URTogVGhpcyB3aWxsIGNyZWF0ZSBhIGNvbnRpbnVhdGlv
biBibG9jayAoYG5leHRCbG9ja2ApICphZnRlciogYW55IGJsb2NrcyB5b3UndmUgY3JlYXRlZCB1
c2luZworICAgIC8vIG5ld0Jsb2NrKCkuIFNvLCBpdCdzIHByZWZlcmFibGUgdG8gY3JlYXRlIGFs
bCBvZiB5b3VyIGJsb2NrcyB1cGZyb250IHVzaW5nIG5ld0Jsb2NrKCkuIEFsc28gbm90ZQorICAg
IC8vIHRoYXQgYW55IGNvZGUgeW91IGVtaXQgYmVmb3JlIHRoaXMgd2lsbCBiZSBwcmVwZW5kZWQg
dG8gdGhlIGNvbnRpbnVhdGlvbiwgYW5kIGFueSBjb2RlIHlvdSBlbWl0CisgICAgLy8gYWZ0ZXIg
dGhpcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBwcmV2aW91cyBibG9jay4KKyAgICB2b2lkIHNw
bGl0QmxvY2soQWlyOjpCYXNpY0Jsb2NrKiYgcHJldmlvdXNCbG9jaywgQWlyOjpCYXNpY0Jsb2Nr
KiYgbmV4dEJsb2NrKQorICAgIHsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA9IG1f
YmxvY2tUb0Jsb2NrW21fYmxvY2tdOworICAgICAgICAKKyAgICAgICAgcHJldmlvdXNCbG9jayA9
IGJsb2NrOworICAgICAgICBuZXh0QmxvY2sgPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEFm
dGVyKGJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9u
cyhuZXh0QmxvY2spOworICAgICAgICBuZXh0QmxvY2stPnN1Y2Nlc3NvcnMoKSA9IGJsb2NrLT5z
dWNjZXNzb3JzKCk7CisgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKCkuY2xlYXIoKTsKKyAgICAg
ICAgCisgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJbnN0PigpKTsKKyAgICB9CisgICAg
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIFQq
IGVuc3VyZVNwZWNpYWwoVComIGZpZWxkLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAg
ewpAQCAtMTEyMyw3ICsxMjEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlN0YWNrQXJndW1lbnQ6CiAgICAgICAgICAgICAg
ICAgYXJnID0gQXJnOjpjYWxsQXJnKHZhbHVlLnJlcCgpLm9mZnNldEZyb21TUCgpKTsKLSAgICAg
ICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZS52YWx1ZSgpLCBhcmcpOworICAgICAgICAgICAg
ICAgIGFwcGVuZFN0b3JlKG1vdmVGb3JUeXBlKHZhbHVlLnZhbHVlKCkpLCBhcmcpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTk2MSw2ICsyMDUwLDMwOCBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZFg4NkRp
dihCMzo6T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91
YmxlV29yZDsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2OworICAgICAgICBzd2l0Y2ggKG1fdmFs
dWUtPnR5cGUoKSkgeworICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgY29udmVydFRv
RG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMjsKKyAgICAgICAgICAgIGRpdiA9
IFg4NkRpdjMyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NjQ6CisgICAg
ICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvUXVhZFdvcmQ2NDsKKyAg
ICAgICAgICAgIGRpdiA9IFg4NkRpdjY0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKG9wID09IERpdiB8fCBv
cCA9PSBNb2QpOworICAgICAgICBUbXAgcmVzdWx0ID0gb3AgPT0gRGl2ID8gbV9lYXggOiBtX2Vk
eDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgbV9lYXgp
OworICAgICAgICBhcHBlbmQoY29udmVydFRvRG91YmxlV29yZCwgbV9lYXgsIG1fZWR4KTsKKyAg
ICAgICAgYXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsK
KyAgICAgICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwgdG1wKG1fdmFsdWUpKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGVuZFg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFpcjo6
T3Bjb2RlIGRpdiA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVE
aXY2NDsKKworICAgICAgICBBU1NFUlQob3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKKyAgICAg
ICAgVG1wIHJlc3VsdCA9IG9wID09IFVEaXYgPyBtX2VheCA6IG1fZWR4OworCisgICAgICAgIGFw
cGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgIGFwcGVu
ZChYb3I2NCwgbV9lZHgsIG1fZWR4KTsKKyAgICAgICAgYXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4
LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwg
dG1wKG1fdmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgbG9hZExpbmtPcGNv
ZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2Ug
PyBPUENPREVfRk9SX1dJRFRIKExvYWRMaW5rQWNxLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRI
KExvYWRMaW5rLCB3aWR0aCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlQ29u
ZE9wY29kZShXaWR0aCB3aWR0aCwgYm9vbCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
ZW5jZSA/IE9QQ09ERV9GT1JfV0lEVEgoU3RvcmVDb25kUmVsLCB3aWR0aCkgOiBPUENPREVfRk9S
X1dJRFRIKFN0b3JlQ29uZCwgd2lkdGgpOworICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIGNhbiBl
bWl0IGNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcGF0dGVybnM6CisgICAgLy8gQXRvbWljV2Vha0NB
UworICAgIC8vIEJpdFhvcihBdG9taWNXZWFrQ0FTLCAxKQorICAgIC8vIEF0b21pY1N0cm9uZ0NB
UworICAgIC8vIEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gTm90RXF1
YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkKKyAgICAvLyBCcmFuY2goQXRvbWljV2Vha0NB
UykKKyAgICAvLyBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAg
Ly8gQnJhbmNoKE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vCisg
ICAgLy8gSXQgYXNzdW1lcyB0aGF0IGF0b21pY1ZhbHVlIHBvaW50cyB0byB0aGUgQ0FTLCBhbmQg
bV92YWx1ZSBwb2ludHMgdG8gdGhlIGluc3RydWN0aW9uIGJlaW5nCisgICAgLy8gZ2VuZXJhdGVk
LiBJdCBhc3N1bWVzIHRoYXQgeW91J3ZlIGNvbnN1bWVkIGV2ZXJ5dGhpbmcgdGhhdCBuZWVkcyB0
byBiZSBjb25zdW1lZC4KKyAgICB2b2lkIGFwcGVuZENBUyhWYWx1ZSogYXRvbWljVmFsdWUsIGJv
b2wgaW52ZXJ0KQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IGF0b21pY1Zh
bHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXRvbWljKTsK
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCcmFuY2ggPSBtX3ZhbHVlLT5vcCgpID09IEJyYW5j
aDsKKyAgICAgICAgYm9vbCBpc1N0cm9uZyA9IGF0b21pYy0+b3AoKSA9PSBBdG9taWNTdHJvbmdD
QVM7CisgICAgICAgIGJvb2wgcmV0dXJuc09sZFZhbHVlID0gbV92YWx1ZS0+b3AoKSA9PSBBdG9t
aWNTdHJvbmdDQVM7CisgICAgICAgIAorICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3Bl
cmF0aW9uV2lkdGgoKTsKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisKKyAg
ICAgICAgVG1wIHZhbHVlUmVzdWx0VG1wOworICAgICAgICBUbXAgYm9vbFJlc3VsdFRtcDsKKyAg
ICAgICAgaWYgKHJldHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IWludmVydCk7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAg
ICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgfSBl
bHNlIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUu
bmV3VG1wKEdQKTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQ
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2Rl
Lm5ld1RtcChHUCk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBUbXAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXA7Cisg
ICAgICAgIGlmIChpc1N0cm9uZyAmJiAhaXNCcmFuY2gpCisgICAgICAgICAgICBzdWNjZXNzQm9v
bFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBzdWNjZXNzQm9vbFJlc3VsdFRtcCA9IGJvb2xSZXN1bHRUbXA7CisKKyAgICAgICAgVG1wIGV4
cGVjdGVkVmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGlsZCgwKSk7CisgICAgICAgIFRtcCBuZXdW
YWx1ZVRtcCA9IHRtcChhdG9taWMtPmNoaWxkKDEpKTsKKyAgICAgICAgCisgICAgICAgIEZyZXF1
ZW50ZWRCbG9jayBzdWNjZXNzOworICAgICAgICBGcmVxdWVudGVkQmxvY2sgZmFpbHVyZTsKKyAg
ICAgICAgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gbV9ibG9ja1RvQmxv
Y2tbbV9ibG9ja10tPnN1Y2Nlc3NvcihpbnZlcnQpOworICAgICAgICAgICAgZmFpbHVyZSA9IG1f
YmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoIWludmVydCk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBhcHBlbmQocmVsYXhl
ZE1vdmVGb3JUeXBlKGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpKSwgaW1tT3JUbXAoYXRvbWljLT5j
aGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdHJvbmdDQVMsIHdp
ZHRoKSwgbV9lYXgsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBhcHBl
bmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpKSwgbV9lYXgsIHZh
bHVlUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAg
ICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChCcmFuY2hBdG9taWNTdHJvbmdDQVMs
IHdpZHRoKSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgs
IG5ld1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tt
X2Jsb2NrXS0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCBmYWlsdXJlKTsKKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0cm9u
Z0NBUywgd2lkdGgpLCBBcmc6OnN0YXR1c0NvbmQoaW52ZXJ0ID8gTWFjcm9Bc3NlbWJsZXI6OkZh
aWx1cmUgOiBNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCB0bXAoYXRvbWljLT5jaGls
ZCgxKSksIGFkZHJlc3MsIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOworICAg
ICAgICAvLyBXZSB3aXNoIHRvIGVtaXQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJsb2NrICNy
ZWxvb3A6CisgICAgICAgIC8vICAgICBMb2FkTGluaworICAgICAgICAvLyAgICAgQnJhbmNoIE5v
dEVxdWFsCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogVGhlbjojZmFpbCwgRWxzZTogI3N0b3Jl
CisgICAgICAgIC8vIEJsb2NrICNzdG9yZToKKyAgICAgICAgLy8gICAgIFN0b3JlQ29uZAorICAg
ICAgICAvLyAgICAgWG9yICQxLCAlcmVzdWx0ICAgIDwtLS0gb25seSBpZiAhaW52ZXJ0CisgICAg
ICAgIC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAgICAgICAg
Ly8gQmxvY2sgI2ZhaWw6CisgICAgICAgIC8vICAgICBNb3ZlICRpbnZlcnQsICVyZXN1bHQKKyAg
ICAgICAgLy8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAg
ICAvLyBCbG9jayAjZG9uZToKKyAgICAgICAgCisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogcmVs
b29wQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0b3JlQmxv
Y2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN1Y2Nlc3NCbG9jayA9
IG51bGxwdHI7CisgICAgICAgIGlmICghaXNCcmFuY2ggJiYgaXNTdHJvbmcpCisgICAgICAgICAg
ICBzdWNjZXNzQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGZh
aWxCbG9jayA9IG51bGxwdHI7CisgICAgICAgIGlmICghaXNCcmFuY2gpCisgICAgICAgICAgICBm
YWlsQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0cm9uZ0Zh
aWxCbG9jazsKKyAgICAgICAgaWYgKGlzU3Ryb25nKQorICAgICAgICAgICAgc3Ryb25nRmFpbEJs
b2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrIGNvbXBhcmlzb25GYWls
OworICAgICAgICBGcmVxdWVudGVkQmxvY2sgd2Vha0ZhaWw7CisgICAgICAgIGlmIChpc1N0cm9u
ZykgeworICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBzdHJvbmdGYWlsQmxvY2s7CisgICAg
ICAgICAgICB3ZWFrRmFpbCA9IHJlbG9vcEJsb2NrOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaWYgKGlzQnJhbmNoKQorICAgICAgICAgICAgICAgIGNvbXBhcmlzb25GYWlsID0gZmFp
bHVyZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21wYXJpc29uRmFpbCA9
IGZhaWxCbG9jazsKKyAgICAgICAgICAgIHdlYWtGYWlsID0gZmFpbHVyZTsKKyAgICAgICAgfQor
ICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFpcjo6QmFzaWNC
bG9jayogZG9uZUJsb2NrOworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ssIGRvbmVCbG9j
ayk7CisgICAgICAgIAorICAgICAgICBhcHBlbmQoSnVtcCk7CisgICAgICAgIGJlZ2luQmxvY2st
PnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAgICAKKyAgICAgICAgcmVsb29wQmxv
Y2stPmFwcGVuZChsb2FkTGlua09wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92
YWx1ZSwgdmFsdWVSZXN1bHRUbXAsIGFkZHJlc3MpOworICAgICAgICByZWxvb3BCbG9jay0+YXBw
ZW5kKE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNoLCBjYW5vbmljYWxXaWR0aCh3aWR0aCkpLCBtX3Zh
bHVlLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSB2YWx1ZVJlc3VsdFRt
cCwgZXhwZWN0ZWRWYWx1ZVRtcCk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5zZXRTdWNjZXNzb3Jz
KGNvbXBhcmlzb25GYWlsLCBzdG9yZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHN0b3JlQmxv
Y2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1f
dmFsdWUsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCk7CisgICAg
ICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEJyYW5j
aFRlc3QzMiwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3VsdFRt
cCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3Nv
cnMoc3VjY2Vzcywgd2Vha0ZhaWwpOworICAgICAgICAgICAgZG9uZUJsb2NrLT5zdWNjZXNzb3Jz
KCkuY2xlYXIoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkb25lQmxvY2stPnNpemUo
KSk7CisgICAgICAgICAgICBkb25lQmxvY2stPmFwcGVuZChPb3BzLCBtX3ZhbHVlKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpc1N0cm9uZykgeworICAgICAgICAgICAgICAg
IHN0b3JlQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2Vt
Ymxlcjo6WmVybyksIHN1Y2Nlc3NCb29sUmVzdWx0VG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAg
ICAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMoc3VjY2Vzc0Jsb2NrLCByZWxv
b3BCbG9jayk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2Nr
LT5hcHBlbmQoTW92ZSwgbV92YWx1ZSwgQXJnOjppbW0oIWludmVydCksIGJvb2xSZXN1bHRUbXAp
OworICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+YXBwZW5kKEp1bXAsIG1fdmFsdWUpOwor
ICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIWludmVydCkKKyAgICAg
ICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKFhvcjMyLCBtX3ZhbHVlLCBBcmc6OmJp
dEltbSgxKSwgYm9vbFJlc3VsdFRtcCwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEp1bXAsIG1fdmFsdWUpOworICAg
ICAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmFpbEJsb2NrLT5hcHBlbmQoTW92
ZSwgbV92YWx1ZSwgQXJnOjppbW0oaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAg
ICBmYWlsQmxvY2stPmFwcGVuZChKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgIGZhaWxCbG9j
ay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgIFRtcCB0bXAgPSBtX2NvZGUubmV3VG1wKEdQ
KTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29kZSh3
aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgdmFsdWVSZXN1bHRUbXAsIGFkZHJl
c3MsIHRtcCk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0
MzIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHRtcCwgQXJnOjpiaXRJbW0o
LTEpKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+c2V0U3VjY2Vzc29ycyhmYWlsQmxv
Y2ssIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBib29sIGFwcGVu
ZFZvaWRBdG9taWMoQWlyOjpPcGNvZGUgYXRvbWljT3Bjb2RlKQorICAgIHsKKyAgICAgICAgaWYg
KG1fdXNlQ291bnRzLm51bVVzZXMobV92YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIAorICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAg
IAorICAgICAgICBpZiAoaXNWYWxpZEZvcm0oYXRvbWljT3Bjb2RlLCBBcmc6OkltbSwgYWRkcmVz
cy5raW5kKCkpICYmIGltbShtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgIGFwcGVu
ZChhdG9taWNPcGNvZGUsIGltbShtX3ZhbHVlLT5jaGlsZCgwKSksIGFkZHJlc3MpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1Zh
bGlkRm9ybShhdG9taWNPcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAg
ICAgICAgIGFwcGVuZChhdG9taWNPcGNvZGUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGFkZHJl
c3MpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZEdlbmVyYWxBdG9t
aWMoQWlyOjpPcGNvZGUgb3Bjb2RlKQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21p
YyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAKKyAgICAgICAgQXJnIGFk
ZHJlc3MgPSBhZGRyKG1fdmFsdWUpOworICAgICAgICBUbXAgb2xkVmFsdWUgPSBtX2NvZGUubmV3
VG1wKEdQKTsKKyAgICAgICAgVG1wIG5ld1ZhbHVlID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAg
ICAgIAorICAgICAgICAvLyBXZSBuZWVkIGEgQ0FTIGxvb3Agb3IgYSBMTC9TQyBsb29wLiBVc2lu
ZyBwcmVwYXJlL2F0dGVtcHQgamFyZ29uLCB3ZSB3YW50OgorICAgICAgICAvLworICAgICAgICAv
LyBCbG9jayAjcmVsb29wOgorICAgICAgICAvLyAgICAgUHJlcGFyZQorICAgICAgICAvLyAgICAg
b3Bjb2RlCisgICAgICAgIC8vICAgICBBdHRlbXB0CisgICAgICAgIC8vICAgU3VjY2Vzc29yczog
VGhlbjojZG9uZSwgRWxzZTojcmVsb29wCisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAg
ICAvLyAgICAgTW92ZSBvbGRWYWx1ZSwgcmVzdWx0CisgICAgICAgIAorICAgICAgICBhcHBlbmQo
cmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgb2xkVmFsdWUsIHRtcChhdG9taWMp
KTsKKyAgICAgICAgCisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogcmVsb29wQmxvY2sgPSBuZXdC
bG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFp
cjo6QmFzaWNCbG9jayogZG9uZUJsb2NrOworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ss
IGRvbmVCbG9jayk7CisgICAgICAgIAorICAgICAgICBhcHBlbmQoSnVtcCk7CisgICAgICAgIGJl
Z2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAgICAKKyAgICAgICAg
QWlyOjpPcGNvZGUgcHJlcGFyZU9wY29kZTsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSB7CisgICAgICAgICAgICBj
YXNlIFdpZHRoODoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDhTaWduZWRF
eHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0
aDE2OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkMTZTaWduZWRFeHRlbmRU
bzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDMyOgor
ICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlMzI7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICAgICAgcHJlcGFy
ZU9wY29kZSA9IE1vdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwor
ICAgICAgICAgICAgb3Bjb2RlID0gbG9hZExpbmtPcGNvZGUoYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpLCBhdG9taWMtPmhhc0ZlbmNlKCkpOworICAgICAgICB9CisgICAgICAgIHJlbG9vcEJsb2Nr
LT5hcHBlbmQocHJlcGFyZU9wY29kZSwgbV92YWx1ZSwgYWRkcmVzcywgb2xkVmFsdWUpOworICAg
ICAgICAKKyAgICAgICAgaWYgKG9wY29kZSAhPSBOb3ApIHsKKyAgICAgICAgICAgIGlmIChpbW0o
YXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpU
bXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29k
ZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwor
ICAgICAgICAgICAgZWxzZSBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpU
bXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29k
ZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChy
ZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwor
ICAgICAgICAgICAgICAgIGlmIChpbW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0o
b3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICByZWxvb3BC
bG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdW
YWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZWxvb3BC
bG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdW
YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNYODYoKSkg
eworICAgICAgICAgICAgQWlyOjpPcGNvZGUgY2FzT3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChC
cmFuY2hBdG9taWNTdHJvbmdDQVMsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSk7CisgICAgICAg
ICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUo
KSksIG9sZFZhbHVlLCBtX2VheCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKGNh
c09wY29kZSwgbV92YWx1ZSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNz
KSwgbV9lYXgsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBUbXAgYm9vbFJlc3Vs
dCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChz
dG9yZUNvbmRPcGNvZGUoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpLCBhdG9taWMtPmhhc0ZlbmNl
KCkpLCBuZXdWYWx1ZSwgYWRkcmVzcywgYm9vbFJlc3VsdCk7CisgICAgICAgICAgICByZWxvb3BC
bG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpa
ZXJvKSwgYm9vbFJlc3VsdCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgfQorICAgICAgICBy
ZWxvb3BCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICB9
CisgICAgCiAgICAgdm9pZCBsb3dlcigpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUt
Pm9wY29kZSgpKSB7CkBAIC0xOTcxLDMwICsyMzYyLDUwIEBAIHByaXZhdGU6CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0
cmFwcGluZ0luc3QobV92YWx1ZSwgbW92ZUZvclR5cGUobV92YWx1ZS0+dHlwZSgpKSwgbV92YWx1
ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBNZW1vcnlWYWx1
ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUgPSBBaXI6Ok9vcHM7CisgICAgICAgICAgICBpZiAobWVtb3J5LT5oYXNG
ZW5jZSgpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChtZW1vcnktPnR5cGUoKSkgeworICAg
ICAgICAgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExv
YWRBY3EzMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBJbnQ2NDoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTY0OworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBvcGNvZGUgPSBtb3ZlRm9yVHlwZShtZW1vcnktPnR5cGUoKSk7CisgICAgICAg
ICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkciht
X3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ4UzogewotICAgICAgICAgICAgYXBwZW5k
KHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOFNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOFNp
Z25lZEV4dGVuZFRvMzIgOiBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICBhcHBl
bmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwg
dG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIExvYWQ4WjogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVl
LCBMb2FkOCwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAg
ICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFz
RmVuY2UoKSA/IExvYWRBY3E4IDogTG9hZDg7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJ
bnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUp
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQx
NlM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDE2U2ln
bmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7Cisg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4o
KS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkMTZTaWduZWRF
eHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNv
ZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZaOiB7Ci0gICAgICAgICAg
ICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNiwgbV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBt
X3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNiA6IExvYWQx
NjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3Zh
bHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotCisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBZGQ6IHsKICAgICAgICAg
ICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDky
LDcgKzI1MDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmlzQ2hpbGwo
KSkKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwogICAgICAgICAg
ICAgaWYgKGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAg
ICAgIGxvd2VyWDg2RGl2KERpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2RGl2KERpdik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNT
RVJUKCFpc1g4NigpIHx8IGlzRmxvYXQobV92YWx1ZS0+dHlwZSgpKSk7CkBAIC0yMTAzLDcgKzI1
MTQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgVURpdjogewogICAgICAgICAgICAgaWYg
KGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAgIGxv
d2VyWDg2VURpdihVRGl2KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVEaXYpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjExNywxMyArMjUy
OCwxMyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE1vZDogewogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaXNYODYoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV92YWx1ZS0+
aXNDaGlsbCgpKTsKLSAgICAgICAgICAgIGxvd2VyWDg2RGl2KE1vZCk7CisgICAgICAgICAgICBh
cHBlbmRYODZEaXYoTW9kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAg
ICAgIGNhc2UgVU1vZDogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7Ci0g
ICAgICAgICAgICBsb3dlclg4NlVEaXYoVU1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZVRGl2
KFVNb2QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxNjIsMTAgKzI1
NzMsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPE5vdDMyLCBOb3Q2
ND4obV92YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5p
c0ludCgxKQorICAgICAgICAgICAgICAgICYmIGlzQXRvbWljQ0FTKG1fdmFsdWUtPmNoaWxkKDAp
LT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAmJiBjYW5CZUludGVybmFsKG1fdmFsdWUtPmNo
aWxkKDApKSkgeworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxk
KDApKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZS0+Y2hpbGQoMCksIHRydWUp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAog
ICAgICAgICAgICAgYXBwZW5kQmluT3A8WG9yMzIsIFhvcjY0LCBYb3JEb3VibGUsIFhvckZsb2F0
LCBDb21tdXRhdGl2ZT4oCiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFs
dWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICBhcHBlbmRVbk9wPERlcGVu
ZDMyLCBEZXBlbmQ2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTaGw6IHsKICAgICAgICAgICAgIGlmIChtX3ZhbHVl
LT5jaGlsZCgxKS0+aXNJbnQzMigxKSkgewpAQCAtMjI2Niw3ICsyNjkxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZFN0
b3JlKHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9y
ZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0yMjg3LDcgKzI3MTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBw
ZW5kU3RvcmUoQWlyOjpTdG9yZTgsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAg
ICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIzMDgsNyArMjczMyw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcHBlbmRTdG9yZShBaXI6OlN0b3JlMTYsIHZh
bHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3Zh
bHVlLCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTI0MTYsNyArMjg0MSwyMiBAQCBwcml2YXRlOgogICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBFcXVhbDoKLSAgICAgICAgY2FzZSBOb3RFcXVhbDoKKyAgICAgICAgY2Fz
ZSBOb3RFcXVhbDogeworICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUo
KSA9PSBBdG9taWNTdHJvbmdDQVMKKyAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgw
KS0+Y2hpbGQoMCkgPT0gbV92YWx1ZS0+Y2hpbGQoMSkKKyAgICAgICAgICAgICAgICAmJiBjYW5C
ZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCgh
bV9sb2NrZWQuY29udGFpbnMobV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpKSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgxKSkpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUt
PmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZS0+Y2hpbGQoMCks
IG1fdmFsdWUtPm9wY29kZSgpID09IE5vdEVxdWFsKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBtX2luc3RzLmxh
c3QoKS5hcHBlbmQoY3JlYXRlQ29tcGFyZShtX3ZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIExlc3NUaGFuOgogICAgICAg
ICBjYXNlIEdyZWF0ZXJUaGFuOgogICAgICAgICBjYXNlIExlc3NFcXVhbDoKQEAgLTI3MjcsNiAr
MzE2NywzOSBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBCcmFuY2g6IHsK
KyAgICAgICAgICAgIGlmIChjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAg
ICAgICAgICAgICAgIFZhbHVlKiBicmFuY2hDaGlsZCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAg
ICAgICAgICAgICAgIHN3aXRjaCAoYnJhbmNoQ2hpbGQtPm9wY29kZSgpKSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRl
cm5hbChicmFuY2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hD
aGlsZCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICAg
ICAgICAgICAgICAvLyBBIGJyYW5jaCBpcyBhIGNvbXBhcmlzb24gdG8gemVyby4KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+aXNJbnQoMCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZCwgZmFsc2UpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBj
YXNlIEVxdWFsOgorICAgICAgICAgICAgICAgIGNhc2UgTm90RXF1YWw6CisgICAgICAgICAgICAg
ICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9u
Z0NBUworICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChicmFuY2hDaGls
ZC0+b3Bjb2RlKDApKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgYnJhbmNoQ2hpbGQtPmNo
aWxkKDApLT5jaGlsZCgwKSA9PSBicmFuY2hDaGlsZC0+Y2hpbGQoMSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkLT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLCBicmFuY2hD
aGlsZC0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnN0
cy5sYXN0KCkuYXBwZW5kKGNyZWF0ZUJyYW5jaChtX3ZhbHVlLT5jaGlsZCgwKSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNzg0LDcgKzMyNTcsODEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGFwcGVuZChBaXI6OkVudHJ5U3dpdGNoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoK
KyAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgIGFwcGVuZENBUyht
X3ZhbHVlLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6IHsKKyAgICAgICAgICAgIEF0b21pY1Zh
bHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlm
IChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQWRkLCBhdG9taWMtPm9w
ZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAgICAgQWly
OjpPcGNvZGUgb3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnQWRkLCBhdG9taWMt
Pm9wZXJhdGlvbldpZHRoKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWRPcGNvZGUob3Bjb2Rl
LCBBcmc6OlRtcCwgYWRkcmVzcykpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1v
dmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0bXAoYXRv
bWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyksIGFkZHJl
c3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEFkZCwgY2Fub25pY2FsV2lk
dGgoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOiB7CisgICAgICAgICAgICBBdG9t
aWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAg
ICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1N1YiwgYXRvbWlj
LT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoU3Vi
LCBjYW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hj
aGdBbmQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxB
dG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9G
T1JfV0lEVEgoQXRvbWljQW5kLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxB
dG9taWMoT1BDT0RFX0ZPUl9XSURUSChBbmQsIGNhbm9uaWNhbFdpZHRoKGF0b21pYy0+b3BlcmF0
aW9uV2lkdGgoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1
ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAo
YXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY09yLCBhdG9taWMtPm9wZXJh
dGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChPciwgY2Fub25p
Y2FsV2lkdGgoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOiB7
CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFs
dWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRI
KEF0b21pY1hvciwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9Q
Q09ERV9GT1JfV0lEVEgoWG9yLCBjYW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
QXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hjaGcsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgo
KSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZE9wY29kZShvcGNvZGUsIEFyZzo6VG1wLCBhZGRy
ZXNzKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWlj
LT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9taWMpKTsKKyAgICAgICAg
ICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVzcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBh
cHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoWG9yLCBjYW5vbmljYWxXaWR0aChh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTI3OTIsNjQgKzMzMzksNyBAQCBwcml2YXRlOgogICAgICAgICBkYXRhTG9n
KCJGQVRBTDogY291bGQgbm90IGxvd2VyICIsIGRlZXBEdW1wKG1fcHJvY2VkdXJlLCBtX3ZhbHVl
KSwgIlxuIik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQot
Ci0gICAgdm9pZCBsb3dlclg4NkRpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4
KTsKLSAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAgICAgICAg
QWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKLSAgICAgICAgQWlyOjpPcGNvZGUgZGl2
OwotICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgewotICAgICAgICBjYXNlIEludDMy
OgotICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdv
cmQzMjsKLSAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgSW50NjQ6Ci0gICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2
Q29udmVydFRvUXVhZFdvcmQ2NDsKLSAgICAgICAgICAgIGRpdiA9IFg4NkRpdjY0OwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOwotICAgICAgICBYODZSZWdpc3RlcnM6
OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBYODZS
ZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxk
KDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdvcmQsIGVheCwgZWR4
KTsKLSAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkp
OwotICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7Ci0KLSNl
bHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOwotI2VuZGlmCi0gICAgfQotCi0gICAgdm9pZCBsb3dlclg4NlVEaXYoQjM6Ok9w
Y29kZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICAgICAgVG1w
IGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBlZHggPSBUbXAoWDg2
UmVnaXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGRpdiA9IG1fdmFsdWUtPnR5
cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsKLQotICAgICAgICBBU1NFUlQo
b3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKLSAgICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3Rl
cklEIHJlc3VsdCA9IG9wID09IFVEaXYgPyBYODZSZWdpc3RlcnM6OmVheCA6IFg4NlJlZ2lzdGVy
czo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBl
YXgpOwotICAgICAgICBhcHBlbmQoWG9yNjQsIGVkeCwgZWR4KTsKLSAgICAgICAgYXBwZW5kKGRp
diwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOwotICAgICAgICBhcHBlbmQoTW92
ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFS
QU0ob3ApOwotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZgotICAg
IH0KLQorICAgIAogICAgIEluZGV4U2V0PFZhbHVlPiBtX2xvY2tlZDsgLy8gVGhlc2UgYXJlIHZh
bHVlcyB0aGF0IHdpbGwgaGF2ZSBubyBUbXAgaW4gQWlyLgogICAgIEluZGV4TWFwPFZhbHVlLCBU
bXA+IG1fdmFsdWVUb1RtcDsgLy8gVGhlc2UgYXJlIHZhbHVlcyB0aGF0IG11c3QgaGF2ZSBhIFRt
cCBpbiBBaXIuIFdlIHNheSB0aGF0IGEgVmFsdWUqIHdpdGggYSBub24tbnVsbCBUbXAgaXMgInBp
bm5lZCIuCiAgICAgSW5kZXhNYXA8VmFsdWUsIFRtcD4gbV9waGlUb1RtcDsgLy8gRWFjaCBQaGkg
Z2V0cyBpdHMgb3duIFRtcC4KQEAgLTI4NjQsNyArMzM1NCw3IEBAIHByaXZhdGU6CiAKICAgICBW
ZWN0b3I8VmVjdG9yPEluc3QsIDQ+PiBtX2luc3RzOwogICAgIFZlY3RvcjxJbnN0PiBtX3Byb2xv
Z3VlOwotCisgICAgCiAgICAgQjM6OkJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgYm9vbCBtX2lz
UmFyZTsKICAgICB1bnNpZ25lZCBtX2luZGV4OwpAQCAtMjg3NSw2ICszMzY1LDEyIEBAIHByaXZh
dGU6CiAKICAgICBQcm9jZWR1cmUmIG1fcHJvY2VkdXJlOwogICAgIENvZGUmIG1fY29kZTsKKwor
ICAgIEFpcjo6QmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsKKworICAgIFRt
cCBtX2VheDsKKyAgICBUbXAgbV9lY3g7CisgICAgVG1wIG1fZWR4OwogfTsKIAogfSAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5
VmFsdWUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNNZW1vcnlWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDMwICszNCw0OCBAQCBNZW1v
cnlWYWx1ZTo6fk1lbW9yeVZhbHVlKCkKIHsKIH0KIAorVHlwZSBNZW1vcnlWYWx1ZTo6YWNjZXNz
VHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzTG9hZChvcGNvZGUoKSkpCisgICAgICAgIHJldHVy
biB0eXBlKCk7CisgICAgLy8gVGhpcyBoYXBwZW5zIHRvIHdvcmsgZm9yIGF0b21pY3MsIHRvby4g
VGhhdCdzIHdoeSBBdG9taWNWYWx1ZSBkb2VzIG5vdCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMuCisg
ICAgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7Cit9CisKK0JhbmsgTWVtb3J5VmFsdWU6OmFjY2Vz
c0JhbmsoKSBjb25zdAoreworICAgIHJldHVybiBiYW5rRm9yVHlwZShhY2Nlc3NUeXBlKCkpOwor
fQorCiBzaXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkgY29uc3QKIHsKKyAgICBy
ZXR1cm4gYnl0ZXMoYWNjZXNzV2lkdGgoKSk7Cit9CisKK1dpZHRoIE1lbW9yeVZhbHVlOjpsb2Fk
U3RvcmVXaWR0aCgpIGNvbnN0Cit7CiAgICAgc3dpdGNoIChvcGNvZGUoKSkgewogICAgIGNhc2Ug
TG9hZDhaOgogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgU3RvcmU4OgotICAgICAgICByZXR1
cm4gMTsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICBjYXNlIExvYWQxNlo6CiAgICAgY2Fz
ZSBMb2FkMTZTOgogICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgcmV0dXJuIDI7CisgICAgICAg
IHJldHVybiBXaWR0aDE2OwogICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmV0dXJuIHNpemVvZlR5
cGUodHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZSh0eXBlKCkpOwogICAgIGNh
c2UgU3RvcmU6Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKGNoaWxkKDApLT50eXBlKCkpOwor
ICAgICAgICByZXR1cm4gd2lkdGhGb3JUeXBlKGNoaWxkKDApLT50eXBlKCkpOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gV2lkdGg4OwogICAgIH0KIH0KIAogV2lkdGggTWVtb3J5VmFs
dWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2lkdGhGb3JCeXRlcyhhY2Nl
c3NCeXRlU2l6ZSgpKTsKKyAgICByZXR1cm4gbG9hZFN0b3JlV2lkdGgoKTsKIH0KIAogdm9pZCBN
ZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKQEAgLTY3LDYgKzg1LDggQEAgdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29t
bWFQcmludGVyJgogICAgIGlmICgoaXNMb2FkKCkgJiYgZWZmZWN0cygpLnJlYWRzICE9IHJhbmdl
KCkpCiAgICAgICAgIHx8IChpc1N0b3JlKCkgJiYgZWZmZWN0cygpLndyaXRlcyAhPSByYW5nZSgp
KSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicmFuZ2UgPSAiLCByYW5nZSgpKTsKKyAgICBp
ZiAocGhhbnRvbVJhbmdlKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgInBoYW50b21SYW5n
ZSA9ICIsIHBoYW50b21SYW5nZSgpKTsKIH0KIAogVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9uZUlt
cGwoKSBjb25zdApAQCAtNzQsNiArOTQsNTggQEAgVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9uZUlt
cGwoKSBjb25zdAogICAgIHJldHVybiBuZXcgTWVtb3J5VmFsdWUoKnRoaXMpOwogfQogCisvLyBV
c2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2Yg
dGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CisvLyBkZXNjcmliZXMgdGhlIHJldHVy
bmVkIHR5cGUpLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBl
LCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAg
IDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQorICAg
ICwgbV9vZmZzZXQob2Zmc2V0KQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
ICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhTOgor
ICAgICAgICBjYXNlIExvYWQxNlo6CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAgICAg
IEFTU0VSVCh0eXBlID09IEludDMyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0b3JlODoKKyAgICAgICAgY2FzZSBTdG9yZTE2OgorICAgICAgICBjYXNlIFN0b3JlOgorICAg
ICAgICAgICAgQVNTRVJUKHR5cGUgPT0gVm9pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9
CisgICAgfQorfQorCisvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJu
IHR5cGUgaXMgaW1wbGllZC4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9y
aWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgOiBN
ZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpCit7CisgICAg
aWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7
CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2Fz
ZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExvYWQxNlM6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgfQorfQorCisvLyBVc2UgdGhpcyBmb3JtIGZvciBzdG9yZXMuCitNZW1vcnlWYWx1
ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZh
bHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgOiBWYWx1ZShDaGVja2VkT3Bj
b2RlLCBraW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQo
b2Zmc2V0KQoreworICAgIEFTU0VSVChpc1N0b3JlKGtpbmQub3Bjb2RlKCkpKTsKK30KKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw0OCArMjcsMTcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRl
ICJCM0JhbmsuaCIKICNpbmNsdWRlICJCM0hlYXBSYW5nZS5oIgogI2luY2x1ZGUgIkIzVmFsdWUu
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLS8vIEZJWE1FOiBXZSB3YW50
IHRvIGFsbG93IGZlbmNlZCBtZW1vcnkgYWNjZXNzZXMgb24gQVJNLgotLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0OQotCiBjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBNZW1vcnlWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgYWNjZXB0cyhLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2Rl
KCkpIHsKLSAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgIGNhc2UgTG9hZDhTOgotICAgICAg
ICBjYXNlIExvYWQxNlo6Ci0gICAgICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAgY2FzZSBMb2Fk
OgotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICBj
YXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMg
Ym9vbCBpc1N0b3JlKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZC5vcGNv
ZGUoKSkgewotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9yZTE2OgotICAg
ICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBz
dGF0aWMgYm9vbCBpc0xvYWQoS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFjY2Vw
dHMoa2luZCkgJiYgIWlzU3RvcmUoa2luZCk7CisgICAgICAgIHJldHVybiBpc01lbW9yeShraW5k
Lm9wY29kZSgpKTsKICAgICB9CiAKICAgICB+TWVtb3J5VmFsdWUoKTsKQEAgLTc4LDc2ICs0Nyw1
NiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKCkgY29uc3QgeyByZXR1
cm4gbV9yYW5nZTsgfQogICAgIHZvaWQgc2V0UmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5nZSkg
eyBtX3JhbmdlID0gcmFuZ2U7IH0KKyAgICAKKyAgICAvLyBUaGlzIGlzIGFuIGFsaWFzIGZvciBy
YW5nZS4KKyAgICBjb25zdCBIZWFwUmFuZ2UmIGFjY2Vzc1JhbmdlKCkgY29uc3QgeyByZXR1cm4g
cmFuZ2UoKTsgfQorICAgIHZvaWQgc2V0QWNjZXNzUmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5n
ZSkgeyBzZXRSYW5nZShyYW5nZSk7IH0KKyAgICAKKyAgICBjb25zdCBIZWFwUmFuZ2UmIGZlbmNl
UmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2ZlbmNlUmFuZ2U7IH0KKyAgICB2b2lkIHNldEZlbmNl
UmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5nZSkgeyBtX2ZlbmNlUmFuZ2UgPSByYW5nZTsgfQor
CisgICAgYm9vbCBpc1N0b3JlKCkgY29uc3QgeyByZXR1cm4gaXNTdG9yZShvcGNvZGUoKSk7IH0K
KyAgICBib29sIGlzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIGlzTG9hZChvcGNvZGUoKSk7IH0KIAot
ICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBWb2lkOyB9Ci0gICAg
Ym9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgIT0gVm9pZDsgfQorICAgIGJvb2wg
aGFzRmVuY2UoKSBjb25zdCB7IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsgfQogCisgICAgVHlwZSBh
Y2Nlc3NUeXBlKCkgY29uc3Q7CisgICAgQmFuayBhY2Nlc3NCYW5rKCkgY29uc3Q7CiAgICAgc2l6
ZV90IGFjY2Vzc0J5dGVTaXplKCkgY29uc3Q7Ci0gICAgV2lkdGggYWNjZXNzV2lkdGgoKSBjb25z
dDsKKyAgICAKKyAgICAvLyBTbGlnaHRseSBmYXN0ZXIgdmVyc2lvbiBvZiBhY2Nlc3NXaWR0aCwg
aWYgeW91IGtub3cgdGhhdCB5b3UncmUgd29ya2luZyB3aXRoIGEgbG9hZCBvciBzdG9yZS4KKyAg
ICBXaWR0aCBsb2FkU3RvcmVXaWR0aCgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgV2lkdGgg
YWNjZXNzV2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1ldGEoQ29t
bWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lk
IGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKLQotICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQg
KGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEg
c3VmZml4IHRoYXQKLSAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgotICAgIE1l
bW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9p
bnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUs
IGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBr
aW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zmc2V0LCBBcmd1bWVudHMu
Li4gYXJndW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUs
IG9yaWdpbiwgYXJndW1lbnRzLi4uKQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAg
ICAgLCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCiAgICAgewotICAgICAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAg
ICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIExvYWQ4WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDhTOgotICAgICAgICAgICAgY2FzZSBM
b2FkMTZaOgotICAgICAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAgICAgICAgICAgIEFTU0VS
VCh0eXBlID09IEludDMyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAgICAgY2FzZSBT
dG9yZToKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBWb2lkKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CisgICAgCisg
ICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3Ig
YW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAorICAgIC8vIGRlc2NyaWJl
cyB0aGUgcmV0dXJuZWQgdHlwZSkuCisgICAgTWVtb3J5VmFsdWUoS2luZCwgVHlwZSwgT3JpZ2lu
LCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKTsKIAogICAgIC8vIFVzZSB0aGlz
IGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgotICAgIE1l
bW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMy
X3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2lu
LCBwb2ludGVyLCBvZmZzZXQpCi0gICAgewotICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBP
cmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOwogCiAgICAgLy8gVXNl
IHRoaXMgZm9ybSBmb3Igc3RvcmVzLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2lu
IG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAw
KQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFs
dWUsIHBvaW50ZXIpCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFu
Z2UoSGVhcFJhbmdlOjp0b3AoKSkKLSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVE
KSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNh
c2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAgICAgY2FzZSBT
dG9yZToKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KKyAgICBNZW1vcnlWYWx1ZShLaW5k
LCBPcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0g
MCk7CisgICAgCiAgICAgaW50MzJfdCBtX29mZnNldCB7IDAgfTsKLSAgICBIZWFwUmFuZ2UgbV9y
YW5nZTsKKyAgICBIZWFwUmFuZ2UgbV9yYW5nZSB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKyAgICBI
ZWFwUmFuZ2UgbV9mZW5jZVJhbmdlIHsgSGVhcFJhbmdlKCkgfTsKIH07CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHJldmlz
aW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNs
dWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC04Miw3ICs4Myw2IEBA
IGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgTW9kLCAvLyBBbGwgYmV0cyBhcmUgb2ZmIGFz
IHRvIHdoYXQgd2lsbCBoYXBwZW4gd2hlbiB5b3UgZXhlY3V0ZSB0aGlzIGZvciAtMl4zMSUtMSBh
bmQgeCUwLgogICAgIFVNb2QsCiAKLQogICAgIC8vIFBvbHltb3JwaGljIG5lZ2F0aW9uLiBOb3Rl
IHRoYXQgd2Ugb25seSBuZWVkIHRoaXMgZm9yIGZsb2F0aW5nIHBvaW50LCBzaW5jZSBpbnRlZ2Vy
IG5lZ2F0aW9uCiAgICAgLy8gaXMgZXhhY3RseSBsaWtlIFN1YigwLCB4KS4gQnV0IHRoYXQncyBu
b3QgdHJ1ZSBmb3IgZmxvYXRpbmcgcG9pbnQuIFN1YigwLCAwKSBpcyAwLCB3aGlsZQogICAgIC8v
IE5lZygwKSBpcyAtMC4gQWxzbywgd2UgY2Fub25pY2FsaXplIFN1YigwLCB4KSBpbnRvIE5lZyh4
KSBpbiBjYXNlIG9mIGludGVnZXJzLgpAQCAtMTYyLDYgKzE2MiwxMDcgQEAgZW51bSBPcGNvZGUg
OiBpbnQxNl90IHsKICAgICBTdG9yZTE2LAogICAgIC8vIFRoaXMgaXMgYSBwb2x5bW9ycGhpYyBz
dG9yZSBmb3IgSW50MzIsIEludDY0LCBGbG9hdCwgYW5kIERvdWJsZS4KICAgICBTdG9yZSwKKyAg
ICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgYSBib29sZWFu
LiBNYXkgY2hvb3NlIHRvIGRvIG5vdGhpbmcgYW5kIHJldHVybiBmYWxzZS4gWW91IGNhbgorICAg
IC8vIHVzdWFsbHkgYXNzdW1lIHRoYXQgdGhpcyBpcyBmYXN0ZXIgYW5kIHJlc3VsdHMgaW4gbGVz
cyBjb2RlIHRoYW4gQXRvbWljU3Ryb25nQ0FTLCB0aG91Z2ggdGhhdCdzCisgICAgLy8gbm90IG5l
Y2Vzc2FyaWx5IHRydWUgb24gSW50ZWwsIGlmIGluc3RydWN0aW9uIHNlbGVjdGlvbiBkb2VzIGl0
cyBqb2IuIEltYWdpbmUgdGhhdCB0aGlzIG9wY29kZSBpcworICAgIC8vIGFzIGlmIHlvdSBkaWQg
dGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICAvLyBib29sIEF0b21pY1dlYWtDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBUKiBw
dHIpCisgICAgLy8geworICAgIC8vICAgICBpZiAoIXJhbmQoKSkKKyAgICAvLyAgICAgICAgIHJl
dHVybiBmYWxzZTsgLy8gUmVhbCB3b3JsZCBleGFtcGxlIG9mIHRoaXM6IGNvbnRleHQgc3dpdGNo
IG9uIEFSTSB3aGlsZSBkb2luZyBDQVMuCisgICAgLy8gICAgIGlmICgqcHRyICE9IGV4cGVjdGVk
VmFsdWUpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gICAgICpwdHIgPSBu
ZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gfQorICAgIC8vCisgICAg
Ly8gTm90ZSB0aGF0IGFsbCBhdG9taWNzIHB1dCB0aGUgcG9pbnRlciBsYXN0IHRvIGJlIGNvbnNp
c3RlbnQgd2l0aCBob3cgbG9hZHMgYW5kIHN0b3JlcyB3b3JrLiBUaGlzCisgICAgLy8gaXMgYSBn
b29meSB0cmFkaXRpb24sIGJ1dCBpdCdzIGhhcm1sZXNzLCBhbmQgYmV0dGVyIHRoYW4gYmVpbmcg
aW5jb25zaXN0ZW50LgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHdlYWsgQ0FTIGhhcyBubyBm
ZW5jaW5nIGd1YXJhbnRlZXMgd2hlbiBpdCBmYWlscy4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xs
b3dpbmcKKyAgICAvLyB0cmFuc2Zvcm1hdGlvbiBpcyBhbHdheXMgdmFsaWQ6CisgICAgLy8KKyAg
ICAvLyBCZWZvcmU6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FT
KGV4cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3Vj
Y2VzcywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQWZ0ZXI6CisgICAgLy8KKyAgICAvLyAg
ICAgICAgIEJyYW5jaChFcXVhbChMb2FkKHB0ciksIGV4cGVjdGVkKSkKKyAgICAvLyAgICAgICBT
dWNjZXNzb3JzOiBUaGVuOiNhdHRlbXB0LCBFbHNlOiNmYWlsCisgICAgLy8gICAgIEJCI2F0dGVt
cHQ6CisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBw
dHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwK
KyAgICAvLworICAgIC8vIEJvdGgga2luZHMgb2YgQ0FTIGZvciBub24tY2Fub25pY2FsIHdpZHRo
cyAoV2lkdGg4IGFuZCBXaWR0aDE2KSBpZ25vcmUgdGhlIGlycmVsZXZhbnQgYml0cyBvZiB0aGUK
KyAgICAvLyBpbnB1dC4KKyAgICBBdG9taWNXZWFrQ0FTLAorICAgIAorICAgIC8vIEF0b21pYyBj
b21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBEb2VzIG5vdCBoYXZl
IHRoZSBub25kZXRlcm1pbmlzbSBvZiBXZWFrQ0FTLgorICAgIC8vIFRoaXMgaXMgYSBiaXQgbW9y
ZSBjb2RlIGFuZCBhIGJpdCBzbG93ZXIgaW4gc29tZSBjYXNlcywgdGhvdWdoIG5vdCBieSBhIGxv
dC4gSW1hZ2luZSB0aGF0IHRoaXMKKyAgICAvLyBvcGNvZGUgaXMgYXMgaWYgeW91IGRpZCB0aGlz
IGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8v
IFQgQXRvbWljU3Ryb25nQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQor
ICAgIC8vIHsKKyAgICAvLyAgICAgVCBvbGRWYWx1ZSA9ICpwdHI7CisgICAgLy8gICAgIGlmIChv
bGRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgKnB0ciA9IG5ld1ZhbHVl
OworICAgIC8vICAgICByZXR1cm4gb2xkVmFsdWUKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBO
b3RlIHRoYXQgQXRvbWljV2Vha0NBUyBhbmQgQXRvbWljU3Ryb25nQ0FTIHNvcnQgb2YgaGF2ZSB0
aGlzIGtpbmQgb2YgZXF1aXZhbGVuY2U6CisgICAgLy8KKyAgICAvLyBBdG9taWNXZWFrQ0FTKEBl
eHAsIEBuZXcsIEBwdHIpID09IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhAZXhwLCBAbmV3LCBAcHRy
KSwgQGV4cCkKKyAgICAvLworICAgIC8vIEFzc3VtaW5nIHRoYXQgdGhlIFdlYWtDQVMgZG9lcyBu
b3Qgc3B1cmlvdXNseSBmYWlsLCBvZiBjb3Vyc2UuCisgICAgQXRvbWljU3Ryb25nQ0FTLAorICAg
IAorICAgIC8vIEF0b21pY2FsbHkgX19fIGEgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm4gdGhl
IG9sZCB2YWx1ZS4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWljWGNo
Z19fXyhAb3BlcmFuZCwgQHB0cikKKyAgICAvLworICAgIC8vIEZvciBub24tY2Fub25pY2FsIHdp
ZHRocyAoV2lkdGg4IGFuZCBXaWR0aDE2KSwgdGhlc2UgcmV0dXJuIHNpZ24tZXh0ZW5kZWQgcmVz
dWx0cyBhbmQgaWdub3JlIHRoZQorICAgIC8vIGlycmVsZXZhbnQgYml0cyBvZiB0aGVpciBpbnB1
dHMuCisgICAgQXRvbWljWGNoZ0FkZCwKKyAgICBBdG9taWNYY2hnQW5kLAorICAgIEF0b21pY1hj
aGdPciwKKyAgICBBdG9taWNYY2hnU3ViLAorICAgIEF0b21pY1hjaGdYb3IsCisgICAgCisgICAg
Ly8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBoYXZlIEF0b21pY1hjaGdOZWcgYW5kIEF0b21pY1hj
aGdOb3QuCisgICAgCisgICAgLy8gQXRvbWljYWxseSBleGNoYW5nZSBhIHZhbHVlIHdpdGggYSBt
ZW1vcnkgbG9jYXRpb24uIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21p
Y1hjaGcoQG5ld1ZhbHVlLCBAcHRyKQorICAgIEF0b21pY1hjaGcsCisgICAgCisgICAgLy8gSW50
cm9kdWNlIGFuIGludmlzaWJsZSBkZXBlbmRlbmN5IGZvciBibG9ja2luZyBtb3Rpb24gb2YgbG9h
ZHMgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBy
ZXN1bHQgPSBEZXBlbmQoQHBoYW50b20pCisgICAgLy8KKyAgICAvLyBUaGlzIGlzIGV2ZW50dWFs
bHkgY29kZWdlbmVyYXRlZCB0byBoYXZlIGxvY2FsIHNlbWFudGljcyBhcyBpZiB3ZSBkaWQ6Cisg
ICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gJDAKKyAgICAvLworICAgIC8vIEJ1dCBpdCBlbnN1cmVz
IHRoYXQgdGhlIHVzZXJzIG9mIEByZXN1bHQgY2Fubm90IGV4ZWN1dGUgdW50aWwgQHBoYW50b20g
aXMgY29tcHV0ZWQuCisgICAgLy8KKyAgICAvLyBUaGUgY29tcGlsZXIgaXMgbm90IGFsbG93ZWQg
dG8gcmVhc29uIGFib3V0IHRoZSBmYWN0IHRoYXQgRGVwZW5kIGNvZGVnZW5lcmF0ZXMgdGhpcyB3
YXkuIEFueSBraW5kCisgICAgLy8gb2YgdHJhbnNmb3JtYXRpb24gb3IgYW5hbHlzaXMgdGhhdCBy
ZWxpZXMgb24gdGhlIGluc2lnaHQgdGhhdCBEZXBlbmQgaXMgcmVhbGx5IHplcm8gaXMgdW5zb3Vu
ZCwKKyAgICAvLyBiZWNhdXNlIGl0IHVubG9ja3MgcmVvcmRlcmluZyBvZiB1c2VycyBvZiBAcmVz
dWx0IGFuZCBAcGhhbnRvbS4KKyAgICAvLworICAgIC8vIE9uIFg4NiwgdGhpcyBpcyBsb3dlcmVk
IHRvIGEgbG9hZC1sb2FkIGZlbmNlIGFuZCBAcmVzdWx0IHVzZXMgQHBoYW50b20gZGlyZWN0bHku
CisgICAgLy8KKyAgICAvLyBPbiBBUk0sIHRoaXMgaXMgbG93ZXJlZCBhcyBpZiBsaWtlOgorICAg
IC8vCisgICAgLy8gQHJlc3VsdCA9IEJpdFhvcihAcGhhbnRvbSwgQHBoYW50b20pCisgICAgLy8K
KyAgICAvLyBFeGNlcHQgdGhhdCB0aGUgY29tcGlsZXIgbmV2ZXIgZ2V0cyBhbiBvcHBvcnR1bml0
eSB0byBzaW1wbGlmeSBvdXQgdGhlIEJpdFhvci4KKyAgICBEZXBlbmQsCiAKICAgICAvLyBUaGlz
IGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIGFkZHJlc3Mgb2YgYSBXYXNtIG1lbW9yeSBv
cGVyYXRpb24uIEl0IHRha2VzIGFuIEludFB0cgogICAgIC8vIGFuZCBhIHBpbm5lZCByZWdpc3Rl
ciB0aGVuIGNvbXB1dGVzIHRoZSBhcHByb3ByaWF0ZSBJbnRQdHIgYWRkcmVzcy4gRm9yIHRoZSB1
c2UtY2FzZSBvZgpAQCAtMzAxLDYgKzQwMiwxMTAgQEAgaW5saW5lIGJvb2wgaXNEZWZpbml0ZWx5
VGVybWluYWwoT3Bjb2RlIAogICAgIH0KIH0KIAoraW5saW5lIGJvb2wgaXNMb2FkKE9wY29kZSBv
cGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBj
YXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2FkMTZTOgorICAgIGNh
c2UgTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNTdG9yZShPcGNvZGUgb3Bjb2Rl
KQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBT
dG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzTG9h
ZFN0b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNl
IExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBM
b2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNlIFN0b3Jl
MTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWMo
T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWlj
V2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdB
ZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAg
IGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBB
dG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY0NBUyhPcGNvZGUg
b3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FT
OgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBp
c0F0b21pY1hjaGcoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAg
IGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBB
dG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNo
Z1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlz
TWVtb3J5QWNjZXNzKE9wY29kZSBvcGNvZGUpCit7CisgICAgcmV0dXJuIGlzQXRvbWljKG9wY29k
ZSkgfHwgaXNMb2FkU3RvcmUob3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZSBzaWduRXh0ZW5k
T3Bjb2RlKFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdp
ZHRoODoKKyAgICAgICAgcmV0dXJuIFNFeHQ4OworICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAg
cmV0dXJuIFNFeHQxNjsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gT29wczsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIw
Miw4IEBAIHZvaWQgUHJvY2VkdXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGMKICAgICAgICAg
fQogICAgICAgICBkYXRhTG9nKCIgICAgIiwgZGVlcER1bXAoKnRoaXMsIHZhbHVlKSwgIlxuIik7
CiAgICAgfQorICAgIGlmIChoYXNRdWlya3MoKSkKKyAgICAgICAgb3V0LnByaW50KCJIYXMgUXVp
cmtzOiBUcnVlXG4iKTsKICAgICBpZiAodmFyaWFibGVzKCkuc2l6ZSgpKSB7CiAgICAgICAgIG91
dC5wcmludCgiVmFyaWFibGVzOlxuIik7CiAgICAgICAgIGZvciAoVmFyaWFibGUqIHZhcmlhYmxl
IDogdmFyaWFibGVzKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUu
aAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2Vk
dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgVmFs
dWUqIGFkZEludENvbnN0YW50KE9yaWdpbiwgVHlwZSwgaW50NjRfdCB2YWx1ZSk7CiAgICAgVmFs
dWUqIGFkZEludENvbnN0YW50KFZhbHVlKiwgaW50NjRfdCB2YWx1ZSk7CiAKKyAgICAvLyBZb3Un
cmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIFZhbHVlKiBhZGRCb3R0b20o
T3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogYWRkQm90dG9tKFZhbHVlKik7CiAKQEAgLTE5NSw2
ICsxOTYsMTIgQEAgcHVibGljOgogICAgIC8vIGFsaXZlLiBHcmVhdCBmb3IgY29tcGlsZXItZ2Vu
ZXJhdGVkIGRhdGEgc2VjdGlvbnMsIGxpa2Ugc3dpdGNoIGp1bXAgdGFibGVzIGFuZCBjb25zdGFu
dCBwb29scy4KICAgICAvLyBUaGlzIHJldHVybnMgbWVtb3J5IHRoYXQgaGFzIGJlZW4gemVyby1p
bml0aWFsaXplZC4KICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhZGREYXRhU2VjdGlvbihz
aXplX3QpOworICAgIAorICAgIC8vIFNvbWUgb3BlcmF0aW9ucyBhcmUgc3BlY2lmaWVkIGluIEIz
IElSIHRvIGJlaGF2ZSBvbmUgd2F5IGJ1dCBvbiB0aGlzIGdpdmVuIENQVSB0aGV5IGJlaGF2ZSBh
CisgICAgLy8gZGlmZmVyZW50IHdheS4gV2hlbiB0cnVlLCB0aG9zZSBCMyBJUiBvcHMgc3dpdGNo
IHRvIGJlaGF2aW5nIHRoZSBDUFUgd2F5LCBhbmQgdGhlIG9wdGltaXplciBtYXkKKyAgICAvLyBz
dGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIGl0LgorICAgIGJvb2wgaGFzUXVpcmtzKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNRdWlya3M7IH0KKyAgICB2b2lkIHNldEhhc1F1aXJrcyhib29sIHZhbHVl
KSB7IG1faGFzUXVpcmtzID0gdmFsdWU7IH0KIAogICAgIE9wYXF1ZUJ5cHJvZHVjdHMmIGJ5cHJv
ZHVjdHMoKSB7IHJldHVybiAqbV9ieXByb2R1Y3RzOyB9CiAKQEAgLTI1Miw2ICsyNTksNyBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoUHJpbnRTdHJlYW0mLCBPcmlnaW4p
Pj4gbV9vcmlnaW5QcmludGVyOwogICAgIGNvbnN0IHZvaWQqIG1fZnJvbnRlbmREYXRhOwogICAg
IFBDVG9PcmlnaW5NYXAgbV9wY1RvT3JpZ2luTWFwOworICAgIGJvb2wgbV9oYXNRdWlya3MgeyBm
YWxzZSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYwMiw3ICs2MDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBicmVhazsKLQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmVnOgogICAg
ICAgICAgICAgLy8gVHVybiB0aGlzOiBOZWcoY29uc3RhbnQpCiAgICAgICAgICAgICAvLyBJbnRv
IHRoaXM6IC1jb25zdGFudApAQCAtMTI5NSw2ICsxMjk1LDE2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFtX3Byb2MuaGFzUXVpcmtzKCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNFeHQ4KEF0b21pY1hjaGdfX18pCisgICAgICAgICAg
ICAgICAgLy8gSW50byB0aGlzOiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAgICAgaWYgKGlz
QXRvbWljWGNoZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAg
ICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+b3BlcmF0aW9uV2lk
dGgoKSA9PSBXaWR0aDgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJZGVudGl0
eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGNhc2UgU0V4dDE2OgpAQCAtMTM0Myw2ICsxMzUzLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCFtX3Byb2MuaGFzUXVpcmtzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBU
dXJuIHRoaXM6IFNFeHQxNihBdG9taWNYY2hnX19fKQorICAgICAgICAgICAgICAgIC8vIEludG8g
dGhpczogQXRvbWljWGNoZ19fXworICAgICAgICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92
YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVl
LT5jaGlsZCgwKS0+YXM8QXRvbWljVmFsdWU+KCktPm9wZXJhdGlvbldpZHRoKCkgPT0gV2lkdGgx
NikgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNo
aWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTRXh0MzI6
CkBAIC0yMTAxLDIyICsyMTIxLDI1IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChtX3ZhbHVl
LT5udW1DaGlsZHJlbigpID49IDIpOwogICAgICAgICAKICAgICAgICAgLy8gTGVhdmUgaXQgYWxv
bmUgaWYgdGhlIHJpZ2h0IGNoaWxkIGlzIGEgY29uc3RhbnQuCi0gICAgICAgIGlmIChtX3ZhbHVl
LT5jaGlsZCgxKS0+aXNDb25zdGFudCgpKQorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSkt
PmlzQ29uc3RhbnQoKQorICAgICAgICAgICAgfHwgbV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgp
ID09IEF0b21pY1N0cm9uZ0NBUykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAg
ICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNDb25zdGFudCgpKSB7CisgICAgICAgIGF1dG8g
c3dhcCA9IFsmXSAoKSB7CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV92YWx1ZS0+Y2hpbGQoMCks
IG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQorICAgICAgICB9OworICAgICAgICAKKyAgICAg
ICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pc0NvbnN0YW50KCkpCisgICAgICAgICAgICByZXR1
cm4gc3dhcCgpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5vcGNv
ZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOworICAg
ICAgICAKICAgICAgICAgLy8gU29ydCB0aGUgb3BlcmFuZHMuIFRoaXMgaXMgYW4gaW1wb3J0YW50
IGNhbm9uaWNhbGl6YXRpb24uIFdlIHVzZSB0aGUgaW5kZXggaW5zdGVhZCBvZgogICAgICAgICAv
LyB0aGUgYWRkcmVzcyB0byBtYWtlIHRoaXMgYXQgbGVhc3Qgc2xpZ2h0bHkgZGV0ZXJtaW5pc3Rp
Yy4KLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hp
bGQoMSktPmluZGV4KCkpIHsKLSAgICAgICAgICAgIHN0ZDo6c3dhcChtX3ZhbHVlLT5jaGlsZCgw
KSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQo
MCktPmluZGV4KCkgPiBtX3ZhbHVlLT5jaGlsZCgxKS0+aW5kZXgoKSkKKyAgICAgICAgICAgIHJl
dHVybiBzd2FwKCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBi
ZSBhIGZvcndhcmQgYW5hbHlzaXMuIEluc3RlYWQsIHdlIHVzZXMgYSBib3VuZGVkLXNlYXJjaCBi
YWNrd2FyZHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDYgKzM0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBv
aW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNj
ZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTG9h
ZDoKQEAgLTM1Myw2ICszNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkg
IT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNl
KHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU4OgpAQCAtMzYyLDYg
KzM2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQo
MCktPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9p
ZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVl
KTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU6CkBAIC0zNjksOCArMzcyLDQ5
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4o
KSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAg
ICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgIFZBTElE
QVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCkt
PnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIp
LT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFj
a0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQo
KS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkg
PT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRl
clR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21p
Yyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6Cisg
ICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2Ug
QXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09
IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJU
eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWMo
dmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0g
MSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlw
ZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoK
ICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hp
bGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYgKzU4MSwyMCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9p
ZCB2YWxpZGF0ZUZlbmNlKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVl
KiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIGlmIChtZW1vcnkt
Pmhhc0ZlbmNlKCkpCisgICAgICAgICAgICBWQUxJREFURShtZW1vcnR5LT5hY2Nlc3NCYW5rKCkg
PT0gR1AsICgiRmVuY2UgYXQgIiwgKm1lbW9yeSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHZh
bGlkYXRlQXRvbWljKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBh
dG9taWMgPSB2YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBWQUxJ
REFURShiZXN0VHlwZShhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpID09IGF0b21pYy0+b3BlcmF0
aW9uVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVT
dGFja0FjY2VzcyhWYWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDcgQEAgYm9vbCBW
YWx1ZTo6cmV0dXJuc0Jvb2woKSBjb25zdAogICAgIGNhc2UgQWJvdmVFcXVhbDoKICAgICBjYXNl
IEJlbG93RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgIGNhc2UgQXRvbWlj
V2Vha0NBUzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQaGk6CiAgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC01ODksNiArNTkwLDcgQEAg
RWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAg
IGNhc2UgRXF1YWxPclVub3JkZXJlZDoKICAgICBjYXNlIFNlbGVjdDoKKyAgICBjYXNlIERlcGVu
ZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXY6CiAgICAgY2FzZSBVRGl2OgpAQCAtNjAw
LDE2ICs2MDIsNDQgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBM
b2FkOFM6CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKLSAgICBjYXNlIExv
YWQ6Ci0gICAgICAgIHJlc3VsdC5yZWFkcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOwor
ICAgIGNhc2UgTG9hZDogeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5
VmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAg
ICAgaWYgKG1lbW9yeS0+cGhhbnRvbVJhbmdlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC53cml0
ZXMgPSBtZW1vcnktPnBoYW50b21SYW5nZSgpOworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0g
dHJ1ZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7
CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFN0b3JlODoKICAgICBjYXNlIFN0b3Jl
MTY6Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmVzdWx0LndyaXRlcyA9IGFzPE1lbW9yeVZh
bHVlPigpLT5yYW5nZSgpOworICAgIGNhc2UgU3RvcmU6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUq
IG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQud3JpdGVzID0gbWVt
b3J5LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5waGFudG9tUmFuZ2UoKSkgeworICAg
ICAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmNvbnRy
b2xEZXBlbmRlbnQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBBdG9t
aWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNo
Z0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6Cisg
ICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNl
IEF0b21pY1hjaGc6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZh
bHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCkgfCBtZW1vcnkt
PnBoYW50b21SYW5nZSgpOworICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5yYW5nZSgp
IHwgbWVtb3J0eS0+cGhhbnRvbVJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPnBoYW50b21S
YW5nZSgpKQorICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0
LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2Fz
ZSBXYXNtQWRkcmVzczoKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAg
ICAgYnJlYWs7CkBAIC02MTcsMTggKzY0Nyw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBj
b25zdAogICAgICAgICBjb25zdCBGZW5jZVZhbHVlKiBmZW5jZSA9IGFzPEZlbmNlVmFsdWU+KCk7
CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IGZlbmNlLT5yZWFkOwogICAgICAgICByZXN1bHQud3Jp
dGVzID0gZmVuY2UtPndyaXRlOwotICAgICAgICAKLSAgICAgICAgLy8gUHJldmVudCBraWxsaW5n
IG9mIGZlbmNlcyB0aGF0IGNsYWltIG5vdCB0byB3cml0ZSBhbnl0aGluZy4gSXQncyBhIGJpdCB3
ZWlyZCB0aGF0IHdlIHVzZQotICAgICAgICAvLyBsb2NhbCBzdGF0ZSBhcyB0aGUgd2F5IHRvIGRv
IHRoaXMsIGJ1dCBpdCBoYXBwZW5zIHRvIHdvcms6IHdlIG11c3QgYXNzdW1lIHRoYXQgd2UgY2Fu
bm90Ci0gICAgICAgIC8vIGtpbGwgd3JpdGVzTG9jYWxTdGF0ZSB1bmxlc3Mgd2UgdW5kZXJzdGFu
ZHMgZXhhY3RseSB3aGF0IHRoZSBpbnN0cnVjdGlvbiBpcyBkb2luZyAobGlrZQotICAgICAgICAv
LyB0aGUgd2F5IHRoYXQgZml4U1NBIHVuZGVyc3RhbmRzIFNldC9HZXQgYW5kIHRoZSB3YXkgdGhh
dCByZWR1Y2VTdHJlbmd0aCBhbmQgb3RoZXJzCi0gICAgICAgIC8vIHVuZGVyc3RhbmQgVXBzaWxv
bikuIFRoaXMgd291bGQgb25seSBiZWNvbWUgYSBwcm9ibGVtIGlmIHdlIGhhZCBzb21lIGFuYWx5
c2lzIHRoYXQgd2FzCi0gICAgICAgIC8vIGxvb2tpbmcgdG8gdXNlIHRoZSB3cml0ZXNMb2NhbFN0
YXRlIGJpdCB0byBpbnZhbGlkYXRlIGEgQ1NFIG92ZXIgbG9jYWwgc3RhdGUgb3BlcmF0aW9ucy4K
LSAgICAgICAgLy8gVGhlbiBhIEZlbmNlIHdvdWxkIGxvb2sgYmxvY2ssIHNheSwgdGhlIGVsaW1p
bmF0aW9uIG9mIGEgcmVkdW5kYW50IEdldC4gQnV0IGl0IGxpa2UKLSAgICAgICAgLy8gdGhhdCdz
IG5vdCBhdCBhbGwgaG93IG91ciBvcHRpbWl6YXRpb25zIGZvciBTZXQvR2V0L1Vwc2lsb24vUGhp
IHdvcmsgLSB0aGV5IGdyb2sgdGhlaXIKLSAgICAgICAgLy8gb3BlcmF0aW9ucyBkZWVwbHkgZW5v
dWdoIHRoYXQgdGhleSBoYXZlIG5vIG5lZWQgdG8gY2hlY2sgdGhpcyBiaXQgLSBzbyB0aGlzIGNo
ZWF0IGlzCi0gICAgICAgIC8vIGZpbmUuCi0gICAgICAgIHJlc3VsdC53cml0ZXNMb2NhbFN0YXRl
ID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgQ0NhbGw6CkBAIC02OTQsNiArNzEzLDcgQEAgVmFsdWVLZXkgVmFsdWU6
OmtleSgpIGNvbnN0CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAg
IGNhc2UgTmVnOgorICAgIGNhc2UgRGVwZW5kOgogICAgICAgICByZXR1cm4gVmFsdWVLZXkoa2lu
ZCgpLCB0eXBlKCksIGNoaWxkKDApKTsKICAgICBjYXNlIEFkZDoKICAgICBjYXNlIFN1YjoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiAr
NjgsMTAgQEAgcHVibGljOgogICAgIAogICAgIE9wY29kZSBvcGNvZGUoKSBjb25zdCB7IHJldHVy
biBraW5kKCkub3Bjb2RlKCk7IH0KICAgICAKKyAgICAvLyBOb3RlIHRoYXQgdGhlIGtpbmQgaXMg
bWVhbnQgdG8gYmUgaW1tdXRhYmxlLiBEbyB0aGlzIHdoZW4geW91IGtub3cgdGhhdCB0aGlzIGlz
IHNhZmUuIEl0J3Mgbm90CisgICAgLy8gdXN1YWxseSBzYWZlLgorICAgIHZvaWQgc2V0S2luZFVu
c2FmZWx5KEtpbmQga2luZCkgeyBtX2tpbmQgPSBraW5kOyB9CisgICAgCiAgICAgLy8gSXQncyBn
b29kIHByYWN0aWNlIHRvIG1pcnJvciBLaW5kIG1ldGhvZHMgaGVyZSwgc28geW91IGNhbiBzYXkg
dmFsdWUtPmlzQmxhaCgpCiAgICAgLy8gaW5zdGVhZCBvZiB2YWx1ZS0+a2luZCgpLmlzQmxhaCgp
LgogICAgIGJvb2wgaXNDaGlsbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKS5pc0NoaWxsKCk7IH0K
QEAgLTEwNyw2ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgLy8gdmFsdWVzIHdpdGggSWRlbnRpdGll
cyBvbiBib3R0b20gY29uc3RhbnRzLiBGb3IgdGhpcyByZWFzb24sIHRoaXMgdGFrZXMgYSBjYWxs
YmFjayB0aGF0IGlzCiAgICAgLy8gcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGJvdHRvbXMuIFRo
ZXJlJ3MgYSB1dGlsaXR5IGZvciB0aGlzLCBzZWUgQjNCb3R0b21Qcm92aWRlci5oLiBZb3UKICAg
ICAvLyBjYW4gYWxzbyBhY2Nlc3MgdGhhdCB1dGlsaXR5IHVzaW5nIHJlcGxhY2VXaXRoQm90dG9t
KEluc2VydGlvblNldCYsIHNpemVfdCkuCisgICAgLy8KKyAgICAvLyBZb3UncmUgZ3VhcmFudGVl
ZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJvdHRvbVByb3Zp
ZGVyPgogICAgIHZvaWQgcmVwbGFjZVdpdGhCb3R0b20oY29uc3QgQm90dG9tUHJvdmlkZXImKTsK
ICAgICAKQEAgLTMyMSw2ICszMjcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElUb0Y6CiAg
ICAgICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBj
YXNlIERlcGVuZDoKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9IDEpKQogICAg
ICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJncyk7CiAgICAgICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAJKHJldmlzaW9uIDIxMjk5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsMzggQEAKIAogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdp
ZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAg
ICBjYXNlIFdpZHRoMTY6CisgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICBzd2l0Y2ggKGJhbmsp
IHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJldHVybiBJbnQzMjsKKyAgICAgICAg
Y2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBGbG9hdDsKKyAgICAgICAgfQorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICBj
YXNlIFdpZHRoNjQ6CisgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNlIEdQOgor
ICAgICAgICAgICAgcmV0dXJuIEludDY0OworICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAg
cmV0dXJuIERvdWJsZTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVm9pZDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCisKIG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgSlNDOjpCMzo6V2lkdGggd2lkdGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNXaWR0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1dpZHRoLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1dpZHRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDE4IEBAIGlubGluZSBXaWR0aCB3
aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitp
bmxpbmUgV2lkdGggY2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgpCit7CisgICAgcmV0dXJuIHN0
ZDo6bWF4KFdpZHRoMzIsIHdpZHRoKTsKK30KKworaW5saW5lIFdpZHRoIGlzQ2Fub25pY2FsV2lk
dGgoV2lkdGggd2lkdGgpCit7CisgICAgcmV0dXJuIHdpZHRoID49IFdpZHRoMzI7Cit9CisKK1R5
cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIGlubGluZSBXaWR0aCBjb25z
ZXJ2YXRpdmVXaWR0aChCYW5rIGJhbmspCiB7CiAgICAgcmV0dXJuIGJhbmsgPT0gR1AgPyBwb2lu
dGVyV2lkdGgoKSA6IFdpZHRoNjQ7CkBAIC05Myw2ICsxMDUsMjAgQEAgaW5saW5lIFdpZHRoIHdp
ZHRoRm9yQnl0ZXModW5zaWduZWQgYnl0ZQogICAgIH0KIH0KIAoraW5saW5lIHVpbnQ2NF90IG1h
c2soV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4
OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDAwMGZmbGx1OworICAgIGNhc2UgV2lkdGgx
NjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAwZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRo
MzI6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwZmZmZmZmZmZsbHU7CisgICAgY2FzZSBXaWR0
aDY0OgorICAgICAgICByZXR1cm4gMHhmZmZmZmZmZmZmZmZmZmZmbGx1OworICAgIH0KK30KKwog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsNiArMTAyLDcgQEAgdW5zaWduZWQgQXJnOjpqc0hhc2goKSBjb25zdAogICAgIGNhc2UgUmVs
Q29uZDoKICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgY2FzZSBEb3VibGVDb25kOgorICAgIGNhc2Ug
U3RhdHVzQ29uZDoKICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICByZXN1bHQgKz0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODIsNiArMTgz
LDkgQEAgdm9pZCBBcmc6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNlIERv
dWJsZUNvbmQ6CiAgICAgICAgIG91dC5wcmludChhc0RvdWJsZUNvbmRpdGlvbigpKTsKICAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgU3RhdHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KGFzU3Rh
dHVzQ29uZGl0aW9uKCkpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTcGVjaWFsOgogICAg
ICAgICBvdXQucHJpbnQocG9pbnRlckR1bXAoc3BlY2lhbCgpKSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTI0MSw2ICsyNDUsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
QXJnCiAgICAgY2FzZSBBcmc6OkRvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5wcmludCgiRG91Ymxl
Q29uZCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlN0YXR1c0NvbmQ6CisgICAg
ICAgIG91dC5wcmludCgiU3RhdHVzQ29uZCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBB
cmc6OlNwZWNpYWw6CiAgICAgICAgIG91dC5wcmludCgiU3BlY2lhbCIpOwogICAgICAgICByZXR1
cm47CkBAIC0yODUsNiArMjkyLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEFyZwogICAgIGNhc2UgQXJnOjpFYXJseURlZjoKICAgICAgICAgb3V0LnByaW50KCJFYXJs
eURlZiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKKyAgICAg
ICAgb3V0LnByaW50KCJFYXJseVpEZWYiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJn
OjpTY3JhdGNoOgogICAgICAgICBvdXQucHJpbnQoIlNjcmF0Y2giKTsKICAgICAgICAgcmV0dXJu
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCShyZXZpc2lvbiAyMTI5
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVsQ29uZCwKICAgICAgICAg
UmVzQ29uZCwKICAgICAgICAgRG91YmxlQ29uZCwKKyAgICAgICAgU3RhdHVzQ29uZCwKICAgICAg
ICAgU3BlY2lhbCwKICAgICAgICAgV2lkdGhBcmcKICAgICB9OwpAQCAtMTUxLDYgKzE1Miw4IEBA
IHB1YmxpYzoKICAgICAgICAgLy8gYXMgVXNlIGhhcyB1bmRlZmluZWQgYmVoYXZpb3I6IHRoZSB1
c2UgbWF5IGhhcHBlbiBiZWZvcmUgdGhlIGRlZiwgb3IgaXQgbWF5IGhhcHBlbiBhZnRlcgogICAg
ICAgICAvLyBpdC4KICAgICAgICAgRWFybHlEZWYsCisgICAgICAgICAgICAKKyAgICAgICAgRWFy
bHlaRGVmLAogCiAgICAgICAgIC8vIFNvbWUgaW5zdHJ1Y3Rpb25zIG5lZWQgYSBzY3JhdGNoIHJl
Z2lzdGVyLiBXZSBtb2RlbCB0aGlzIGJ5IHNheWluZyB0aGF0IHRoZSB0ZW1wb3JhcnkgaXMKICAg
ICAgICAgLy8gZGVmaW5lZCBlYXJseSBhbmQgdXNlZCBsYXRlLiBUaGlzIHJvbGUgaW1wbGllcyB0
aGF0LgpAQCAtMTg2LDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAg
ICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2Ug
RWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjA2LDYgKzIxMCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFy
bHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI4LDYgKzIz
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0
Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAg
ICAgICAgICAgcmV0dXJuIHJvbGU7CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICAgICAgcmV0
dXJuIENvbGRVc2U7CkBAIC0yNTMsNiArMjU5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIExh
dGVDb2xkVXNlOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6
CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjc0LDYgKzI4MSw3IEBA
IHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAg
ICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMjk0LDYgKzMwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBj
YXNlIFVzZVpEZWY6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHla
RGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQpAQCAtMzE1LDYgKzMyNCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29s
ZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBFYXJseURlZjoK
KyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMzAsNiArMzQwLDcgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAgY2Fz
ZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRj
aDoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTM1OCw2ICszNjksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgorICAgICAgICBjYXNlIEVh
cmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTMzLDYgKzU0NSwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIEFyZyBzdGF0dXNDb25kKE1hY3Jv
QXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQorICAgIHsKKyAgICAgICAgQXJn
IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFN0YXR1c0NvbmQ7CisgICAgICAgIHJl
c3VsdC5tX29mZnNldCA9IGNvbmRpdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKICAgICBzdGF0aWMgQXJnIHNwZWNpYWwoQWlyOjpTcGVjaWFsKiBzcGVjaWFsKQogICAgIHsK
ICAgICAgICAgQXJnIHJlc3VsdDsKQEAgLTY1OCwxMiArNjc4LDE4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGtpbmQoKSA9PSBEb3VibGVDb25kOwogICAgIH0KIAorICAgIGJvb2wgaXNTdGF0
dXNDb25kKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0gU3RhdHVzQ29u
ZDsKKyAgICB9CisKICAgICBib29sIGlzQ29uZGl0aW9uKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBS
ZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29u
ZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtODUxLDYgKzg3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgY2Fz
ZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29u
ZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAg
ICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg3Miw2ICs4
OTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXND
b25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoK
ICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICBj
YXNlIEludmFsaWQ6CkBAIC0xMDU4LDYgKzEwODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
UmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6
CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAg
ICBjYXNlIFdpZHRoQXJnOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTc3LDYgKzEy
MDYsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJs
ZXI6OkRvdWJsZUNvbmRpdGlvbj4obV9vZmZzZXQpOwogICAgIH0KICAgICAKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uIGFzU3RhdHVzQ29uZGl0aW9uKCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVChpc1N0YXR1c0NvbmQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uPihtX29mZnNldCk7CisgICAgfQor
ICAgIAogICAgIC8vIFRlbGxzIHlvdSBpZiB0aGUgQXJnIGlzIGludmVydGlibGUuIE9ubHkgY29u
ZGl0aW9uIGFyZ3VtZW50cyBhcmUgaW52ZXJ0aWJsZSwgYW5kIGV2ZW4gZm9yIHRob3NlLCB0aGVy
ZQogICAgIC8vIGFyZSBhIGZldyBleGNlcHRpb25zIC0gbm90YWJseSBPdmVyZmxvdyBhbmQgU2ln
bmVkLgogICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3QKQEAgLTExODQsNiArMTIxOSw3IEBA
IHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxDb25k
OgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OmlzSW52ZXJ0aWJsZShhc1Jlc3VsdENvbmRpdGlvbigp
KTsKQEAgLTEyMDQsNiArMTI0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiByZXND
b25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNSZXN1bHRDb25kaXRpb24oKSkpOwogICAgICAg
ICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAgICAgICByZXR1cm4gZG91YmxlQ29uZChNYWNyb0Fz
c2VtYmxlcjo6aW52ZXJ0KGFzRG91YmxlQ29uZGl0aW9uKCkpKTsKKyAgICAgICAgY2FzZSBTdGF0
dXNDb25kOgorICAgICAgICAgICAgcmV0dXJuIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6Omlu
dmVydChhc1N0YXR1c0NvbmRpdGlvbigpKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIEFyZygp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2su
Y3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckJhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlCiAKIGNvbnN0IGNoYXIqIGNvbnN0IEJh
c2ljQmxvY2s6OmR1bXBQcmVmaXggPSAiIyI7CiAKK3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vz
c29ycyhCYXNpY0Jsb2NrKiBibG9jaykKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVzaXplKDEpOwor
ICAgIG1fc3VjY2Vzc29yc1swXSA9IHRhcmdldDsKK30KKwordm9pZCBCYXNpY0Jsb2NrOjpzZXRT
dWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YWtlbiwgRnJlcXVlbnRlZEJsb2NrIG5vdFRha2Vu
KQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMik7CisgICAgbV9zdWNjZXNzb3JzWzBdID0g
dGFrZW47CisgICAgbV9zdWNjZXNzb3JzWzFdID0gbm90VGFrZW47Cit9CisKIGJvb2wgQmFzaWNC
bG9jazo6YWRkUHJlZGVjZXNzb3IoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgcmV0dXJuIEIz
OjphZGRQcmVkZWNlc3Nvcih0aGlzLCBibG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTk5LDYgKzk5LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3Nv
cnMoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KICAgICBTdWNjZXNzb3JMaXN0JiBz
dWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAKKyAgICB2b2lkIHNldFN1Y2Nl
c3NvcnMoRnJlcXVlbnRlZEJsb2NrKTsKKyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRl
ZEJsb2NrLCBGcmVxdWVudGVkQmxvY2spOworCiAgICAgQmFzaWNCbG9jayogc3VjY2Vzc29yQmxv
Y2sodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2so
KTsgfQogICAgIEJhc2ljQmxvY2sqJiBzdWNjZXNzb3JCbG9jayh1bnNpZ25lZCBpbmRleCkgeyBy
ZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAgU3VjY2Vzc29yQ29sbGVjdGlv
bjxCYXNpY0Jsb2NrLCBTdWNjZXNzb3JMaXN0PiBzdWNjZXNzb3JCbG9ja3MoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNl
dC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJC
bG9ja0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRpb25TZXQuaCIKKworI2lmIEVOQUJMRShC
M19KSVQpCisKKyNpbmNsdWRlICJBaXJCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQWlyQ29kZS5o
IgorI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0
aW9uU2V0KENvZGUgJmNvZGUpCisgICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoY29kZS5t
X2Jsb2NrcykKK3sKK30KKworQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgp
Cit7Cit9CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxv
Y2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNH
ZW5lcmljQmxvY2tJc25lcnRpb25TZXQuaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVk
ZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCitjbGFzcyBJbnNlcnRpb25T
ZXQ7CisKK3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+OjpCbG9j
a0luc2VydGlvbiBCbG9ja0luc2VydGlvbjsKKworY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgOiBw
dWJsaWMgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+IHsKK3B1YmxpYzoKKyAg
ICBCbG9ja0luc2VydGlvblNldChDb2RlJik7CisgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7Cisg
ICAgCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBldmVudHVhbGx5IGltcGxlbWVudCBCMzo6Qmxv
Y2tJbnNlcnRpb25TZXQncyBzcGxpdEZvcndhcmQoKS4KK307CisKK30gfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczLDYgKzczLDggQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2Rl
JiBjb2RlKQogICAgICAgICBkYXRhTG9nKCJJbml0aWFsIGFpcjpcbiIpOwogICAgICAgICBkYXRh
TG9nKGNvZGUpOwogICAgIH0KKyAgICAKKyAgICBzaW1wbGlmeUNGRyhjb2RlKTsKIAogICAgIGxv
d2VyTWFjcm9zKGNvZGUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wY29kZS5vcGNvZGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyT3Bjb2RlLm9wY29kZXMJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NjgsMjggKzY2OCwz
ODAgQEAgTG9hZDggVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1w
CiAKK0xvYWRBY3E4IFU6Rzo4LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRt
cAorCiBTdG9yZTggVTpHOjgsIEQ6Rzo4CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgog
ICAgIHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBBZGRyCiAKK1N0b3JlUmVsOCBVOkc6
OCwgRDpHOjgKKyAgICBUbXAsIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIElu
ZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKwogTG9hZDhTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBa
RDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOFNpZ25lZEV4
dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisK
IExvYWQxNiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAK
K0xvYWRBY3ExNiBVOkc6MTYsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1w
CisKIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1w
CiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6
RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogU3RvcmUxNiBVOkc6MTYsIEQ6
RzoxNgogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKIAorU3RvcmVBY3ExNiBVOkc6MTYs
IEQ6RzoxNgorICAgIFRtcCwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKworTG9hZEFjcTMyIFU6Rzoz
MiBaRDpHOjMyCisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisK
K1N0b3JlUmVsMzIgVTpHOjMyIFpEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKworNjQ6IExvYWRBY3E2
NCBVOkc6NjQgWkQ6Rzo2NAorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgs
IFRtcAorCis2NDogU3RvcmVSZWw2NCBVOkc6NjQgWkQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorCisj
IFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4KK3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIs
IFVEOkc6OCwgVTpHOjgsIFVEOkc6OCwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1w
LCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2
OiBBdG9taWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiwgWkQ6
Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIs
IFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwg
VG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKwor
eDg2XzY0OiBBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2
NCwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0
dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVM4IFVE
Okc6OCwgVTpHOjgsIFVEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYK
KyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
U3Ryb25nQ0FTMzIgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyCisgICAgVG1wKiwgVG1wLCBBZGRy
CisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1N0cm9uZ0NBUzY0IFVEOkc6
NjQsIFU6Rzo2NCwgVUQ6Rzo2NAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwg
SW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6
OCwgVUQ6Rzo4IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FT
MTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYgL2JyYW5jaAorICAgIFN0YXR1c0Nv
bmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKwor
eDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6
RzozMiAvYnJhbmNoCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVz
Q29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0
IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2gKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljQWRkOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRl
eAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQxNiBVOkc6
MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDMyIFU6RzozMiwgVUQ6RzozMgorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4Nl82NDogQXRvbWljQWRkNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNTdWI4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjE2IFU6RzoxNiwgVUQ6
RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
XzY0OiBBdG9taWNTdWI2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDgg
VTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMTYgVTpHOjE2LCBVRDpHOjE2Cisg
ICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2OiBBdG9taWNBbmQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0
b21pY0FuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3I4IFU6Rzo4LCBV
RDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNPcjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljT3I2NCBV
Okc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjggVTpHOjgsIFVEOkc6OAorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogQXRvbWljWG9yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNY
b3IzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hvcjY0IFU6Rzo2NCwg
VUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljTmVnOCBVRDpHOjgKKyAgICBBZGRyCisgICAgSW5k
ZXgKKworeDg2OiBBdG9taWNOZWcxNiBVRDpHOjE2CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4
NjogQXRvbWljTmVnMzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0
b21pY05lZzY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3Q4
IFVEOkc6OAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDE2IFVEOkc6MTYK
KyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QzMiBVRDpHOjMyCisgICAgQWRk
cgorICAgIEluZGV4CisKK3g4Nl82NDogQXRvbWljTm90NjQgVUQ6Rzo2NAorICAgIEFkZHIKKyAg
ICBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQ4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQxNiBVRDpHOjE2LCBVRDpH
OjE2CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQz
MiBVRDpHOjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZf
NjQ6IEF0b21pY1hjaGdBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGc4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGcxNiBVRDpHOjE2LCBVRDpHOjE2
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGczMiBVRDpH
OjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0
b21pY1hjaGc2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCithcm02NDogTG9hZExpbms4IFU6Rzo4LCBaRDpHOjgKKyAgICBBZGRyLCBUbXAKKyAgICBJ
bmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTggVTpHOjgsIFpEOkc6OAorICAgIEFkZHIs
IFRtcAorICAgIEluZGV4LCBUbXAKKworIyBTdXBlciBjb25mdXNpbmcgZmFjdDogdGhpcyByZXR1
cm5zIDAgdG8gbWVhbiBzdWNjZXNzLCAxIHRvIG1lYW4gZmFpbHVyZS4KK2FybTY0OiBTdG9yZUNv
bmQ4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJ
bmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OAor
ICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlu
azE2IFU6RzoxNiwgWkQ6RzoxNgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJt
NjQ6IExvYWRMaW5rQWNxMTYgVTpHOjE2LCBaRDpHOjE2CisgICAgQWRkciwgVG1wCisgICAgSW5k
ZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAg
ICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25k
UmVsMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRt
cCwgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmszMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBB
ZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTMyIFU6RzozMiwg
WkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29u
ZDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAs
IEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6
Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExv
YWRMaW5rNjQgVTpHOjY0LCBaRDpHOjY0CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAor
Cithcm02NDogTG9hZExpbmtBY3E2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAKKyAg
ICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQ2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6
OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9y
ZUNvbmRSZWw2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisg
ICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBEZXBlbmQzMiBVOkc6MzIsIEQ6RzozMgorICAg
IFRtcCwgVG1wCisKK2FybTY0OiBEZXBlbmQ2NCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1w
CisKIENvbXBhcmUzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29u
ZCwgVG1wLCBUbXAsIFRtcAogICAgIFJlbENvbmQsIFRtcCwgSW1tLCBUbXAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRl
ci5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3Nyw2ICsxNzcs
MTAgQEAgdm9pZCBvcHRpbWl6ZUJsb2NrT3JkZXIoQ29kZSYgY29kZSkKICAgICAgICAgY2FzZSBC
cmFuY2hTdWI2NDoKICAgICAgICAgY2FzZSBCcmFuY2hOZWczMjoKICAgICAgICAgY2FzZSBCcmFu
Y2hOZWc2NDoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVM4OgorICAgICAgICBj
YXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2OgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0
cm9uZ0NBUzMyOgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0OgogICAgICAg
ICAgICAgaWYgKGNvZGUuZmluZE5leHRCbG9jayhibG9jaykgPT0gYmxvY2stPnN1Y2Nlc3NvckJs
b2NrKDApICYmIGJyYW5jaC5hcmdzWzBdLmlzSW52ZXJ0aWJsZSgpKSB7CiAgICAgICAgICAgICAg
ICAgc3RkOjpzd2FwKGJsb2NrLT5zdWNjZXNzb3IoMCksIGJsb2NrLT5zdWNjZXNzb3IoMSkpOwog
ICAgICAgICAgICAgICAgIGJyYW5jaC5hcmdzWzBdID0gYnJhbmNoLmFyZ3NbMF0uaW52ZXJ0ZWQo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZElu
dGVyZmVyZW5jZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCB2b2lkIHBhZEludGVyZmVyZW5jZShDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAg
IFsmXSAoQXJnJiwgQXJnOjpSb2xlIHJvbGUsIEJhbmssIFdpZHRoKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAocm9sZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFy
bHlEZWY6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBoYXNFYXJseURlZiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVVc2U6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhp
bmcuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsNyBA
QCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6TGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpTY3Jh
dGNoOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlEZWY6CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CiAgICAgICAgICAgICAgICAgICAgICAgICBm
b3IgKFJlZyByZWcgOiBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoYmFuaykpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIXNldEJlZm9yZS5nZXQocmVnKSAmJiAhc2V0QWZ0ZXIu
Z2V0KHJlZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWZ0ZXIuc2V0
KHJlZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0
b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVf
Z2VuZXJhdG9yLnJiCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIs
NyBAQCBkZWYgbGV4KHN0ciwgZmlsZU5hbWUpCiBlbmQKIAogZGVmIGlzUm9sZSh0b2tlbikKLSAg
ICB0b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUykpXFovCisgICAg
dG9rZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoWkQpfChVWkQpfChVQSl8KFMpfChFRCl8KEVaRCl8
KExVKSlcWi8KIGVuZAogCiBkZWYgaXNHRih0b2tlbikKQEAgLTE5MCw3ICsxOTAsNyBAQCBkZWYg
aXNHRih0b2tlbikKIGVuZAogCiBkZWYgaXNLaW5kKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgo
VG1wKXwoSW1tKXwoQmlnSW1tKXwoQml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChS
ZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpKVxaLworICAgIHRva2VuID1+IC9cQSgoVG1w
KXwoSW1tKXwoQmlnSW1tKXwoQml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxD
b25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpfChTdGF0dXNDb25kKSlcWi8KIGVuZAogCiBkZWYg
aXNBcmNoKHRva2VuKQpAQCAtMjY0LDcgKzI2NCw3IEBAIGNsYXNzIFBhcnNlcgogCiAgICAgZGVm
IGNvbnN1bWVLaW5kCiAgICAgICAgIHJlc3VsdCA9IHRva2VuLnN0cmluZwotICAgICAgICBwYXJz
ZUVycm9yKCJFeHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02NCwgVG1w
LCBBZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgb3IgRG91YmxlQ29uZCkiKSB1bmxlc3Mg
aXNLaW5kKHJlc3VsdCkKKyAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQga2luZCAoSW1tLCBC
aWdJbW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgQWRkciwgSW5kZXgsIFJlbENvbmQsIFJlc0Nv
bmQsIERvdWJsZUNvbmQsIG9yIFN0YXR1c0NvbmQpIikgdW5sZXNzIGlzS2luZChyZXN1bHQpCiAg
ICAgICAgIGFkdmFuY2UKICAgICAgICAgcmVzdWx0CiAgICAgZW5kCkBAIC02NTEsNiArNjUxLDEy
IEBAIHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7CiAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAi
VXNlQWRkciIKICAgICAgICAgICAgICAgICB3aGVuICJTIgogICAgICAgICAgICAgICAgICAgICBy
b2xlID0gIlNjcmF0Y2giCisgICAgICAgICAgICAgICAgd2hlbiAiRUQiCisgICAgICAgICAgICAg
ICAgICAgIHJvbGUgPSAiRWFybHlEZWYiCisgICAgICAgICAgICAgICAgd2hlbiAiRVpEIgorICAg
ICAgICAgICAgICAgICAgICByb2xlID0gIkVhcmx5WkRlZiIKKyAgICAgICAgICAgICAgICB3aGVu
ICJMVSIKKyAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJMYXRlVXNlIgogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICBlbmQK
QEAgLTgxOSw2ICs4MjUsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAg
ICAgICAgICB3aGVuICJSZWxDb25kIgogICAgICAgICAgICAgICAgIHdoZW4gIlJlc0NvbmQiCiAg
ICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29uZCIKKyAgICAgICAgICAgICAgICB3aGVuICJT
dGF0dXNDb25kIgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmFp
c2UgIlVuZXhwZWN0ZWQga2luZDogI3traW5kLm5hbWV9IgogICAgICAgICAgICAgICAgIGVuZApA
QCAtMTEwNSw2ICsxMTEyLDggQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzUmVzdWx0Q29uZGl0aW9u
KCkiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29uZCIKICAgICAgICAgICAgICAgICAg
ICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNEb3VibGVDb25kaXRpb24oKSIKKyAgICAg
ICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgorICAgICAgICAgICAgICAgICAgICBvdXRwLnBy
aW50ICJhcmdzWyN7aW5kZXh9XS5hc1N0YXR1c0NvbmRpdGlvbigpIgogICAgICAgICAgICAgICAg
IGVuZAogICAgICAgICAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302922</attachid>
            <date>2017-02-27 21:46:41 -0800</date>
            <delta_ts>2017-02-28 09:35:07 -0800</delta_ts>
            <desc>more x86 atomic instruction formatting</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>147968</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMiBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNCRTFFNjQ5REM0MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRDFFNjQ5REMyMDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAq
LzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhp
c1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAg
LTI3NjQsNiArMjc3MCwxMiBAQAogCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5r
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQmFuay5oOyBwYXRoID0gYjMv
QjNCYW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM2M0FEMUU2MEFFM0Mw
MEMxMzgzOSAvKiBCM1dpZHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEIzV2lkdGguY3BwOyBwYXRoID0gYjMvQjNXaWR0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2lkdGguaDsgcGF0aCA9IGIzL0IzV2lkdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjMxRTYzNDNFODAwQzEzODM5
IC8qIEIzQXRvbWljVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQjNBdG9taWNWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0F0b21pY1ZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNBdG9taWNWYWx1
ZS5oOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25T
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQuaDsgcGF0aCA9IGIzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJC
bG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBBaXJCbG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRp
b25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCQTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGIzL2Fpci9BaXJCbG9j
a0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCRDFF
NjQ5REMyMDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQzNDAwN0Q0QjE5IC8qIERl
YnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVi
dWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERDMTk4
MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTI5Miw2ICs1MzA0LDggQEAKIAkJCQkwRkVDODRCMzFCREFDRDg4MDA4MEZGNzQgLyog
YWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFs
dWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVn
VmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1
ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUu
aCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJ
CQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi8sCiAJCQkJMEZFQzg0QjYx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5jcHAgKi8sCkBAIC01MzU0LDYgKzUzNjgs
NyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5o
ICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywK
IAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oICovLAorCQkJCTBG
MkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oICov
LAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxv
Y2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3Bw
ICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5nZS5oICovLApA
QCAtNTQ2OSw2ICs1NDg0LDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWly
QXJnSW5saW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNp
Y0Jsb2NrLmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFzaWNC
bG9jay5oICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2Vy
dGlvblNldC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2Nr
SW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJs
b2NrV29ya2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC03MzI2LDYgKzczNDMsNyBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2OTg3
QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRDFFNjQ5REMyMDBDMTM4MzkgLyog
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAwRjg0
NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENENzBD
MDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJODY0
MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCkBAIC03MzU0LDgg
KzczNzIsOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxl
ck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJs
ZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9B
c3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIxIC8q
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0MxMDBG
ODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4NUE4
RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKQEAgLTc5
NTYsNiArNzk3NCw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3RDcxRDlEQzQ0MjAwMUI5ODI1IC8q
IEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0JDMUU2MzQ0MEMwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0MzgxQzAw
MTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUzNEMx
QTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxv
Yy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDQ3LDYgKzgwNjYsNyBAQAogCQkJCTQzNDIyQTYzMUMx
NThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQdHJWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNGNzAwQzEzODM5IC8qIEIzR2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOEUwRTFCRjAyNzZD
MDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRkMx
QzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRlVGFpbHMuaCBpbiBIZWFkZXJzICov
LApAQCAtODM2Niw2ICs4Mzg2LDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4NDQ3MjggLyog
REZHT1NSRXhpdEZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEzQjYwMDU2
N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50
b21JbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMxNEVGOTBBRjAw
QzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFQjE5RDBCQTdE
MDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAtOTc5Miw2ICs5
ODEzLDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
IAkJCQkwRkZBNTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9wY29kZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjJDNjNCRTFFNjQ5REM0MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDQ5MzdDMzFEREJFNjE0MDA3N0M4MDcgLyog
QWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUYwRjQxNEQx
MDYzOTAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM3MEI0
RjUxQkYyNjIwMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI0OCw2ICsxMDI3MCw3IEBACiAJCQkJ
OUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTEx
ODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQwRTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3Rl
ZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMjY2LDYgKzEwMjg5LDcgQEAK
IAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAv
KiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRC
NjExODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBBMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25T
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIElu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NG
ODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIKKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisKKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIHN3aXRj
aCAoY29uZGl0aW9uKSB7CisgICAgY2FzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNz
OgorICAgICAgICBvdXQucHJpbnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6RmFpbHVyZToKKyAgICAgICAgb3V0LnByaW50KCJG
YWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODksNiArODksMjMgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gVGltZXNFaWdodDsKICAgICB9CiAgICAgCisgICAgZW51bSBTdGF0dXNDb25k
aXRpb24geworICAgICAgICBTdWNjZXNzLAorICAgICAgICBGYWlsdXJlCisgICAgfTsKKyAgICAK
KyAgICBzdGF0aWMgU3RhdHVzQ29uZGl0aW9uIGludmVydChTdGF0dXNDb25kaXRpb24gY29uZGl0
aW9uKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICAgICAgY2FzZSBT
dWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIEZhaWx1cmU7CisgICAgICAgIGNhc2UgRmFpbHVy
ZToKKyAgICAgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgIH0K
KyAgICAKICAgICBzdHJ1Y3QgQmFzZUluZGV4OwogICAgIAogICAgIC8vIEFkZHJlc3M6CkBAIC0x
MTA4LDMgKzExMjUsMTYgQEAgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlLCBN
YQogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQworCisj
aWYgRU5BQkxFKEFTU0VNQkxFUikKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3Ry
ZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisj
ZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQzLDYgKzI3NDMsOTYgQEAg
cHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm9ybF9pbSgwLCAwLCBYODZSZWdpc3RlcnM6OmVzcCk7CiAgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0g
eyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBb
Jl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKwor
ICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29u
ZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xf
cm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzgoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5k
UmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25n
Q0FTOChSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3Rl
ZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9
KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBt
X2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZv
aWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAg
IHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9t
aWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGds
X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJv
bmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBy
ZXR1cm4gYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0p
OworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdD
QVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBy
ZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0g
eyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBi
cmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
IH0pOworICAgIH0KIAogICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVu
dHMgbW90aW9uIG9mIG5vcm1hbCBzdG9yZXMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgogICAg
IHZvaWQgc3RvcmVGZW5jZSgpCkBAIC0yODMxLDYgKzI5MjEsMTggQEAgcHJvdGVjdGVkOgogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8WDg2QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOwog
ICAgIH0KIAorICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihTdGF0dXND
b25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBj
YXNlIFN1Y2Nlc3M6CisgICAgICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25F
OworICAgICAgICBjYXNlIEZhaWx1cmU6CisgICAgICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVy
OjpDb25kaXRpb25ORTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25FOworICAgIH0K
KwogICAgIHZvaWQgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICNpZiBDUFUoWDg2KQpAQCAtMjkyNSw2ICszMDI3LDM1IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoc2l6ZU9mUmVnaXN0ZXIpLCBkc3QpOwog
ICAgICAgICBzcmNJc05vblplcm8ubGluayh0aGlzKTsKICAgICB9CisgICAgCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCByZXN1bHQs
IGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0
LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgZnVuYygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6
OmVheCk7CisgICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgcmVzdWx0KTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgewor
ICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVuYygpOworICAgICAgICBzd2FwKGV4
cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3QgRnVuYyYg
ZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVy
czo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7Cisg
ICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAg
ICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAg
IH0KIAogcHJpdmF0ZToKICAgICAvLyBPbmx5IE1hY3JvQXNzZW1ibGVyWDg2IHNob3VsZCBiZSB1
c2luZyB0aGUgZm9sbG93aW5nIG1ldGhvZDsgU1NFMiBpcyBhbHdheXMgYXZhaWxhYmxlIG9uCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
OTQsNiArMTI5NCwzNiBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
Ojptb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsK
ICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25k
LCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwgbWFzazgpOwogICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljc1N0cm9uZ0NBUyhjb25kLCBl
eHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAg
IHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNz
LCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY3NTdHJvbmdDQVMoY29u
ZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ff
cm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0
KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY3NTdHJvbmdDQVMoZXhwZWN0ZWRBbmRS
ZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdD
QVM2NChSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY3NTdHJvbmdDQVMoZXhwZWN0
ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsg
fSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21p
Y3NTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNt
cHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7Cisg
ICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljc1N0
cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CiAKICAgICB2b2lkIHRydW5jYXRlRG91Ymxl
VG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIE9QX1NFVENDICAgICAgICAgICAgPSAweDkwLAogICAgICAgICBPUDJfM0JZVEVfRVNDQVBF
X0FFID0gMHhBRSwKICAgICAgICAgT1AyX0lNVUxfR3ZFdiAgICAgICA9IDB4QUYsCisgICAgICAg
IE9QMl9DTVBYQ0hHYiAgICAgICAgPSAweEIwLAorICAgICAgICBPUDJfQ01QWENIRyAgICAgICAg
ID0gMHhCMSwKICAgICAgICAgT1AyX01PVlpYX0d2RWIgICAgICA9IDB4QjYsCiAgICAgICAgIE9Q
Ml9CU0YgICAgICAgICAgICAgPSAweEJDLAogICAgICAgICBPUDJfVFpDTlQgICAgICAgICAgID0g
MHhCQywKQEAgLTI5OCw2ICszMDAsOCBAQCBwcml2YXRlOgogICAgICAgICBPUDJfTU9WU1hfR3ZF
YiAgICAgID0gMHhCRSwKICAgICAgICAgT1AyX01PVlpYX0d2RXcgICAgICA9IDB4QjcsCiAgICAg
ICAgIE9QMl9NT1ZTWF9HdkV3ICAgICAgPSAweEJGLAorICAgICAgICBPUDJfWEFERGIgICAgICAg
ICAgID0gMHhDMCwKKyAgICAgICAgT1AyX1hBREQgICAgICAgICAgICA9IDB4QzEsCiAgICAgICAg
IE9QMl9QRVhUUldfR2RVZEliICAgPSAweEM1LAogICAgICAgICBPUDJfUFNMTFFfVWRxSWIgICAg
ID0gMHg3MywKICAgICAgICAgT1AyX1BTUkxRX1VkcUliICAgICA9IDB4NzMsCkBAIC0yNzc1LDYg
KzI3NzksOTAgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX0xPQ0sp
OwogICAgIH0KICAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29C
eXRlT3A4KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcDgoT1AyX0NNUFhDSEdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVP
cChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgY21weGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJf
Q01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhj
aGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5
dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgY21weGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
Y21weGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wNjQoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3A4KE9QMl9YQUREYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IHhhZGRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3
b0J5dGVPcDgoT1AyX1hBRERiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCB4YWRkd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9P
UEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkd19ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRf
U0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGxfcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHFfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgeGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKyAgICAKICAgICB2b2lkIG1mZW5jZSgpCiAgICAgewogICAgICAg
ICBtX2Zvcm1hdHRlci50aHJlZUJ5dGVPcChPUDJfM0JZVEVfRVNDQVBFX0FFLCBPUDNfTUZFTkNF
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNB
dG9taWNWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CisKK0F0b21pY1ZhbHVlOjp+QXRvbWljVmFsdWUoKQoreworfQorCitXaWR0
aCBBdG9taWNWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3dpZHRo
OworfQorCit2b2lkIEF0b21pY1ZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChjb21tYSwgIndpZHRoID0g
IiwgbV93aWR0aCk7CisgICAgCisgICAgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKGNvbW1hLCBvdXQp
OworfQorCitWYWx1ZSogQXRvbWljVmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG5ldyBBdG9taWNWYWx1ZSgqdGhpcyk7Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1
ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogb3BlcmFuZCwg
VmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKENo
ZWNrZWRPcGNvZGUsIGtpbmQsIG9wZXJhbmQtPnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIG9wZXJh
bmQsIHBvaW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2Uo
SGVhcFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKG9wZXJhdGlvbldp
ZHRoKCkpID09IG9wZXJhdGlvblR5cGUoKSk7CisgICAgCisgICAgc3dpdGNoIChraW5kLm9wY29k
ZSgpKSB7CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoK
KyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2Fz
ZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitB
dG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3
aWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBvaW50
ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUs
IGtpbmQsIGtpbmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRW
YWx1ZS0+dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUsIHBv
aW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVhcFJh
bmdlOjp0b3AoKSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKG9wZXJhdGlvbldpZHRoKCkp
ID09IG9wZXJhdGlvblR5cGUoKSk7CisKKyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAg
ICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNf
SklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQor
CisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEF0
b21pY1ZhbHVlIDogcHVibGljIE1lbW9yeVZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9v
bCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0F0b21pYyhraW5k
Lm9wY29kZSgpKTsKKyAgICB9CisgICAgCisgICAgfkF0b21pY1ZhbHVlKCk7CisgICAgCisgICAg
VHlwZSBvcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gY2hpbGQoMCktPnR5cGUoKTsgfQor
ICAgIAorICAgIFdpZHRoIG9wZXJhdGlvbldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsg
fQorICAgIAorICAgIC8vIFN5bm9ueW0gZm9yIHdpZHRoKCksIGlmIHlvdSdyZSBhY2Nlc3Npbmcg
dmlhIE1lbW9yeVZhbHVlLgorICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmlu
dFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIAorICAgIFZhbHVlKiBjbG9uZUltcGwoKSBj
b25zdCBvdmVycmlkZTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVy
ZTsKKyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBWYWx1ZSogb3Bl
cmFuZCwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCisgICAgQXRv
bWljVmFsdWUoS2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVl
KiBuZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCisg
ICAgV2lkdGggbV93aWR0aDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
QmxvY2tJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM2LDM1ICszNiwxMyBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIEJsb2Nr
SW5zZXJ0aW9uU2V0OjpCbG9ja0luc2VydGlvblNldChQcm9jZWR1cmUgJnByb2MpCi0gICAgOiBt
X3Byb2MocHJvYykKKyAgICA6IEdlbmVyaWNCbG9ja0luc2VydGlvblNldChwcm9jLm1fYmxvY2tz
KQorICAgICwgbV9wcm9jKHByb2MpCiB7CiB9CiAKIEJsb2NrSW5zZXJ0aW9uU2V0Ojp+QmxvY2tJ
bnNlcnRpb25TZXQoKSB7IH0KIAotdm9pZCBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KEJsb2Nr
SW5zZXJ0aW9uJiYgaW5zZXJ0aW9uKQotewotICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RGTW92
ZShpbnNlcnRpb24pKTsKLX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2Vy
dCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkp
OwotICAgIEJhc2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdldCgpOwotICAgIGluc2VydChCbG9j
a0luc2VydGlvbihpbmRleCwgV1RGTW92ZShibG9jaykpKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKEJhc2ljQmxv
Y2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGJlZm9y
ZS0+aW5kZXgoKSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9yZS0+
ZnJlcXVlbmN5KCkpOwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0
QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJu
IGluc2VydChhZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVx
dWVuY3kgOiBhZnRlci0+ZnJlcXVlbmN5KCkpOwotfQotCiBCYXNpY0Jsb2NrKiBCbG9ja0luc2Vy
dGlvblNldDo6c3BsaXRGb3J3YXJkKAogICAgIEJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCYg
dmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0KiBpbnNlcnRpb25TZXQsIGRvdWJsZSBmcmVxdWVuY3kp
CiB7CkBAIC0xMDIsMzIgKzgwLDYgQEAgQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6OnNw
bGl0Rm9ydwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgQmxvY2tJbnNlcnRpb25TZXQ6
OmV4ZWN1dGUoKQotewotICAgIGlmIChtX2luc2VydGlvbnMuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgLy8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZl
biB0byB1cyBpbiBhbnkgb3JkZXIuIFNvLCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKLSAg
ICAvLyBydW5uaW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMuIFdlIHN0cm9uZ2x5IHByZWZlciBh
IHN0YWJsZSBzb3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCi0gICAgLy8gZmFzdCwgc28gd2UgdXNl
IGJ1YmJsZSBzb3J0LgotICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5z
ZXJ0aW9ucy5lbmQoKSk7Ci0KLSAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX3Byb2MubV9ibG9ja3Ms
IG1faW5zZXJ0aW9ucyk7Ci0gICAgCi0gICAgLy8gUHJ1bmUgb3V0IGVtcHR5IGVudHJpZXMuIFRo
aXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzCi0gICAgLy8gaGVhbHRoeSB0byBr
ZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KLSAgICBtX3Byb2MubV9ibG9ja3MucmVt
b3ZlQWxsTWF0Y2hpbmcoCi0gICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+
JiBibG9ja1B0cikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gIWJsb2NrUHRyOwotICAg
ICAgICB9KTsKLSAgICAKLSAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhl
aXIgbmV3IGluZGljZXMuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvYy5tX2Js
b2Nrcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9wcm9jLm1fYmxvY2tzW2ldLT5tX2luZGV4ID0g
aTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIz
CiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIz
R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNp
bmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzUs
MjYgKzM2LDEzIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBJbnNl
cnRpb25TZXQ7CiAKLXR5cGVkZWYgV1RGOjpJbnNlcnRpb248c3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+PiBCbG9ja0luc2VydGlvbjsKK3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0
PEJhc2ljQmxvY2s+OjpCbG9ja0luc2VydGlvbiBCbG9ja0luc2VydGlvbjsKIAotY2xhc3MgQmxv
Y2tJbnNlcnRpb25TZXQgeworY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgOiBwdWJsaWMgR2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+IHsKIHB1YmxpYzoKICAgICBCbG9ja0luc2Vy
dGlvblNldChQcm9jZWR1cmUmKTsKICAgICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKICAgICAKLSAg
ICB2b2lkIGluc2VydChCbG9ja0luc2VydGlvbiYmKTsKLQotICAgIC8vIEluc2VydCBhIG5ldyBi
bG9jayBhdCBhIGdpdmVuIGluZGV4LgotICAgIEJhc2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBp
bmRleCwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBi
bG9jayBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNzIHRo
ZSBmcmVxdWVuY3kKLSAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0byBq
dXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCi0gICAg
Ly8gdXN1YWxseSB3aGF0IHlvdSB3YW50LgotICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9yZShC
YXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIElu
c2VydHMgYSBuZXcgYmxvY2sgYWZ0ZXIgdGhlIGdpdmVuIGJsb2NrLgotICAgIEJhc2ljQmxvY2sq
IGluc2VydEFmdGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7
Ci0KICAgICAvLyBBIGhlbHBlciB0byBzcGxpdCBhIGJsb2NrIHdoZW4gZm9yd2FyZCBpdGVyYXRp
bmcgb3ZlciBpdC4gSXQgY3JlYXRlcyBhIG5ldyBibG9jayB0byBob2xkCiAgICAgLy8gZXZlcnl0
aGluZyBiZWZvcmUgdGhlIGluc3RydWN0aW9uIGF0IHZhbHVlSW5kZXguIFRoZSBjdXJyZW50IGJs
b2NrIGlzIGxlZnQgd2l0aAogICAgIC8vIGV2ZXJ5dGhpbmcgYXQgYW5kIGFmdGVyIHZhbHVlSW5k
ZXguIElmIHRoZSBvcHRpb25hbCBJbnNlcnRpb25TZXQgaXMgcHJvdmlkZWQsIGl0IHdpbGwgZ2V0
CkBAIC04MCwxMiArNjgsOSBAQCBwdWJsaWM6CiAgICAgQmFzaWNCbG9jayogc3BsaXRGb3J3YXJk
KAogICAgICAgICBCYXNpY0Jsb2NrKiwgdW5zaWduZWQmIHZhbHVlSW5kZXgsIEluc2VydGlvblNl
dCogPSBudWxscHRyLAogICAgICAgICBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0gICAgCi0g
ICAgYm9vbCBleGVjdXRlKCk7CiAKIHByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7Ci0g
ICAgVmVjdG9yPEJsb2NrSW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7CiB9OwogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVj
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMu
Y3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZl
Y3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsOCBAQCBib29sIEVmZmVjdHM6Omlu
dGVyZmVyZXMoY29uc3QgRWZmZWN0cyYgCiAgICAgICAgIHx8IGludGVyZmVyZXNXaXRoV3JpdGVz
UGlubmVkKG90aGVyLCAqdGhpcykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLndy
aXRlcykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLnJlYWRzKQotICAgICAgICB8
fCByZWFkcy5vdmVybGFwcyhvdGhlci53cml0ZXMpOworICAgICAgICB8fCByZWFkcy5vdmVybGFw
cyhvdGhlci53cml0ZXMpCisgICAgICAgIHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9CiAK
IGJvb2wgRWZmZWN0czo6b3BlcmF0b3I9PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAg
LTk1LDcgKzk2LDggQEAgYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIAog
ICAgICAgICAmJiB3cml0ZXNQaW5uZWQgPT0gb3RoZXIud3JpdGVzUGlubmVkCiAgICAgICAgICYm
IHJlYWRzUGlubmVkID09IG90aGVyLnJlYWRzUGlubmVkCiAgICAgICAgICYmIHdyaXRlcyA9PSBv
dGhlci53cml0ZXMKLSAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHM7CisgICAgICAgICYm
IHJlYWRzID09IG90aGVyLnJlYWRzCisgICAgICAgICYmIGZlbmNlID09IG90aGVyLmZlbmNlOwog
fQogCiBib29sIEVmZmVjdHM6Om9wZXJhdG9yIT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0
CkBAIC0xMjAsNiArMTIyLDggQEAgdm9pZCBFZmZlY3RzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbgogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJXcml0ZXNQaW5uZWQiKTsKICAgICBpZiAo
cmVhZHNQaW5uZWQpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIlJlYWRzUGlubmVkIik7Cisg
ICAgaWYgKGZlbmNlKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJGZW5jZSIpOwogICAgIGlm
ICh3cml0ZXMpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlczoiLCB3cml0ZXMpOwog
ICAgIGlmIChyZWFkcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAko
d29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBib29s
IHJlYWRzUGlubmVkIHsgZmFsc2UgfTsKICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07
CisgICAgCisgICAgLy8gTWVtb3J5IGZlbmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBl
YWNoIG90aGVyIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisg
ICAgLy8gaWYgdGhlIG9wZXJhdGlvbiBpcyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZlbmNl
IHsgZmFsc2UgfTsKIAogICAgIEhlYXBSYW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRz
OwpAQCAtODksNiArOTMsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5yZWFk
cyA9IEhlYXBSYW5nZTo6dG9wKCk7CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7
CiAgICAgICAgIHJlc3VsdC53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVu
Y2UgPSB0cnVlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcgKzEw
OCw3IEBAIHN0cnVjdCBFZmZlY3RzIHsKIAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVz
TG9jYWxTdGF0ZSB8fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4gdGVy
bWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3
cml0ZXNQaW5uZWQgfHwgZmVuY2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHJl
b3JkZXJpbmcgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxk
IGNoYW5nZSBwcm9ncmFtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0cnVjdCBJbXB1
cmVCbG9ja0RhdGEgewogCiAgICAgUmFuZ2VTZXQ8SGVhcFJhbmdlPiByZWFkczsgLy8gVGhpcyBv
bmx5IGdldHMgdXNlZCBmb3IgZm9yd2FyZCBzdG9yZSBlbGltaW5hdGlvbi4KICAgICBSYW5nZVNl
dDxIZWFwUmFuZ2U+IHdyaXRlczsgLy8gVGhpcyBnZXRzIHVzZWQgZm9yIGJvdGggbG9hZCBhbmQg
c3RvcmUgZWxpbWluYXRpb24uCisgICAgYm9vbCBmZW5jZTsKIAogICAgIE1lbW9yeVZhbHVlTWFw
IHN0b3Jlc0F0SGVhZDsKICAgICBNZW1vcnlWYWx1ZU1hcCBtZW1vcnlWYWx1ZXNBdFRhaWw7CkBA
IC0xNzQsMTIgKzE3NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaWYgKG1lbW9yeSAmJiBtZW1vcnktPmlzU3RvcmUoKQogICAgICAgICAgICAgICAgICAg
ICAmJiAhZGF0YS5yZWFkcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCi0gICAgICAgICAgICAg
ICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpKQorICAgICAg
ICAgICAgICAgICAgICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQor
ICAgICAgICAgICAgICAgICAgICAmJiAoIWRhdGEuZmVuY2UgfHwgIW1lbW9yeS0+aGFzRmVuY2Uo
KSkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3RvcmVzQXRIZWFkLmFkZChtZW1vcnkpOwog
ICAgICAgICAgICAgICAgIGRhdGEucmVhZHMuYWRkKGVmZmVjdHMucmVhZHMpOwogCiAgICAgICAg
ICAgICAgICAgaWYgKEhlYXBSYW5nZSB3cml0ZXMgPSBlZmZlY3RzLndyaXRlcykKICAgICAgICAg
ICAgICAgICAgICAgY2xvYmJlcihkYXRhLCB3cml0ZXMpOworICAgICAgICAgICAgICAgIGRhdGEu
ZmVuY2UgfD0gZWZmZWN0cy5mZW5jZTsKIAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkpCiAg
ICAgICAgICAgICAgICAgICAgIGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkpOwpA
QCAtNDc4LDYgKzQ4MSw5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVy
PgogICAgIGJvb2wgZmluZFN0b3JlQWZ0ZXJDbG9iYmVyKFZhbHVlKiBwdHIsIEhlYXBSYW5nZSBy
YW5nZSwgY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAgeworICAgICAgICBpZiAobV92YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIAogICAgICAgICAvLyBXZSBjYW4gZWxpbWluYXRlIGEgc3RvcmUgaWYgZXZlcnkg
Zm9yd2FyZCBwYXRoIGhpdHMgYSBzdG9yZSB0byB0aGUgc2FtZSBsb2NhdGlvbiBiZWZvcmUKICAg
ICAgICAgLy8gaGl0dGluZyBhbnkgb3BlcmF0aW9uIHRoYXQgb2JzZXJ2ZXMgdGhlIHN0b3JlLiBU
aGlzIHNlYXJjaCBzZWVtcyBsaWtlIGl0IHNob3VsZCBiZQogICAgICAgICAvLyBleHBlbnNpdmUs
IGJ1dCBpbiB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5IG9mIGNhc2VzIGl0IHdpbGwgYWxtb3N0
IGltbWVkaWF0ZWx5IGhpdCBhbiAKQEAgLTYxNCw2ICs2MjAsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCptX3ZhbHVlLCAiOiBsb29raW5n
IGJhY2t3YXJkIGZvciAiLCAqcHRyLCAiLi4uXG4iKTsKICAgICAgICAgCisgICAgICAgIGlmICht
X3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNl
IGZlbmNlcy5cbiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBpZiAoTWVtb3J5VmFsdWUqIG1hdGNoID0gbV9kYXRhLm1lbW9yeVZhbHVl
c0F0VGFpbC5maW5kKHB0ciwgZmlsdGVyKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5Llxu
Iik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCShyZXZpc2lv
biAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgdm9pZCBnZW5lcmF0ZVRvQWlyKFByb2NlZHVy
ZSYgcHJvY2VkdXJlLAogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUwNTA3CiAgICAgfQogCisgICAgLy8gVGhpcyBwdXRzIHRoZSBJUiBpbiBxdWly
a3MgbW9kZS4KICAgICBsb3dlck1hY3Jvcyhwcm9jZWR1cmUpOwogCiAgICAgaWYgKG9wdExldmVs
ID49IDEpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0lu
c2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgPHd0
Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBJbnNlcnRpb25TZXQ7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEJhc2ljQmxvY2s+CitjbGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQgeworcHVibGlj
OgorICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRpb248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+
PiBCbG9ja0luc2VydGlvbjsKKyAgICAKKyAgICBCbG9ja0luc2VydGlvblNldChWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiYgYmxvY2tzKQorICAgICAgICA6IG1fYmxvY2tzKGJs
b2NrcykKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9u
JiYgaW5zZXJ0aW9uKQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3Zl
KGluc2VydGlvbikpOworICAgIH0KKworICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdp
dmVuIGluZGV4LgorICAgIEJhc2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91Ymxl
IGZyZXF1ZW5jeSA9IFBOYU4pCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNC
bG9jaz4gYmxvY2sobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOworICAgICAg
ICBCYXNpY0Jsb2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsKKyAgICAgICAgaW5zZXJ0KEJsb2Nr
SW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBi
bG9jay4gVXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5CisgICAgLy8gYXJn
dW1lbnQuIFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBv
ZiB0aGUgJ2JlZm9yZScgYmxvY2suIFRoYXQncworICAgIC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2Fu
dC4KKyAgICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3Vi
bGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYmVmb3Jl
LT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5m
cmVxdWVuY3koKSk7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0
aGUgZ2l2ZW4gYmxvY2suCisgICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayog
YWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlu
c2VydChhZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVu
Y3kgOiBhZnRlci0+ZnJlcXVlbmN5KCkpOworICAgIH0KKworICAgIGJvb2wgZXhlY3V0ZSgpCisg
ICAgeworICAgICAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8g
YmUgZ2l2ZW4gdG8gdXMgaW4gYW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVm
b3JlCisgICAgICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25n
bHkgcHJlZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKKyAgICAgICAgLy8g
ZmFzdCwgc28gd2UgdXNlIGJ1YmJsZSBzb3J0LgorICAgICAgICBidWJibGVTb3J0KG1faW5zZXJ0
aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOworICAgICAgICAKKyAgICAgICAgZXhl
Y3V0ZUluc2VydGlvbnMobV9ibG9ja3MsIG1faW5zZXJ0aW9ucyk7CisgICAgICAgIAorICAgICAg
ICAvLyBQcnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3Nh
cnkgYnV0IGl0J3MKKyAgICAgICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZy
b20gZ3Jvd2luZy4KKyAgICAgICAgbV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAg
ICAgICBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+IGJvb2wg
eworICAgICAgICAgICAgICAgIHJldHVybiAhYmxvY2tQdHI7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBu
ZXcgaW5kaWNlcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzLnNp
emUoKTsgKytpKQorICAgICAgICAgICAgbV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOworICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmxvY2tJ
bnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
MworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0hlYXBSYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0hlYXBSYW5nZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNIZWFwUmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMTMgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAorICAg
IEhlYXBSYW5nZSBvcGVyYXRvcnwoY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBIZWFwUmFuZ2UoCisgICAgICAgICAgICBzdGQ6Om1pbihtX2JlZ2lu
LCBvdGhlci5tX2JlZ2luKSwKKyAgICAgICAgICAgIHN0ZDo6bWF4KG1fZW5kLCBvdGhlci5tX2Vu
ZCkpOworICAgIH0KKyAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsgfQogCiAgICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBtX2JlZ2luOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNl
cnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0lu
c2VydGlvblNldC5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCwxMSBA
QCBWYWx1ZSogSW5zZXJ0aW9uU2V0OjppbnNlcnRCb3R0b20oc2l6ZV90CiAgICAgcmV0dXJuIGlu
c2VydEJvdHRvbShpbmRleCwgbGlrZVZhbHVlLT5vcmlnaW4oKSwgbGlrZVZhbHVlLT50eXBlKCkp
OwogfQogCitWYWx1ZSogSW5zZXJ0aW9uU2V0OjppbnNlcnRDbG9uZShzaXplX3QgaW5kZXgsIFZh
bHVlKiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gaW5zZXJ0VmFsdWUoaW5kZXgsIG1fcHJvY2VkdXJl
LmNsb25lKHZhbHVlKSk7Cit9CisKIHZvaWQgSW5zZXJ0aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxv
Y2sqIGJsb2NrKQogewogICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5z
ZXJ0aW9ucy5lbmQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRp
b25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRp
b25TZXQuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
SW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgog
CiAgICAgVmFsdWUqIGluc2VydEJvdHRvbShzaXplX3QgaW5kZXgsIE9yaWdpbiwgVHlwZSk7CiAg
ICAgVmFsdWUqIGluc2VydEJvdHRvbShzaXplX3QgaW5kZXgsIFZhbHVlKik7CisgICAgCisgICAg
VmFsdWUqIGluc2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqKTsKIAogICAgIHZvaWQgZXhl
Y3V0ZShCYXNpY0Jsb2NrKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyTWFjcm9zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlck1hY3Jvcy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDExICs1OCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIDogbV9wcm9jKHByb2MpCiAgICAgICAgICwgbV9ibG9ja0luc2Vy
dGlvblNldChwcm9jKQogICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KHByb2MpCisgICAgICAgICwg
bV91c2VDb3VudHMocHJvYykKICAgICB7CiAgICAgfQogCiAgICAgYm9vbCBydW4oKQogICAgIHsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcHJvYy5oYXNRdWlya3MoKSk7CisgICAgICAgIAog
ICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7CiAgICAgICAgICAgICBt
X2Jsb2NrID0gYmxvY2s7CiAgICAgICAgICAgICBwcm9jZXNzQ3VycmVudEJsb2NrKCk7CkBAIC03
Miw2ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3Byb2MucmVzZXRSZWFjaGFiaWxp
dHkoKTsKICAgICAgICAgICAgIG1fcHJvYy5pbnZhbGlkYXRlQ0ZHKCk7CiAgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgd2UndmUgCisgICAgICAgIG1f
cHJvYy5zZXRIYXNRdWlya3ModHJ1ZSk7CisgICAgICAgIAogICAgICAgICByZXR1cm4gbV9jaGFu
Z2VkOwogICAgIH0KICAgICAKQEAgLTE4NSw3ICsxOTIsOTYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAg
ICAgICAgICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBDcmVh
dGUgYSBsb2FkLWxvYWQgZmVuY2UuIFRoaXMgY29kZWdlbnMgdG8gbm90aGluZyBvbiBYODYuIFdl
IHVzZSBpdCB0byB0ZWxsIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyBjb21waWxlciBub3Qg
dG8gYmxvY2sgbG9hZCBtb3Rpb24uCisgICAgICAgICAgICAgICAgICAgIEZlbmNlVmFsdWUqIGZl
bmNlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PEZlbmNlVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2lu
KTsKKyAgICAgICAgICAgICAgICAgICAgZmVuY2UtPnJlYWQgPSBIZWFwUmFuZ2UoKTsKKyAgICAg
ICAgICAgICAgICAgICAgZmVuY2UtPndyaXRlID0gSGVhcFJhbmdlOjp0b3AoKTsKKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIEtpbGwgdGhlIERlcGVuZCwgd2hp
Y2ggc2hvdWxkIHVubG9jayBhIGJ1bmNoIG9mIGNvZGUgc2ltcGxpZmljYXRpb24uCisgICAgICAg
ICAgICAgICAgICAgIG1fbm9kZS0+cmVwbGFjZVdpdGhCb3R0b20obV9pbnNlcnRpb25TZXQsIG1f
aW5kZXgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9jaGFu
Z2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAg
ICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkp
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsK
KyAgICAgICAgICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNDYW5vbmljYWxXaWR0aCh3
aWR0aCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIFZhbHVlKiBleHBlY3RlZFZhbHVlID0gYXRvbWljLT5jaGlsZCgwKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBPbiBBUk0sIHRoZSBsb2FkIHBhcnQg
b2YgdGhlIENBUyBkb2VzIGEgbG9hZCB3aXRoIHplcm8gZXh0ZW5zaW9uLiBUaGVyZWZvcmUsIHdl
IG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0byB6ZXJvLWV4dGVuZCB0aGUgaW5wdXQuCisgICAg
ICAgICAgICAgICAgVmFsdWUqIG1hc2tlZEV4cGVjdGVkVmFsdWUgPSBtX2luc2VydGlvblNldC5p
bnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBCaXRBbmQsIG1fb3Jp
Z2luLCBleHBlY3RlZFZhbHVlLAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnRJbnRDb25zdGFudChtX2luZGV4LCBleHBlY3RlZFZhbHVlLCBtYXNrKHdpZHRoKSkpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF0b21pYy0+Y2hpbGQoMCkgPSBtYXNr
ZWRFeHBlY3RlZFZhbHVlOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdB
bmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRv
bWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAg
IGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAgICAgIC8vIE9uIFg4NiwgdGhlc2UgbWF5
IGFjdHVhbGx5IHJldHVybiBnYXJiYWdlIGluIHRoZSBoaWdoIGJpdHMuIE9uIEFSTTY0LCB0aGVz
ZSBzb3J0YQorICAgICAgICAgICAgICAgIC8vIHplcm8tZXh0ZW5kIHRoZWlyIGhpZ2ggYml0cywg
ZXhjZXB0IHRoYXQgdGhlIGhpZ2ggYml0cyBtaWdodCBnZXQgcG9sbHV0ZWQgYnkgaGlnaAorICAg
ICAgICAgICAgICAgIC8vIGJpdHMgaW4gdGhlIG9wZXJhbmQuIC4gU28sIGVpdGhlciB3YXksIHdl
IG5lZWQgdG8gdGhyb3cgYSBzaWduLWV4dGVuZCBvbiB0aGVzZQorICAgICAgICAgICAgICAgIC8v
IHRoaW5ncy4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljWGNo
Z1N1YiAmJiBtX3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBPbiB4ODYsIHhjaGdhZGQgaXMgYmV0dGVyIHRoYW4geGNoZ3N1YiBpZiBpdCBo
YXMgYW55IHVzZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+c2V0S2luZFVu
c2FmZWx5KEF0b21pY1hjaGdBZGQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+
Y2hpbGQoMSkgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5kZXgsIE5lZywgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDEpKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgYm9vbCBleGVtcHQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChtX3ZhbHVlLT5vcGNvZGUoKSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdBbmQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAg
ICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZW1wdCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGlmIChleGVtcHQpCisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOwor
ICAgICAgICAgICAgICAgIFdpZHRoIHdpZHRoID0gYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdp
ZHRoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgVmFsdWUqIG5ld1ZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVl
PigKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgc2lnbkV4dGVuZE9wY29kZSh3aWR0aCks
IG1fb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDbG9u
ZShtX2luZGV4LCBtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
bV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAg
bV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00NzAsNiArNTY2LDcgQEAgcHJpdmF0ZToKICAgICBQ
cm9jZWR1cmUmIG1fcHJvYzsKICAgICBCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0aW9u
U2V0OwogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKKyAgICBVc2VDb3VudHMgbV91
c2VDb3VudHM7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKICAgICB1bnNpZ25lZCBtX2luZGV4
OwogICAgIFZhbHVlKiBtX3ZhbHVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NB
ZnRlck9wdGltaXphdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTUgKzE1NiwxNCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBSb3RMOiB7CiAgICAgICAgICAgICAgICAgLy8g
QVJNNjQgZG9lc24ndCBoYXZlIGEgcm90YXRlIGxlZnQuCiAgICAgICAgICAgICAgICAgaWYgKGlz
QVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDEp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNl
dC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVl
LT5jaGlsZCgwKSwgbmV3U2hpZnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+
cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG5l
d1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBOZWcsIG1fdmFs
dWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgICAgIFZh
bHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIs
IG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOworICAgICAg
ICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDYgKzcyLDE0IEBAIG5hbWVzcGFjZSB7CiAKIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOwogCisvLyBGSVhNRTogV2Ugd291bGRuJ3QgbmVlZCB0aGlzIGlmIEFpciBzdXBwb3J0
ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFpcjo6S2luZC4KKy8vIE9PUFMhISEgKG5lZWQgYSBidWcg
VVJMKQorI2RlZmluZSBPUENPREVfRk9SX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAorICAgICh3
aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDggOiBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDE2
ID8gb3Bjb2RlICMjIDE2IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgzMiA/IG9wY29kZSAjIyAz
MiA6IFwKKyAgICBvcGNvZGUgIyMgNjQpCisKIGNsYXNzIExvd2VyVG9BaXIgewogcHVibGljOgog
ICAgIExvd2VyVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUpCkBAIC04Myw2ICs5MSwxMiBAQCBw
dWJsaWM6CiAgICAgICAgICwgbV9kb21pbmF0b3JzKHByb2NlZHVyZS5kb21pbmF0b3JzKCkpCiAg
ICAgICAgICwgbV9wcm9jZWR1cmUocHJvY2VkdXJlKQogICAgICAgICAsIG1fY29kZShwcm9jZWR1
cmUuY29kZSgpKQorICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQobV9jb2RlKQorI2lmIENQ
VShYODYpIHx8IENQVShYODZfNjQpCisgICAgICAgICwgbV9lYXgoWDg2UmVnaXN0ZXJzOjplYXgp
CisgICAgICAgICwgbV9lY3goWDg2UmVnaXN0ZXJzOjplY3gpCisgICAgICAgICwgbV9lZHgoWDg2
UmVnaXN0ZXJzOjplZHgpCisjZW5kaWYKICAgICB7CiAgICAgfQogCkBAIC0xMjQsMTQgKzEzOCwx
OCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGhvaXN0ZWQgYWRkcmVzcyBleHByZXNzaW9uIGJlZm9y
ZSB3ZSBkdXBsaWNhdGUgaXQgYmFjayBpbnRvIHRoZSBsb29wLgogICAgICAgICBmb3IgKEIzOjpC
YXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvY2VkdXJlLmJsb2Nrc0luUHJlT3JkZXIoKSkgewogICAg
ICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwotICAgICAgICAgICAgLy8gUmVzZXQgc29tZSBzdGF0
ZS4KLSAgICAgICAgICAgIG1faW5zdHMucmVzaXplKDApOwogCiAgICAgICAgICAgICBtX2lzUmFy
ZSA9ICFtX2Zhc3RXb3JrbGlzdC5zYXcoYmxvY2spOwogCiAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJMb3dlcmluZyBCbG9jayAiLCAqYmxvY2ssICI6
XG4iKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1
Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3JyZWN0bHkuCisgICAgICAgICAgICBmb3IgKEIzOjpGcmVx
dWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAg
ICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+c3VjY2Vzc29ycygpLmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sobV9ibG9ja1RvQmxvY2tbc3VjY2Vz
c29yLmJsb2NrKCldLCBzdWNjZXNzb3IuZnJlcXVlbmN5KCkpKTsKKyAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgLy8gUHJvY2VzcyBibG9ja3MgaW4gcmV2ZXJzZSBvcmRlciBzbyB3ZSBzZWUg
dXNlcyBiZWZvcmUgZGVmcy4gVGhhdCdzIHdoYXQgYWxsb3dzIHVzCiAgICAgICAgICAgICAvLyB0
byBtYXRjaCBwYXR0ZXJucyBlZmZlY3RpdmVseS4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGJsb2NrLT5zaXplKCk7IGktLTspIHsKQEAgLTE0OSwxOSArMTY3LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIE5vdyBh
cHBlbmQgdGhlIGluc3RydWN0aW9ucy4gbV9pbnN0cyBjb250YWlucyB0aGVtIGluIHJldmVyc2Ug
b3JkZXIsIHNvIHdlIHByb2Nlc3MKLSAgICAgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCi0gICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luc3RzLnNpemUoKTsgaS0tOykgewotICAgICAg
ICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1faW5zdHNbaV0pCi0gICAgICAgICAgICAgICAg
ICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3Nv
cnMgYXJlIHNldCB1cCBjb3JyZWN0bHkuCi0gICAgICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVk
QmxvY2sgc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgICAg
IG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+c3VjY2Vzc29ycygpLmFwcGVuZCgKLSAgICAgICAgICAg
ICAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sobV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJs
b2NrKCldLCBzdWNjZXNzb3IuZnJlcXVlbmN5KCkpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyhtX2Jsb2NrVG9CbG9ja1tibG9ja10pOwog
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2Jsb2NrSW5zZXJ0aW9uU2V0LmV4ZWN1dGUo
KTsKIAogICAgICAgICBBaXI6Okluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9jb2RlKTsKICAg
ICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9wcm9sb2d1ZSkKQEAgLTUzOCw3ICs1NDcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwogCiAgICAgICAgIGludDMyX3Qgb2Zm
c2V0ID0gdmFsdWUtPm9mZnNldCgpOwotICAgICAgICBXaWR0aCB3aWR0aCA9IHZhbHVlLT5hY2Nl
c3NXaWR0aCgpOworICAgICAgICBXaWR0aCB3aWR0aCA9IHZhbHVlLT5sb2FkU3RvcmVXaWR0aCgp
OwogCiAgICAgICAgIEFyZyByZXN1bHQgPSBlZmZlY3RpdmVBZGRyKHZhbHVlLT5sYXN0Q2hpbGQo
KSwgb2Zmc2V0LCB3aWR0aCk7CiAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNWYWxpZEZvcm0od2lk
dGgpKTsKQEAgLTU2MiwxMSArNTcxLDE2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQXJnUHJvbWlz
ZSBsb2FkUHJvbWlzZUFueU9wY29kZShWYWx1ZSogbG9hZFZhbHVlKQogICAgIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKSk7CiAgICAgICAgIGlm
ICghY2FuQmVJbnRlcm5hbChsb2FkVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwog
ICAgICAgICBpZiAoY3Jvc3Nlc0ludGVyZmVyZW5jZShsb2FkVmFsdWUpKQogICAgICAgICAgICAg
cmV0dXJuIEFyZygpOwotICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChhZGRyKGxvYWRWYWx1ZSks
IGxvYWRWYWx1ZSk7CisgICAgICAgIGlmIChsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5o
YXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIEFyZygpOworICAgICAgICBBcmcgbG9hZEFk
ZHIgPSBhZGRyKGxvYWRWYWx1ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxvYWRBZGRyKTsK
KyAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQobG9hZEFkZHIsIGxvYWRWYWx1ZSk7CiAgICAgICAg
IGlmIChsb2FkVmFsdWUtPnRyYXBzKCkpCiAgICAgICAgICAgICByZXN1bHQuc2V0VHJhcHModHJ1
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04OTgsMTEgKzkxMiw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotI2lmIENQVShYODYpIHx8IENQVShY
ODZfNjQpCiAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAodmFsdWUpLCB0bXAobV92YWx1ZSkpOwot
ICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKGFtb3VudCksIFRtcChYODZSZWdpc3RlcnM6OmVjeCkp
OwotICAgICAgICBhcHBlbmQob3Bjb2RlLCBUbXAoWDg2UmVnaXN0ZXJzOjplY3gpLCB0bXAobV92
YWx1ZSkpOwotI2VuZGlmCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1vdW50KSwgbV9lY3gp
OworICAgICAgICBhcHBlbmQob3Bjb2RlLCBtX2VjeCwgdG1wKG1fdmFsdWUpKTsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQ+
CkBAIC05MzEsMTAgKzk0MywxNSBAQCBwcml2YXRlOgogICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9
IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVCaW5PcChWYWx1ZSogbGVm
dCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV92YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCkpOworICAgICAgICAKICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2Rl
ID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIGxlZnQtPnR5cGUoKSk7CiAg
ICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNG
ZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICAgICAgQXJn
IHN0b3JlQWRkciA9IGFkZHIobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVChzdG9yZUFkZHIpOwog
CkBAIC05OTQsMTAgKzEwMTEsNDggQEAgcHJpdmF0ZToKIAogICAgICAgICByZXR1cm4gSW5zdCht
b3ZlLCBtX3ZhbHVlLCB0bXAodmFsdWUpLCBkZXN0KTsKICAgICB9CisgICAgCisgICAgQWlyOjpP
cGNvZGUgc3RvcmVPcGNvZGUoV2lkdGggd2lkdGgsIEJhbmsgYmFuaywgYm9vbCByZWxlYXNlKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoICh3aWR0aCkgeworICAgICAgICBjYXNlIFdpZHRoODoKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0dXJu
IHJlbGVhc2UgPyBTdG9yZVJlbDggOiBTdG9yZTg7CisgICAgICAgIGNhc2UgV2lkdGgxNjoKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0dXJu
IHJlbGVhc2UgPyBTdG9yZVJlbDE2IDogU3RvcmUxNjsKKyAgICAgICAgY2FzZSBXaWR0aDMyOgor
ICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQOgorICAgICAg
ICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwzMiA6IE1vdmUzMjsKKyAgICAgICAg
ICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlbGVhc2UpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRmxvYXQ7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaXM2NEJpdCgpKTsKKyAgICAgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICAg
ICAgY2FzZSBHUDoKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsNjQg
OiBNb3ZlOworICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghcmVsZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVEb3VibGU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9y
ZU9wY29kZShWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5
ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXR1cm4gc3RvcmVPcGNvZGUo
bWVtb3J5LT5sb2FkU3RvcmVXaWR0aCgpLCBtZW1vcnktPmFjY2Vzc0JhbmsoKSwgbWVtb3J5LT5o
YXNGZW5jZSgpKTsKKyAgICB9CiAKICAgICBJbnN0IGNyZWF0ZVN0b3JlKFZhbHVlKiB2YWx1ZSwg
Y29uc3QgQXJnJiBkZXN0KQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9
IG1vdmVGb3JUeXBlKHZhbHVlLT50eXBlKCkpOworICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bj
b2RlID0gc3RvcmVPcGNvZGUodmFsdWUpOwogICAgICAgICByZXR1cm4gY3JlYXRlU3RvcmUobW92
ZU9wY29kZSwgdmFsdWUsIGRlc3QpOwogICAgIH0KIApAQCAtMTAwNiw3ICsxMDYxLDcgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgY3JlYXRl
U3RvcmUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkpOwogICAgIH0KLQorICAgIAogICAg
IEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRj
aCAodHlwZSkgewpAQCAtMTA3Myw3ICsxMTI4LDQxIEBAIHByaXZhdGU6CiAgICAgewogICAgICAg
ICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoaW5zdCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgZmlu
aXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKEFpcjo6QmFzaWNCbG9jayogdGFyZ2V0KQorICAgIHsK
KyAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRhaW5z
IHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcworICAgICAgICAvLyBpdCBpbiBy
ZXZlcnNlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luc3RzLnNpemUoKTsgaS0tOykg
eworICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0c1tpXSkKKyAgICAgICAgICAg
ICAgICB0YXJnZXQtPmFwcGVuZEluc3QoV1RGTW92ZShpbnN0KSk7CisgICAgICAgIH0KKyAgICAg
ICAgbV9pbnN0cy5yZXNpemUoMCk7CisgICAgfQorICAgIAorICAgIEFpcjo6QmFzaWNCbG9jayog
bmV3QmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYmxvY2tJbnNlcnRpb25TZXQuaW5z
ZXJ0QWZ0ZXIobV9ibG9ja1RvQmxvY2tbbV9ibG9ja10pOworICAgIH0KIAorICAgIC8vIE5PVEU6
IFRoaXMgd2lsbCBjcmVhdGUgYSBjb250aW51YXRpb24gYmxvY2sgKGBuZXh0QmxvY2tgKSAqYWZ0
ZXIqIGFueSBibG9ja3MgeW91J3ZlIGNyZWF0ZWQgdXNpbmcKKyAgICAvLyBuZXdCbG9jaygpLiBT
bywgaXQncyBwcmVmZXJhYmxlIHRvIGNyZWF0ZSBhbGwgb2YgeW91ciBibG9ja3MgdXBmcm9udCB1
c2luZyBuZXdCbG9jaygpLiBBbHNvIG5vdGUKKyAgICAvLyB0aGF0IGFueSBjb2RlIHlvdSBlbWl0
IGJlZm9yZSB0aGlzIHdpbGwgYmUgcHJlcGVuZGVkIHRvIHRoZSBjb250aW51YXRpb24sIGFuZCBh
bnkgY29kZSB5b3UgZW1pdAorICAgIC8vIGFmdGVyIHRoaXMgd2lsbCBiZSBhcHBlbmRlZCB0byB0
aGUgcHJldmlvdXMgYmxvY2suCisgICAgdm9pZCBzcGxpdEJsb2NrKEFpcjo6QmFzaWNCbG9jayom
IHByZXZpb3VzQmxvY2ssIEFpcjo6QmFzaWNCbG9jayomIG5leHRCbG9jaykKKyAgICB7CisgICAg
ICAgIEFpcjo6QmFzaWNCbG9jayogYmxvY2sgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXTsKKyAg
ICAgICAgCisgICAgICAgIHByZXZpb3VzQmxvY2sgPSBibG9jazsKKyAgICAgICAgbmV4dEJsb2Nr
ID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlcihibG9jayk7CisgICAgICAgIAorICAg
ICAgICBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMobmV4dEJsb2NrKTsKKyAgICAgICAgbmV4
dEJsb2NrLT5zdWNjZXNzb3JzKCkgPSBibG9jay0+c3VjY2Vzc29ycygpOworICAgICAgICBibG9j
ay0+c3VjY2Vzc29ycygpLmNsZWFyKCk7CisgICAgICAgIAorICAgICAgICBtX2luc3RzLmFwcGVu
ZChWZWN0b3I8SW5zdD4oKSk7CisgICAgfQorICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBUKiBlbnN1cmVTcGVjaWFsKFQqJiBmaWVsZCwg
QXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKQEAgLTExMjMsNyArMTIxMiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZhbHVlUmVw
OjpTdGFja0FyZ3VtZW50OgogICAgICAgICAgICAgICAgIGFyZyA9IEFyZzo6Y2FsbEFyZyh2YWx1
ZS5yZXAoKS5vZmZzZXRGcm9tU1AoKSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFs
dWUudmFsdWUoKSwgYXJnKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRTdG9yZShtb3ZlRm9yVHlw
ZSh2YWx1ZS52YWx1ZSgpKSwgYXJnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTE5NjEsNiArMjA1MCwzMDggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRYODZEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7Cisg
ICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7CisgICAgICAgIEFpcjo6T3Bj
b2RlIGRpdjsKKyAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSBJbnQzMjoKKyAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9E
b3VibGVXb3JkMzI7CisgICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEludDY0OgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29y
ZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7CisgICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKKyAgICAgICAgVG1wIHJl
c3VsdCA9IG9wID09IERpdiA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5kKE1vdmUs
IHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKGNvbnZlcnRU
b0RvdWJsZVdvcmQsIG1fZWF4LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBt
X2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1
bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpP
cGNvZGUgb3ApCisgICAgeworICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBl
KCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CisKKyAgICAgICAgQVNTRVJUKG9w
ID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9PSBVRGl2
ID8gbV9lYXggOiBtX2VkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNo
aWxkKDApKSwgbV9lYXgpOworICAgICAgICBhcHBlbmQoWG9yNjQsIG1fZWR4LCBtX2VkeCk7Cisg
ICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7
CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorICAg
IAorICAgIEFpcjo6T3Bjb2RlIGxvYWRMaW5rT3Bjb2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZlbmNlID8gT1BDT0RFX0ZPUl9XSURUSChMb2FkTGlu
a0FjcSwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChMb2FkTGluaywgd2lkdGgpOworICAgIH0K
KyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZUNvbmRPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wg
ZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKFN0
b3JlQ29uZFJlbCwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmQsIHdpZHRoKTsK
KyAgICB9CisgICAgCisgICAgLy8gVGhpcyBjYW4gZW1pdCBjb2RlIGZvciB0aGUgZm9sbG93aW5n
IHBhdHRlcm5zOgorICAgIC8vIEF0b21pY1dlYWtDQVMKKyAgICAvLyBCaXRYb3IoQXRvbWljV2Vh
a0NBUywgMSkKKyAgICAvLyBBdG9taWNTdHJvbmdDQVMKKyAgICAvLyBFcXVhbChBdG9taWNTdHJv
bmdDQVMsIGV4cGVjdGVkKQorICAgIC8vIE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0
ZWQpCisgICAgLy8gQnJhbmNoKEF0b21pY1dlYWtDQVMpCisgICAgLy8gQnJhbmNoKEVxdWFsKEF0
b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vIEJyYW5jaChOb3RFcXVhbChBdG9taWNT
dHJvbmdDQVMsIGV4cGVjdGVkKSkKKyAgICAvLworICAgIC8vIEl0IGFzc3VtZXMgdGhhdCBhdG9t
aWNWYWx1ZSBwb2ludHMgdG8gdGhlIENBUywgYW5kIG1fdmFsdWUgcG9pbnRzIHRvIHRoZSBpbnN0
cnVjdGlvbiBiZWluZworICAgIC8vIGdlbmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBj
b25zdW1lZCBldmVyeXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc3VtZWQuCisgICAgdm9pZCBh
cHBlbmRDQVMoVmFsdWUqIGF0b21pY1ZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGF0b21pYyk7CisgICAgICAgIAorICAgICAgICBib29sIGlz
QnJhbmNoID0gbV92YWx1ZS0+b3AoKSA9PSBCcmFuY2g7CisgICAgICAgIGJvb2wgaXNTdHJvbmcg
PSBhdG9taWMtPm9wKCkgPT0gQXRvbWljU3Ryb25nQ0FTOworICAgICAgICBib29sIHJldHVybnNP
bGRWYWx1ZSA9IG1fdmFsdWUtPm9wKCkgPT0gQXRvbWljU3Ryb25nQ0FTOworICAgICAgICAKKyAg
ICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgIEFy
ZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworCisgICAgICAgIFRtcCB2YWx1ZVJlc3VsdFRtcDsK
KyAgICAgICAgVG1wIGJvb2xSZXN1bHRUbXA7CisgICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbnZlcnQpOworICAgICAgICAgICAgdmFs
dWVSZXN1bHRUbXAgPSB0bXAobV92YWx1ZSk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0g
bV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAg
ICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBi
b29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAg
Ym9vbFJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgVG1wIHN1Y2Nlc3NCb29sUmVzdWx0VG1wOworICAgICAgICBpZiAoaXNTdHJvbmcgJiYgIWlz
QnJhbmNoKQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1w
KEdQKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBi
b29sUmVzdWx0VG1wOworCisgICAgICAgIFRtcCBleHBlY3RlZFZhbHVlVG1wID0gdG1wKGF0b21p
Yy0+Y2hpbGQoMCkpOworICAgICAgICBUbXAgbmV3VmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGls
ZCgxKSk7CisgICAgICAgIAorICAgICAgICBGcmVxdWVudGVkQmxvY2sgc3VjY2VzczsKKyAgICAg
ICAgRnJlcXVlbnRlZEJsb2NrIGZhaWx1cmU7CisgICAgICAgIGlmIChpc0JyYW5jaCkgeworICAg
ICAgICAgICAgc3VjY2VzcyA9IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoaW52
ZXJ0KTsKKyAgICAgICAgICAgIGZhaWx1cmUgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3Vj
Y2Vzc29yKCFpbnZlcnQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNYODYo
KSkgeworICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPm9wZXJh
dGlvblR5cGUoKSksIGltbU9yVG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAg
ICAgICBpZiAocmV0dXJuc09sZFZhbHVlKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09E
RV9GT1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FTLCB3aWR0aCksIG1fZWF4LCBuZXdWYWx1ZVRtcCwg
YWRkcmVzcyk7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9t
aWMtPm9wZXJhdGlvblR5cGUoKSksIG1fZWF4LCB2YWx1ZVJlc3VsdFRtcCk7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9G
T1JfV0lEVEgoQnJhbmNoQXRvbWljU3Ryb25nQ0FTLCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChN
YWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7Cisg
ICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbbV9ibG9ja10tPnNldFN1Y2Nlc3NvcnMoc3Vj
Y2VzcywgZmFpbHVyZSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBhcHBl
bmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdHJvbmdDQVMsIHdpZHRoKSwgQXJnOjpzdGF0dXND
b25kKGludmVydCA/IE1hY3JvQXNzZW1ibGVyOjpGYWlsdXJlIDogTWFjcm9Bc3NlbWJsZXI6OlN1
Y2Nlc3MpLCBtX2VheCwgdG1wKGF0b21pYy0+Y2hpbGQoMSkpLCBhZGRyZXNzLCBib29sUmVzdWx0
VG1wKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAgICAgLy8gV2Ugd2lzaCB0byBlbWl0Ogor
ICAgICAgICAvLworICAgICAgICAvLyBCbG9jayAjcmVsb29wOgorICAgICAgICAvLyAgICAgTG9h
ZExpbmsKKyAgICAgICAgLy8gICAgIEJyYW5jaCBOb3RFcXVhbAorICAgICAgICAvLyAgIFN1Y2Nl
c3NvcnM6IFRoZW46I2ZhaWwsIEVsc2U6ICNzdG9yZQorICAgICAgICAvLyBCbG9jayAjc3RvcmU6
CisgICAgICAgIC8vICAgICBTdG9yZUNvbmQKKyAgICAgICAgLy8gICAgIFhvciAkMSwgJXJlc3Vs
dCAgICA8LS0tIG9ubHkgaWYgIWludmVydAorICAgICAgICAvLyAgICAgSnVtcAorICAgICAgICAv
LyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8vIEJsb2NrICNmYWlsOgorICAgICAgICAv
LyAgICAgTW92ZSAkaW52ZXJ0LCAlcmVzdWx0CisgICAgICAgIC8vICAgICBKdW1wCisgICAgICAg
IC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAgICAgICAgLy8gQmxvY2sgI2RvbmU6CisgICAgICAg
IAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9vcEJsb2NrID0gbmV3QmxvY2soKTsKKyAg
ICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdG9yZUJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAg
QWlyOjpCYXNpY0Jsb2NrKiBzdWNjZXNzQmxvY2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlz
QnJhbmNoICYmIGlzU3Ryb25nKQorICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrID0gbmV3QmxvY2so
KTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBmYWlsQmxvY2sgPSBudWxscHRyOworICAgICAg
ICBpZiAoIWlzQnJhbmNoKQorICAgICAgICAgICAgZmFpbEJsb2NrID0gbmV3QmxvY2soKTsKKyAg
ICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdHJvbmdGYWlsQmxvY2s7CisgICAgICAgIGlmIChpc1N0
cm9uZykKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAg
IEZyZXF1ZW50ZWRCbG9jayBjb21wYXJpc29uRmFpbDsKKyAgICAgICAgRnJlcXVlbnRlZEJsb2Nr
IHdlYWtGYWlsOworICAgICAgICBpZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgIGNvbXBhcmlz
b25GYWlsID0gc3Ryb25nRmFpbEJsb2NrOworICAgICAgICAgICAgd2Vha0ZhaWwgPSByZWxvb3BC
bG9jazsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpc0JyYW5jaCkKKyAgICAg
ICAgICAgICAgICBjb21wYXJpc29uRmFpbCA9IGZhaWx1cmU7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBmYWlsQmxvY2s7CisgICAgICAgICAgICB3
ZWFrRmFpbCA9IGZhaWx1cmU7CisgICAgICAgIH0KKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBi
ZWdpbkJsb2NrOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAg
c3BsaXRCbG9jayhiZWdpbkJsb2NrLCBkb25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBw
ZW5kKEp1bXApOworICAgICAgICBiZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2Nr
KTsKKyAgICAgICAgCisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQobG9hZExpbmtPcGNvZGUo
d2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIHZhbHVlUmVzdWx0VG1wLCBhZGRy
ZXNzKTsKKyAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChPUENPREVfRk9SX1dJRFRIKEJyYW5j
aCwgY2Fub25pY2FsV2lkdGgod2lkdGgpKSwgbV92YWx1ZSwgQXJnOjpyZWxDb25kKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCkgdmFsdWVSZXN1bHRUbXAsIGV4cGVjdGVkVmFsdWVUbXApOworICAg
ICAgICByZWxvb3BCbG9jay0+c2V0U3VjY2Vzc29ycyhjb21wYXJpc29uRmFpbCwgc3RvcmVCbG9j
ayk7CisgICAgICAgIAorICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2Rl
KHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZVRtcCwgYWRkcmVz
cywgc3VjY2Vzc0Jvb2xSZXN1bHRUbXApOworICAgICAgICBpZiAoaXNCcmFuY2gpIHsKKyAgICAg
ICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIEFyZzo6cmVzQ29uZChNYWNy
b0Fzc2VtYmxlcjo6WmVybyksIGJvb2xSZXN1bHRUbXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAg
ICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIHdlYWtGYWlsKTsKKyAg
ICAgICAgICAgIGRvbmVCbG9jay0+c3VjY2Vzc29ycygpLmNsZWFyKCk7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVCghZG9uZUJsb2NrLT5zaXplKCkpOworICAgICAgICAgICAgZG9uZUJsb2Nr
LT5hcHBlbmQoT29wcywgbV92YWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
ZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNo
VGVzdDMyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBzdWNjZXNzQm9vbFJl
c3VsdFRtcCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5z
ZXRTdWNjZXNzb3JzKHN1Y2Nlc3NCbG9jaywgcmVsb29wQmxvY2spOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+YXBwZW5kKE1vdmUsIG1fdmFsdWUsIEFy
Zzo6aW1tKCFpbnZlcnQpLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNz
QmxvY2stPmFwcGVuZChKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxv
Y2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFpbnZlcnQpCisgICAgICAgICAgICAgICAgICAgIHN0b3JlQmxvY2st
PmFwcGVuZChYb3IzMiwgbV92YWx1ZSwgQXJnOjpiaXRJbW0oMSksIGJvb2xSZXN1bHRUbXAsIGJv
b2xSZXN1bHRUbXApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN0b3JlQmxv
Y2stPmFwcGVuZChKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5z
ZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKE1vdmUsIG1fdmFsdWUsIEFyZzo6aW1tKGludmVy
dCksIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgZmFpbEJsb2NrLT5hcHBlbmQoSnVtcCwg
bV92YWx1ZSk7CisgICAgICAgICAgICBmYWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2Nr
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzU3Ryb25nKSB7CisgICAgICAg
ICAgICBUbXAgdG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBzdHJvbmdGYWls
QmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSks
IG1fdmFsdWUsIHZhbHVlUmVzdWx0VG1wLCBhZGRyZXNzLCB0bXApOworICAgICAgICAgICAgc3Ry
b25nRmFpbEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8pLCB0bXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAgICBzdHJvbmdG
YWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZmFpbEJsb2NrLCByZWxvb3BCbG9jayk7CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgYm9vbCBhcHBlbmRWb2lkQXRvbWljKEFpcjo6T3Bjb2RlIGF0
b21pY09wY29kZSkKKyAgICB7CisgICAgICAgIGlmIChtX3VzZUNvdW50cy5udW1Vc2VzKG1fdmFs
dWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgQXJnIGFk
ZHJlc3MgPSBhZGRyKG1fdmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzVmFsaWRGb3Jt
KGF0b21pY09wY29kZSwgQXJnOjpJbW0sIGFkZHJlc3Mua2luZCgpKSAmJiBpbW0obV92YWx1ZS0+
Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICBhcHBlbmQoYXRvbWljT3Bjb2RlLCBpbW0obV92YWx1
ZS0+Y2hpbGQoMCkpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNWYWxpZEZvcm0oYXRvbWljT3Bjb2RlLCBBcmc6
OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAgICAgICBhcHBlbmQoYXRvbWljT3Bjb2Rl
LCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhcHBlbmRHZW5lcmFsQXRvbWljKEFpcjo6T3Bjb2RlIG9wY29kZSkKKyAg
ICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1
ZT4oKTsKKyAgICAgICAgCisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAg
ICAgICAgVG1wIG9sZFZhbHVlID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIFRtcCBuZXdW
YWx1ZSA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAKKyAgICAgICAgLy8gV2UgbmVlZCBh
IENBUyBsb29wIG9yIGEgTEwvU0MgbG9vcC4gVXNpbmcgcHJlcGFyZS9hdHRlbXB0IGphcmdvbiwg
d2Ugd2FudDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAg
Ly8gICAgIFByZXBhcmUKKyAgICAgICAgLy8gICAgIG9wY29kZQorICAgICAgICAvLyAgICAgQXR0
ZW1wdAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRoZW46I2RvbmUsIEVsc2U6I3JlbG9vcAor
ICAgICAgICAvLyBCbG9jayAjZG9uZToKKyAgICAgICAgLy8gICAgIE1vdmUgb2xkVmFsdWUsIHJl
c3VsdAorICAgICAgICAKKyAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMt
PnR5cGUoKSksIG9sZFZhbHVlLCB0bXAoYXRvbWljKSk7CisgICAgICAgIAorICAgICAgICBBaXI6
OkJhc2ljQmxvY2sqIHJlbG9vcEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNp
Y0Jsb2NrKiBiZWdpbkJsb2NrOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsK
KyAgICAgICAgc3BsaXRCbG9jayhiZWdpbkJsb2NrLCBkb25lQmxvY2spOworICAgICAgICAKKyAg
ICAgICAgYXBwZW5kKEp1bXApOworICAgICAgICBiZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJl
bG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIEFpcjo6T3Bjb2RlIHByZXBhcmVPcGNvZGU7
CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGF0b21pYy0+b3Bl
cmF0aW9uV2lkdGgoKSkgeworICAgICAgICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICAg
ICAgcHJlcGFyZU9wY29kZSA9IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgICAgICAgICBwcmVw
YXJlT3Bjb2RlID0gTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bj
b2RlID0gTW92ZTMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBX
aWR0aDY0OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAgICAgICAgIG9wY29kZSA9IGxvYWRM
aW5rT3Bjb2RlKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSwgYXRvbWljLT5oYXNGZW5jZSgpKTsK
KyAgICAgICAgfQorICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHByZXBhcmVPcGNvZGUsIG1f
dmFsdWUsIGFkZHJlc3MsIG9sZFZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChvcGNvZGUg
IT0gTm9wKSB7CisgICAgICAgICAgICBpZiAoaW1tKGF0b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFs
aWRGb3JtKG9wY29kZSwgQXJnOjpJbW0sIEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAg
ICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIGltbShhdG9taWMtPmNo
aWxkKDApKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzVmFs
aWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAg
ICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIHRtcChhdG9taWMtPmNo
aWxkKDApKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+
dHlwZSgpKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoaW1tKGF0
b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpJbW0sIEFyZzo6VG1w
KSkKKyAgICAgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFs
dWUsIGltbShhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFs
dWUsIHRtcChhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2Rl
IGNhc09wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNoQXRvbWljU3Ryb25nQ0FTLCBhdG9t
aWMtPm9wZXJhdGlvbldpZHRoKCkpOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChy
ZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwgbV9lYXgpOworICAg
ICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChjYXNPcGNvZGUsIG1fdmFsdWUsIEFyZzo6c3Rh
dHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCBuZXdWYWx1ZSwgYWRkcmVz
cyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0
KCkpOworICAgICAgICAgICAgVG1wIGJvb2xSZXN1bHQgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAg
ICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKGF0b21pYy0+b3Bl
cmF0aW9uV2lkdGgoKSwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbmV3VmFsdWUsIGFkZHJlc3MsIGJv
b2xSZXN1bHQpOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0MzIs
IEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIGJvb2xSZXN1bHQsIEFyZzo6Yml0
SW1tKC0xKSk7CisgICAgICAgIH0KKyAgICAgICAgcmVsb29wQmxvY2stPnNldFN1Y2Nlc3NvcnMo
ZG9uZUJsb2NrLCByZWxvb3BCbG9jayk7CisgICAgfQorICAgIAogICAgIHZvaWQgbG93ZXIoKQog
ICAgIHsKICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewpAQCAtMTk3MSwzMCAr
MjM2Miw1MCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBMb2FkOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG1vdmVG
b3JUeXBlKG1fdmFsdWUtPnR5cGUoKSksIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3Zh
bHVlKSkpOworICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IG1fdmFsdWUtPmFzPE1l
bW9yeVZhbHVlPigpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gQWlyOjpPb3Bz
OworICAgICAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgICAg
IHN3aXRjaCAobWVtb3J5LT50eXBlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEludDMyOgor
ICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNxMzI7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgSW50NjQ6CisgICAgICAgICAgICAgICAg
ICAgIG9wY29kZSA9IExvYWRBY3E2NDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgb3Bjb2RlID0gbW92ZUZv
clR5cGUobWVtb3J5LT50eXBlKCkpOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBMb2FkOFM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9h
ZDhTaWduZWRFeHRlbmRUbzMyLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkp
KTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZh
bHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIDogTG9hZDhTaWdu
ZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBv
cGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkOFo6IHsKLSAgICAgICAg
ICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDgsIG1fdmFsdWUsIGFkZHIobV92
YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0g
bV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOCA6IExvYWQ4
OworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFs
dWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZTOiB7Ci0gICAgICAgICAgICBhcHBlbmQo
dHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTZT
aWduZWRFeHRlbmRUbzMyIDogTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFw
cGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUp
LCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAg
ICAgIGNhc2UgTG9hZDE2WjogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3Zh
bHVlLCBMb2FkMTYsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAg
ICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkt
Pmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTYgOiBMb2FkMTY7CisgICAgICAgICAgICBhcHBlbmQodHJh
cHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1f
dmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQorICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA5Miw3ICsyNTAzLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0NoaWxsKCkpCiAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaXNBUk02NCgpKTsKICAgICAgICAgICAgIGlmIChpc0ludChtX3ZhbHVlLT50eXBl
KCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAgICBsb3dlclg4NkRpdihEaXYpOworICAg
ICAgICAgICAgICAgIGFwcGVuZFg4NkRpdihEaXYpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVCghaXNYODYoKSB8fCBpc0Zsb2F0KG1f
dmFsdWUtPnR5cGUoKSkpOwpAQCAtMjEwMyw3ICsyNTE0LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBjYXNlIFVEaXY6IHsKICAgICAgICAgICAgIGlmIChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYm
IGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAgICBsb3dlclg4NlVEaXYoVURpdik7CisgICAgICAg
ICAgICAgICAgYXBwZW5kWDg2VURpdihVRGl2KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAKQEAgLTIxMTcsMTMgKzI1MjgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBNb2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzWDg2KCkpOwogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdmFsdWUtPmlzQ2hpbGwoKSk7Ci0gICAgICAgICAgICBs
b3dlclg4NkRpdihNb2QpOworICAgICAgICAgICAgYXBwZW5kWDg2RGl2KE1vZCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFVNb2Q6IHsKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzWDg2KCkpOwotICAgICAgICAgICAgbG93ZXJYODZVRGl2KFVN
b2QpOworICAgICAgICAgICAgYXBwZW5kWDg2VURpdihVTW9kKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0yMTYyLDEwICsyNTczLDI0IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgYXBwZW5kVW5PcDxOb3QzMiwgTm90NjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMSkKKyAgICAgICAgICAgICAgICAm
JiBpc0F0b21pY0NBUyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAg
ICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAg
ICBjb21taXRJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBw
ZW5kQ0FTKG1fdmFsdWUtPmNoaWxkKDApLCB0cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPFhv
cjMyLCBYb3I2NCwgWG9yRG91YmxlLCBYb3JGbG9hdCwgQ29tbXV0YXRpdmU+KAogICAgICAgICAg
ICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERlcGVuZDog
eworICAgICAgICAgICAgYXBwZW5kVW5PcDxEZXBlbmQzMiwgRGVwZW5kNjQ+KG1fdmFsdWUtPmNo
aWxkKDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2Ug
U2hsOiB7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50MzIoMSkpIHsK
QEAgLTIyNjYsNyArMjY5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZVRvU3RvcmUsIGFkZHIobV92
YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjI4Nyw3ICsyNzEyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFpcjo6U3RvcmU4LCB2YWx1
ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1
ZSwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0yMzA4LDcgKzI3MzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTE2LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkp
OworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgdmFsdWVUb1N0b3JlLCBhZGRyKG1f
dmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDE2LDcgKzI4
NDEsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgRXF1YWw6Ci0gICAg
ICAgIGNhc2UgTm90RXF1YWw6CisgICAgICAgIGNhc2UgTm90RXF1YWw6IHsKKyAgICAgICAgICAg
IGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAg
ICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApID09IG1fdmFsdWUtPmNo
aWxkKDEpCisgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgw
KSkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUt
PmNoaWxkKDApLT5jaGlsZCgxKSkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQu
Y29udGFpbnMobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBjb21taXRJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAg
ICAgYXBwZW5kQ0FTKG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBOb3RF
cXVhbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNyZWF0ZUNvbXBhcmUo
bV92YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBMZXNzVGhhbjoKICAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAg
ICAgY2FzZSBMZXNzRXF1YWw6CkBAIC0yNzI3LDYgKzMxNjcsMzkgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2UgQnJhbmNoOiB7CisgICAgICAgICAgICBpZiAoY2FuQmVJbnRl
cm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogYnJhbmNo
Q2hpbGQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyYW5j
aENoaWxkLT5vcGNvZGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoK
KyAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQsIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBj
YXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICAgICAgLy8gQSBicmFuY2ggaXMg
YSBjb21wYXJpc29uIHRvIHplcm8uCisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGls
ZC0+Y2hpbGQoMCktPmlzSW50KDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJ
bnRlcm5hbChicmFuY2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMo
YnJhbmNoQ2hpbGQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBFcXVhbDoKKyAgICAgICAgICAgICAg
ICBjYXNlIE5vdEVxdWFsOgorICAgICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNo
aWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMKKyAgICAgICAgICAgICAgICAgICAg
ICAgICYmIGNhbkJlSW50ZXJuYWwoYnJhbmNoQ2hpbGQtPm9wY29kZSgwKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICYmIGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0gYnJhbmNo
Q2hpbGQtPmNoaWxkKDEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5h
bChicmFuY2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChi
cmFuY2hDaGlsZC0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FT
KGJyYW5jaENoaWxkLT5jaGlsZCgwKSwgYnJhbmNoQ2hpbGQtPm9wY29kZSgpID09IE5vdEVxdWFs
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKICAgICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChjcmVhdGVCcmFu
Y2gobV92YWx1ZS0+Y2hpbGQoMCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtMjc4NCw3ICszMjU3LDgxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBhcHBlbmQoQWlyOjpF
bnRyeVN3aXRjaCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgIGNhc2UgQXRvbWljU3Ryb25n
Q0FTOiB7CisgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZSwgZmFsc2UpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNY
Y2hnQWRkOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8
QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVf
Rk9SX1dJRFRIKEF0b21pY0FkZCwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBBcmcgYWRkcmVzcyA9
IGFkZHIoYXRvbWljKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9G
T1JfV0lEVEgoQXRvbWljWGNoZ0FkZCwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKTsKKyAgICAg
ICAgICAgIGlmIChpc1ZhbGlkT3Bjb2RlKG9wY29kZSwgQXJnOjpUbXAsIGFkZHJlc3MpKSB7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSks
IHRtcChhdG9taWMtPmNoaWxkKDApKSwgdG1wKGF0b21pYykpOworICAgICAgICAgICAgICAgIGFw
cGVuZChvcGNvZGUsIHRtcChhdG9taWMpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BD
T0RFX0ZPUl9XSURUSChBZGQsIGNhbm9uaWNhbFdpZHRoKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgo
KSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCisgICAgICAgIGNhc2UgQXRv
bWljWGNoZ1N1YjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUt
PmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BD
T0RFX0ZPUl9XSURUSChBdG9taWNTdWIsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2Vu
ZXJhbEF0b21pYyhPUENPREVfRk9SX1dJRFRIKFN1YiwgY2Fub25pY2FsV2lkdGgoYXRvbWljLT5v
cGVyYXRpb25XaWR0aCgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOiB7CisgICAgICAgICAgICBBdG9t
aWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAg
ICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY0FuZCwgYXRvbWlj
LT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQW5k
LCBjYW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hj
aGdPcjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0
b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZP
Ul9XSURUSChBdG9taWNPciwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRv
bWljKE9QQ09ERV9GT1JfV0lEVEgoT3IsIGNhbm9uaWNhbFdpZHRoKGF0b21pYy0+b3BlcmF0aW9u
V2lkdGgoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUq
IGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFw
cGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYb3IsIGF0b21pYy0+b3BlcmF0
aW9uV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX1dJRFRIKFhvciwgY2Fub25p
Y2FsV2lkdGgoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnOiB7Cisg
ICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMp
OworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChBdG9t
aWNYY2hnLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpOworICAgICAgICAgICAgaWYgKGlzVmFs
aWRPcGNvZGUob3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcykpIHsKKyAgICAgICAgICAgICAgICBh
cHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hp
bGQoMCkpLCB0bXAoYXRvbWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1w
KGF0b21pYyksIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVf
Rk9SX1dJRFRIKFhvciwgY2Fub25pY2FsV2lkdGgoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNzkyLDY0ICszMzM5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZGF0YUxvZygiRkFUQUw6IGNvdWxkIG5vdCBsb3dlciAi
LCBkZWVwRHVtcChtX3Byb2NlZHVyZSwgbV92YWx1ZSksICJcbiIpOwogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLQotICAgIHZvaWQgbG93ZXJYODZEaXYoQjM6
Ok9wY29kZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICAgICAg
VG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBlZHggPSBUbXAo
WDg2UmVnaXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJs
ZVdvcmQ7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKLSAgICAgICAgc3dpdGNoIChtX3ZhbHVl
LT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBJbnQzMjoKLSAgICAgICAgICAgIGNvbnZlcnRUb0Rv
dWJsZVdvcmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7Ci0gICAgICAgICAgICBkaXYgPSBY
ODZEaXYzMjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDY0OgotICAgICAg
ICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7Ci0gICAg
ICAgICAgICBkaXYgPSBYODZEaXY2NDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3Ag
PT0gTW9kKTsKLSAgICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09
IERpdiA/IFg4NlJlZ2lzdGVyczo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAg
YXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVu
ZChjb252ZXJ0VG9Eb3VibGVXb3JkLCBlYXgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVh
eCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRt
cChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOwotCi0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0o
b3ApOwotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZgotICAgIH0K
LQotICAgIHZvaWQgbG93ZXJYODZVRGl2KEIzOjpPcGNvZGUgb3ApCi0gICAgewotI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjpl
YXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4KTsKLQotICAgICAg
ICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIg
OiBYODZVRGl2NjQ7Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7
Ci0gICAgICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBVRGl2ID8g
WDg2UmVnaXN0ZXJzOjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQo
TW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKFhvcjY0
LCBlZHgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+
Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1
ZSkpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KKyAgICAKICAgICBJbmRleFNldDxW
YWx1ZT4gbV9sb2NrZWQ7IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCB3aWxsIGhhdmUgbm8gVG1w
IGluIEFpci4KICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3ZhbHVlVG9UbXA7IC8vIFRoZXNl
IGFyZSB2YWx1ZXMgdGhhdCBtdXN0IGhhdmUgYSBUbXAgaW4gQWlyLiBXZSBzYXkgdGhhdCBhIFZh
bHVlKiB3aXRoIGEgbm9uLW51bGwgVG1wIGlzICJwaW5uZWQiLgogICAgIEluZGV4TWFwPFZhbHVl
LCBUbXA+IG1fcGhpVG9UbXA7IC8vIEVhY2ggUGhpIGdldHMgaXRzIG93biBUbXAuCkBAIC0yODY0
LDcgKzMzNTQsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFZlY3RvcjxJbnN0LCA0Pj4gbV9p
bnN0czsKICAgICBWZWN0b3I8SW5zdD4gbV9wcm9sb2d1ZTsKLQorICAgIAogICAgIEIzOjpCYXNp
Y0Jsb2NrKiBtX2Jsb2NrOwogICAgIGJvb2wgbV9pc1JhcmU7CiAgICAgdW5zaWduZWQgbV9pbmRl
eDsKQEAgLTI4NzUsNiArMzM2NSwxMiBAQCBwcml2YXRlOgogCiAgICAgUHJvY2VkdXJlJiBtX3By
b2NlZHVyZTsKICAgICBDb2RlJiBtX2NvZGU7CisKKyAgICBBaXI6OkJsb2NrSW5zZXJ0aW9uU2V0
IG1fYmxvY2tJbnNlcnRpb25TZXQ7CisKKyAgICBUbXAgbV9lYXg7CisgICAgVG1wIG1fZWN4Owor
ICAgIFRtcCBtX2VkeDsKIH07CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCwzMCArMzQsNDggQEAgTWVtb3J5VmFsdWU6On5NZW1vcnlWYWx1ZSgpCiB7
CiB9CiAKK1R5cGUgTWVtb3J5VmFsdWU6OmFjY2Vzc1R5cGUoKSBjb25zdAoreworICAgIGlmIChp
c0xvYWQob3Bjb2RlKCkpKQorICAgICAgICByZXR1cm4gdHlwZSgpOworICAgIC8vIFRoaXMgaGFw
cGVucyB0byB3b3JrIGZvciBhdG9taWNzLCB0b28uIFRoYXQncyB3aHkgQXRvbWljVmFsdWUgZG9l
cyBub3QgbmVlZCB0byBvdmVycmlkZSB0aGlzLgorICAgIHJldHVybiBjaGlsZCgwKS0+dHlwZSgp
OworfQorCitCYW5rIE1lbW9yeVZhbHVlOjphY2Nlc3NCYW5rKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gYmFua0ZvclR5cGUoYWNjZXNzVHlwZSgpKTsKK30KKwogc2l6ZV90IE1lbW9yeVZhbHVlOjph
Y2Nlc3NCeXRlU2l6ZSgpIGNvbnN0CiB7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkp
OworfQorCitXaWR0aCBNZW1vcnlWYWx1ZTo6bG9hZFN0b3JlV2lkdGgoKSBjb25zdAorewogICAg
IHN3aXRjaCAob3Bjb2RlKCkpIHsKICAgICBjYXNlIExvYWQ4WjoKICAgICBjYXNlIExvYWQ4UzoK
ICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBXaWR0
aDg7CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKICAgICBjYXNlIFN0b3Jl
MTY6Ci0gICAgICAgIHJldHVybiAyOworICAgICAgICByZXR1cm4gV2lkdGgxNjsKICAgICBjYXNl
IExvYWQ6Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKHR5cGUoKSk7CisgICAgICAgIHJldHVy
biB3aWR0aEZvclR5cGUodHlwZSgpKTsKICAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1cm4g
c2l6ZW9mVHlwZShjaGlsZCgwKS0+dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlw
ZShjaGlsZCgwKS0+dHlwZSgpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdpZHRo
ODsKICAgICB9CiB9CiAKIFdpZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHdpZHRoRm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJu
IGxvYWRTdG9yZVdpZHRoKCk7CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1h
UHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02Nyw2ICs4NSw4IEBA
IHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYKICAgICBpZiAoKGlzTG9h
ZCgpICYmIGVmZmVjdHMoKS5yZWFkcyAhPSByYW5nZSgpKQogICAgICAgICB8fCAoaXNTdG9yZSgp
ICYmIGVmZmVjdHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkpCiAgICAgICAgIG91dC5wcmludChjb21t
YSwgInJhbmdlID0gIiwgcmFuZ2UoKSk7CisgICAgaWYgKHBoYW50b21SYW5nZSgpKQorICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJwaGFudG9tUmFuZ2UgPSAiLCBwaGFudG9tUmFuZ2UoKSk7CiB9
CiAKIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKQEAgLTc0LDYgKzk0LDU4
IEBAIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKICAgICByZXR1cm4gbmV3
IE1lbW9yeVZhbHVlKCp0aGlzKTsKIH0KIAorLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0
IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZm
aXggdGhhdAorLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KK01lbW9yeVZhbHVlOjpN
ZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtp
bmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkp
IHsKKyAgICAgICAgY2FzZSBMb2FkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
TG9hZDhaOgorICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAg
ICAgICBjYXNlIExvYWQxNlM6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3Rv
cmUxNjoKKyAgICAgICAgY2FzZSBTdG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZv
aWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMg
Zm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlW
YWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRl
ciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9y
aWdpbiwgcG9pbnRlciwgb2Zmc2V0KQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Cisg
ICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAg
ICAgICAgY2FzZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBM
b2FkMTZTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRo
aXMgZm9ybSBmb3Igc3RvcmVzLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwg
T3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZz
ZXQgPSAwKQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2
YWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBBU1NFUlQoaXNT
dG9yZShraW5kLm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNDggKzI3LDE3IEBACiAK
ICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNI
ZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxvdyBmZW5jZWQgbWVtb3J5IGFj
Y2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVtb3J5VmFsdWUgOiBwdWJsaWMg
VmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQogICAg
IHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgTG9hZDha
OgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAgICBj
YXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0g
ICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNTdG9yZShLaW5kIGtpbmQpCi0g
ICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgY2FzZSBTdG9y
ZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNMb2FkKEtpbmQga2lu
ZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQpICYmICFpc1N0b3JlKGtpbmQp
OworICAgICAgICByZXR1cm4gaXNNZW1vcnkoa2luZC5vcGNvZGUoKSk7CiAgICAgfQogCiAgICAg
fk1lbW9yeVZhbHVlKCk7CkBAIC03OCw3NiArNDcsNTYgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
SGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2U7IH0KICAgICB2b2lkIHNl
dFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9yYW5nZSA9IHJhbmdlOyB9CisgICAg
CisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgcmFuZ2UuCisgICAgY29uc3QgSGVhcFJhbmdl
JiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlKCk7IH0KKyAgICB2b2lkIHNldEFj
Y2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgc2V0UmFuZ2UocmFuZ2UpOyB9Cisg
ICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBmZW5jZVJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9m
ZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRGZW5jZVJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFu
Z2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0KKworICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0
IHsgcmV0dXJuIGlzU3RvcmUob3Bjb2RlKCkpOyB9CisgICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7
IHJldHVybiBpc0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAgICBib29sIGlzU3RvcmUoKSBjb25zdCB7
IHJldHVybiB0eXBlKCkgPT0gVm9pZDsgfQotICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1
cm4gdHlwZSgpICE9IFZvaWQ7IH0KKyAgICBib29sIGhhc0ZlbmNlKCkgY29uc3QgeyByZXR1cm4g
ISFmZW5jZVJhbmdlKCk7IH0KIAorICAgIFR5cGUgYWNjZXNzVHlwZSgpIGNvbnN0OworICAgIEJh
bmsgYWNjZXNzQmFuaygpIGNvbnN0OwogICAgIHNpemVfdCBhY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0
OwotICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CisgICAgCisgICAgLy8gU2xpZ2h0bHkg
ZmFzdGVyIHZlcnNpb24gb2YgYWNjZXNzV2lkdGgsIGlmIHlvdSBrbm93IHRoYXQgeW91J3JlIHdv
cmtpbmcgd2l0aCBhIGxvYWQgb3Igc3RvcmUuCisgICAgV2lkdGggbG9hZFN0b3JlV2lkdGgoKSBj
b25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3Ry
ZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQ
cmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNv
bnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0K
LSAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBv
ciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0Ci0gICAgLy8gZGVzY3Jp
YmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUg
dHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkK
LSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50
ZXIpCisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIE1lbW9y
eVZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3Jp
Z2luLCBpbnQzMl90IG9mZnNldCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBW
YWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKICAg
ICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRv
cCgpKQogICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAg
IHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBMb2FkOgotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgICAgICBj
YXNlIExvYWQ4UzoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgICAgIGNhc2Ug
TG9hZDE2UzoKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNh
c2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKHR5cGUgPT0gVm9pZCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9CiAgICAgfQorICAgIAorICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExv
YWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZl
IGEgc3VmZml4IHRoYXQKKyAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgorICAg
IE1lbW9yeVZhbHVlKEtpbmQsIFR5cGUsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qg
b2Zmc2V0ID0gMCk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUg
cmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdp
biBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDog
TWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQotICAgIHsK
LSAgICB9CisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwKTsKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KLSAg
ICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFs
dWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2Vk
T3Bjb2RlLCBraW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQotICAgICAgICAsIG1f
b2Zmc2V0KG9mZnNldCkKLSAgICAgICAgLCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCi0gICAg
ewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChr
aW5kLm9wY29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNh
c2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZh
bHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAogICAgIGludDMyX3QgbV9v
ZmZzZXQgeyAwIH07Ci0gICAgSGVhcFJhbmdlIG1fcmFuZ2U7CisgICAgSGVhcFJhbmdlIG1fcmFu
Z2UgeyBIZWFwUmFuZ2U6OnRvcCgpIH07CisgICAgSGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhl
YXBSYW5nZSgpIH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcg
QEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAi
QjNXaWR0aC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIApAQCAtODIsNyArODMsNiBAQCBlbnVtIE9wY29kZSA6IGludDE2X3Qgewog
ICAgIE1vZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBhcyB0byB3aGF0IHdpbGwgaGFwcGVuIHdoZW4g
eW91IGV4ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEgYW5kIHglMC4KICAgICBVTW9kLAogCi0KICAg
ICAvLyBQb2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90ZSB0aGF0IHdlIG9ubHkgbmVlZCB0aGlzIGZv
ciBmbG9hdGluZyBwb2ludCwgc2luY2UgaW50ZWdlciBuZWdhdGlvbgogICAgIC8vIGlzIGV4YWN0
bHkgbGlrZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mgbm90IHRydWUgZm9yIGZsb2F0aW5nIHBvaW50
LiBTdWIoMCwgMCkgaXMgMCwgd2hpbGUKICAgICAvLyBOZWcoMCkgaXMgLTAuIEFsc28sIHdlIGNh
bm9uaWNhbGl6ZSBTdWIoMCwgeCkgaW50byBOZWcoeCkgaW4gY2FzZSBvZiBpbnRlZ2Vycy4KQEAg
LTE2Miw2ICsxNjIsMTA3IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgU3RvcmUxNiwK
ICAgICAvLyBUaGlzIGlzIGEgcG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgRmxv
YXQsIGFuZCBEb3VibGUuCiAgICAgU3RvcmUsCisgICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUg
YW5kIHN3YXAgdGhhdCByZXR1cm5zIGEgYm9vbGVhbi4gTWF5IGNob29zZSB0byBkbyBub3RoaW5n
IGFuZCByZXR1cm4gZmFsc2UuIFlvdSBjYW4KKyAgICAvLyB1c3VhbGx5IGFzc3VtZSB0aGF0IHRo
aXMgaXMgZmFzdGVyIGFuZCByZXN1bHRzIGluIGxlc3MgY29kZSB0aGFuIEF0b21pY1N0cm9uZ0NB
UywgdGhvdWdoIHRoYXQncworICAgIC8vIG5vdCBuZWNlc3NhcmlseSB0cnVlIG9uIEludGVsLCBp
ZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gZG9lcyBpdHMgam9iLiBJbWFnaW5lIHRoYXQgdGhpcyBv
cGNvZGUgaXMKKyAgICAvLyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAvLwor
ICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gYm9vbCBBdG9taWNXZWFrQ0FTKFQg
ZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAg
aWYgKCFyYW5kKCkpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFJlYWwgd29ybGQg
ZXhhbXBsZSBvZiB0aGlzOiBjb250ZXh0IHN3aXRjaCBvbiBBUk0gd2hpbGUgZG9pbmcgQ0FTLgor
ICAgIC8vICAgICBpZiAoKnB0ciAhPSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIC8vICAgICAqcHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVy
biB0cnVlOworICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBhbGwgYXRvbWljcyBw
dXQgdGhlIHBvaW50ZXIgbGFzdCB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IGxvYWRzIGFuZCBz
dG9yZXMgd29yay4gVGhpcworICAgIC8vIGlzIGEgZ29vZnkgdHJhZGl0aW9uLCBidXQgaXQncyBo
YXJtbGVzcywgYW5kIGJldHRlciB0aGFuIGJlaW5nIGluY29uc2lzdGVudC4KKyAgICAvLworICAg
IC8vIE5vdGUgdGhhdCB3ZWFrIENBUyBoYXMgbm8gZmVuY2luZyBndWFyYW50ZWVzIHdoZW4gaXQg
ZmFpbHMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nCisgICAgLy8gdHJhbnNmb3JtYXRp
b24gaXMgYWx3YXlzIHZhbGlkOgorICAgIC8vCisgICAgLy8gQmVmb3JlOgorICAgIC8vCisgICAg
Ly8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAg
IC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICAvLwor
ICAgIC8vIEFmdGVyOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goRXF1YWwoTG9hZChw
dHIpLCBleHBlY3RlZCkpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojYXR0ZW1wdCwg
RWxzZTojZmFpbAorICAgIC8vICAgICBCQiNhdHRlbXB0OgorICAgIC8vICAgICAgICAgQnJhbmNo
KEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNz
b3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBCb3RoIGtpbmRz
IG9mIENBUyBmb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNikgaWdu
b3JlIHRoZSBpcnJlbGV2YW50IGJpdHMgb2YgdGhlCisgICAgLy8gaW5wdXQuCisgICAgQXRvbWlj
V2Vha0NBUywKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVy
bnMgdGhlIG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2ZSB0aGUgbm9uZGV0ZXJtaW5pc20gb2YgV2Vh
a0NBUy4KKyAgICAvLyBUaGlzIGlzIGEgYml0IG1vcmUgY29kZSBhbmQgYSBiaXQgc2xvd2VyIGlu
IHNvbWUgY2FzZXMsIHRob3VnaCBub3QgYnkgYSBsb3QuIEltYWdpbmUgdGhhdCB0aGlzCisgICAg
Ly8gb3Bjb2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAg
Ly8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBUIEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVj
dGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7CisgICAgLy8gICAgIFQgb2xk
VmFsdWUgPSAqcHRyOworICAgIC8vICAgICBpZiAob2xkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSkK
KyAgICAvLyAgICAgICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIG9sZFZh
bHVlCisgICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5k
IEF0b21pY1N0cm9uZ0NBUyBzb3J0IG9mIGhhdmUgdGhpcyBraW5kIG9mIGVxdWl2YWxlbmNlOgor
ICAgIC8vCisgICAgLy8gQXRvbWljV2Vha0NBUyhAZXhwLCBAbmV3LCBAcHRyKSA9PSBFcXVhbChB
dG9taWNTdHJvbmdDQVMoQGV4cCwgQG5ldywgQHB0ciksIEBleHApCisgICAgLy8KKyAgICAvLyBB
c3N1bWluZyB0aGF0IHRoZSBXZWFrQ0FTIGRvZXMgbm90IHNwdXJpb3VzbHkgZmFpbCwgb2YgY291
cnNlLgorICAgIEF0b21pY1N0cm9uZ0NBUywKKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IF9fXyBh
IG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRoZSBvbGQgdmFsdWUuIFN5bnRheDoKKyAgICAv
LworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGdfX18oQG9wZXJhbmQsIEBwdHIpCisgICAg
Ly8KKyAgICAvLyBGb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNiks
IHRoZXNlIHJldHVybiBzaWduLWV4dGVuZGVkIHJlc3VsdHMgYW5kIGlnbm9yZSB0aGUKKyAgICAv
LyBpcnJlbGV2YW50IGJpdHMgb2YgdGhlaXIgaW5wdXRzLgorICAgIEF0b21pY1hjaGdBZGQsCisg
ICAgQXRvbWljWGNoZ0FuZCwKKyAgICBBdG9taWNYY2hnT3IsCisgICAgQXRvbWljWGNoZ1N1YiwK
KyAgICBBdG9taWNYY2hnWG9yLAorICAgIAorICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQg
aGF2ZSBBdG9taWNYY2hnTmVnIGFuZCBBdG9taWNYY2hnTm90LgorICAgIAorICAgIC8vIEF0b21p
Y2FsbHkgZXhjaGFuZ2UgYSB2YWx1ZSB3aXRoIGEgbWVtb3J5IGxvY2F0aW9uLiBTeW50YXg6Cisg
ICAgLy8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNYY2hnKEBuZXdWYWx1ZSwgQHB0cikKKyAg
ICBBdG9taWNYY2hnLAorICAgIAorICAgIC8vIEludHJvZHVjZSBhbiBpbnZpc2libGUgZGVwZW5k
ZW5jeSBmb3IgYmxvY2tpbmcgbW90aW9uIG9mIGxvYWRzIHdpdGggcmVzcGVjdCB0byBlYWNoIG90
aGVyLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gRGVwZW5kKEBwaGFudG9tKQor
ICAgIC8vCisgICAgLy8gVGhpcyBpcyBldmVudHVhbGx5IGNvZGVnZW5lcmF0ZWQgdG8gaGF2ZSBs
b2NhbCBzZW1hbnRpY3MgYXMgaWYgd2UgZGlkOgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9ICQw
CisgICAgLy8KKyAgICAvLyBCdXQgaXQgZW5zdXJlcyB0aGF0IHRoZSB1c2VycyBvZiBAcmVzdWx0
IGNhbm5vdCBleGVjdXRlIHVudGlsIEBwaGFudG9tIGlzIGNvbXB1dGVkLgorICAgIC8vCisgICAg
Ly8gVGhlIGNvbXBpbGVyIGlzIG5vdCBhbGxvd2VkIHRvIHJlYXNvbiBhYm91dCB0aGUgZmFjdCB0
aGF0IERlcGVuZCBjb2RlZ2VuZXJhdGVzIHRoaXMgd2F5LiBBbnkga2luZAorICAgIC8vIG9mIHRy
YW5zZm9ybWF0aW9uIG9yIGFuYWx5c2lzIHRoYXQgcmVsaWVzIG9uIHRoZSBpbnNpZ2h0IHRoYXQg
RGVwZW5kIGlzIHJlYWxseSB6ZXJvIGlzIHVuc291bmQsCisgICAgLy8gYmVjYXVzZSBpdCB1bmxv
Y2tzIHJlb3JkZXJpbmcgb2YgdXNlcnMgb2YgQHJlc3VsdCBhbmQgQHBoYW50b20uCisgICAgLy8K
KyAgICAvLyBPbiBYODYsIHRoaXMgaXMgbG93ZXJlZCB0byBhIGxvYWQtbG9hZCBmZW5jZSBhbmQg
QHJlc3VsdCB1c2VzIEBwaGFudG9tIGRpcmVjdGx5LgorICAgIC8vCisgICAgLy8gT24gQVJNLCB0
aGlzIGlzIGxvd2VyZWQgYXMgaWYgbGlrZToKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSBCaXRY
b3IoQHBoYW50b20sIEBwaGFudG9tKQorICAgIC8vCisgICAgLy8gRXhjZXB0IHRoYXQgdGhlIGNv
bXBpbGVyIG5ldmVyIGdldHMgYW4gb3Bwb3J0dW5pdHkgdG8gc2ltcGxpZnkgb3V0IHRoZSBCaXRY
b3IuCisgICAgRGVwZW5kLAogCiAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIGFj
dHVhbCBhZGRyZXNzIG9mIGEgV2FzbSBtZW1vcnkgb3BlcmF0aW9uLiBJdCB0YWtlcyBhbiBJbnRQ
dHIKICAgICAvLyBhbmQgYSBwaW5uZWQgcmVnaXN0ZXIgdGhlbiBjb21wdXRlcyB0aGUgYXBwcm9w
cmlhdGUgSW50UHRyIGFkZHJlc3MuIEZvciB0aGUgdXNlLWNhc2Ugb2YKQEAgLTMwMSw2ICs0MDIs
MTEwIEBAIGlubGluZSBib29sIGlzRGVmaW5pdGVseVRlcm1pbmFsKE9wY29kZSAKICAgICB9CiB9
CiAKK2lubGluZSBib29sIGlzTG9hZChPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bj
b2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2Fk
MTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lu
bGluZSBib29sIGlzU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkg
eworICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0xvYWRTdG9yZShPcGNvZGUgb3Bjb2RlKQorewor
ICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6
CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6Cisg
ICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dp
dGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNT
dHJvbmdDQVM6CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0Fu
ZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAg
Y2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwor
aW5saW5lIGJvb2wgaXNBdG9taWNDQVMoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9w
Y29kZSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NB
UzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNYY2hnKE9wY29kZSBvcGNvZGUp
Cit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAg
Y2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRv
bWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hn
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc01lbW9yeUFjY2VzcyhPcGNvZGUgb3Bjb2Rl
KQoreworICAgIHJldHVybiBpc0F0b21pYyhvcGNvZGUpIHx8IGlzTG9hZFN0b3JlKG9wY29kZSk7
Cit9CisKK2lubGluZSBPcGNvZGUgc2lnbkV4dGVuZE9wY29kZShXaWR0aCB3aWR0aCkKK3sKKyAg
ICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiBTRXh0
ODsKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgIHJldHVybiBTRXh0MTY7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IE9vcHM7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNl
IFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsOCBAQCB2b2lkIFByb2NlZHVyZTo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjCiAgICAgICAgIH0KICAgICAgICAgZGF0YUxvZygiICAgICIs
IGRlZXBEdW1wKCp0aGlzLCB2YWx1ZSksICJcbiIpOwogICAgIH0KKyAgICBpZiAoaGFzUXVpcmtz
KCkpCisgICAgICAgIG91dC5wcmludCgiSGFzIFF1aXJrczogVHJ1ZVxuIik7CiAgICAgaWYgKHZh
cmlhYmxlcygpLnNpemUoKSkgewogICAgICAgICBvdXQucHJpbnQoIlZhcmlhYmxlczpcbiIpOwog
ICAgICAgICBmb3IgKFZhcmlhYmxlKiB2YXJpYWJsZSA6IHZhcmlhYmxlcygpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTcsNiArMTE3LDcgQEAgcHVibGljOgogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChPcmlnaW4s
IFR5cGUsIGludDY0X3QgdmFsdWUpOwogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChWYWx1ZSos
IGludDY0X3QgdmFsdWUpOwogCisgICAgLy8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20g
aXMgemVyby4KICAgICBWYWx1ZSogYWRkQm90dG9tKE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUq
IGFkZEJvdHRvbShWYWx1ZSopOwogCkBAIC0xOTUsNiArMTk2LDEyIEBAIHB1YmxpYzoKICAgICAv
LyBhbGl2ZS4gR3JlYXQgZm9yIGNvbXBpbGVyLWdlbmVyYXRlZCBkYXRhIHNlY3Rpb25zLCBsaWtl
IHN3aXRjaCBqdW1wIHRhYmxlcyBhbmQgY29uc3RhbnQgcG9vbHMuCiAgICAgLy8gVGhpcyByZXR1
cm5zIG1lbW9yeSB0aGF0IGhhcyBiZWVuIHplcm8taW5pdGlhbGl6ZWQuCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCogYWRkRGF0YVNlY3Rpb24oc2l6ZV90KTsKKyAgICAKKyAgICAvLyBTb21l
IG9wZXJhdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBCMyBJUiB0byBiZWhhdmUgb25lIHdheSBidXQg
b24gdGhpcyBnaXZlbiBDUFUgdGhleSBiZWhhdmUgYQorICAgIC8vIGRpZmZlcmVudCB3YXkuIFdo
ZW4gdHJ1ZSwgdGhvc2UgQjMgSVIgb3BzIHN3aXRjaCB0byBiZWhhdmluZyB0aGUgQ1BVIHdheSwg
YW5kIHRoZSBvcHRpbWl6ZXIgbWF5CisgICAgLy8gc3RhcnQgdGFraW5nIGFkdmFudGFnZSBvZiBp
dC4KKyAgICBib29sIGhhc1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUXVpcmtzOyB9Cisg
ICAgdm9pZCBzZXRIYXNRdWlya3MoYm9vbCB2YWx1ZSkgeyBtX2hhc1F1aXJrcyA9IHZhbHVlOyB9
CiAKICAgICBPcGFxdWVCeXByb2R1Y3RzJiBieXByb2R1Y3RzKCkgeyByZXR1cm4gKm1fYnlwcm9k
dWN0czsgfQogCkBAIC0yNTIsNiArMjU5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVk
VGFzazx2b2lkKFByaW50U3RyZWFtJiwgT3JpZ2luKT4+IG1fb3JpZ2luUHJpbnRlcjsKICAgICBj
b25zdCB2b2lkKiBtX2Zyb250ZW5kRGF0YTsKICAgICBQQ1RvT3JpZ2luTWFwIG1fcGNUb09yaWdp
bk1hcDsKKyAgICBib29sIG1faGFzUXVpcmtzIHsgZmFsc2UgfTsKIH07CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3Ry
ZW5ndGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZVN0cmVuZ3RoLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDIsNyArNjAyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnJlYWs7Ci0KKyAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIE5lZzoKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogTmVn
KGNvbnN0YW50KQogICAgICAgICAgICAgLy8gSW50byB0aGlzOiAtY29uc3RhbnQKQEAgLTEyOTUs
NiArMTI5NSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
ICghbV9wcm9jLmhhc1F1aXJrcygpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBT
RXh0OChBdG9taWNYY2hnX19fKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWlj
WGNoZ19fXworICAgICAgICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQo
MCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+
YXM8QXRvbWljVmFsdWU+KCktPm9wZXJhdGlvbldpZHRoKCkgPT0gV2lkdGg4KSB7CisgICAgICAg
ICAgICAgICAgICAgIHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNFeHQxNjoKQEAgLTEzNDMsNiAr
MTM1MywxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhhc1F1
aXJrcygpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0MTYoQXRvbWljWGNo
Z19fXykKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAg
ICAgICAgICAgICBpZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkK
KyAgICAgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVl
PigpLT5vcGVyYXRpb25XaWR0aCgpID09IFdpZHRoMTYpIHsKKyAgICAgICAgICAgICAgICAgICAg
cmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGNhc2UgU0V4dDMyOgpAQCAtMjEwMSwyMiArMjEyMSwyNSBAQCBw
cml2YXRlOgogICAgICAgICBBU1NFUlQobV92YWx1ZS0+bnVtQ2hpbGRyZW4oKSA+PSAyKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIExlYXZlIGl0IGFsb25lIGlmIHRoZSByaWdodCBjaGlsZCBpcyBh
IGNvbnN0YW50LgotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKSkK
KyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkKKyAgICAgICAgICAg
IHx8IG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCkt
PmlzQ29uc3RhbnQoKSkgeworICAgICAgICBhdXRvIHN3YXAgPSBbJl0gKCkgewogICAgICAgICAg
ICAgc3RkOjpzd2FwKG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAg
ICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+
aXNDb25zdGFudCgpKQorICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQor
ICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCiAgICAgICAgIC8vIFNvcnQgdGhl
IG9wZXJhbmRzLiBUaGlzIGlzIGFuIGltcG9ydGFudCBjYW5vbmljYWxpemF0aW9uLiBXZSB1c2Ug
dGhlIGluZGV4IGluc3RlYWQgb2YKICAgICAgICAgLy8gdGhlIGFkZHJlc3MgdG8gbWFrZSB0aGlz
IGF0IGxlYXN0IHNsaWdodGx5IGRldGVybWluaXN0aWMuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5j
aGlsZCgwKS0+aW5kZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEpLT5pbmRleCgpKSB7Ci0gICAgICAg
ICAgICBzdGQ6OnN3YXAobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAg
ICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hp
bGQoMSktPmluZGV4KCkpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOwogICAgIH0KIAogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgYSBmb3J3YXJkIGFuYWx5c2lzLiBJbnN0
ZWFkLCB3ZSB1c2VzIGEgYm91bmRlZC1zZWFyY2ggYmFja3dhcmRzCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw2
ICszNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNo
aWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1
ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAg
ICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIExvYWQ6CkBAIC0zNTMsNiArMzU0LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEs
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxk
KDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpICE9IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAg
dmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFN0b3JlODoKQEAgLTM2Miw2ICszNjQsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gSW50MzIsICgiQXQg
IiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50
eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRh
dGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFN0b3JlOgpAQCAtMzY5LDggKzM3Miw0OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2lu
dGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2
YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNz
KHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRvbWlj
V2Vha0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxs
KCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51
bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEp
LT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJ
bnQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCks
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUp
OworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDMs
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUo
KSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgp
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVl
LT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAgICAg
IHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hn
QW5kOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICBjYXNlIEF0
b21pY1hjaGdTdWI6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgICAg
ICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5k
KCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+
dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2
YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgRGVwZW5kOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2lu
ZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5
cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2
YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
IXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFs
dWUpKTsKQEAgLTUzNyw2ICs1ODEsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVGZW5jZShWYWx1ZSogdmFs
dWUpCisgICAgeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9y
eVZhbHVlPigpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKQorICAgICAgICAgICAg
VkFMSURBVEUobWVtb3J0eS0+YWNjZXNzQmFuaygpID09IEdQLCAoIkZlbmNlIGF0ICIsICptZW1v
cnkpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUF0b21pYyhWYWx1ZSogdmFsdWUp
CisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gdmFsdWUtPmFzPEF0b21pY1Zh
bHVlPigpOworICAgICAgICAKKyAgICAgICAgVkFMSURBVEUoYmVzdFR5cGUoYXRvbWljLT5vcGVy
YXRpb25XaWR0aCgpKSA9PSBhdG9taWMtPm9wZXJhdGlvblR5cGUoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICB9CiAKICAgICB2b2lkIHZhbGlkYXRlU3RhY2tBY2Nlc3MoVmFsdWUqIHZhbHVlKQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTEwLDYgKzUxMCw3IEBAIGJvb2wgVmFsdWU6OnJldHVybnNCb29sKCkgY29uc3QK
ICAgICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1
YWxPclVub3JkZXJlZDoKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGNhc2UgUGhpOgogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBz
dG9yeSBoZXJlLgpAQCAtNTg5LDYgKzU5MCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBj
b25zdAogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAg
ICAgY2FzZSBTZWxlY3Q6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTYwMCwxNiArNjAyLDQ0IEBAIEVmZmVjdHMgVmFs
dWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgTG9hZDE2WjoK
ICAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBMb2FkOgotICAgICAgICByZXN1bHQucmVhZHMg
PSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIExvYWQ6IHsKKyAgICAgICAg
TWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQu
cmVhZHMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPnBoYW50b21SYW5n
ZSgpKSB7CisgICAgICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5waGFudG9tUmFuZ2Uo
KTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAg
cmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgY2FzZSBTdG9yZTg6CiAgICAgY2FzZSBTdG9yZTE2OgotICAgIGNhc2UgU3RvcmU6Ci0gICAg
ICAgIHJlc3VsdC53cml0ZXMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNl
IFN0b3JlOiB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4o
KTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYg
KG1lbW9yeS0+cGhhbnRvbVJhbmdlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1l
bW9yeS0+cGhhbnRvbVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21p
Y1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hn
QW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAg
ICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgIE1l
bW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJl
YWRzID0gbWVtb3J5LT5yYW5nZSgpIHwgbWVtb3J5LT5waGFudG9tUmFuZ2UoKTsKKyAgICAgICAg
cmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2UoKSB8IG1lbW9ydHktPnBoYW50b21SYW5nZSgp
OworICAgICAgICBpZiAobWVtb3J5LT5waGFudG9tUmFuZ2UoKSkKKyAgICAgICAgICAgIHJlc3Vs
dC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsK
ICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIHJl
c3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpAQCAtNjE3LDE4ICs2NDcs
NyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICAgICAgY29uc3QgRmVuY2VW
YWx1ZSogZmVuY2UgPSBhczxGZW5jZVZhbHVlPigpOwogICAgICAgICByZXN1bHQucmVhZHMgPSBm
ZW5jZS0+cmVhZDsKICAgICAgICAgcmVzdWx0LndyaXRlcyA9IGZlbmNlLT53cml0ZTsKLSAgICAg
ICAgCi0gICAgICAgIC8vIFByZXZlbnQga2lsbGluZyBvZiBmZW5jZXMgdGhhdCBjbGFpbSBub3Qg
dG8gd3JpdGUgYW55dGhpbmcuIEl0J3MgYSBiaXQgd2VpcmQgdGhhdCB3ZSB1c2UKLSAgICAgICAg
Ly8gbG9jYWwgc3RhdGUgYXMgdGhlIHdheSB0byBkbyB0aGlzLCBidXQgaXQgaGFwcGVucyB0byB3
b3JrOiB3ZSBtdXN0IGFzc3VtZSB0aGF0IHdlIGNhbm5vdAotICAgICAgICAvLyBraWxsIHdyaXRl
c0xvY2FsU3RhdGUgdW5sZXNzIHdlIHVuZGVyc3RhbmRzIGV4YWN0bHkgd2hhdCB0aGUgaW5zdHJ1
Y3Rpb24gaXMgZG9pbmcgKGxpa2UKLSAgICAgICAgLy8gdGhlIHdheSB0aGF0IGZpeFNTQSB1bmRl
cnN0YW5kcyBTZXQvR2V0IGFuZCB0aGUgd2F5IHRoYXQgcmVkdWNlU3RyZW5ndGggYW5kIG90aGVy
cwotICAgICAgICAvLyB1bmRlcnN0YW5kIFVwc2lsb24pLiBUaGlzIHdvdWxkIG9ubHkgYmVjb21l
IGEgcHJvYmxlbSBpZiB3ZSBoYWQgc29tZSBhbmFseXNpcyB0aGF0IHdhcwotICAgICAgICAvLyBs
b29raW5nIHRvIHVzZSB0aGUgd3JpdGVzTG9jYWxTdGF0ZSBiaXQgdG8gaW52YWxpZGF0ZSBhIENT
RSBvdmVyIGxvY2FsIHN0YXRlIG9wZXJhdGlvbnMuCi0gICAgICAgIC8vIFRoZW4gYSBGZW5jZSB3
b3VsZCBsb29rIGJsb2NrLCBzYXksIHRoZSBlbGltaW5hdGlvbiBvZiBhIHJlZHVuZGFudCBHZXQu
IEJ1dCBpdCBsaWtlCi0gICAgICAgIC8vIHRoYXQncyBub3QgYXQgYWxsIGhvdyBvdXIgb3B0aW1p
emF0aW9ucyBmb3IgU2V0L0dldC9VcHNpbG9uL1BoaSB3b3JrIC0gdGhleSBncm9rIHRoZWlyCi0g
ICAgICAgIC8vIG9wZXJhdGlvbnMgZGVlcGx5IGVub3VnaCB0aGF0IHRoZXkgaGF2ZSBubyBuZWVk
IHRvIGNoZWNrIHRoaXMgYml0IC0gc28gdGhpcyBjaGVhdCBpcwotICAgICAgICAvLyBmaW5lLgot
ICAgICAgICByZXN1bHQud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CisgICAgICAgIHJlc3VsdC5m
ZW5jZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENDYWxsOgpAQCAt
Njk0LDYgKzcxMyw3IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNhc2UgQ2hl
Y2s6CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICBjYXNlIE5lZzoKKyAgICBjYXNlIERlcGVu
ZDoKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgpLCBjaGlsZCgwKSk7CiAg
ICAgY2FzZSBBZGQ6CiAgICAgY2FzZSBTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDEwIEBAIHB1YmxpYzoKICAgICAKICAg
ICBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLm9wY29kZSgpOyB9CiAgICAg
CisgICAgLy8gTm90ZSB0aGF0IHRoZSBraW5kIGlzIG1lYW50IHRvIGJlIGltbXV0YWJsZS4gRG8g
dGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgdGhpcyBpcyBzYWZlLiBJdCdzIG5vdAorICAgIC8vIHVz
dWFsbHkgc2FmZS4KKyAgICB2b2lkIHNldEtpbmRVbnNhZmVseShLaW5kIGtpbmQpIHsgbV9raW5k
ID0ga2luZDsgfQorICAgIAogICAgIC8vIEl0J3MgZ29vZCBwcmFjdGljZSB0byBtaXJyb3IgS2lu
ZCBtZXRob2RzIGhlcmUsIHNvIHlvdSBjYW4gc2F5IHZhbHVlLT5pc0JsYWgoKQogICAgIC8vIGlu
c3RlYWQgb2YgdmFsdWUtPmtpbmQoKS5pc0JsYWgoKS4KICAgICBib29sIGlzQ2hpbGwoKSBjb25z
dCB7IHJldHVybiBraW5kKCkuaXNDaGlsbCgpOyB9CkBAIC0xMDcsNiArMTExLDggQEAgcHVibGlj
OgogICAgIC8vIHZhbHVlcyB3aXRoIElkZW50aXRpZXMgb24gYm90dG9tIGNvbnN0YW50cy4gRm9y
IHRoaXMgcmVhc29uLCB0aGlzIHRha2VzIGEgY2FsbGJhY2sgdGhhdCBpcwogICAgIC8vIHJlc3Bv
bnNpYmxlIGZvciBjcmVhdGluZyBib3R0b21zLiBUaGVyZSdzIGEgdXRpbGl0eSBmb3IgdGhpcywg
c2VlIEIzQm90dG9tUHJvdmlkZXIuaC4gWW91CiAgICAgLy8gY2FuIGFsc28gYWNjZXNzIHRoYXQg
dXRpbGl0eSB1c2luZyByZXBsYWNlV2l0aEJvdHRvbShJbnNlcnRpb25TZXQmLCBzaXplX3QpLgor
ICAgIC8vCisgICAgLy8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBCb3R0b21Qcm92aWRlcj4KICAgICB2b2lkIHJlcGxhY2VXaXRo
Qm90dG9tKGNvbnN0IEJvdHRvbVByb3ZpZGVyJik7CiAgICAgCkBAIC0zMjEsNiArMzI3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBJVG9GOgogICAgICAgICBjYXNlIEJpdHdpc2VDYXN0Ogog
ICAgICAgICBjYXNlIEJyYW5jaDoKKyAgICAgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkobnVtQXJncyAhPSAxKSkKICAgICAgICAgICAgICAgICBiYWRLaW5kKGtpbmQs
IG51bUFyZ3MpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNXaWR0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzV2lkdGguY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNXaWR0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDM4IEBACiAKICNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAorbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
CisKK1R5cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2gg
KHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgY2FzZSBXaWR0aDE2OgorICAgIGNhc2Ug
V2lkdGgzMjoKKyAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNhc2UgR1A6CisgICAg
ICAgICAgICByZXR1cm4gSW50MzI7CisgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICByZXR1
cm4gRmxvYXQ7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIFZvaWQ7CisgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICBzd2l0
Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJldHVybiBJbnQ2NDsK
KyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBEb3VibGU7CisgICAgICAgIH0K
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFZv
aWQ7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IFZvaWQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCiBuYW1lc3BhY2UgV1RGIHsK
IAogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QjM6OldpZHRoIHdp
ZHRoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw2ICs2MiwxOCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JUeXBlKFR5cGUgdHlwZSkKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAoraW5saW5lIFdpZHRoIGNhbm9uaWNhbFdpZHRo
KFdpZHRoIHdpZHRoKQoreworICAgIHJldHVybiBzdGQ6Om1heChXaWR0aDMyLCB3aWR0aCk7Cit9
CisKK2lubGluZSBXaWR0aCBpc0Nhbm9uaWNhbFdpZHRoKFdpZHRoIHdpZHRoKQoreworICAgIHJl
dHVybiB3aWR0aCA+PSBXaWR0aDMyOworfQorCitUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lk
dGggd2lkdGgpOworCiBpbmxpbmUgV2lkdGggY29uc2VydmF0aXZlV2lkdGgoQmFuayBiYW5rKQog
ewogICAgIHJldHVybiBiYW5rID09IEdQID8gcG9pbnRlcldpZHRoKCkgOiBXaWR0aDY0OwpAQCAt
OTMsNiArMTA1LDIwIEBAIGlubGluZSBXaWR0aCB3aWR0aEZvckJ5dGVzKHVuc2lnbmVkIGJ5dGUK
ICAgICB9CiB9CiAKK2lubGluZSB1aW50NjRfdCBtYXNrKFdpZHRoIHdpZHRoKQoreworICAgIHN3
aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAw
MDAwMDAwMDBmZmxsdTsKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgIHJldHVybiAweDAwMDAw
MDAwMDAwMGZmZmZsbHU7CisgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICByZXR1cm4gMHgwMDAw
MDAwMGZmZmZmZmZmbGx1OworICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgcmV0dXJuIDB4ZmZm
ZmZmZmZmZmZmZmZmZmxsdTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwog
CiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QXJnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFy
Zy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQXJnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBAIHVuc2lnbmVkIEFy
Zzo6anNIYXNoKCkgY29uc3QKICAgICBjYXNlIFJlbENvbmQ6CiAgICAgY2FzZSBSZXNDb25kOgog
ICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgY2FzZSBXaWR0
aEFyZzoKICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMTgyLDYgKzE4Myw5IEBAIHZvaWQgQXJnOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgY2FzZSBEb3VibGVDb25kOgogICAgICAgICBvdXQucHJp
bnQoYXNEb3VibGVDb25kaXRpb24oKSk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0YXR1
c0NvbmQ6CisgICAgICAgIG91dC5wcmludChhc1N0YXR1c0NvbmRpdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgb3V0LnByaW50KHBvaW50ZXJEdW1w
KHNwZWNpYWwoKSkpOwogICAgICAgICByZXR1cm47CkBAIC0yNDEsNiArMjQ1LDkgQEAgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpEb3VibGVD
b25kOgogICAgICAgICBvdXQucHJpbnQoIkRvdWJsZUNvbmQiKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQXJnOjpTdGF0dXNDb25kOgorICAgICAgICBvdXQucHJpbnQoIlN0YXR1c0NvbmQi
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpTcGVjaWFsOgogICAgICAgICBvdXQu
cHJpbnQoIlNwZWNpYWwiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg1LDYgKzI5Miw5IEBAIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6RWFy
bHlEZWY6CiAgICAgICAgIG91dC5wcmludCgiRWFybHlEZWYiKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CisgICAgICAgIG91dC5wcmludCgiRWFybHlaRGVmIik7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAgb3V0LnBy
aW50KCJTY3JhdGNoIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQXJnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJBcmcuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBcmcuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFJlbENvbmQsCiAgICAgICAgIFJlc0NvbmQsCiAgICAgICAgIERvdWJsZUNv
bmQsCisgICAgICAgIFN0YXR1c0NvbmQsCiAgICAgICAgIFNwZWNpYWwsCiAgICAgICAgIFdpZHRo
QXJnCiAgICAgfTsKQEAgLTE1MSw2ICsxNTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGFzIFVz
ZSBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yOiB0aGUgdXNlIG1heSBoYXBwZW4gYmVmb3JlIHRoZSBk
ZWYsIG9yIGl0IG1heSBoYXBwZW4gYWZ0ZXIKICAgICAgICAgLy8gaXQuCiAgICAgICAgIEVhcmx5
RGVmLAorICAgICAgICAgICAgCisgICAgICAgIEVhcmx5WkRlZiwKIAogICAgICAgICAvLyBTb21l
IGluc3RydWN0aW9ucyBuZWVkIGEgc2NyYXRjaCByZWdpc3Rlci4gV2UgbW9kZWwgdGhpcyBieSBz
YXlpbmcgdGhhdCB0aGUgdGVtcG9yYXJ5IGlzCiAgICAgICAgIC8vIGRlZmluZWQgZWFybHkgYW5k
IHVzZWQgbGF0ZS4gVGhpcyByb2xlIGltcGxpZXMgdGhhdC4KQEAgLTE4Niw2ICsxODksNyBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAg
ICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTIwNiw2ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAg
Y2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5
WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIyOCw2ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNh
c2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVm
OgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiByb2xlOwogICAg
ICAgICBjYXNlIFVzZToKICAgICAgICAgICAgIHJldHVybiBDb2xkVXNlOwpAQCAtMjUzLDYgKzI1
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgY2FzZSBT
Y3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTI3NCw2ICsyODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRl
ZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAg
ICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5NCw2ICszMDIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgogICAgICAgICBjYXNl
IEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgY2FzZSBTY3JhdGNo
OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMxNSw2ICszMjQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgog
ICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMzMwLDYgKzM0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAg
ICAgICBjYXNlIExhdGVVc2U6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2Ug
RWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRV
c2U6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTgsNiArMzY5LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAg
IGNhc2UgVXNlWkRlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUz
Myw2ICs1NDUsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAor
ICAgIHN0YXRpYyBBcmcgc3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9u
IGNvbmRpdGlvbikKKyAgICB7CisgICAgICAgIEFyZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5t
X2tpbmQgPSBTdGF0dXNDb25kOworICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBjb25kaXRpb247
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgc3RhdGljIEFyZyBzcGVjaWFs
KEFpcjo6U3BlY2lhbCogc3BlY2lhbCkKICAgICB7CiAgICAgICAgIEFyZyByZXN1bHQ7CkBAIC02
NTgsMTIgKzY3OCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBraW5kKCkgPT0gRG91Ymxl
Q29uZDsKICAgICB9CiAKKyAgICBib29sIGlzU3RhdHVzQ29uZCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4ga2luZCgpID09IFN0YXR1c0NvbmQ7CisgICAgfQorCiAgICAgYm9vbCBpc0Nv
bmRpdGlvbigpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAgICAg
ICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3Vi
bGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg1MSw2
ICs4NzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBS
ZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29u
ZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC04NzIsNiArODk5LDcgQEAgcHVibGljOgogICAgICAgICBj
YXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVD
b25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2UgU3BlY2lhbDoKICAg
ICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgY2FzZSBJbnZhbGlkOgpAQCAtMTA1OCw2ICsx
MDg2LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVz
Q29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6
CiAgICAgICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMTE3Nyw2ICsxMjA2LDEyIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24+KG1fb2Zm
c2V0KTsKICAgICB9CiAgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbiBh
c1N0YXR1c0NvbmRpdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNTdGF0dXND
b25kKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlN0YXR1
c0NvbmRpdGlvbj4obV9vZmZzZXQpOworICAgIH0KKyAgICAKICAgICAvLyBUZWxscyB5b3UgaWYg
dGhlIEFyZyBpcyBpbnZlcnRpYmxlLiBPbmx5IGNvbmRpdGlvbiBhcmd1bWVudHMgYXJlIGludmVy
dGlibGUsIGFuZCBldmVuIGZvciB0aG9zZSwgdGhlcmUKICAgICAvLyBhcmUgYSBmZXcgZXhjZXB0
aW9ucyAtIG5vdGFibHkgT3ZlcmZsb3cgYW5kIFNpZ25lZC4KICAgICBib29sIGlzSW52ZXJ0aWJs
ZSgpIGNvbnN0CkBAIC0xMTg0LDYgKzEyMTksNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAo
a2luZCgpKSB7CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25k
OgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpp
c0ludmVydGlibGUoYXNSZXN1bHRDb25kaXRpb24oKSk7CkBAIC0xMjA0LDYgKzEyNDAsOCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gcmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0
KGFzUmVzdWx0Q29uZGl0aW9uKCkpKTsKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgogICAgICAg
ICAgICAgcmV0dXJuIGRvdWJsZUNvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc0RvdWJsZUNv
bmRpdGlvbigpKSk7CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKKyAgICAgICAgICAgIHJldHVy
biBzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNTdGF0dXNDb25kaXRpb24oKSkp
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNiArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5h
bWVzcGFjZQogCiBjb25zdCBjaGFyKiBjb25zdCBCYXNpY0Jsb2NrOjpkdW1wUHJlZml4ID0gIiMi
OwogCit2b2lkIEJhc2ljQmxvY2s6OnNldFN1Y2Nlc3NvcnMoQmFzaWNCbG9jayogYmxvY2spCit7
CisgICAgbV9zdWNjZXNzb3JzLnJlc2l6ZSgxKTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0gPSB0YXJn
ZXQ7Cit9CisKK3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sg
dGFrZW4sIEZyZXF1ZW50ZWRCbG9jayBub3RUYWtlbikKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVz
aXplKDIpOworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRha2VuOworICAgIG1fc3VjY2Vzc29yc1sx
XSA9IG5vdFRha2VuOworfQorCiBib29sIEJhc2ljQmxvY2s6OmFkZFByZWRlY2Vzc29yKEJhc2lj
QmxvY2sqIGJsb2NrKQogewogICAgIHJldHVybiBCMzo6YWRkUHJlZGVjZXNzb3IodGhpcywgYmxv
Y2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2Nr
LmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw5IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9zdWNj
ZXNzb3JzOyB9CiAgICAgU3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIHsgcmV0dXJuIG1fc3Vj
Y2Vzc29yczsgfQogCisgICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayk7Cisg
ICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jaywgRnJlcXVlbnRlZEJsb2NrKTsK
KwogICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7
IHJldHVybiBzdWNjZXNzb3IoaW5kZXgpLmJsb2NrKCk7IH0KICAgICBCYXNpY0Jsb2NrKiYgc3Vj
Y2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxv
Y2soKTsgfQogICAgIFN1Y2Nlc3NvckNvbGxlY3Rpb248QmFzaWNCbG9jaywgU3VjY2Vzc29yTGlz
dD4gc3VjY2Vzc29yQmxvY2tzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFpckJsb2Nr
SW5zZXJ0aW9uU2V0LmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQmFz
aWNCbG9jay5oIgorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29y
dC5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisK
K0Jsb2NrSW5zZXJ0aW9uU2V0OjpCbG9ja0luc2VydGlvblNldChDb2RlICZjb2RlKQorICAgIDog
R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KGNvZGUubV9ibG9ja3MpCit7Cit9CisKK0Jsb2NrSW5z
ZXJ0aW9uU2V0Ojp+QmxvY2tJbnNlcnRpb25TZXQoKQoreworfQorCit9IH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJ
bnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzR2VuZXJpY0Jsb2NrSXNuZXJ0aW9uU2V0Lmgi
CisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1l
c3BhY2UgQWlyIHsKKworY2xhc3MgSW5zZXJ0aW9uU2V0OworCit0eXBlZGVmIEdlbmVyaWNCbG9j
a0luc2VydGlvblNldDxCYXNpY0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247
CisKK2NsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2VydGlv
blNldDxCYXNpY0Jsb2NrPiB7CitwdWJsaWM6CisgICAgQmxvY2tJbnNlcnRpb25TZXQoQ29kZSYp
OworICAgIH5CbG9ja0luc2VydGlvblNldCgpOworICAgIAorICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgZXZlbnR1YWxseSBpbXBsZW1lbnQgQjM6OkJsb2NrSW5zZXJ0aW9uU2V0J3Mgc3BsaXRGb3J3
YXJkKCkuCit9OworCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAv
LyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJH
ZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw4IEBA
IHZvaWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAgICAgZGF0YUxvZygi
SW5pdGlhbCBhaXI6XG4iKTsKICAgICAgICAgZGF0YUxvZyhjb2RlKTsKICAgICB9CisgICAgCisg
ICAgc2ltcGxpZnlDRkcoY29kZSk7CiAKICAgICBsb3dlck1hY3Jvcyhjb2RlKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5v
cGNvZGVzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjY4LDI4ICs2NjgsMzgwIEBAIExvYWQ4IFU6Rzo4LCBaRDpHOjMy
CiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOCBVOkc6OCwgWkQ6Rzoz
MgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogU3RvcmU4IFU6Rzo4LCBEOkc6OAog
ICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKICAgICB4ODY6IEltbSwgSW5kZXgKICAgICB4
ODY6IEltbSwgQWRkcgogCitTdG9yZVJlbDggVTpHOjgsIEQ6Rzo4CisgICAgVG1wLCBJbmRleAor
ICAgIFRtcCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisK
IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAg
IEluZGV4LCBUbXAKIAorTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyCisg
ICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBMb2FkMTYgVTpHOjE2LCBaRDpHOjMyCiAg
ICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTYgVTpHOjE2LCBaRDpHOjMy
CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBMb2FkMTZTaWduZWRFeHRlbmRUbzMy
IFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFj
cTE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJ
bmRleCwgVG1wCisKIFN0b3JlMTYgVTpHOjE2LCBEOkc6MTYKICAgICBUbXAsIEluZGV4CiAgICAg
VG1wLCBBZGRyCiAKK1N0b3JlQWNxMTYgVTpHOjE2LCBEOkc6MTYKKyAgICBUbXAsIEluZGV4Cisg
ICAgVG1wLCBBZGRyCisKK0xvYWRBY3EzMiBVOkc6MzIgWkQ6RzozMgorICAgIFRtcCwgVG1wCisg
ICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCitTdG9yZVJlbDMyIFU6RzozMiBaRDpHOjMy
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAg
eDg2OiBJbW0sIEluZGV4CisKKzY0OiBMb2FkQWNxNjQgVTpHOjY0IFpEOkc6NjQKKyAgICBUbXAs
IFRtcAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworNjQ6IFN0b3JlUmVsNjQgVTpH
OjY0IFpEOkc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0s
IEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKworIyBUaGUgZmlyc3Qgb3BlcmFuZCBpcyByYXgu
Cit4ODY6IEF0b21pY1N0cm9uZ0NBUzggVTpHOjMyLCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjgsIFpE
Okc6OAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29u
ZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMTYgVTpHOjMy
LCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYsIFpEOkc6OAorICAgIFN0YXR1c0NvbmQsIFRtcCos
IFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisK
K3g4NjogQXRvbWljU3Ryb25nQ0FTMzIgVTpHOjMyLCBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIs
IFpEOkc6OAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVz
Q29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4Nl82NDogQXRvbWljU3Ryb25nQ0FTNjQg
VTpHOjMyLCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQsIFpEOkc6OAorICAgIFN0YXR1c0NvbmQs
IFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwg
VG1wCisKK3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjgKKyAgICBU
bXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3Ryb25n
Q0FTMTYgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2CisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAg
VG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzMyIFVEOkc6MzIsIFU6Rzoz
MiwgVUQ6RzozMgorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKwor
eDg2XzY0OiBBdG9taWNTdHJvbmdDQVM2NCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQKKyAgICBU
bXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWlj
U3Ryb25nQ0FTOCBVOkc6MzIsIFVEOkc6OCwgVTpHOjgsIFVEOkc6OCAvYnJhbmNoCisgICAgU3Rh
dHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRl
eAorCit4ODY6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2IFU6RzozMiwgVUQ6RzoxNiwgVTpHOjMy
LCBVRDpHOjE2IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FT
MzIgVTpHOjMyLCBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIgL2JyYW5jaAorICAgIFN0YXR1c0Nv
bmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKwor
eDg2XzY0OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwg
VUQ6Rzo2NCAvYnJhbmNoCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3Rh
dHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDggVTpHOjgsIFVEOkc6
OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogQXRvbWljQWRkMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRy
CisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBB
dG9taWNBZGQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY0FkZDY0IFU6
Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViOCBVOkc6OCwgVUQ6Rzo4CisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2OiBBdG9taWNTdWIxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJ
bW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1
YjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljU3ViNjQgVTpHOjY0LCBV
RDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBbmQ4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFk
ZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IEF0b21pY0FuZDE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMzIgVTpH
OjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNBbmQ2NCBVOkc6NjQsIFVEOkc6NjQK
KyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY09yOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNP
cjE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3IzMiBVOkc6MzIsIFVEOkc6
MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODZfNjQ6IEF0b21pY09yNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNYb3I4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjE2IFU6Rzox
NiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9yMzIgVTpHOjMyLCBVRDpHOjMyCisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2XzY0OiBBdG9taWNYb3I2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21p
Y05lZzggVUQ6Rzo4CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTmVnMTYgVUQ6
RzoxNgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05lZzMyIFVEOkc6MzIKKyAg
ICBBZGRyCisgICAgSW5kZXgKKworeDg2XzY0OiBBdG9taWNOZWc2NCBVRDpHOjY0CisgICAgQWRk
cgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTm90OCBVRDpHOjgKKyAgICBBZGRyCisgICAgSW5k
ZXgKKworeDg2OiBBdG9taWNOb3QxNiBVRDpHOjE2CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4
NjogQXRvbWljTm90MzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0
b21pY05vdDY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNYY2hn
QWRkOCBVRDpHOjgsIFVEOkc6OAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNYY2hnQWRkMTYgVUQ6RzoxNiwgVUQ6RzoxNgorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnQWRkMzIgVUQ6RzozMiwgVUQ6RzozMgorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYY2hnQWRkNjQgVUQ6Rzo2
NCwgVUQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNY
Y2hnOCBVRDpHOjgsIFVEOkc6OAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNYY2hnMTYgVUQ6RzoxNiwgVUQ6RzoxNgorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNYY2hnMzIgVUQ6RzozMiwgVUQ6RzozMgorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYY2hnNjQgVUQ6Rzo2NCwgVUQ6Rzo2
NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworYXJtNjQ6IExvYWRMaW5rOCBVOkc6
OCwgWkQ6Rzo4CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExp
bmtBY3E4IFU6Rzo4LCBaRDpHOjgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKKyMg
U3VwZXIgY29uZnVzaW5nIGZhY3Q6IHRoaXMgcmV0dXJucyAwIHRvIG1lYW4gc3VjY2VzcywgMSB0
byBtZWFuIGZhaWx1cmUuCithcm02NDogU3RvcmVDb25kOCBVOkc6OCwgRDpHOjgsIEVaRDpHOjgK
KyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVD
b25kUmVsOCBVOkc6OCwgRDpHOjgsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRt
cCwgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmsxNiBVOkc6MTYsIFpEOkc6MTYKKyAgICBB
ZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTE2IFU6RzoxNiwg
WkQ6RzoxNgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29u
ZDE2IFU6RzoxNiwgRDpHOjE2LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAs
IEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDE2IFU6RzoxNiwgRDpHOjE2LCBFWkQ6
Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExv
YWRMaW5rMzIgVTpHOjMyLCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAor
Cithcm02NDogTG9hZExpbmtBY3EzMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAg
ICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQzMiBVOkc6MzIsIEQ6RzozMiwgRVpEOkc6
OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9y
ZUNvbmRSZWwzMiBVOkc6MzIsIEQ6RzozMiwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisg
ICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGluazY0IFU6Rzo2NCwgWkQ6Rzo2NAor
ICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxNjQgVTpH
OjY0LCBaRDpHOjY0CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogU3Rv
cmVDb25kNjQgVTpHOjY0LCBEOkc6NjQsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAg
IFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsNjQgVTpHOjY0LCBEOkc6NjQs
IEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02
NDogRGVwZW5kMzIgVTpHOjMyLCBEOkc6MzIKKyAgICBUbXAsIFRtcAorCithcm02NDogRGVwZW5k
NjQgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcAorCiBDb21wYXJlMzIgVTpHOjMyLCBVOkc6
MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAKICAgICBSZWxD
b25kLCBUbXAsIEltbSwgVG1wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wdGltaXplQmxvY2tPcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNzcsNiArMTc3LDEwIEBAIHZvaWQgb3B0aW1pemVCbG9ja09y
ZGVyKENvZGUmIGNvZGUpCiAgICAgICAgIGNhc2UgQnJhbmNoU3ViNjQ6CiAgICAgICAgIGNhc2Ug
QnJhbmNoTmVnMzI6CiAgICAgICAgIGNhc2UgQnJhbmNoTmVnNjQ6CisgICAgICAgIGNhc2UgQnJh
bmNoQXRvbWljU3Ryb25nQ0FTODoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMx
NjoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMjoKKyAgICAgICAgY2FzZSBC
cmFuY2hBdG9taWNTdHJvbmdDQVM2NDoKICAgICAgICAgICAgIGlmIChjb2RlLmZpbmROZXh0Qmxv
Y2soYmxvY2spID09IGJsb2NrLT5zdWNjZXNzb3JCbG9jaygwKSAmJiBicmFuY2guYXJnc1swXS5p
c0ludmVydGlibGUoKSkgewogICAgICAgICAgICAgICAgIHN0ZDo6c3dhcChibG9jay0+c3VjY2Vz
c29yKDApLCBibG9jay0+c3VjY2Vzc29yKDEpKTsKICAgICAgICAgICAgICAgICBicmFuY2guYXJn
c1swXSA9IGJyYW5jaC5hcmdzWzBdLmludmVydGVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5j
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgdm9pZCBwYWRJbnRlcmZlcmVu
Y2UoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xl
LCBCYW5rLCBXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJvbGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAgICAgaGFzRWFybHlE
ZWYgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgQXJnOjpMYXRlVXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29k
ZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVDb2xkVXNlOgogICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHla
RGVmOgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogY29kZS5yZWdzSW5Q
cmlvcml0eU9yZGVyKGJhbmspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFz
ZXRCZWZvcmUuZ2V0KHJlZykgJiYgIXNldEFmdGVyLmdldChyZWcpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkocmV2aXNpb24gMjEy
OTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJi
CSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgZGVmIGxleChzdHIsIGZpbGVOYW1l
KQogZW5kCiAKIGRlZiBpc1JvbGUodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVE
KXwoWkQpfChVWkQpfChVQSl8KFMpKVxaLworICAgIHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8
KFpEKXwoVVpEKXwoVUEpfChTKXwoRUQpfChFWkQpfChMVSkpXFovCiBlbmQKIAogZGVmIGlzR0Yo
dG9rZW4pCkBAIC0xOTAsNyArMTkwLDcgQEAgZGVmIGlzR0YodG9rZW4pCiBlbmQKIAogZGVmIGlz
S2luZCh0b2tlbikKLSAgICB0b2tlbiA9fiAvXEEoKFRtcCl8KEltbSl8KEJpZ0ltbSl8KEJpdElt
bSl8KEJpdEltbTY0KXwoQWRkcil8KEluZGV4KXwoUmVsQ29uZCl8KFJlc0NvbmQpfChEb3VibGVD
b25kKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEoKFRtcCl8KEltbSl8KEJpZ0ltbSl8KEJpdEltbSl8
KEJpdEltbTY0KXwoQWRkcil8KEluZGV4KXwoUmVsQ29uZCl8KFJlc0NvbmQpfChEb3VibGVDb25k
KXwoU3RhdHVzQ29uZCkpXFovCiBlbmQKIAogZGVmIGlzQXJjaCh0b2tlbikKQEAgLTI2NCw3ICsy
NjQsNyBAQCBjbGFzcyBQYXJzZXIKIAogICAgIGRlZiBjb25zdW1lS2luZAogICAgICAgICByZXN1
bHQgPSB0b2tlbi5zdHJpbmcKLSAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQga2luZCAoSW1t
LCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgQWRkciwgSW5kZXgsIFJlbENvbmQsIFJl
c0NvbmQsIG9yIERvdWJsZUNvbmQpIikgdW5sZXNzIGlzS2luZChyZXN1bHQpCisgICAgICAgIHBh
cnNlRXJyb3IoIkV4cGVjdGVkIGtpbmQgKEltbSwgQmlnSW1tLCBCaXRJbW0sIEJpdEltbTY0LCBU
bXAsIEFkZHIsIEluZGV4LCBSZWxDb25kLCBSZXNDb25kLCBEb3VibGVDb25kLCBvciBTdGF0dXND
b25kKSIpIHVubGVzcyBpc0tpbmQocmVzdWx0KQogICAgICAgICBhZHZhbmNlCiAgICAgICAgIHJl
c3VsdAogICAgIGVuZApAQCAtNjUxLDYgKzY1MSwxMiBAQCB3cml0ZUgoIk9wY29kZVV0aWxzIikg
ewogICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZUFkZHIiCiAgICAgICAgICAgICAgICAg
d2hlbiAiUyIKICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3JhdGNoIgorICAgICAgICAg
ICAgICAgIHdoZW4gIkVEIgorICAgICAgICAgICAgICAgICAgICByb2xlID0gIkVhcmx5RGVmIgor
ICAgICAgICAgICAgICAgIHdoZW4gIkVaRCIKKyAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJF
YXJseVpEZWYiCisgICAgICAgICAgICAgICAgd2hlbiAiTFUiCisgICAgICAgICAgICAgICAgICAg
IHJvbGUgPSAiTGF0ZVVzZSIKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgZW5kCkBAIC04MTksNiArODI1LDcgQEAgd3JpdGVI
KCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgd2hlbiAiUmVsQ29uZCIKICAg
ICAgICAgICAgICAgICB3aGVuICJSZXNDb25kIgogICAgICAgICAgICAgICAgIHdoZW4gIkRvdWJs
ZUNvbmQiCisgICAgICAgICAgICAgICAgd2hlbiAiU3RhdHVzQ29uZCIKICAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkIGtpbmQ6ICN7a2lu
ZC5uYW1lfSIKICAgICAgICAgICAgICAgICBlbmQKQEAgLTExMDUsNiArMTExMiw4IEBAIHdyaXRl
SCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJh
cmdzWyN7aW5kZXh9XS5hc1Jlc3VsdENvbmRpdGlvbigpIgogICAgICAgICAgICAgICAgIHdoZW4g
IkRvdWJsZUNvbmQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRl
eH1dLmFzRG91YmxlQ29uZGl0aW9uKCkiCisgICAgICAgICAgICAgICAgd2hlbiAiU3RhdHVzQ29u
ZCIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNTdGF0
dXNDb25kaXRpb24oKSIKICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302941</attachid>
            <date>2017-02-28 09:35:07 -0800</date>
            <delta_ts>2017-02-28 10:48:03 -0800</delta_ts>
            <desc>so many x86 instructions</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>168871</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMiBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNCRTFFNjQ5REM0MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRDFFNjQ5REMyMDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAq
LzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhp
c1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAg
LTI3NjQsNiArMjc3MCwxMiBAQAogCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5r
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQmFuay5oOyBwYXRoID0gYjMv
QjNCYW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM2M0FEMUU2MEFFM0Mw
MEMxMzgzOSAvKiBCM1dpZHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEIzV2lkdGguY3BwOyBwYXRoID0gYjMvQjNXaWR0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2lkdGguaDsgcGF0aCA9IGIzL0IzV2lkdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjMxRTYzNDNFODAwQzEzODM5
IC8qIEIzQXRvbWljVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQjNBdG9taWNWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0F0b21pY1ZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNBdG9taWNWYWx1
ZS5oOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25T
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQuaDsgcGF0aCA9IGIzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJC
bG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBBaXJCbG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRp
b25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCQTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGIzL2Fpci9BaXJCbG9j
a0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCRDFF
NjQ5REMyMDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQzNDAwN0Q0QjE5IC8qIERl
YnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVi
dWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERDMTk4
MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTI5Miw2ICs1MzA0LDggQEAKIAkJCQkwRkVDODRCMzFCREFDRDg4MDA4MEZGNzQgLyog
YWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFs
dWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVn
VmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1
ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUu
aCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJ
CQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi8sCiAJCQkJMEZFQzg0QjYx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5jcHAgKi8sCkBAIC01MzU0LDYgKzUzNjgs
NyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5o
ICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywK
IAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oICovLAorCQkJCTBG
MkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oICov
LAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxv
Y2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3Bw
ICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5nZS5oICovLApA
QCAtNTQ2OSw2ICs1NDg0LDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWly
QXJnSW5saW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNp
Y0Jsb2NrLmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFzaWNC
bG9jay5oICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2Vy
dGlvblNldC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2Nr
SW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJs
b2NrV29ya2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC03MzI2LDYgKzczNDMsNyBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2OTg3
QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRDFFNjQ5REMyMDBDMTM4MzkgLyog
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAwRjg0
NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENENzBD
MDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJODY0
MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCkBAIC03MzU0LDgg
KzczNzIsOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxl
ck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJs
ZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9B
c3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIxIC8q
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0MxMDBG
ODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4NUE4
RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKQEAgLTc5
NTYsNiArNzk3NCw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3RDcxRDlEQzQ0MjAwMUI5ODI1IC8q
IEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0JDMUU2MzQ0MEMwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0MzgxQzAw
MTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUzNEMx
QTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxv
Yy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDQ3LDYgKzgwNjYsNyBAQAogCQkJCTQzNDIyQTYzMUMx
NThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQdHJWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNGNzAwQzEzODM5IC8qIEIzR2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOEUwRTFCRjAyNzZD
MDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRkMx
QzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRlVGFpbHMuaCBpbiBIZWFkZXJzICov
LApAQCAtODM2Niw2ICs4Mzg2LDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4NDQ3MjggLyog
REZHT1NSRXhpdEZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEzQjYwMDU2
N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50
b21JbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMxNEVGOTBBRjAw
QzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFQjE5RDBCQTdE
MDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAtOTc5Miw2ICs5
ODEzLDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
IAkJCQkwRkZBNTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9wY29kZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjJDNjNCRTFFNjQ5REM0MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDQ5MzdDMzFEREJFNjE0MDA3N0M4MDcgLyog
QWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUYwRjQxNEQx
MDYzOTAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM3MEI0
RjUxQkYyNjIwMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI0OCw2ICsxMDI3MCw3IEBACiAJCQkJ
OUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTEx
ODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQwRTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3Rl
ZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMjY2LDYgKzEwMjg5LDcgQEAK
IAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAv
KiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRC
NjExODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBBMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25T
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIElu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NG
ODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIKKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisKKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIHN3aXRj
aCAoY29uZGl0aW9uKSB7CisgICAgY2FzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNz
OgorICAgICAgICBvdXQucHJpbnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6RmFpbHVyZToKKyAgICAgICAgb3V0LnByaW50KCJG
YWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODksNiArODksMjMgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gVGltZXNFaWdodDsKICAgICB9CiAgICAgCisgICAgZW51bSBTdGF0dXNDb25k
aXRpb24geworICAgICAgICBTdWNjZXNzLAorICAgICAgICBGYWlsdXJlCisgICAgfTsKKyAgICAK
KyAgICBzdGF0aWMgU3RhdHVzQ29uZGl0aW9uIGludmVydChTdGF0dXNDb25kaXRpb24gY29uZGl0
aW9uKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICAgICAgY2FzZSBT
dWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIEZhaWx1cmU7CisgICAgICAgIGNhc2UgRmFpbHVy
ZToKKyAgICAgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgIH0K
KyAgICAKICAgICBzdHJ1Y3QgQmFzZUluZGV4OwogICAgIAogICAgIC8vIEFkZHJlc3M6CkBAIC0x
MTA4LDMgKzExMjUsMTYgQEAgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlLCBN
YQogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQworCisj
aWYgRU5BQkxFKEFTU0VNQkxFUikKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3Ry
ZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisj
ZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQzLDcgKzI3NDMsNjYxIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5vcmxfaW0oMCwgMCwgWDg2UmVnaXN0ZXJzOjplc3ApOwogICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdp
c3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBl
Y3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAg
ICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZd
IHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgewor
ICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwg
WyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGds
X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQor
CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhj
aGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdD
QVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFu
ZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9u
Z0NBUzgoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0
ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsg
fSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2
b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0o
bmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRv
bWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hn
bF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ry
b25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3Vs
dCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9
KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21p
Y1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21w
eGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CiAKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0
LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25n
Q0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZd
IHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQs
IGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBl
Y3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
OyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBB
ZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWlj
U3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJl
c3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRv
bWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3Ms
IHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBh
dG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJl
c3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwg
YWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVMzMihTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1
ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVMzMihT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5l
d1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
V2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBu
ZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FT
OChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFs
dWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzE2KFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJh
bmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBh
ZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVMxNihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRy
ZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVMzMihTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFk
ZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhZGQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljQWRkOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ4KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFkZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMTYoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhZGQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKHJlZywgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBhZGQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1
YjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChpbW0s
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgc3ViOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N1YjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWIxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWIxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMy
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIzMihSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBzdWIzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1N1YjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5k
OChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoVHJ1c3Rl
ZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNBbmQ4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDgocmVnLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YW5kOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQxNihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FuZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMy
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIGFuZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljQW5kMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIocmVnLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJlZywgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIGFuZDMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljT3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoUmVnaXN0ZXJJRCByZWcsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgb3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFJl
Z2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgb3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljT3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3Ix
NihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBvcjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljT3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVnLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFRydXN0ZWRJbW0zMiBpbW0s
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgb3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09y
MzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMzIocmVnLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFJlZ2lzdGVySUQgcmVn
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgb3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1hvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoUmVnaXN0ZXJJ
RCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgeG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hvcjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Ix
NihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hvcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KHJlZywgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICB4b3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hv
cjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIo
aW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihSZWdpc3Rl
cklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1hvcjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIocmVnLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc4KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnOChhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc4KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc4KGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzE2KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMTYoYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMTYoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2KGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzMyKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMzIoYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMzIoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMyKGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDgoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY05vdDgoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDgoYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljTm90MTYoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QxNihhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNOb3QxNihCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljTm90MzIoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QzMihhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNOb3QzMihCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZ0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGR3X3JtKHJlZywg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljWGNoZ0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZHdfcm0o
cmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMzIoUmVnaXN0ZXJJ
RCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMzIoUmVnaXN0
ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxl
ci54Y2hnYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGcxNihS
ZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShyZWcsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGcxNihS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGd3X3JtKHJlZywgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCiAgICAgLy8gV2UgdGFrZSB0
aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIHN0b3Jlcy4gU28s
IGl0J3MgYSBuby1vcCBvbiB4ODYuCiAgICAgdm9pZCBzdG9yZUZlbmNlKCkKICAgICB7CkBAIC0y
ODMxLDYgKzM0ODUsMTggQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
WDg2QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOwogICAgIH0KIAorICAgIFg4NkFzc2VtYmxl
cjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihTdGF0dXNDb25kaXRpb24gY29uZCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAgICAg
ICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25FOworICAgICAgICBjYXNlIEZhaWx1cmU6
CisgICAgICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25ORTsKKyAgICAgICAg
fQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
WDg2QXNzZW1ibGVyOjpDb25kaXRpb25FOworICAgIH0KKwogICAgIHZvaWQgc2V0MzIoWDg2QXNz
ZW1ibGVyOjpDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICNpZiBDUFUo
WDg2KQpAQCAtMjkyNSw2ICszNTkxLDM1IEBAIHByb3RlY3RlZDoKICAgICAgICAgbW92ZShUcnVz
dGVkSW1tMzIoc2l6ZU9mUmVnaXN0ZXIpLCBkc3QpOwogICAgICAgICBzcmNJc05vblplcm8ubGlu
ayh0aGlzKTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2
b2lkIGF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCByZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAg
eworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVuYygpOworICAgICAgICBzd2Fw
KGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIHNldDMyKHg4
NkNvbmRpdGlvbihjb25kKSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVkQW5k
UmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgZnVuYygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdp
c3RlcnM6OmVheCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICBK
dW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3
YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRS
ZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KIAogcHJpdmF0ZToKICAgICAvLyBP
bmx5IE1hY3JvQXNzZW1ibGVyWDg2IHNob3VsZCBiZSB1c2luZyB0aGUgZm9sbG93aW5nIG1ldGhv
ZDsgU1NFMiBpcyBhbHdheXMgYXZhaWxhYmxlIG9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lv
biAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOTQsNyArMTI5NCwyMTMgQEAgcHVibGlj
OgogICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGFk
ZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAgICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0
ZXIoKSksIG1hc2s4KTsKICAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIGF0b21pY3NTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNzU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBy
ZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7Cisg
ICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBhdG9taWNzU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0p
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBhdG9taWNzU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fz
c2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNzU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY3NTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRB
bmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNzU3Ry
b25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0
KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFz
ZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWlj
c1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJl
c3VsdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNzU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQogCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY3NT
dHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAg
ICB9CisKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQo
aW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChUcnVzdGVk
SW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2NChyZWcsIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI2
NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoUmVnaXN0ZXJJ
RCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
bmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFRy
dXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDY0KHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoUmVnaXN0ZXJJRCByZWcs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoUmVnaXN0ZXJJ
RCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2
NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjY0KHJlZywgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05l
ZzY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVn
NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05v
dDY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90
NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hj
aGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkcV9ybShyZWcsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRxX3JtKHJl
ZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgfQorICAgIAogICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci5jdnR0c2Qyc2lxX3JyKHNyYywgZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIyMyw2ICsyMjMsNyBAQCBwcml2YXRlOgogICAgICAgICBPUF9HUk9VUDFfRXZJYiAgICAg
ICAgICAgICAgICAgID0gMHg4MywKICAgICAgICAgT1BfVEVTVF9FYkdiICAgICAgICAgICAgICAg
ICAgICA9IDB4ODQsCiAgICAgICAgIE9QX1RFU1RfRXZHdiAgICAgICAgICAgICAgICAgICAgPSAw
eDg1LAorICAgICAgICBPUF9YQ0hHX0V2R2IgICAgICAgICAgICAgICAgICAgID0gMHg4NiwKICAg
ICAgICAgT1BfWENIR19Fdkd2ICAgICAgICAgICAgICAgICAgICA9IDB4ODcsCiAgICAgICAgIE9Q
X01PVl9FYkdiICAgICAgICAgICAgICAgICAgICAgPSAweDg4LAogICAgICAgICBPUF9NT1ZfRXZH
diAgICAgICAgICAgICAgICAgICAgID0gMHg4OSwKQEAgLTI5MCw2ICsyOTEsOCBAQCBwcml2YXRl
OgogICAgICAgICBPUF9TRVRDQyAgICAgICAgICAgID0gMHg5MCwKICAgICAgICAgT1AyXzNCWVRF
X0VTQ0FQRV9BRSA9IDB4QUUsCiAgICAgICAgIE9QMl9JTVVMX0d2RXYgICAgICAgPSAweEFGLAor
ICAgICAgICBPUDJfQ01QWENIR2IgICAgICAgID0gMHhCMCwKKyAgICAgICAgT1AyX0NNUFhDSEcg
ICAgICAgICA9IDB4QjEsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkViICAgICAgPSAweEI2LAogICAg
ICAgICBPUDJfQlNGICAgICAgICAgICAgID0gMHhCQywKICAgICAgICAgT1AyX1RaQ05UICAgICAg
ICAgICA9IDB4QkMsCkBAIC0yOTgsNiArMzAxLDggQEAgcHJpdmF0ZToKICAgICAgICAgT1AyX01P
VlNYX0d2RWIgICAgICA9IDB4QkUsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkV3ICAgICAgPSAweEI3
LAogICAgICAgICBPUDJfTU9WU1hfR3ZFdyAgICAgID0gMHhCRiwKKyAgICAgICAgT1AyX1hBRERi
ICAgICAgICAgICA9IDB4QzAsCisgICAgICAgIE9QMl9YQUREICAgICAgICAgICAgPSAweEMxLAog
ICAgICAgICBPUDJfUEVYVFJXX0dkVWRJYiAgID0gMHhDNSwKICAgICAgICAgT1AyX1BTTExRX1Vk
cUliICAgICA9IDB4NzMsCiAgICAgICAgIE9QMl9QU1JMUV9VZHFJYiAgICAgPSAweDczLApAQCAt
MTU4NiwxMSArMTU5MSwzOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfWENIR19Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnYl9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBvZmZz
ZXQpOworICAgIH0KKworICAgIHZvaWQgeGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAg
dm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KwogICAgIHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2
R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhjaGdsX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hH
X0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogI2lmIENQ
VShYODZfNjQpCiAgICAgdm9pZCB4Y2hncV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
c3QpCiAgICAgewpAQCAtMjc3NSw2ICsyODA3LDkwIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9MT0NLKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbXB4Y2hnYl9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENIR2IsIHNyYywgYmFzZSwgb2Zm
c2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hHYiwgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21w
eGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdsX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQUREYiwgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQs
IHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkbF9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hB
REQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIHhhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfWEFERCwgc3JjLCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRxX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9YQURELCBz
cmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBt
ZmVuY2UoKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudGhyZWVCeXRlT3AoT1AyXzNCWVRF
X0VTQ0FQRV9BRSwgT1AzX01GRU5DRSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNBdG9taWNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQXRvbWljVmFsdWUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKKworI2lmIEVOQUJMRShCM19KSVQp
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitBdG9taWNWYWx1ZTo6fkF0b21p
Y1ZhbHVlKCkKK3sKK30KKworV2lkdGggQXRvbWljVmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV93aWR0aDsKK30KKwordm9pZCBBdG9taWNWYWx1ZTo6ZHVtcE1ldGEo
Q29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQu
cHJpbnQoY29tbWEsICJ3aWR0aCA9ICIsIG1fd2lkdGgpOworICAgIAorICAgIE1lbW9yeVZhbHVl
OjpkdW1wTWV0YShjb21tYSwgb3V0KTsKK30KKworVmFsdWUqIEF0b21pY1ZhbHVlOjpjbG9uZUlt
cGwoKSBjb25zdAoreworICAgIHJldHVybiBuZXcgQXRvbWljVmFsdWUoKnRoaXMpOworfQorCitB
dG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3
aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAp
CisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBvcGVyYW5kLT50eXBlKCks
IG9yaWdpbiwgb2Zmc2V0LCBvcGVyYW5kLCBwb2ludGVyKQorICAgICwgbV93aWR0aCh3aWR0aCkK
K3sKKyAgICBzZXRGZW5jZVJhbmdlKEhlYXBSYW5nZTo6dG9wKCkpOworICAgIAorICAgIEFTU0VS
VChiZXN0VHlwZShvcGVyYXRpb25XaWR0aCgpKSA9PSBvcGVyYXRpb25UeXBlKCkpOworICAgIAor
ICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAg
ICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBB
dG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hj
aGc6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KK30KKworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwg
T3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSog
bmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgOiBNZW1v
cnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBraW5kLm9wY29kZSgpID09IEF0b21pY1dlYWtD
QVMgPyBJbnQzMiA6IGV4cGVjdGVkVmFsdWUtPnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIGV4cGVj
dGVkVmFsdWUsIG5ld1ZhbHVlLCBwb2ludGVyKQorICAgICwgbV93aWR0aCh3aWR0aCkKK3sKKyAg
ICBzZXRGZW5jZVJhbmdlKEhlYXBSYW5nZTo6dG9wKCkpOworICAgIAorICAgIEFTU0VSVChiZXN0
VHlwZShvcGVyYXRpb25XaWR0aCgpKSA9PSBvcGVyYXRpb25UeXBlKCkpOworCisgICAgc3dpdGNo
IChraW5kLm9wY29kZSgpKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRv
bWljU3Ryb25nQ0FTOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwor
CisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNBdG9taWNWYWx1ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNs
dWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBBdG9taWNWYWx1ZSA6IHB1YmxpYyBNZW1vcnlWYWx1ZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCisgICAgeworICAgICAg
ICByZXR1cm4gaXNBdG9taWMoa2luZC5vcGNvZGUoKSk7CisgICAgfQorICAgIAorICAgIH5BdG9t
aWNWYWx1ZSgpOworICAgIAorICAgIFR5cGUgb3BlcmF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IGNoaWxkKDApLT50eXBlKCk7IH0KKyAgICAKKyAgICBXaWR0aCBvcGVyYXRpb25XaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICAKKyAgICAvLyBTeW5vbnltIGZvciB3aWR0aCgp
LCBpZiB5b3UncmUgYWNjZXNzaW5nIHZpYSBNZW1vcnlWYWx1ZS4KKyAgICBXaWR0aCBhY2Nlc3NX
aWR0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJvdGVjdGVkOgorICAgIHZvaWQgZHVtcE1l
dGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICAKKyAg
ICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCitwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3Jp
Z2luLCBXaWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNl
dCA9IDApOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtpbmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVl
KiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90
IG9mZnNldCA9IDApOworICAgIAorICAgIFdpZHRoIG1fd2lkdGg7Cit9OworCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAJKHJldmlz
aW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwzNSArMzYsMTMgQEAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgewogCiBCbG9ja0luc2VydGlvblNldDo6QmxvY2tJbnNlcnRpb25TZXQoUHJv
Y2VkdXJlICZwcm9jKQotICAgIDogbV9wcm9jKHByb2MpCisgICAgOiBHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQocHJvYy5tX2Jsb2NrcykKKyAgICAsIG1fcHJvYyhwcm9jKQogewogfQogCiBCbG9j
a0luc2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KCkgeyB9CiAKLXZvaWQgQmxvY2tJbnNl
cnRpb25TZXQ6Omluc2VydChCbG9ja0luc2VydGlvbiYmIGluc2VydGlvbikKLXsKLSAgICBtX2lu
c2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7Ci19Ci0KLUJhc2ljQmxvY2sqIEJs
b2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kp
Ci17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+IGJsb2NrKG5ldyBCYXNpY0Jsb2Nr
KFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKLSAgICBCYXNpY0Jsb2NrKiByZXN1bHQgPSBibG9jay5n
ZXQoKTsKLSAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2spKSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6
Omluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0g
ICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kg
PyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsKLX0KLQotQmFzaWNCbG9jayogQmxv
Y2tJbnNlcnRpb25TZXQ6Omluc2VydEFmdGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJl
cXVlbmN5KQotewotICAgIHJldHVybiBpbnNlcnQoYWZ0ZXItPmluZGV4KCkgKyAxLCBmcmVxdWVu
Y3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYWZ0ZXItPmZyZXF1ZW5jeSgpKTsKLX0KLQog
QmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6OnNwbGl0Rm9yd2FyZCgKICAgICBCYXNpY0Js
b2NrKiBibG9jaywgdW5zaWduZWQmIHZhbHVlSW5kZXgsIEluc2VydGlvblNldCogaW5zZXJ0aW9u
U2V0LCBkb3VibGUgZnJlcXVlbmN5KQogewpAQCAtMTAyLDMyICs4MCw2IEBAIEJhc2ljQmxvY2sq
IEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcncKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1i
b29sIEJsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKCkKLXsKLSAgICBpZiAobV9pbnNlcnRpb25z
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIC8vIFdlIGFsbG93
IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4gYW55IG9yZGVyLiBTbywgd2UgbmVlZCB0
byBzb3J0IHRoZW0gYmVmb3JlCi0gICAgLy8gcnVubmluZyBXVEY6OmV4ZWN1dGVJbnNlcnRpb25z
LiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBhbmQgd2Ugd2FudCBpdCB0byBiZQot
ICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBidWJibGUgc29ydC4KLSAgICBidWJibGVTb3J0KG1faW5z
ZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOwotCi0gICAgZXhlY3V0ZUluc2Vy
dGlvbnMobV9wcm9jLm1fYmxvY2tzLCBtX2luc2VydGlvbnMpOwotICAgIAotICAgIC8vIFBydW5l
IG91dCBlbXB0eSBlbnRyaWVzLiBUaGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQn
cwotICAgIC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxvY2sgbGlzdCBmcm9tIGdyb3dpbmcuCi0g
ICAgbV9wcm9jLm1fYmxvY2tzLnJlbW92ZUFsbE1hdGNoaW5nKAotICAgICAgICBbJl0gKHN0ZDo6
dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+IGJvb2wgewotICAgICAgICAgICAg
cmV0dXJuICFibG9ja1B0cjsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2VzLgotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3Byb2MubV9ibG9ja3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcHJvYy5t
X2Jsb2Nrc1tpXS0+bV9pbmRleCA9IGk7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRp
b25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShC
M19KSVQpCiAKKyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIgogI2luY2x1
ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTM1LDI2ICszNiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsKIAogY2xhc3MgSW5zZXJ0aW9uU2V0OwogCi10eXBlZGVmIFdURjo6SW5zZXJ0aW9u
PHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4gQmxvY2tJbnNlcnRpb247Cit0eXBlZGVmIEdl
bmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJ
bnNlcnRpb247CiAKLWNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IHsKK2NsYXNzIEJsb2NrSW5zZXJ0
aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPiB7CiBw
dWJsaWM6CiAgICAgQmxvY2tJbnNlcnRpb25TZXQoUHJvY2VkdXJlJik7CiAgICAgfkJsb2NrSW5z
ZXJ0aW9uU2V0KCk7CiAgICAgCi0gICAgdm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJik7Ci0K
LSAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQgYSBnaXZlbiBpbmRleC4KLSAgICBCYXNpY0Js
b2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQot
ICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1YWxs
eSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5Ci0gICAgLy8gYXJndW1lbnQuIFBhc3Np
bmcgUE5hTiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9y
ZScgYmxvY2suIFRoYXQncwotICAgIC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KLSAgICBCYXNp
Y0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5
ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBi
bG9jay4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91
YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCiAgICAgLy8gQSBoZWxwZXIgdG8gc3BsaXQgYSBibG9j
ayB3aGVuIGZvcndhcmQgaXRlcmF0aW5nIG92ZXIgaXQuIEl0IGNyZWF0ZXMgYSBuZXcgYmxvY2sg
dG8gaG9sZAogICAgIC8vIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBpbnN0cnVjdGlvbiBhdCB2YWx1
ZUluZGV4LiBUaGUgY3VycmVudCBibG9jayBpcyBsZWZ0IHdpdGgKICAgICAvLyBldmVyeXRoaW5n
IGF0IGFuZCBhZnRlciB2YWx1ZUluZGV4LiBJZiB0aGUgb3B0aW9uYWwgSW5zZXJ0aW9uU2V0IGlz
IHByb3ZpZGVkLCBpdCB3aWxsIGdldApAQCAtODAsMTIgKzY4LDkgQEAgcHVibGljOgogICAgIEJh
c2ljQmxvY2sqIHNwbGl0Rm9yd2FyZCgKICAgICAgICAgQmFzaWNCbG9jayosIHVuc2lnbmVkJiB2
YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqID0gbnVsbHB0ciwKICAgICAgICAgZG91YmxlIGZyZXF1
ZW5jeSA9IFBOYU4pOwotICAgIAotICAgIGJvb2wgZXhlY3V0ZSgpOwogCiBwcml2YXRlOgogICAg
IFByb2NlZHVyZSYgbV9wcm9jOwotICAgIFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNl
cnRpb25zOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgy
LDggQEAgYm9vbCBFZmZlY3RzOjppbnRlcmZlcmVzKGNvbnN0IEVmZmVjdHMmIAogICAgICAgICB8
fCBpbnRlcmZlcmVzV2l0aFdyaXRlc1Bpbm5lZChvdGhlciwgKnRoaXMpCiAgICAgICAgIHx8IHdy
aXRlcy5vdmVybGFwcyhvdGhlci53cml0ZXMpCiAgICAgICAgIHx8IHdyaXRlcy5vdmVybGFwcyhv
dGhlci5yZWFkcykKLSAgICAgICAgfHwgcmVhZHMub3ZlcmxhcHMob3RoZXIud3JpdGVzKTsKKyAg
ICAgICAgfHwgcmVhZHMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQorICAgICAgICB8fCAoZmVuY2Ug
JiYgb3RoZXIuZmVuY2UpOwogfQogCiBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZm
ZWN0cyYgb3RoZXIpIGNvbnN0CkBAIC05NSw3ICs5Niw4IEBAIGJvb2wgRWZmZWN0czo6b3BlcmF0
b3I9PShjb25zdCBFZmZlY3RzJiAKICAgICAgICAgJiYgd3JpdGVzUGlubmVkID09IG90aGVyLndy
aXRlc1Bpbm5lZAogICAgICAgICAmJiByZWFkc1Bpbm5lZCA9PSBvdGhlci5yZWFkc1Bpbm5lZAog
ICAgICAgICAmJiB3cml0ZXMgPT0gb3RoZXIud3JpdGVzCi0gICAgICAgICYmIHJlYWRzID09IG90
aGVyLnJlYWRzOworICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkcworICAgICAgICAmJiBm
ZW5jZSA9PSBvdGhlci5mZW5jZTsKIH0KIAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvciE9KGNvbnN0
IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtMTIwLDYgKzEyMiw4IEBAIHZvaWQgRWZmZWN0czo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb24KICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3Jp
dGVzUGlubmVkIik7CiAgICAgaWYgKHJlYWRzUGlubmVkKQogICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJSZWFkc1Bpbm5lZCIpOworICAgIGlmIChmZW5jZSkKKyAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiRmVuY2UiKTsKICAgICBpZiAod3JpdGVzKQogICAgICAgICBvdXQucHJpbnQoY29tbWEs
ICJXcml0ZXM6Iiwgd3JpdGVzKTsKICAgICBpZiAocmVhZHMpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFZmZlY3RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzRWZmZWN0cy5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNFZmZlY3RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDEwIEBAIHN0
cnVjdCBFZmZlY3RzIHsKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYzMTczCiAgICAgYm9vbCByZWFkc1Bpbm5lZCB7IGZhbHNlIH07CiAgICAgYm9vbCB3
cml0ZXNQaW5uZWQgeyBmYWxzZSB9OworICAgIAorICAgIC8vIE1lbW9yeSBmZW5jZXMgY2Fubm90
IGJlIHJlb3JkZXJlZCBhcm91bmQgZWFjaCBvdGhlciByZWdhcmRsZXNzIG9mIHRoZWlyIGVmZmVj
dHMuIFRoaXMgaXMgZmxhZ2dlZAorICAgIC8vIGlmIHRoZSBvcGVyYXRpb24gaXMgYSBtZW1vcnkg
ZmVuY2UuCisgICAgYm9vbCBmZW5jZSB7IGZhbHNlIH07CiAKICAgICBIZWFwUmFuZ2Ugd3JpdGVz
OwogICAgIEhlYXBSYW5nZSByZWFkczsKQEAgLTg5LDYgKzkzLDcgQEAgc3RydWN0IEVmZmVjdHMg
ewogICAgICAgICByZXN1bHQucmVhZHMgPSBIZWFwUmFuZ2U6OnRvcCgpOwogICAgICAgICByZXN1
bHQucmVhZHNQaW5uZWQgPSB0cnVlOwogICAgICAgICByZXN1bHQud3JpdGVzUGlubmVkID0gdHJ1
ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKQEAgLTEwMyw3ICsxMDgsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAKICAgICBib29s
IG11c3RFeGVjdXRlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBl
eGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5l
ZDsKKyAgICAgICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9j
YWxTdGF0ZSB8fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVkIHx8IGZlbmNlOwogICAgIH0KIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiByZW9yZGVyaW5nIGluc3RydWN0aW9ucyB3aXRoIHRoZXNlIHJl
c3BlY3RpdmUgZWZmZWN0cyB3b3VsZCBjaGFuZ2UgcHJvZ3JhbQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJl
c3Npb25zLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0Miw2
ICsxNDIsNyBAQCBzdHJ1Y3QgSW1wdXJlQmxvY2tEYXRhIHsKIAogICAgIFJhbmdlU2V0PEhlYXBS
YW5nZT4gcmVhZHM7IC8vIFRoaXMgb25seSBnZXRzIHVzZWQgZm9yIGZvcndhcmQgc3RvcmUgZWxp
bWluYXRpb24uCiAgICAgUmFuZ2VTZXQ8SGVhcFJhbmdlPiB3cml0ZXM7IC8vIFRoaXMgZ2V0cyB1
c2VkIGZvciBib3RoIGxvYWQgYW5kIHN0b3JlIGVsaW1pbmF0aW9uLgorICAgIGJvb2wgZmVuY2U7
CiAKICAgICBNZW1vcnlWYWx1ZU1hcCBzdG9yZXNBdEhlYWQ7CiAgICAgTWVtb3J5VmFsdWVNYXAg
bWVtb3J5VmFsdWVzQXRUYWlsOwpAQCAtMTc0LDEyICsxNzUsMTQgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkgJiYgbWVtb3J5LT5pc1N0b3Jl
KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEucmVhZHMub3ZlcmxhcHMobWVtb3J5LT5y
YW5nZSgpKQotICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVt
b3J5LT5yYW5nZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJs
YXBzKG1lbW9yeS0+cmFuZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKCFkYXRhLmZlbmNl
IHx8ICFtZW1vcnktPmhhc0ZlbmNlKCkpKQogICAgICAgICAgICAgICAgICAgICBkYXRhLnN0b3Jl
c0F0SGVhZC5hZGQobWVtb3J5KTsKICAgICAgICAgICAgICAgICBkYXRhLnJlYWRzLmFkZChlZmZl
Y3RzLnJlYWRzKTsKIAogICAgICAgICAgICAgICAgIGlmIChIZWFwUmFuZ2Ugd3JpdGVzID0gZWZm
ZWN0cy53cml0ZXMpCiAgICAgICAgICAgICAgICAgICAgIGNsb2JiZXIoZGF0YSwgd3JpdGVzKTsK
KyAgICAgICAgICAgICAgICBkYXRhLmZlbmNlIHw9IGVmZmVjdHMuZmVuY2U7CiAKICAgICAgICAg
ICAgICAgICBpZiAobWVtb3J5KQogICAgICAgICAgICAgICAgICAgICBkYXRhLm1lbW9yeVZhbHVl
c0F0VGFpbC5hZGQobWVtb3J5KTsKQEAgLTQ3OCw2ICs0ODEsOSBAQCBwcml2YXRlOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KICAgICBib29sIGZpbmRTdG9yZUFmdGVyQ2xvYmJlcihW
YWx1ZSogcHRyLCBIZWFwUmFuZ2UgcmFuZ2UsIGNvbnN0IEZpbHRlciYgZmlsdGVyKQogICAgIHsK
KyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICAgICAgLy8gV2UgY2FuIGVsaW1p
bmF0ZSBhIHN0b3JlIGlmIGV2ZXJ5IGZvcndhcmQgcGF0aCBoaXRzIGEgc3RvcmUgdG8gdGhlIHNh
bWUgbG9jYXRpb24gYmVmb3JlCiAgICAgICAgIC8vIGhpdHRpbmcgYW55IG9wZXJhdGlvbiB0aGF0
IG9ic2VydmVzIHRoZSBzdG9yZS4gVGhpcyBzZWFyY2ggc2VlbXMgbGlrZSBpdCBzaG91bGQgYmUK
ICAgICAgICAgLy8gZXhwZW5zaXZlLCBidXQgaW4gdGhlIG92ZXJ3aGVsbWluZyBtYWpvcml0eSBv
ZiBjYXNlcyBpdCB3aWxsIGFsbW9zdCBpbW1lZGlhdGVseSBoaXQgYW4gCkBAIC02MTQsNiArNjIw
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
ZygqbV92YWx1ZSwgIjogbG9va2luZyBiYWNrd2FyZCBmb3IgIiwgKnB0ciwgIi4uLlxuIik7CiAg
ICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNl
KCkpIHsKKyAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBHaXZpbmcgdXAgYmVjYXVzZSBmZW5jZXMuXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKE1lbW9yeVZhbHVlKiBtYXRj
aCA9IG1fZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuZmluZChwdHIsIGZpbHRlcikpIHsKICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGb3VuZCAi
LCAqbWF0Y2gsICIgbG9jYWxseS5cbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0dlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw3IEBAIHZvaWQg
Z2VuZXJhdGVUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSwKICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDUwNwogICAgIH0KIAorICAgIC8vIFRo
aXMgcHV0cyB0aGUgSVIgaW4gcXVpcmtzIG1vZGUuCiAgICAgbG93ZXJNYWNyb3MocHJvY2VkdXJl
KTsKIAogICAgIGlmIChvcHRMZXZlbCA+PSAxKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmljQmxvY2tJbnNlcnRpb25T
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShC
M19KSVQpCisKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworY2xhc3MgSW5zZXJ0aW9u
U2V0OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNpY0Jsb2NrPgorY2xhc3MgR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFdURjo6SW5zZXJ0aW9uPHN0ZDo6
dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4gQmxvY2tJbnNlcnRpb247CisgICAgCisgICAgQmxvY2tJ
bnNlcnRpb25TZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4mIGJsb2NrcykK
KyAgICAgICAgOiBtX2Jsb2NrcyhibG9ja3MpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2b2lk
IGluc2VydChCbG9ja0luc2VydGlvbiYmIGluc2VydGlvbikKKyAgICB7CisgICAgICAgIG1faW5z
ZXJ0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRpb24pKTsKKyAgICB9CisKKyAgICAvLyBJbnNl
cnQgYSBuZXcgYmxvY2sgYXQgYSBnaXZlbiBpbmRleC4KKyAgICBCYXNpY0Jsb2NrKiBpbnNlcnQo
dW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+IGJsb2NrKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFY
LCBmcmVxdWVuY3kpKTsKKyAgICAgICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxvY2suZ2V0KCk7
CisgICAgICAgIGluc2VydChCbG9ja0luc2VydGlvbihpbmRleCwgV1RGTW92ZShibG9jaykpKTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyBJbnNlcnRzIGEgbmV3IGJs
b2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVzdWFsbHkgeW91IHdpbGwgbm90IHBhc3MgdGhl
IGZyZXF1ZW5jeQorICAgIC8vIGFyZ3VtZW50LiBQYXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1
c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdiZWZvcmUnIGJsb2NrLiBUaGF0J3MKKyAgICAv
LyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCisgICAgQmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJh
c2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pCisgICAgeworICAgICAg
ICByZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgoKSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/
IGZyZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5KCkpOworICAgIH0KKworICAgIC8vIEluc2Vy
dHMgYSBuZXcgYmxvY2sgYWZ0ZXIgdGhlIGdpdmVuIGJsb2NrLgorICAgIEJhc2ljQmxvY2sqIGlu
c2VydEFmdGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAg
ICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYWZ0ZXItPmluZGV4KCkgKyAxLCBmcmVxdWVuY3kg
PT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYWZ0ZXItPmZyZXF1ZW5jeSgpKTsKKyAgICB9CisK
KyAgICBib29sIGV4ZWN1dGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1faW5zZXJ0aW9ucy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyBX
ZSBhbGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdl
IG5lZWQgdG8gc29ydCB0aGVtIGJlZm9yZQorICAgICAgICAvLyBydW5uaW5nIFdURjo6ZXhlY3V0
ZUluc2VydGlvbnMuIFdlIHN0cm9uZ2x5IHByZWZlciBhIHN0YWJsZSBzb3J0IGFuZCB3ZSB3YW50
IGl0IHRvIGJlCisgICAgICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBidWJibGUgc29ydC4KKyAgICAg
ICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsK
KyAgICAgICAgCisgICAgICAgIGV4ZWN1dGVJbnNlcnRpb25zKG1fYmxvY2tzLCBtX2luc2VydGlv
bnMpOworICAgICAgICAKKyAgICAgICAgLy8gUHJ1bmUgb3V0IGVtcHR5IGVudHJpZXMuIFRoaXMg
aXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzCisgICAgICAgIC8vIGhlYWx0aHkgdG8g
a2VlcCB0aGUgYmxvY2sgbGlzdCBmcm9tIGdyb3dpbmcuCisgICAgICAgIG1fYmxvY2tzLnJlbW92
ZUFsbE1hdGNoaW5nKAorICAgICAgICAgICAgWyZdIChzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9j
az4mIGJsb2NrUHRyKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIWJsb2NrUHRy
OworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0
aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGluZGljZXMuCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2Jsb2Nrcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fYmxvY2tzW2ld
LT5tX2luZGV4ID0gaTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiYgbV9ibG9j
a3M7CisgICAgVmVjdG9yPEJsb2NrSW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7Cit9OworCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg4LDYgKzg4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOwogICAgIH0KICAgICAKKyAgICBIZWFwUmFuZ2Ugb3BlcmF0b3J8KGNvbnN0IEhlYXBSYW5n
ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSGVhcFJhbmdlKAorICAgICAg
ICAgICAgc3RkOjptaW4obV9iZWdpbiwgb3RoZXIubV9iZWdpbiksCisgICAgICAgICAgICBzdGQ6
Om1heChtX2VuZCwgb3RoZXIubV9lbmQpKTsKKyAgICB9CisgICAgCiAgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW4gIT0gbV9lbmQ7IH0KIAogICAgIHVu
c2lnbmVkIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTgsNiArNTgsMTEgQEAgVmFsdWUqIEluc2VydGlvblNldDo6aW5zZXJ0Qm90dG9t
KHNpemVfdAogICAgIHJldHVybiBpbnNlcnRCb3R0b20oaW5kZXgsIGxpa2VWYWx1ZS0+b3JpZ2lu
KCksIGxpa2VWYWx1ZS0+dHlwZSgpKTsKIH0KIAorVmFsdWUqIEluc2VydGlvblNldDo6aW5zZXJ0
Q2xvbmUoc2l6ZV90IGluZGV4LCBWYWx1ZSogdmFsdWUpCit7CisgICAgcmV0dXJuIGluc2VydFZh
bHVlKGluZGV4LCBtX3Byb2NlZHVyZS5jbG9uZSh2YWx1ZSkpOworfQorCiB2b2lkIEluc2VydGlv
blNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBidWJibGVTb3J0KG1faW5z
ZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MSw2ICs3MSw4IEBAIHB1YmxpYzoKIAogICAgIFZhbHVlKiBpbnNlcnRCb3R0b20oc2l6ZV90IGlu
ZGV4LCBPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBpbnNlcnRCb3R0b20oc2l6ZV90IGluZGV4
LCBWYWx1ZSopOworICAgIAorICAgIFZhbHVlKiBpbnNlcnRDbG9uZShzaXplX3QgaW5kZXgsIFZh
bHVlKik7CiAKICAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayopOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01OCwxMSArNTgsMTQgQEAgcHVibGljOgogICAgICAgICA6IG1fcHJvYyhwcm9jKQog
ICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAgICAgLCBtX2luc2VydGlv
blNldChwcm9jKQorICAgICAgICAsIG1fdXNlQ291bnRzKHByb2MpCiAgICAgewogICAgIH0KIAog
ICAgIGJvb2wgcnVuKCkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Byb2MuaGFz
UXVpcmtzKCkpOworICAgICAgICAKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1f
cHJvYykgewogICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwogICAgICAgICAgICAgcHJvY2Vz
c0N1cnJlbnRCbG9jaygpOwpAQCAtNzIsNiArNzUsMTAgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9wcm9jLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgICAgICAgICBtX3Byb2MuaW52YWxpZGF0
ZUNGRygpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0
aGF0IHdlJ3ZlIAorICAgICAgICBtX3Byb2Muc2V0SGFzUXVpcmtzKHRydWUpOworICAgICAgICAK
ICAgICAgICAgcmV0dXJuIG1fY2hhbmdlZDsKICAgICB9CiAgICAgCkBAIC0xODUsNyArMTkyLDk2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1sb2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5z
IHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8gdGVsbCB0aGUKKyAgICAgICAgICAgICAg
ICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxvYWQgbW90aW9uLgorICAgICAgICAgICAg
ICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZh
bHVlPihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT5yZWFk
ID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT53cml0ZSA9IEhlYXBS
YW5nZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAv
LyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNp
bXBsaWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoQm90
dG9tKG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIEF0
b21pY1dlYWtDQVM6CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzogeworICAgICAg
ICAgICAgICAgIGlmIChpc1g4NigpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1
ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBhdG9t
aWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
aWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSA9
IGF0b21pYy0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8g
T24gQVJNLCB0aGUgbG9hZCBwYXJ0IG9mIHRoZSBDQVMgZG9lcyBhIGxvYWQgd2l0aCB6ZXJvIGV4
dGVuc2lvbi4gVGhlcmVmb3JlLCB3ZSBuZWVkCisgICAgICAgICAgICAgICAgLy8gdG8gemVyby1l
eHRlbmQgdGhlIGlucHV0LgorICAgICAgICAgICAgICAgIFZhbHVlKiBtYXNrZWRFeHBlY3RlZFZh
bHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAg
bV9pbmRleCwgQml0QW5kLCBtX29yaWdpbiwgZXhwZWN0ZWRWYWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQobV9pbmRleCwgZXhwZWN0ZWRW
YWx1ZSwgbWFzayh3aWR0aCkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBh
dG9taWMtPmNoaWxkKDApID0gbWFza2VkRXhwZWN0ZWRWYWx1ZTsKKyAgICAgICAgICAgICAgICBt
X2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAg
ICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6
CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBjYXNlIEF0b21p
Y1hjaGdYb3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgICAgICAg
ICAvLyBPbiBYODYsIHRoZXNlIG1heSBhY3R1YWxseSByZXR1cm4gZ2FyYmFnZSBpbiB0aGUgaGln
aCBiaXRzLiBPbiBBUk02NCwgdGhlc2Ugc29ydGEKKyAgICAgICAgICAgICAgICAvLyB6ZXJvLWV4
dGVuZCB0aGVpciBoaWdoIGJpdHMsIGV4Y2VwdCB0aGF0IHRoZSBoaWdoIGJpdHMgbWlnaHQgZ2V0
IHBvbGx1dGVkIGJ5IGhpZ2gKKyAgICAgICAgICAgICAgICAvLyBiaXRzIGluIHRoZSBvcGVyYW5k
LiAuIFNvLCBlaXRoZXIgd2F5LCB3ZSBuZWVkIHRvIHRocm93IGEgc2lnbi1leHRlbmQgb24gdGhl
c2UKKyAgICAgICAgICAgICAgICAvLyB0aGluZ3MuCisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUt
Pm9wY29kZSgpID09IEF0b21pY1hjaGdTdWIgJiYgbV91c2VDb3VudHMubnVtVXNlcyhtX3ZhbHVl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gT24geDg2LCB4Y2hnYWRkIGlzIGJldHRl
ciB0aGFuIHhjaGdzdWIgaWYgaXQgaGFzIGFueSB1c2Vycy4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fdmFsdWUtPnNldEtpbmRVbnNhZmVseShBdG9taWNYY2hnQWRkKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDEpID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZh
bHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBOZWcsIG1fb3JpZ2lu
LCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGJvb2wgZXhlbXB0ID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0
b21pY1hjaGdPcjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAg
ICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgICAgICAgICAgICAg
ICAgICBleGVtcHQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoZXhlbXB0KQor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVl
LT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21p
Yy0+b3BlcmF0aW9uV2lkdGgoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBp
ZiAoaXNDYW5vbmljYWxXaWR0aCh3aWR0aCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIHNp
Z25FeHRlbmRPcGNvZGUod2lkdGgpLCBtX29yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRleCwgbV92YWx1ZSkpOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3VmFs
dWUpOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNDcwLDYgKzU2
Niw3IEBAIHByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CiAgICAgQmxvY2tJbnNlcnRp
b25TZXQgbV9ibG9ja0luc2VydGlvblNldDsKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25T
ZXQ7CisgICAgVXNlQ291bnRzIG1fdXNlQ291bnRzOwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7
CiAgICAgdW5zaWduZWQgbV9pbmRleDsKICAgICBWYWx1ZSogbV92YWx1ZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVy
T3B0aW1pemF0aW9ucy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU2LDE1ICsxNTYsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgUm90TDog
ewogICAgICAgICAgICAgICAgIC8vIEFSTTY0IGRvZXNuJ3QgaGF2ZSBhIHJvdGF0ZSBsZWZ0Lgog
ICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdp
bigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSog
cm90YXRlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBSb3RSLCBtX3Zh
bHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCksIG5ld1NoaWZ0KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocm90YXRlKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlmdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1
ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwor
ICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcm90YXRlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
PFZhbHVlPihtX2luZGV4LCBSb3RSLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQo
MCksIG5ld1NoaWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJ
ZGVudGl0eShyb3RhdGUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxNCBAQCBuYW1lc3BhY2Ugewog
CiBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAorLy8gRklYTUU6IFdlIHdvdWxkbid0IG5l
ZWQgdGhpcyBpZiBBaXIgc3VwcG9ydGVkIFdpZHRoIG1vZGlmaWVycyBpbiBBaXI6OktpbmQuCisv
LyBPT1BTISEhIChuZWVkIGEgYnVnIFVSTCkKKyNkZWZpbmUgT1BDT0RFX0ZPUl9XSURUSChvcGNv
ZGUsIHdpZHRoKSAoIFwKKyAgICAod2lkdGgpID09IFdpZHRoOCA/IG9wY29kZSAjIyA4IDogXAor
ICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IG9wY29kZSAjIyAxNiA6IFwKKyAgICAod2lkdGgpID09
IFdpZHRoMzIgPyBvcGNvZGUgIyMgMzIgOiBcCisgICAgb3Bjb2RlICMjIDY0KQorCiBjbGFzcyBM
b3dlclRvQWlyIHsKIHB1YmxpYzoKICAgICBMb3dlclRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJl
KQpAQCAtODMsNiArOTEsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fZG9taW5hdG9ycyhwcm9j
ZWR1cmUuZG9taW5hdG9ycygpKQogICAgICAgICAsIG1fcHJvY2VkdXJlKHByb2NlZHVyZSkKICAg
ICAgICAgLCBtX2NvZGUocHJvY2VkdXJlLmNvZGUoKSkKKyAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0
aW9uU2V0KG1fY29kZSkKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgICAgICAsIG1f
ZWF4KFg4NlJlZ2lzdGVyczo6ZWF4KQorICAgICAgICAsIG1fZWN4KFg4NlJlZ2lzdGVyczo6ZWN4
KQorICAgICAgICAsIG1fZWR4KFg4NlJlZ2lzdGVyczo6ZWR4KQorI2VuZGlmCiAgICAgewogICAg
IH0KIApAQCAtMTI0LDE0ICsxMzgsMTggQEAgcHVibGljOgogICAgICAgICAvLyBob2lzdGVkIGFk
ZHJlc3MgZXhwcmVzc2lvbiBiZWZvcmUgd2UgZHVwbGljYXRlIGl0IGJhY2sgaW50byB0aGUgbG9v
cC4KICAgICAgICAgZm9yIChCMzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2NlZHVyZS5ibG9j
a3NJblByZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKLSAgICAgICAg
ICAgIC8vIFJlc2V0IHNvbWUgc3RhdGUuCi0gICAgICAgICAgICBtX2luc3RzLnJlc2l6ZSgwKTsK
IAogICAgICAgICAgICAgbV9pc1JhcmUgPSAhbV9mYXN0V29ya2xpc3Quc2F3KGJsb2NrKTsKIAog
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG93ZXJp
bmcgQmxvY2sgIiwgKmJsb2NrLCAiOlxuIik7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQgdXAgY29ycmVjdGx5LgorICAg
ICAgICAgICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNj
ZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPnN1Y2Nl
c3NvcnMoKS5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2Nr
KG1fYmxvY2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygpXSwgc3VjY2Vzc29yLmZyZXF1ZW5jeSgp
KSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIFByb2Nlc3MgYmxvY2tzIGluIHJl
dmVyc2Ugb3JkZXIgc28gd2Ugc2VlIHVzZXMgYmVmb3JlIGRlZnMuIFRoYXQncyB3aGF0IGFsbG93
cyB1cwogICAgICAgICAgICAgLy8gdG8gbWF0Y2ggcGF0dGVybnMgZWZmZWN0aXZlbHkuCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+c2l6ZSgpOyBpLS07KSB7CkBAIC0xNDks
MTkgKzE2NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAvLyBOb3cgYXBwZW5kIHRoZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMgY29u
dGFpbnMgdGhlbSBpbiByZXZlcnNlIG9yZGVyLCBzbyB3ZSBwcm9jZXNzCi0gICAgICAgICAgICAv
LyBpdCBpbiByZXZlcnNlLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbnN0cy5z
aXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX2luc3Rz
W2ldKQotICAgICAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPmFwcGVuZElu
c3QoV1RGTW92ZShpbnN0KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQgdXAgY29ycmVjdGx5LgotICAgICAgICAg
ICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3Jz
KCkpIHsKLSAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPnN1Y2Nlc3NvcnMo
KS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrKG1fYmxv
Y2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygpXSwgc3VjY2Vzc29yLmZyZXF1ZW5jeSgpKSk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMobV9i
bG9ja1RvQmxvY2tbYmxvY2tdKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9ibG9j
a0luc2VydGlvblNldC5leGVjdXRlKCk7CiAKICAgICAgICAgQWlyOjpJbnNlcnRpb25TZXQgaW5z
ZXJ0aW9uU2V0KG1fY29kZSk7CiAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1fcHJvbG9ndWUp
CkBAIC01MzgsNyArNTQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsK
IAogICAgICAgICBpbnQzMl90IG9mZnNldCA9IHZhbHVlLT5vZmZzZXQoKTsKLSAgICAgICAgV2lk
dGggd2lkdGggPSB2YWx1ZS0+YWNjZXNzV2lkdGgoKTsKKyAgICAgICAgV2lkdGggd2lkdGggPSB2
YWx1ZS0+bG9hZFN0b3JlV2lkdGgoKTsKIAogICAgICAgICBBcmcgcmVzdWx0ID0gZWZmZWN0aXZl
QWRkcih2YWx1ZS0+bGFzdENoaWxkKCksIG9mZnNldCwgd2lkdGgpOwogICAgICAgICBBU1NFUlQo
cmVzdWx0LmlzVmFsaWRGb3JtKHdpZHRoKSk7CkBAIC01NjIsMTEgKzU3MSwxNiBAQCBwcml2YXRl
OgogICAgIAogICAgIEFyZ1Byb21pc2UgbG9hZFByb21pc2VBbnlPcGNvZGUoVmFsdWUqIGxvYWRW
YWx1ZSkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxvYWRWYWx1ZS0+YXM8TWVtb3J5
VmFsdWU+KCkpOwogICAgICAgICBpZiAoIWNhbkJlSW50ZXJuYWwobG9hZFZhbHVlKSkKICAgICAg
ICAgICAgIHJldHVybiBBcmcoKTsKICAgICAgICAgaWYgKGNyb3NzZXNJbnRlcmZlcmVuY2UobG9h
ZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKLSAgICAgICAgQXJnUHJvbWlzZSBy
ZXN1bHQoYWRkcihsb2FkVmFsdWUpLCBsb2FkVmFsdWUpOworICAgICAgICBpZiAobG9hZFZhbHVl
LT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBBcmco
KTsKKyAgICAgICAgQXJnIGxvYWRBZGRyID0gYWRkcihsb2FkVmFsdWUpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChsb2FkQWRkcik7CisgICAgICAgIEFyZ1Byb21pc2UgcmVzdWx0KGxvYWRBZGRy
LCBsb2FkVmFsdWUpOwogICAgICAgICBpZiAobG9hZFZhbHVlLT50cmFwcygpKQogICAgICAgICAg
ICAgcmVzdWx0LnNldFRyYXBzKHRydWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtODk4
LDExICs5MTIsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKHZh
bHVlKSwgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChhbW91bnQpLCBU
bXAoWDg2UmVnaXN0ZXJzOjplY3gpKTsKLSAgICAgICAgYXBwZW5kKG9wY29kZSwgVG1wKFg4NlJl
Z2lzdGVyczo6ZWN4KSwgdG1wKG1fdmFsdWUpKTsKLSNlbmRpZgorICAgICAgICBhcHBlbmQoTW92
ZSwgdG1wKGFtb3VudCksIG1fZWN4KTsKKyAgICAgICAgYXBwZW5kKG9wY29kZSwgbV9lY3gsIHRt
cChtX3ZhbHVlKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIs
IEFpcjo6T3Bjb2RlIG9wY29kZTY0PgpAQCAtOTMxLDEwICs5NDMsMTUgQEAgcHJpdmF0ZToKICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBDb21tdXRh
dGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZT4KICAgICBib29sIHRyeUFwcGVu
ZFN0b3JlQmluT3AoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkKICAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKKyAgICAgICAgCiAgICAg
ICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29k
ZTY0LCBsZWZ0LT50eXBlKCkpOwogICAgICAgICBpZiAob3Bjb2RlID09IEFpcjo6T29wcykKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5h
czxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgCiAgICAgICAgIEFyZyBzdG9yZUFkZHIgPSBhZGRyKG1fdmFsdWUpOwogICAgICAg
ICBBU1NFUlQoc3RvcmVBZGRyKTsKIApAQCAtOTk0LDEwICsxMDExLDQ4IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgcmV0dXJuIEluc3QobW92ZSwgbV92YWx1ZSwgdG1wKHZhbHVlKSwgZGVzdCk7CiAg
ICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFdpZHRoIHdpZHRoLCBCYW5r
IGJhbmssIGJvb2wgcmVsZWFzZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAod2lkdGgpIHsKKyAg
ICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQ
KTsKKyAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWw4IDogU3RvcmU4OworICAg
ICAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQ
KTsKKyAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwxNiA6IFN0b3JlMTY7Cisg
ICAgICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAg
ICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVs
MzIgOiBNb3ZlMzI7CisgICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2lkdGg2NDoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzNjRCaXQoKSk7CisgICAgICAgICAgICBzd2l0
Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAgcmV0dXJu
IHJlbGVhc2UgPyBTdG9yZVJlbDY0IDogTW92ZTsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJl
dHVybiBNb3ZlRG91YmxlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAg
CisgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNvZGUoVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAg
ICAgcmV0dXJuIHN0b3JlT3Bjb2RlKG1lbW9yeS0+bG9hZFN0b3JlV2lkdGgoKSwgbWVtb3J5LT5h
Y2Nlc3NCYW5rKCksIG1lbW9yeS0+aGFzRmVuY2UoKSk7CisgICAgfQogCiAgICAgSW5zdCBjcmVh
dGVTdG9yZShWYWx1ZSogdmFsdWUsIGNvbnN0IEFyZyYgZGVzdCkKICAgICB7Ci0gICAgICAgIEFp
cjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBtb3ZlRm9yVHlwZSh2YWx1ZS0+dHlwZSgpKTsKKyAgICAg
ICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IHN0b3JlT3Bjb2RlKHZhbHVlKTsKICAgICAgICAg
cmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUsIHZhbHVlLCBkZXN0KTsKICAgICB9CiAKQEAg
LTEwMDYsNyArMTA2MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBhcHBlbmQodHJhcHBp
bmdJbnN0KG1fdmFsdWUsIGNyZWF0ZVN0b3JlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikp
KTsKICAgICB9Ci0KKyAgICAKICAgICBBaXI6Ok9wY29kZSBtb3ZlRm9yVHlwZShUeXBlIHR5cGUp
CiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEwNzMsNyArMTEyOCw0MSBAQCBw
cml2YXRlOgogICAgIHsKICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGluc3QpOwogICAg
IH0KKyAgICAKKyAgICB2b2lkIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyhBaXI6OkJhc2lj
QmxvY2sqIHRhcmdldCkKKyAgICB7CisgICAgICAgIC8vIE5vdyBhcHBlbmQgdGhlIGluc3RydWN0
aW9ucy4gbV9pbnN0cyBjb250YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIsIHNvIHdlIHByb2Nl
c3MKKyAgICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9pbnN0cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1f
aW5zdHNbaV0pCisgICAgICAgICAgICAgICAgdGFyZ2V0LT5hcHBlbmRJbnN0KFdURk1vdmUoaW5z
dCkpOworICAgICAgICB9CisgICAgICAgIG1faW5zdHMucmVzaXplKDApOworICAgIH0KKyAgICAK
KyAgICBBaXI6OkJhc2ljQmxvY2sqIG5ld0Jsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdKTsK
KyAgICB9CiAKKyAgICAvLyBOT1RFOiBUaGlzIHdpbGwgY3JlYXRlIGEgY29udGludWF0aW9uIGJs
b2NrIChgbmV4dEJsb2NrYCkgKmFmdGVyKiBhbnkgYmxvY2tzIHlvdSd2ZSBjcmVhdGVkIHVzaW5n
CisgICAgLy8gbmV3QmxvY2soKS4gU28sIGl0J3MgcHJlZmVyYWJsZSB0byBjcmVhdGUgYWxsIG9m
IHlvdXIgYmxvY2tzIHVwZnJvbnQgdXNpbmcgbmV3QmxvY2soKS4gQWxzbyBub3RlCisgICAgLy8g
dGhhdCBhbnkgY29kZSB5b3UgZW1pdCBiZWZvcmUgdGhpcyB3aWxsIGJlIHByZXBlbmRlZCB0byB0
aGUgY29udGludWF0aW9uLCBhbmQgYW55IGNvZGUgeW91IGVtaXQKKyAgICAvLyBhZnRlciB0aGlz
IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHByZXZpb3VzIGJsb2NrLgorICAgIHZvaWQgc3BsaXRC
bG9jayhBaXI6OkJhc2ljQmxvY2sqJiBwcmV2aW91c0Jsb2NrLCBBaXI6OkJhc2ljQmxvY2sqJiBu
ZXh0QmxvY2spCisgICAgeworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJsb2NrID0gbV9ibG9j
a1RvQmxvY2tbbV9ibG9ja107CisgICAgICAgIAorICAgICAgICBwcmV2aW91c0Jsb2NrID0gYmxv
Y2s7CisgICAgICAgIG5leHRCbG9jayA9IG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QWZ0ZXIo
YmxvY2spOworICAgICAgICAKKyAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG5l
eHRCbG9jayk7CisgICAgICAgIG5leHRCbG9jay0+c3VjY2Vzc29ycygpID0gYmxvY2stPnN1Y2Nl
c3NvcnMoKTsKKyAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigpOworICAgICAgICAK
KyAgICAgICAgbV9pbnN0cy5hcHBlbmQoVmVjdG9yPEluc3Q+KCkpOworICAgIH0KKyAgICAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgVCogZW5z
dXJlU3BlY2lhbChUKiYgZmllbGQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CkBA
IC0xMTIzLDcgKzEyMTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoKICAgICAgICAgICAgICAgICBh
cmcgPSBBcmc6OmNhbGxBcmcodmFsdWUucmVwKCkub2Zmc2V0RnJvbVNQKCkpOwotICAgICAgICAg
ICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlLnZhbHVlKCksIGFyZyk7CisgICAgICAgICAgICAgICAg
YXBwZW5kU3RvcmUobW92ZUZvclR5cGUodmFsdWUudmFsdWUoKSksIGFyZyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTYxLDYgKzIwNTAsMzA4IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kWDg2RGl2KEIz
OjpPcGNvZGUgb3ApCisgICAgeworICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVX
b3JkOworICAgICAgICBBaXI6Ok9wY29kZSBkaXY7CisgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+
dHlwZSgpKSB7CisgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICBjb252ZXJ0VG9Eb3Vi
bGVXb3JkID0gWDg2Q29udmVydFRvRG91YmxlV29yZDMyOworICAgICAgICAgICAgZGl2ID0gWDg2
RGl2MzI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAg
ICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0OworICAgICAg
ICAgICAgZGl2ID0gWDg2RGl2NjQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8IG9wID09
IE1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9PSBEaXYgPyBtX2VheCA6IG1fZWR4Owor
CisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBtX2VheCk7Cisg
ICAgICAgIGFwcGVuZChjb252ZXJ0VG9Eb3VibGVXb3JkLCBtX2VheCwgbV9lZHgpOworICAgICAg
ICBhcHBlbmQoZGl2LCBtX2VheCwgbV9lZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOworICAg
ICAgICBhcHBlbmQoTW92ZSwgcmVzdWx0LCB0bXAobV92YWx1ZSkpOworICAgIH0KKworICAgIHZv
aWQgYXBwZW5kWDg2VURpdihCMzo6T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgQWlyOjpPcGNv
ZGUgZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0
OworCisgICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVNb2QpOworICAgICAgICBU
bXAgcmVzdWx0ID0gb3AgPT0gVURpdiA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5k
KE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKFhv
cjY0LCBtX2VkeCwgbV9lZHgpOworICAgICAgICBhcHBlbmQoZGl2LCBtX2VheCwgbV9lZHgsIHRt
cChtX3ZhbHVlLT5jaGlsZCgxKSkpOworICAgICAgICBhcHBlbmQoTW92ZSwgcmVzdWx0LCB0bXAo
bV92YWx1ZSkpOworICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBsb2FkTGlua09wY29kZShX
aWR0aCB3aWR0aCwgYm9vbCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmZW5jZSA/IE9Q
Q09ERV9GT1JfV0lEVEgoTG9hZExpbmtBY3EsIHdpZHRoKSA6IE9QQ09ERV9GT1JfV0lEVEgoTG9h
ZExpbmssIHdpZHRoKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVDb25kT3Bj
b2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZlbmNl
ID8gT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmRSZWwsIHdpZHRoKSA6IE9QQ09ERV9GT1JfV0lE
VEgoU3RvcmVDb25kLCB3aWR0aCk7CisgICAgfQorICAgIAorICAgIC8vIFRoaXMgY2FuIGVtaXQg
Y29kZSBmb3IgdGhlIGZvbGxvd2luZyBwYXR0ZXJuczoKKyAgICAvLyBBdG9taWNXZWFrQ0FTCisg
ICAgLy8gQml0WG9yKEF0b21pY1dlYWtDQVMsIDEpCisgICAgLy8gQXRvbWljU3Ryb25nQ0FTCisg
ICAgLy8gRXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkKKyAgICAvLyBOb3RFcXVhbChB
dG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKQorICAgIC8vIEJyYW5jaChBdG9taWNXZWFrQ0FTKQor
ICAgIC8vIEJyYW5jaChFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKSkKKyAgICAvLyBC
cmFuY2goTm90RXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAgLy8KKyAgICAv
LyBJdCBhc3N1bWVzIHRoYXQgYXRvbWljVmFsdWUgcG9pbnRzIHRvIHRoZSBDQVMsIGFuZCBtX3Zh
bHVlIHBvaW50cyB0byB0aGUgaW5zdHJ1Y3Rpb24gYmVpbmcKKyAgICAvLyBnZW5lcmF0ZWQuIEl0
IGFzc3VtZXMgdGhhdCB5b3UndmUgY29uc3VtZWQgZXZlcnl0aGluZyB0aGF0IG5lZWRzIHRvIGJl
IGNvbnN1bWVkLgorICAgIHZvaWQgYXBwZW5kQ0FTKFZhbHVlKiBhdG9taWNWYWx1ZSwgYm9vbCBp
bnZlcnQpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gYXRvbWljVmFsdWUt
PmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChhdG9taWMpOworICAg
ICAgICAKKyAgICAgICAgYm9vbCBpc0JyYW5jaCA9IG1fdmFsdWUtPm9wKCkgPT0gQnJhbmNoOwor
ICAgICAgICBib29sIGlzU3Ryb25nID0gYXRvbWljLT5vcCgpID09IEF0b21pY1N0cm9uZ0NBUzsK
KyAgICAgICAgYm9vbCByZXR1cm5zT2xkVmFsdWUgPSBtX3ZhbHVlLT5vcCgpID09IEF0b21pY1N0
cm9uZ0NBUzsKKyAgICAgICAgCisgICAgICAgIFdpZHRoIHdpZHRoID0gYXRvbWljLT5vcGVyYXRp
b25XaWR0aCgpOworICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKworICAgICAg
ICBUbXAgdmFsdWVSZXN1bHRUbXA7CisgICAgICAgIFRtcCBib29sUmVzdWx0VG1wOworICAgICAg
ICBpZiAocmV0dXJuc09sZFZhbHVlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghaW52
ZXJ0KTsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOworICAgICAg
ICAgICAgYm9vbFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICB9IGVsc2Ug
aWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IG1fY29kZS5uZXdU
bXAoR1ApOworICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUubmV3
VG1wKEdQKTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSB0bXAobV92YWx1ZSk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIFRtcCBzdWNjZXNzQm9vbFJlc3VsdFRtcDsKKyAgICAg
ICAgaWYgKGlzU3Ryb25nICYmICFpc0JyYW5jaCkKKyAgICAgICAgICAgIHN1Y2Nlc3NCb29sUmVz
dWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN1
Y2Nlc3NCb29sUmVzdWx0VG1wID0gYm9vbFJlc3VsdFRtcDsKKworICAgICAgICBUbXAgZXhwZWN0
ZWRWYWx1ZVRtcCA9IHRtcChhdG9taWMtPmNoaWxkKDApKTsKKyAgICAgICAgVG1wIG5ld1ZhbHVl
VG1wID0gdG1wKGF0b21pYy0+Y2hpbGQoMSkpOworICAgICAgICAKKyAgICAgICAgRnJlcXVlbnRl
ZEJsb2NrIHN1Y2Nlc3M7CisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayBmYWlsdXJlOworICAgICAg
ICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBtX2Jsb2NrVG9CbG9ja1tt
X2Jsb2NrXS0+c3VjY2Vzc29yKGludmVydCk7CisgICAgICAgICAgICBmYWlsdXJlID0gbV9ibG9j
a1RvQmxvY2tbbV9ibG9ja10tPnN1Y2Nlc3NvcighaW52ZXJ0KTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92
ZUZvclR5cGUoYXRvbWljLT5vcGVyYXRpb25UeXBlKCkpLCBpbW1PclRtcChhdG9taWMtPmNoaWxk
KDApKSwgbV9lYXgpOworICAgICAgICAgICAgaWYgKHJldHVybnNPbGRWYWx1ZSkgeworICAgICAg
ICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0cm9uZ0NBUywgd2lkdGgp
LCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIGFwcGVuZChy
ZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5vcGVyYXRpb25UeXBlKCkpLCBtX2VheCwgdmFsdWVS
ZXN1bHRUbXApOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc0JyYW5jaCkgeworICAgICAgICAg
ICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9uZ0NBUywgd2lk
dGgpLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3
VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW21fYmxv
Y2tdLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIGZhaWx1cmUpOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FT
LCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChpbnZlcnQgPyBNYWNyb0Fzc2VtYmxlcjo6RmFpbHVy
ZSA6IE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgsIHRtcChhdG9taWMtPmNoaWxkKDEp
KSwgYWRkcmVzcywgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAg
IC8vIFdlIHdpc2ggdG8gZW1pdDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9v
cDoKKyAgICAgICAgLy8gICAgIExvYWRMaW5rCisgICAgICAgIC8vICAgICBCcmFuY2ggTm90RXF1
YWwKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVuOiNmYWlsLCBFbHNlOiAjc3RvcmUKKyAg
ICAgICAgLy8gQmxvY2sgI3N0b3JlOgorICAgICAgICAvLyAgICAgU3RvcmVDb25kCisgICAgICAg
IC8vICAgICBYb3IgJDEsICVyZXN1bHQgICAgPC0tLSBvbmx5IGlmICFpbnZlcnQKKyAgICAgICAg
Ly8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAgICAvLyBC
bG9jayAjZmFpbDoKKyAgICAgICAgLy8gICAgIE1vdmUgJGludmVydCwgJXJlc3VsdAorICAgICAg
ICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8v
IEJsb2NrICNkb25lOgorICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BC
bG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3RvcmVCbG9jayA9
IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3VjY2Vzc0Jsb2NrID0gbnVs
bHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCAmJiBpc1N0cm9uZykKKyAgICAgICAgICAgIHN1
Y2Nlc3NCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogZmFpbEJs
b2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCkKKyAgICAgICAgICAgIGZhaWxC
bG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3Ryb25nRmFpbEJs
b2NrOworICAgICAgICBpZiAoaXNTdHJvbmcpCisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2sg
PSBuZXdCbG9jaygpOworICAgICAgICBGcmVxdWVudGVkQmxvY2sgY29tcGFyaXNvbkZhaWw7Cisg
ICAgICAgIEZyZXF1ZW50ZWRCbG9jayB3ZWFrRmFpbDsKKyAgICAgICAgaWYgKGlzU3Ryb25nKSB7
CisgICAgICAgICAgICBjb21wYXJpc29uRmFpbCA9IHN0cm9uZ0ZhaWxCbG9jazsKKyAgICAgICAg
ICAgIHdlYWtGYWlsID0gcmVsb29wQmxvY2s7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAoaXNCcmFuY2gpCisgICAgICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBmYWlsdXJl
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbXBhcmlzb25GYWlsID0gZmFp
bEJsb2NrOworICAgICAgICAgICAgd2Vha0ZhaWwgPSBmYWlsdXJlOworICAgICAgICB9CisgICAg
ICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2Nr
KiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9uZUJsb2NrKTsK
KyAgICAgICAgCisgICAgICAgIGFwcGVuZChKdW1wKTsKKyAgICAgICAgYmVnaW5CbG9jay0+c2V0
U3VjY2Vzc29ycyhyZWxvb3BCbG9jayk7CisgICAgICAgIAorICAgICAgICByZWxvb3BCbG9jay0+
YXBwZW5kKGxvYWRMaW5rT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVl
LCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcyk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQo
T1BDT0RFX0ZPUl9XSURUSChCcmFuY2gsIGNhbm9uaWNhbFdpZHRoKHdpZHRoKSksIG1fdmFsdWUs
IEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpIHZhbHVlUmVzdWx0VG1wLCBl
eHBlY3RlZFZhbHVlVG1wKTsKKyAgICAgICAgcmVsb29wQmxvY2stPnNldFN1Y2Nlc3NvcnMoY29t
cGFyaXNvbkZhaWwsIHN0b3JlQmxvY2spOworICAgICAgICAKKyAgICAgICAgc3RvcmVCbG9jay0+
YXBwZW5kKHN0b3JlQ29uZE9wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1
ZSwgbmV3VmFsdWVUbXAsIGFkZHJlc3MsIHN1Y2Nlc3NCb29sUmVzdWx0VG1wKTsKKyAgICAgICAg
aWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVz
dDMyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVzdWx0VG1wLCBB
cmc6OmJpdEltbSgtMSkpOworICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhz
dWNjZXNzLCB3ZWFrRmFpbCk7CisgICAgICAgICAgICBkb25lQmxvY2stPnN1Y2Nlc3NvcnMoKS5j
bGVhcigpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRvbmVCbG9jay0+c2l6ZSgpKTsK
KyAgICAgICAgICAgIGRvbmVCbG9jay0+YXBwZW5kKE9vcHMsIG1fdmFsdWUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKGlzU3Ryb25nKSB7CisgICAgICAgICAgICAgICAgc3Rv
cmVCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVy
OjpaZXJvKSwgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAg
ICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzQmxvY2ssIHJlbG9vcEJs
b2NrKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFw
cGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6OmltbSghaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7Cisg
ICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5hcHBlbmQoSnVtcCwgbV92YWx1ZSk7CisgICAg
ICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghaW52ZXJ0KQorICAgICAgICAg
ICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoWG9yMzIsIG1fdmFsdWUsIEFyZzo6Yml0SW1t
KDEpLCBib29sUmVzdWx0VG1wLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoSnVtcCwgbV92YWx1ZSk7CisgICAgICAg
ICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmYWlsQmxvY2stPmFwcGVuZChNb3ZlLCBt
X3ZhbHVlLCBBcmc6OmltbShpbnZlcnQpLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIGZh
aWxCbG9jay0+YXBwZW5kKEp1bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgZmFpbEJsb2NrLT5z
ZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlm
IChpc1N0cm9uZykgeworICAgICAgICAgICAgVG1wIHRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOwor
ICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRo
LCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcywg
dG1wKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwg
QXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgdG1wLCBBcmc6OmJpdEltbSgtMSkp
OworICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGZhaWxCbG9jaywg
cmVsb29wQmxvY2spOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGJvb2wgYXBwZW5kVm9p
ZEF0b21pYyhBaXI6Ok9wY29kZSBhdG9taWNPcGNvZGUpCisgICAgeworICAgICAgICBpZiAobV91
c2VDb3VudHMubnVtVXNlcyhtX3ZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgCisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChpc1ZhbGlkRm9ybShhdG9taWNPcGNvZGUsIEFyZzo6SW1tLCBhZGRyZXNzLmtp
bmQoKSkgJiYgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgYXBwZW5kKGF0
b21pY09wY29kZSwgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzVmFsaWRG
b3JtKGF0b21pY09wY29kZSwgQXJnOjpUbXAsIGFkZHJlc3Mua2luZCgpKSkgeworICAgICAgICAg
ICAgYXBwZW5kKGF0b21pY09wY29kZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kR2VuZXJhbEF0b21pYyhB
aXI6Ok9wY29kZSBvcGNvZGUpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0g
bV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBBcmcgYWRkcmVz
cyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAgIFRtcCBvbGRWYWx1ZSA9IG1fY29kZS5uZXdUbXAo
R1ApOworICAgICAgICBUbXAgbmV3VmFsdWUgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAg
CisgICAgICAgIC8vIFdlIG5lZWQgYSBDQVMgbG9vcCBvciBhIExML1NDIGxvb3AuIFVzaW5nIHBy
ZXBhcmUvYXR0ZW1wdCBqYXJnb24sIHdlIHdhbnQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJs
b2NrICNyZWxvb3A6CisgICAgICAgIC8vICAgICBQcmVwYXJlCisgICAgICAgIC8vICAgICBvcGNv
ZGUKKyAgICAgICAgLy8gICAgIEF0dGVtcHQKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVu
OiNkb25lLCBFbHNlOiNyZWxvb3AKKyAgICAgICAgLy8gQmxvY2sgI2RvbmU6CisgICAgICAgIC8v
ICAgICBNb3ZlIG9sZFZhbHVlLCByZXN1bHQKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChyZWxh
eGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwgdG1wKGF0b21pYykpOwor
ICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2Nr
KCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpC
YXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9u
ZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChKdW1wKTsKKyAgICAgICAgYmVnaW5C
bG9jay0+c2V0U3VjY2Vzc29ycyhyZWxvb3BCbG9jayk7CisgICAgICAgIAorICAgICAgICBBaXI6
Ok9wY29kZSBwcmVwYXJlT3Bjb2RlOworICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAg
ICAgc3dpdGNoIChhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpIHsKKyAgICAgICAgICAgIGNhc2Ug
V2lkdGg4OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkOFNpZ25lZEV4dGVu
ZFRvMzI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoMTY6
CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IExvYWQxNlNpZ25lZEV4dGVuZFRvMzI7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoMzI6CisgICAg
ICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IE1vdmUzMjsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bj
b2RlID0gTW92ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAg
ICAgICAgICBvcGNvZGUgPSBsb2FkTGlua09wY29kZShhdG9taWMtPm9wZXJhdGlvbldpZHRoKCks
IGF0b21pYy0+aGFzRmVuY2UoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmVsb29wQmxvY2stPmFw
cGVuZChwcmVwYXJlT3Bjb2RlLCBtX3ZhbHVlLCBhZGRyZXNzLCBvbGRWYWx1ZSk7CisgICAgICAg
IAorICAgICAgICBpZiAob3Bjb2RlICE9IE5vcCkgeworICAgICAgICAgICAgaWYgKGltbShhdG9t
aWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCwg
QXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBt
X3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAg
ICAgICAgICBlbHNlIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwg
QXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBt
X3ZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4
ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgaWYgKGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgICAgIHJlbG9vcEJsb2Nr
LT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG5ld1ZhbHVl
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlbG9vcEJsb2Nr
LT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIG5ld1ZhbHVl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1g4NigpKSB7Cisg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBjYXNPcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEJyYW5j
aEF0b21pY1N0cm9uZ0NBUywgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKTsKKyAgICAgICAgICAg
IHJlbG9vcEJsb2NrLT5hcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwg
b2xkVmFsdWUsIG1fZWF4KTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoY2FzT3Bj
b2RlLCBtX3ZhbHVlLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBt
X2VheCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAgICAgICAgIFRtcCBib29sUmVzdWx0ID0g
bV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHN0b3Jl
Q29uZE9wY29kZShhdG9taWMtPm9wZXJhdGlvbldpZHRoKCksIGF0b21pYy0+aGFzRmVuY2UoKSks
IG5ld1ZhbHVlLCBhZGRyZXNzLCBib29sUmVzdWx0KTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2Nr
LT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8p
LCBib29sUmVzdWx0LCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICB9CisgICAgICAgIHJlbG9v
cEJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jaywgcmVsb29wQmxvY2spOworICAgIH0KKyAg
ICAKICAgICB2b2lkIGxvd2VyKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bj
b2RlKCkpIHsKQEAgLTE5NzEsMzAgKzIzNjIsNTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgTG9hZDogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBw
aW5nSW5zdChtX3ZhbHVlLCBtb3ZlRm9yVHlwZShtX3ZhbHVlLT50eXBlKCkpLCBtX3ZhbHVlLCBh
ZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9IEFpcjo6T29wczsKKyAgICAgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNl
KCkpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG1lbW9yeS0+dHlwZSgpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFj
cTMyOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIElu
dDY0OgorICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNxNjQ7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIG9wY29kZSA9IG1vdmVGb3JUeXBlKG1lbW9yeS0+dHlwZSgpKTsKKyAgICAgICAgICAg
IGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFs
dWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgTG9hZDhTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJh
cHBpbmdJbnN0KG1fdmFsdWUsIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkciht
X3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUg
PSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4U2lnbmVk
RXh0ZW5kVG8zMiA6IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0
cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAo
bV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNh
c2UgTG9hZDhaOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExv
YWQ4LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAg
IEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5j
ZSgpID8gTG9hZEFjcTggOiBMb2FkODsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3Qo
bV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2Uzog
ewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTZTaWduZWRF
eHRlbmRUbzMyLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAg
ICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5o
YXNGZW5jZSgpID8gTG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiA6IExvYWQxNlNpZ25lZEV4dGVu
ZFRvMzI7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwg
bV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQxNlo6IHsKLSAgICAgICAgICAgIGFw
cGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDE2LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUp
LCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFs
dWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcTE2IDogTG9hZDE2Owor
ICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUs
IGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFkZDogewogICAgICAgICAgICAg
aWYgKHRyeUFwcGVuZExlYSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwOTIsNyAr
MjUwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNDaGlsbCgpKQog
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CiAgICAgICAgICAgICBp
ZiAoaXNJbnQobV92YWx1ZS0+dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAg
bG93ZXJYODZEaXYoRGl2KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZEaXYoRGl2KTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQo
IWlzWDg2KCkgfHwgaXNGbG9hdChtX3ZhbHVlLT50eXBlKCkpKTsKQEAgLTIxMDMsNyArMjUxNCw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBVRGl2OiB7CiAgICAgICAgICAgICBpZiAoaXNJ
bnQobV92YWx1ZS0+dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJY
ODZVRGl2KFVEaXYpOworICAgICAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVURpdik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0yMTE3LDEzICsyNTI4LDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTW9kOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpc1g4NigpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZhbHVlLT5pc0No
aWxsKCkpOwotICAgICAgICAgICAgbG93ZXJYODZEaXYoTW9kKTsKKyAgICAgICAgICAgIGFwcGVu
ZFg4NkRpdihNb2QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBVTW9kOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4NigpKTsKLSAgICAg
ICAgICAgIGxvd2VyWDg2VURpdihVTW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVU1v
ZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjE2MiwxMCArMjU3Mywy
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8Tm90MzIsIE5vdDY0Piht
X3ZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGlzIHBhdHRlcm4gaXMgc3VwZXIgdXNl
ZnVsIG9uIGJvdGggeDg2IGFuZCBBUk02NCwgc2luY2UgdGhlIGludmVyc2lvbiBvZiB0aGUgQ0FT
IHJlc3VsdAorICAgICAgICAgICAgLy8gY2FuIGJlIGRvbmUgd2l0aCB6ZXJvIGNvc3Qgb24geDg2
IChqdXN0IGZsaXAgdGhlIHNldCBmcm9tIEUgdG8gTkUpIGFuZCBpdCdzIGEgcHJvZ3Jlc3Npb24K
KyAgICAgICAgICAgIC8vIG9uIEFSTTY0IChzaW5jZSBTVFggcmV0dXJucyAwIG9uIHN1Y2Nlc3Ms
IHNvIG9yZGluYXJpbHkgd2UgaGF2ZSB0byBmbGlwIGl0KS4KKyAgICAgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgxKS0+aXNJbnQoMSkKKyAgICAgICAgICAgICAgICAmJiBpc0F0b21pY0NBUyht
X3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRl
cm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5h
bChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUt
PmNoaWxkKDApLCB0cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPFhvcjMyLCBYb3I2NCwgWG9y
RG91YmxlLCBYb3JGbG9hdCwgQ29tbXV0YXRpdmU+KAogICAgICAgICAgICAgICAgIG1fdmFsdWUt
PmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAg
YXBwZW5kVW5PcDxEZXBlbmQzMiwgRGVwZW5kNjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU2hsOiB7CiAgICAgICAg
ICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50MzIoMSkpIHsKQEAgLTIyNjYsNyArMjY5
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAg
ICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjI4Nyw3ICsyNzE1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFpcjo6U3RvcmU4LCB2YWx1ZVRvU3RvcmUsIGFkZHIo
bV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgdmFsdWVUb1N0b3Jl
LCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0y
MzA4LDcgKzI3MzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUo
QWlyOjpTdG9yZTE2LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAg
YXBwZW5kU3RvcmUobV92YWx1ZSwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDE2LDcgKzI4NDQsMjIgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIGNhc2UgTm90RXF1
YWw6CisgICAgICAgIGNhc2UgTm90RXF1YWw6IHsKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5j
aGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAgICAgICAgICAgICAgJiYg
bV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApID09IG1fdmFsdWUtPmNoaWxkKDEpCisgICAgICAg
ICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUtPmNoaWxkKDApLT5jaGls
ZCgxKSkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMobV92YWx1
ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjb21taXRJ
bnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1f
dmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNyZWF0ZUNvbXBhcmUobV92YWx1ZSkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBM
ZXNzVGhhbjoKICAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAgICAgY2FzZSBMZXNzRXF1
YWw6CkBAIC0yNzI3LDYgKzMxNzAsMzkgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAg
IGNhc2UgQnJhbmNoOiB7CisgICAgICAgICAgICBpZiAoY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5j
aGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogYnJhbmNoQ2hpbGQgPSBtX3ZhbHVl
LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyYW5jaENoaWxkLT5vcGNvZGUo
KSkgeworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgICAg
ICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAgICAgICAgICAgICAgICBh
cHBlbmRDQVMoYnJhbmNoQ2hpbGQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9u
Z0NBUzoKKyAgICAgICAgICAgICAgICAgICAgLy8gQSBicmFuY2ggaXMgYSBjb21wYXJpc29uIHRv
IHplcm8uCisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPmlz
SW50KDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFuY2hD
aGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQsIHRy
dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBjYXNlIEVxdWFsOgorICAgICAgICAgICAgICAgIGNhc2UgTm90RXF1YWw6
CisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPm9wY29kZSgp
ID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRl
cm5hbChicmFuY2hDaGlsZC0+b3Bjb2RlKDApKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYg
YnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5jaGlsZCgwKSA9PSBicmFuY2hDaGlsZC0+Y2hpbGQoMSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkLT5jaGls
ZCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQtPmNo
aWxkKDApLCBicmFuY2hDaGlsZC0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAg
ICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNyZWF0ZUJyYW5jaChtX3ZhbHVlLT5jaGls
ZCgwKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNzg0LDcgKzMyNjAs
ODEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGFwcGVuZChBaXI6OkVudHJ5U3dpdGNoKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
QXRvbWljV2Vha0NBUzoKKyAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAg
ICAgIGFwcGVuZENBUyhtX3ZhbHVlLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6IHsKKyAgICAg
ICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsK
KyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWlj
QWRkLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOwor
ICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChBdG9taWNY
Y2hnQWRkLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpOworICAgICAgICAgICAgaWYgKGlzVmFs
aWRPcGNvZGUob3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcykpIHsKKyAgICAgICAgICAgICAgICBh
cHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hp
bGQoMCkpLCB0bXAoYXRvbWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1w
KGF0b21pYyksIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEFk
ZCwgY2Fub25pY2FsV2lkdGgoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOiB7Cisg
ICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+
KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0
b21pY1N1YiwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09E
RV9GT1JfV0lEVEgoU3ViLCBjYW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkp
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEF0b21pY1hjaGdBbmQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lk
QXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQW5kLCBhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChBbmQsIGNhbm9uaWNhbFdpZHRo
KGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOiB7CisgICAgICAg
ICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7Cisg
ICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY09y
LCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9X
SURUSChPciwgY2Fub25pY2FsV2lkdGgoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBB
dG9taWNYY2hnWG9yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1
ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhP
UENPREVfRk9SX1dJRFRIKEF0b21pY1hvciwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRH
ZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoWG9yLCBjYW5vbmljYWxXaWR0aChhdG9taWMt
Pm9wZXJhdGlvbldpZHRoKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgICAgIEF0b21p
Y1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisgICAgICAgICAgICBB
aXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hjaGcsIGF0b21pYy0+
b3BlcmF0aW9uV2lkdGgoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZE9wY29kZShvcGNvZGUs
IEFyZzo6VG1wLCBhZGRyZXNzKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92
ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9t
aWMpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVz
cyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoWG9yLCBj
YW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI3OTIsNjQgKzMzNDIsNyBAQCBwcml2YXRlOgog
ICAgICAgICBkYXRhTG9nKCJGQVRBTDogY291bGQgbm90IGxvd2VyICIsIGRlZXBEdW1wKG1fcHJv
Y2VkdXJlLCBtX3ZhbHVlKSwgIlxuIik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQotCi0gICAgdm9pZCBsb3dlclg4NkRpdihCMzo6T3Bjb2RlIG9wKQotICAg
IHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4
NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVk
eCk7Ci0KLSAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKLSAgICAgICAg
QWlyOjpPcGNvZGUgZGl2OwotICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgewotICAg
ICAgICBjYXNlIEludDMyOgotICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNv
bnZlcnRUb0RvdWJsZVdvcmQzMjsKLSAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50NjQ6Ci0gICAgICAgICAgICBjb252ZXJ0VG9E
b3VibGVXb3JkID0gWDg2Q29udmVydFRvUXVhZFdvcmQ2NDsKLSAgICAgICAgICAgIGRpdiA9IFg4
NkRpdjY0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOwotICAgICAg
ICBYODZSZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gRGl2ID8gWDg2UmVnaXN0
ZXJzOjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwgdG1w
KG1fdmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJs
ZVdvcmQsIGVheCwgZWR4KTsKLSAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcChtX3Zh
bHVlLT5jaGlsZCgxKSkpOwotICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRtcCht
X3ZhbHVlKSk7Ci0KLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVO
UkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlmCi0gICAgfQotCi0gICAgdm9pZCBsb3dl
clg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82
NCkKLSAgICAgICAgVG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRt
cCBlZHggPSBUbXAoWDg2UmVnaXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGRp
diA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsKLQot
ICAgICAgICBBU1NFUlQob3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKLSAgICAgICAgWDg2UmVn
aXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09IFVEaXYgPyBYODZSZWdpc3RlcnM6OmVh
eCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1
ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBlbmQoWG9yNjQsIGVkeCwgZWR4KTsKLSAg
ICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOwotICAg
ICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7Ci0jZWxzZQotICAg
ICAgICBVTlVTRURfUEFSQU0ob3ApOwotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKLSNlbmRpZgotICAgIH0KLQorICAgIAogICAgIEluZGV4U2V0PFZhbHVlPiBtX2xvY2tlZDsg
Ly8gVGhlc2UgYXJlIHZhbHVlcyB0aGF0IHdpbGwgaGF2ZSBubyBUbXAgaW4gQWlyLgogICAgIElu
ZGV4TWFwPFZhbHVlLCBUbXA+IG1fdmFsdWVUb1RtcDsgLy8gVGhlc2UgYXJlIHZhbHVlcyB0aGF0
IG11c3QgaGF2ZSBhIFRtcCBpbiBBaXIuIFdlIHNheSB0aGF0IGEgVmFsdWUqIHdpdGggYSBub24t
bnVsbCBUbXAgaXMgInBpbm5lZCIuCiAgICAgSW5kZXhNYXA8VmFsdWUsIFRtcD4gbV9waGlUb1Rt
cDsgLy8gRWFjaCBQaGkgZ2V0cyBpdHMgb3duIFRtcC4KQEAgLTI4NjQsNyArMzM1Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBWZWN0b3I8VmVjdG9yPEluc3QsIDQ+PiBtX2luc3RzOwogICAgIFZlY3Rv
cjxJbnN0PiBtX3Byb2xvZ3VlOwotCisgICAgCiAgICAgQjM6OkJhc2ljQmxvY2sqIG1fYmxvY2s7
CiAgICAgYm9vbCBtX2lzUmFyZTsKICAgICB1bnNpZ25lZCBtX2luZGV4OwpAQCAtMjg3NSw2ICsz
MzY4LDEyIEBAIHByaXZhdGU6CiAKICAgICBQcm9jZWR1cmUmIG1fcHJvY2VkdXJlOwogICAgIENv
ZGUmIG1fY29kZTsKKworICAgIEFpcjo6QmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2VydGlv
blNldDsKKworICAgIFRtcCBtX2VheDsKKyAgICBUbXAgbV9lY3g7CisgICAgVG1wIG1fZWR4Owog
fTsKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDMw
ICszNCw0OCBAQCBNZW1vcnlWYWx1ZTo6fk1lbW9yeVZhbHVlKCkKIHsKIH0KIAorVHlwZSBNZW1v
cnlWYWx1ZTo6YWNjZXNzVHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzTG9hZChvcGNvZGUoKSkp
CisgICAgICAgIHJldHVybiB0eXBlKCk7CisgICAgLy8gVGhpcyBoYXBwZW5zIHRvIHdvcmsgZm9y
IGF0b21pY3MsIHRvby4gVGhhdCdzIHdoeSBBdG9taWNWYWx1ZSBkb2VzIG5vdCBuZWVkIHRvIG92
ZXJyaWRlIHRoaXMuCisgICAgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7Cit9CisKK0JhbmsgTWVt
b3J5VmFsdWU6OmFjY2Vzc0JhbmsoKSBjb25zdAoreworICAgIHJldHVybiBiYW5rRm9yVHlwZShh
Y2Nlc3NUeXBlKCkpOworfQorCiBzaXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkg
Y29uc3QKIHsKKyAgICByZXR1cm4gYnl0ZXMoYWNjZXNzV2lkdGgoKSk7Cit9CisKK1dpZHRoIE1l
bW9yeVZhbHVlOjpsb2FkU3RvcmVXaWR0aCgpIGNvbnN0Cit7CiAgICAgc3dpdGNoIChvcGNvZGUo
KSkgewogICAgIGNhc2UgTG9hZDhaOgogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgU3RvcmU4
OgotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICBjYXNlIExv
YWQxNlo6CiAgICAgY2FzZSBMb2FkMTZTOgogICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgcmV0
dXJuIDI7CisgICAgICAgIHJldHVybiBXaWR0aDE2OwogICAgIGNhc2UgTG9hZDoKLSAgICAgICAg
cmV0dXJuIHNpemVvZlR5cGUodHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZSh0
eXBlKCkpOwogICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKGNoaWxk
KDApLT50eXBlKCkpOworICAgICAgICByZXR1cm4gd2lkdGhGb3JUeXBlKGNoaWxkKDApLT50eXBl
KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gV2lkdGg4OwogICAgIH0KIH0KIAog
V2lkdGggTWVtb3J5VmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2lk
dGhGb3JCeXRlcyhhY2Nlc3NCeXRlU2l6ZSgpKTsKKyAgICByZXR1cm4gbG9hZFN0b3JlV2lkdGgo
KTsKIH0KIAogdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKQEAgLTY3LDYgKzg1LDggQEAgdm9pZCBNZW1vcnlWYWx1
ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJgogICAgIGlmICgoaXNMb2FkKCkgJiYgZWZmZWN0cygp
LnJlYWRzICE9IHJhbmdlKCkpCiAgICAgICAgIHx8IChpc1N0b3JlKCkgJiYgZWZmZWN0cygpLndy
aXRlcyAhPSByYW5nZSgpKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicmFuZ2UgPSAiLCBy
YW5nZSgpKTsKKyAgICBpZiAocGhhbnRvbVJhbmdlKCkpCisgICAgICAgIG91dC5wcmludChjb21t
YSwgInBoYW50b21SYW5nZSA9ICIsIHBoYW50b21SYW5nZSgpKTsKIH0KIAogVmFsdWUqIE1lbW9y
eVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdApAQCAtNzQsNiArOTQsNTggQEAgVmFsdWUqIE1lbW9y
eVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAogICAgIHJldHVybiBuZXcgTWVtb3J5VmFsdWUoKnRo
aXMpOwogfQogCisvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9h
ZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CisvLyBkZXNj
cmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQg
a2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQgPSAwKQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2lu
LCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQoreworICAgIGlmICghQVNTRVJUX0RJ
U0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNl
IExvYWQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMb2FkOFo6CisgICAgICAg
IGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQxNlo6CisgICAgICAgIGNhc2UgTG9hZDE2
UzoKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IEludDMyKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFN0b3JlODoKKyAgICAgICAgY2FzZSBTdG9yZTE2OgorICAgICAgICBj
YXNlIFN0b3JlOgorICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gVm9pZCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3
aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1
ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNl
dCA9IDApCisgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBv
ZmZzZXQpCit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgc3dpdGNoIChr
aW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICBjYXNlIExvYWQ4
UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExvYWQxNlM6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBVc2UgdGhpcyBmb3JtIGZvciBzdG9y
ZXMuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBW
YWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgOiBW
YWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQor
ICAgICwgbV9vZmZzZXQob2Zmc2V0KQoreworICAgIEFTU0VSVChpc1N0b3JlKGtpbmQub3Bjb2Rl
KCkpKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw0OCArMjcsMTcgQEAKIAogI2lmIEVOQUJMRShCM19K
SVQpCiAKKyNpbmNsdWRlICJCM0JhbmsuaCIKICNpbmNsdWRlICJCM0hlYXBSYW5nZS5oIgogI2lu
Y2x1ZGUgIkIzVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLS8v
IEZJWE1FOiBXZSB3YW50IHRvIGFsbG93IGZlbmNlZCBtZW1vcnkgYWNjZXNzZXMgb24gQVJNLgot
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0OQotCiBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBNZW1vcnlWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBzd2l0
Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgIGNhc2Ug
TG9hZDhTOgotICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAgIGNhc2UgTG9hZDE2UzoKLSAg
ICAgICAgY2FzZSBMb2FkOgotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9y
ZTE2OgotICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBzdGF0aWMgYm9vbCBpc1N0b3JlKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHN3
aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2Fz
ZSBTdG9yZTE2OgotICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBpc0xvYWQoS2luZCBraW5kKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFjY2VwdHMoa2luZCkgJiYgIWlzU3RvcmUoa2luZCk7CisgICAgICAgIHJldHVy
biBpc01lbW9yeShraW5kLm9wY29kZSgpKTsKICAgICB9CiAKICAgICB+TWVtb3J5VmFsdWUoKTsK
QEAgLTc4LDc2ICs0Nyw1NiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBIZWFwUmFuZ2UmIHJhbmdl
KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZTsgfQogICAgIHZvaWQgc2V0UmFuZ2UoY29uc3QgSGVh
cFJhbmdlJiByYW5nZSkgeyBtX3JhbmdlID0gcmFuZ2U7IH0KKyAgICAKKyAgICAvLyBUaGlzIGlz
IGFuIGFsaWFzIGZvciByYW5nZS4KKyAgICBjb25zdCBIZWFwUmFuZ2UmIGFjY2Vzc1JhbmdlKCkg
Y29uc3QgeyByZXR1cm4gcmFuZ2UoKTsgfQorICAgIHZvaWQgc2V0QWNjZXNzUmFuZ2UoY29uc3Qg
SGVhcFJhbmdlJiByYW5nZSkgeyBzZXRSYW5nZShyYW5nZSk7IH0KKyAgICAKKyAgICBjb25zdCBI
ZWFwUmFuZ2UmIGZlbmNlUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2ZlbmNlUmFuZ2U7IH0KKyAg
ICB2b2lkIHNldEZlbmNlUmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5nZSkgeyBtX2ZlbmNlUmFu
Z2UgPSByYW5nZTsgfQorCisgICAgYm9vbCBpc1N0b3JlKCkgY29uc3QgeyByZXR1cm4gaXNTdG9y
ZShvcGNvZGUoKSk7IH0KKyAgICBib29sIGlzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIGlzTG9hZChv
cGNvZGUoKSk7IH0KIAotICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9
PSBWb2lkOyB9Ci0gICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgIT0gVm9p
ZDsgfQorICAgIGJvb2wgaGFzRmVuY2UoKSBjb25zdCB7IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsg
fQogCisgICAgVHlwZSBhY2Nlc3NUeXBlKCkgY29uc3Q7CisgICAgQmFuayBhY2Nlc3NCYW5rKCkg
Y29uc3Q7CiAgICAgc2l6ZV90IGFjY2Vzc0J5dGVTaXplKCkgY29uc3Q7Ci0gICAgV2lkdGggYWNj
ZXNzV2lkdGgoKSBjb25zdDsKKyAgICAKKyAgICAvLyBTbGlnaHRseSBmYXN0ZXIgdmVyc2lvbiBv
ZiBhY2Nlc3NXaWR0aCwgaWYgeW91IGtub3cgdGhhdCB5b3UncmUgd29ya2luZyB3aXRoIGEgbG9h
ZCBvciBzdG9yZS4KKyAgICBXaWR0aCBsb2FkU3RvcmVXaWR0aCgpIGNvbnN0OworICAgIAorICAg
IHZpcnR1YWwgV2lkdGggYWNjZXNzV2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZv
aWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKLQotICAgIC8vIFVzZSB0aGlz
IGZvcm0gZm9yIExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9h
ZHMgdGhhdCBoYXZlIGEgc3VmZml4IHRoYXQKLSAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVk
IHR5cGUpLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3Jp
Z2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVl
KENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKKyAgICAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9w
Y29kZVRhZywgS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zm
c2V0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNv
ZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgYXJndW1lbnRzLi4uKQogICAgICAgICAsIG1fb2Zmc2V0
KG9mZnNldCkKLSAgICAgICAgLCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCiAgICAgewotICAg
ICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9w
Y29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIExvYWQ4WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDhTOgotICAg
ICAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAg
ICAgICAgICAgIEFTU0VSVCh0eXBlID09IEludDMyKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAg
ICAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBWb2lk
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
ICAgICB9CisgICAgCisgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2Fk
OFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAor
ICAgIC8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCisgICAgTWVtb3J5VmFsdWUoS2lu
ZCwgVHlwZSwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKTsKIAog
ICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBp
bXBsaWVkLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUq
IHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBNZW1vcnlWYWx1ZShraW5k
LCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpCi0gICAgewotICAgIH0KKyAgICBNZW1v
cnlWYWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAp
OwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgotICAgIE1lbW9yeVZhbHVlKEtp
bmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIFZv
aWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQot
ICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSkKLSAgICB7Ci0gICAgICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsK
LSAgICAgICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAg
ICAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KKyAgICBN
ZW1vcnlWYWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGlu
dDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCiAgICAgaW50MzJfdCBtX29mZnNldCB7IDAgfTsKLSAg
ICBIZWFwUmFuZ2UgbV9yYW5nZTsKKyAgICBIZWFwUmFuZ2UgbV9yYW5nZSB7IEhlYXBSYW5nZTo6
dG9wKCkgfTsKKyAgICBIZWFwUmFuZ2UgbV9mZW5jZVJhbmdlIHsgSGVhcFJhbmdlKCkgfTsKIH07
CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShC
M19KSVQpCiAKICNpbmNsdWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBA
IC04Miw3ICs4Myw2IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgTW9kLCAvLyBBbGwg
YmV0cyBhcmUgb2ZmIGFzIHRvIHdoYXQgd2lsbCBoYXBwZW4gd2hlbiB5b3UgZXhlY3V0ZSB0aGlz
IGZvciAtMl4zMSUtMSBhbmQgeCUwLgogICAgIFVNb2QsCiAKLQogICAgIC8vIFBvbHltb3JwaGlj
IG5lZ2F0aW9uLiBOb3RlIHRoYXQgd2Ugb25seSBuZWVkIHRoaXMgZm9yIGZsb2F0aW5nIHBvaW50
LCBzaW5jZSBpbnRlZ2VyIG5lZ2F0aW9uCiAgICAgLy8gaXMgZXhhY3RseSBsaWtlIFN1YigwLCB4
KS4gQnV0IHRoYXQncyBub3QgdHJ1ZSBmb3IgZmxvYXRpbmcgcG9pbnQuIFN1YigwLCAwKSBpcyAw
LCB3aGlsZQogICAgIC8vIE5lZygwKSBpcyAtMC4gQWxzbywgd2UgY2Fub25pY2FsaXplIFN1Yigw
LCB4KSBpbnRvIE5lZyh4KSBpbiBjYXNlIG9mIGludGVnZXJzLgpAQCAtMTYyLDYgKzE2MiwxMDcg
QEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBTdG9yZTE2LAogICAgIC8vIFRoaXMgaXMg
YSBwb2x5bW9ycGhpYyBzdG9yZSBmb3IgSW50MzIsIEludDY0LCBGbG9hdCwgYW5kIERvdWJsZS4K
ICAgICBTdG9yZSwKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJl
dHVybnMgYSBib29sZWFuLiBNYXkgY2hvb3NlIHRvIGRvIG5vdGhpbmcgYW5kIHJldHVybiBmYWxz
ZS4gWW91IGNhbgorICAgIC8vIHVzdWFsbHkgYXNzdW1lIHRoYXQgdGhpcyBpcyBmYXN0ZXIgYW5k
IHJlc3VsdHMgaW4gbGVzcyBjb2RlIHRoYW4gQXRvbWljU3Ryb25nQ0FTLCB0aG91Z2ggdGhhdCdz
CisgICAgLy8gbm90IG5lY2Vzc2FyaWx5IHRydWUgb24gSW50ZWwsIGlmIGluc3RydWN0aW9uIHNl
bGVjdGlvbiBkb2VzIGl0cyBqb2IuIEltYWdpbmUgdGhhdCB0aGlzIG9wY29kZSBpcworICAgIC8v
IGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICAvLyBib29sIEF0b21pY1dlYWtDQVMoVCBleHBlY3RlZFZhbHVlLCBU
IG5ld1ZhbHVlLCBUKiBwdHIpCisgICAgLy8geworICAgIC8vICAgICBpZiAoIXJhbmQoKSkKKyAg
ICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gUmVhbCB3b3JsZCBleGFtcGxlIG9mIHRoaXM6
IGNvbnRleHQgc3dpdGNoIG9uIEFSTSB3aGlsZSBkb2luZyBDQVMuCisgICAgLy8gICAgIGlmICgq
cHRyICE9IGV4cGVjdGVkVmFsdWUpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Ly8gICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIHRydWU7CisgICAgLy8g
fQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IGFsbCBhdG9taWNzIHB1dCB0aGUgcG9pbnRlciBs
YXN0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cgbG9hZHMgYW5kIHN0b3JlcyB3b3JrLiBUaGlz
CisgICAgLy8gaXMgYSBnb29meSB0cmFkaXRpb24sIGJ1dCBpdCdzIGhhcm1sZXNzLCBhbmQgYmV0
dGVyIHRoYW4gYmVpbmcgaW5jb25zaXN0ZW50LgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHdl
YWsgQ0FTIGhhcyBubyBmZW5jaW5nIGd1YXJhbnRlZXMgd2hlbiBpdCBmYWlscy4gVGhpcyBtZWFu
cyB0aGF0IHRoZSBmb2xsb3dpbmcKKyAgICAvLyB0cmFuc2Zvcm1hdGlvbiBpcyBhbHdheXMgdmFs
aWQ6CisgICAgLy8KKyAgICAvLyBCZWZvcmU6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5j
aChBdG9taWNXZWFrQ0FTKGV4cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vz
c29yczogVGhlbjojc3VjY2VzcywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQWZ0ZXI6Cisg
ICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5jaChFcXVhbChMb2FkKHB0ciksIGV4cGVjdGVkKSkK
KyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNhdHRlbXB0LCBFbHNlOiNmYWlsCisgICAg
Ly8gICAgIEJCI2F0dGVtcHQ6CisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhl
eHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nl
c3MsIEVsc2U6I2ZhaWwKKyAgICAvLworICAgIC8vIEJvdGgga2luZHMgb2YgQ0FTIGZvciBub24t
Y2Fub25pY2FsIHdpZHRocyAoV2lkdGg4IGFuZCBXaWR0aDE2KSBpZ25vcmUgdGhlIGlycmVsZXZh
bnQgYml0cyBvZiB0aGUKKyAgICAvLyBpbnB1dC4KKyAgICBBdG9taWNXZWFrQ0FTLAorICAgIAor
ICAgIC8vIEF0b21pYyBjb21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyB0aGUgb2xkIHZhbHVl
LiBEb2VzIG5vdCBoYXZlIHRoZSBub25kZXRlcm1pbmlzbSBvZiBXZWFrQ0FTLgorICAgIC8vIFRo
aXMgaXMgYSBiaXQgbW9yZSBjb2RlIGFuZCBhIGJpdCBzbG93ZXIgaW4gc29tZSBjYXNlcywgdGhv
dWdoIG5vdCBieSBhIGxvdC4gSW1hZ2luZSB0aGF0IHRoaXMKKyAgICAvLyBvcGNvZGUgaXMgYXMg
aWYgeW91IGRpZCB0aGlzIGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIC8vIFQgQXRvbWljU3Ryb25nQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdW
YWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgVCBvbGRWYWx1ZSA9ICpwdHI7Cisg
ICAgLy8gICAgIGlmIChvbGRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAg
KnB0ciA9IG5ld1ZhbHVlOworICAgIC8vICAgICByZXR1cm4gb2xkVmFsdWUKKyAgICAvLyB9Cisg
ICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgQXRvbWljV2Vha0NBUyBhbmQgQXRvbWljU3Ryb25nQ0FT
IHNvcnQgb2YgaGF2ZSB0aGlzIGtpbmQgb2YgZXF1aXZhbGVuY2U6CisgICAgLy8KKyAgICAvLyBB
dG9taWNXZWFrQ0FTKEBleHAsIEBuZXcsIEBwdHIpID09IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhA
ZXhwLCBAbmV3LCBAcHRyKSwgQGV4cCkKKyAgICAvLworICAgIC8vIEFzc3VtaW5nIHRoYXQgdGhl
IFdlYWtDQVMgZG9lcyBub3Qgc3B1cmlvdXNseSBmYWlsLCBvZiBjb3Vyc2UuCisgICAgQXRvbWlj
U3Ryb25nQ0FTLAorICAgIAorICAgIC8vIEF0b21pY2FsbHkgX19fIGEgbWVtb3J5IGxvY2F0aW9u
IGFuZCByZXR1cm4gdGhlIG9sZCB2YWx1ZS4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZh
bHVlID0gQXRvbWljWGNoZ19fXyhAb3BlcmFuZCwgQHB0cikKKyAgICAvLworICAgIC8vIEZvciBu
b24tY2Fub25pY2FsIHdpZHRocyAoV2lkdGg4IGFuZCBXaWR0aDE2KSwgdGhlc2UgcmV0dXJuIHNp
Z24tZXh0ZW5kZWQgcmVzdWx0cyBhbmQgaWdub3JlIHRoZQorICAgIC8vIGlycmVsZXZhbnQgYml0
cyBvZiB0aGVpciBpbnB1dHMuCisgICAgQXRvbWljWGNoZ0FkZCwKKyAgICBBdG9taWNYY2hnQW5k
LAorICAgIEF0b21pY1hjaGdPciwKKyAgICBBdG9taWNYY2hnU3ViLAorICAgIEF0b21pY1hjaGdY
b3IsCisgICAgCisgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBoYXZlIEF0b21pY1hjaGdO
ZWcgYW5kIEF0b21pY1hjaGdOb3QuCisgICAgCisgICAgLy8gQXRvbWljYWxseSBleGNoYW5nZSBh
IHZhbHVlIHdpdGggYSBtZW1vcnkgbG9jYXRpb24uIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBv
bGRWYWx1ZSA9IEF0b21pY1hjaGcoQG5ld1ZhbHVlLCBAcHRyKQorICAgIEF0b21pY1hjaGcsCisg
ICAgCisgICAgLy8gSW50cm9kdWNlIGFuIGludmlzaWJsZSBkZXBlbmRlbmN5IGZvciBibG9ja2lu
ZyBtb3Rpb24gb2YgbG9hZHMgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuIFN5bnRheDoKKyAg
ICAvLworICAgIC8vIEByZXN1bHQgPSBEZXBlbmQoQHBoYW50b20pCisgICAgLy8KKyAgICAvLyBU
aGlzIGlzIGV2ZW50dWFsbHkgY29kZWdlbmVyYXRlZCB0byBoYXZlIGxvY2FsIHNlbWFudGljcyBh
cyBpZiB3ZSBkaWQ6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gJDAKKyAgICAvLworICAgIC8v
IEJ1dCBpdCBlbnN1cmVzIHRoYXQgdGhlIHVzZXJzIG9mIEByZXN1bHQgY2Fubm90IGV4ZWN1dGUg
dW50aWwgQHBoYW50b20gaXMgY29tcHV0ZWQuCisgICAgLy8KKyAgICAvLyBUaGUgY29tcGlsZXIg
aXMgbm90IGFsbG93ZWQgdG8gcmVhc29uIGFib3V0IHRoZSBmYWN0IHRoYXQgRGVwZW5kIGNvZGVn
ZW5lcmF0ZXMgdGhpcyB3YXkuIEFueSBraW5kCisgICAgLy8gb2YgdHJhbnNmb3JtYXRpb24gb3Ig
YW5hbHlzaXMgdGhhdCByZWxpZXMgb24gdGhlIGluc2lnaHQgdGhhdCBEZXBlbmQgaXMgcmVhbGx5
IHplcm8gaXMgdW5zb3VuZCwKKyAgICAvLyBiZWNhdXNlIGl0IHVubG9ja3MgcmVvcmRlcmluZyBv
ZiB1c2VycyBvZiBAcmVzdWx0IGFuZCBAcGhhbnRvbS4KKyAgICAvLworICAgIC8vIE9uIFg4Niwg
dGhpcyBpcyBsb3dlcmVkIHRvIGEgbG9hZC1sb2FkIGZlbmNlIGFuZCBAcmVzdWx0IHVzZXMgQHBo
YW50b20gZGlyZWN0bHkuCisgICAgLy8KKyAgICAvLyBPbiBBUk0sIHRoaXMgaXMgbG93ZXJlZCBh
cyBpZiBsaWtlOgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9IEJpdFhvcihAcGhhbnRvbSwgQHBo
YW50b20pCisgICAgLy8KKyAgICAvLyBFeGNlcHQgdGhhdCB0aGUgY29tcGlsZXIgbmV2ZXIgZ2V0
cyBhbiBvcHBvcnR1bml0eSB0byBzaW1wbGlmeSBvdXQgdGhlIEJpdFhvci4KKyAgICBEZXBlbmQs
CiAKICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIGFkZHJlc3Mgb2Yg
YSBXYXNtIG1lbW9yeSBvcGVyYXRpb24uIEl0IHRha2VzIGFuIEludFB0cgogICAgIC8vIGFuZCBh
IHBpbm5lZCByZWdpc3RlciB0aGVuIGNvbXB1dGVzIHRoZSBhcHByb3ByaWF0ZSBJbnRQdHIgYWRk
cmVzcy4gRm9yIHRoZSB1c2UtY2FzZSBvZgpAQCAtMzAxLDYgKzQwMiwxMTAgQEAgaW5saW5lIGJv
b2wgaXNEZWZpbml0ZWx5VGVybWluYWwoT3Bjb2RlIAogICAgIH0KIH0KIAoraW5saW5lIGJvb2wg
aXNMb2FkKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNl
IExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBM
b2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNTdG9y
ZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBTdG9y
ZTg6CisgICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lu
bGluZSBib29sIGlzTG9hZFN0b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNv
ZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQx
Nlo6CisgICAgY2FzZSBMb2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFN0b3JlODoK
KyAgICBjYXNlIFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5l
IGJvb2wgaXNBdG9taWMoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgewor
ICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBj
YXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRv
bWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdY
b3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0
b21pY0NBUyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2Fz
ZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CitpbmxpbmUgYm9vbCBpc0F0b21pY1hjaGcoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2gg
KG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdB
bmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAg
IGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisK
K2lubGluZSBib29sIGlzTWVtb3J5QWNjZXNzKE9wY29kZSBvcGNvZGUpCit7CisgICAgcmV0dXJu
IGlzQXRvbWljKG9wY29kZSkgfHwgaXNMb2FkU3RvcmUob3Bjb2RlKTsKK30KKworaW5saW5lIE9w
Y29kZSBzaWduRXh0ZW5kT3Bjb2RlKFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgp
IHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgcmV0dXJuIFNFeHQ4OworICAgIGNhc2UgV2lk
dGgxNjoKKyAgICAgICAgcmV0dXJuIFNFeHQxNjsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gT29wczsKKyAgICB9Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjAyLDYgKzIwMiw4IEBAIHZvaWQgUHJvY2VkdXJlOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGMKICAgICAgICAgfQogICAgICAgICBkYXRhTG9nKCIgICAgIiwgZGVlcER1bXAoKnRoaXMs
IHZhbHVlKSwgIlxuIik7CiAgICAgfQorICAgIGlmIChoYXNRdWlya3MoKSkKKyAgICAgICAgb3V0
LnByaW50KCJIYXMgUXVpcmtzOiBUcnVlXG4iKTsKICAgICBpZiAodmFyaWFibGVzKCkuc2l6ZSgp
KSB7CiAgICAgICAgIG91dC5wcmludCgiVmFyaWFibGVzOlxuIik7CiAgICAgICAgIGZvciAoVmFy
aWFibGUqIHZhcmlhYmxlIDogdmFyaWFibGVzKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsNyBAQCBw
dWJsaWM6CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50KE9yaWdpbiwgVHlwZSwgaW50NjRfdCB2
YWx1ZSk7CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50KFZhbHVlKiwgaW50NjRfdCB2YWx1ZSk7
CiAKKyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIFZh
bHVlKiBhZGRCb3R0b20oT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogYWRkQm90dG9tKFZhbHVl
Kik7CiAKQEAgLTE5NSw2ICsxOTYsMTIgQEAgcHVibGljOgogICAgIC8vIGFsaXZlLiBHcmVhdCBm
b3IgY29tcGlsZXItZ2VuZXJhdGVkIGRhdGEgc2VjdGlvbnMsIGxpa2Ugc3dpdGNoIGp1bXAgdGFi
bGVzIGFuZCBjb25zdGFudCBwb29scy4KICAgICAvLyBUaGlzIHJldHVybnMgbWVtb3J5IHRoYXQg
aGFzIGJlZW4gemVyby1pbml0aWFsaXplZC4KICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBh
ZGREYXRhU2VjdGlvbihzaXplX3QpOworICAgIAorICAgIC8vIFNvbWUgb3BlcmF0aW9ucyBhcmUg
c3BlY2lmaWVkIGluIEIzIElSIHRvIGJlaGF2ZSBvbmUgd2F5IGJ1dCBvbiB0aGlzIGdpdmVuIENQ
VSB0aGV5IGJlaGF2ZSBhCisgICAgLy8gZGlmZmVyZW50IHdheS4gV2hlbiB0cnVlLCB0aG9zZSBC
MyBJUiBvcHMgc3dpdGNoIHRvIGJlaGF2aW5nIHRoZSBDUFUgd2F5LCBhbmQgdGhlIG9wdGltaXpl
ciBtYXkKKyAgICAvLyBzdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIGl0LgorICAgIGJvb2wgaGFz
UXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNRdWlya3M7IH0KKyAgICB2b2lkIHNldEhhc1F1
aXJrcyhib29sIHZhbHVlKSB7IG1faGFzUXVpcmtzID0gdmFsdWU7IH0KIAogICAgIE9wYXF1ZUJ5
cHJvZHVjdHMmIGJ5cHJvZHVjdHMoKSB7IHJldHVybiAqbV9ieXByb2R1Y3RzOyB9CiAKQEAgLTI1
Miw2ICsyNTksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoUHJpbnRT
dHJlYW0mLCBPcmlnaW4pPj4gbV9vcmlnaW5QcmludGVyOwogICAgIGNvbnN0IHZvaWQqIG1fZnJv
bnRlbmREYXRhOwogICAgIFBDVG9PcmlnaW5NYXAgbV9wY1RvT3JpZ2luTWFwOworICAgIGJvb2wg
bV9oYXNRdWlya3MgeyBmYWxzZSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJl
bmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwMiw3ICs2MDIsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBicmVhazsKLQorICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgTmVnOgogICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBOZWcoY29uc3RhbnQpCiAgICAg
ICAgICAgICAvLyBJbnRvIHRoaXM6IC1jb25zdGFudApAQCAtMTI5NSw2ICsxMjk1LDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFtX3Byb2MuaGFzUXVp
cmtzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNFeHQ4KEF0b21pY1hjaGdf
X18pCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlzOiBBdG9taWNYY2hnX19fCisgICAgICAg
ICAgICAgICAgaWYgKGlzQXRvbWljWGNoZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisg
ICAgICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4o
KS0+b3BlcmF0aW9uV2lkdGgoKSA9PSBXaWR0aDgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVw
bGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgIGNhc2UgU0V4dDE2OgpAQCAtMTM0Myw2ICsxMzUzLDE2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFtX3Byb2MuaGFzUXVpcmtzKCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNFeHQxNihBdG9taWNYY2hnX19fKQorICAgICAgICAg
ICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXworICAgICAgICAgICAgICAgIGlmIChp
c0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAg
ICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFsdWU+KCktPm9wZXJhdGlvbldp
ZHRoKCkgPT0gV2lkdGgxNikgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aElkZW50
aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBTRXh0MzI6CkBAIC0yMTAxLDIyICsyMTIxLDI1IEBAIHByaXZhdGU6CiAgICAgICAg
IEFTU0VSVChtX3ZhbHVlLT5udW1DaGlsZHJlbigpID49IDIpOwogICAgICAgICAKICAgICAgICAg
Ly8gTGVhdmUgaXQgYWxvbmUgaWYgdGhlIHJpZ2h0IGNoaWxkIGlzIGEgY29uc3RhbnQuCi0gICAg
ICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNDb25zdGFudCgpKQorICAgICAgICBpZiAobV92
YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKQorICAgICAgICAgICAgfHwgbV92YWx1ZS0+Y2hp
bGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUykKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNDb25zdGFudCgpKSB7
CisgICAgICAgIGF1dG8gc3dhcCA9IFsmXSAoKSB7CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV92
YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQorICAgICAgICB9Owor
ICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pc0NvbnN0YW50KCkpCisg
ICAgICAgICAgICByZXR1cm4gc3dhcCgpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUt
PmNoaWxkKDEpLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMpCisgICAgICAgICAgICByZXR1
cm4gc3dhcCgpOworICAgICAgICAKICAgICAgICAgLy8gU29ydCB0aGUgb3BlcmFuZHMuIFRoaXMg
aXMgYW4gaW1wb3J0YW50IGNhbm9uaWNhbGl6YXRpb24uIFdlIHVzZSB0aGUgaW5kZXggaW5zdGVh
ZCBvZgogICAgICAgICAvLyB0aGUgYWRkcmVzcyB0byBtYWtlIHRoaXMgYXQgbGVhc3Qgc2xpZ2h0
bHkgZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pbmRleCgp
ID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4KCkpIHsKLSAgICAgICAgICAgIHN0ZDo6c3dhcCht
X3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAgICAgICAgbV9jaGFu
Z2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBpZiAo
bV92YWx1ZS0+Y2hpbGQoMCktPmluZGV4KCkgPiBtX3ZhbHVlLT5jaGlsZCgxKS0+aW5kZXgoKSkK
KyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIHJlYWxseSBiZSBhIGZvcndhcmQgYW5hbHlzaXMuIEluc3RlYWQsIHdlIHVzZXMgYSBi
b3VuZGVkLXNlYXJjaCBiYWNrd2FyZHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDYgKzM0Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgw
KS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2
YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgTG9hZDoKQEAgLTM1Myw2ICszNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBw
b2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT50eXBlKCkgIT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNj
ZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3Rv
cmU4OgpAQCAtMzYyLDYgKzM2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVy
VHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxp
ZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZh
bHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU6CkBA
IC0zNjksOCArMzcyLDQ5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQg
IiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBW
b2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFs
dWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAg
ICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAz
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBl
KCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQo
MCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGls
ZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50
eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0Fj
Y2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0
b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAg
ICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAg
ICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNo
ZzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxk
cmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlw
ZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
dmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nl
c3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBEZXBl
bmQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRz
KCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51
bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBXYXNtQWRkcmVzczoKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5o
YXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYg
KzU4MSwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9
CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUZlbmNlKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAg
ICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICBWQUxJREFURShtZW1vcnR5
LT5hY2Nlc3NCYW5rKCkgPT0gR1AsICgiRmVuY2UgYXQgIiwgKm1lbW9yeSkpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHZhbGlkYXRlQXRvbWljKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSB2YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAg
IAorICAgICAgICBWQUxJREFURShiZXN0VHlwZShhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpID09
IGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgIH0KIAogICAg
IHZvaWQgdmFsaWRhdGVTdGFja0FjY2VzcyhWYWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiAr
NTEwLDcgQEAgYm9vbCBWYWx1ZTo6cmV0dXJuc0Jvb2woKSBjb25zdAogICAgIGNhc2UgQWJvdmVF
cXVhbDoKICAgICBjYXNlIEJlbG93RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgor
ICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQ
aGk6CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC01
ODksNiArNTkwLDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBC
ZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKICAgICBjYXNlIFNlbGVjdDoK
KyAgICBjYXNlIERlcGVuZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXY6CiAgICAgY2Fz
ZSBVRGl2OgpAQCAtNjAwLDE2ICs2MDIsNDQgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNv
bnN0CiAgICAgY2FzZSBMb2FkOFM6CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2
UzoKLSAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJlc3VsdC5yZWFkcyA9IGFzPE1lbW9yeVZhbHVl
PigpLT5yYW5nZSgpOworICAgIGNhc2UgTG9hZDogeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVt
b3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+
cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+cGhhbnRvbVJhbmdlKCkpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC53cml0ZXMgPSBtZW1vcnktPnBoYW50b21SYW5nZSgpOworICAgICAgICAgICAg
cmVzdWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQuY29udHJvbERl
cGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFN0b3JlODoK
ICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmVzdWx0LndyaXRl
cyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAgIGNhc2UgU3RvcmU6IHsKKyAgICAg
ICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1
bHQud3JpdGVzID0gbWVtb3J5LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5waGFudG9t
UmFuZ2UoKSkgeworICAgICAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5waGFudG9tUmFu
Z2UoKTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAg
IGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBB
dG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNo
Z1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9y
eSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPnJh
bmdlKCkgfCBtZW1vcnktPnBoYW50b21SYW5nZSgpOworICAgICAgICByZXN1bHQud3JpdGVzID0g
bWVtb3J5LT5yYW5nZSgpIHwgbWVtb3J0eS0+cGhhbnRvbVJhbmdlKCk7CisgICAgICAgIGlmICht
ZW1vcnktPnBoYW50b21SYW5nZSgpKQorICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsK
ICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVk
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CkBAIC02MTcsMTggKzY0Nyw3IEBAIEVmZmVjdHMgVmFs
dWU6OmVmZmVjdHMoKSBjb25zdAogICAgICAgICBjb25zdCBGZW5jZVZhbHVlKiBmZW5jZSA9IGFz
PEZlbmNlVmFsdWU+KCk7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IGZlbmNlLT5yZWFkOwogICAg
ICAgICByZXN1bHQud3JpdGVzID0gZmVuY2UtPndyaXRlOwotICAgICAgICAKLSAgICAgICAgLy8g
UHJldmVudCBraWxsaW5nIG9mIGZlbmNlcyB0aGF0IGNsYWltIG5vdCB0byB3cml0ZSBhbnl0aGlu
Zy4gSXQncyBhIGJpdCB3ZWlyZCB0aGF0IHdlIHVzZQotICAgICAgICAvLyBsb2NhbCBzdGF0ZSBh
cyB0aGUgd2F5IHRvIGRvIHRoaXMsIGJ1dCBpdCBoYXBwZW5zIHRvIHdvcms6IHdlIG11c3QgYXNz
dW1lIHRoYXQgd2UgY2Fubm90Ci0gICAgICAgIC8vIGtpbGwgd3JpdGVzTG9jYWxTdGF0ZSB1bmxl
c3Mgd2UgdW5kZXJzdGFuZHMgZXhhY3RseSB3aGF0IHRoZSBpbnN0cnVjdGlvbiBpcyBkb2luZyAo
bGlrZQotICAgICAgICAvLyB0aGUgd2F5IHRoYXQgZml4U1NBIHVuZGVyc3RhbmRzIFNldC9HZXQg
YW5kIHRoZSB3YXkgdGhhdCByZWR1Y2VTdHJlbmd0aCBhbmQgb3RoZXJzCi0gICAgICAgIC8vIHVu
ZGVyc3RhbmQgVXBzaWxvbikuIFRoaXMgd291bGQgb25seSBiZWNvbWUgYSBwcm9ibGVtIGlmIHdl
IGhhZCBzb21lIGFuYWx5c2lzIHRoYXQgd2FzCi0gICAgICAgIC8vIGxvb2tpbmcgdG8gdXNlIHRo
ZSB3cml0ZXNMb2NhbFN0YXRlIGJpdCB0byBpbnZhbGlkYXRlIGEgQ1NFIG92ZXIgbG9jYWwgc3Rh
dGUgb3BlcmF0aW9ucy4KLSAgICAgICAgLy8gVGhlbiBhIEZlbmNlIHdvdWxkIGxvb2sgYmxvY2ss
IHNheSwgdGhlIGVsaW1pbmF0aW9uIG9mIGEgcmVkdW5kYW50IEdldC4gQnV0IGl0IGxpa2UKLSAg
ICAgICAgLy8gdGhhdCdzIG5vdCBhdCBhbGwgaG93IG91ciBvcHRpbWl6YXRpb25zIGZvciBTZXQv
R2V0L1Vwc2lsb24vUGhpIHdvcmsgLSB0aGV5IGdyb2sgdGhlaXIKLSAgICAgICAgLy8gb3BlcmF0
aW9ucyBkZWVwbHkgZW5vdWdoIHRoYXQgdGhleSBoYXZlIG5vIG5lZWQgdG8gY2hlY2sgdGhpcyBi
aXQgLSBzbyB0aGlzIGNoZWF0IGlzCi0gICAgICAgIC8vIGZpbmUuCi0gICAgICAgIHJlc3VsdC53
cml0ZXNMb2NhbFN0YXRlID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ0NhbGw6CkBAIC02OTQsNiArNzEzLDcgQEAg
VmFsdWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEJp
dHdpc2VDYXN0OgogICAgIGNhc2UgTmVnOgorICAgIGNhc2UgRGVwZW5kOgogICAgICAgICByZXR1
cm4gVmFsdWVLZXkoa2luZCgpLCB0eXBlKCksIGNoaWxkKDApKTsKICAgICBjYXNlIEFkZDoKICAg
ICBjYXNlIFN1YjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2aXNpb24g
MjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNiArNjgsMTAgQEAgcHVibGljOgogICAgIAogICAgIE9wY29kZSBvcGNvZGUo
KSBjb25zdCB7IHJldHVybiBraW5kKCkub3Bjb2RlKCk7IH0KICAgICAKKyAgICAvLyBOb3RlIHRo
YXQgdGhlIGtpbmQgaXMgbWVhbnQgdG8gYmUgaW1tdXRhYmxlLiBEbyB0aGlzIHdoZW4geW91IGtu
b3cgdGhhdCB0aGlzIGlzIHNhZmUuIEl0J3Mgbm90CisgICAgLy8gdXN1YWxseSBzYWZlLgorICAg
IHZvaWQgc2V0S2luZFVuc2FmZWx5KEtpbmQga2luZCkgeyBtX2tpbmQgPSBraW5kOyB9CisgICAg
CiAgICAgLy8gSXQncyBnb29kIHByYWN0aWNlIHRvIG1pcnJvciBLaW5kIG1ldGhvZHMgaGVyZSwg
c28geW91IGNhbiBzYXkgdmFsdWUtPmlzQmxhaCgpCiAgICAgLy8gaW5zdGVhZCBvZiB2YWx1ZS0+
a2luZCgpLmlzQmxhaCgpLgogICAgIGJvb2wgaXNDaGlsbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KS5pc0NoaWxsKCk7IH0KQEAgLTEwNyw2ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgLy8gdmFsdWVz
IHdpdGggSWRlbnRpdGllcyBvbiBib3R0b20gY29uc3RhbnRzLiBGb3IgdGhpcyByZWFzb24sIHRo
aXMgdGFrZXMgYSBjYWxsYmFjayB0aGF0IGlzCiAgICAgLy8gcmVzcG9uc2libGUgZm9yIGNyZWF0
aW5nIGJvdHRvbXMuIFRoZXJlJ3MgYSB1dGlsaXR5IGZvciB0aGlzLCBzZWUgQjNCb3R0b21Qcm92
aWRlci5oLiBZb3UKICAgICAvLyBjYW4gYWxzbyBhY2Nlc3MgdGhhdCB1dGlsaXR5IHVzaW5nIHJl
cGxhY2VXaXRoQm90dG9tKEluc2VydGlvblNldCYsIHNpemVfdCkuCisgICAgLy8KKyAgICAvLyBZ
b3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEJvdHRvbVByb3ZpZGVyPgogICAgIHZvaWQgcmVwbGFjZVdpdGhCb3R0b20oY29uc3QgQm90
dG9tUHJvdmlkZXImKTsKICAgICAKQEAgLTMyMSw2ICszMjcsNyBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIElUb0Y6CiAgICAgICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAgIGNhc2UgQnJh
bmNoOgorICAgICAgICBjYXNlIERlcGVuZDoKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShudW1B
cmdzICE9IDEpKQogICAgICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJncyk7CiAgICAg
ICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMzggQEAKIAogI2luY2x1ZGUgPHd0Zi9QcmludFN0
cmVhbS5oPgogCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworVHlwZSBiZXN0VHlw
ZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBj
YXNlIFdpZHRoODoKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgY2FzZSBXaWR0aDMyOgorICAgICAg
ICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJldHVybiBJ
bnQzMjsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBGbG9hdDsKKyAgICAg
ICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gVm9pZDsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAg
ICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDY0OworICAgICAgICBjYXNlIEZQ
OgorICAgICAgICAgICAgcmV0dXJuIERvdWJsZTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICB9CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVm9pZDsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKIG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6V2lkdGggd2lkdGgpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDE4IEBA
IGlubGluZSBXaWR0aCB3aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCitpbmxpbmUgV2lkdGggY2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgpCit7
CisgICAgcmV0dXJuIHN0ZDo6bWF4KFdpZHRoMzIsIHdpZHRoKTsKK30KKworaW5saW5lIFdpZHRo
IGlzQ2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgpCit7CisgICAgcmV0dXJuIHdpZHRoID49IFdp
ZHRoMzI7Cit9CisKK1R5cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIGlu
bGluZSBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0aChCYW5rIGJhbmspCiB7CiAgICAgcmV0dXJuIGJh
bmsgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6IFdpZHRoNjQ7CkBAIC05Myw2ICsxMDUsMjAgQEAg
aW5saW5lIFdpZHRoIHdpZHRoRm9yQnl0ZXModW5zaWduZWQgYnl0ZQogICAgIH0KIH0KIAoraW5s
aW5lIHVpbnQ2NF90IG1hc2soV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgewor
ICAgIGNhc2UgV2lkdGg4OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDAwMGZmbGx1Owor
ICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAwZmZmZmxsdTsK
KyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwZmZmZmZmZmZsbHU7
CisgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICByZXR1cm4gMHhmZmZmZmZmZmZmZmZmZmZmbGx1
OworICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAkocmV2aXNpb24g
MjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgdW5zaWduZWQgQXJnOjpqc0hhc2goKSBjb25z
dAogICAgIGNhc2UgUmVsQ29uZDoKICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgY2FzZSBEb3VibGVD
b25kOgorICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICBy
ZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KTsKICAgICAgICAgYnJlYWs7
CkBAIC0xODIsNiArMTgzLDkgQEAgdm9pZCBBcmc6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5wcmludChhc0RvdWJsZUNvbmRp
dGlvbigpKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RhdHVzQ29uZDoKKyAgICAgICAg
b3V0LnByaW50KGFzU3RhdHVzQ29uZGl0aW9uKCkpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBTcGVjaWFsOgogICAgICAgICBvdXQucHJpbnQocG9pbnRlckR1bXAoc3BlY2lhbCgpKSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTI0MSw2ICsyNDUsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkRvdWJsZUNvbmQ6CiAgICAgICAgIG91
dC5wcmludCgiRG91YmxlQ29uZCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlN0
YXR1c0NvbmQ6CisgICAgICAgIG91dC5wcmludCgiU3RhdHVzQ29uZCIpOworICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBBcmc6OlNwZWNpYWw6CiAgICAgICAgIG91dC5wcmludCgiU3BlY2lhbCIp
OwogICAgICAgICByZXR1cm47CkBAIC0yODUsNiArMjkyLDkgQEAgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpFYXJseURlZjoKICAgICAgICAg
b3V0LnByaW50KCJFYXJseURlZiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OkVh
cmx5WkRlZjoKKyAgICAgICAgb3V0LnByaW50KCJFYXJseVpEZWYiKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgQXJnOjpTY3JhdGNoOgogICAgICAgICBvdXQucHJpbnQoIlNjcmF0Y2giKTsK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5o
CShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFy
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVs
Q29uZCwKICAgICAgICAgUmVzQ29uZCwKICAgICAgICAgRG91YmxlQ29uZCwKKyAgICAgICAgU3Rh
dHVzQ29uZCwKICAgICAgICAgU3BlY2lhbCwKICAgICAgICAgV2lkdGhBcmcKICAgICB9OwpAQCAt
MTUxLDYgKzE1Miw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gYXMgVXNlIGhhcyB1bmRlZmluZWQg
YmVoYXZpb3I6IHRoZSB1c2UgbWF5IGhhcHBlbiBiZWZvcmUgdGhlIGRlZiwgb3IgaXQgbWF5IGhh
cHBlbiBhZnRlcgogICAgICAgICAvLyBpdC4KICAgICAgICAgRWFybHlEZWYsCisgICAgICAgICAg
ICAKKyAgICAgICAgRWFybHlaRGVmLAogCiAgICAgICAgIC8vIFNvbWUgaW5zdHJ1Y3Rpb25zIG5l
ZWQgYSBzY3JhdGNoIHJlZ2lzdGVyLiBXZSBtb2RlbCB0aGlzIGJ5IHNheWluZyB0aGF0IHRoZSB0
ZW1wb3JhcnkgaXMKICAgICAgICAgLy8gZGVmaW5lZCBlYXJseSBhbmQgdXNlZCBsYXRlLiBUaGlz
IHJvbGUgaW1wbGllcyB0aGF0LgpAQCAtMTg2LDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6
CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjA2LDYgKzIxMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAg
ICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjI4LDYgKzIzMyw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAg
ICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2Ug
RWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHJvbGU7CiAgICAgICAgIGNhc2UgVXNlOgog
ICAgICAgICAgICAgcmV0dXJuIENvbGRVc2U7CkBAIC0yNTMsNiArMjU5LDcgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAg
IGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
Mjc0LDYgKzI4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNl
IFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVm
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtMjk0LDYgKzMwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBa
RGVmOgogICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAg
ICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzE1LDYgKzMyNCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
Y2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2Ny
YXRjaDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMzAsNiArMzQw
LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgTGF0ZVVz
ZToKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAg
ICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTM1OCw2ICszNjksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgor
ICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTMzLDYgKzU0NSwxNCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIEFyZyBz
dGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQorICAg
IHsKKyAgICAgICAgQXJnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFN0YXR1c0Nv
bmQ7CisgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IGNvbmRpdGlvbjsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKICAgICBzdGF0aWMgQXJnIHNwZWNpYWwoQWlyOjpTcGVjaWFsKiBz
cGVjaWFsKQogICAgIHsKICAgICAgICAgQXJnIHJlc3VsdDsKQEAgLTY1OCwxMiArNjc4LDE4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBEb3VibGVDb25kOwogICAgIH0KIAor
ICAgIGJvb2wgaXNTdGF0dXNDb25kKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBraW5k
KCkgPT0gU3RhdHVzQ29uZDsKKyAgICB9CisKICAgICBib29sIGlzQ29uZGl0aW9uKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgUmVsQ29uZDoK
ICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAg
IGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUxLDYgKzg3Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAg
IGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNl
IFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTg3Miw2ICs4OTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAg
ICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNh
c2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRo
QXJnOgogICAgICAgICBjYXNlIEludmFsaWQ6CkBAIC0xMDU4LDYgKzEwODYsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBj
YXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBT
cGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0xMTc3LDYgKzEyMDYsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbj4obV9vZmZzZXQpOwogICAgIH0KICAg
ICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uIGFzU3RhdHVzQ29uZGl0aW9u
KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1N0YXR1c0NvbmQoKSk7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uPihtX29m
ZnNldCk7CisgICAgfQorICAgIAogICAgIC8vIFRlbGxzIHlvdSBpZiB0aGUgQXJnIGlzIGludmVy
dGlibGUuIE9ubHkgY29uZGl0aW9uIGFyZ3VtZW50cyBhcmUgaW52ZXJ0aWJsZSwgYW5kIGV2ZW4g
Zm9yIHRob3NlLCB0aGVyZQogICAgIC8vIGFyZSBhIGZldyBleGNlcHRpb25zIC0gbm90YWJseSBP
dmVyZmxvdyBhbmQgU2lnbmVkLgogICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3QKQEAgLTEx
ODQsNiArMTIxOSw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAg
ICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2Ug
U3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFJlc0Nv
bmQ6CiAgICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OmlzSW52ZXJ0aWJsZShhc1Jl
c3VsdENvbmRpdGlvbigpKTsKQEAgLTEyMDQsNiArMTI0MCw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiByZXNDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNSZXN1bHRDb25kaXRp
b24oKSkpOwogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAgICAgICByZXR1cm4gZG91
YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzRG91YmxlQ29uZGl0aW9uKCkpKTsKKyAg
ICAgICAgY2FzZSBTdGF0dXNDb25kOgorICAgICAgICAgICAgcmV0dXJuIHN0YXR1c0NvbmQoTWFj
cm9Bc3NlbWJsZXI6OmludmVydChhc1N0YXR1c0NvbmRpdGlvbigpKSk7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgcmV0dXJuIEFyZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJC
YXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckJhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICsz
NSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlCiAKIGNvbnN0
IGNoYXIqIGNvbnN0IEJhc2ljQmxvY2s6OmR1bXBQcmVmaXggPSAiIyI7CiAKK3ZvaWQgQmFzaWNC
bG9jazo6c2V0U3VjY2Vzc29ycyhCYXNpY0Jsb2NrKiBibG9jaykKK3sKKyAgICBtX3N1Y2Nlc3Nv
cnMucmVzaXplKDEpOworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRhcmdldDsKK30KKwordm9pZCBC
YXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YWtlbiwgRnJlcXVlbnRl
ZEJsb2NrIG5vdFRha2VuKQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMik7CisgICAgbV9z
dWNjZXNzb3JzWzBdID0gdGFrZW47CisgICAgbV9zdWNjZXNzb3JzWzFdID0gbm90VGFrZW47Cit9
CisKIGJvb2wgQmFzaWNCbG9jazo6YWRkUHJlZGVjZXNzb3IoQmFzaWNCbG9jayogYmxvY2spCiB7
CiAgICAgcmV0dXJuIEIzOjphZGRQcmVkZWNlc3Nvcih0aGlzLCBibG9jayk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkocmV2aXNpb24gMjEy
OTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN1Y2Nlc3Nv
ckxpc3QmIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KICAgICBT
dWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAKKyAg
ICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKTsKKyAgICB2b2lkIHNldFN1Y2Nl
c3NvcnMoRnJlcXVlbnRlZEJsb2NrLCBGcmVxdWVudGVkQmxvY2spOworCiAgICAgQmFzaWNCbG9j
ayogc3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3Nv
cihpbmRleCkuYmxvY2soKTsgfQogICAgIEJhc2ljQmxvY2sqJiBzdWNjZXNzb3JCbG9jayh1bnNp
Z25lZCBpbmRleCkgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAgU3Vj
Y2Vzc29yQ29sbGVjdGlvbjxCYXNpY0Jsb2NrLCBTdWNjZXNzb3JMaXN0PiBzdWNjZXNzb3JCbG9j
a3MoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlv
blNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJC
bG9ja0luc2VydGlvblNldC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRpb25TZXQuaCIK
KworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJCYXNpY0Jsb2NrLmgiCisjaW5j
bHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworQmxvY2tJbnNlcnRpb25T
ZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KENvZGUgJmNvZGUpCisgICAgOiBHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQoY29kZS5tX2Jsb2NrcykKK3sKK30KKworQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9j
a0luc2VydGlvblNldCgpCit7Cit9CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIK
KworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQor
CisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJc25lcnRpb25TZXQuaCIKKyNpbmNsdWRlICJBaXJD
b2RlLmgiCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCitj
bGFzcyBJbnNlcnRpb25TZXQ7CisKK3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJh
c2ljQmxvY2s+OjpCbG9ja0luc2VydGlvbiBCbG9ja0luc2VydGlvbjsKKworY2xhc3MgQmxvY2tJ
bnNlcnRpb25TZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+
IHsKK3B1YmxpYzoKKyAgICBCbG9ja0luc2VydGlvblNldChDb2RlJik7CisgICAgfkJsb2NrSW5z
ZXJ0aW9uU2V0KCk7CisgICAgCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBldmVudHVhbGx5IGlt
cGxlbWVudCBCMzo6QmxvY2tJbnNlcnRpb25TZXQncyBzcGxpdEZvcndhcmQoKS4KK307CisKK30g
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5l
cmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDggQEAgdm9pZCBwcmVwYXJlRm9y
R2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgICAgICBkYXRhTG9nKCJJbml0aWFsIGFpcjpcbiIp
OwogICAgICAgICBkYXRhTG9nKGNvZGUpOwogICAgIH0KKyAgICAKKyAgICBzaW1wbGlmeUNGRyhj
b2RlKTsKIAogICAgIGxvd2VyTWFjcm9zKGNvZGUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02NjgsMjggKzY2OCwzODAgQEAgTG9hZDggVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAK
ICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3E4IFU6Rzo4LCBaRDpHOjMyCisgICAgQWRkciwgVG1w
CisgICAgSW5kZXgsIFRtcAorCiBTdG9yZTggVTpHOjgsIEQ6Rzo4CiAgICAgVG1wLCBJbmRleAog
ICAgIFRtcCwgQWRkcgogICAgIHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBBZGRyCiAK
K1N0b3JlUmVsOCBVOkc6OCwgRDpHOjgKKyAgICBUbXAsIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKwogTG9hZDhTaWduZWRFeHRl
bmRUbzMyIFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitM
b2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAg
ICBJbmRleCwgVG1wCisKIExvYWQxNiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAg
ICBJbmRleCwgVG1wCiAKK0xvYWRBY3ExNiBVOkc6MTYsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAK
KyAgICBJbmRleCwgVG1wCisKIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMy
CiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTZTaWduZWRFeHRlbmRU
bzMyIFU6RzoxNiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogU3Rv
cmUxNiBVOkc6MTYsIEQ6RzoxNgogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKIAorU3Rv
cmVBY3ExNiBVOkc6MTYsIEQ6RzoxNgorICAgIFRtcCwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKwor
TG9hZEFjcTMyIFU6RzozMiBaRDpHOjMyCisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAKKyAg
ICBJbmRleCwgVG1wCisKK1N0b3JlUmVsMzIgVTpHOjMyIFpEOkc6MzIKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgK
KworNjQ6IExvYWRBY3E2NCBVOkc6NjQgWkQ6Rzo2NAorICAgIFRtcCwgVG1wCisgICAgQWRkciwg
VG1wCisgICAgSW5kZXgsIFRtcAorCis2NDogU3RvcmVSZWw2NCBVOkc6NjQgWkQ6Rzo2NAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4Njog
SW1tLCBJbmRleAorCisjIFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4KK3g4NjogQXRvbWljU3Ry
b25nQ0FTOCBVOkc6MzIsIFVEOkc6OCwgVTpHOjgsIFVEOkc6OCwgWkQ6Rzo4CisgICAgU3RhdHVz
Q29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIElu
ZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6Rzoz
MiwgVUQ6RzoxNiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJv
bmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiwgWkQ6Rzo4CisgICAgU3Rh
dHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAs
IEluZGV4LCBUbXAKKworeDg2XzY0OiBBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQs
IFU6Rzo2NCwgVUQ6Rzo2NCwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRy
LCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9t
aWNTdHJvbmdDQVM4IFVEOkc6OCwgVTpHOjgsIFVEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkcgor
ICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVRDpHOjE2LCBV
Okc6MzIsIFVEOkc6MTYKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4
CisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMzIgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyCisgICAg
VG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1N0
cm9uZ0NBUzY0IFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NAorICAgIFRtcCosIFRtcCwgQWRkcgor
ICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM4IFU6Rzoz
MiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBU
bXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNo
QXRvbWljU3Ryb25nQ0FTMTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYgL2JyYW5j
aAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCos
IFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6
MzIsIFU6RzozMiwgVUQ6RzozMiAvYnJhbmNoCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBB
ZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEJyYW5jaEF0
b21pY1N0cm9uZ0NBUzY0IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2gK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBU
bXAsIEluZGV4CisKK3g4NjogQXRvbWljQWRkOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRy
CisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBB
dG9taWNBZGQxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDMyIFU6Rzoz
MiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljQWRkNjQgVTpHOjY0LCBVRDpHOjY0Cisg
ICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2OiBBdG9taWNTdWI4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJ
bW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1
YjE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViMzIgVTpHOjMyLCBVRDpH
OjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNTdWI2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0s
IEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODY6IEF0b21pY0FuZDggVTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMTYgVTpH
OjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBbmQzMiBVOkc6MzIsIFVEOkc6MzIKKyAg
ICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODZfNjQ6IEF0b21pY0FuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgor
ICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRv
bWljT3I4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yMTYgVTpHOjE2LCBVRDpH
OjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2OiBBdG9taWNPcjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRk
cgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82
NDogQXRvbWljT3I2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjggVTpH
OjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2OiBBdG9taWNYb3IzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJ
bW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21p
Y1hvcjY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljTmVnOCBVRDpHOjgKKyAg
ICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOZWcxNiBVRDpHOjE2CisgICAgQWRkcgor
ICAgIEluZGV4CisKK3g4NjogQXRvbWljTmVnMzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRl
eAorCit4ODZfNjQ6IEF0b21pY05lZzY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5kZXgKKwor
eDg2OiBBdG9taWNOb3Q4IFVEOkc6OAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21p
Y05vdDE2IFVEOkc6MTYKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QzMiBV
RDpHOjMyCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Nl82NDogQXRvbWljTm90NjQgVUQ6Rzo2
NAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQ4IFVEOkc6OCwgVUQ6
Rzo4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQx
NiBVRDpHOjE2LCBVRDpHOjE2CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IEF0b21pY1hjaGdBZGQzMiBVRDpHOjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hjaGdBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGc4IFVEOkc6OCwgVUQ6
Rzo4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGcxNiBV
RDpHOjE2LCBVRDpHOjE2CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0
b21pY1hjaGczMiBVRDpHOjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODZfNjQ6IEF0b21pY1hjaGc2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCithcm02NDogTG9hZExpbms4IFU6Rzo4LCBaRDpHOjgKKyAgICBB
ZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTggVTpHOjgsIFpE
Okc6OAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworIyBTdXBlciBjb25mdXNpbmcg
ZmFjdDogdGhpcyByZXR1cm5zIDAgdG8gbWVhbiBzdWNjZXNzLCAxIHRvIG1lYW4gZmFpbHVyZS4K
K2FybTY0OiBTdG9yZUNvbmQ4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwg
VG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw4IFU6Rzo4LCBE
Okc6OCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisK
K2FybTY0OiBMb2FkTGluazE2IFU6RzoxNiwgWkQ6RzoxNgorICAgIEFkZHIsIFRtcAorICAgIElu
ZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMTYgVTpHOjE2LCBaRDpHOjE2CisgICAgQWRk
ciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2LCBEOkc6
MTYsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCith
cm02NDogU3RvcmVDb25kUmVsMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAsIEFk
ZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmszMiBVOkc6MzIs
IFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlu
a0FjcTMyIFU6RzozMiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwor
YXJtNjQ6IFN0b3JlQ29uZDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRy
LCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDMyIFU6Rzoz
MiwgRDpHOjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBU
bXAKKworYXJtNjQ6IExvYWRMaW5rNjQgVTpHOjY0LCBaRDpHOjY0CisgICAgQWRkciwgVG1wCisg
ICAgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmtBY3E2NCBVOkc6NjQsIFpEOkc6NjQKKyAg
ICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQ2NCBVOkc6NjQs
IEQ6Rzo2NCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1w
CisKK2FybTY0OiBTdG9yZUNvbmRSZWw2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAgIFRt
cCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBEZXBlbmQzMiBVOkc6
MzIsIEQ6RzozMgorICAgIFRtcCwgVG1wCisKK2FybTY0OiBEZXBlbmQ2NCBVOkc6NjQsIEQ6Rzo2
NAorICAgIFRtcCwgVG1wCisKIENvbXBhcmUzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpH
OjMyCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRtcAogICAgIFJlbENvbmQsIFRtcCwgSW1tLCBU
bXAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3B0aW1pemVCbG9ja09y
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9w
dGltaXplQmxvY2tPcmRlci5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE3Nyw2ICsxNzcsMTAgQEAgdm9pZCBvcHRpbWl6ZUJsb2NrT3JkZXIoQ29kZSYgY29kZSkK
ICAgICAgICAgY2FzZSBCcmFuY2hTdWI2NDoKICAgICAgICAgY2FzZSBCcmFuY2hOZWczMjoKICAg
ICAgICAgY2FzZSBCcmFuY2hOZWc2NDoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdD
QVM4OgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2OgorICAgICAgICBjYXNl
IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyOgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0cm9u
Z0NBUzY0OgogICAgICAgICAgICAgaWYgKGNvZGUuZmluZE5leHRCbG9jayhibG9jaykgPT0gYmxv
Y2stPnN1Y2Nlc3NvckJsb2NrKDApICYmIGJyYW5jaC5hcmdzWzBdLmlzSW52ZXJ0aWJsZSgpKSB7
CiAgICAgICAgICAgICAgICAgc3RkOjpzd2FwKGJsb2NrLT5zdWNjZXNzb3IoMCksIGJsb2NrLT5z
dWNjZXNzb3IoMSkpOwogICAgICAgICAgICAgICAgIGJyYW5jaC5hcmdzWzBdID0gYnJhbmNoLmFy
Z3NbMF0uaW52ZXJ0ZWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
UGFkSW50ZXJmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsNyBAQCB2b2lkIHBhZEludGVyZmVyZW5jZShDb2RlJiBjb2RlKQog
ICAgICAgICAgICAgICAgIFsmXSAoQXJnJiwgQXJnOjpSb2xlIHJvbGUsIEJhbmssIFdpZHRoKSB7
CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocm9sZSkgewogICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFyZzo6RWFybHlEZWY6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJs
eVpEZWY6CiAgICAgICAgICAgICAgICAgICAgICAgICBoYXNFYXJseURlZiA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6
OkxhdGVVc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZl
cnl0aGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1NSw2ICsxNTUsNyBAQCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBjb2RlKQogICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6TGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgQXJnOjpTY3JhdGNoOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlE
ZWY6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoYmFu
aykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNldEJlZm9yZS5nZXQocmVn
KSAmJiAhc2V0QWZ0ZXIuZ2V0KHJlZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0QWZ0ZXIuc2V0KHJlZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L29wY29kZV9nZW5lcmF0b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHdvcmtpbmcgY29weSkK
QEAgLTE4Miw3ICsxODIsNyBAQCBkZWYgbGV4KHN0ciwgZmlsZU5hbWUpCiBlbmQKIAogZGVmIGlz
Um9sZSh0b2tlbikKLSAgICB0b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8KFVB
KXwoUykpXFovCisgICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoWkQpfChVWkQpfChVQSl8
KFMpfChFRCl8KEVaRCl8KExVKSlcWi8KIGVuZAogCiBkZWYgaXNHRih0b2tlbikKQEAgLTE5MCw3
ICsxOTAsNyBAQCBkZWYgaXNHRih0b2tlbikKIGVuZAogCiBkZWYgaXNLaW5kKHRva2VuKQotICAg
IHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwoQml0SW1tKXwoQml0SW1tNjQpfChB
ZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpKVxaLworICAgIHRv
a2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwoQml0SW1tKXwoQml0SW1tNjQpfChBZGRy
KXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpfChTdGF0dXNDb25kKSlc
Wi8KIGVuZAogCiBkZWYgaXNBcmNoKHRva2VuKQpAQCAtMjY0LDcgKzI2NCw3IEBAIGNsYXNzIFBh
cnNlcgogCiAgICAgZGVmIGNvbnN1bWVLaW5kCiAgICAgICAgIHJlc3VsdCA9IHRva2VuLnN0cmlu
ZwotICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwgQml0SW1t
LCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgb3IgRG91Ymxl
Q29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKKyAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0
ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgQWRkciwgSW5kZXgs
IFJlbENvbmQsIFJlc0NvbmQsIERvdWJsZUNvbmQsIG9yIFN0YXR1c0NvbmQpIikgdW5sZXNzIGlz
S2luZChyZXN1bHQpCiAgICAgICAgIGFkdmFuY2UKICAgICAgICAgcmVzdWx0CiAgICAgZW5kCkBA
IC02NTEsNiArNjUxLDEyIEBAIHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHJvbGUgPSAiVXNlQWRkciIKICAgICAgICAgICAgICAgICB3aGVuICJTIgogICAgICAg
ICAgICAgICAgICAgICByb2xlID0gIlNjcmF0Y2giCisgICAgICAgICAgICAgICAgd2hlbiAiRUQi
CisgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiRWFybHlEZWYiCisgICAgICAgICAgICAgICAg
d2hlbiAiRVpEIgorICAgICAgICAgICAgICAgICAgICByb2xlID0gIkVhcmx5WkRlZiIKKyAgICAg
ICAgICAgICAgICB3aGVuICJMVSIKKyAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJMYXRlVXNl
IgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAg
ICAgICAgICAgICBlbmQKQEAgLTgxOSw2ICs4MjUsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRl
ZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJSZWxDb25kIgogICAgICAgICAgICAgICAgIHdo
ZW4gIlJlc0NvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29uZCIKKyAgICAgICAg
ICAgICAgICB3aGVuICJTdGF0dXNDb25kIgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQga2luZDogI3traW5kLm5hbWV9IgogICAgICAg
ICAgICAgICAgIGVuZApAQCAtMTEwNSw2ICsxMTEyLDggQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0
ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFz
UmVzdWx0Q29uZGl0aW9uKCkiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29uZCIKICAg
ICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNEb3VibGVDb25k
aXRpb24oKSIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgorICAgICAgICAgICAg
ICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc1N0YXR1c0NvbmRpdGlvbigpIgog
ICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302949</attachid>
            <date>2017-02-28 10:48:03 -0800</date>
            <delta_ts>2017-02-28 11:47:27 -0800</delta_ts>
            <desc>just when I thought I was done with x86</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>206588</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMSBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OwogCQkwRjJENERERDE5ODMyRDM0MDA3RDRC
MTkgLyogRGVidWdnZXJTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJENEREQjE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5j
cHAgKi87IH07CiAJCTBGMkQ0RERFMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENEREQzE5
ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBU
b1RoaXNTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyRDRERTUxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi87IH07
CkBAIC0yNzY0LDYgKzI3NjksMTEgQEAKIAkJMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIz
QmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0aCA9
IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRDFFNjBB
RTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7IHBhdGggPSBiMy9CM1dp
ZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0IzMUU2MzQzRTgwMEMx
MzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBC
M0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRvbWlj
VmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyog
QWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5z
ZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkExRTYz
NDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIvQWly
QmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRE
REIxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQ
cm9maWxlckxvZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI5Miw2ICs1MzAyLDggQEAKIAkJCQkwRkVD
ODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4
MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4
MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNC
YW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5j
cHAgKi8sCkBAIC01MzU0LDYgKzUzNjYsNyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyog
QjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4
MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3
NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTQ2OSw2ICs1NDgyLDggQEAKIAkJCQkwRjY0RUFG
MjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJE
QUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFD
REM3MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5oICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgw
MEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYz
NDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIx
QkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFD
NDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYx
ODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC03
MzU0LDggKzczNjksOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9B
c3NlbWJsZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyog
TWFjcm9Bc3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0
NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYx
MkIxIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4
M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3
NzE4NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywK
QEAgLTc5NTYsNiArNzk3MSw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
ckluc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3RDcxRDlEQzQ0MjAwMUI5
ODI1IC8qIEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0JDMUU2MzQ0MEMwMEMx
MzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0
MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkUzNEMxQTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJS
ZWdBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDQ3LDYgKzgwNjMsNyBAQAogCQkJCTQzNDIy
QTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQdHJWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNGNzAwQzEzODM5IC8qIEIz
R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOEUwRTFC
RjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYz
M0ZDRkMxQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRlVGFpbHMuaCBpbiBIZWFk
ZXJzICovLApAQCAtODM2Niw2ICs4MzgzLDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4NDQ3
MjggLyogREZHT1NSRXhpdEZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEz
QjYwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9taWNW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8qIERG
R1BoYW50b21JbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMxNEVG
OTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFQjE5
RDBCQTdEMDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAtMTAy
NDgsNiArMTAyNjYsNyBAQAogCQkJCTlFNzI5NDA3MTkwRjAxQTUwMDFBOTFCNSAvKiBJbml0aWFs
aXplVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTNFNUI3MTg1QjhCRDMwMDdF
OTVBRCAvKiBJbmplY3RlZFNjcmlwdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTE0QjJDMjE4
NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGMkM2M0I2MUU2MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1OEUzNTkxMTg2MERFQ0YwMDFGMjRGRSAvKiBJbmplY3RlZFNjcmlwdEhv
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1Q0ExODVGOTYyNDAwN0U5NUFEIC8qIElu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTg0MEUyMDE4N0I3
Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xMDI2Niw2ICsxMDI4NSw3IEBACiAJCQkJRTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJBIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMy
NDM4QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1MEU0QjYxMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQkIxRTYzNDQwQTAwQzEzODM5
IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NTE2NUQy
MUJERjBCOTgwMDNCNzVDMSAvKiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0YxMDdFQzM3NjAwNDI3QTQ4IC8qIElu
dGVybmFsRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtSYW5kb20uaD4KIApAQCAtODksNiArOTAsMjMgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gVGltZXNFaWdodDsKICAgICB9CiAgICAgCisgICAgZW51bSBTdGF0dXND
b25kaXRpb24geworICAgICAgICBTdWNjZXNzLAorICAgICAgICBGYWlsdXJlCisgICAgfTsKKyAg
ICAKKyAgICBzdGF0aWMgU3RhdHVzQ29uZGl0aW9uIGludmVydChTdGF0dXNDb25kaXRpb24gY29u
ZGl0aW9uKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICAgICAgY2Fz
ZSBTdWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIEZhaWx1cmU7CisgICAgICAgIGNhc2UgRmFp
bHVyZToKKyAgICAgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgICAgICB9CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdWNjZXNzOworICAg
IH0KKyAgICAKICAgICBzdHJ1Y3QgQmFzZUluZGV4OwogICAgIAogICAgIC8vIEFkZHJlc3M6CkBA
IC0xMTA4LDMgKzExMjYsMjYgQEAgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBl
LCBNYQogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwor
CisjaWYgRU5BQkxFKEFTU0VNQkxFUikKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDxj
bGFzcyBBc3NlbWJsZXJUeXBlLCBjbGFzcyBNYWNyb0Fzc2VtYmxlclR5cGU+Cit2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgdHlwZW5hbWUgSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1ibGVyVHlwZT46OlN0YXR1c0NvbmRpdGlv
biBjb25kaXRpb24pCit7CisgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICBjYXNlIEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlLCBNYWNyb0Fzc2VtYmxlclR5cGU+
OjpTdWNjZXNzOgorICAgICAgICBvdXQucHJpbnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1h
Y3JvQXNzZW1ibGVyVHlwZT46OkZhaWx1cmU6CisgICAgICAgIG91dC5wcmludCgiRmFpbHVyZSIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxF
UikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTEsMTYgKzI1MSw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2
b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0Lmlu
ZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQxNihSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfcm0oc3JjLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lk
IGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fz
c2VtYmxlci5hbmRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFuZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfaW0o
aW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAg
IHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kMTYoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X2ltKGlt
bS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZEltbTMyIGltbSwg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9pbShpbW0u
bV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kYl9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIGlmIChvcDEgPT0gb3AyKQpAQCAtNjU0LDE2ICs3MDksNzEgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjE2KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yndf
aW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKwor
ICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0s
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9pbShp
bW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBzdWIxNihUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YndfaW0o
c3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfbXIoc3JjLm9mZnNldCwg
c3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lk
IHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fz
c2VtYmxlci5zdWJsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisg
ICAgdm9pZCBzdWIxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Up
OworICAgIH0KKworICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZv
aWQgc3ViMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklE
IHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX3Jt
KHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2Fs
ZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9ycihzcmMsIGRlc3QpOwpAQCAt
Njc3LDYgKzc4Nyw1MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2lt
KGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lk
IHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
aWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAg
IGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpOworICAgICAg
ICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20o
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3Zh
bHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2Nh
bGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3J3X2ltKGltbS5t
X3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsK
KyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3Zh
bHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDhf
dD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhv
cmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRl
c3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQpAQCAt
NjkwLDExICs4NDQsNDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JsX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54
b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJ
bmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwg
ZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihBZGRyZXNz
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9t
cihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgeG9y
MzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUs
IGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdp
c3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBv
cDIpCkBAIC0yNzQzLDE4NyArMjkyNyw4ODIgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbSgwLCAwLCBYODZSZWdpc3RlcnM6
OmVzcCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBt
X2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7IH0pOworICAgIH0KIAotICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQg
cHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBzdG9yZXMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2
LgotICAgIHZvaWQgc3RvcmVGZW5jZSgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewor
ICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwg
WyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAK
LSAgICAvLyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBu
b3JtYWwgbG9hZHMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgotICAgIHZvaWQgbG9hZEZlbmNl
KCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhj
aGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAg
fQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGlu
c3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdp
c3RlcklEIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhl
Y3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5z
Y2FsZSk7IH0pOwogICAgIH0KLSAgICAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBs
YWNlbWVudFNpemUoKQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgYXRv
bWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgp
CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFg4NkFzc2Vt
Ymxlcjo6cGF0Y2hhYmxlSnVtcFNpemUoKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQs
IGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9h
dGluZ1BvaW50Um91bmRpbmcoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3Mp
CiAgICAgewotICAgICAgICBpZiAoc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0
ZTo6Tm90Q2hlY2tlZCkKLSAgICAgICAgICAgIHVwZGF0ZUVheDFFY3hGbGFncygpOwotICAgICAg
ICByZXR1cm4gc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAg
ICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVy
LmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7
CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNBVlgoKQorICAgIHZvaWQgYXRvbWlj
U3Ryb25nQ0FTOChSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7Ci0gICAgICAgIC8vIEFWWCBzdGlsbCBjYXVz
ZXMgbXlzdGVyaW91cyByZWdyZXNzaW9ucyBhbmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1h
c3NpdmUuCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4
cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2Fs
ZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hGbGFncygpCisg
ICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAgICBpbnQg
ZmxhZ3MgPSAwOwotI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgICAgIGludCBjcHVJbmZvWzRdOwot
ICAgICAgICBfX2NwdWlkKGNwdUluZm8sIDB4MSk7Ci0gICAgICAgIGZsYWdzID0gY3B1SW5mb1sy
XTsKLSNlbGlmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSNpZiBDUFUoWDg2XzY0KQotICAgICAg
ICBhc20gKAotICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgotICAgICAgICAgICAgImNw
dWlkOyIKLSAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIg
KGZsYWdzKQotICAgICAgICAgICAgOgotICAgICAgICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVl
Y3giLCAiJWVkeCIKLSAgICAgICAgICAgICk7Ci0jZWxzZQotICAgICAgICBhc20gKAotICAgICAg
ICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgotICAgICAgICAgICAgInB1c2hsICUlZWJ4OyIKLSAg
ICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAgICAicG9wbCAlJWVieDsiCi0gICAgICAgICAg
ICAibW92bCAlJWVjeCwgJTA7IgotICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAg
ICAgIDoKLSAgICAgICAgICAgIDogIiVlYXgiLCAiJWVjeCIsICIlZWR4IgotICAgICAgICAgICAg
KTsKLSNlbmRpZgotI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSAgICAgICAgc19z
c2U0XzFDaGVja1N0YXRlID0gKGZsYWdzICYgKDEgPDwgMTkpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6
U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKLSAgICAgICAgc19hdnhDaGVja1N0YXRlID0g
KGZsYWdzICYgKDEgPDwgMjgpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0
YXRlOjpDbGVhcjsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBb
Jl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotI2lmIEVOQUJMRShNQVNNX1BST0JFKQotICAgIHZv
aWQgcHJvYmUoUHJvYmVGdW5jdGlvbiwgdm9pZCogYXJnMSwgdm9pZCogYXJnMik7Ci0jZW5kaWYg
Ly8gRU5BQkxFKE1BU01fUFJPQkUpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwg
WyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CiAK
LXByb3RlY3RlZDoKLSAgICBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24oUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRy
ZXNzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFg4NkFzc2VtYmxlcjo6Q29u
ZGl0aW9uPihjb25kKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0
LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9u
IHg4NkNvbmRpdGlvbihSZXN1bHRDb25kaXRpb24gY29uZCkKKyAgICB2b2lkIGF0b21pY1N0cm9u
Z0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFg4
NkFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4
cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2Fs
ZSk7IH0pOwogICAgIH0KIAotICAgIHZvaWQgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAg
ICAgICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNhbiBvbmx5IHNldCB0aGUgZmlyc3QgNCByZWdpc3Rl
cnM7Ci0gICAgICAgIC8vIGVzcC4uZWRpIGFyZSBtYXBwZWQgdG8gdGhlICdoJyByZWdpc3RlcnMh
Ci0gICAgICAgIGlmIChkZXN0ID49IDQpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhjaGds
X3JyKGRlc3QsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNl
dENDX3IoY29uZCwgWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bW92emJsX3JyKFg4NlJlZ2lzdGVyczo6ZWF4LCBYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ycihkZXN0LCBYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBtX2Fzc2VtYmxlci5z
ZXRDQ19yKGNvbmQsIGRlc3QpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3Z6YmxfcnIoZGVzdCwg
ZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAgfQogCi0gICAgdm9pZCBjbW92KFg4
NkFzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNl
SW5kZXggYWRkcmVzcykKICAgICB7Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgbV9hc3NlbWJs
ZXIuY21vdnFfcnIoY29uZCwgc3JjLCBkZXN0KTsKLSNlbHNlCi0gICAgICAgIG1fYXNzZW1ibGVy
LmNtb3ZsX3JyKGNvbmQsIHNyYywgZGVzdCk7Ci0jZW5kaWYKKyAgICAgICAgcmV0dXJuIGJyYW5j
aEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c0xaQ05UKCkKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAgICBpZiAoc19semNudENo
ZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKSB7Ci0gICAgICAgICAgICBp
bnQgZmxhZ3MgPSAwOwotI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgICAgICAgICBpbnQgY3B1SW5m
b1s0XTsKLSAgICAgICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHg4MDAwMDAwMSk7Ci0gICAgICAg
ICAgICBmbGFncyA9IGNwdUluZm9bMl07Ci0jZWxpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCi0j
aWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgICAgIGFzbSAoCi0gICAgICAgICAgICAgICAgIm1vdmwg
JDB4ODAwMDAwMDEsICUlZWF4OyIKLSAgICAgICAgICAgICAgICAiY3B1aWQ7IgotICAgICAgICAg
ICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICAgICAgOiAiPWciIChmbGFncykK
LSAgICAgICAgICAgICAgICA6Ci0gICAgICAgICAgICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVl
Y3giLCAiJWVkeCIKLSAgICAgICAgICAgICAgICApOwotI2Vsc2UKLSAgICAgICAgICAgIGFzbSAo
Ci0gICAgICAgICAgICAgICAgIm1vdmwgJDB4ODAwMDAwMDEsICUlZWF4OyIKLSAgICAgICAgICAg
ICAgICAicHVzaGwgJSVlYng7IgotICAgICAgICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAg
ICAgICAgInBvcGwgJSVlYng7IgotICAgICAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0g
ICAgICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgICAgICA6Ci0gICAgICAg
ICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICAgICAgKTsKLSNl
bmRpZgotI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSAgICAgICAgICAgIHNfbHpj
bnRDaGVja1N0YXRlID0gKGZsYWdzICYgMHgyMCkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQ
VUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHNfbHpjbnRD
aGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0p
OwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQk1JMSgpCisgICAgSnVtcCBicmFu
Y2hBdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCiAg
ICAgewotICAgICAgICBpZiAoc19ibWkxQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5v
dENoZWNrZWQpIHsKLSAgICAgICAgICAgIGludCBmbGFncyA9IDA7Ci0jaWYgQ09NUElMRVIoTVNW
QykKLSAgICAgICAgICAgIGludCBjcHVJbmZvWzRdOwotICAgICAgICAgICAgX19jcHVpZChjcHVJ
bmZvLCAweDgwMDAwMDAxKTsKLSAgICAgICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsKLSNlbGlm
IENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSAgICAgICAgICAgIGFzbSAoCi0gICAgICAgICAgICAg
ICAgICJtb3ZsICQweDcsICUlZWF4OyIKLSAgICAgICAgICAgICAgICAgIm1vdmwgJDB4MCwgJSVl
Y3g7IgotICAgICAgICAgICAgICAgICAiY3B1aWQ7IgotICAgICAgICAgICAgICAgICAibW92bCAl
JWVieCwgJTA7IgotICAgICAgICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAgICAgICAgICAg
ICAgICA6Ci0gICAgICAgICAgICAgICAgIDogIiVlYXgiLCAiJWVieCIsICIlZWN4IiwgIiVlZHgi
Ci0gICAgICAgICAgICAgICAgICk7Ci0jZW5kaWYgLy8gQ09NUElMRVIoR0NDX09SX0NMQU5HKQot
ICAgICAgICAgICAgc3RhdGljIGludCBCTUkxRmVhdHVyZUJpdCA9IDEgPDwgMzsKLSAgICAgICAg
ICAgIHNfYm1pMUNoZWNrU3RhdGUgPSAoZmxhZ3MgJiBCTUkxRmVhdHVyZUJpdCkgPyBDUFVJRENo
ZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHNfYm1pMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8aW50IHNpemVPZlJlZ2lzdGVyPgotICAgIHZvaWQgY3R6QWZ0ZXJCc2Yo
UmVnaXN0ZXJJRCBkc3QpCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgSnVtcCBzcmNJc05vblpl
cm8gPSBtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKE5vblplcm8pKTsKLSAgICAgICAgbW92
ZShUcnVzdGVkSW1tMzIoc2l6ZU9mUmVnaXN0ZXIpLCBkc3QpOwotICAgICAgICBzcmNJc05vblpl
cm8ubGluayh0aGlzKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1w
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCBy
ZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0
b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNz
LCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
YXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRy
ZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzE2KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAg
ICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUs
IGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTMzIoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgewor
ICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFs
dWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTMzIo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBu
ZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
bmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1Zh
bHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVMxNihT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJy
YW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwg
YWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRk
cmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3Mp
OworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNT
dHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
ZGQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChUcnVz
dGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChyZWcsIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMTYo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihpbW0s
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFJlZ2lzdGVySUQg
cmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFkZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRk
MzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihUcnVz
dGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQzMihyZWcsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWI4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1N1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjgoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4KFJlZ2lzdGVySUQg
cmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIHN1YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNTdWI4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChyZWcsIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMTYo
aW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihUcnVzdGVk
SW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNTdWIxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihyZWcsIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIz
MihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoUmVnaXN0ZXJJ
RCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgc3ViMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNTdWIzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFu
ZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQxNihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYW5kMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBbmQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMyKHJlZywgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09y
OChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I4KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFJlZ2lzdGVySUQgcmVnLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yOChS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2KGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihUcnVzdGVkSW1tMzIgaW1tLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09y
MTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2KHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNP
cjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihSZWdpc3RlcklEIHJl
ZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgo
aW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I4KFJlZ2lzdGVy
SUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYb3I4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9y
MTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihUcnVz
dGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYb3IxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IxNihyZWcsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFJlZ2lzdGVySUQgcmVnLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNY
b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMy
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgeG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNYb3IzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzgoYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnOChhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2KGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzE2KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWcxNihhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMyKGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzMyKEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWczMihhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90OChhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljTm90MTYoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDE2KGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljTm90MzIoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDMyKGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBt
X2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkd19ybShyZWcs
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGR3X3Jt
KHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDMyKFJlZ2lzdGVy
SUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDMyKFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxl
ci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMTYo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3dfcm0ocmVnLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMTYo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShyZWcsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fz
c2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIC8vIFdlIHRha2Ug
dGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBzdG9yZXMuIFNv
LCBpdCdzIGEgbm8tb3Agb24geDg2LgorICAgIHZvaWQgc3RvcmVGZW5jZSgpCisgICAgeworICAg
IH0KKworICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9u
IG9mIG5vcm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBsb2Fk
RmVuY2UoKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAo
Q29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVz
dGluYXRpb24pCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChp
bnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBS
ZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4
SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3QgcGF0
Y2hhYmxlSnVtcFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6cGF0
Y2hhYmxlSnVtcFNpemUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0
aW5nUG9pbnRSb3VuZGluZygpCisgICAgeworICAgICAgICBpZiAoc19zc2U0XzFDaGVja1N0YXRl
ID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkKKyAgICAgICAgICAgIHVwZGF0ZUVheDFF
Y3hGbGFncygpOworICAgICAgICByZXR1cm4gc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hl
Y2tTdGF0ZTo6U2V0OworICAgIH0KKworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQVZYKCkKKyAg
ICB7CisgICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlzdGVyaW91cyByZWdyZXNzaW9ucyBh
bmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUuCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAgIHsK
KyAgICAgICAgaW50IGZsYWdzID0gMDsKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgICAgICBpbnQg
Y3B1SW5mb1s0XTsKKyAgICAgICAgX19jcHVpZChjcHVJbmZvLCAweDEpOworICAgICAgICBmbGFn
cyA9IGNwdUluZm9bMl07CisjZWxpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCisjaWYgQ1BVKFg4
Nl82NCkKKyAgICAgICAgYXNtICgKKyAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKKyAg
ICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAgICAg
ICAgICAgOiAiPWciIChmbGFncykKKyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVlYXgi
LCAiJWVieCIsICIlZWN4IiwgIiVlZHgiCisgICAgICAgICAgICApOworI2Vsc2UKKyAgICAgICAg
YXNtICgKKyAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKKyAgICAgICAgICAgICJwdXNo
bCAlJWVieDsiCisgICAgICAgICAgICAiY3B1aWQ7IgorICAgICAgICAgICAgInBvcGwgJSVlYng7
IgorICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAgICAgICAgIDogIj1nIiAoZmxh
Z3MpCisgICAgICAgICAgICA6CisgICAgICAgICAgICA6ICIlZWF4IiwgIiVlY3giLCAiJWVkeCIK
KyAgICAgICAgICAgICk7CisjZW5kaWYKKyNlbmRpZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xBTkcp
CisgICAgICAgIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDE5KSkgPyBDUFVJ
RENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CisgICAgICAgIHNfYXZ4
Q2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDI4KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6
IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CisgICAgfQorCisjaWYgRU5BQkxFKE1BU01fUFJPQkUp
CisgICAgdm9pZCBwcm9iZShQcm9iZUZ1bmN0aW9uLCB2b2lkKiBhcmcxLCB2b2lkKiBhcmcyKTsK
KyNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKKworcHJvdGVjdGVkOgorICAgIFg4NkFzc2Vt
Ymxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCisg
ICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8WDg2QXNzZW1ibGVyOjpDb25kaXRpb24+
KGNvbmQpOworICAgIH0KKworICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlv
bihSZXN1bHRDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCk7CisgICAgfQorCisgICAgWDg2QXNzZW1i
bGVyOjpDb25kaXRpb24geDg2Q29uZGl0aW9uKFN0YXR1c0NvbmRpdGlvbiBjb25kKQorICAgIHsK
KyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAgICAgICAg
ICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkU7CisgICAgICAgIGNhc2UgRmFpbHVy
ZToKKyAgICAgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbk5FOworICAgICAg
ICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkU7CisgICAgfQorCisgICAgdm9pZCBzZXQzMihYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworI2lmIENQ
VShYODYpCisgICAgICAgIC8vIE9uIDMyLWJpdCB4ODYgd2UgY2FuIG9ubHkgc2V0IHRoZSBmaXJz
dCA0IHJlZ2lzdGVyczsKKyAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gn
IHJlZ2lzdGVycyEKKyAgICAgICAgaWYgKGRlc3QgPj0gNCkgeworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIueGNoZ2xfcnIoZGVzdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuc2V0Q0Nfcihjb25kLCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5tb3Z6YmxfcnIoWDg2UmVnaXN0ZXJzOjplYXgsIFg4NlJlZ2lzdGVyczo6ZWF4
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JyKGRlc3QsIFg4NlJlZ2lzdGVyczo6
ZWF4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIG1f
YXNzZW1ibGVyLnNldENDX3IoY29uZCwgZGVzdCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnpi
bF9ycihkZXN0LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGNtb3YoWDg2QXNzZW1ibGVyOjpD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisj
aWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgbV9hc3NlbWJsZXIuY21vdnFfcnIoY29uZCwgc3JjLCBk
ZXN0KTsKKyNlbHNlCisgICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZsX3JyKGNvbmQsIHNyYywgZGVz
dCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0xaQ05UKCkKKyAg
ICB7CisgICAgICAgIGlmIChzX2x6Y250Q2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5v
dENoZWNrZWQpIHsKKyAgICAgICAgICAgIGludCBmbGFncyA9IDA7CisjaWYgQ09NUElMRVIoTVNW
QykKKyAgICAgICAgICAgIGludCBjcHVJbmZvWzRdOworICAgICAgICAgICAgX19jcHVpZChjcHVJ
bmZvLCAweDgwMDAwMDAxKTsKKyAgICAgICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsKKyNlbGlm
IENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICAgICAgYXNt
ICgKKyAgICAgICAgICAgICAgICAibW92bCAkMHg4MDAwMDAwMSwgJSVlYXg7IgorICAgICAgICAg
ICAgICAgICJjcHVpZDsiCisgICAgICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAg
ICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQorICAgICAgICAgICAgICAgIDoKKyAgICAgICAgICAg
ICAgICA6ICIlZWF4IiwgIiVlYngiLCAiJWVjeCIsICIlZWR4IgorICAgICAgICAgICAgICAgICk7
CisjZWxzZQorICAgICAgICAgICAgYXNtICgKKyAgICAgICAgICAgICAgICAibW92bCAkMHg4MDAw
MDAwMSwgJSVlYXg7IgorICAgICAgICAgICAgICAgICJwdXNobCAlJWVieDsiCisgICAgICAgICAg
ICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICAgICAicG9wbCAlJWVieDsiCisgICAgICAgICAg
ICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAgICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQor
ICAgICAgICAgICAgICAgIDoKKyAgICAgICAgICAgICAgICA6ICIlZWF4IiwgIiVlY3giLCAiJWVk
eCIKKyAgICAgICAgICAgICAgICApOworI2VuZGlmCisjZW5kaWYgLy8gQ09NUElMRVIoR0NDX09S
X0NMQU5HKQorICAgICAgICAgICAgc19semNudENoZWNrU3RhdGUgPSAoZmxhZ3MgJiAweDIwKSA/
IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gc19semNudENoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpT
ZXQ7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNCTUkxKCkKKyAgICB7CisgICAg
ICAgIGlmIChzX2JtaTFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkg
eworICAgICAgICAgICAgaW50IGZsYWdzID0gMDsKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgICAg
ICAgICAgaW50IGNwdUluZm9bNF07CisgICAgICAgICAgICBfX2NwdWlkKGNwdUluZm8sIDB4ODAw
MDAwMDEpOworICAgICAgICAgICAgZmxhZ3MgPSBjcHVJbmZvWzJdOworI2VsaWYgQ09NUElMRVIo
R0NDX09SX0NMQU5HKQorICAgICAgICAgICAgYXNtICgKKyAgICAgICAgICAgICAgICAgIm1vdmwg
JDB4NywgJSVlYXg7IgorICAgICAgICAgICAgICAgICAibW92bCAkMHgwLCAlJWVjeDsiCisgICAg
ICAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAgICAgICAgICJtb3ZsICUlZWJ4LCAlMDsi
CisgICAgICAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCisgICAgICAgICAgICAgICAgIDoKKyAg
ICAgICAgICAgICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAg
ICAgICAgICAgKTsKKyNlbmRpZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCisgICAgICAgICAg
ICBzdGF0aWMgaW50IEJNSTFGZWF0dXJlQml0ID0gMSA8PCAzOworICAgICAgICAgICAgc19ibWkx
Q2hlY2tTdGF0ZSA9IChmbGFncyAmIEJNSTFGZWF0dXJlQml0KSA/IENQVUlEQ2hlY2tTdGF0ZTo6
U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
c19ibWkxQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6OlNldDsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTxpbnQgc2l6ZU9mUmVnaXN0ZXI+CisgICAgdm9pZCBjdHpBZnRlckJzZihSZWdpc3Rl
cklEIGRzdCkKKyAgICB7CisgICAgICAgIEp1bXAgc3JjSXNOb25aZXJvID0gbV9hc3NlbWJsZXIu
akNDKHg4NkNvbmRpdGlvbihOb25aZXJvKSk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHNp
emVPZlJlZ2lzdGVyKSwgZHN0KTsKKyAgICAgICAgc3JjSXNOb25aZXJvLmxpbmsodGhpcyk7Cisg
ICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBhdG9taWNT
dHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgcmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAg
c3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFu
ZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBzZXQzMih4ODZDb25kaXRpb24o
Y29uZCksIHJlc3VsdCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUyhSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBjb25z
dCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2
UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGZ1
bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgp
OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgSnVtcCBicmFuY2hB
dG9taWNTdHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRSZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVk
QW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgZnVuYygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZS
ZWdpc3RlcnM6OmVheCk7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZD
b25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0MiwxMSArMzQyLDQxIEBAIHB1
YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ycihzcmMsIGRlc3QpOwogICAgIH0KIAor
ICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFuZDY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KEFk
ZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
bmRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGFu
ZDY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxl
LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfaXIoaW1tLm1f
dmFsdWUsIHNyY0Rlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pbShpbW0u
bV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2
NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3Qu
aW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbVB0
ciBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIGludHB0cl90IGludFZh
bHVlID0gaW1tLmFzSW50cHRyKCk7CkBAIC02MTksMTEgKzY0OSwyMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ltKGltbS5t
X3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KEJhc2VJbmRleCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfbXIoc3Jj
Lm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisK
ICAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CkBA
IC02NTEsNiArNjkxLDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgeG9yNjQoUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
eG9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2Nh
bGUpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJh
c2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9tcihzcmMub2Zmc2V0
LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKworICAgIHZv
aWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIueG9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAg
IHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pcihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7CkBAIC0x
Mjk0LDcgKzEzNTksMjI1IEBAIHB1YmxpYzoKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21t
b246Om1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkp
OwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNv
bmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBtYXNrOCk7CiAgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNzU3Ryb25nQ0FTKGNvbmQs
IGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJl
c3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljc1N0cm9uZ0NBUyhj
b25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hn
cV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
NjQoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljc1N0cm9uZ0NBUyhleHBlY3RlZEFu
ZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9u
Z0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljc1N0cm9uZ0NBUyhleHBl
Y3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
OyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRv
bWljc1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIu
Y21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNz
U3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgYXRvbWljc1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
bmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFr
Q0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIGF0b21pY3NTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KIAorICAgIEp1bXAgYnJhbmNo
QXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljc1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
V2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNzU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0
LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNBZGQ2NChUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIGFkZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljQWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkNjQoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNB
ZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2NChp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWI2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWI2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNBbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2
NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3Rl
ZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yNjQocmVnLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc2NChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY05lZzY0KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc2NChhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q2NChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY05vdDY0KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q2NChhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIueGFkZHFfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBtX2Fzc2VtYmxlci54YWRkcV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hjaGc2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcs
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hjaGc2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJl
ZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgfQorICAgIAogICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci5jdnR0c2Qyc2lxX3JyKHNyYywgZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xOTYsMTAgKzE5NiwxMiBAQCBwcml2YXRlOgogICAgICAgICBPUF8yQllURV9F
U0NBUEUgICAgICAgICAgICAgICAgID0gMHgwRiwKICAgICAgICAgT1BfQU5EX0V2R3YgICAgICAg
ICAgICAgICAgICAgICA9IDB4MjEsCiAgICAgICAgIE9QX0FORF9HdkV2ICAgICAgICAgICAgICAg
ICAgICAgPSAweDIzLAorICAgICAgICBPUF9TVUJfRXZHYiAgICAgICAgICAgICAgICAgICAgID0g
MHgyOCwKICAgICAgICAgT1BfU1VCX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MjksCiAg
ICAgICAgIE9QX1NVQl9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDJCLAogICAgICAgICBP
UF9TVUJfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgyRCwKICAgICAgICAgUFJFX1BSRURJ
Q1RfQlJBTkNIX05PVF9UQUtFTiAgICA9IDB4MkUsCisgICAgICAgIE9QX1hPUl9FdkdiICAgICAg
ICAgICAgICAgICAgICAgPSAweDMwLAogICAgICAgICBPUF9YT1JfRXZHdiAgICAgICAgICAgICAg
ICAgICAgID0gMHgzMSwKICAgICAgICAgT1BfWE9SX0d2RXYgICAgICAgICAgICAgICAgICAgICA9
IDB4MzMsCiAgICAgICAgIE9QX1hPUl9FQVhJdiAgICAgICAgICAgICAgICAgICAgPSAweDM1LApA
QCAtMjIzLDYgKzIyNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QX0dST1VQMV9FdkliICAgICAg
ICAgICAgICAgICAgPSAweDgzLAogICAgICAgICBPUF9URVNUX0ViR2IgICAgICAgICAgICAgICAg
ICAgID0gMHg4NCwKICAgICAgICAgT1BfVEVTVF9Fdkd2ICAgICAgICAgICAgICAgICAgICA9IDB4
ODUsCisgICAgICAgIE9QX1hDSEdfRXZHYiAgICAgICAgICAgICAgICAgICAgPSAweDg2LAogICAg
ICAgICBPUF9YQ0hHX0V2R3YgICAgICAgICAgICAgICAgICAgID0gMHg4NywKICAgICAgICAgT1Bf
TU9WX0ViR2IgICAgICAgICAgICAgICAgICAgICA9IDB4ODgsCiAgICAgICAgIE9QX01PVl9Fdkd2
ICAgICAgICAgICAgICAgICAgICAgPSAweDg5LApAQCAtMjkwLDYgKzI5Myw4IEBAIHByaXZhdGU6
CiAgICAgICAgIE9QX1NFVENDICAgICAgICAgICAgPSAweDkwLAogICAgICAgICBPUDJfM0JZVEVf
RVNDQVBFX0FFID0gMHhBRSwKICAgICAgICAgT1AyX0lNVUxfR3ZFdiAgICAgICA9IDB4QUYsCisg
ICAgICAgIE9QMl9DTVBYQ0hHYiAgICAgICAgPSAweEIwLAorICAgICAgICBPUDJfQ01QWENIRyAg
ICAgICAgID0gMHhCMSwKICAgICAgICAgT1AyX01PVlpYX0d2RWIgICAgICA9IDB4QjYsCiAgICAg
ICAgIE9QMl9CU0YgICAgICAgICAgICAgPSAweEJDLAogICAgICAgICBPUDJfVFpDTlQgICAgICAg
ICAgID0gMHhCQywKQEAgLTI5OCw2ICszMDMsOCBAQCBwcml2YXRlOgogICAgICAgICBPUDJfTU9W
U1hfR3ZFYiAgICAgID0gMHhCRSwKICAgICAgICAgT1AyX01PVlpYX0d2RXcgICAgICA9IDB4Qjcs
CiAgICAgICAgIE9QMl9NT1ZTWF9HdkV3ICAgICAgPSAweEJGLAorICAgICAgICBPUDJfWEFERGIg
ICAgICAgICAgID0gMHhDMCwKKyAgICAgICAgT1AyX1hBREQgICAgICAgICAgICA9IDB4QzEsCiAg
ICAgICAgIE9QMl9QRVhUUldfR2RVZEliICAgPSAweEM1LAogICAgICAgICBPUDJfUFNMTFFfVWRx
SWIgICAgID0gMHg3MywKICAgICAgICAgT1AyX1BTUkxRX1VkcUliICAgICA9IDB4NzMsCkBAIC02
MTQsMTEgKzYyMSw0MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgYW5kbF9t
cihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwog
ICAgIHZvaWQgYW5kbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBhbmRsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmR3
X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFu
ZGxfcm0oc3JjLCBvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kd19ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIGFuZGxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfQU5EX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0FORF9FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
ICAgICB2b2lkIGFuZGxfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtNjQxLDYgKzY4MCw0MSBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFuZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9P
UEVSQU5EX1NJWkUpOworICAgICAgICBhbmRsX2ltKGltbSwgb2Zmc2V0LCBiYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFuZGxfaW0oaW1tLCBvZmZzZXQs
IGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQg
YW5kYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAjaWYgQ1BV
KFg4Nl82NCkKICAgICB2b2lkIGFuZHFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0
KQogICAgIHsKQEAgLTY1Nyw2ICs3MzEsNDggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYW5k
cV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhU
RU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
R1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwg
YmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFuZHFfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAg
ICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgY29uc3Qgdm9p
ZCogYWRkcikKICAgICB7CkBAIC04MzEsMTEgKzk0Nyw0MyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgc3VibF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9p
ZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vid19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YmxfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBk
c3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAt
ODYxLDYgKzEwMDksNDEgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBz
dWJsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMy
KGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJ
YiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VC
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdWJ3X2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgc3VibF9pbShpbW0sIG9m
ZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X2ltKGludCBpbW0sIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBz
dWJsX2ltKGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZv
aWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9T
VUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0p
OworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBzdWJxX3JyKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC04NzIsMTEgKzEwNTUsMjEgQEAgcHVibGlj
OgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNl
LCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9tcihpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJxX3JtKFJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQp
OwogICAgIH0KIAorICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJxX2lyKGludCBpbW0sIFJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGlt
bSkpIHsKQEAgLTkwMSw2ICsxMDk0LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIHN1YnFf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1t
KSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIs
IEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VC
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2b2lkIHN1Ymxf
aW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC05MjQsMTEgKzExMjgsMjEg
QEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0d2RXYsIGRz
dCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcmxfbXIoaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQg
ZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBk
c3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHhvcmxf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZz
ZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgeG9ybF9pbShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTQwLDYgKzExNTQsNjMgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgfQogCisgICAgdm9pZCB4b3JsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAg
fQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRf
U0laRSk7CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAg
IHZvaWQgeG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZzZXQs
IGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3J3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgeG9ybF9pbShpbW0sIG9mZnNldCwg
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICB4b3JsX2lt
KGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9y
Yl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9FdkdiLCBzcmMsIGJhc2UsIG9m
ZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JiX2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQg
eG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAgICAgdm9p
ZCB4b3JsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENB
Tl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTk3NCwxMSArMTI0NSw0NyBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRF
TkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9H
Uk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHhvcnFfaW0oaW50IGltbSwgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwor
ICAgICAgICB9CisgICAgfQorICAgIAogICAgIHZvaWQgeG9ycV9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAg
ICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX1hPUl9HdkV2LCBkZXN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQg
eG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfWE9SX0d2RXYsIGRlc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgbHpjbnRfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQpAQCAtMTU4NiwxMSArMTg5MywzOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQogCisg
ICAgdm9pZCB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwg
c3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNoZ2Jfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZH
Yiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4
Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lk
IHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCB4Y2hncV9ycihSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMTYwNiw2ICsxOTQwLDExIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3Jj
LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgeGNoZ3Ffcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWENIR19Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAg
IHZvaWQgbW92bF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0yNzc1LDYg
KzMxMTQsOTAgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX0xPQ0sp
OwogICAgIH0KICAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29C
eXRlT3A4KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcDgoT1AyX0NNUFhDSEdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVP
cChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgY21weGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJf
Q01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhj
aGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5
dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgY21weGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
Y21weGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wNjQoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3A4KE9QMl9YQUREYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IHhhZGRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3
b0J5dGVPcDgoT1AyX1hBRERiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCB4YWRkd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9P
UEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkd19ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRf
U0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGxfcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHFfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgeGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKyAgICAKICAgICB2b2lkIG1mZW5jZSgpCiAgICAgewogICAgICAg
ICBtX2Zvcm1hdHRlci50aHJlZUJ5dGVPcChPUDJfM0JZVEVfRVNDQVBFX0FFLCBPUDNfTUZFTkNF
KTsKQEAgLTM3NTEsNiArNDE3NCwyNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgd3JpdGVyLnJl
Z2lzdGVyTW9kUk0oZ3JvdXBPcCwgcm0pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB0d29C
eXRlT3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwg
aW50IG9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZm
ZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWYo
Ynl0ZVJlZ1JlcXVpcmVzUmV4KHJlZywgYmFzZSksIHJlZywgMCwgYmFzZSk7CisgICAgICAgICAg
ICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAg
d3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1v
cnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHR3
b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludCBvZmZzZXQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7
CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcpIHx8
IHJlZ1JlcXVpcmVzUmV4KGluZGV4LCBiYXNlKSwgcmVnLCBpbmRleCwgYmFzZSk7CisgICAgICAg
ICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAg
ICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5t
ZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgfQor
CiAgICAgICAgIC8vIEltbWVkaWF0ZXM6CiAgICAgICAgIC8vCiAgICAgICAgIC8vIEFuIGltbWVk
YWl0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlhdGUgYWZ0ZXIgYW4gb3AgaGFz
IGJlZW4gZW1pdHRlZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1Zh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNW
YWx1ZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRv
bWljVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK0F0b21pY1ZhbHVlOjp+QXRvbWljVmFsdWUoKQor
eworfQorCitXaWR0aCBBdG9taWNWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3dpZHRoOworfQorCit2b2lkIEF0b21pY1ZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50
ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChjb21t
YSwgIndpZHRoID0gIiwgbV93aWR0aCk7CisgICAgCisgICAgTWVtb3J5VmFsdWU6OmR1bXBNZXRh
KGNvbW1hLCBvdXQpOworfQorCitWYWx1ZSogQXRvbWljVmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG5ldyBBdG9taWNWYWx1ZSgqdGhpcyk7Cit9CisKK0F0b21pY1ZhbHVl
OjpBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1
ZSogb3BlcmFuZCwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1l
bW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIG9wZXJhbmQtPnR5cGUoKSwgb3JpZ2luLCBv
ZmZzZXQsIG9wZXJhbmQsIHBvaW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNl
dEZlbmNlUmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBl
KG9wZXJhdGlvbldpZHRoKCkpID09IG9wZXJhdGlvblR5cGUoKSk7CisgICAgCisgICAgc3dpdGNo
IChraW5kLm9wY29kZSgpKSB7CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRv
bWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdT
dWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3Jp
Z2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwg
VmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKENo
ZWNrZWRPcGNvZGUsIGtpbmQsIGtpbmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMy
IDogZXhwZWN0ZWRWYWx1ZS0+dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwgZXhwZWN0ZWRWYWx1ZSwg
bmV3VmFsdWUsIHBvaW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNl
UmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKG9wZXJh
dGlvbldpZHRoKCkpID09IG9wZXJhdGlvblR5cGUoKSk7CisKKyAgICBzd2l0Y2ggKGtpbmQub3Bj
b2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdD
QVM6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAv
LyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9t
aWNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21p
Y1ZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRv
bWljVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2lk
dGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIEF0b21pY1ZhbHVlIDogcHVibGljIE1lbW9yeVZhbHVlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHJldHVybiBp
c0F0b21pYyhraW5kLm9wY29kZSgpKTsKKyAgICB9CisgICAgCisgICAgfkF0b21pY1ZhbHVlKCk7
CisgICAgCisgICAgVHlwZSBvcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gY2hpbGQoMCkt
PnR5cGUoKTsgfQorICAgIAorICAgIFdpZHRoIG9wZXJhdGlvbldpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV93aWR0aDsgfQorICAgIAorICAgIC8vIFN5bm9ueW0gZm9yIG9wZXJhdGlvbldpZHRoKCks
IGlmIHlvdSdyZSBhY2Nlc3NpbmcgdmlhIE1lbW9yeVZhbHVlLgorICAgIFdpZHRoIGFjY2Vzc1dp
ZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBkdW1wTWV0
YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIAorICAg
IFZhbHVlKiBjbG9uZUltcGwoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKKyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmln
aW4sIFdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0
ID0gMCk7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUq
IGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qg
b2Zmc2V0ID0gMCk7CisgICAgCisgICAgV2lkdGggbV93aWR0aDsKK307CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNp
b24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25T
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDM1ICszNiwxMyBAQAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CiAKIEJsb2NrSW5zZXJ0aW9uU2V0OjpCbG9ja0luc2VydGlvblNldChQcm9j
ZWR1cmUgJnByb2MpCi0gICAgOiBtX3Byb2MocHJvYykKKyAgICA6IEdlbmVyaWNCbG9ja0luc2Vy
dGlvblNldChwcm9jLm1fYmxvY2tzKQorICAgICwgbV9wcm9jKHByb2MpCiB7CiB9CiAKIEJsb2Nr
SW5zZXJ0aW9uU2V0Ojp+QmxvY2tJbnNlcnRpb25TZXQoKSB7IH0KIAotdm9pZCBCbG9ja0luc2Vy
dGlvblNldDo6aW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5zZXJ0aW9uKQotewotICAgIG1faW5z
ZXJ0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRpb24pKTsKLX0KLQotQmFzaWNCbG9jayogQmxv
Y2tJbnNlcnRpb25TZXQ6Omluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSkK
LXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3IEJhc2ljQmxvY2so
VUlOVF9NQVgsIGZyZXF1ZW5jeSkpOwotICAgIEJhc2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdl
dCgpOwotICAgIGluc2VydChCbG9ja0luc2VydGlvbihpbmRleCwgV1RGTW92ZShibG9jaykpKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6
aW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAg
ICByZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgoKSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/
IGZyZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5KCkpOwotfQotCi1CYXNpY0Jsb2NrKiBCbG9j
a0luc2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVx
dWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChhZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5j
eSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBhZnRlci0+ZnJlcXVlbmN5KCkpOwotfQotCiBC
YXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3YXJkKAogICAgIEJhc2ljQmxv
Y2sqIGJsb2NrLCB1bnNpZ25lZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0KiBpbnNlcnRpb25T
ZXQsIGRvdWJsZSBmcmVxdWVuY3kpCiB7CkBAIC0xMDIsMzIgKzgwLDYgQEAgQmFzaWNCbG9jayog
QmxvY2tJbnNlcnRpb25TZXQ6OnNwbGl0Rm9ydwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJv
b2wgQmxvY2tJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoKQotewotICAgIGlmIChtX2luc2VydGlvbnMu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgLy8gV2UgYWxsb3cg
aW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3JkZXIuIFNvLCB3ZSBuZWVkIHRv
IHNvcnQgdGhlbSBiZWZvcmUKLSAgICAvLyBydW5uaW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMu
IFdlIHN0cm9uZ2x5IHByZWZlciBhIHN0YWJsZSBzb3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCi0g
ICAgLy8gZmFzdCwgc28gd2UgdXNlIGJ1YmJsZSBzb3J0LgotICAgIGJ1YmJsZVNvcnQobV9pbnNl
cnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7Ci0KLSAgICBleGVjdXRlSW5zZXJ0
aW9ucyhtX3Byb2MubV9ibG9ja3MsIG1faW5zZXJ0aW9ucyk7Ci0gICAgCi0gICAgLy8gUHJ1bmUg
b3V0IGVtcHR5IGVudHJpZXMuIFRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdz
Ci0gICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KLSAg
ICBtX3Byb2MubV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCi0gICAgICAgIFsmXSAoc3RkOjp1
bmlxdWVfcHRyPEJhc2ljQmxvY2s+JiBibG9ja1B0cikgLT4gYm9vbCB7Ci0gICAgICAgICAgICBy
ZXR1cm4gIWJsb2NrUHRyOwotICAgICAgICB9KTsKLSAgICAKLSAgICAvLyBNYWtlIHN1cmUgdGhh
dCB0aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGluZGljZXMuCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fcHJvYy5tX2Jsb2Nrcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9wcm9jLm1f
YmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlv
blNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEIz
X0pJVCkKIAorI2luY2x1ZGUgIkIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVk
ZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtMzUsMjYgKzM2LDEzIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgewogCiBjbGFzcyBJbnNlcnRpb25TZXQ7CiAKLXR5cGVkZWYgV1RGOjpJbnNlcnRpb248
c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBCbG9ja0luc2VydGlvbjsKK3R5cGVkZWYgR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+OjpCbG9ja0luc2VydGlvbiBCbG9ja0lu
c2VydGlvbjsKIAotY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgeworY2xhc3MgQmxvY2tJbnNlcnRp
b25TZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+IHsKIHB1
YmxpYzoKICAgICBCbG9ja0luc2VydGlvblNldChQcm9jZWR1cmUmKTsKICAgICB+QmxvY2tJbnNl
cnRpb25TZXQoKTsKICAgICAKLSAgICB2b2lkIGluc2VydChCbG9ja0luc2VydGlvbiYmKTsKLQot
ICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGluZGV4LgotICAgIEJhc2ljQmxv
Y2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCi0g
ICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5
IHlvdSB3aWxsIG5vdCBwYXNzIHRoZSBmcmVxdWVuY3kKLSAgICAvLyBhcmd1bWVudC4gUGFzc2lu
ZyBQTmFOIGNhdXNlcyB1cyB0byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3Jl
JyBibG9jay4gVGhhdCdzCi0gICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3YW50LgotICAgIEJhc2lj
QmxvY2sqIGluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kg
PSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYWZ0ZXIgdGhlIGdpdmVuIGJs
b2NrLgotICAgIEJhc2ljQmxvY2sqIGluc2VydEFmdGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3Vi
bGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KICAgICAvLyBBIGhlbHBlciB0byBzcGxpdCBhIGJsb2Nr
IHdoZW4gZm9yd2FyZCBpdGVyYXRpbmcgb3ZlciBpdC4gSXQgY3JlYXRlcyBhIG5ldyBibG9jayB0
byBob2xkCiAgICAgLy8gZXZlcnl0aGluZyBiZWZvcmUgdGhlIGluc3RydWN0aW9uIGF0IHZhbHVl
SW5kZXguIFRoZSBjdXJyZW50IGJsb2NrIGlzIGxlZnQgd2l0aAogICAgIC8vIGV2ZXJ5dGhpbmcg
YXQgYW5kIGFmdGVyIHZhbHVlSW5kZXguIElmIHRoZSBvcHRpb25hbCBJbnNlcnRpb25TZXQgaXMg
cHJvdmlkZWQsIGl0IHdpbGwgZ2V0CkBAIC04MCwxMiArNjgsOSBAQCBwdWJsaWM6CiAgICAgQmFz
aWNCbG9jayogc3BsaXRGb3J3YXJkKAogICAgICAgICBCYXNpY0Jsb2NrKiwgdW5zaWduZWQmIHZh
bHVlSW5kZXgsIEluc2VydGlvblNldCogPSBudWxscHRyLAogICAgICAgICBkb3VibGUgZnJlcXVl
bmN5ID0gUE5hTik7Ci0gICAgCi0gICAgYm9vbCBleGVjdXRlKCk7CiAKIHByaXZhdGU6CiAgICAg
UHJvY2VkdXJlJiBtX3Byb2M7Ci0gICAgVmVjdG9yPEJsb2NrSW5zZXJ0aW9uLCA4PiBtX2luc2Vy
dGlvbnM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIs
OCBAQCBib29sIEVmZmVjdHM6OmludGVyZmVyZXMoY29uc3QgRWZmZWN0cyYgCiAgICAgICAgIHx8
IGludGVyZmVyZXNXaXRoV3JpdGVzUGlubmVkKG90aGVyLCAqdGhpcykKICAgICAgICAgfHwgd3Jp
dGVzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90
aGVyLnJlYWRzKQotICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53cml0ZXMpOworICAg
ICAgICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53cml0ZXMpCisgICAgICAgIHx8IChmZW5jZSAm
JiBvdGhlci5mZW5jZSk7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3I9PShjb25zdCBFZmZl
Y3RzJiBvdGhlcikgY29uc3QKQEAgLTk1LDcgKzk2LDggQEAgYm9vbCBFZmZlY3RzOjpvcGVyYXRv
cj09KGNvbnN0IEVmZmVjdHMmIAogICAgICAgICAmJiB3cml0ZXNQaW5uZWQgPT0gb3RoZXIud3Jp
dGVzUGlubmVkCiAgICAgICAgICYmIHJlYWRzUGlubmVkID09IG90aGVyLnJlYWRzUGlubmVkCiAg
ICAgICAgICYmIHdyaXRlcyA9PSBvdGhlci53cml0ZXMKLSAgICAgICAgJiYgcmVhZHMgPT0gb3Ro
ZXIucmVhZHM7CisgICAgICAgICYmIHJlYWRzID09IG90aGVyLnJlYWRzCisgICAgICAgICYmIGZl
bmNlID09IG90aGVyLmZlbmNlOwogfQogCiBib29sIEVmZmVjdHM6Om9wZXJhdG9yIT0oY29uc3Qg
RWZmZWN0cyYgb3RoZXIpIGNvbnN0CkBAIC0xMjAsNiArMTIyLDggQEAgdm9pZCBFZmZlY3RzOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbgogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJXcml0
ZXNQaW5uZWQiKTsKICAgICBpZiAocmVhZHNQaW5uZWQpCiAgICAgICAgIG91dC5wcmludChjb21t
YSwgIlJlYWRzUGlubmVkIik7CisgICAgaWYgKGZlbmNlKQorICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJGZW5jZSIpOwogICAgIGlmICh3cml0ZXMpCiAgICAgICAgIG91dC5wcmludChjb21tYSwg
IldyaXRlczoiLCB3cml0ZXMpOwogICAgIGlmIChyZWFkcykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VmZmVjdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNFZmZlY3RzLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0VmZmVjdHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsMTAgQEAgc3Ry
dWN0IEVmZmVjdHMgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjMxNzMKICAgICBib29sIHJlYWRzUGlubmVkIHsgZmFsc2UgfTsKICAgICBib29sIHdy
aXRlc1Bpbm5lZCB7IGZhbHNlIH07CisgICAgCisgICAgLy8gTWVtb3J5IGZlbmNlcyBjYW5ub3Qg
YmUgcmVvcmRlcmVkIGFyb3VuZCBlYWNoIG90aGVyIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZWZmZWN0
cy4gVGhpcyBpcyBmbGFnZ2VkCisgICAgLy8gaWYgdGhlIG9wZXJhdGlvbiBpcyBhIG1lbW9yeSBm
ZW5jZS4KKyAgICBib29sIGZlbmNlIHsgZmFsc2UgfTsKIAogICAgIEhlYXBSYW5nZSB3cml0ZXM7
CiAgICAgSGVhcFJhbmdlIHJlYWRzOwpAQCAtODksNiArOTMsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7
CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CiAgICAgICAgIHJlc3Vs
dC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIHJlc3VsdC53cml0ZXNQaW5uZWQgPSB0cnVl
OworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIApAQCAtMTAzLDcgKzEwOCw3IEBAIHN0cnVjdCBFZmZlY3RzIHsKIAogICAgIGJvb2wg
bXVzdEV4ZWN1dGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4
aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVk
OworICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2Nh
bFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQgfHwgZmVuY2U7CiAgICAgfQogCiAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHJlb3JkZXJpbmcgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlc2UgcmVz
cGVjdGl2ZSBlZmZlY3RzIHdvdWxkIGNoYW5nZSBwcm9ncmFtCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVz
c2lvbnMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQyLDYg
KzE0Miw3IEBAIHN0cnVjdCBJbXB1cmVCbG9ja0RhdGEgewogCiAgICAgUmFuZ2VTZXQ8SGVhcFJh
bmdlPiByZWFkczsgLy8gVGhpcyBvbmx5IGdldHMgdXNlZCBmb3IgZm9yd2FyZCBzdG9yZSBlbGlt
aW5hdGlvbi4KICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+IHdyaXRlczsgLy8gVGhpcyBnZXRzIHVz
ZWQgZm9yIGJvdGggbG9hZCBhbmQgc3RvcmUgZWxpbWluYXRpb24uCisgICAgYm9vbCBmZW5jZTsK
IAogICAgIE1lbW9yeVZhbHVlTWFwIHN0b3Jlc0F0SGVhZDsKICAgICBNZW1vcnlWYWx1ZU1hcCBt
ZW1vcnlWYWx1ZXNBdFRhaWw7CkBAIC0xNzQsMTIgKzE3NSwxNCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeSAmJiBtZW1vcnktPmlzU3RvcmUo
KQogICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS5yZWFkcy5vdmVybGFwcyhtZW1vcnktPnJh
bmdlKCkpCi0gICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1v
cnktPnJhbmdlKCkpKQorICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS53cml0ZXMub3Zlcmxh
cHMobWVtb3J5LT5yYW5nZSgpKQorICAgICAgICAgICAgICAgICAgICAmJiAoIWRhdGEuZmVuY2Ug
fHwgIW1lbW9yeS0+aGFzRmVuY2UoKSkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3RvcmVz
QXRIZWFkLmFkZChtZW1vcnkpOwogICAgICAgICAgICAgICAgIGRhdGEucmVhZHMuYWRkKGVmZmVj
dHMucmVhZHMpOwogCiAgICAgICAgICAgICAgICAgaWYgKEhlYXBSYW5nZSB3cml0ZXMgPSBlZmZl
Y3RzLndyaXRlcykKICAgICAgICAgICAgICAgICAgICAgY2xvYmJlcihkYXRhLCB3cml0ZXMpOwor
ICAgICAgICAgICAgICAgIGRhdGEuZmVuY2UgfD0gZWZmZWN0cy5mZW5jZTsKIAogICAgICAgICAg
ICAgICAgIGlmIChtZW1vcnkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVtb3J5VmFsdWVz
QXRUYWlsLmFkZChtZW1vcnkpOwpAQCAtNDc4LDYgKzQ4MSw5IEBAIHByaXZhdGU6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRmlsdGVyPgogICAgIGJvb2wgZmluZFN0b3JlQWZ0ZXJDbG9iYmVyKFZh
bHVlKiBwdHIsIEhlYXBSYW5nZSByYW5nZSwgY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAgewor
ICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICAvLyBXZSBjYW4gZWxpbWlu
YXRlIGEgc3RvcmUgaWYgZXZlcnkgZm9yd2FyZCBwYXRoIGhpdHMgYSBzdG9yZSB0byB0aGUgc2Ft
ZSBsb2NhdGlvbiBiZWZvcmUKICAgICAgICAgLy8gaGl0dGluZyBhbnkgb3BlcmF0aW9uIHRoYXQg
b2JzZXJ2ZXMgdGhlIHN0b3JlLiBUaGlzIHNlYXJjaCBzZWVtcyBsaWtlIGl0IHNob3VsZCBiZQog
ICAgICAgICAvLyBleHBlbnNpdmUsIGJ1dCBpbiB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5IG9m
IGNhc2VzIGl0IHdpbGwgYWxtb3N0IGltbWVkaWF0ZWx5IGhpdCBhbiAKQEAgLTYxNCw2ICs2MjAs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCptX3ZhbHVlLCAiOiBsb29raW5nIGJhY2t3YXJkIGZvciAiLCAqcHRyLCAiLi4uXG4iKTsKICAg
ICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2Uo
KSkgeworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEdpdmluZyB1cCBiZWNhdXNlIGZlbmNlcy5cbiIpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoTWVtb3J5VmFsdWUqIG1hdGNo
ID0gbV9kYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5kKHB0ciwgZmlsdGVyKSkgewogICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZvdW5kICIs
ICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
R2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgdm9pZCBn
ZW5lcmF0ZVRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlLAogICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTA3CiAgICAgfQogCisgICAgLy8gVGhp
cyBwdXRzIHRoZSBJUiBpbiBxdWlya3MgbW9kZS4KICAgICBsb3dlck1hY3Jvcyhwcm9jZWR1cmUp
OwogCiAgICAgaWYgKG9wdExldmVsID49IDEpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIz
X0pJVCkKKworI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBJbnNlcnRpb25T
ZXQ7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJhc2ljQmxvY2s+CitjbGFzcyBHZW5lcmljQmxvY2tJ
bnNlcnRpb25TZXQgeworcHVibGljOgorICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRpb248c3RkOjp1
bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBCbG9ja0luc2VydGlvbjsKKyAgICAKKyAgICBCbG9ja0lu
c2VydGlvblNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiYgYmxvY2tzKQor
ICAgICAgICA6IG1fYmxvY2tzKGJsb2NrcykKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQg
aW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5zZXJ0aW9uKQorICAgIHsKKyAgICAgICAgbV9pbnNl
cnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOworICAgIH0KKworICAgIC8vIEluc2Vy
dCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGluZGV4LgorICAgIEJhc2ljQmxvY2sqIGluc2VydCh1
bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pCisgICAgeworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgs
IGZyZXF1ZW5jeSkpOworICAgICAgICBCYXNpY0Jsb2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsK
KyAgICAgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8vIEluc2VydHMgYSBuZXcgYmxv
Y2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUg
ZnJlcXVlbmN5CisgICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVz
dCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxvY2suIFRoYXQncworICAgIC8v
IHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KKyAgICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFz
aWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAgICAg
IHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8g
ZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7CisgICAgfQorCisgICAgLy8gSW5zZXJ0
cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxvY2suCisgICAgQmFzaWNCbG9jayogaW5z
ZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGluc2VydChhZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5jeSA9
PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBhZnRlci0+ZnJlcXVlbmN5KCkpOworICAgIH0KKwor
ICAgIGJvb2wgZXhlY3V0ZSgpCisgICAgeworICAgICAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIC8vIFdl
IGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4gYW55IG9yZGVyLiBTbywgd2Ug
bmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCisgICAgICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRl
SW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQg
aXQgdG8gYmUKKyAgICAgICAgLy8gZmFzdCwgc28gd2UgdXNlIGJ1YmJsZSBzb3J0LgorICAgICAg
ICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOwor
ICAgICAgICAKKyAgICAgICAgZXhlY3V0ZUluc2VydGlvbnMobV9ibG9ja3MsIG1faW5zZXJ0aW9u
cyk7CisgICAgICAgIAorICAgICAgICAvLyBQcnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBp
c24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MKKyAgICAgICAgLy8gaGVhbHRoeSB0byBr
ZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KKyAgICAgICAgbV9ibG9ja3MucmVtb3Zl
QWxsTWF0Y2hpbmcoCisgICAgICAgICAgICBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2Nr
PiYgYmxvY2tQdHIpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIHJldHVybiAhYmxvY2tQdHI7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRo
ZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fYmxvY2tzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9ibG9ja3NbaV0t
Pm1faW5kZXggPSBpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitw
cml2YXRlOgorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBtX2Jsb2Nr
czsKKyAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtODgsNiArODgsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7CiAgICAgfQogICAgIAorICAgIEhlYXBSYW5nZSBvcGVyYXRvcnwoY29uc3QgSGVhcFJhbmdl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBIZWFwUmFuZ2UoCisgICAgICAg
ICAgICBzdGQ6Om1pbihtX2JlZ2luLCBvdGhlci5tX2JlZ2luKSwKKyAgICAgICAgICAgIHN0ZDo6
bWF4KG1fZW5kLCBvdGhlci5tX2VuZCkpOworICAgIH0KKyAgICAKICAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsgfQogCiAgICAgdW5z
aWduZWQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01OCw2ICs1OCwxMSBAQCBWYWx1ZSogSW5zZXJ0aW9uU2V0OjppbnNlcnRCb3R0b20o
c2l6ZV90CiAgICAgcmV0dXJuIGluc2VydEJvdHRvbShpbmRleCwgbGlrZVZhbHVlLT5vcmlnaW4o
KSwgbGlrZVZhbHVlLT50eXBlKCkpOwogfQogCitWYWx1ZSogSW5zZXJ0aW9uU2V0OjppbnNlcnRD
bG9uZShzaXplX3QgaW5kZXgsIFZhbHVlKiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gaW5zZXJ0VmFs
dWUoaW5kZXgsIG1fcHJvY2VkdXJlLmNsb25lKHZhbHVlKSk7Cit9CisKIHZvaWQgSW5zZXJ0aW9u
U2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIGJ1YmJsZVNvcnQobV9pbnNl
cnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDYgKzcxLDggQEAgcHVibGljOgogCiAgICAgVmFsdWUqIGluc2VydEJvdHRvbShzaXplX3QgaW5k
ZXgsIE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGluc2VydEJvdHRvbShzaXplX3QgaW5kZXgs
IFZhbHVlKik7CisgICAgCisgICAgVmFsdWUqIGluc2VydENsb25lKHNpemVfdCBpbmRleCwgVmFs
dWUqKTsKIAogICAgIHZvaWQgZXhlY3V0ZShCYXNpY0Jsb2NrKik7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU4LDExICs1OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9wcm9jKHByb2MpCiAg
ICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChwcm9jKQogICAgICAgICAsIG1faW5zZXJ0aW9u
U2V0KHByb2MpCisgICAgICAgICwgbV91c2VDb3VudHMocHJvYykKICAgICB7CiAgICAgfQogCiAg
ICAgYm9vbCBydW4oKQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcHJvYy5oYXNR
dWlya3MoKSk7CisgICAgICAgIAogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9w
cm9jKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAgICAgICAgICAgICBwcm9jZXNz
Q3VycmVudEJsb2NrKCk7CkBAIC03Miw2ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X3Byb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAgICAgIG1fcHJvYy5pbnZhbGlkYXRl
Q0ZHKCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRo
YXQgd2UndmUgCisgICAgICAgIG1fcHJvYy5zZXRIYXNRdWlya3ModHJ1ZSk7CisgICAgICAgIAog
ICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwogICAgIH0KICAgICAKQEAgLTE4NSw3ICsxOTIsOTYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAg
ICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBsb2FkLWxvYWQgZmVuY2UuIFRoaXMgY29kZWdlbnMg
dG8gbm90aGluZyBvbiBYODYuIFdlIHVzZSBpdCB0byB0ZWxsIHRoZQorICAgICAgICAgICAgICAg
ICAgICAvLyBjb21waWxlciBub3QgdG8gYmxvY2sgbG9hZCBtb3Rpb24uCisgICAgICAgICAgICAg
ICAgICAgIEZlbmNlVmFsdWUqIGZlbmNlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PEZlbmNlVmFs
dWU+KG1faW5kZXgsIG1fb3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgZmVuY2UtPnJlYWQg
PSBIZWFwUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgZmVuY2UtPndyaXRlID0gSGVhcFJh
bmdlOjp0b3AoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8v
IEtpbGwgdGhlIERlcGVuZCwgd2hpY2ggc2hvdWxkIHVubG9jayBhIGJ1bmNoIG9mIGNvZGUgc2lt
cGxpZmljYXRpb24uCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+cmVwbGFjZVdpdGhCb3R0
b20obV9pbnNlcnRpb25TZXQsIG1faW5kZXgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNhc2UgQXRv
bWljV2Vha0NBUzoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOiB7CisgICAgICAg
ICAgICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVl
LT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21p
Yy0+b3BlcmF0aW9uV2lkdGgoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBp
ZiAoaXNDYW5vbmljYWxXaWR0aCh3aWR0aCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFZhbHVlKiBleHBlY3RlZFZhbHVlID0g
YXRvbWljLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBP
biBBUk0sIHRoZSBsb2FkIHBhcnQgb2YgdGhlIENBUyBkb2VzIGEgbG9hZCB3aXRoIHplcm8gZXh0
ZW5zaW9uLiBUaGVyZWZvcmUsIHdlIG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0byB6ZXJvLWV4
dGVuZCB0aGUgaW5wdXQuCisgICAgICAgICAgICAgICAgVmFsdWUqIG1hc2tlZEV4cGVjdGVkVmFs
dWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBt
X2luZGV4LCBCaXRBbmQsIG1fb3JpZ2luLCBleHBlY3RlZFZhbHVlLAorICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChtX2luZGV4LCBleHBlY3RlZFZh
bHVlLCBtYXNrKHdpZHRoKSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF0
b21pYy0+Y2hpbGQoMCkgPSBtYXNrZWRFeHBlY3RlZFZhbHVlOworICAgICAgICAgICAgICAgIG1f
Y2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAg
ICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoK
KyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWlj
WGNoZ1hvcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAgICAg
IC8vIE9uIFg4NiwgdGhlc2UgbWF5IGFjdHVhbGx5IHJldHVybiBnYXJiYWdlIGluIHRoZSBoaWdo
IGJpdHMuIE9uIEFSTTY0LCB0aGVzZSBzb3J0YQorICAgICAgICAgICAgICAgIC8vIHplcm8tZXh0
ZW5kIHRoZWlyIGhpZ2ggYml0cywgZXhjZXB0IHRoYXQgdGhlIGhpZ2ggYml0cyBtaWdodCBnZXQg
cG9sbHV0ZWQgYnkgaGlnaAorICAgICAgICAgICAgICAgIC8vIGJpdHMgaW4gdGhlIG9wZXJhbmQu
IC4gU28sIGVpdGhlciB3YXksIHdlIG5lZWQgdG8gdGhyb3cgYSBzaWduLWV4dGVuZCBvbiB0aGVz
ZQorICAgICAgICAgICAgICAgIC8vIHRoaW5ncy4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+
b3Bjb2RlKCkgPT0gQXRvbWljWGNoZ1N1YiAmJiBtX3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbiB4ODYsIHhjaGdhZGQgaXMgYmV0dGVy
IHRoYW4geGNoZ3N1YiBpZiBpdCBoYXMgYW55IHVzZXJzLgorICAgICAgICAgICAgICAgICAgICAg
ICAgbV92YWx1ZS0+c2V0S2luZFVuc2FmZWx5KEF0b21pY1hjaGdBZGQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMSkgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFs
dWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIE5lZywgbV9vcmlnaW4s
IG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBleGVtcHQgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgeworICAgICAgICAgICAg
ICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRv
bWljWGNoZ09yOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGV4ZW1wdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChleGVtcHQpCisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUt
PmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgICAgIFdpZHRoIHdpZHRoID0gYXRvbWlj
LT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlm
IChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1ZhbHVlID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgc2ln
bkV4dGVuZE9wY29kZSh3aWR0aCksIG1fb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnRDbG9uZShtX2luZGV4LCBtX3ZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShuZXdWYWx1
ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00NzAsNiArNTY2
LDcgQEAgcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKICAgICBCbG9ja0luc2VydGlv
blNldCBtX2Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNl
dDsKKyAgICBVc2VDb3VudHMgbV91c2VDb3VudHM7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsK
ICAgICB1bnNpZ25lZCBtX2luZGV4OwogICAgIFZhbHVlKiBtX3ZhbHVlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJP
cHRpbWl6YXRpb25zLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTYsMTUgKzE1NiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBSb3RMOiB7
CiAgICAgICAgICAgICAgICAgLy8gQVJNNjQgZG9lc24ndCBoYXZlIGEgcm90YXRlIGxlZnQuCiAg
ICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
aXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBt
X2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2lu
KCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBy
b3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFs
dWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVl
PihtX2luZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Cisg
ICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgw
KSwgbmV3U2hpZnQpOworICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElk
ZW50aXR5KHJvdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNw
cAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDE0IEBAIG5hbWVzcGFjZSB7CiAK
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCisvLyBGSVhNRTogV2Ugd291bGRuJ3QgbmVl
ZCB0aGlzIGlmIEFpciBzdXBwb3J0ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFpcjo6S2luZC4KKy8v
IE9PUFMhISEgKG5lZWQgYSBidWcgVVJMKQorI2RlZmluZSBPUENPREVfRk9SX1dJRFRIKG9wY29k
ZSwgd2lkdGgpICggXAorICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDggOiBcCisg
ICAgKHdpZHRoKSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAorICAgICh3aWR0aCkgPT0g
V2lkdGgzMiA/IG9wY29kZSAjIyAzMiA6IFwKKyAgICBvcGNvZGUgIyMgNjQpCisKIGNsYXNzIExv
d2VyVG9BaXIgewogcHVibGljOgogICAgIExvd2VyVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUp
CkBAIC04Myw2ICs5MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9kb21pbmF0b3JzKHByb2Nl
ZHVyZS5kb21pbmF0b3JzKCkpCiAgICAgICAgICwgbV9wcm9jZWR1cmUocHJvY2VkdXJlKQogICAg
ICAgICAsIG1fY29kZShwcm9jZWR1cmUuY29kZSgpKQorICAgICAgICAsIG1fYmxvY2tJbnNlcnRp
b25TZXQobV9jb2RlKQorI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgICAgICwgbV9l
YXgoWDg2UmVnaXN0ZXJzOjplYXgpCisgICAgICAgICwgbV9lY3goWDg2UmVnaXN0ZXJzOjplY3gp
CisgICAgICAgICwgbV9lZHgoWDg2UmVnaXN0ZXJzOjplZHgpCisjZW5kaWYKICAgICB7CiAgICAg
fQogCkBAIC0xMjQsMTQgKzEzOCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGhvaXN0ZWQgYWRk
cmVzcyBleHByZXNzaW9uIGJlZm9yZSB3ZSBkdXBsaWNhdGUgaXQgYmFjayBpbnRvIHRoZSBsb29w
LgogICAgICAgICBmb3IgKEIzOjpCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvY2VkdXJlLmJsb2Nr
c0luUHJlT3JkZXIoKSkgewogICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwotICAgICAgICAg
ICAgLy8gUmVzZXQgc29tZSBzdGF0ZS4KLSAgICAgICAgICAgIG1faW5zdHMucmVzaXplKDApOwog
CiAgICAgICAgICAgICBtX2lzUmFyZSA9ICFtX2Zhc3RXb3JrbGlzdC5zYXcoYmxvY2spOwogCiAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJMb3dlcmlu
ZyBCbG9jayAiLCAqYmxvY2ssICI6XG4iKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8g
TWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3JyZWN0bHkuCisgICAg
ICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nl
c3NvcnMoKSkgeworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+c3VjY2Vz
c29ycygpLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2so
bV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNjZXNzb3IuZnJlcXVlbmN5KCkp
KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gUHJvY2VzcyBibG9ja3MgaW4gcmV2
ZXJzZSBvcmRlciBzbyB3ZSBzZWUgdXNlcyBiZWZvcmUgZGVmcy4gVGhhdCdzIHdoYXQgYWxsb3dz
IHVzCiAgICAgICAgICAgICAvLyB0byBtYXRjaCBwYXR0ZXJucyBlZmZlY3RpdmVseS4KICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGktLTspIHsKQEAgLTE0OSwx
OSArMTY3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIC8vIE5vdyBhcHBlbmQgdGhlIGluc3RydWN0aW9ucy4gbV9pbnN0cyBjb250
YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIsIHNvIHdlIHByb2Nlc3MKLSAgICAgICAgICAgIC8v
IGl0IGluIHJldmVyc2UuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luc3RzLnNp
emUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1faW5zdHNb
aV0pCi0gICAgICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+YXBwZW5kSW5z
dChXVEZNb3ZlKGluc3QpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTWFrZSBz
dXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3JyZWN0bHkuCi0gICAgICAgICAg
ICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMo
KSkgewotICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+c3VjY2Vzc29ycygp
LmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sobV9ibG9j
a1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNjZXNzb3IuZnJlcXVlbmN5KCkpKTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyhtX2Js
b2NrVG9CbG9ja1tibG9ja10pOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2Jsb2Nr
SW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKIAogICAgICAgICBBaXI6Okluc2VydGlvblNldCBpbnNl
cnRpb25TZXQobV9jb2RlKTsKICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9wcm9sb2d1ZSkK
QEAgLTUzOCw3ICs1NDcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwog
CiAgICAgICAgIGludDMyX3Qgb2Zmc2V0ID0gdmFsdWUtPm9mZnNldCgpOwotICAgICAgICBXaWR0
aCB3aWR0aCA9IHZhbHVlLT5hY2Nlc3NXaWR0aCgpOworICAgICAgICBXaWR0aCB3aWR0aCA9IHZh
bHVlLT5sb2FkU3RvcmVXaWR0aCgpOwogCiAgICAgICAgIEFyZyByZXN1bHQgPSBlZmZlY3RpdmVB
ZGRyKHZhbHVlLT5sYXN0Q2hpbGQoKSwgb2Zmc2V0LCB3aWR0aCk7CiAgICAgICAgIEFTU0VSVChy
ZXN1bHQuaXNWYWxpZEZvcm0od2lkdGgpKTsKQEAgLTU2MiwxMSArNTcxLDE2IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgQXJnUHJvbWlzZSBsb2FkUHJvbWlzZUFueU9wY29kZShWYWx1ZSogbG9hZFZh
bHVlKQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobG9hZFZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKSk7CiAgICAgICAgIGlmICghY2FuQmVJbnRlcm5hbChsb2FkVmFsdWUpKQogICAgICAg
ICAgICAgcmV0dXJuIEFyZygpOwogICAgICAgICBpZiAoY3Jvc3Nlc0ludGVyZmVyZW5jZShsb2Fk
VmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwotICAgICAgICBBcmdQcm9taXNlIHJl
c3VsdChhZGRyKGxvYWRWYWx1ZSksIGxvYWRWYWx1ZSk7CisgICAgICAgIGlmIChsb2FkVmFsdWUt
PmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIEFyZygp
OworICAgICAgICBBcmcgbG9hZEFkZHIgPSBhZGRyKGxvYWRWYWx1ZSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGxvYWRBZGRyKTsKKyAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQobG9hZEFkZHIs
IGxvYWRWYWx1ZSk7CiAgICAgICAgIGlmIChsb2FkVmFsdWUtPnRyYXBzKCkpCiAgICAgICAgICAg
ICByZXN1bHQuc2V0VHJhcHModHJ1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04OTgs
MTEgKzkxMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
I2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAodmFs
dWUpLCB0bXAobV92YWx1ZSkpOwotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKGFtb3VudCksIFRt
cChYODZSZWdpc3RlcnM6OmVjeCkpOwotICAgICAgICBhcHBlbmQob3Bjb2RlLCBUbXAoWDg2UmVn
aXN0ZXJzOjplY3gpLCB0bXAobV92YWx1ZSkpOwotI2VuZGlmCisgICAgICAgIGFwcGVuZChNb3Zl
LCB0bXAoYW1vdW50KSwgbV9lY3gpOworICAgICAgICBhcHBlbmQob3Bjb2RlLCBtX2VjeCwgdG1w
KG1fdmFsdWUpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwg
QWlyOjpPcGNvZGUgb3Bjb2RlNjQ+CkBAIC05MzEsMTAgKzk0MywxNSBAQCBwcml2YXRlOgogICAg
ICAgICBBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIENvbW11dGF0
aXZpdHkgY29tbXV0YXRpdml0eSA9IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wgdHJ5QXBwZW5k
U3RvcmVCaW5PcChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOworICAgICAgICAKICAgICAg
ICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2Rl
NjQsIGxlZnQtPnR5cGUoKSk7CiAgICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFz
PE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAKICAgICAgICAgQXJnIHN0b3JlQWRkciA9IGFkZHIobV92YWx1ZSk7CiAgICAgICAg
IEFTU0VSVChzdG9yZUFkZHIpOwogCkBAIC05OTQsMTAgKzEwMTEsNDggQEAgcHJpdmF0ZToKIAog
ICAgICAgICByZXR1cm4gSW5zdChtb3ZlLCBtX3ZhbHVlLCB0bXAodmFsdWUpLCBkZXN0KTsKICAg
ICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNvZGUoV2lkdGggd2lkdGgsIEJhbmsg
YmFuaywgYm9vbCByZWxlYXNlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh3aWR0aCkgeworICAg
ICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1Ap
OworICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDggOiBTdG9yZTg7CisgICAg
ICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1Ap
OworICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDE2IDogU3RvcmUxNjsKKyAg
ICAgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAg
ICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwz
MiA6IE1vdmUzMjsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRmxvYXQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXaWR0aDY0Ogor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM2NEJpdCgpKTsKKyAgICAgICAgICAgIHN3aXRj
aCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVsZWFzZSA/IFN0b3JlUmVsNjQgOiBNb3ZlOworICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIE1vdmVEb3VibGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAK
KyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAg
ICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAg
ICByZXR1cm4gc3RvcmVPcGNvZGUobWVtb3J5LT5sb2FkU3RvcmVXaWR0aCgpLCBtZW1vcnktPmFj
Y2Vzc0JhbmsoKSwgbWVtb3J5LT5oYXNGZW5jZSgpKTsKKyAgICB9CiAKICAgICBJbnN0IGNyZWF0
ZVN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsKLSAgICAgICAgQWly
OjpPcGNvZGUgbW92ZU9wY29kZSA9IG1vdmVGb3JUeXBlKHZhbHVlLT50eXBlKCkpOworICAgICAg
ICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gc3RvcmVPcGNvZGUodmFsdWUpOwogICAgICAgICBy
ZXR1cm4gY3JlYXRlU3RvcmUobW92ZU9wY29kZSwgdmFsdWUsIGRlc3QpOwogICAgIH0KIApAQCAt
MTAwNiw3ICsxMDYxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGFwcGVuZCh0cmFwcGlu
Z0luc3QobV92YWx1ZSwgY3JlYXRlU3RvcmUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkp
OwogICAgIH0KLQorICAgIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlwZSkK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTA3Myw3ICsxMTI4LDQxIEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoaW5zdCk7CiAgICAg
fQorICAgIAorICAgIHZvaWQgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKEFpcjo6QmFzaWNC
bG9jayogdGFyZ2V0KQorICAgIHsKKyAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rp
b25zLiBtX2luc3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2Vz
cworICAgICAgICAvLyBpdCBpbiByZXZlcnNlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2luc3RzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9p
bnN0c1tpXSkKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmFwcGVuZEluc3QoV1RGTW92ZShpbnN0
KSk7CisgICAgICAgIH0KKyAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CisgICAgfQorICAgIAor
ICAgIEFpcjo6QmFzaWNCbG9jayogbmV3QmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QWZ0ZXIobV9ibG9ja1RvQmxvY2tbbV9ibG9ja10pOwor
ICAgIH0KIAorICAgIC8vIE5PVEU6IFRoaXMgd2lsbCBjcmVhdGUgYSBjb250aW51YXRpb24gYmxv
Y2sgKGBuZXh0QmxvY2tgKSAqYWZ0ZXIqIGFueSBibG9ja3MgeW91J3ZlIGNyZWF0ZWQgdXNpbmcK
KyAgICAvLyBuZXdCbG9jaygpLiBTbywgaXQncyBwcmVmZXJhYmxlIHRvIGNyZWF0ZSBhbGwgb2Yg
eW91ciBibG9ja3MgdXBmcm9udCB1c2luZyBuZXdCbG9jaygpLiBBbHNvIG5vdGUKKyAgICAvLyB0
aGF0IGFueSBjb2RlIHlvdSBlbWl0IGJlZm9yZSB0aGlzIHdpbGwgYmUgcHJlcGVuZGVkIHRvIHRo
ZSBjb250aW51YXRpb24sIGFuZCBhbnkgY29kZSB5b3UgZW1pdAorICAgIC8vIGFmdGVyIHRoaXMg
d2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgcHJldmlvdXMgYmxvY2suCisgICAgdm9pZCBzcGxpdEJs
b2NrKEFpcjo6QmFzaWNCbG9jayomIHByZXZpb3VzQmxvY2ssIEFpcjo6QmFzaWNCbG9jayomIG5l
eHRCbG9jaykKKyAgICB7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmxvY2sgPSBtX2Jsb2Nr
VG9CbG9ja1ttX2Jsb2NrXTsKKyAgICAgICAgCisgICAgICAgIHByZXZpb3VzQmxvY2sgPSBibG9j
azsKKyAgICAgICAgbmV4dEJsb2NrID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlcihi
bG9jayk7CisgICAgICAgIAorICAgICAgICBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMobmV4
dEJsb2NrKTsKKyAgICAgICAgbmV4dEJsb2NrLT5zdWNjZXNzb3JzKCkgPSBibG9jay0+c3VjY2Vz
c29ycygpOworICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpLmNsZWFyKCk7CisgICAgICAgIAor
ICAgICAgICBtX2luc3RzLmFwcGVuZChWZWN0b3I8SW5zdD4oKSk7CisgICAgfQorICAgIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBUKiBlbnN1
cmVTcGVjaWFsKFQqJiBmaWVsZCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKQEAg
LTExMjMsNyArMTIxMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFZhbHVlUmVwOjpTdGFja0FyZ3VtZW50OgogICAgICAgICAgICAgICAgIGFy
ZyA9IEFyZzo6Y2FsbEFyZyh2YWx1ZS5yZXAoKS5vZmZzZXRGcm9tU1AoKSk7Ci0gICAgICAgICAg
ICAgICAgYXBwZW5kU3RvcmUodmFsdWUudmFsdWUoKSwgYXJnKTsKKyAgICAgICAgICAgICAgICBh
cHBlbmRTdG9yZShtb3ZlRm9yVHlwZSh2YWx1ZS52YWx1ZSgpKSwgYXJnKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE5NjEsNiArMjA1MCwzMDggQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRYODZEaXYoQjM6
Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdv
cmQ7CisgICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKKyAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50
eXBlKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJs
ZVdvcmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7CisgICAgICAgICAgICBkaXYgPSBYODZE
aXYzMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDY0OgorICAgICAgICAg
ICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7CisgICAgICAg
ICAgICBkaXYgPSBYODZEaXY2NDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0g
TW9kKTsKKyAgICAgICAgVG1wIHJlc3VsdCA9IG9wID09IERpdiA/IG1fZWF4IDogbV9lZHg7CisK
KyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIG1fZWF4KTsKKyAg
ICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdvcmQsIG1fZWF4LCBtX2VkeCk7CisgICAgICAg
IGFwcGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAg
ICAgIGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorCisgICAgdm9p
ZCBhcHBlbmRYODZVRGl2KEIzOjpPcGNvZGUgb3ApCisgICAgeworICAgICAgICBBaXI6Ok9wY29k
ZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7
CisKKyAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7CisgICAgICAgIFRt
cCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gbV9lYXggOiBtX2VkeDsKKworICAgICAgICBhcHBlbmQo
TW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgbV9lYXgpOworICAgICAgICBhcHBlbmQoWG9y
NjQsIG1fZWR4LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1w
KG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcCht
X3ZhbHVlKSk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIGxvYWRMaW5rT3Bjb2RlKFdp
ZHRoIHdpZHRoLCBib29sIGZlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZlbmNlID8gT1BD
T0RFX0ZPUl9XSURUSChMb2FkTGlua0FjcSwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChMb2Fk
TGluaywgd2lkdGgpOworICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZUNvbmRPcGNv
ZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2Ug
PyBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZFJlbCwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURU
SChTdG9yZUNvbmQsIHdpZHRoKTsKKyAgICB9CisgICAgCisgICAgLy8gVGhpcyBjYW4gZW1pdCBj
b2RlIGZvciB0aGUgZm9sbG93aW5nIHBhdHRlcm5zOgorICAgIC8vIEF0b21pY1dlYWtDQVMKKyAg
ICAvLyBCaXRYb3IoQXRvbWljV2Vha0NBUywgMSkKKyAgICAvLyBBdG9taWNTdHJvbmdDQVMKKyAg
ICAvLyBFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKQorICAgIC8vIE5vdEVxdWFsKEF0
b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gQnJhbmNoKEF0b21pY1dlYWtDQVMpCisg
ICAgLy8gQnJhbmNoKEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vIEJy
YW5jaChOb3RFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKSkKKyAgICAvLworICAgIC8v
IEl0IGFzc3VtZXMgdGhhdCBhdG9taWNWYWx1ZSBwb2ludHMgdG8gdGhlIENBUywgYW5kIG1fdmFs
dWUgcG9pbnRzIHRvIHRoZSBpbnN0cnVjdGlvbiBiZWluZworICAgIC8vIGdlbmVyYXRlZC4gSXQg
YXNzdW1lcyB0aGF0IHlvdSd2ZSBjb25zdW1lZCBldmVyeXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUg
Y29uc3VtZWQuCisgICAgdm9pZCBhcHBlbmRDQVMoVmFsdWUqIGF0b21pY1ZhbHVlLCBib29sIGlu
dmVydCkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+
YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGF0b21pYyk7CisgICAg
ICAgIAorICAgICAgICBib29sIGlzQnJhbmNoID0gbV92YWx1ZS0+b3AoKSA9PSBCcmFuY2g7Cisg
ICAgICAgIGJvb2wgaXNTdHJvbmcgPSBhdG9taWMtPm9wKCkgPT0gQXRvbWljU3Ryb25nQ0FTOwor
ICAgICAgICBib29sIHJldHVybnNPbGRWYWx1ZSA9IG1fdmFsdWUtPm9wKCkgPT0gQXRvbWljU3Ry
b25nQ0FTOworICAgICAgICAKKyAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPm9wZXJhdGlv
bldpZHRoKCk7CisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworCisgICAgICAg
IFRtcCB2YWx1ZVJlc3VsdFRtcDsKKyAgICAgICAgVG1wIGJvb2xSZXN1bHRUbXA7CisgICAgICAg
IGlmIChyZXR1cm5zT2xkVmFsdWUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbnZl
cnQpOworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSB0bXAobV92YWx1ZSk7CisgICAgICAg
ICAgICBib29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0gZWxzZSBp
ZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1Rt
cChHUCk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IG1fY29kZS5uZXdU
bXAoR1ApOworICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgVG1wIHN1Y2Nlc3NCb29sUmVzdWx0VG1wOworICAgICAg
ICBpZiAoaXNTdHJvbmcgJiYgIWlzQnJhbmNoKQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1
bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3Vj
Y2Vzc0Jvb2xSZXN1bHRUbXAgPSBib29sUmVzdWx0VG1wOworCisgICAgICAgIFRtcCBleHBlY3Rl
ZFZhbHVlVG1wID0gdG1wKGF0b21pYy0+Y2hpbGQoMCkpOworICAgICAgICBUbXAgbmV3VmFsdWVU
bXAgPSB0bXAoYXRvbWljLT5jaGlsZCgxKSk7CisgICAgICAgIAorICAgICAgICBGcmVxdWVudGVk
QmxvY2sgc3VjY2VzczsKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrIGZhaWx1cmU7CisgICAgICAg
IGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgc3VjY2VzcyA9IG1fYmxvY2tUb0Jsb2NrW21f
YmxvY2tdLT5zdWNjZXNzb3IoaW52ZXJ0KTsKKyAgICAgICAgICAgIGZhaWx1cmUgPSBtX2Jsb2Nr
VG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29yKCFpbnZlcnQpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3Zl
Rm9yVHlwZShhdG9taWMtPm9wZXJhdGlvblR5cGUoKSksIGltbU9yVG1wKGF0b21pYy0+Y2hpbGQo
MCkpLCBtX2VheCk7CisgICAgICAgICAgICBpZiAocmV0dXJuc09sZFZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FTLCB3aWR0aCks
IG1fZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJl
bGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPm9wZXJhdGlvblR5cGUoKSksIG1fZWF4LCB2YWx1ZVJl
c3VsdFRtcCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAg
ICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNoQXRvbWljU3Ryb25nQ0FTLCB3aWR0
aCksIEFyZzo6c3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCBuZXdW
YWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbbV9ibG9j
a10tPnNldFN1Y2Nlc3NvcnMoc3VjY2VzcywgZmFpbHVyZSk7CisgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdHJvbmdDQVMs
IHdpZHRoKSwgQXJnOjpzdGF0dXNDb25kKGludmVydCA/IE1hY3JvQXNzZW1ibGVyOjpGYWlsdXJl
IDogTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgdG1wKGF0b21pYy0+Y2hpbGQoMSkp
LCBhZGRyZXNzLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAgICAg
Ly8gV2Ugd2lzaCB0byBlbWl0OgorICAgICAgICAvLworICAgICAgICAvLyBCbG9jayAjcmVsb29w
OgorICAgICAgICAvLyAgICAgTG9hZExpbmsKKyAgICAgICAgLy8gICAgIEJyYW5jaCBOb3RFcXVh
bAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRoZW46I2ZhaWwsIEVsc2U6ICNzdG9yZQorICAg
ICAgICAvLyBCbG9jayAjc3RvcmU6CisgICAgICAgIC8vICAgICBTdG9yZUNvbmQKKyAgICAgICAg
Ly8gICAgIFhvciAkMSwgJXJlc3VsdCAgICA8LS0tIG9ubHkgaWYgIWludmVydAorICAgICAgICAv
LyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8vIEJs
b2NrICNmYWlsOgorICAgICAgICAvLyAgICAgTW92ZSAkaW52ZXJ0LCAlcmVzdWx0CisgICAgICAg
IC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAgICAgICAgLy8g
QmxvY2sgI2RvbmU6CisgICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9vcEJs
b2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdG9yZUJsb2NrID0g
bmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdWNjZXNzQmxvY2sgPSBudWxs
cHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoICYmIGlzU3Ryb25nKQorICAgICAgICAgICAgc3Vj
Y2Vzc0Jsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBmYWlsQmxv
Y2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoKQorICAgICAgICAgICAgZmFpbEJs
b2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdHJvbmdGYWlsQmxv
Y2s7CisgICAgICAgIGlmIChpc1N0cm9uZykKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jayA9
IG5ld0Jsb2NrKCk7CisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayBjb21wYXJpc29uRmFpbDsKKyAg
ICAgICAgRnJlcXVlbnRlZEJsb2NrIHdlYWtGYWlsOworICAgICAgICBpZiAoaXNTdHJvbmcpIHsK
KyAgICAgICAgICAgIGNvbXBhcmlzb25GYWlsID0gc3Ryb25nRmFpbEJsb2NrOworICAgICAgICAg
ICAgd2Vha0ZhaWwgPSByZWxvb3BCbG9jazsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGlmIChpc0JyYW5jaCkKKyAgICAgICAgICAgICAgICBjb21wYXJpc29uRmFpbCA9IGZhaWx1cmU7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBmYWls
QmxvY2s7CisgICAgICAgICAgICB3ZWFrRmFpbCA9IGZhaWx1cmU7CisgICAgICAgIH0KKyAgICAg
ICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sq
IGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhiZWdpbkJsb2NrLCBkb25lQmxvY2spOwor
ICAgICAgICAKKyAgICAgICAgYXBwZW5kKEp1bXApOworICAgICAgICBiZWdpbkJsb2NrLT5zZXRT
dWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHJlbG9vcEJsb2NrLT5h
cHBlbmQobG9hZExpbmtPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUs
IHZhbHVlUmVzdWx0VG1wLCBhZGRyZXNzKTsKKyAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChP
UENPREVfRk9SX1dJRFRIKEJyYW5jaCwgY2Fub25pY2FsV2lkdGgod2lkdGgpKSwgbV92YWx1ZSwg
QXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCkgdmFsdWVSZXN1bHRUbXAsIGV4
cGVjdGVkVmFsdWVUbXApOworICAgICAgICByZWxvb3BCbG9jay0+c2V0U3VjY2Vzc29ycyhjb21w
YXJpc29uRmFpbCwgc3RvcmVCbG9jayk7CisgICAgICAgIAorICAgICAgICBzdG9yZUJsb2NrLT5h
cHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVl
LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcywgc3VjY2Vzc0Jvb2xSZXN1bHRUbXApOworICAgICAgICBp
ZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0
MzIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIGJvb2xSZXN1bHRUbXAsIEFy
Zzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1
Y2Nlc3MsIHdlYWtGYWlsKTsKKyAgICAgICAgICAgIGRvbmVCbG9jay0+c3VjY2Vzc29ycygpLmNs
ZWFyKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghZG9uZUJsb2NrLT5zaXplKCkpOwor
ICAgICAgICAgICAgZG9uZUJsb2NrLT5hcHBlbmQoT29wcywgbV92YWx1ZSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgICAgICBzdG9y
ZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6
Olplcm8pLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAg
ICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3NCbG9jaywgcmVsb29wQmxv
Y2spOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+YXBw
ZW5kKE1vdmUsIG1fdmFsdWUsIEFyZzo6aW1tKCFpbnZlcnQpLCBib29sUmVzdWx0VG1wKTsKKyAg
ICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChKdW1wLCBtX3ZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBzdWNjZXNzQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFpbnZlcnQpCisgICAgICAgICAg
ICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChYb3IzMiwgbV92YWx1ZSwgQXJnOjpiaXRJbW0o
MSksIGJvb2xSZXN1bHRUbXAsIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKE1vdmUsIG1f
dmFsdWUsIEFyZzo6aW1tKGludmVydCksIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgZmFp
bEJsb2NrLT5hcHBlbmQoSnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICBmYWlsQmxvY2stPnNl
dFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYg
KGlzU3Ryb25nKSB7CisgICAgICAgICAgICBUbXAgdG1wID0gbV9jb2RlLm5ld1RtcChHUCk7Cisg
ICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgs
IGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIHZhbHVlUmVzdWx0VG1wLCBhZGRyZXNzLCB0
bXApOworICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBB
cmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCB0bXAsIEFyZzo6Yml0SW1tKC0xKSk7
CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZmFpbEJsb2NrLCBy
ZWxvb3BCbG9jayk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgYm9vbCBhcHBlbmRWb2lk
QXRvbWljKEFpcjo6T3Bjb2RlIGF0b21pY09wY29kZSkKKyAgICB7CisgICAgICAgIGlmIChtX3Vz
ZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKG1fdmFsdWUpOworICAgICAgICAKKyAg
ICAgICAgaWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwgQXJnOjpJbW0sIGFkZHJlc3Mua2lu
ZCgpKSAmJiBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICBhcHBlbmQoYXRv
bWljT3Bjb2RlLCBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRyZXNzKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNWYWxpZEZv
cm0oYXRvbWljT3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAgICAg
ICBhcHBlbmQoYXRvbWljT3Bjb2RlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRyZXNzKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhcHBlbmRHZW5lcmFsQXRvbWljKEFp
cjo6T3Bjb2RlIG9wY29kZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBt
X3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgCisgICAgICAgIEFyZyBhZGRyZXNz
ID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgVG1wIG9sZFZhbHVlID0gbV9jb2RlLm5ld1RtcChH
UCk7CisgICAgICAgIFRtcCBuZXdWYWx1ZSA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAK
KyAgICAgICAgLy8gV2UgbmVlZCBhIENBUyBsb29wIG9yIGEgTEwvU0MgbG9vcC4gVXNpbmcgcHJl
cGFyZS9hdHRlbXB0IGphcmdvbiwgd2Ugd2FudDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxv
Y2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIFByZXBhcmUKKyAgICAgICAgLy8gICAgIG9wY29k
ZQorICAgICAgICAvLyAgICAgQXR0ZW1wdAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRoZW46
I2RvbmUsIEVsc2U6I3JlbG9vcAorICAgICAgICAvLyBCbG9jayAjZG9uZToKKyAgICAgICAgLy8g
ICAgIE1vdmUgb2xkVmFsdWUsIHJlc3VsdAorICAgICAgICAKKyAgICAgICAgYXBwZW5kKHJlbGF4
ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG9sZFZhbHVlLCB0bXAoYXRvbWljKSk7Cisg
ICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9vcEJsb2NrID0gbmV3QmxvY2so
KTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOworICAgICAgICBBaXI6OkJh
c2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhiZWdpbkJsb2NrLCBkb25l
QmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEp1bXApOworICAgICAgICBiZWdpbkJs
b2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIEFpcjo6
T3Bjb2RlIHByZXBhcmVPcGNvZGU7CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkgeworICAgICAgICAgICAgY2FzZSBX
aWR0aDg6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IExvYWQ4U2lnbmVkRXh0ZW5k
VG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgxNjoK
KyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMjsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgzMjoKKyAgICAg
ICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTW92ZTMyOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNv
ZGUgPSBNb3ZlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAg
ICAgICAgIG9wY29kZSA9IGxvYWRMaW5rT3Bjb2RlKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSwg
YXRvbWljLT5oYXNGZW5jZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZWxvb3BCbG9jay0+YXBw
ZW5kKHByZXBhcmVPcGNvZGUsIG1fdmFsdWUsIGFkZHJlc3MsIG9sZFZhbHVlKTsKKyAgICAgICAg
CisgICAgICAgIGlmIChvcGNvZGUgIT0gTm9wKSB7CisgICAgICAgICAgICBpZiAoaW1tKGF0b21p
Yy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpJbW0sIEFyZzo6VG1wLCBB
cmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1f
dmFsdWUsIGltbShhdG9taWMtPmNoaWxkKDApKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBB
cmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1f
dmFsdWUsIHRtcChhdG9taWMtPmNoaWxkKDApKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQocmVsYXhl
ZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBpZiAoaW1tKGF0b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29k
ZSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICAgICAgcmVsb29wQmxvY2st
PmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIGltbShhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmVsb29wQmxvY2st
PmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIHRtcChhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAg
ICAgICAgICAgIEFpcjo6T3Bjb2RlIGNhc09wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNo
QXRvbWljU3Ryb25nQ0FTLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpOworICAgICAgICAgICAg
cmVsb29wQmxvY2stPmFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBv
bGRWYWx1ZSwgbV9lYXgpOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChjYXNPcGNv
ZGUsIG1fdmFsdWUsIEFyZzo6c3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1f
ZWF4LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOworICAgICAgICAgICAgVG1wIGJvb2xSZXN1bHQgPSBt
X2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoc3RvcmVD
b25kT3Bjb2RlKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSwgYXRvbWljLT5oYXNGZW5jZSgpKSwg
bmV3VmFsdWUsIGFkZHJlc3MsIGJvb2xSZXN1bHQpOworICAgICAgICAgICAgcmVsb29wQmxvY2st
PmFwcGVuZChCcmFuY2hUZXN0MzIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyks
IGJvb2xSZXN1bHQsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgIH0KKyAgICAgICAgcmVsb29w
QmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrLCByZWxvb3BCbG9jayk7CisgICAgfQorICAg
IAogICAgIHZvaWQgbG93ZXIoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNv
ZGUoKSkgewpAQCAtMTk3MSwzMCArMjM2Miw1MCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBp
bmdJbnN0KG1fdmFsdWUsIG1vdmVGb3JUeXBlKG1fdmFsdWUtPnR5cGUoKSksIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1l
bW9yeSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgb3Bjb2RlID0gQWlyOjpPb3BzOworICAgICAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2Uo
KSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAobWVtb3J5LT50eXBlKCkpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNx
MzI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgSW50
NjQ6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3E2NDsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgb3Bjb2RlID0gbW92ZUZvclR5cGUobWVtb3J5LT50eXBlKCkpOworICAgICAgICAgICAg
YXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1
ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOFM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFw
cGluZ0luc3QobV92YWx1ZSwgTG9hZDhTaWduZWRFeHRlbmRUbzMyLCBtX3ZhbHVlLCBhZGRyKG1f
dmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9
IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcThTaWduZWRF
eHRlbmRUbzMyIDogTG9hZDhTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRy
YXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcCht
X3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBMb2FkOFo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9h
ZDgsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAg
QWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNl
KCkgPyBMb2FkQWNxOCA6IExvYWQ4OworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZTOiB7
Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNlNpZ25lZEV4
dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhh
c0ZlbmNlKCkgPyBMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIDogTG9hZDE2U2lnbmVkRXh0ZW5k
VG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBt
X3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2WjogewotICAgICAgICAgICAgYXBw
ZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTYsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSks
IHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTYgOiBMb2FkMTY7Cisg
ICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwg
YWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAgICBp
ZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA5Miw3ICsy
NTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0NoaWxsKCkpCiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKICAgICAgICAgICAgIGlm
IChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAgICBs
b3dlclg4NkRpdihEaXYpOworICAgICAgICAgICAgICAgIGFwcGVuZFg4NkRpdihEaXYpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVCgh
aXNYODYoKSB8fCBpc0Zsb2F0KG1fdmFsdWUtPnR5cGUoKSkpOwpAQCAtMjEwMyw3ICsyNTE0LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIFVEaXY6IHsKICAgICAgICAgICAgIGlmIChpc0lu
dChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAgICBsb3dlclg4
NlVEaXYoVURpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2VURpdihVRGl2KTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTIxMTcsMTMgKzI1MjgsMTMg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNb2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzWDg2KCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdmFsdWUtPmlzQ2hp
bGwoKSk7Ci0gICAgICAgICAgICBsb3dlclg4NkRpdihNb2QpOworICAgICAgICAgICAgYXBwZW5k
WDg2RGl2KE1vZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIFVNb2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzWDg2KCkpOwotICAgICAg
ICAgICAgbG93ZXJYODZVRGl2KFVNb2QpOworICAgICAgICAgICAgYXBwZW5kWDg2VURpdihVTW9k
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMTYyLDEwICsyNTczLDI3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxOb3QzMiwgTm90NjQ+KG1f
dmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoaXMgcGF0dGVybiBpcyBzdXBlciB1c2Vm
dWwgb24gYm90aCB4ODYgYW5kIEFSTTY0LCBzaW5jZSB0aGUgaW52ZXJzaW9uIG9mIHRoZSBDQVMg
cmVzdWx0CisgICAgICAgICAgICAvLyBjYW4gYmUgZG9uZSB3aXRoIHplcm8gY29zdCBvbiB4ODYg
KGp1c3QgZmxpcCB0aGUgc2V0IGZyb20gRSB0byBORSkgYW5kIGl0J3MgYSBwcm9ncmVzc2lvbgor
ICAgICAgICAgICAgLy8gb24gQVJNNjQgKHNpbmNlIFNUWCByZXR1cm5zIDAgb24gc3VjY2Vzcywg
c28gb3JkaW5hcmlseSB3ZSBoYXZlIHRvIGZsaXAgaXQpLgorICAgICAgICAgICAgaWYgKG1fdmFs
dWUtPmNoaWxkKDEpLT5pc0ludCgxKQorICAgICAgICAgICAgICAgICYmIGlzQXRvbWljQ0FTKG1f
dmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAmJiBjYW5CZUludGVy
bmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFs
KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZS0+
Y2hpbGQoMCksIHRydWUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAogICAgICAgICAgICAgYXBwZW5kQmluT3A8WG9yMzIsIFhvcjY0LCBYb3JE
b3VibGUsIFhvckZsb2F0LCBDb21tdXRhdGl2ZT4oCiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+
Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICBh
cHBlbmRVbk9wPERlcGVuZDMyLCBEZXBlbmQ2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTaGw6IHsKICAgICAgICAg
ICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQzMigxKSkgewpAQCAtMjI2Niw3ICsyNjk0
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAg
ICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC0yMjg3LDcgKzI3MTUsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTgsIHZhbHVlVG9TdG9yZSwgYWRkciht
X3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCB2YWx1ZVRvU3RvcmUs
IGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIz
MDgsNyArMjczNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcHBlbmRTdG9yZShB
aXI6OlN0b3JlMTYsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBh
cHBlbmRTdG9yZShtX3ZhbHVlLCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI0MTYsNyArMjg0NCwyMiBAQCBwcml2YXRl
OgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBFcXVhbDoKLSAgICAgICAgY2FzZSBOb3RFcXVh
bDoKKyAgICAgICAgY2FzZSBOb3RFcXVhbDogeworICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNo
aWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMKKyAgICAgICAgICAgICAgICAmJiBt
X3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0gbV92YWx1ZS0+Y2hpbGQoMSkKKyAgICAgICAg
ICAgICAgICAmJiBjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAg
ICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMobV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxk
KDEpKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVl
LT5jaGlsZCgxKSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNvbW1pdElu
dGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRDQVMobV92
YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPm9wY29kZSgpID09IE5vdEVxdWFsKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoY3JlYXRlQ29tcGFyZShtX3ZhbHVlKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIExl
c3NUaGFuOgogICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuOgogICAgICAgICBjYXNlIExlc3NFcXVh
bDoKQEAgLTI3MjcsNiArMzE3MCwzOSBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBCcmFuY2g6IHsKKyAgICAgICAgICAgIGlmIChjYW5CZUludGVybmFsKG1fdmFsdWUtPmNo
aWxkKDApKSkgeworICAgICAgICAgICAgICAgIFZhbHVlKiBicmFuY2hDaGlsZCA9IG1fdmFsdWUt
PmNoaWxkKDApOworICAgICAgICAgICAgICAgIHN3aXRjaCAoYnJhbmNoQ2hpbGQtPm9wY29kZSgp
KSB7CisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAg
ICAgICBjb21taXRJbnRlcm5hbChicmFuY2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgIGFw
cGVuZENBUyhicmFuY2hDaGlsZCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25n
Q0FTOgorICAgICAgICAgICAgICAgICAgICAvLyBBIGJyYW5jaCBpcyBhIGNvbXBhcmlzb24gdG8g
emVyby4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+aXNJ
bnQoMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENo
aWxkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZCwgdHJ1
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGNhc2UgRXF1YWw6CisgICAgICAgICAgICAgICAgY2FzZSBOb3RFcXVhbDoK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+b3Bjb2RlKCkg
PT0gQXRvbWljU3Ryb25nQ0FTCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBjYW5CZUludGVy
bmFsKGJyYW5jaENoaWxkLT5vcGNvZGUoMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBi
cmFuY2hDaGlsZC0+Y2hpbGQoMCktPmNoaWxkKDApID09IGJyYW5jaENoaWxkLT5jaGlsZCgxKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQtPmNoaWxk
KDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZC0+Y2hp
bGQoMCksIGJyYW5jaENoaWxkLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAg
ICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoY3JlYXRlQnJhbmNoKG1fdmFsdWUtPmNoaWxk
KDApKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI3ODQsNyArMzI2MCw4
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYXBwZW5kKEFpcjo6RW50cnlTd2l0Y2gpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBB
dG9taWNXZWFrQ0FTOgorICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzogeworICAgICAgICAg
ICAgYXBwZW5kQ0FTKG1fdmFsdWUsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDogeworICAgICAg
ICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOwor
ICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNB
ZGQsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7Cisg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hj
aGdBZGQsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxp
ZE9wY29kZShvcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNzKSkgeworICAgICAgICAgICAgICAgIGFw
cGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGls
ZCgwKSksIHRtcChhdG9taWMpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAo
YXRvbWljKSwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQWRk
LCBjYW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6IHsKKyAg
ICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4o
KTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRv
bWljU3ViLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RF
X0ZPUl9XSURUSChTdWIsIGNhbm9uaWNhbFdpZHRoKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgQXRvbWljWGNoZ0FuZDogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9
IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRB
dG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNBbmQsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgo
KSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
YXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEFuZCwgY2Fub25pY2FsV2lkdGgo
YXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6IHsKKyAgICAgICAg
ICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAg
ICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljT3Is
IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX1dJ
RFRIKE9yLCBjYW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0
b21pY1hjaGdYb3I6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVl
LT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9Q
Q09ERV9GT1JfV0lEVEgoQXRvbWljWG9yLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdl
bmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChYb3IsIGNhbm9uaWNhbFdpZHRoKGF0b21pYy0+
b3BlcmF0aW9uV2lkdGgoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAgQXRvbWlj
VmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAgICAgICAgICAgIEFp
cjo6T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZywgYXRvbWljLT5v
cGVyYXRpb25XaWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkT3Bjb2RlKG9wY29kZSwg
QXJnOjpUbXAsIGFkZHJlc3MpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3Zl
Rm9yVHlwZShhdG9taWMtPnR5cGUoKSksIHRtcChhdG9taWMtPmNoaWxkKDApKSwgdG1wKGF0b21p
YykpOworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChhdG9taWMpLCBhZGRyZXNz
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChYb3IsIGNh
bm9uaWNhbFdpZHRoKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjc5Miw2NCArMzM0Miw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGRhdGFMb2coIkZBVEFMOiBjb3VsZCBub3QgbG93ZXIgIiwgZGVlcER1bXAobV9wcm9j
ZWR1cmUsIG1fdmFsdWUpLCAiXG4iKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9Ci0KLSAgICB2b2lkIGxvd2VyWDg2RGl2KEIzOjpPcGNvZGUgb3ApCi0gICAg
ewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAoWDg2
UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4
KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVXb3JkOwotICAgICAgICBB
aXI6Ok9wY29kZSBkaXY7Ci0gICAgICAgIHN3aXRjaCAobV92YWx1ZS0+dHlwZSgpKSB7Ci0gICAg
ICAgIGNhc2UgSW50MzI6Ci0gICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29u
dmVydFRvRG91YmxlV29yZDMyOwotICAgICAgICAgICAgZGl2ID0gWDg2RGl2MzI7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ2NDoKLSAgICAgICAgICAgIGNvbnZlcnRUb0Rv
dWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0OwotICAgICAgICAgICAgZGl2ID0gWDg2
RGl2NjQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8IG9wID09IE1vZCk7Ci0gICAgICAg
IFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBEaXYgPyBYODZSZWdpc3Rl
cnM6OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAo
bV92YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBlbmQoY29udmVydFRvRG91Ymxl
V29yZCwgZWF4LCBlZHgpOwotICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1fdmFs
dWUtPmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1wKG1f
dmFsdWUpKTsKLQotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAgVU5S
RUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGxvd2Vy
WDg2VURpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAgICAgVG1w
IGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAgICAgICAgQWlyOjpPcGNvZGUgZGl2
ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0OwotCi0g
ICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVNb2QpOwotICAgICAgICBYODZSZWdp
c3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gVURpdiA/IFg4NlJlZ2lzdGVyczo6ZWF4
IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVl
LT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChYb3I2NCwgZWR4LCBlZHgpOwotICAg
ICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7Ci0gICAg
ICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1wKG1fdmFsdWUpKTsKLSNlbHNlCi0gICAg
ICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OwotI2VuZGlmCi0gICAgfQotCisgICAgCiAgICAgSW5kZXhTZXQ8VmFsdWU+IG1fbG9ja2VkOyAv
LyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQgd2lsbCBoYXZlIG5vIFRtcCBpbiBBaXIuCiAgICAgSW5k
ZXhNYXA8VmFsdWUsIFRtcD4gbV92YWx1ZVRvVG1wOyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQg
bXVzdCBoYXZlIGEgVG1wIGluIEFpci4gV2Ugc2F5IHRoYXQgYSBWYWx1ZSogd2l0aCBhIG5vbi1u
dWxsIFRtcCBpcyAicGlubmVkIi4KICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3BoaVRvVG1w
OyAvLyBFYWNoIFBoaSBnZXRzIGl0cyBvd24gVG1wLgpAQCAtMjg2NCw3ICszMzU3LDcgQEAgcHJp
dmF0ZToKIAogICAgIFZlY3RvcjxWZWN0b3I8SW5zdCwgND4+IG1faW5zdHM7CiAgICAgVmVjdG9y
PEluc3Q+IG1fcHJvbG9ndWU7Ci0KKyAgICAKICAgICBCMzo6QmFzaWNCbG9jayogbV9ibG9jazsK
ICAgICBib29sIG1faXNSYXJlOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CkBAIC0yODc1LDYgKzMz
NjgsMTIgQEAgcHJpdmF0ZToKIAogICAgIFByb2NlZHVyZSYgbV9wcm9jZWR1cmU7CiAgICAgQ29k
ZSYgbV9jb2RlOworCisgICAgQWlyOjpCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0aW9u
U2V0OworCisgICAgVG1wIG1fZWF4OworICAgIFRtcCBtX2VjeDsKKyAgICBUbXAgbV9lZHg7CiB9
OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM01lbW9yeVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMzAg
KzM0LDQ4IEBAIE1lbW9yeVZhbHVlOjp+TWVtb3J5VmFsdWUoKQogewogfQogCitUeXBlIE1lbW9y
eVZhbHVlOjphY2Nlc3NUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNMb2FkKG9wY29kZSgpKSkK
KyAgICAgICAgcmV0dXJuIHR5cGUoKTsKKyAgICAvLyBUaGlzIGhhcHBlbnMgdG8gd29yayBmb3Ig
YXRvbWljcywgdG9vLiBUaGF0J3Mgd2h5IEF0b21pY1ZhbHVlIGRvZXMgbm90IG5lZWQgdG8gb3Zl
cnJpZGUgdGhpcy4KKyAgICByZXR1cm4gY2hpbGQoMCktPnR5cGUoKTsKK30KKworQmFuayBNZW1v
cnlWYWx1ZTo6YWNjZXNzQmFuaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJhbmtGb3JUeXBlKGFj
Y2Vzc1R5cGUoKSk7Cit9CisKIHNpemVfdCBNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUoKSBj
b25zdAogeworICAgIHJldHVybiBieXRlcyhhY2Nlc3NXaWR0aCgpKTsKK30KKworV2lkdGggTWVt
b3J5VmFsdWU6OmxvYWRTdG9yZVdpZHRoKCkgY29uc3QKK3sKICAgICBzd2l0Y2ggKG9wY29kZSgp
KSB7CiAgICAgY2FzZSBMb2FkOFo6CiAgICAgY2FzZSBMb2FkOFM6CiAgICAgY2FzZSBTdG9yZTg6
Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4gV2lkdGg4OwogICAgIGNhc2UgTG9h
ZDE2WjoKICAgICBjYXNlIExvYWQxNlM6CiAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICByZXR1
cm4gMjsKKyAgICAgICAgcmV0dXJuIFdpZHRoMTY7CiAgICAgY2FzZSBMb2FkOgotICAgICAgICBy
ZXR1cm4gc2l6ZW9mVHlwZSh0eXBlKCkpOworICAgICAgICByZXR1cm4gd2lkdGhGb3JUeXBlKHR5
cGUoKSk7CiAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmV0dXJuIHNpemVvZlR5cGUoY2hpbGQo
MCktPnR5cGUoKSk7CisgICAgICAgIHJldHVybiB3aWR0aEZvclR5cGUoY2hpbGQoMCktPnR5cGUo
KSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBXaWR0aDg7CiAgICAgfQogfQogCiBX
aWR0aCBNZW1vcnlWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAogewotICAgIHJldHVybiB3aWR0
aEZvckJ5dGVzKGFjY2Vzc0J5dGVTaXplKCkpOworICAgIHJldHVybiBsb2FkU3RvcmVXaWR0aCgp
OwogfQogCiB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQ
cmludFN0cmVhbSYgb3V0KSBjb25zdApAQCAtNjcsNiArODUsOCBAQCB2b2lkIE1lbW9yeVZhbHVl
OjpkdW1wTWV0YShDb21tYVByaW50ZXImCiAgICAgaWYgKChpc0xvYWQoKSAmJiBlZmZlY3RzKCku
cmVhZHMgIT0gcmFuZ2UoKSkKICAgICAgICAgfHwgKGlzU3RvcmUoKSAmJiBlZmZlY3RzKCkud3Jp
dGVzICE9IHJhbmdlKCkpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyYW5nZSA9ICIsIHJh
bmdlKCkpOworICAgIGlmIChwaGFudG9tUmFuZ2UoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAicGhhbnRvbVJhbmdlID0gIiwgcGhhbnRvbVJhbmdlKCkpOwogfQogCiBWYWx1ZSogTWVtb3J5
VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CkBAIC03NCw2ICs5NCw1OCBAQCBWYWx1ZSogTWVtb3J5
VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlWYWx1ZSgqdGhp
cyk7CiB9CiAKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2Fk
OFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3VmZml4IHRoYXQKKy8vIGRlc2Ny
aWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBr
aW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9m
ZnNldCA9IDApCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4s
IHBvaW50ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCit7CisgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2Ug
TG9hZDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAg
Y2FzZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZT
OgorICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgU3RvcmU4OgorICAgICAgICBjYXNlIFN0b3JlMTY6CisgICAgICAgIGNh
c2UgU3RvcmU6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBWb2lkKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdo
ZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVl
KEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0
ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9m
ZnNldCkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtp
bmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhT
OgorICAgICAgICBjYXNlIExvYWQxNlo6CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jl
cy4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZh
bHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IFZh
bHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpCisg
ICAgLCBtX29mZnNldChvZmZzZXQpCit7CisgICAgQVNTRVJUKGlzU3RvcmUoa2luZC5vcGNvZGUo
KSkpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShC
M19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDQ4ICsyNywxNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJ
VCkKIAorI2luY2x1ZGUgIkIzQmFuay5oIgogI2luY2x1ZGUgIkIzSGVhcFJhbmdlLmgiCiAjaW5j
bHVkZSAiQjNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotLy8g
RklYTUU6IFdlIHdhbnQgdG8gYWxsb3cgZmVuY2VkIG1lbW9yeSBhY2Nlc3NlcyBvbiBBUk0uCi0v
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMzQ5Ci0KIGNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIE1lbW9yeVZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKICAgICB7Ci0gICAgICAgIHN3aXRj
aCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICBjYXNlIExvYWQ4WjoKLSAgICAgICAgY2FzZSBM
b2FkOFM6Ci0gICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgY2FzZSBMb2FkMTZTOgotICAg
ICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICBjYXNlIFN0b3Jl
MTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHN0YXRpYyBib29sIGlzU3RvcmUoS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgc3dp
dGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICBjYXNl
IFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzTG9hZChLaW5kIGtpbmQpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWNjZXB0cyhraW5kKSAmJiAhaXNTdG9yZShraW5kKTsKKyAgICAgICAgcmV0dXJu
IGlzTWVtb3J5KGtpbmQub3Bjb2RlKCkpOwogICAgIH0KIAogICAgIH5NZW1vcnlWYWx1ZSgpOwpA
QCAtNzgsNzYgKzQ3LDU2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2Uo
KSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CiAgICAgdm9pZCBzZXRSYW5nZShjb25zdCBIZWFw
UmFuZ2UmIHJhbmdlKSB7IG1fcmFuZ2UgPSByYW5nZTsgfQorICAgIAorICAgIC8vIFRoaXMgaXMg
YW4gYWxpYXMgZm9yIHJhbmdlLgorICAgIGNvbnN0IEhlYXBSYW5nZSYgYWNjZXNzUmFuZ2UoKSBj
b25zdCB7IHJldHVybiByYW5nZSgpOyB9CisgICAgdm9pZCBzZXRBY2Nlc3NSYW5nZShjb25zdCBI
ZWFwUmFuZ2UmIHJhbmdlKSB7IHNldFJhbmdlKHJhbmdlKTsgfQorICAgIAorICAgIGNvbnN0IEhl
YXBSYW5nZSYgZmVuY2VSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmVuY2VSYW5nZTsgfQorICAg
IHZvaWQgc2V0RmVuY2VSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fZmVuY2VSYW5n
ZSA9IHJhbmdlOyB9CisKKyAgICBib29sIGlzU3RvcmUoKSBjb25zdCB7IHJldHVybiBpc1N0b3Jl
KG9wY29kZSgpKTsgfQorICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1cm4gaXNMb2FkKG9w
Y29kZSgpKTsgfQogCi0gICAgYm9vbCBpc1N0b3JlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09
IFZvaWQ7IH0KLSAgICBib29sIGlzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSAhPSBWb2lk
OyB9CisgICAgYm9vbCBoYXNGZW5jZSgpIGNvbnN0IHsgcmV0dXJuICEhZmVuY2VSYW5nZSgpOyB9
CiAKKyAgICBUeXBlIGFjY2Vzc1R5cGUoKSBjb25zdDsKKyAgICBCYW5rIGFjY2Vzc0JhbmsoKSBj
b25zdDsKICAgICBzaXplX3QgYWNjZXNzQnl0ZVNpemUoKSBjb25zdDsKLSAgICBXaWR0aCBhY2Nl
c3NXaWR0aCgpIGNvbnN0OworICAgIAorICAgIC8vIFNsaWdodGx5IGZhc3RlciB2ZXJzaW9uIG9m
IGFjY2Vzc1dpZHRoLCBpZiB5b3Uga25vdyB0aGF0IHlvdSdyZSB3b3JraW5nIHdpdGggYSBsb2Fk
IG9yIHN0b3JlLgorICAgIFdpZHRoIGxvYWRTdG9yZVdpZHRoKCkgY29uc3Q7CisgICAgCisgICAg
dmlydHVhbCBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9p
ZCBkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFZhbHVlKiBjbG9uZUltcGwoKSBjb25zdCBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOwotCi0gICAgLy8gVXNlIHRoaXMg
Zm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2Fk
cyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAotICAgIC8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQg
dHlwZSkuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmln
aW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUo
Q2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQorICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBNZW1vcnlWYWx1ZShDaGVja2VkT3Bj
b2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgaW50MzJfdCBvZmZz
ZXQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29k
ZSwga2luZCwgdHlwZSwgb3JpZ2luLCBhcmd1bWVudHMuLi4pCiAgICAgICAgICwgbV9vZmZzZXQo
b2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSkKICAgICB7Ci0gICAg
ICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bj
b2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAg
ICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAg
ICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQog
ICAgIH0KKyAgICAKKyAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4
WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0Cisg
ICAgLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KKyAgICBNZW1vcnlWYWx1ZShLaW5k
LCBUeXBlLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOwogCiAg
ICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGlt
cGxpZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSog
cG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IE1lbW9yeVZhbHVlKGtpbmQs
IEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKLSAgICB7Ci0gICAgfQorICAgIE1lbW9y
eVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7
CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBzdG9yZXMuCi0gICAgTWVtb3J5VmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQz
Ml90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9p
ZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKLSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0g
ICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQotICAgIHsKLSAgICAgICAgaWYgKCFB
U1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewot
ICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAg
ICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQorICAgIE1l
bW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwKTsKKyAgICAKICAgICBpbnQzMl90IG1fb2Zmc2V0IHsgMCB9OwotICAg
IEhlYXBSYW5nZSBtX3JhbmdlOworICAgIEhlYXBSYW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdlOjp0
b3AoKSB9OworICAgIEhlYXBSYW5nZSBtX2ZlbmNlUmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsK
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEIz
X0pJVCkKIAogI2luY2x1ZGUgIkIzVHlwZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAg
LTgyLDcgKzgzLDYgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBNb2QsIC8vIEFsbCBi
ZXRzIGFyZSBvZmYgYXMgdG8gd2hhdCB3aWxsIGhhcHBlbiB3aGVuIHlvdSBleGVjdXRlIHRoaXMg
Zm9yIC0yXjMxJS0xIGFuZCB4JTAuCiAgICAgVU1vZCwKIAotCiAgICAgLy8gUG9seW1vcnBoaWMg
bmVnYXRpb24uIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdGhpcyBmb3IgZmxvYXRpbmcgcG9pbnQs
IHNpbmNlIGludGVnZXIgbmVnYXRpb24KICAgICAvLyBpcyBleGFjdGx5IGxpa2UgU3ViKDAsIHgp
LiBCdXQgdGhhdCdzIG5vdCB0cnVlIGZvciBmbG9hdGluZyBwb2ludC4gU3ViKDAsIDApIGlzIDAs
IHdoaWxlCiAgICAgLy8gTmVnKDApIGlzIC0wLiBBbHNvLCB3ZSBjYW5vbmljYWxpemUgU3ViKDAs
IHgpIGludG8gTmVnKHgpIGluIGNhc2Ugb2YgaW50ZWdlcnMuCkBAIC0xNjIsNiArMTYyLDEwNyBA
QCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIFN0b3JlMTYsCiAgICAgLy8gVGhpcyBpcyBh
IHBvbHltb3JwaGljIHN0b3JlIGZvciBJbnQzMiwgSW50NjQsIEZsb2F0LCBhbmQgRG91YmxlLgog
ICAgIFN0b3JlLAorICAgIAorICAgIC8vIEF0b21pYyBjb21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0
dXJucyBhIGJvb2xlYW4uIE1heSBjaG9vc2UgdG8gZG8gbm90aGluZyBhbmQgcmV0dXJuIGZhbHNl
LiBZb3UgY2FuCisgICAgLy8gdXN1YWxseSBhc3N1bWUgdGhhdCB0aGlzIGlzIGZhc3RlciBhbmQg
cmVzdWx0cyBpbiBsZXNzIGNvZGUgdGhhbiBBdG9taWNTdHJvbmdDQVMsIHRob3VnaCB0aGF0J3MK
KyAgICAvLyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSBvbiBJbnRlbCwgaWYgaW5zdHJ1Y3Rpb24gc2Vs
ZWN0aW9uIGRvZXMgaXRzIGpvYi4gSW1hZ2luZSB0aGF0IHRoaXMgb3Bjb2RlIGlzCisgICAgLy8g
YXMgaWYgeW91IGRpZCB0aGlzIGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIC8vIGJvb2wgQXRvbWljV2Vha0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQg
bmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7CisgICAgLy8gICAgIGlmICghcmFuZCgpKQorICAg
IC8vICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBSZWFsIHdvcmxkIGV4YW1wbGUgb2YgdGhpczog
Y29udGV4dCBzd2l0Y2ggb24gQVJNIHdoaWxlIGRvaW5nIENBUy4KKyAgICAvLyAgICAgaWYgKCpw
dHIgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAv
LyAgICAgKnB0ciA9IG5ld1ZhbHVlOworICAgIC8vICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyB9
CisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgYWxsIGF0b21pY3MgcHV0IHRoZSBwb2ludGVyIGxh
c3QgdG8gYmUgY29uc2lzdGVudCB3aXRoIGhvdyBsb2FkcyBhbmQgc3RvcmVzIHdvcmsuIFRoaXMK
KyAgICAvLyBpcyBhIGdvb2Z5IHRyYWRpdGlvbiwgYnV0IGl0J3MgaGFybWxlc3MsIGFuZCBiZXR0
ZXIgdGhhbiBiZWluZyBpbmNvbnNpc3RlbnQuCisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgd2Vh
ayBDQVMgaGFzIG5vIGZlbmNpbmcgZ3VhcmFudGVlcyB3aGVuIGl0IGZhaWxzLiBUaGlzIG1lYW5z
IHRoYXQgdGhlIGZvbGxvd2luZworICAgIC8vIHRyYW5zZm9ybWF0aW9uIGlzIGFsd2F5cyB2YWxp
ZDoKKyAgICAvLworICAgIC8vIEJlZm9yZToKKyAgICAvLworICAgIC8vICAgICAgICAgQnJhbmNo
KEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNz
b3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBBZnRlcjoKKyAg
ICAvLworICAgIC8vICAgICAgICAgQnJhbmNoKEVxdWFsKExvYWQocHRyKSwgZXhwZWN0ZWQpKQor
ICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I2F0dGVtcHQsIEVsc2U6I2ZhaWwKKyAgICAv
LyAgICAgQkIjYXR0ZW1wdDoKKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FTKGV4
cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3VjY2Vz
cywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQm90aCBraW5kcyBvZiBDQVMgZm9yIG5vbi1j
YW5vbmljYWwgd2lkdGhzIChXaWR0aDggYW5kIFdpZHRoMTYpIGlnbm9yZSB0aGUgaXJyZWxldmFu
dCBiaXRzIG9mIHRoZQorICAgIC8vIGlucHV0LgorICAgIEF0b21pY1dlYWtDQVMsCisgICAgCisg
ICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIHRoZSBvbGQgdmFsdWUu
IERvZXMgbm90IGhhdmUgdGhlIG5vbmRldGVybWluaXNtIG9mIFdlYWtDQVMuCisgICAgLy8gVGhp
cyBpcyBhIGJpdCBtb3JlIGNvZGUgYW5kIGEgYml0IHNsb3dlciBpbiBzb21lIGNhc2VzLCB0aG91
Z2ggbm90IGJ5IGEgbG90LiBJbWFnaW5lIHRoYXQgdGhpcworICAgIC8vIG9wY29kZSBpcyBhcyBp
ZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgLy8gVCBBdG9taWNTdHJvbmdDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1Zh
bHVlLCBUKiBwdHIpCisgICAgLy8geworICAgIC8vICAgICBUIG9sZFZhbHVlID0gKnB0cjsKKyAg
ICAvLyAgICAgaWYgKG9sZFZhbHVlID09IGV4cGVjdGVkVmFsdWUpCisgICAgLy8gICAgICAgICAq
cHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVybiBvbGRWYWx1ZQorICAgIC8vIH0KKyAg
ICAvLworICAgIC8vIE5vdGUgdGhhdCBBdG9taWNXZWFrQ0FTIGFuZCBBdG9taWNTdHJvbmdDQVMg
c29ydCBvZiBoYXZlIHRoaXMga2luZCBvZiBlcXVpdmFsZW5jZToKKyAgICAvLworICAgIC8vIEF0
b21pY1dlYWtDQVMoQGV4cCwgQG5ldywgQHB0cikgPT0gRXF1YWwoQXRvbWljU3Ryb25nQ0FTKEBl
eHAsIEBuZXcsIEBwdHIpLCBAZXhwKQorICAgIC8vCisgICAgLy8gQXNzdW1pbmcgdGhhdCB0aGUg
V2Vha0NBUyBkb2VzIG5vdCBzcHVyaW91c2x5IGZhaWwsIG9mIGNvdXJzZS4KKyAgICBBdG9taWNT
dHJvbmdDQVMsCisgICAgCisgICAgLy8gQXRvbWljYWxseSBfX18gYSBtZW1vcnkgbG9jYXRpb24g
YW5kIHJldHVybiB0aGUgb2xkIHZhbHVlLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAb2xkVmFs
dWUgPSBBdG9taWNYY2hnX19fKEBvcGVyYW5kLCBAcHRyKQorICAgIC8vCisgICAgLy8gRm9yIG5v
bi1jYW5vbmljYWwgd2lkdGhzIChXaWR0aDggYW5kIFdpZHRoMTYpLCB0aGVzZSByZXR1cm4gc2ln
bi1leHRlbmRlZCByZXN1bHRzIGFuZCBpZ25vcmUgdGhlCisgICAgLy8gaXJyZWxldmFudCBiaXRz
IG9mIHRoZWlyIGlucHV0cy4KKyAgICBBdG9taWNYY2hnQWRkLAorICAgIEF0b21pY1hjaGdBbmQs
CisgICAgQXRvbWljWGNoZ09yLAorICAgIEF0b21pY1hjaGdTdWIsCisgICAgQXRvbWljWGNoZ1hv
ciwKKyAgICAKKyAgICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkIGhhdmUgQXRvbWljWGNoZ05l
ZyBhbmQgQXRvbWljWGNoZ05vdC4KKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IGV4Y2hhbmdlIGEg
dmFsdWUgd2l0aCBhIG1lbW9yeSBsb2NhdGlvbi4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9s
ZFZhbHVlID0gQXRvbWljWGNoZyhAbmV3VmFsdWUsIEBwdHIpCisgICAgQXRvbWljWGNoZywKKyAg
ICAKKyAgICAvLyBJbnRyb2R1Y2UgYW4gaW52aXNpYmxlIGRlcGVuZGVuY3kgZm9yIGJsb2NraW5n
IG1vdGlvbiBvZiBsb2FkcyB3aXRoIHJlc3BlY3QgdG8gZWFjaCBvdGhlci4gU3ludGF4OgorICAg
IC8vCisgICAgLy8gQHJlc3VsdCA9IERlcGVuZChAcGhhbnRvbSkKKyAgICAvLworICAgIC8vIFRo
aXMgaXMgZXZlbnR1YWxseSBjb2RlZ2VuZXJhdGVkIHRvIGhhdmUgbG9jYWwgc2VtYW50aWNzIGFz
IGlmIHdlIGRpZDoKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSAkMAorICAgIC8vCisgICAgLy8g
QnV0IGl0IGVuc3VyZXMgdGhhdCB0aGUgdXNlcnMgb2YgQHJlc3VsdCBjYW5ub3QgZXhlY3V0ZSB1
bnRpbCBAcGhhbnRvbSBpcyBjb21wdXRlZC4KKyAgICAvLworICAgIC8vIFRoZSBjb21waWxlciBp
cyBub3QgYWxsb3dlZCB0byByZWFzb24gYWJvdXQgdGhlIGZhY3QgdGhhdCBEZXBlbmQgY29kZWdl
bmVyYXRlcyB0aGlzIHdheS4gQW55IGtpbmQKKyAgICAvLyBvZiB0cmFuc2Zvcm1hdGlvbiBvciBh
bmFseXNpcyB0aGF0IHJlbGllcyBvbiB0aGUgaW5zaWdodCB0aGF0IERlcGVuZCBpcyByZWFsbHkg
emVybyBpcyB1bnNvdW5kLAorICAgIC8vIGJlY2F1c2UgaXQgdW5sb2NrcyByZW9yZGVyaW5nIG9m
IHVzZXJzIG9mIEByZXN1bHQgYW5kIEBwaGFudG9tLgorICAgIC8vCisgICAgLy8gT24gWDg2LCB0
aGlzIGlzIGxvd2VyZWQgdG8gYSBsb2FkLWxvYWQgZmVuY2UgYW5kIEByZXN1bHQgdXNlcyBAcGhh
bnRvbSBkaXJlY3RseS4KKyAgICAvLworICAgIC8vIE9uIEFSTSwgdGhpcyBpcyBsb3dlcmVkIGFz
IGlmIGxpa2U6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gQml0WG9yKEBwaGFudG9tLCBAcGhh
bnRvbSkKKyAgICAvLworICAgIC8vIEV4Y2VwdCB0aGF0IHRoZSBjb21waWxlciBuZXZlciBnZXRz
IGFuIG9wcG9ydHVuaXR5IHRvIHNpbXBsaWZ5IG91dCB0aGUgQml0WG9yLgorICAgIERlcGVuZCwK
IAogICAgIC8vIFRoaXMgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBhY3R1YWwgYWRkcmVzcyBvZiBh
IFdhc20gbWVtb3J5IG9wZXJhdGlvbi4gSXQgdGFrZXMgYW4gSW50UHRyCiAgICAgLy8gYW5kIGEg
cGlubmVkIHJlZ2lzdGVyIHRoZW4gY29tcHV0ZXMgdGhlIGFwcHJvcHJpYXRlIEludFB0ciBhZGRy
ZXNzLiBGb3IgdGhlIHVzZS1jYXNlIG9mCkBAIC0zMDEsNiArNDAyLDExMCBAQCBpbmxpbmUgYm9v
bCBpc0RlZmluaXRlbHlUZXJtaW5hbChPcGNvZGUgCiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBp
c0xvYWQoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2Ug
TG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExv
YWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1N0b3Jl
KE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIFN0b3Jl
ODoKKyAgICBjYXNlIFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5s
aW5lIGJvb2wgaXNMb2FkU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29k
ZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2
WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgU3RvcmU4Ogor
ICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUg
Ym9vbCBpc0F0b21pYyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7Cisg
ICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNh
c2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9t
aWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hv
cjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRv
bWljQ0FTKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNl
IEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisK
K2lubGluZSBib29sIGlzQXRvbWljWGNoZyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAo
b3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0Fu
ZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAg
Y2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwor
aW5saW5lIGJvb2wgaXNNZW1vcnlBY2Nlc3MoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICByZXR1cm4g
aXNBdG9taWMob3Bjb2RlKSB8fCBpc0xvYWRTdG9yZShvcGNvZGUpOworfQorCitpbmxpbmUgT3Bj
b2RlIHNpZ25FeHRlbmRPcGNvZGUoV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkg
eworICAgIGNhc2UgV2lkdGg4OgorICAgICAgICByZXR1cm4gU0V4dDg7CisgICAgY2FzZSBXaWR0
aDE2OgorICAgICAgICByZXR1cm4gU0V4dDE2OworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBPb3BzOworICAgIH0KK30K
KwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDIsNiArMjAyLDggQEAgdm9pZCBQcm9jZWR1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgYwogICAgICAgICB9CiAgICAgICAgIGRhdGFMb2coIiAgICAiLCBkZWVwRHVtcCgqdGhpcywg
dmFsdWUpLCAiXG4iKTsKICAgICB9CisgICAgaWYgKGhhc1F1aXJrcygpKQorICAgICAgICBvdXQu
cHJpbnQoIkhhcyBRdWlya3M6IFRydWVcbiIpOwogICAgIGlmICh2YXJpYWJsZXMoKS5zaXplKCkp
IHsKICAgICAgICAgb3V0LnByaW50KCJWYXJpYWJsZXM6XG4iKTsKICAgICAgICAgZm9yIChWYXJp
YWJsZSogdmFyaWFibGUgOiB2YXJpYWJsZXMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1Byb2NlZHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1Byb2NlZHVyZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw3IEBAIHB1
YmxpYzoKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoT3JpZ2luLCBUeXBlLCBpbnQ2NF90IHZh
bHVlKTsKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoVmFsdWUqLCBpbnQ2NF90IHZhbHVlKTsK
IAorICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgVmFs
dWUqIGFkZEJvdHRvbShPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBhZGRCb3R0b20oVmFsdWUq
KTsKIApAQCAtMTk1LDYgKzE5NiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gYWxpdmUuIEdyZWF0IGZv
ciBjb21waWxlci1nZW5lcmF0ZWQgZGF0YSBzZWN0aW9ucywgbGlrZSBzd2l0Y2gganVtcCB0YWJs
ZXMgYW5kIGNvbnN0YW50IHBvb2xzLgogICAgIC8vIFRoaXMgcmV0dXJucyBtZW1vcnkgdGhhdCBo
YXMgYmVlbiB6ZXJvLWluaXRpYWxpemVkLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFk
ZERhdGFTZWN0aW9uKHNpemVfdCk7CisgICAgCisgICAgLy8gU29tZSBvcGVyYXRpb25zIGFyZSBz
cGVjaWZpZWQgaW4gQjMgSVIgdG8gYmVoYXZlIG9uZSB3YXkgYnV0IG9uIHRoaXMgZ2l2ZW4gQ1BV
IHRoZXkgYmVoYXZlIGEKKyAgICAvLyBkaWZmZXJlbnQgd2F5LiBXaGVuIHRydWUsIHRob3NlIEIz
IElSIG9wcyBzd2l0Y2ggdG8gYmVoYXZpbmcgdGhlIENQVSB3YXksIGFuZCB0aGUgb3B0aW1pemVy
IG1heQorICAgIC8vIHN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2YgaXQuCisgICAgYm9vbCBoYXNR
dWlya3MoKSBjb25zdCB7IHJldHVybiBtX2hhc1F1aXJrczsgfQorICAgIHZvaWQgc2V0SGFzUXVp
cmtzKGJvb2wgdmFsdWUpIHsgbV9oYXNRdWlya3MgPSB2YWx1ZTsgfQogCiAgICAgT3BhcXVlQnlw
cm9kdWN0cyYgYnlwcm9kdWN0cygpIHsgcmV0dXJuICptX2J5cHJvZHVjdHM7IH0KIApAQCAtMjUy
LDYgKzI1OSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChQcmludFN0
cmVhbSYsIE9yaWdpbik+PiBtX29yaWdpblByaW50ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9mcm9u
dGVuZERhdGE7CiAgICAgUENUb09yaWdpbk1hcCBtX3BjVG9PcmlnaW5NYXA7CisgICAgYm9vbCBt
X2hhc1F1aXJrcyB7IGZhbHNlIH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVu
Z3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAyLDcgKzYwMiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGJyZWFrOwotCisgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBOZWc6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IE5lZyhjb25zdGFudCkKICAgICAg
ICAgICAgIC8vIEludG8gdGhpczogLWNvbnN0YW50CkBAIC0xMjk1LDYgKzEyOTUsMTYgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWly
a3MoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDgoQXRvbWljWGNoZ19f
XykKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAg
ICAgICAgICBpZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAg
ICAgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigp
LT5vcGVyYXRpb25XaWR0aCgpID09IFdpZHRoOCkgeworICAgICAgICAgICAgICAgICAgICByZXBs
YWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBTRXh0MTY6CkBAIC0xMzQzLDYgKzEzNTMsMTYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgeworICAgICAg
ICAgICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDE2KEF0b21pY1hjaGdfX18pCisgICAgICAgICAg
ICAgICAgLy8gSW50byB0aGlzOiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAgICAgaWYgKGlz
QXRvbWljWGNoZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAg
ICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+b3BlcmF0aW9uV2lk
dGgoKSA9PSBXaWR0aDE2KSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoSWRlbnRp
dHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIFNFeHQzMjoKQEAgLTIxMDEsMjIgKzIxMjEsMjUgQEAgcHJpdmF0ZToKICAgICAgICAg
QVNTRVJUKG1fdmFsdWUtPm51bUNoaWxkcmVuKCkgPj0gMik7CiAgICAgICAgIAogICAgICAgICAv
LyBMZWF2ZSBpdCBhbG9uZSBpZiB0aGUgcmlnaHQgY2hpbGQgaXMgYSBjb25zdGFudC4KLSAgICAg
ICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkpCisgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgxKS0+aXNDb25zdGFudCgpCisgICAgICAgICAgICB8fCBtX3ZhbHVlLT5jaGls
ZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pc0NvbnN0YW50KCkpIHsK
KyAgICAgICAgYXV0byBzd2FwID0gWyZdICgpIHsKICAgICAgICAgICAgIHN0ZDo6c3dhcChtX3Zh
bHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgbV9jaGFuZ2Vk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCisgICAgICAgIH07Cisg
ICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBzd2FwKCk7CisgICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+
Y2hpbGQoMSktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUykKKyAgICAgICAgICAgIHJldHVy
biBzd2FwKCk7CisgICAgICAgIAogICAgICAgICAvLyBTb3J0IHRoZSBvcGVyYW5kcy4gVGhpcyBp
cyBhbiBpbXBvcnRhbnQgY2Fub25pY2FsaXphdGlvbi4gV2UgdXNlIHRoZSBpbmRleCBpbnN0ZWFk
IG9mCiAgICAgICAgIC8vIHRoZSBhZGRyZXNzIHRvIG1ha2UgdGhpcyBhdCBsZWFzdCBzbGlnaHRs
eSBkZXRlcm1pbmlzdGljLgotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmluZGV4KCkg
PiBtX3ZhbHVlLT5jaGlsZCgxKS0+aW5kZXgoKSkgewotICAgICAgICAgICAgc3RkOjpzd2FwKG1f
dmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAgICAgICAgICBtX2NoYW5n
ZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICht
X3ZhbHVlLT5jaGlsZCgwKS0+aW5kZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEpLT5pbmRleCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgcmVhbGx5IGJlIGEgZm9yd2FyZCBhbmFseXNpcy4gSW5zdGVhZCwgd2UgdXNlcyBhIGJv
dW5kZWQtc2VhcmNoIGJhY2t3YXJkcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bGlkYXRlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsNiArMzQ2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgi
QXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDAp
LT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZh
bGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBMb2FkOgpAQCAtMzUzLDYgKzM1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBv
aW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nl
c3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTdG9y
ZTg6CkBAIC0zNjIsNiArMzY0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJU
eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
PnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlk
YXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFs
dWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTdG9yZToKQEAg
LTM2OSw4ICszNzIsNDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZv
aWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1
ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDMs
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUo
KSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT5jaGlsZCgw
KS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+Y2hpbGQoMiktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAg
ICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRF
KCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxk
KDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMiktPnR5
cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNj
ZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRv
bWljWGNoZ0FkZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAg
IGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAg
ICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hn
OgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRy
ZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBl
KCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2
YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vz
cyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIERlcGVu
ZDoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMo
KSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVt
Q2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFdhc21BZGRyZXNzOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhh
c0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CkBAIC01MzcsNiAr
NTgxLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0K
KyAgICAKKyAgICB2b2lkIHZhbGlkYXRlRmVuY2UoVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAg
ICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIFZBTElEQVRFKG1lbW9ydHkt
PmFjY2Vzc0JhbmsoKSA9PSBHUCwgKCJGZW5jZSBhdCAiLCAqbWVtb3J5KSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgdmFsaWRhdGVBdG9taWMoVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAg
QXRvbWljVmFsdWUqIGF0b21pYyA9IHZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAg
CisgICAgICAgIFZBTElEQVRFKGJlc3RUeXBlKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkgPT0g
YXRvbWljLT5vcGVyYXRpb25UeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgfQogCiAgICAg
dm9pZCB2YWxpZGF0ZVN0YWNrQWNjZXNzKFZhbHVlKiB2YWx1ZSkKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1
ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCb3R0b21Qcm92aWRlci5oIgogI2luY2x1ZGUgIkIzQ0Nh
bGxWYWx1ZS5oIgpAQCAtNTEwLDYgKzUxMSw3IEBAIGJvb2wgVmFsdWU6OnJldHVybnNCb29sKCkg
Y29uc3QKICAgICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAgIGNh
c2UgRXF1YWxPclVub3JkZXJlZDoKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGNhc2UgUGhpOgogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhh
dmUgYSBzdG9yeSBoZXJlLgpAQCAtNTg5LDYgKzU5MSw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVj
dHMoKSBjb25zdAogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVy
ZWQ6CiAgICAgY2FzZSBTZWxlY3Q6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTYwMCwxNiArNjAzLDQ0IEBAIEVmZmVj
dHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgTG9h
ZDE2WjoKICAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBMb2FkOgotICAgICAgICByZXN1bHQu
cmVhZHMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIExvYWQ6IHsKKyAg
ICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICBy
ZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0Zl
bmNlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC53cml0ZXMgPSBtZW1vcnktPmZlbmNlUmFuZ2Uo
KTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAg
cmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgY2FzZSBTdG9yZTg6CiAgICAgY2FzZSBTdG9yZTE2OgotICAgIGNhc2UgU3RvcmU6Ci0gICAg
ICAgIHJlc3VsdC53cml0ZXMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNl
IFN0b3JlOiB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4o
KTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYg
KG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5
LT5mZW5jZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOworICAgICAg
ICB9CisgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9u
Z0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgor
ICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNl
IEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgIEF0b21pY1Zh
bHVlKiBhdG9taWMgPSBhczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0g
YXRvbWljLT5yYW5nZSgpIHwgYXRvbWljLT5mZW5jZVJhbmdlKCk7CisgICAgICAgIHJlc3VsdC53
cml0ZXMgPSBhdG9taWMtPnJhbmdlKCkgfCBhdG9taWMtPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAg
aWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7
CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CisgICAgfQogICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5l
ZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpAQCAtNjE3LDE4ICs2NDgsNyBAQCBFZmZlY3RzIFZh
bHVlOjplZmZlY3RzKCkgY29uc3QKICAgICAgICAgY29uc3QgRmVuY2VWYWx1ZSogZmVuY2UgPSBh
czxGZW5jZVZhbHVlPigpOwogICAgICAgICByZXN1bHQucmVhZHMgPSBmZW5jZS0+cmVhZDsKICAg
ICAgICAgcmVzdWx0LndyaXRlcyA9IGZlbmNlLT53cml0ZTsKLSAgICAgICAgCi0gICAgICAgIC8v
IFByZXZlbnQga2lsbGluZyBvZiBmZW5jZXMgdGhhdCBjbGFpbSBub3QgdG8gd3JpdGUgYW55dGhp
bmcuIEl0J3MgYSBiaXQgd2VpcmQgdGhhdCB3ZSB1c2UKLSAgICAgICAgLy8gbG9jYWwgc3RhdGUg
YXMgdGhlIHdheSB0byBkbyB0aGlzLCBidXQgaXQgaGFwcGVucyB0byB3b3JrOiB3ZSBtdXN0IGFz
c3VtZSB0aGF0IHdlIGNhbm5vdAotICAgICAgICAvLyBraWxsIHdyaXRlc0xvY2FsU3RhdGUgdW5s
ZXNzIHdlIHVuZGVyc3RhbmRzIGV4YWN0bHkgd2hhdCB0aGUgaW5zdHJ1Y3Rpb24gaXMgZG9pbmcg
KGxpa2UKLSAgICAgICAgLy8gdGhlIHdheSB0aGF0IGZpeFNTQSB1bmRlcnN0YW5kcyBTZXQvR2V0
IGFuZCB0aGUgd2F5IHRoYXQgcmVkdWNlU3RyZW5ndGggYW5kIG90aGVycwotICAgICAgICAvLyB1
bmRlcnN0YW5kIFVwc2lsb24pLiBUaGlzIHdvdWxkIG9ubHkgYmVjb21lIGEgcHJvYmxlbSBpZiB3
ZSBoYWQgc29tZSBhbmFseXNpcyB0aGF0IHdhcwotICAgICAgICAvLyBsb29raW5nIHRvIHVzZSB0
aGUgd3JpdGVzTG9jYWxTdGF0ZSBiaXQgdG8gaW52YWxpZGF0ZSBhIENTRSBvdmVyIGxvY2FsIHN0
YXRlIG9wZXJhdGlvbnMuCi0gICAgICAgIC8vIFRoZW4gYSBGZW5jZSB3b3VsZCBsb29rIGJsb2Nr
LCBzYXksIHRoZSBlbGltaW5hdGlvbiBvZiBhIHJlZHVuZGFudCBHZXQuIEJ1dCBpdCBsaWtlCi0g
ICAgICAgIC8vIHRoYXQncyBub3QgYXQgYWxsIGhvdyBvdXIgb3B0aW1pemF0aW9ucyBmb3IgU2V0
L0dldC9VcHNpbG9uL1BoaSB3b3JrIC0gdGhleSBncm9rIHRoZWlyCi0gICAgICAgIC8vIG9wZXJh
dGlvbnMgZGVlcGx5IGVub3VnaCB0aGF0IHRoZXkgaGF2ZSBubyBuZWVkIHRvIGNoZWNrIHRoaXMg
Yml0IC0gc28gdGhpcyBjaGVhdCBpcwotICAgICAgICAvLyBmaW5lLgotICAgICAgICByZXN1bHQu
d3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENDYWxsOgpAQCAtNjk0LDYgKzcxNCw3IEBA
IFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBC
aXR3aXNlQ2FzdDoKICAgICBjYXNlIE5lZzoKKyAgICBjYXNlIERlcGVuZDoKICAgICAgICAgcmV0
dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgpLCBjaGlsZCgwKSk7CiAgICAgY2FzZSBBZGQ6CiAg
ICAgY2FzZSBTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDYgKzY4LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBPcGNvZGUgb3Bjb2Rl
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpLm9wY29kZSgpOyB9CiAgICAgCisgICAgLy8gTm90ZSB0
aGF0IHRoZSBraW5kIGlzIG1lYW50IHRvIGJlIGltbXV0YWJsZS4gRG8gdGhpcyB3aGVuIHlvdSBr
bm93IHRoYXQgdGhpcyBpcyBzYWZlLiBJdCdzIG5vdAorICAgIC8vIHVzdWFsbHkgc2FmZS4KKyAg
ICB2b2lkIHNldEtpbmRVbnNhZmVseShLaW5kIGtpbmQpIHsgbV9raW5kID0ga2luZDsgfQorICAg
IAogICAgIC8vIEl0J3MgZ29vZCBwcmFjdGljZSB0byBtaXJyb3IgS2luZCBtZXRob2RzIGhlcmUs
IHNvIHlvdSBjYW4gc2F5IHZhbHVlLT5pc0JsYWgoKQogICAgIC8vIGluc3RlYWQgb2YgdmFsdWUt
PmtpbmQoKS5pc0JsYWgoKS4KICAgICBib29sIGlzQ2hpbGwoKSBjb25zdCB7IHJldHVybiBraW5k
KCkuaXNDaGlsbCgpOyB9CkBAIC0xMDcsNiArMTExLDggQEAgcHVibGljOgogICAgIC8vIHZhbHVl
cyB3aXRoIElkZW50aXRpZXMgb24gYm90dG9tIGNvbnN0YW50cy4gRm9yIHRoaXMgcmVhc29uLCB0
aGlzIHRha2VzIGEgY2FsbGJhY2sgdGhhdCBpcwogICAgIC8vIHJlc3BvbnNpYmxlIGZvciBjcmVh
dGluZyBib3R0b21zLiBUaGVyZSdzIGEgdXRpbGl0eSBmb3IgdGhpcywgc2VlIEIzQm90dG9tUHJv
dmlkZXIuaC4gWW91CiAgICAgLy8gY2FuIGFsc28gYWNjZXNzIHRoYXQgdXRpbGl0eSB1c2luZyBy
ZXBsYWNlV2l0aEJvdHRvbShJbnNlcnRpb25TZXQmLCBzaXplX3QpLgorICAgIC8vCisgICAgLy8g
WW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBCb3R0b21Qcm92aWRlcj4KICAgICB2b2lkIHJlcGxhY2VXaXRoQm90dG9tKGNvbnN0IEJv
dHRvbVByb3ZpZGVyJik7CiAgICAgCkBAIC0zMjEsNiArMzI3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBJVG9GOgogICAgICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAgICAgICBjYXNlIEJy
YW5jaDoKKyAgICAgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobnVt
QXJncyAhPSAxKSkKICAgICAgICAgICAgICAgICBiYWRLaW5kKGtpbmQsIG51bUFyZ3MpOwogICAg
ICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDM4IEBACiAKICNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KIAorbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK1R5cGUgYmVzdFR5
cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAg
Y2FzZSBXaWR0aDg6CisgICAgY2FzZSBXaWR0aDE2OgorICAgIGNhc2UgV2lkdGgzMjoKKyAgICAg
ICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICByZXR1cm4g
SW50MzI7CisgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICByZXR1cm4gRmxvYXQ7CisgICAg
ICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIFZvaWQ7CisgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAg
ICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJldHVybiBJbnQ2NDsKKyAgICAgICAgY2FzZSBG
UDoKKyAgICAgICAgICAgIHJldHVybiBEb3VibGU7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFZvaWQ7CisgICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFZvaWQ7Cit9CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCiBuYW1lc3BhY2UgV1RGIHsKIAogdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QjM6OldpZHRoIHdpZHRoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2MiwxOCBA
QCBpbmxpbmUgV2lkdGggd2lkdGhGb3JUeXBlKFR5cGUgdHlwZSkKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAoraW5saW5lIFdpZHRoIGNhbm9uaWNhbFdpZHRoKFdpZHRoIHdpZHRoKQor
eworICAgIHJldHVybiBzdGQ6Om1heChXaWR0aDMyLCB3aWR0aCk7Cit9CisKK2lubGluZSBXaWR0
aCBpc0Nhbm9uaWNhbFdpZHRoKFdpZHRoIHdpZHRoKQoreworICAgIHJldHVybiB3aWR0aCA+PSBX
aWR0aDMyOworfQorCitUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpOworCiBp
bmxpbmUgV2lkdGggY29uc2VydmF0aXZlV2lkdGgoQmFuayBiYW5rKQogewogICAgIHJldHVybiBi
YW5rID09IEdQID8gcG9pbnRlcldpZHRoKCkgOiBXaWR0aDY0OwpAQCAtOTMsNiArMTA1LDIwIEBA
IGlubGluZSBXaWR0aCB3aWR0aEZvckJ5dGVzKHVuc2lnbmVkIGJ5dGUKICAgICB9CiB9CiAKK2lu
bGluZSB1aW50NjRfdCBtYXNrKFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsK
KyAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAwMDBmZmxsdTsK
KyAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMGZmZmZsbHU7
CisgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMGZmZmZmZmZmbGx1
OworICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgcmV0dXJuIDB4ZmZmZmZmZmZmZmZmZmZmZmxs
dTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RG
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBAIHVuc2lnbmVkIEFyZzo6anNIYXNoKCkgY29u
c3QKICAgICBjYXNlIFJlbENvbmQ6CiAgICAgY2FzZSBSZXNDb25kOgogICAgIGNhc2UgRG91Ymxl
Q29uZDoKKyAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAg
cmVzdWx0ICs9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMTgyLDYgKzE4Myw5IEBAIHZvaWQgQXJnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiAgICAgY2FzZSBEb3VibGVDb25kOgogICAgICAgICBvdXQucHJpbnQoYXNEb3VibGVDb25k
aXRpb24oKSk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0YXR1c0NvbmQ6CisgICAgICAg
IG91dC5wcmludChhc1N0YXR1c0NvbmRpdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgU3BlY2lhbDoKICAgICAgICAgb3V0LnByaW50KHBvaW50ZXJEdW1wKHNwZWNpYWwoKSkpOwog
ICAgICAgICByZXR1cm47CkBAIC0yNDEsNiArMjQ1LDkgQEAgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpEb3VibGVDb25kOgogICAgICAgICBv
dXQucHJpbnQoIkRvdWJsZUNvbmQiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJnOjpT
dGF0dXNDb25kOgorICAgICAgICBvdXQucHJpbnQoIlN0YXR1c0NvbmQiKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgQXJnOjpTcGVjaWFsOgogICAgICAgICBvdXQucHJpbnQoIlNwZWNpYWwi
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg1LDYgKzI5Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6RWFybHlEZWY6CiAgICAgICAg
IG91dC5wcmludCgiRWFybHlEZWYiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJnOjpF
YXJseVpEZWY6CisgICAgICAgIG91dC5wcmludCgiRWFybHlaRGVmIik7CisgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAgb3V0LnByaW50KCJTY3JhdGNoIik7
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QXJnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcu
aAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJl
bENvbmQsCiAgICAgICAgIFJlc0NvbmQsCiAgICAgICAgIERvdWJsZUNvbmQsCisgICAgICAgIFN0
YXR1c0NvbmQsCiAgICAgICAgIFNwZWNpYWwsCiAgICAgICAgIFdpZHRoQXJnCiAgICAgfTsKQEAg
LTE1MSw2ICsxNTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGFzIFVzZSBoYXMgdW5kZWZpbmVk
IGJlaGF2aW9yOiB0aGUgdXNlIG1heSBoYXBwZW4gYmVmb3JlIHRoZSBkZWYsIG9yIGl0IG1heSBo
YXBwZW4gYWZ0ZXIKICAgICAgICAgLy8gaXQuCiAgICAgICAgIEVhcmx5RGVmLAorICAgICAgICAg
ICAgCisgICAgICAgIEVhcmx5WkRlZiwKIAogICAgICAgICAvLyBTb21lIGluc3RydWN0aW9ucyBu
ZWVkIGEgc2NyYXRjaCByZWdpc3Rlci4gV2UgbW9kZWwgdGhpcyBieSBzYXlpbmcgdGhhdCB0aGUg
dGVtcG9yYXJ5IGlzCiAgICAgICAgIC8vIGRlZmluZWQgZWFybHkgYW5kIHVzZWQgbGF0ZS4gVGhp
cyByb2xlIGltcGxpZXMgdGhhdC4KQEAgLTE4Niw2ICsxODksNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIEVhcmx5RGVm
OgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIwNiw2ICsyMTAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgog
ICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTIyOCw2ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAg
ICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNl
IEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiByb2xlOwogICAgICAgICBjYXNlIFVzZToK
ICAgICAgICAgICAgIHJldHVybiBDb2xkVXNlOwpAQCAtMjUzLDYgKzI1OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAg
ICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTI3NCw2ICsyODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2Fz
ZSBVc2VBZGRyOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRl
ZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTI5NCw2ICszMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
WkRlZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAg
ICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMxNSw2ICszMjQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNj
cmF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzMwLDYgKzM0
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIExhdGVV
c2U6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAg
ICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zNTgsNiArMzY5LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlWkRlZjoK
KyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUzMyw2ICs1NDUsMTQgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHN0YXRpYyBBcmcg
c3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKKyAg
ICB7CisgICAgICAgIEFyZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBTdGF0dXND
b25kOworICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBjb25kaXRpb247CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCiAgICAgc3RhdGljIEFyZyBzcGVjaWFsKEFpcjo6U3BlY2lhbCog
c3BlY2lhbCkKICAgICB7CiAgICAgICAgIEFyZyByZXN1bHQ7CkBAIC02NTgsMTIgKzY3OCwxOCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBraW5kKCkgPT0gRG91YmxlQ29uZDsKICAgICB9CiAK
KyAgICBib29sIGlzU3RhdHVzQ29uZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ga2lu
ZCgpID09IFN0YXR1c0NvbmQ7CisgICAgfQorCiAgICAgYm9vbCBpc0NvbmRpdGlvbigpIGNvbnN0
CiAgICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAgICAgICBjYXNlIFJlbENvbmQ6
CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAg
ICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg1MSw2ICs4NzcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAg
ICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2Fz
ZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC04NzIsNiArODk5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAg
ICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBj
YXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0
aEFyZzoKICAgICAgICAgY2FzZSBJbnZhbGlkOgpAQCAtMTA1OCw2ICsxMDg2LDcgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAg
Y2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2Ug
U3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTE3Nyw2ICsxMjA2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24+KG1fb2Zmc2V0KTsKICAgICB9CiAg
ICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbiBhc1N0YXR1c0NvbmRpdGlv
bigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNTdGF0dXNDb25kKCkpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbj4obV9v
ZmZzZXQpOworICAgIH0KKyAgICAKICAgICAvLyBUZWxscyB5b3UgaWYgdGhlIEFyZyBpcyBpbnZl
cnRpYmxlLiBPbmx5IGNvbmRpdGlvbiBhcmd1bWVudHMgYXJlIGludmVydGlibGUsIGFuZCBldmVu
IGZvciB0aG9zZSwgdGhlcmUKICAgICAvLyBhcmUgYSBmZXcgZXhjZXB0aW9ucyAtIG5vdGFibHkg
T3ZlcmZsb3cgYW5kIFNpZ25lZC4KICAgICBib29sIGlzSW52ZXJ0aWJsZSgpIGNvbnN0CkBAIC0x
MTg0LDYgKzEyMTksNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAg
ICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNl
IFN0YXR1c0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBSZXND
b25kOgogICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjppc0ludmVydGlibGUoYXNS
ZXN1bHRDb25kaXRpb24oKSk7CkBAIC0xMjA0LDYgKzEyNDAsOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gcmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzUmVzdWx0Q29uZGl0
aW9uKCkpKTsKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgogICAgICAgICAgICAgcmV0dXJuIGRv
dWJsZUNvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc0RvdWJsZUNvbmRpdGlvbigpKSk7Cisg
ICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKKyAgICAgICAgICAgIHJldHVybiBzdGF0dXNDb25kKE1h
Y3JvQXNzZW1ibGVyOjppbnZlcnQoYXNTdGF0dXNDb25kaXRpb24oKSkpOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgIHJldHVybiBBcmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogCiBjb25z
dCBjaGFyKiBjb25zdCBCYXNpY0Jsb2NrOjpkdW1wUHJlZml4ID0gIiMiOwogCit2b2lkIEJhc2lj
QmxvY2s6OnNldFN1Y2Nlc3NvcnMoQmFzaWNCbG9jayogYmxvY2spCit7CisgICAgbV9zdWNjZXNz
b3JzLnJlc2l6ZSgxKTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0gPSB0YXJnZXQ7Cit9CisKK3ZvaWQg
QmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sgdGFrZW4sIEZyZXF1ZW50
ZWRCbG9jayBub3RUYWtlbikKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVzaXplKDIpOworICAgIG1f
c3VjY2Vzc29yc1swXSA9IHRha2VuOworICAgIG1fc3VjY2Vzc29yc1sxXSA9IG5vdFRha2VuOwor
fQorCiBib29sIEJhc2ljQmxvY2s6OmFkZFByZWRlY2Vzc29yKEJhc2ljQmxvY2sqIGJsb2NrKQog
ewogICAgIHJldHVybiBCMzo6YWRkUHJlZGVjZXNzb3IodGhpcywgYmxvY2spOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdWNjZXNz
b3JMaXN0JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAgICAg
U3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQogCisg
ICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayk7CisgICAgdm9pZCBzZXRTdWNj
ZXNzb3JzKEZyZXF1ZW50ZWRCbG9jaywgRnJlcXVlbnRlZEJsb2NrKTsKKwogICAgIEJhc2ljQmxv
Y2sqIHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBzdWNjZXNz
b3IoaW5kZXgpLmJsb2NrKCk7IH0KICAgICBCYXNpY0Jsb2NrKiYgc3VjY2Vzc29yQmxvY2sodW5z
aWduZWQgaW5kZXgpIHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQogICAgIFN1
Y2Nlc3NvckNvbGxlY3Rpb248QmFzaWNCbG9jaywgU3VjY2Vzc29yTGlzdD4gc3VjY2Vzc29yQmxv
Y2tzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRp
b25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QmxvY2tJbnNlcnRpb25TZXQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0Lmgi
CisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQmFzaWNCbG9jay5oIgorI2lu
Y2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK0Jsb2NrSW5zZXJ0aW9u
U2V0OjpCbG9ja0luc2VydGlvblNldChDb2RlICZjb2RlKQorICAgIDogR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0KGNvZGUubV9ibG9ja3MpCit7Cit9CisKK0Jsb2NrSW5zZXJ0aW9uU2V0Ojp+Qmxv
Y2tJbnNlcnRpb25TZXQoKQoreworfQorCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWly
CisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkK
KworI2luY2x1ZGUgIkIzR2VuZXJpY0Jsb2NrSXNuZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiQWly
Q29kZS5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKwor
Y2xhc3MgSW5zZXJ0aW9uU2V0OworCit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxC
YXNpY0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CisKK2NsYXNzIEJsb2Nr
SW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2Nr
PiB7CitwdWJsaWM6CisgICAgQmxvY2tJbnNlcnRpb25TZXQoQ29kZSYpOworICAgIH5CbG9ja0lu
c2VydGlvblNldCgpOworICAgIAorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZXZlbnR1YWxseSBp
bXBsZW1lbnQgQjM6OkJsb2NrSW5zZXJ0aW9uU2V0J3Mgc3BsaXRGb3J3YXJkKCkuCit9OworCit9
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklU
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2Vu
ZXJhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw4IEBAIHZvaWQgcHJlcGFyZUZv
ckdlbmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAgICAgZGF0YUxvZygiSW5pdGlhbCBhaXI6XG4i
KTsKICAgICAgICAgZGF0YUxvZyhjb2RlKTsKICAgICB9CisgICAgCisgICAgc2ltcGxpZnlDRkco
Y29kZSk7CiAKICAgICBsb3dlck1hY3Jvcyhjb2RlKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTY2LDkgKzE2NiwxMiBAQCB4ODY6IEFkZEZsb2F0IFU6RjozMiwgVUQ6RjozMgogU3ViMzIg
VTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4
ODY6IEltbSwgQmFzZUluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAg
IHg4NjogQmFzZUluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBC
YXNlSW5kZXgKIAogYXJtNjQ6IFN1YjMyIFU6RzozMiwgVTpHOjMyLCBEOkc6MzIKICAgICBUbXAs
IFRtcCwgVG1wCkBAIC0xNzYsOSArMTc5LDEyIEBAIGFybTY0OiBTdWIzMiBVOkc6MzIsIFU6Rzoz
MiwgRDpHOjMyCiA2NDogU3ViNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4
ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBCYXNlSW5kZXgKICAgICBJbW0sIFRtcAogICAg
IHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBCYXNlSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBB
ZGRyCisgICAgeDg2OiBUbXAsIEJhc2VJbmRleAogCiBhcm02NDogU3ViNjQgVTpHOjY0LCBVOkc6
NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTMzMCw4ICszMzYsMTEgQEAgQW5kMzIg
VTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4
NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEJhc2VJbmRleAogICAgIHg4NjogQWRkciwgVG1w
CisgICAgeDg2OiBCYXNlSW5kZXgsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJ
bW0sIEJhc2VJbmRleAogCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRt
cCwgVG1wLCBUbXAKQEAgLTMzOSw3ICszNDgsMTMgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgog
CiB4ODZfNjQ6IEFuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCi0gICAgeDg2OiBJ
bW0sIFRtcAorICAgIEltbSwgVG1wCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBCYXNlSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEJhc2VJbmRleAorICAgIEFkZHIsIFRtcAorICAgIEJh
c2VJbmRleCwgVG1wCiAKIEFuZERvdWJsZSBVOkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1w
LCBUbXAsIFRtcApAQCAtNDgwLDggKzQ5NSwxMSBAQCBYb3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAg
ICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4
ODY6IFRtcCwgQmFzZUluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEJhc2VJbmRl
eCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgQmFzZUluZGV4CiAKIDY0
OiBYb3I2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDkw
LDYgKzUwOCwxMSBAQCBYb3IzMiBVOkc6MzIsIFVaRDpHOjMyCiA2NDogWG9yNjQgVTpHOjY0LCBV
RDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBC
YXNlSW5kZXgKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogQmFzZUluZGV4LCBUbXAKKyAg
ICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBCYXNlSW5kZXgKICAgICB4ODY6IEltbSwg
VG1wCiAKIGFybTY0OiBOb3QzMiBVOkc6MzIsIFpEOkc6MzIKQEAgLTY2OCwyOCArNjkxLDM4MCBA
QCBMb2FkOCBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAor
TG9hZEFjcTggVTpHOjgsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisK
IFN0b3JlOCBVOkc6OCwgRDpHOjgKICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAgICAg
eDg2OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJbW0sIEFkZHIKIAorU3RvcmVSZWw4IFU6Rzo4LCBE
Okc6OAorICAgIFRtcCwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgK
KyAgICB4ODY6IEltbSwgQWRkcgorCiBMb2FkOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6
MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3E4U2lnbmVkRXh0ZW5k
VG8zMiBVOkc6OCwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogTG9h
ZDE2IFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9h
ZEFjcTE2IFU6RzoxNiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwog
TG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAg
ICBJbmRleCwgVG1wCiAKK0xvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMy
CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBTdG9yZTE2IFU6RzoxNiwgRDpHOjE2
CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgogCitTdG9yZUFjcTE2IFU6RzoxNiwgRDpH
OjE2CisgICAgVG1wLCBJbmRleAorICAgIFRtcCwgQWRkcgorCitMb2FkQWNxMzIgVTpHOjMyLCBa
RDpHOjMyCisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK1N0
b3JlUmVsMzIgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
ICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisKKzY0OiBMb2FkQWNxNjQg
VTpHOjY0LCBaRDpHOjY0CisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwg
VG1wCisKKzY0OiBTdG9yZVJlbDY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorCisj
IFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4KK3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIs
IFVEOkc6OCwgVTpHOjgsIFVEOkc6OCwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1w
LCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2
OiBBdG9taWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiwgWkQ6
Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIs
IFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwg
VG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKwor
eDg2XzY0OiBBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2
NCwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0
dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVM4IFVE
Okc6OCwgVTpHOjgsIFVEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYK
KyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
U3Ryb25nQ0FTMzIgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyCisgICAgVG1wKiwgVG1wLCBBZGRy
CisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1N0cm9uZ0NBUzY0IFVEOkc6
NjQsIFU6Rzo2NCwgVUQ6Rzo2NAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwg
SW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6
OCwgVUQ6Rzo4IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FT
MTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYgL2JyYW5jaAorICAgIFN0YXR1c0Nv
bmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKwor
eDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6
RzozMiAvYnJhbmNoCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVz
Q29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0
IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2gKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljQWRkOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRl
eAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQxNiBVOkc6
MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDMyIFU6RzozMiwgVUQ6RzozMgorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4Nl82NDogQXRvbWljQWRkNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNTdWI4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjE2IFU6RzoxNiwgVUQ6
RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
XzY0OiBBdG9taWNTdWI2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDgg
VTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMTYgVTpHOjE2LCBVRDpHOjE2Cisg
ICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2OiBBdG9taWNBbmQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0
b21pY0FuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3I4IFU6Rzo4LCBV
RDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNPcjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljT3I2NCBV
Okc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjggVTpHOjgsIFVEOkc6OAorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogQXRvbWljWG9yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNY
b3IzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hvcjY0IFU6Rzo2NCwg
VUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljTmVnOCBVRDpHOjgKKyAgICBBZGRyCisgICAgSW5k
ZXgKKworeDg2OiBBdG9taWNOZWcxNiBVRDpHOjE2CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4
NjogQXRvbWljTmVnMzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0
b21pY05lZzY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3Q4
IFVEOkc6OAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDE2IFVEOkc6MTYK
KyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QzMiBVRDpHOjMyCisgICAgQWRk
cgorICAgIEluZGV4CisKK3g4Nl82NDogQXRvbWljTm90NjQgVUQ6Rzo2NAorICAgIEFkZHIKKyAg
ICBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQ4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQxNiBVRDpHOjE2LCBVRDpH
OjE2CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQz
MiBVRDpHOjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZf
NjQ6IEF0b21pY1hjaGdBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGc4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGcxNiBVRDpHOjE2LCBVRDpHOjE2
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGczMiBVRDpH
OjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0
b21pY1hjaGc2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCithcm02NDogTG9hZExpbms4IFU6Rzo4LCBaRDpHOjgKKyAgICBBZGRyLCBUbXAKKyAgICBJ
bmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTggVTpHOjgsIFpEOkc6OAorICAgIEFkZHIs
IFRtcAorICAgIEluZGV4LCBUbXAKKworIyBTdXBlciBjb25mdXNpbmcgZmFjdDogdGhpcyByZXR1
cm5zIDAgdG8gbWVhbiBzdWNjZXNzLCAxIHRvIG1lYW4gZmFpbHVyZS4KK2FybTY0OiBTdG9yZUNv
bmQ4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJ
bmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OAor
ICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlu
azE2IFU6RzoxNiwgWkQ6RzoxNgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJt
NjQ6IExvYWRMaW5rQWNxMTYgVTpHOjE2LCBaRDpHOjE2CisgICAgQWRkciwgVG1wCisgICAgSW5k
ZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAg
ICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25k
UmVsMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRt
cCwgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmszMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBB
ZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTMyIFU6RzozMiwg
WkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29u
ZDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAs
IEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6
Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExv
YWRMaW5rNjQgVTpHOjY0LCBaRDpHOjY0CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAor
Cithcm02NDogTG9hZExpbmtBY3E2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAKKyAg
ICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQ2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6
OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9y
ZUNvbmRSZWw2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisg
ICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBEZXBlbmQzMiBVOkc6MzIsIEQ6RzozMgorICAg
IFRtcCwgVG1wCisKK2FybTY0OiBEZXBlbmQ2NCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1w
CisKIENvbXBhcmUzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29u
ZCwgVG1wLCBUbXAsIFRtcAogICAgIFJlbENvbmQsIFRtcCwgSW1tLCBUbXAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRl
ci5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3Nyw2ICsxNzcs
MTAgQEAgdm9pZCBvcHRpbWl6ZUJsb2NrT3JkZXIoQ29kZSYgY29kZSkKICAgICAgICAgY2FzZSBC
cmFuY2hTdWI2NDoKICAgICAgICAgY2FzZSBCcmFuY2hOZWczMjoKICAgICAgICAgY2FzZSBCcmFu
Y2hOZWc2NDoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVM4OgorICAgICAgICBj
YXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2OgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0
cm9uZ0NBUzMyOgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0OgogICAgICAg
ICAgICAgaWYgKGNvZGUuZmluZE5leHRCbG9jayhibG9jaykgPT0gYmxvY2stPnN1Y2Nlc3NvckJs
b2NrKDApICYmIGJyYW5jaC5hcmdzWzBdLmlzSW52ZXJ0aWJsZSgpKSB7CiAgICAgICAgICAgICAg
ICAgc3RkOjpzd2FwKGJsb2NrLT5zdWNjZXNzb3IoMCksIGJsb2NrLT5zdWNjZXNzb3IoMSkpOwog
ICAgICAgICAgICAgICAgIGJyYW5jaC5hcmdzWzBdID0gYnJhbmNoLmFyZ3NbMF0uaW52ZXJ0ZWQo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZElu
dGVyZmVyZW5jZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCB2b2lkIHBhZEludGVyZmVyZW5jZShDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAg
IFsmXSAoQXJnJiwgQXJnOjpSb2xlIHJvbGUsIEJhbmssIFdpZHRoKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAocm9sZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFy
bHlEZWY6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBoYXNFYXJseURlZiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVVc2U6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhp
bmcuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsNyBA
QCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6TGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpTY3Jh
dGNoOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlEZWY6CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CiAgICAgICAgICAgICAgICAgICAgICAgICBm
b3IgKFJlZyByZWcgOiBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoYmFuaykpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIXNldEJlZm9yZS5nZXQocmVnKSAmJiAhc2V0QWZ0ZXIu
Z2V0KHJlZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWZ0ZXIuc2V0
KHJlZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0
b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVf
Z2VuZXJhdG9yLnJiCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE0ICs1MSw0
OSBAQCBjbGFzcyBBcmcKICAgICAgICAgQGJhbmsgPSBiYW5rCiAgICAgICAgIEB3aWR0aCA9IHdp
ZHRoCiAgICAgZW5kCi0KLSAgICBkZWYgd2lkdGhDb2RlCisgICAgCisgICAgZGVmIHNlbGYud2lk
dGhDb2RlKHdpZHRoKQogICAgICAgICBpZiB3aWR0aCA9PSAiUHRyIgogICAgICAgICAgICAgInBv
aW50ZXJXaWR0aCgpIgogICAgICAgICBlbHNlCiAgICAgICAgICAgICAiV2lkdGgje3dpZHRofSIK
ICAgICAgICAgZW5kCiAgICAgZW5kCisKKyAgICBkZWYgd2lkdGhDb2RlCisgICAgICAgIEFyZy53
aWR0aENvZGUod2lkdGgpCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYucm9sZUNvZGUocm9s
ZSkKKyAgICAgICAgY2FzZSByb2xlCisgICAgICAgIHdoZW4gIlUiCisgICAgICAgICAgICAiVXNl
IgorICAgICAgICB3aGVuICJEIgorICAgICAgICAgICAgIkRlZiIKKyAgICAgICAgd2hlbiAiWkQi
CisgICAgICAgICAgICAiWkRlZiIKKyAgICAgICAgd2hlbiAiVUQiCisgICAgICAgICAgICAiVXNl
RGVmIgorICAgICAgICB3aGVuICJVWkQiCisgICAgICAgICAgICAiVXNlWkRlZiIKKyAgICAgICAg
d2hlbiAiVUEiCisgICAgICAgICAgICAiVXNlQWRkciIKKyAgICAgICAgd2hlbiAiUyIKKyAgICAg
ICAgICAgICJTY3JhdGNoIgorICAgICAgICB3aGVuICJFRCIKKyAgICAgICAgICAgICJFYXJseURl
ZiIKKyAgICAgICAgd2hlbiAiRVpEIgorICAgICAgICAgICAgIkVhcmx5WkRlZiIKKyAgICAgICAg
d2hlbiAiTFUiCisgICAgICAgICAgICAiTGF0ZVVzZSIKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmFpc2UKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIHJvbGVDb2RlCisg
ICAgICAgIEFyZy5yb2xlQ29kZShyb2xlKQorICAgIGVuZAogZW5kCiAKIGNsYXNzIE92ZXJsb2Fk
CkBAIC0xODIsNyArMjE3LDcgQEAgZGVmIGxleChzdHIsIGZpbGVOYW1lKQogZW5kCiAKIGRlZiBp
c1JvbGUodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoWkQpfChVWkQpfChV
QSl8KFMpKVxaLworICAgIHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEp
fChTKXwoRUQpfChFWkQpfChMVSkpXFovCiBlbmQKIAogZGVmIGlzR0YodG9rZW4pCkBAIC0xOTAs
NyArMjI1LDcgQEAgZGVmIGlzR0YodG9rZW4pCiBlbmQKIAogZGVmIGlzS2luZCh0b2tlbikKLSAg
ICB0b2tlbiA9fiAvXEEoKFRtcCl8KEltbSl8KEJpZ0ltbSl8KEJpdEltbSl8KEJpdEltbTY0KXwo
QWRkcil8KEluZGV4KXwoUmVsQ29uZCl8KFJlc0NvbmQpfChEb3VibGVDb25kKSlcWi8KKyAgICB0
b2tlbiA9fiAvXEEoKFRtcCl8KEltbSl8KEJpZ0ltbSl8KEJpdEltbSl8KEJpdEltbTY0KXwoQWRk
cil8KEluZGV4KXwoUmVsQ29uZCl8KFJlc0NvbmQpfChEb3VibGVDb25kKXwoU3RhdHVzQ29uZCkp
XFovCiBlbmQKIAogZGVmIGlzQXJjaCh0b2tlbikKQEAgLTI2NCw3ICsyOTksNyBAQCBjbGFzcyBQ
YXJzZXIKIAogICAgIGRlZiBjb25zdW1lS2luZAogICAgICAgICByZXN1bHQgPSB0b2tlbi5zdHJp
bmcKLSAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdElt
bSwgQml0SW1tNjQsIFRtcCwgQWRkciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIG9yIERvdWJs
ZUNvbmQpIikgdW5sZXNzIGlzS2luZChyZXN1bHQpCisgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVj
dGVkIGtpbmQgKEltbSwgQmlnSW1tLCBCaXRJbW0sIEJpdEltbTY0LCBUbXAsIEFkZHIsIEluZGV4
LCBSZWxDb25kLCBSZXNDb25kLCBEb3VibGVDb25kLCBvciBTdGF0dXNDb25kKSIpIHVubGVzcyBp
c0tpbmQocmVzdWx0KQogICAgICAgICBhZHZhbmNlCiAgICAgICAgIHJlc3VsdAogICAgIGVuZApA
QCAtNjM0LDI4ICs2NjksNyBAQCB3cml0ZUgoIk9wY29kZVV0aWxzIikgewogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBvdmVybG9hZC5zaWduYXR1cmUuZWFjaF93aXRoX2luZGV4IHsKICAgICAg
ICAgICAgICAgICB8IGFyZywgaW5kZXggfAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIHJvbGUgPSBuaWwKLSAgICAgICAgICAgICAgICBjYXNlIGFyZy5yb2xlCi0gICAgICAgICAg
ICAgICAgd2hlbiAiVSIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2UiCi0gICAgICAg
ICAgICAgICAgd2hlbiAiRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYiCi0gICAg
ICAgICAgICAgICAgd2hlbiAiWkQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiWkRlZiIK
LSAgICAgICAgICAgICAgICB3aGVuICJVRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJV
c2VEZWYiCi0gICAgICAgICAgICAgICAgd2hlbiAiVVpEIgotICAgICAgICAgICAgICAgICAgICBy
b2xlID0gIlVzZVpEZWYiCi0gICAgICAgICAgICAgICAgd2hlbiAiVUEiCi0gICAgICAgICAgICAg
ICAgICAgIHJvbGUgPSAiVXNlQWRkciIKLSAgICAgICAgICAgICAgICB3aGVuICJTIgotICAgICAg
ICAgICAgICAgICAgICByb2xlID0gIlNjcmF0Y2giCi0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIGVuZAotCi0gICAgICAgICAg
ICAgICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7cm9sZX0sICN7
YXJnLmJhbmt9UCwgI3thcmcud2lkdGhDb2RlfSk7IgorICAgICAgICAgICAgICAgIG91dHAucHV0
cyAiZnVuY3RvcihhcmdzWyN7aW5kZXh9XSwgQXJnOjoje2FyZy5yb2xlQ29kZX0sICN7YXJnLmJh
bmt9UCwgI3thcmcud2lkdGhDb2RlfSk7IgogICAgICAgICAgICAgfQogICAgICAgICBlbmQKICAg
ICB9CkBAIC04MTksNiArODMzLDcgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAg
ICAgICAgICAgICAgd2hlbiAiUmVsQ29uZCIKICAgICAgICAgICAgICAgICB3aGVuICJSZXNDb25k
IgogICAgICAgICAgICAgICAgIHdoZW4gIkRvdWJsZUNvbmQiCisgICAgICAgICAgICAgICAgd2hl
biAiU3RhdHVzQ29uZCIKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHJhaXNlICJVbmV4cGVjdGVkIGtpbmQ6ICN7a2luZC5uYW1lfSIKICAgICAgICAgICAgICAgICBl
bmQKQEAgLTExMDUsNiArMTEyMCw4IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAg
ICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc1Jlc3VsdENvbmRp
dGlvbigpIgogICAgICAgICAgICAgICAgIHdoZW4gIkRvdWJsZUNvbmQiCiAgICAgICAgICAgICAg
ICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzRG91YmxlQ29uZGl0aW9uKCkiCisg
ICAgICAgICAgICAgICAgd2hlbiAiU3RhdHVzQ29uZCIKKyAgICAgICAgICAgICAgICAgICAgb3V0
cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNTdGF0dXNDb25kaXRpb24oKSIKICAgICAgICAgICAg
ICAgICBlbmQKICAgICAgICAgICAgIH0KIApAQCAtMTE0OCwyNyArMTE2NSw3IEBAIEZpbGUub3Bl
bigiSlNBaXJfb3Bjb2RlLmpzIiwgInciKSB7CiAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJj
YXNlICN7b3ZlcmxvYWQuc2lnbmF0dXJlLmxlbmd0aH06IiBpZiBuZWVkT3ZlcmxvYWRTd2l0Y2gK
ICAgICAgICAgICAgICAgICBvdmVybG9hZC5zaWduYXR1cmUuZWFjaF93aXRoX2luZGV4IHsKICAg
ICAgICAgICAgICAgICAgICAgfCBhcmcsIGluZGV4IHwKLSAgICAgICAgICAgICAgICAgICAgcm9s
ZSA9IG5pbAotICAgICAgICAgICAgICAgICAgICBjYXNlIGFyZy5yb2xlCi0gICAgICAgICAgICAg
ICAgICAgIHdoZW4gIlUiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZSIKLSAg
ICAgICAgICAgICAgICAgICAgd2hlbiAiRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUg
PSAiRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJaRCIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJvbGUgPSAiWkRlZiIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVUQiCi0gICAg
ICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZURlZiIKLSAgICAgICAgICAgICAgICAgICAg
d2hlbiAiVVpEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VaRGVmIgotICAg
ICAgICAgICAgICAgICAgICB3aGVuICJVQSIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUg
PSAiVXNlQWRkciIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiUyIKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSAiU2NyYXRjaCIKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICAgICAgZW5kCi0gICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImluc3Qudmlz
aXRBcmcoI3tpbmRleH0sIGZ1bmMsIEFyZy4je3JvbGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndp
ZHRofSk7IgorICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImluc3QudmlzaXRBcmcoI3tp
bmRleH0sIGZ1bmMsIEFyZy4je2FyZy5yb2xlQ29kZX0sICN7YXJnLmJhbmt9UCwgI3thcmcud2lk
dGh9KTsiCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG91dHAucHV0cyAiYnJl
YWs7IgogICAgICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302960</attachid>
            <date>2017-02-28 11:47:27 -0800</date>
            <delta_ts>2017-02-28 12:08:11 -0800</delta_ts>
            <desc>more x86</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>217347</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMSBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OwogCQkwRjJENERERDE5ODMyRDM0MDA3RDRC
MTkgLyogRGVidWdnZXJTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJENEREQjE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5j
cHAgKi87IH07CiAJCTBGMkQ0RERFMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENEREQzE5
ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBU
b1RoaXNTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyRDRERTUxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi87IH07
CkBAIC0yNzY0LDYgKzI3NjksMTEgQEAKIAkJMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIz
QmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0aCA9
IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRDFFNjBB
RTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7IHBhdGggPSBiMy9CM1dp
ZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0IzMUU2MzQzRTgwMEMx
MzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBC
M0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRvbWlj
VmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyog
QWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5z
ZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkExRTYz
NDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIvQWly
QmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRE
REIxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQ
cm9maWxlckxvZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI5Miw2ICs1MzAyLDggQEAKIAkJCQkwRkVD
ODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4
MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4
MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNC
YW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5j
cHAgKi8sCkBAIC01MzU0LDYgKzUzNjYsNyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyog
QjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4
MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3
NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTQ2OSw2ICs1NDgyLDggQEAKIAkJCQkwRjY0RUFG
MjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJE
QUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFD
REM3MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5oICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgw
MEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYz
NDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIx
QkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFD
NDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYx
ODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC03
MzU0LDggKzczNjksOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9B
c3NlbWJsZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyog
TWFjcm9Bc3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0
NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYx
MkIxIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4
M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3
NzE4NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywK
QEAgLTc5NTYsNiArNzk3MSw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
ckluc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3RDcxRDlEQzQ0MjAwMUI5
ODI1IC8qIEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0JDMUU2MzQ0MEMwMEMx
MzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0
MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkUzNEMxQTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJS
ZWdBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDQ3LDYgKzgwNjMsNyBAQAogCQkJCTQzNDIy
QTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQdHJWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNGNzAwQzEzODM5IC8qIEIz
R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOEUwRTFC
RjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYz
M0ZDRkMxQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRlVGFpbHMuaCBpbiBIZWFk
ZXJzICovLApAQCAtODM2Niw2ICs4MzgzLDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4NDQ3
MjggLyogREZHT1NSRXhpdEZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEz
QjYwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9taWNW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8qIERG
R1BoYW50b21JbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMxNEVG
OTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFQjE5
RDBCQTdEMDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAtMTAy
NDgsNiArMTAyNjYsNyBAQAogCQkJCTlFNzI5NDA3MTkwRjAxQTUwMDFBOTFCNSAvKiBJbml0aWFs
aXplVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTNFNUI3MTg1QjhCRDMwMDdF
OTVBRCAvKiBJbmplY3RlZFNjcmlwdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTE0QjJDMjE4
NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGMkM2M0I2MUU2MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1OEUzNTkxMTg2MERFQ0YwMDFGMjRGRSAvKiBJbmplY3RlZFNjcmlwdEhv
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1Q0ExODVGOTYyNDAwN0U5NUFEIC8qIElu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTg0MEUyMDE4N0I3
Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xMDI2Niw2ICsxMDI4NSw3IEBACiAJCQkJRTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJBIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMy
NDM4QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1MEU0QjYxMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQkIxRTYzNDQwQTAwQzEzODM5
IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NTE2NUQy
MUJERjBCOTgwMDNCNzVDMSAvKiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0YxMDdFQzM3NjAwNDI3QTQ4IC8qIElu
dGVybmFsRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtSYW5kb20uaD4KIApAQCAtODksNiArOTAsMjMgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gVGltZXNFaWdodDsKICAgICB9CiAgICAgCisgICAgZW51bSBTdGF0dXND
b25kaXRpb24geworICAgICAgICBTdWNjZXNzLAorICAgICAgICBGYWlsdXJlCisgICAgfTsKKyAg
ICAKKyAgICBzdGF0aWMgU3RhdHVzQ29uZGl0aW9uIGludmVydChTdGF0dXNDb25kaXRpb24gY29u
ZGl0aW9uKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICAgICAgY2Fz
ZSBTdWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIEZhaWx1cmU7CisgICAgICAgIGNhc2UgRmFp
bHVyZToKKyAgICAgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgICAgICB9CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdWNjZXNzOworICAg
IH0KKyAgICAKICAgICBzdHJ1Y3QgQmFzZUluZGV4OwogICAgIAogICAgIC8vIEFkZHJlc3M6CkBA
IC0xMTA4LDMgKzExMjYsMjYgQEAgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBl
LCBNYQogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwor
CisjaWYgRU5BQkxFKEFTU0VNQkxFUikKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDxj
bGFzcyBBc3NlbWJsZXJUeXBlLCBjbGFzcyBNYWNyb0Fzc2VtYmxlclR5cGU+Cit2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgdHlwZW5hbWUgSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1ibGVyVHlwZT46OlN0YXR1c0NvbmRpdGlv
biBjb25kaXRpb24pCit7CisgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICBjYXNlIEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlLCBNYWNyb0Fzc2VtYmxlclR5cGU+
OjpTdWNjZXNzOgorICAgICAgICBvdXQucHJpbnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1h
Y3JvQXNzZW1ibGVyVHlwZT46OkZhaWx1cmU6CisgICAgICAgIG91dC5wcmludCgiRmFpbHVyZSIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxF
UikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTEsMTYgKzI1MSw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2
b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0Lmlu
ZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQxNihSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfcm0oc3JjLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lk
IGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fz
c2VtYmxlci5hbmRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFuZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfaW0o
aW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAg
IHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFs
dWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFu
ZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYW5kd19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
OworICAgIH0KKworICAgIHZvaWQgYW5kOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0PGludDhf
dD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisK
KyAgICB2b2lkIGFuZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1f
dmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdp
c3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBv
cDIpCkBAIC00NTYsNiArNTExLDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVn
bF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgbmVn
MzIoQmFzZUluZGV4IHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdsX20o
c3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihBZGRyZXNzIHNyY0Rlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSk7Cisg
ICAgfQorCisgICAgdm9pZCBuZWcxNihCYXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5lZ3dfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0
LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZzgoQWRkcmVzcyBz
cmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnYl9tKHNyY0Rlc3Qub2Zmc2V0
LCBzcmNEZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnOChCYXNlSW5kZXggc3JjRGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2JfbShzcmNEZXN0Lm9mZnNldCwgc3Jj
RGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2
b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNDcxLDE2ICs1NTEsNzEgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBv
cjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5vcndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2
b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIub3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoUmVnaXN0ZXJJRCBzcmMsIEFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I4KFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KwogICAgIHZvaWQgb3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAg
ICB9CiAKKyAgICB2b2lkIG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMu
aW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9y
bF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQog
CisgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisK
KyAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3Zh
bHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBv
cjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX2ltKHN0YXRpY19jYXN0PGludDhfdD4o
aW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm9yYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVl
KSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklE
IG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBA
IC02NTQsMTYgKzc4OSw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfaW0o
aW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAg
IHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuc3Vid19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1
ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3Vi
OChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3VibF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBzdWIxNihUcnVzdGVk
SW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisK
KyAgICB2b2lkIHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1f
dmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMyKEJhc2VJbmRleCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfbXIoc3Jj
Lm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisK
ICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5zdWJsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAg
ICAgfQogCisgICAgdm9pZCBzdWIxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgIH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJ
bmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0K
KworICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3ViOChS
ZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9ycihzcmMsIGRl
c3QpOwpAQCAtNjc3LDYgKzg2Nyw1MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAK
KyAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVl
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7
CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUp
OworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+
KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3J3
X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+
KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19j
YXN0PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEp
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwg
ZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3Qu
aW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQpAQCAtNjkwLDExICs5MjQsNDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54
b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCB4
b3IzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwg
ZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Up
OworICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3Iz
MihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAg
IHZvaWQgeG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBz
cmMuc2NhbGUsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQg
b3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYg
KG9wMSA9PSBvcDIpCkBAIC03NDEsNiArMTAwNSwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lk
IG5vdDMyKEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90bF9t
KGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KworICAgIHZvaWQgbm90MTYoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90
MTYoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisg
ICAgdm9pZCBub3Q4KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5v
dGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDgoQmFz
ZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCBzcXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci5zcXJ0c2RfcnIoc3JjLCBkc3QpOwpAQCAtMjc0MywxMjEgKzMw
MzIsNzg3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwogICAgICAgICBt
X2Fzc2VtYmxlci5vcmxfaW0oMCwgMCwgWDg2UmVnaXN0ZXJzOjplc3ApOwogICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29u
ZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jf
cm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CiAK
LSAgICAvLyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBu
b3JtYWwgc3RvcmVzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KLSAgICB2b2lkIHN0b3JlRmVu
Y2UoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25n
Q0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNt
cHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlz
IHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQn
cyBhIG5vLW9wIG9uIHg4Ni4KLSAgICB2b2lkIGxvYWRGZW5jZSgpCisgICAgdm9pZCBhdG9taWNT
dHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKICAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lk
IHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2Rl
TG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAg
ewotICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0
LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwor
ICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwg
WyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9Ci0g
ICAgCi0gICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKworICAg
IHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBl
eHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAg
IHN0YXRpYyBwdHJkaWZmX3QgcGF0Y2hhYmxlSnVtcFNpemUoKQorICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OnBhdGNoYWJsZUp1bXBT
aXplKCk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
cmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwog
ICAgIH0KIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkK
KyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgaWYg
KHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpCi0gICAg
ICAgICAgICB1cGRhdGVFYXgxRWN4RmxhZ3MoKTsKLSAgICAgICAgcmV0dXJuIHNfc3NlNF8xQ2hl
Y2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6OlNldDsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
KGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzQVZYKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJl
c3MpCiAgICAgewotICAgICAgICAvLyBBVlggc3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVz
c2lvbnMgYW5kIHRob3NlIHJlZ3Jlc3Npb25zIGNhbiBiZSBtYXNzaXZlLgotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZd
IHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdm9pZCB1cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAgIHZvaWQgYXRvbWljU3Ryb25n
Q0FTMTYoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgaW50IGZsYWdzID0gMDsKLSNpZiBDT01Q
SUxFUihNU1ZDKQotICAgICAgICBpbnQgY3B1SW5mb1s0XTsKLSAgICAgICAgX19jcHVpZChjcHVJ
bmZvLCAweDEpOwotICAgICAgICBmbGFncyA9IGNwdUluZm9bMl07Ci0jZWxpZiBDT01QSUxFUihH
Q0NfT1JfQ0xBTkcpCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgYXNtICgKLSAgICAgICAgICAg
ICJtb3ZsICQweDEsICUlZWF4OyIKLSAgICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAgICAi
bW92bCAlJWVjeCwgJTA7IgotICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAg
IDoKLSAgICAgICAgICAgIDogIiVlYXgiLCAiJWVieCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAg
ICAgICApOwotI2Vsc2UKLSAgICAgICAgYXNtICgKLSAgICAgICAgICAgICJtb3ZsICQweDEsICUl
ZWF4OyIKLSAgICAgICAgICAgICJwdXNobCAlJWVieDsiCi0gICAgICAgICAgICAiY3B1aWQ7Igot
ICAgICAgICAgICAgInBvcGwgJSVlYng7IgotICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIK
LSAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICA6
ICIlZWF4IiwgIiVlY3giLCAiJWVkeCIKLSAgICAgICAgICAgICk7Ci0jZW5kaWYKLSNlbmRpZiAv
LyBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCi0gICAgICAgIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9IChm
bGFncyAmICgxIDw8IDE5KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0
ZTo6Q2xlYXI7Ci0gICAgICAgIHNfYXZ4Q2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDI4KSkg
PyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21w
eGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAg
ICB9CiAKLSNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKLSAgICB2b2lkIHByb2JlKFByb2JlRnVuY3Rp
b24sIHZvaWQqIGFyZzEsIHZvaWQqIGFyZzIpOwotI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JF
KQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3Vs
dCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNt
cHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgWDg2
QXNzZW1ibGVyOjpDb25kaXRpb24geDg2Q29uZGl0aW9uKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCk7CisgICAg
ICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIu
Y21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsK
ICAgICB9CiAKLSAgICBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24oUmVzdWx0
Q29uZGl0aW9uIGNvbmQpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlv
bj4oY29uZCk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZd
IHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAg
ICB2b2lkIHNldDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJl
c3MgYWRkcmVzcykKICAgICB7Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAgLy8gT24gMzItYml0IHg4
NiB3ZSBjYW4gb25seSBzZXQgdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOwotICAgICAgICAvLyBlc3Au
LmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQotICAgICAgICBpZiAoZGVzdCA+
PSA0KSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ycihkZXN0LCBYODZSZWdpc3Rl
cnM6OmVheCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zZXRDQ19yKGNvbmQsIFg4NlJlZ2lz
dGVyczo6ZWF4KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnpibF9ycihYODZSZWdpc3Rl
cnM6OmVheCwgWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIueGNo
Z2xfcnIoZGVzdCwgWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0jZW5kaWYKLSAgICAgICAgbV9hc3NlbWJsZXIuc2V0Q0Nfcihjb25kLCBkZXN0KTsK
LSAgICAgICAgbV9hc3NlbWJsZXIubW92emJsX3JyKGRlc3QsIGRlc3QpOworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBt
X2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7IH0pOwogICAgIH0KIAotICAgIHZvaWQgY21vdihYODZBc3NlbWJsZXI6OkNvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNo
QXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAg
ewotI2lmIENQVShYODZfNjQpCi0gICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZxX3JyKGNvbmQsIHNy
YywgZGVzdCk7Ci0jZWxzZQotICAgICAgICBtX2Fzc2VtYmxlci5jbW92bF9ycihjb25kLCBzcmMs
IGRlc3QpOwotI2VuZGlmCisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29u
ZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNMWkNOVCgpCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1w
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0
b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIu
Y21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNT
dHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhj
aGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FT
OChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5l
d1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NB
UzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vh
a0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWlj
V2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFu
ZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBh
dG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9p
ZCBhdG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdp
c3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4
cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBl
eHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoQXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5j
aEF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9t
aWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNX
ZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
bmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJl
dHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3
VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBhZGQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljQWRkOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YWRkOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhZGQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljQWRkMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0s
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhZGQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMy
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIHN1YjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNTdWI4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNTdWI4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNTdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihSZWdpc3RlcklEIHJlZywgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBz
dWIxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFJl
Z2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNTdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljU3ViMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMy
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklEIHJlZywgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
bmQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdp
c3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIGFuZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNBbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFuZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
QW5kMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNBbmQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgb3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY09yOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBvcjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3Iz
MihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNPcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBvcjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
T3IzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChpbW0s
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIHhvcjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYb3I4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNYb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICB4b3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIHhvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljWG9yMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG5lZzgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
bmVnOChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5l
ZzE2KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzE2KEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBu
ZWcxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5l
ZzMyKGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzMyKEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBu
ZWczMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90
OChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4
KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYo
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MTYoQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDE2
KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIo
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MzIoQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDMy
KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4KFJlZ2lzdGVy
SUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0
ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2Vt
Ymxlci54YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLnhhZGR3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZ0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRsX3JtKHJlZywg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljWGNoZ0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGxfcm0o
cmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVn
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNYY2hnMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3df
cm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNYY2hnMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hn
d19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFk
ZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3Rl
cklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAg
IAorICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9m
IG5vcm1hbCBzdG9yZXMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgorICAgIHZvaWQgc3RvcmVG
ZW5jZSgpCisgICAgeworICAgIH0KKworICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQg
aXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4
ODYuCisgICAgdm9pZCBsb2FkRmVuY2UoKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29k
ZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6
OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRl
c3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMg
cHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KKworICAgIHN0
YXRpYyBwdHJkaWZmX3QgcGF0Y2hhYmxlSnVtcFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFg4NkFzc2VtYmxlcjo6cGF0Y2hhYmxlSnVtcFNpemUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
Ym9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpCisgICAgeworICAgICAgICBpZiAo
c19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkKKyAgICAg
ICAgICAgIHVwZGF0ZUVheDFFY3hGbGFncygpOworICAgICAgICByZXR1cm4gc19zc2U0XzFDaGVj
a1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAgIH0KKworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzQVZYKCkKKyAgICB7CisgICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlzdGVy
aW91cyByZWdyZXNzaW9ucyBhbmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUuCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVFYXgx
RWN4RmxhZ3MoKQorICAgIHsKKyAgICAgICAgaW50IGZsYWdzID0gMDsKKyNpZiBDT01QSUxFUihN
U1ZDKQorICAgICAgICBpbnQgY3B1SW5mb1s0XTsKKyAgICAgICAgX19jcHVpZChjcHVJbmZvLCAw
eDEpOworICAgICAgICBmbGFncyA9IGNwdUluZm9bMl07CisjZWxpZiBDT01QSUxFUihHQ0NfT1Jf
Q0xBTkcpCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgYXNtICgKKyAgICAgICAgICAgICJtb3Zs
ICQweDEsICUlZWF4OyIKKyAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAgICAibW92bCAl
JWVjeCwgJTA7IgorICAgICAgICAgICAgOiAiPWciIChmbGFncykKKyAgICAgICAgICAgIDoKKyAg
ICAgICAgICAgIDogIiVlYXgiLCAiJWVieCIsICIlZWN4IiwgIiVlZHgiCisgICAgICAgICAgICAp
OworI2Vsc2UKKyAgICAgICAgYXNtICgKKyAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIK
KyAgICAgICAgICAgICJwdXNobCAlJWVieDsiCisgICAgICAgICAgICAiY3B1aWQ7IgorICAgICAg
ICAgICAgInBvcGwgJSVlYng7IgorICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAg
ICAgICAgIDogIj1nIiAoZmxhZ3MpCisgICAgICAgICAgICA6CisgICAgICAgICAgICA6ICIlZWF4
IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICk7CisjZW5kaWYKKyNlbmRpZiAvLyBDT01Q
SUxFUihHQ0NfT1JfQ0xBTkcpCisgICAgICAgIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9IChmbGFncyAm
ICgxIDw8IDE5KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xl
YXI7CisgICAgICAgIHNfYXZ4Q2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDI4KSkgPyBDUFVJ
RENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CisgICAgfQorCisjaWYg
RU5BQkxFKE1BU01fUFJPQkUpCisgICAgdm9pZCBwcm9iZShQcm9iZUZ1bmN0aW9uLCB2b2lkKiBh
cmcxLCB2b2lkKiBhcmcyKTsKKyNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKKworcHJvdGVj
dGVkOgorICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8WDg2QXNz
ZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOworICAgIH0KKworICAgIFg4NkFzc2VtYmxlcjo6Q29u
ZGl0aW9uIHg4NkNvbmRpdGlvbihSZXN1bHRDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCk7CisgICAg
fQorCisgICAgWDg2QXNzZW1ibGVyOjpDb25kaXRpb24geDg2Q29uZGl0aW9uKFN0YXR1c0NvbmRp
dGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAgIGNhc2Ug
U3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkU7Cisg
ICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNv
bmRpdGlvbk5FOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkU7CisgICAgfQorCisg
ICAgdm9pZCBzZXQzMihYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworI2lmIENQVShYODYpCisgICAgICAgIC8vIE9uIDMyLWJpdCB4ODYgd2UgY2Fu
IG9ubHkgc2V0IHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKKyAgICAgICAgLy8gZXNwLi5lZGkgYXJl
IG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEKKyAgICAgICAgaWYgKGRlc3QgPj0gNCkgewor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcnIoZGVzdCwgWDg2UmVnaXN0ZXJzOjplYXgp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2V0Q0Nfcihjb25kLCBYODZSZWdpc3RlcnM6OmVh
eCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z6YmxfcnIoWDg2UmVnaXN0ZXJzOjplYXgs
IFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JyKGRl
c3QsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
I2VuZGlmCisgICAgICAgIG1fYXNzZW1ibGVyLnNldENDX3IoY29uZCwgZGVzdCk7CisgICAgICAg
IG1fYXNzZW1ibGVyLm1vdnpibF9ycihkZXN0LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGNt
b3YoWDg2QXNzZW1ibGVyOjpDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgbV9hc3NlbWJsZXIuY21v
dnFfcnIoY29uZCwgc3JjLCBkZXN0KTsKKyNlbHNlCisgICAgICAgIG1fYXNzZW1ibGVyLmNtb3Zs
X3JyKGNvbmQsIHNyYywgZGVzdCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0c0xaQ05UKCkKICAgICB7CiAgICAgICAgIGlmIChzX2x6Y250Q2hlY2tTdGF0ZSA9PSBD
UFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpIHsKICAgICAgICAgICAgIGludCBmbGFncyA9IDA7
CkBAIC0yOTI1LDYgKzM4ODAsMzUgQEAgcHJvdGVjdGVkOgogICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihzaXplT2ZSZWdpc3RlciksIGRzdCk7CiAgICAgICAgIHNyY0lzTm9uWmVyby5saW5rKHRo
aXMpOwogICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIHJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7Cisg
ICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhw
ZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgc2V0MzIoeDg2Q29u
ZGl0aW9uKGNvbmQpLCByZXN1bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3Vs
dCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1
bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVy
czo6ZWF4KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIEp1bXAg
YnJhbmNoQXRvbWljU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChl
eHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3Vs
dCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5q
Q0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQogCiBwcml2YXRlOgogICAgIC8vIE9ubHkg
TWFjcm9Bc3NlbWJsZXJYODYgc2hvdWxkIGJlIHVzaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kOyBT
U0UyIGlzIGFsd2F5cyBhdmFpbGFibGUgb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQyLDExICszNDIsNDEgQEAgcHVibGljOgogICAg
ICAgICBtX2Fzc2VtYmxlci5hbmRxX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBh
bmQ2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAg
IHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3Qu
aW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoQWRkcmVzcyBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfbXIoc3Jj
Lm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoQmFzZUlu
ZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5k
cV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOwor
ICAgIH0KKwogICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNE
ZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pcihpbW0ubV92YWx1ZSwgc3Jj
RGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2ltKGltbS5tX3ZhbHVlLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5k
cV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tUHRyIGltbSwgUmVn
aXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgaW50cHRyX3QgaW50VmFsdWUgPSBpbW0u
YXNJbnRwdHIoKTsKQEAgLTU1MiwxMSArNTgyLDUxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIubmVncV9yKGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgbmVnNjQoQWRkcmVzcyBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVncV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgIH0KKworICAgIHZvaWQgbmVnNjQoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5uZWdxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vcnFfcnIoc3JjLCBk
ZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgQmFzZUlu
ZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIG9yNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLm9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCisg
ICAgdm9pZCBvcjY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBz
cmMuc2NhbGUsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfaW0oaW1tLm1f
dmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I2NChU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLm9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW02NCBpbW0s
IFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA8PSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKQpAQCAtNjE5LDExICs2ODksMjEgQEAg
cHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3VicV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChBZGRyZXNz
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9t
cihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChC
YXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zdWJxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVz
dCk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UpOwpAQCAtNjUxLDYgKzczMSwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2
b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0Lmlu
ZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KEFkZHJlc3Mgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX21yKHNyYy5v
ZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KEJhc2VJbmRl
eCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFf
bXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAg
ICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX2ltKGltbS5t
X3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsK
KyAgICB9CisKICAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3Jj
RGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaXIoaW1tLm1fdmFsdWUsIHNy
Y0Rlc3QpOwpAQCAtNjY2LDYgKzc3MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm5vdHFfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG5vdDY0
KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90cV9tKGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAg
IHZvaWQgbG9hZDY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGRlc3QpOwpAQCAtMTI5NCw3ICsxNDA0LDIyNSBAQCBwdWJsaWM6CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciks
IHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwgbWFzazgp
OwogICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRv
bWljc1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fz
c2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY3NTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2
b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY3NT
dHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0
b21pY3NTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhj
aGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNT
dHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY3NTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdD
QVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBy
ZXR1cm4gYnJhbmNoQXRvbWljc1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZd
IHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAg
ICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY3NTdHJvbmdDQVMoY29uZCwg
ZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKwor
ICAgIHZvaWQgYXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNzU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9
CiAKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY3NTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljc1N0cm9uZ0NBUyhjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIHZv
aWQgYXRvbWljQWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2NChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBhZGQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0Fk
ZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2NChyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgc3ViNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQoaW1tLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBz
dWI2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFJl
Z2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDY0KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQW5kNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDY0
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNPcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChSZWdpc3RlcklEIHJlZywgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBv
cjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChSZWdp
c3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNYb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjY0KGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHhvcjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WG9yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjY0KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnNjQoQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc2
NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc2NChCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVn
NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90NjQoQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q2
NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q2NChCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90
NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDY0KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDY0KFJl
Z2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZHFfcm0ocmVnLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fz
c2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKICAgICB2b2lkIHRydW5jYXRl
RG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0dHNkMnNpcV9ycihzcmMsIGRlc3QpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lv
biAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTkwLDE2ICsxOTAsMTkgQEAgcHJpdmF0ZToK
ICAgICAgICAgT1BfQUREX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MDEsCiAgICAgICAg
IE9QX0FERF9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDAzLAogICAgICAgICBPUF9BRERf
RUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgwNSwKKyAgICAgICAgT1BfT1JfRXZHYiAgICAg
ICAgICAgICAgICAgICAgICA9IDB4MDgsCiAgICAgICAgIE9QX09SX0V2R3YgICAgICAgICAgICAg
ICAgICAgICAgPSAweDA5LAogICAgICAgICBPUF9PUl9HdkV2ICAgICAgICAgICAgICAgICAgICAg
ID0gMHgwQiwKICAgICAgICAgT1BfT1JfRUFYSXYgICAgICAgICAgICAgICAgICAgICA9IDB4MEQs
CiAgICAgICAgIE9QXzJCWVRFX0VTQ0FQRSAgICAgICAgICAgICAgICAgPSAweDBGLAogICAgICAg
ICBPUF9BTkRfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgyMSwKICAgICAgICAgT1BfQU5E
X0d2RXYgICAgICAgICAgICAgICAgICAgICA9IDB4MjMsCisgICAgICAgIE9QX1NVQl9FdkdiICAg
ICAgICAgICAgICAgICAgICAgPSAweDI4LAogICAgICAgICBPUF9TVUJfRXZHdiAgICAgICAgICAg
ICAgICAgICAgID0gMHgyOSwKICAgICAgICAgT1BfU1VCX0d2RXYgICAgICAgICAgICAgICAgICAg
ICA9IDB4MkIsCiAgICAgICAgIE9QX1NVQl9FQVhJdiAgICAgICAgICAgICAgICAgICAgPSAweDJE
LAogICAgICAgICBQUkVfUFJFRElDVF9CUkFOQ0hfTk9UX1RBS0VOICAgID0gMHgyRSwKKyAgICAg
ICAgT1BfWE9SX0V2R2IgICAgICAgICAgICAgICAgICAgICA9IDB4MzAsCiAgICAgICAgIE9QX1hP
Ul9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDMxLAogICAgICAgICBPUF9YT1JfR3ZFdiAg
ICAgICAgICAgICAgICAgICAgID0gMHgzMywKICAgICAgICAgT1BfWE9SX0VBWEl2ICAgICAgICAg
ICAgICAgICAgICA9IDB4MzUsCkBAIC0yMjMsNiArMjI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
T1BfR1JPVVAxX0V2SWIgICAgICAgICAgICAgICAgICA9IDB4ODMsCiAgICAgICAgIE9QX1RFU1Rf
RWJHYiAgICAgICAgICAgICAgICAgICAgPSAweDg0LAogICAgICAgICBPUF9URVNUX0V2R3YgICAg
ICAgICAgICAgICAgICAgID0gMHg4NSwKKyAgICAgICAgT1BfWENIR19FdkdiICAgICAgICAgICAg
ICAgICAgICA9IDB4ODYsCiAgICAgICAgIE9QX1hDSEdfRXZHdiAgICAgICAgICAgICAgICAgICAg
PSAweDg3LAogICAgICAgICBPUF9NT1ZfRWJHYiAgICAgICAgICAgICAgICAgICAgID0gMHg4OCwK
ICAgICAgICAgT1BfTU9WX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4ODksCkBAIC0yNTIs
NiArMjU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgUFJFX1NTRV9GMiAgICAgICAgICAgICAgICAg
ICAgICA9IDB4RjIsCiAgICAgICAgIFBSRV9TU0VfRjMgICAgICAgICAgICAgICAgICAgICAgPSAw
eEYzLAogICAgICAgICBPUF9ITFQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHhGNCwKKyAg
ICAgICAgT1BfR1JPVVAzX0ViICAgICAgICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9Q
X0dST1VQM19FYkliICAgICAgICAgICAgICAgICAgPSAweEY2LAogICAgICAgICBPUF9HUk9VUDNf
RXYgICAgICAgICAgICAgICAgICAgID0gMHhGNywKICAgICAgICAgT1BfR1JPVVAzX0V2SXogICAg
ICAgICAgICAgICAgICA9IDB4RjcsIC8vIE9QX0dST1VQM19FdiBoYXMgYW4gaW1tZWRpYXRlLCB3
aGVuIGluc3RydWN0aW9uIGlzIGEgdGVzdC4gCkBAIC0yOTAsNiArMjk1LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgT1BfU0VUQ0MgICAgICAgICAgICA9IDB4OTAsCiAgICAgICAgIE9QMl8zQllURV9F
U0NBUEVfQUUgPSAweEFFLAogICAgICAgICBPUDJfSU1VTF9HdkV2ICAgICAgID0gMHhBRiwKKyAg
ICAgICAgT1AyX0NNUFhDSEdiICAgICAgICA9IDB4QjAsCisgICAgICAgIE9QMl9DTVBYQ0hHICAg
ICAgICAgPSAweEIxLAogICAgICAgICBPUDJfTU9WWlhfR3ZFYiAgICAgID0gMHhCNiwKICAgICAg
ICAgT1AyX0JTRiAgICAgICAgICAgICA9IDB4QkMsCiAgICAgICAgIE9QMl9UWkNOVCAgICAgICAg
ICAgPSAweEJDLApAQCAtMjk4LDYgKzMwNSw4IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9NT1ZT
WF9HdkViICAgICAgPSAweEJFLAogICAgICAgICBPUDJfTU9WWlhfR3ZFdyAgICAgID0gMHhCNywK
ICAgICAgICAgT1AyX01PVlNYX0d2RXcgICAgICA9IDB4QkYsCisgICAgICAgIE9QMl9YQUREYiAg
ICAgICAgICAgPSAweEMwLAorICAgICAgICBPUDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAg
ICAgICAgT1AyX1BFWFRSV19HZFVkSWIgICA9IDB4QzUsCiAgICAgICAgIE9QMl9QU0xMUV9VZHFJ
YiAgICAgPSAweDczLAogICAgICAgICBPUDJfUFNSTFFfVWRxSWIgICAgID0gMHg3MywKQEAgLTYx
NCwxMSArNjIzLDQzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0FORF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBhbmRsX21y
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
LCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAg
ICAgdm9pZCBhbmRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R3YsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZGxfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBz
cmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZHdf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5k
bF9ybShzcmMsIG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFO
RF9TSVpFKTsKKyAgICAgICAgYW5kbF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9BTkRfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kYl9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfQU5EX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwog
ICAgIHZvaWQgYW5kbF9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC02NDEsNiArNjgyLDQxIEBAIHB1
YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09Q
RVJBTkRfU0laRSk7CisgICAgICAgIGFuZGxfaW0oaW1tLCBvZmZzZXQsIGJhc2UpOworICAgIH0K
KworICAgIHZvaWQgYW5kd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5kbF9pbShpbW0sIG9mZnNldCwg
YmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBh
bmRiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUo
WDg2XzY0KQogICAgIHZvaWQgYW5kcV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3Qp
CiAgICAgewpAQCAtNjU3LDYgKzczMyw0OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBhbmRx
X21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBv
ZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX2ltKGludCBpbW0sIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRF
TkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9H
Uk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBi
YXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAg
ICAgIH0KKyAgICB9CiAjZWxzZQogICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBjb25zdCB2b2lk
KiBhZGRyKQogICAgIHsKQEAgLTcxNSw2ICs4MzMsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBk
c3QpOwogICAgIH0KKworICAgIHZvaWQgbmVncV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19Fdiwg
R1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3FfbShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JP
VVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgog
CiAgICAgdm9pZCBuZWdsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQpAQCAtNzIyLDYg
Kzg1MCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDNfRXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBu
ZWdsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2
LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBuZWd3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWdsX20o
b2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3dfbShpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVnbF9tKG9m
ZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2JfbShpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgbmVnYl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKwogICAgIHZvaWQgbm90bF9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgZHN0
KTsKQEAgLTczMiw2ICs4ODcsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAgIH0K
IAorICAgIHZvaWQgbm90bF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgbm90d19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAg
ICAgICAgbm90bF9tKG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3R3X20oaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAg
ICAgIG5vdGxfbShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwgb2Zm
c2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGJfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgbm90cV9y
KFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTc0Miw2ICs5MjQsMTEgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNf
T1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgbm90cV9tKGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1Bf
Tk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2
b2lkIG9ybF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC03NTQsMTEgKzk0
MSw0MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9HdkV2
LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBvcmxfbXIoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2RXYs
IGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgb3Js
X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZz
ZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBvcmxfcm0oc3JjLCBpbmRleCwg
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBv
cmxfcm0oc3JjLCBpbmRleCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfaXIoaW50IGltbSwg
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIo
aW1tKSkgewpAQCAtNzg0LDEyICsxMDAzLDg5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0K
IAorICAgIHZvaWQgb3JsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdS
T1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQg
b3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgb3JsX2lt
KGltbSwgaW5kZXgsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3J3X2ltKGludCBpbW0sIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICBvcmxfaW0oaW1tLCBpbmRleCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9P
UF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0p
OworICAgIH0KKworICAgIHZvaWQgb3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0p
OworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBvcnFfcnIoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfT1JfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgb3JxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7Cisg
ICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQ
MV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHZvaWQgb3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIG9ybF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2
RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9ybF9tcihpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0
ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfR3ZF
diwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBv
cnFfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtODMxLDExICsxMTI3LDQzIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNl
dCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAK
KyAgICB2b2lkIHN1Ymxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN1Yndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQ
UkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9F
dkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFO
RF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgc3ViYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3VibF9pcihpbnQgaW1tLCBSZWdp
c3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0p
KSB7CkBAIC04NjEsNiArMTE4OSw0MSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICB2b2lkIHN1YmxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhU
RU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1
YndfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBzdWJsX2lt
KGltbSwgb2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIHN1YmxfaW0oaW1tLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQor
CisgICAgdm9pZCBzdWJiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JP
VVAxX09QX1NVQiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgIH0KKworICAgIHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1NVQiwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGU4KGltbSk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIHN1YnFfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTg3MiwxMSArMTIzNSwyMSBA
QCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9HdkV2LCBk
c3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJxX21yKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklE
IGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9HdkV2
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
YnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9Fdkd2LCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YnFfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtOTAxLDYgKzEyNzQsMTcgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZv
aWQgc3VicV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9V
UDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAjZWxzZQogICAgIHZv
aWQgc3VibF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKQEAgLTkyNCwxMSAr
MTMwOCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1Jf
R3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9ybF9tcihpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVn
aXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9S
X0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZv
aWQgeG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9Fdkd2LCBzcmMsIGJh
c2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHdiwgc3JjLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC05NDAsNiArMTMzNCw2MyBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHhvcmxfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2b2lkIHhvcndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVf
T1BFUkFORF9TSVpFKTsKKyAgICAgICAgeG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgeG9ybF9ybShzcmMs
IG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcndfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICB4b3JsX2ltKGltbSwg
b2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcndfaW0oaW50IGltbSwgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IHhvcmxfaW0oaW1tLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0V2R2IsIHNyYywg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcmJfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9FdkdiLCBzcmMs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcmJfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBv
ZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisg
ICAgdm9pZCB4b3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisK
ICAgICB2b2lkIHhvcmxfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTc0LDExICsxNDI1LDQ3IEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICB2b2lkIHhvcnFfaW0oaW50IGlt
bSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9P
UF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUz
MihpbW0pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgeG9ycV9pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09Q
X1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMy
KGltbSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgdm9pZCB4b3JxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgeG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JxX21yKGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYsIGRlc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCB4b3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9YT1JfR3ZFdiwgZGVzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBsemNudF9ycihSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNTg2LDExICsyMDczLDM4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgZHN0KTsKICAg
ICB9CiAKKyAgICB2b2lkIHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENI
R19FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hnYl9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
WENIR19FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHhjaGd3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhjaGd3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4Y2hnbF9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAor
ICAgIHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIHhjaGdxX3JyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC0xNjA2LDYgKzIxMjAsMTEgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWENIR19F
dkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCB4Y2hncV9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9Y
Q0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRp
ZgogCiAgICAgdm9pZCBtb3ZsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAg
LTI3NzUsNiArMzI5NCw5MCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQ
UkVfTE9DSyk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY21weGNoZ2Jfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnR3b0J5dGVPcDgoT1AyX0NNUFhDSEdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgY21weGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENIR2IsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGd3X3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVy
LnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGNtcHhjaGd3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0
ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgY21weGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdv
Qnl0ZU9wNjQoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBjbXB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGJfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnR3b0J5dGVPcDgoT1AyX1hBRERiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgeGFkZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJf
WEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGR3X3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVf
T1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBz
cmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4
YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9m
ZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkcV9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfWEFERCwgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAogICAgIHZvaWQgbWZlbmNlKCkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wKE9QMl8zQllURV9FU0NBUEVfQUUsIE9Q
M19NRkVOQ0UpOwpAQCAtMzc1MSw2ICs0MzU0LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3
cml0ZXIucmVnaXN0ZXJNb2RSTShncm91cE9wLCBybSk7CiAgICAgICAgIH0KIAorICAgICAgICB2
b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJ
RCBiYXNlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVj
dGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVt
aXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBiYXNlKSwgcmVnLCAwLCBiYXNlKTsKKyAg
ICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3Jp
dGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAg
IHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKKyAgICAg
ICAgeworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1f
YnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4
KHJlZykgfHwgcmVnUmVxdWlyZXNSZXgoaW5kZXgsIGJhc2UpLCByZWcsIGluZGV4LCBiYXNlKTsK
KyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7Cisg
ICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAg
d3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICB9CisKICAgICAgICAgLy8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KICAgICAgICAgLy8g
QW4gaW1tZWRhaXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBh
biBvcCBoYXMgYmVlbiBlbWl0dGVkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
QXRvbWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0F0b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworQXRvbWljVmFsdWU6On5BdG9taWNW
YWx1ZSgpCit7Cit9CisKK1dpZHRoIEF0b21pY1ZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fd2lkdGg7Cit9CisKK3ZvaWQgQXRvbWljVmFsdWU6OmR1bXBNZXRhKENv
bW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnBy
aW50KGNvbW1hLCAid2lkdGggPSAiLCBtX3dpZHRoKTsKKyAgICAKKyAgICBNZW1vcnlWYWx1ZTo6
ZHVtcE1ldGEoY29tbWEsIG91dCk7Cit9CisKK1ZhbHVlKiBBdG9taWNWYWx1ZTo6Y2xvbmVJbXBs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbmV3IEF0b21pY1ZhbHVlKCp0aGlzKTsKK30KKworQXRv
bWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lk
dGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQor
ICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgb3BlcmFuZC0+dHlwZSgpLCBv
cmlnaW4sIG9mZnNldCwgb3BlcmFuZCwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7
CisgICAgc2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBBU1NFUlQo
YmVzdFR5cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKyAgICAKKyAg
ICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAg
Y2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRv
bWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hn
OgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9y
aWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5l
d1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDogTWVtb3J5
VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwga2luZC5vcGNvZGUoKSA9PSBBdG9taWNXZWFrQ0FT
ID8gSW50MzIgOiBleHBlY3RlZFZhbHVlLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCBleHBlY3Rl
ZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7CisgICAg
c2V0RmVuY2VSYW5nZShIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBBU1NFUlQoYmVzdFR5
cGUob3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKworICAgIHN3aXRjaCAo
a2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21p
Y1N0cm9uZ0NBUzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKwor
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0F0b21pY1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQXRvbWljVmFsdWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNBdG9taWNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5jbHVk
ZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworY2xhc3Mg
SlNfRVhQT1JUX1BSSVZBVEUgQXRvbWljVmFsdWUgOiBwdWJsaWMgTWVtb3J5VmFsdWUgeworcHVi
bGljOgorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGlzQXRvbWljKGtpbmQub3Bjb2RlKCkpOworICAgIH0KKyAgICAKKyAgICB+QXRvbWlj
VmFsdWUoKTsKKyAgICAKKyAgICBUeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBj
aGlsZCgwKS0+dHlwZSgpOyB9CisgICAgCisgICAgV2lkdGggb3BlcmF0aW9uV2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgCisgICAgLy8gU3lub255bSBmb3Igb3BlcmF0aW9u
V2lkdGgoKSwgaWYgeW91J3JlIGFjY2Vzc2luZyB2aWEgTWVtb3J5VmFsdWUuCisgICAgV2lkdGgg
YWNjZXNzV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2b2lk
IGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgCisgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtp
bmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJf
dCBvZmZzZXQgPSAwKTsKKyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRo
LCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwg
aW50MzJfdCBvZmZzZXQgPSAwKTsKKyAgICAKKyAgICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3Bw
CShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0lu
c2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMzUgKzM2LDEzIEBACiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9u
U2V0KFByb2NlZHVyZSAmcHJvYykKLSAgICA6IG1fcHJvYyhwcm9jKQorICAgIDogR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0KHByb2MubV9ibG9ja3MpCisgICAgLCBtX3Byb2MocHJvYykKIHsKIH0K
IAogQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpIHsgfQogCi12b2lkIEJs
b2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCi17Ci0g
ICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOwotfQotCi1CYXNpY0Js
b2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJl
cXVlbmN5KQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFz
aWNCbG9jayhVSU5UX01BWCwgZnJlcXVlbmN5KSk7Ci0gICAgQmFzaWNCbG9jayogcmVzdWx0ID0g
YmxvY2suZ2V0KCk7Ci0gICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJs
b2NrKSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0
aW9uU2V0OjppbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5
KQotewotICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJl
cXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7Ci19Ci0KLUJhc2ljQmxv
Y2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91
YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwg
ZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7
Ci19Ci0KIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcndhcmQoCiAgICAg
QmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqIGlu
c2VydGlvblNldCwgZG91YmxlIGZyZXF1ZW5jeSkKIHsKQEAgLTEwMiwzMiArODAsNiBAQCBCYXNp
Y0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotYm9vbCBCbG9ja0luc2VydGlvblNldDo6ZXhlY3V0ZSgpCi17Ci0gICAgaWYgKG1faW5z
ZXJ0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBX
ZSBhbGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdl
IG5lZWQgdG8gc29ydCB0aGVtIGJlZm9yZQotICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5z
ZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQg
dG8gYmUKLSAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCi0gICAgYnViYmxlU29y
dChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKLQotICAgIGV4ZWN1
dGVJbnNlcnRpb25zKG1fcHJvYy5tX2Jsb2NrcywgbV9pbnNlcnRpb25zKTsKLSAgICAKLSAgICAv
LyBQcnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3Nhcnkg
YnV0IGl0J3MKLSAgICAvLyBoZWFsdGh5IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93
aW5nLgotICAgIG1fcHJvYy5tX2Jsb2Nrcy5yZW1vdmVBbGxNYXRjaGluZygKLSAgICAgICAgWyZd
IChzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKLSAgICAg
ICAgICAgIHJldHVybiAhYmxvY2tQdHI7Ci0gICAgICAgIH0pOwotICAgIAotICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9jLm1fYmxvY2tzLnNpemUoKTsgKytpKQotICAgICAgICBt
X3Byb2MubV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOwotICAgIAotICAgIHJldHVybiB0cnVlOwot
fQotCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0
LmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2Nr
SW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBF
TkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIK
ICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwyNiArMzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIEluc2VydGlvblNldDsKIAotdHlwZWRlZiBXVEY6Oklu
c2VydGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOwordHlw
ZWRlZiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9u
IEJsb2NrSW5zZXJ0aW9uOwogCi1jbGFzcyBCbG9ja0luc2VydGlvblNldCB7CitjbGFzcyBCbG9j
a0luc2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9j
az4gewogcHVibGljOgogICAgIEJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSYpOwogICAgIH5C
bG9ja0luc2VydGlvblNldCgpOwogICAgIAotICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9u
JiYpOwotCi0gICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCi0gICAg
QmFzaWNCbG9jayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5h
Tik7Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2su
IFVzdWFsbHkgeW91IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQotICAgIC8vIGFyZ3VtZW50
LiBQYXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhl
ICdiZWZvcmUnIGJsb2NrLiBUaGF0J3MKLSAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCi0g
ICAgQmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZy
ZXF1ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUg
Z2l2ZW4gYmxvY2suCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0
ZXIsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQogICAgIC8vIEEgaGVscGVyIHRvIHNwbGl0
IGEgYmxvY2sgd2hlbiBmb3J3YXJkIGl0ZXJhdGluZyBvdmVyIGl0LiBJdCBjcmVhdGVzIGEgbmV3
IGJsb2NrIHRvIGhvbGQKICAgICAvLyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgaW5zdHJ1Y3Rpb24g
YXQgdmFsdWVJbmRleC4gVGhlIGN1cnJlbnQgYmxvY2sgaXMgbGVmdCB3aXRoCiAgICAgLy8gZXZl
cnl0aGluZyBhdCBhbmQgYWZ0ZXIgdmFsdWVJbmRleC4gSWYgdGhlIG9wdGlvbmFsIEluc2VydGlv
blNldCBpcyBwcm92aWRlZCwgaXQgd2lsbCBnZXQKQEAgLTgwLDEyICs2OCw5IEBAIHB1YmxpYzoK
ICAgICBCYXNpY0Jsb2NrKiBzcGxpdEZvcndhcmQoCiAgICAgICAgIEJhc2ljQmxvY2sqLCB1bnNp
Z25lZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0KiA9IG51bGxwdHIsCiAgICAgICAgIGRvdWJs
ZSBmcmVxdWVuY3kgPSBQTmFOKTsKLSAgICAKLSAgICBib29sIGV4ZWN1dGUoKTsKIAogcHJpdmF0
ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKLSAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+
IG1faW5zZXJ0aW9uczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Miw3ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAg
ICAgICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAg
ICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3Zl
cmxhcHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRl
cyk7CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwg
KGZlbmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNv
bnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6
Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBv
dGhlci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQ
aW5uZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFk
cyA9PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAg
ICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3Ih
PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVm
ZmVjdHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21t
YSwgIldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5w
cmludChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwx
MCBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzE3MwogICAgIGJvb2wgcmVhZHNQaW5uZWQgeyBmYWxzZSB9OwogICAg
IGJvb2wgd3JpdGVzUGlubmVkIHsgZmFsc2UgfTsKKyAgICAKKyAgICAvLyBNZW1vcnkgZmVuY2Vz
IGNhbm5vdCBiZSByZW9yZGVyZWQgYXJvdW5kIGVhY2ggb3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVp
ciBlZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQKKyAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEg
bWVtb3J5IGZlbmNlLgorICAgIGJvb2wgZmVuY2UgeyBmYWxzZSB9OwogCiAgICAgSGVhcFJhbmdl
IHdyaXRlczsKICAgICBIZWFwUmFuZ2UgcmVhZHM7CkBAIC04OSw2ICs5Myw3IEBAIHN0cnVjdCBF
ZmZlY3RzIHsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKICAgICAg
ICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LndyaXRlc1Bpbm5l
ZCA9IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCkBAIC0xMDMsNyArMTA4LDcgQEAgc3RydWN0IEVmZmVjdHMgewogCiAg
ICAgYm9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdGVybWlu
YWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0
ZXNQaW5uZWQ7CisgICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdy
aXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9
CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgcmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0
aGVzZSByZXNwZWN0aXZlIGVmZmVjdHMgd291bGQgY2hhbmdlIHByb2dyYW0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25T
dWJleHByZXNzaW9ucy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNDIsNiArMTQyLDcgQEAgc3RydWN0IEltcHVyZUJsb2NrRGF0YSB7CiAKICAgICBSYW5nZVNl
dDxIZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlzIG9ubHkgZ2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0
b3JlIGVsaW1pbmF0aW9uLgogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlz
IGdldHMgdXNlZCBmb3IgYm90aCBsb2FkIGFuZCBzdG9yZSBlbGltaW5hdGlvbi4KKyAgICBib29s
IGZlbmNlOwogCiAgICAgTWVtb3J5VmFsdWVNYXAgc3RvcmVzQXRIZWFkOwogICAgIE1lbW9yeVZh
bHVlTWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsKQEAgLTE3NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+
aXNTdG9yZSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1l
bW9yeS0+cmFuZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJs
YXBzKG1lbW9yeS0+cmFuZ2UoKSkpCisgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRl
cy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCisgICAgICAgICAgICAgICAgICAgICYmICghZGF0
YS5mZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5jZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZGF0
YS5zdG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7CiAgICAgICAgICAgICAgICAgZGF0YS5yZWFkcy5h
ZGQoZWZmZWN0cy5yZWFkcyk7CiAKICAgICAgICAgICAgICAgICBpZiAoSGVhcFJhbmdlIHdyaXRl
cyA9IGVmZmVjdHMud3JpdGVzKQogICAgICAgICAgICAgICAgICAgICBjbG9iYmVyKGRhdGEsIHdy
aXRlcyk7CisgICAgICAgICAgICAgICAgZGF0YS5mZW5jZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAg
ICAgICAgICAgICAgICAgaWYgKG1lbW9yeSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1v
cnlWYWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7CkBAIC00NzgsNiArNDgxLDkgQEAgcHJpdmF0ZToK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVBZnRlckNs
b2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXImIGZpbHRlcikK
ICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2Uo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIC8vIFdlIGNh
biBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0b3JlIHRv
IHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFueSBvcGVyYXRp
b24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxpa2UgaXQgc2hv
dWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFq
b3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIApAQCAtNjE0
LDYgKzYyMCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5c
biIpOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5o
YXNGZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChNZW1vcnlWYWx1
ZSogbWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7
CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
Rm91bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBA
QCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsCiAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MDcKICAgICB9CiAKKyAg
ICAvLyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgogICAgIGxvd2VyTWFjcm9zKHBy
b2NlZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIElu
c2VydGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9jaz4KK2NsYXNzIEdlbmVy
aWNCbG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlv
bjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOworICAgIAorICAg
IEJsb2NrSW5zZXJ0aW9uU2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBi
bG9ja3MpCisgICAgICAgIDogbV9ibG9ja3MoYmxvY2tzKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCisgICAgeworICAgICAg
ICBtX2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7CisgICAgfQorCisgICAg
Ly8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCisgICAgQmFzaWNCbG9jayog
aW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhV
SU5UX01BWCwgZnJlcXVlbmN5KSk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlc3VsdCA9IGJsb2Nr
LmdldCgpOworICAgICAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxv
Y2spKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBh
IG5ldyBibG9jayBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBw
YXNzIHRoZSBmcmVxdWVuY3kKKyAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1
cyB0byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdz
CisgICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3YW50LgorICAgIEJhc2ljQmxvY2sqIGluc2VydEJl
Zm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVx
dWVuY3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsKKyAgICB9CisKKyAgICAv
LyBJbnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KKyAgICBCYXNpY0Js
b2NrKiBpbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBO
YU4pCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJl
cXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7Cisg
ICAgfQorCisgICAgYm9vbCBleGVjdXRlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2luc2VydGlv
bnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAg
ICAgLy8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3JkZXIu
IFNvLCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKKyAgICAgICAgLy8gcnVubmluZyBXVEY6
OmV4ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBhbmQg
d2Ugd2FudCBpdCB0byBiZQorICAgICAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQu
CisgICAgICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5l
bmQoKSk7CisgICAgICAgIAorICAgICAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX2Jsb2NrcywgbV9p
bnNlcnRpb25zKTsKKyAgICAgICAgCisgICAgICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVz
LiBUaGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncworICAgICAgICAvLyBoZWFs
dGh5IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgorICAgICAgICBtX2Jsb2Nr
cy5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJh
c2ljQmxvY2s+JiBibG9ja1B0cikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFi
bG9ja1B0cjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgLy8gTWFrZSBzdXJl
IHRoYXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2VzLgorICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX2Js
b2Nrc1tpXS0+bV9pbmRleCA9IGk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4m
IG1fYmxvY2tzOworICAgIFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOwor
fTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklU
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdlIG9wZXJhdG9yfChjb25zdCBI
ZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5nZSgK
KyAgICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1fYmVnaW4pLAorICAgICAgICAg
ICAgc3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAgfQorICAgIAogICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1fZW5kOyB9CiAK
ICAgICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMjEy
OTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJbnNlcnRpb25TZXQ6Omluc2Vy
dEJvdHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9tKGluZGV4LCBsaWtlVmFsdWUt
Pm9yaWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1ZhbHVlKiBJbnNlcnRpb25TZXQ6
Omluc2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVlKQoreworICAgIHJldHVybiBp
bnNlcnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFsdWUpKTsKK30KKwogdm9pZCBJ
bnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgYnViYmxlU29y
dChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNp
emVfdCBpbmRleCwgT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVf
dCBpbmRleCwgVmFsdWUqKTsKKyAgICAKKyAgICBWYWx1ZSogaW5zZXJ0Q2xvbmUoc2l6ZV90IGlu
ZGV4LCBWYWx1ZSopOwogCiAgICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24gMjEy
OTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTgsMTEgKzU4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3Byb2Mo
cHJvYykKICAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MpCiAgICAgICAgICwgbV9p
bnNlcnRpb25TZXQocHJvYykKKyAgICAgICAgLCBtX3VzZUNvdW50cyhwcm9jKQogICAgIHsKICAg
ICB9CiAKICAgICBib29sIHJ1bigpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9w
cm9jLmhhc1F1aXJrcygpKTsKKyAgICAgICAgCiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxv
Y2sgOiBtX3Byb2MpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgICAg
IHByb2Nlc3NDdXJyZW50QmxvY2soKTsKQEAgLTcyLDYgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIG1fcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICAgICAgbV9wcm9jLmlu
dmFsaWRhdGVDRkcoKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBpbmRp
Y2F0ZXMgdGhhdCB3ZSd2ZSAKKyAgICAgICAgbV9wcm9jLnNldEhhc1F1aXJrcyh0cnVlKTsKKyAg
ICAgICAgCiAgICAgICAgIHJldHVybiBtX2NoYW5nZWQ7CiAgICAgfQogICAgIApAQCAtMTg1LDcg
KzE5Miw5NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGxvYWQtbG9hZCBmZW5jZS4gVGhpcyBj
b2RlZ2VucyB0byBub3RoaW5nIG9uIFg4Ni4gV2UgdXNlIGl0IHRvIHRlbGwgdGhlCisgICAgICAg
ICAgICAgICAgICAgIC8vIGNvbXBpbGVyIG5vdCB0byBibG9jayBsb2FkIG1vdGlvbi4KKyAgICAg
ICAgICAgICAgICAgICAgRmVuY2VWYWx1ZSogZmVuY2UgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
RmVuY2VWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4pOworICAgICAgICAgICAgICAgICAgICBmZW5j
ZS0+cmVhZCA9IEhlYXBSYW5nZSgpOworICAgICAgICAgICAgICAgICAgICBmZW5jZS0+d3JpdGUg
PSBIZWFwUmFuZ2U6OnRvcCgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgLy8gS2lsbCB0aGUgRGVwZW5kLCB3aGljaCBzaG91bGQgdW5sb2NrIGEgYnVuY2ggb2Yg
Y29kZSBzaW1wbGlmaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5yZXBsYWNl
V2l0aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAorICAgICAgICAgICAg
Y2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6IHsK
KyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9
IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgICAgIFdpZHRoIHdpZHRo
ID0gYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIGV4cGVjdGVk
VmFsdWUgPSBhdG9taWMtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIC8vIE9uIEFSTSwgdGhlIGxvYWQgcGFydCBvZiB0aGUgQ0FTIGRvZXMgYSBsb2FkIHdpdGgg
emVybyBleHRlbnNpb24uIFRoZXJlZm9yZSwgd2UgbmVlZAorICAgICAgICAgICAgICAgIC8vIHRv
IHplcm8tZXh0ZW5kIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFza2VkRXhw
ZWN0ZWRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIGV4cGVjdGVkVmFsdWUsCisgICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KG1faW5kZXgsIGV4
cGVjdGVkVmFsdWUsIG1hc2sod2lkdGgpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgYXRvbWljLT5jaGlsZCgwKSA9IG1hc2tlZEV4cGVjdGVkVmFsdWU7CisgICAgICAgICAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoK
KyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWlj
WGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgY2Fz
ZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAg
ICAgICAgICAgLy8gT24gWDg2LCB0aGVzZSBtYXkgYWN0dWFsbHkgcmV0dXJuIGdhcmJhZ2UgaW4g
dGhlIGhpZ2ggYml0cy4gT24gQVJNNjQsIHRoZXNlIHNvcnRhCisgICAgICAgICAgICAgICAgLy8g
emVyby1leHRlbmQgdGhlaXIgaGlnaCBiaXRzLCBleGNlcHQgdGhhdCB0aGUgaGlnaCBiaXRzIG1p
Z2h0IGdldCBwb2xsdXRlZCBieSBoaWdoCisgICAgICAgICAgICAgICAgLy8gYml0cyBpbiB0aGUg
b3BlcmFuZC4gLiBTbywgZWl0aGVyIHdheSwgd2UgbmVlZCB0byB0aHJvdyBhIHNpZ24tZXh0ZW5k
IG9uIHRoZXNlCisgICAgICAgICAgICAgICAgLy8gdGhpbmdzLgorICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICht
X3ZhbHVlLT5vcGNvZGUoKSA9PSBBdG9taWNYY2hnU3ViICYmIG1fdXNlQ291bnRzLm51bVVzZXMo
bV92YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9uIHg4NiwgeGNoZ2FkZCBp
cyBiZXR0ZXIgdGhhbiB4Y2hnc3ViIGlmIGl0IGhhcyBhbnkgdXNlcnMuCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX3ZhbHVlLT5zZXRLaW5kVW5zYWZlbHkoQXRvbWljWGNoZ0FkZCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgxKSA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgTmVnLCBt
X29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBib29sIGV4ZW1wdCA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1
YjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAg
ICAgICAgICAgICAgZXhlbXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4
ZW1wdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0g
bV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGggd2lkdGgg
PSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3VmFsdWUg
PSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBtX2lu
ZGV4LCBzaWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwgbV9vcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENsb25lKG1faW5kZXgsIG1fdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5
KG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQ3
MCw2ICs1NjYsNyBAQCBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwogICAgIEJsb2Nr
SW5zZXJ0aW9uU2V0IG1fYmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgSW5zZXJ0aW9uU2V0IG1faW5z
ZXJ0aW9uU2V0OworICAgIFVzZUNvdW50cyBtX3VzZUNvdW50czsKICAgICBCYXNpY0Jsb2NrKiBt
X2Jsb2NrOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CiAgICAgVmFsdWUqIG1fdmFsdWU7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNy
b3NBZnRlck9wdGltaXphdGlvbnMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1NiwxNSArMTU2LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNl
IFJvdEw6IHsKICAgICAgICAgICAgICAgICAvLyBBUk02NCBkb2Vzbid0IGhhdmUgYSByb3RhdGUg
bGVmdC4KICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdT
aGlmdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVl
LT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90
UiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLCBuZXdTaGlmdCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5pbnNl
cnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxk
KDEpKTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90UiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUt
PmNoaWxkKDApLCBuZXdTaGlmdCk7CisgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxh
Y2VXaXRoSWRlbnRpdHkocm90YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlclRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsMTQgQEAgbmFtZXNw
YWNlIHsKIAogY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKKy8vIEZJWE1FOiBXZSB3b3Vs
ZG4ndCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRlZCBXaWR0aCBtb2RpZmllcnMgaW4gQWlyOjpL
aW5kLgorLy8gT09QUyEhISAobmVlZCBhIGJ1ZyBVUkwpCisjZGVmaW5lIE9QQ09ERV9GT1JfV0lE
VEgob3Bjb2RlLCB3aWR0aCkgKCBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDggPyBvcGNvZGUgIyMg
OCA6IFwKKyAgICAod2lkdGgpID09IFdpZHRoMTYgPyBvcGNvZGUgIyMgMTYgOiBcCisgICAgKHdp
ZHRoKSA9PSBXaWR0aDMyID8gb3Bjb2RlICMjIDMyIDogXAorICAgIG9wY29kZSAjIyA2NCkKKwog
Y2xhc3MgTG93ZXJUb0FpciB7CiBwdWJsaWM6CiAgICAgTG93ZXJUb0FpcihQcm9jZWR1cmUmIHBy
b2NlZHVyZSkKQEAgLTgzLDYgKzkxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RvbWluYXRv
cnMocHJvY2VkdXJlLmRvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX3Byb2NlZHVyZShwcm9jZWR1
cmUpCiAgICAgICAgICwgbV9jb2RlKHByb2NlZHVyZS5jb2RlKCkpCisgICAgICAgICwgbV9ibG9j
a0luc2VydGlvblNldChtX2NvZGUpCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICAg
ICAgLCBtX2VheChYODZSZWdpc3RlcnM6OmVheCkKKyAgICAgICAgLCBtX2VjeChYODZSZWdpc3Rl
cnM6OmVjeCkKKyAgICAgICAgLCBtX2VkeChYODZSZWdpc3RlcnM6OmVkeCkKKyNlbmRpZgogICAg
IHsKICAgICB9CiAKQEAgLTEyNCwxNCArMTM4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9p
c3RlZCBhZGRyZXNzIGV4cHJlc3Npb24gYmVmb3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8g
dGhlIGxvb3AuCiAgICAgICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1
cmUuYmxvY2tzSW5QcmVPcmRlcigpKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0g
ICAgICAgICAgICAvLyBSZXNldCBzb21lIHN0YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNp
emUoMCk7CiAKICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9j
ayk7CiAKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2co
Ikxvd2VyaW5nIEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3Rs
eS4KKyAgICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9j
ay0+c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2td
LT5zdWNjZXNzb3JzKCkuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50
ZWRCbG9jayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVx
dWVuY3koKSkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2Nr
cyBpbiByZXZlcnNlIG9yZGVyIHNvIHdlIHNlZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hh
dCBhbGxvd3MgdXMKICAgICAgICAgICAgIC8vIHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5
LgogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpA
QCAtMTQ5LDE5ICsxNjcsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2lu
c3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAg
ICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1f
aW5zdHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDog
bV9pbnN0c1tpXSkKLSAgICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5h
cHBlbmRJbnN0KFdURk1vdmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAv
LyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAg
ICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3Vj
Y2Vzc29ycygpKSB7Ci0gICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNj
ZXNzb3JzKCkuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9j
ayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3ko
KSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rp
b25zKG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IG1fYmxvY2tJbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9u
U2V0IGluc2VydGlvblNldChtX2NvZGUpOwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3By
b2xvZ3VlKQpAQCAtNTM4LDcgKzU0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4g
QXJnKCk7CiAKICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB2YWx1ZS0+b2Zmc2V0KCk7Ci0gICAg
ICAgIFdpZHRoIHdpZHRoID0gdmFsdWUtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgIFdpZHRoIHdp
ZHRoID0gdmFsdWUtPmxvYWRTdG9yZVdpZHRoKCk7CiAKICAgICAgICAgQXJnIHJlc3VsdCA9IGVm
ZmVjdGl2ZUFkZHIodmFsdWUtPmxhc3RDaGlsZCgpLCBvZmZzZXQsIHdpZHRoKTsKICAgICAgICAg
QVNTRVJUKHJlc3VsdC5pc1ZhbGlkRm9ybSh3aWR0aCkpOwpAQCAtNTYyLDExICs1NzEsMTYgQEAg
cHJpdmF0ZToKICAgICAKICAgICBBcmdQcm9taXNlIGxvYWRQcm9taXNlQW55T3Bjb2RlKFZhbHVl
KiBsb2FkVmFsdWUpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkVmFsdWUtPmFz
PE1lbW9yeVZhbHVlPigpKTsKICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKGxvYWRWYWx1ZSkp
CiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAgIGlmIChjcm9zc2VzSW50ZXJmZXJl
bmNlKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAgIEFyZ1By
b21pc2UgcmVzdWx0KGFkZHIobG9hZFZhbHVlKSwgbG9hZFZhbHVlKTsKKyAgICAgICAgaWYgKGxv
YWRWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1
cm4gQXJnKCk7CisgICAgICAgIEFyZyBsb2FkQWRkciA9IGFkZHIobG9hZFZhbHVlKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobG9hZEFkZHIpOworICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChs
b2FkQWRkciwgbG9hZFZhbHVlKTsKICAgICAgICAgaWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkKICAg
ICAgICAgICAgIHJlc3VsdC5zZXRUcmFwcyh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
QEAgLTg5OCwxMSArOTEyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICAgICAgYXBwZW5kKE1vdmUs
IHRtcCh2YWx1ZSksIHRtcChtX3ZhbHVlKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1v
dW50KSwgVG1wKFg4NlJlZ2lzdGVyczo6ZWN4KSk7Ci0gICAgICAgIGFwcGVuZChvcGNvZGUsIFRt
cChYODZSZWdpc3RlcnM6OmVjeCksIHRtcChtX3ZhbHVlKSk7Ci0jZW5kaWYKKyAgICAgICAgYXBw
ZW5kKE1vdmUsIHRtcChhbW91bnQpLCBtX2VjeCk7CisgICAgICAgIGFwcGVuZChvcGNvZGUsIG1f
ZWN4LCB0bXAobV92YWx1ZSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9w
Y29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2ND4KQEAgLTkzMSwxMCArOTQzLDE1IEBAIHByaXZh
dGU6CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwg
Q29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmU+CiAgICAgYm9vbCB0
cnlBcHBlbmRTdG9yZUJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCiAgICAgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKSk7CisgICAgICAg
IAogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMy
LCBvcGNvZGU2NCwgbGVmdC0+dHlwZSgpKTsKICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6Ok9v
cHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAorICAgICAgICBpZiAobV92
YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIAogICAgICAgICBBcmcgc3RvcmVBZGRyID0gYWRkcihtX3ZhbHVlKTsK
ICAgICAgICAgQVNTRVJUKHN0b3JlQWRkcik7CiAKQEAgLTk5NCwxMCArMTAxMSw0OCBAQCBwcml2
YXRlOgogCiAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFsdWUsIHRtcCh2YWx1ZSksIGRl
c3QpOwogICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShXaWR0aCB3aWR0
aCwgQmFuayBiYW5rLCBib29sIHJlbGVhc2UpCisgICAgeworICAgICAgICBzd2l0Y2ggKHdpZHRo
KSB7CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFu
ayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsOCA6IFN0b3Jl
ODsKKyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFu
ayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMTYgOiBTdG9y
ZTE2OworICAgICAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsK
KyAgICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBT
dG9yZVJlbDMyIDogTW92ZTMyOworICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVG
bG9hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdp
ZHRoNjQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpczY0Qml0KCkpOworICAgICAgICAg
ICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAg
IHJldHVybiByZWxlYXNlID8gU3RvcmVSZWw2NCA6IE1vdmU7CisgICAgICAgICAgICBjYXNlIEZQ
OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFZhbHVlKiB2YWx1ZSkKKyAgICB7
CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7
CisgICAgICAgIHJldHVybiBzdG9yZU9wY29kZShtZW1vcnktPmxvYWRTdG9yZVdpZHRoKCksIG1l
bW9yeS0+YWNjZXNzQmFuaygpLCBtZW1vcnktPmhhc0ZlbmNlKCkpOworICAgIH0KIAogICAgIElu
c3QgY3JlYXRlU3RvcmUoVmFsdWUqIHZhbHVlLCBjb25zdCBBcmcmIGRlc3QpCiAgICAgewotICAg
ICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gbW92ZUZvclR5cGUodmFsdWUtPnR5cGUoKSk7
CisgICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBzdG9yZU9wY29kZSh2YWx1ZSk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVTdG9yZShtb3ZlT3Bjb2RlLCB2YWx1ZSwgZGVzdCk7CiAgICAg
fQogCkBAIC0xMDA2LDcgKzEwNjEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgYXBwZW5k
KHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVTdG9yZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pKSk7CiAgICAgfQotCisgICAgCiAgICAgQWlyOjpPcGNvZGUgbW92ZUZvclR5cGUoVHlw
ZSB0eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xMDczLDcgKzExMjgs
NDEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChpbnN0
KTsKICAgICB9CisgICAgCisgICAgdm9pZCBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMoQWly
OjpCYXNpY0Jsb2NrKiB0YXJnZXQpCisgICAgeworICAgICAgICAvLyBOb3cgYXBwZW5kIHRoZSBp
bnN0cnVjdGlvbnMuIG1faW5zdHMgY29udGFpbnMgdGhlbSBpbiByZXZlcnNlIG9yZGVyLCBzbyB3
ZSBwcm9jZXNzCisgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBmb3IgKEluc3QmIGlu
c3QgOiBtX2luc3RzW2ldKQorICAgICAgICAgICAgICAgIHRhcmdldC0+YXBwZW5kSW5zdChXVEZN
b3ZlKGluc3QpKTsKKyAgICAgICAgfQorICAgICAgICBtX2luc3RzLnJlc2l6ZSgwKTsKKyAgICB9
CisgICAgCisgICAgQWlyOjpCYXNpY0Jsb2NrKiBuZXdCbG9jaygpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlcihtX2Jsb2NrVG9CbG9ja1ttX2Js
b2NrXSk7CisgICAgfQogCisgICAgLy8gTk9URTogVGhpcyB3aWxsIGNyZWF0ZSBhIGNvbnRpbnVh
dGlvbiBibG9jayAoYG5leHRCbG9ja2ApICphZnRlciogYW55IGJsb2NrcyB5b3UndmUgY3JlYXRl
ZCB1c2luZworICAgIC8vIG5ld0Jsb2NrKCkuIFNvLCBpdCdzIHByZWZlcmFibGUgdG8gY3JlYXRl
IGFsbCBvZiB5b3VyIGJsb2NrcyB1cGZyb250IHVzaW5nIG5ld0Jsb2NrKCkuIEFsc28gbm90ZQor
ICAgIC8vIHRoYXQgYW55IGNvZGUgeW91IGVtaXQgYmVmb3JlIHRoaXMgd2lsbCBiZSBwcmVwZW5k
ZWQgdG8gdGhlIGNvbnRpbnVhdGlvbiwgYW5kIGFueSBjb2RlIHlvdSBlbWl0CisgICAgLy8gYWZ0
ZXIgdGhpcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBwcmV2aW91cyBibG9jay4KKyAgICB2b2lk
IHNwbGl0QmxvY2soQWlyOjpCYXNpY0Jsb2NrKiYgcHJldmlvdXNCbG9jaywgQWlyOjpCYXNpY0Js
b2NrKiYgbmV4dEJsb2NrKQorICAgIHsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA9
IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdOworICAgICAgICAKKyAgICAgICAgcHJldmlvdXNCbG9j
ayA9IGJsb2NrOworICAgICAgICBuZXh0QmxvY2sgPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2Vy
dEFmdGVyKGJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0
aW9ucyhuZXh0QmxvY2spOworICAgICAgICBuZXh0QmxvY2stPnN1Y2Nlc3NvcnMoKSA9IGJsb2Nr
LT5zdWNjZXNzb3JzKCk7CisgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKCkuY2xlYXIoKTsKKyAg
ICAgICAgCisgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJbnN0PigpKTsKKyAgICB9Cisg
ICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAg
IFQqIGVuc3VyZVNwZWNpYWwoVComIGZpZWxkLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAg
ICAgewpAQCAtMTEyMyw3ICsxMjEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlN0YWNrQXJndW1lbnQ6CiAgICAgICAgICAg
ICAgICAgYXJnID0gQXJnOjpjYWxsQXJnKHZhbHVlLnJlcCgpLm9mZnNldEZyb21TUCgpKTsKLSAg
ICAgICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZS52YWx1ZSgpLCBhcmcpOworICAgICAgICAg
ICAgICAgIGFwcGVuZFN0b3JlKG1vdmVGb3JUeXBlKHZhbHVlLnZhbHVlKCkpLCBhcmcpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTk2MSw2ICsyMDUwLDMwOCBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZFg4
NkRpdihCMzo6T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRv
RG91YmxlV29yZDsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2OworICAgICAgICBzd2l0Y2ggKG1f
dmFsdWUtPnR5cGUoKSkgeworICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgY29udmVy
dFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMjsKKyAgICAgICAgICAgIGRp
diA9IFg4NkRpdjMyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NjQ6Cisg
ICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvUXVhZFdvcmQ2NDsK
KyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjY0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKG9wID09IERpdiB8
fCBvcCA9PSBNb2QpOworICAgICAgICBUbXAgcmVzdWx0ID0gb3AgPT0gRGl2ID8gbV9lYXggOiBt
X2VkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgbV9l
YXgpOworICAgICAgICBhcHBlbmQoY29udmVydFRvRG91YmxlV29yZCwgbV9lYXgsIG1fZWR4KTsK
KyAgICAgICAgYXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkp
KTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwgdG1wKG1fdmFsdWUpKTsKKyAgICB9CisK
KyAgICB2b2lkIGFwcGVuZFg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFp
cjo6T3Bjb2RlIGRpdiA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4
NlVEaXY2NDsKKworICAgICAgICBBU1NFUlQob3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKKyAg
ICAgICAgVG1wIHJlc3VsdCA9IG9wID09IFVEaXYgPyBtX2VheCA6IG1fZWR4OworCisgICAgICAg
IGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgIGFw
cGVuZChYb3I2NCwgbV9lZHgsIG1fZWR4KTsKKyAgICAgICAgYXBwZW5kKGRpdiwgbV9lYXgsIG1f
ZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJlc3Vs
dCwgdG1wKG1fdmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgbG9hZExpbmtP
cGNvZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVu
Y2UgPyBPUENPREVfRk9SX1dJRFRIKExvYWRMaW5rQWNxLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJ
RFRIKExvYWRMaW5rLCB3aWR0aCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3Jl
Q29uZE9wY29kZShXaWR0aCB3aWR0aCwgYm9vbCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBmZW5jZSA/IE9QQ09ERV9GT1JfV0lEVEgoU3RvcmVDb25kUmVsLCB3aWR0aCkgOiBPUENPREVf
Rk9SX1dJRFRIKFN0b3JlQ29uZCwgd2lkdGgpOworICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIGNh
biBlbWl0IGNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcGF0dGVybnM6CisgICAgLy8gQXRvbWljV2Vh
a0NBUworICAgIC8vIEJpdFhvcihBdG9taWNXZWFrQ0FTLCAxKQorICAgIC8vIEF0b21pY1N0cm9u
Z0NBUworICAgIC8vIEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gTm90
RXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkKKyAgICAvLyBCcmFuY2goQXRvbWljV2Vh
a0NBUykKKyAgICAvLyBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisg
ICAgLy8gQnJhbmNoKE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8v
CisgICAgLy8gSXQgYXNzdW1lcyB0aGF0IGF0b21pY1ZhbHVlIHBvaW50cyB0byB0aGUgQ0FTLCBh
bmQgbV92YWx1ZSBwb2ludHMgdG8gdGhlIGluc3RydWN0aW9uIGJlaW5nCisgICAgLy8gZ2VuZXJh
dGVkLiBJdCBhc3N1bWVzIHRoYXQgeW91J3ZlIGNvbnN1bWVkIGV2ZXJ5dGhpbmcgdGhhdCBuZWVk
cyB0byBiZSBjb25zdW1lZC4KKyAgICB2b2lkIGFwcGVuZENBUyhWYWx1ZSogYXRvbWljVmFsdWUs
IGJvb2wgaW52ZXJ0KQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IGF0b21p
Y1ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXRvbWlj
KTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCcmFuY2ggPSBtX3ZhbHVlLT5vcCgpID09IEJy
YW5jaDsKKyAgICAgICAgYm9vbCBpc1N0cm9uZyA9IGF0b21pYy0+b3AoKSA9PSBBdG9taWNTdHJv
bmdDQVM7CisgICAgICAgIGJvb2wgcmV0dXJuc09sZFZhbHVlID0gbV92YWx1ZS0+b3AoKSA9PSBB
dG9taWNTdHJvbmdDQVM7CisgICAgICAgIAorICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+
b3BlcmF0aW9uV2lkdGgoKTsKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisK
KyAgICAgICAgVG1wIHZhbHVlUmVzdWx0VG1wOworICAgICAgICBUbXAgYm9vbFJlc3VsdFRtcDsK
KyAgICAgICAgaWYgKHJldHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIWludmVydCk7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsK
KyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAg
fSBlbHNlIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2Nv
ZGUubmV3VG1wKEdQKTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1w
KEdQKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9j
b2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBUbXAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXA7
CisgICAgICAgIGlmIChpc1N0cm9uZyAmJiAhaXNCcmFuY2gpCisgICAgICAgICAgICBzdWNjZXNz
Qm9vbFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBzdWNjZXNzQm9vbFJlc3VsdFRtcCA9IGJvb2xSZXN1bHRUbXA7CisKKyAgICAgICAgVG1w
IGV4cGVjdGVkVmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGlsZCgwKSk7CisgICAgICAgIFRtcCBu
ZXdWYWx1ZVRtcCA9IHRtcChhdG9taWMtPmNoaWxkKDEpKTsKKyAgICAgICAgCisgICAgICAgIEZy
ZXF1ZW50ZWRCbG9jayBzdWNjZXNzOworICAgICAgICBGcmVxdWVudGVkQmxvY2sgZmFpbHVyZTsK
KyAgICAgICAgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gbV9ibG9ja1Rv
QmxvY2tbbV9ibG9ja10tPnN1Y2Nlc3NvcihpbnZlcnQpOworICAgICAgICAgICAgZmFpbHVyZSA9
IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoIWludmVydCk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBhcHBlbmQocmVs
YXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpKSwgaW1tT3JUbXAoYXRvbWlj
LT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUpIHsK
KyAgICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdHJvbmdDQVMs
IHdpZHRoKSwgbV9lYXgsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBh
cHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpKSwgbV9lYXgs
IHZhbHVlUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAg
ICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChCcmFuY2hBdG9taWNTdHJvbmdD
QVMsIHdpZHRoKSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9l
YXgsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9j
a1ttX2Jsb2NrXS0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCBmYWlsdXJlKTsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0
cm9uZ0NBUywgd2lkdGgpLCBBcmc6OnN0YXR1c0NvbmQoaW52ZXJ0ID8gTWFjcm9Bc3NlbWJsZXI6
OkZhaWx1cmUgOiBNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCB0bXAoYXRvbWljLT5j
aGlsZCgxKSksIGFkZHJlc3MsIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwor
ICAgICAgICAvLyBXZSB3aXNoIHRvIGVtaXQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJsb2Nr
ICNyZWxvb3A6CisgICAgICAgIC8vICAgICBMb2FkTGluaworICAgICAgICAvLyAgICAgQnJhbmNo
IE5vdEVxdWFsCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogVGhlbjojZmFpbCwgRWxzZTogI3N0
b3JlCisgICAgICAgIC8vIEJsb2NrICNzdG9yZToKKyAgICAgICAgLy8gICAgIFN0b3JlQ29uZAor
ICAgICAgICAvLyAgICAgWG9yICQxLCAlcmVzdWx0ICAgIDwtLS0gb25seSBpZiAhaW52ZXJ0Cisg
ICAgICAgIC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAgICAg
ICAgLy8gQmxvY2sgI2ZhaWw6CisgICAgICAgIC8vICAgICBNb3ZlICRpbnZlcnQsICVyZXN1bHQK
KyAgICAgICAgLy8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAg
ICAgICAvLyBCbG9jayAjZG9uZToKKyAgICAgICAgCisgICAgICAgIEFpcjo6QmFzaWNCbG9jayog
cmVsb29wQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0b3Jl
QmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN1Y2Nlc3NCbG9j
ayA9IG51bGxwdHI7CisgICAgICAgIGlmICghaXNCcmFuY2ggJiYgaXNTdHJvbmcpCisgICAgICAg
ICAgICBzdWNjZXNzQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sq
IGZhaWxCbG9jayA9IG51bGxwdHI7CisgICAgICAgIGlmICghaXNCcmFuY2gpCisgICAgICAgICAg
ICBmYWlsQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0cm9u
Z0ZhaWxCbG9jazsKKyAgICAgICAgaWYgKGlzU3Ryb25nKQorICAgICAgICAgICAgc3Ryb25nRmFp
bEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrIGNvbXBhcmlzb25G
YWlsOworICAgICAgICBGcmVxdWVudGVkQmxvY2sgd2Vha0ZhaWw7CisgICAgICAgIGlmIChpc1N0
cm9uZykgeworICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBzdHJvbmdGYWlsQmxvY2s7Cisg
ICAgICAgICAgICB3ZWFrRmFpbCA9IHJlbG9vcEJsb2NrOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKGlzQnJhbmNoKQorICAgICAgICAgICAgICAgIGNvbXBhcmlzb25GYWlsID0g
ZmFpbHVyZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21wYXJpc29uRmFp
bCA9IGZhaWxCbG9jazsKKyAgICAgICAgICAgIHdlYWtGYWlsID0gZmFpbHVyZTsKKyAgICAgICAg
fQorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFpcjo6QmFz
aWNCbG9jayogZG9uZUJsb2NrOworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ssIGRvbmVC
bG9jayk7CisgICAgICAgIAorICAgICAgICBhcHBlbmQoSnVtcCk7CisgICAgICAgIGJlZ2luQmxv
Y2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAgICAKKyAgICAgICAgcmVsb29w
QmxvY2stPmFwcGVuZChsb2FkTGlua09wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwg
bV92YWx1ZSwgdmFsdWVSZXN1bHRUbXAsIGFkZHJlc3MpOworICAgICAgICByZWxvb3BCbG9jay0+
YXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNoLCBjYW5vbmljYWxXaWR0aCh3aWR0aCkpLCBt
X3ZhbHVlLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSB2YWx1ZVJlc3Vs
dFRtcCwgZXhwZWN0ZWRWYWx1ZVRtcCk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5zZXRTdWNjZXNz
b3JzKGNvbXBhcmlzb25GYWlsLCBzdG9yZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHN0b3Jl
QmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSks
IG1fdmFsdWUsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCk7Cisg
ICAgICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEJy
YW5jaFRlc3QzMiwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3Vs
dFRtcCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nl
c3NvcnMoc3VjY2Vzcywgd2Vha0ZhaWwpOworICAgICAgICAgICAgZG9uZUJsb2NrLT5zdWNjZXNz
b3JzKCkuY2xlYXIoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkb25lQmxvY2stPnNp
emUoKSk7CisgICAgICAgICAgICBkb25lQmxvY2stPmFwcGVuZChPb3BzLCBtX3ZhbHVlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpc1N0cm9uZykgeworICAgICAgICAgICAg
ICAgIHN0b3JlQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIEFyZzo6cmVzQ29uZChNYWNyb0Fz
c2VtYmxlcjo6WmVybyksIHN1Y2Nlc3NCb29sUmVzdWx0VG1wLCBBcmc6OmJpdEltbSgtMSkpOwor
ICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMoc3VjY2Vzc0Jsb2NrLCBy
ZWxvb3BCbG9jayk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3VjY2Vzc0Js
b2NrLT5hcHBlbmQoTW92ZSwgbV92YWx1ZSwgQXJnOjppbW0oIWludmVydCksIGJvb2xSZXN1bHRU
bXApOworICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+YXBwZW5kKEp1bXAsIG1fdmFsdWUp
OworICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2sp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIWludmVydCkKKyAg
ICAgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKFhvcjMyLCBtX3ZhbHVlLCBBcmc6
OmJpdEltbSgxKSwgYm9vbFJlc3VsdFRtcCwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEp1bXAsIG1fdmFsdWUpOwor
ICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmFpbEJsb2NrLT5hcHBlbmQo
TW92ZSwgbV92YWx1ZSwgQXJnOjppbW0oaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAg
ICAgICBmYWlsQmxvY2stPmFwcGVuZChKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgIGZhaWxC
bG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgIFRtcCB0bXAgPSBtX2NvZGUubmV3VG1w
KEdQKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29k
ZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgdmFsdWVSZXN1bHRUbXAsIGFk
ZHJlc3MsIHRtcCk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPmFwcGVuZChCcmFuY2hU
ZXN0MzIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHRtcCwgQXJnOjpiaXRJ
bW0oLTEpKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+c2V0U3VjY2Vzc29ycyhmYWls
QmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBib29sIGFw
cGVuZFZvaWRBdG9taWMoQWlyOjpPcGNvZGUgYXRvbWljT3Bjb2RlKQorICAgIHsKKyAgICAgICAg
aWYgKG1fdXNlQ291bnRzLm51bVVzZXMobV92YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIAorICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIobV92YWx1ZSk7CisgICAg
ICAgIAorICAgICAgICBpZiAoaXNWYWxpZEZvcm0oYXRvbWljT3Bjb2RlLCBBcmc6OkltbSwgYWRk
cmVzcy5raW5kKCkpICYmIGltbShtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgIGFw
cGVuZChhdG9taWNPcGNvZGUsIGltbShtX3ZhbHVlLT5jaGlsZCgwKSksIGFkZHJlc3MpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChp
c1ZhbGlkRm9ybShhdG9taWNPcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAg
ICAgICAgICAgIGFwcGVuZChhdG9taWNPcGNvZGUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGFk
ZHJlc3MpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZEdlbmVyYWxB
dG9taWMoQWlyOjpPcGNvZGUgb3Bjb2RlKQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0
b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAKKyAgICAgICAgQXJn
IGFkZHJlc3MgPSBhZGRyKG1fdmFsdWUpOworICAgICAgICBUbXAgb2xkVmFsdWUgPSBtX2NvZGUu
bmV3VG1wKEdQKTsKKyAgICAgICAgVG1wIG5ld1ZhbHVlID0gbV9jb2RlLm5ld1RtcChHUCk7Cisg
ICAgICAgIAorICAgICAgICAvLyBXZSBuZWVkIGEgQ0FTIGxvb3Agb3IgYSBMTC9TQyBsb29wLiBV
c2luZyBwcmVwYXJlL2F0dGVtcHQgamFyZ29uLCB3ZSB3YW50OgorICAgICAgICAvLworICAgICAg
ICAvLyBCbG9jayAjcmVsb29wOgorICAgICAgICAvLyAgICAgUHJlcGFyZQorICAgICAgICAvLyAg
ICAgb3Bjb2RlCisgICAgICAgIC8vICAgICBBdHRlbXB0CisgICAgICAgIC8vICAgU3VjY2Vzc29y
czogVGhlbjojZG9uZSwgRWxzZTojcmVsb29wCisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAg
ICAgICAvLyAgICAgTW92ZSBvbGRWYWx1ZSwgcmVzdWx0CisgICAgICAgIAorICAgICAgICBhcHBl
bmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgb2xkVmFsdWUsIHRtcChhdG9t
aWMpKTsKKyAgICAgICAgCisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogcmVsb29wQmxvY2sgPSBu
ZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAg
IEFpcjo6QmFzaWNCbG9jayogZG9uZUJsb2NrOworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxv
Y2ssIGRvbmVCbG9jayk7CisgICAgICAgIAorICAgICAgICBhcHBlbmQoSnVtcCk7CisgICAgICAg
IGJlZ2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAgICAKKyAgICAg
ICAgQWlyOjpPcGNvZGUgcHJlcGFyZU9wY29kZTsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSB7CisgICAgICAgICAg
ICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDhTaWdu
ZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBX
aWR0aDE2OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkMTZTaWduZWRFeHRl
bmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDMy
OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlMzI7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICAgICAgcHJl
cGFyZU9wY29kZSA9IE1vdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkp
OworICAgICAgICAgICAgb3Bjb2RlID0gbG9hZExpbmtPcGNvZGUoYXRvbWljLT5vcGVyYXRpb25X
aWR0aCgpLCBhdG9taWMtPmhhc0ZlbmNlKCkpOworICAgICAgICB9CisgICAgICAgIHJlbG9vcEJs
b2NrLT5hcHBlbmQocHJlcGFyZU9wY29kZSwgbV92YWx1ZSwgYWRkcmVzcywgb2xkVmFsdWUpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKG9wY29kZSAhPSBOb3ApIHsKKyAgICAgICAgICAgIGlmIChp
bW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwgQXJn
OjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9w
Y29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUp
OworICAgICAgICAgICAgZWxzZSBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJn
OjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9w
Y29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVu
ZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUp
OworICAgICAgICAgICAgICAgIGlmIChpbW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZv
cm0ob3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICByZWxv
b3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBu
ZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZWxv
b3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBu
ZXdWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNYODYo
KSkgeworICAgICAgICAgICAgQWlyOjpPcGNvZGUgY2FzT3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURU
SChCcmFuY2hBdG9taWNTdHJvbmdDQVMsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSk7CisgICAg
ICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5
cGUoKSksIG9sZFZhbHVlLCBtX2VheCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5k
KGNhc09wY29kZSwgbV92YWx1ZSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdWNj
ZXNzKSwgbV9lYXgsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBUbXAgYm9vbFJl
c3VsdCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVu
ZChzdG9yZUNvbmRPcGNvZGUoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpLCBhdG9taWMtPmhhc0Zl
bmNlKCkpLCBuZXdWYWx1ZSwgYWRkcmVzcywgYm9vbFJlc3VsdCk7CisgICAgICAgICAgICByZWxv
b3BCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVy
OjpaZXJvKSwgYm9vbFJlc3VsdCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgfQorICAgICAg
ICByZWxvb3BCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAg
ICB9CisgICAgCiAgICAgdm9pZCBsb3dlcigpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fdmFs
dWUtPm9wY29kZSgpKSB7CkBAIC0xOTcxLDMwICsyMzYyLDUwIEBAIHByaXZhdGU6CiAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ6IHsKLSAgICAgICAgICAgIGFwcGVu
ZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgbW92ZUZvclR5cGUobV92YWx1ZS0+dHlwZSgpKSwgbV92
YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBNZW1vcnlW
YWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAgICBB
aXI6Ok9wY29kZSBvcGNvZGUgPSBBaXI6Ok9vcHM7CisgICAgICAgICAgICBpZiAobWVtb3J5LT5o
YXNGZW5jZSgpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChtZW1vcnktPnR5cGUoKSkgewor
ICAgICAgICAgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9
IExvYWRBY3EzMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSBJbnQ2NDoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTY0OworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICBvcGNvZGUgPSBtb3ZlRm9yVHlwZShtZW1vcnktPnR5cGUoKSk7CisgICAg
ICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRk
cihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ4UzogewotICAgICAgICAgICAgYXBw
ZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOFNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUs
IGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUg
b3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNx
OFNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICBh
cHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVl
KSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIExvYWQ4WjogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3Zh
bHVlLCBMb2FkOCwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAg
ICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+
aGFzRmVuY2UoKSA/IExvYWRBY3E4IDogTG9hZDg7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBp
bmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFs
dWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExv
YWQxNlM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDE2
U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7
CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1
ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkMTZTaWdu
ZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBv
cGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZaOiB7Ci0gICAgICAg
ICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNiwgbV92YWx1ZSwgYWRkciht
X3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUg
PSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNiA6IExv
YWQxNjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBt
X3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotCisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBZGQ6IHsKICAgICAg
ICAgICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0y
MDkyLDcgKzI1MDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmlzQ2hp
bGwoKSkKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwogICAgICAg
ICAgICAgaWYgKGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAg
ICAgICAgIGxvd2VyWDg2RGl2KERpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2RGl2KERp
dik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
QVNTRVJUKCFpc1g4NigpIHx8IGlzRmxvYXQobV92YWx1ZS0+dHlwZSgpKSk7CkBAIC0yMTAzLDcg
KzI1MTQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgVURpdjogewogICAgICAgICAgICAg
aWYgKGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAg
IGxvd2VyWDg2VURpdihVRGl2KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVEaXYp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjExNywxMyAr
MjUyOCwxMyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE1vZDogewogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaXNYODYoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV92YWx1
ZS0+aXNDaGlsbCgpKTsKLSAgICAgICAgICAgIGxvd2VyWDg2RGl2KE1vZCk7CisgICAgICAgICAg
ICBhcHBlbmRYODZEaXYoTW9kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2UgVU1vZDogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7
Ci0gICAgICAgICAgICBsb3dlclg4NlVEaXYoVU1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZV
RGl2KFVNb2QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxNjIsMTAg
KzI1NzMsMjcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPE5vdDMyLCBO
b3Q2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVGhpcyBwYXR0ZXJuIGlzIHN1
cGVyIHVzZWZ1bCBvbiBib3RoIHg4NiBhbmQgQVJNNjQsIHNpbmNlIHRoZSBpbnZlcnNpb24gb2Yg
dGhlIENBUyByZXN1bHQKKyAgICAgICAgICAgIC8vIGNhbiBiZSBkb25lIHdpdGggemVybyBjb3N0
IG9uIHg4NiAoanVzdCBmbGlwIHRoZSBzZXQgZnJvbSBFIHRvIE5FKSBhbmQgaXQncyBhIHByb2dy
ZXNzaW9uCisgICAgICAgICAgICAvLyBvbiBBUk02NCAoc2luY2UgU1RYIHJldHVybnMgMCBvbiBz
dWNjZXNzLCBzbyBvcmRpbmFyaWx5IHdlIGhhdmUgdG8gZmxpcCBpdCkuCisgICAgICAgICAgICBp
ZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDEpCisgICAgICAgICAgICAgICAgJiYgaXNBdG9t
aWNDQVMobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAgICYmIGNh
bkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgY29tbWl0
SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVuZENBUyht
X3ZhbHVlLT5jaGlsZCgwKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxYb3IzMiwgWG9y
NjQsIFhvckRvdWJsZSwgWG9yRmxvYXQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBt
X3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAg
ICAgICAgIGFwcGVuZFVuT3A8RGVwZW5kMzIsIERlcGVuZDY0PihtX3ZhbHVlLT5jaGlsZCgwKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIFNobDogewog
ICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludDMyKDEpKSB7CkBAIC0yMjY2
LDcgKzI2OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsK
KyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIyODcsNyArMjcxNSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBhcHBlbmRTdG9yZShBaXI6OlN0b3JlOCwgdmFsdWVUb1N0b3Jl
LCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIHZhbHVl
VG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IApAQCAtMjMwOCw3ICsyNzM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVu
ZFN0b3JlKEFpcjo6U3RvcmUxNiwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAg
ICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjQxNiw3ICsyODQ0LDIyIEBA
IHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEVxdWFsOgotICAgICAgICBjYXNl
IE5vdEVxdWFsOgorICAgICAgICBjYXNlIE5vdEVxdWFsOiB7CisgICAgICAgICAgICBpZiAobV92
YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAg
ICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSA9PSBtX3ZhbHVlLT5jaGlsZCgxKQor
ICAgICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgw
KS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5z
KG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
Y29tbWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVu
ZENBUyhtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChjcmVhdGVDb21wYXJlKG1fdmFsdWUp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgTGVzc1RoYW46CiAgICAgICAgIGNhc2UgR3JlYXRlclRoYW46CiAgICAgICAgIGNhc2Ug
TGVzc0VxdWFsOgpAQCAtMjcyNyw2ICszMTcwLDM5IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIEJyYW5jaDogeworICAgICAgICAgICAgaWYgKGNhbkJlSW50ZXJuYWwobV92
YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIGJyYW5jaENoaWxkID0g
bV92YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChicmFuY2hDaGlsZC0+
b3Bjb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAg
ICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBBdG9t
aWNTdHJvbmdDQVM6CisgICAgICAgICAgICAgICAgICAgIC8vIEEgYnJhbmNoIGlzIGEgY29tcGFy
aXNvbiB0byB6ZXJvLgorICAgICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxk
KDApLT5pc0ludCgwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwo
YnJhbmNoQ2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKGJyYW5jaENo
aWxkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgY2FzZSBFcXVhbDoKKyAgICAgICAgICAgICAgICBjYXNlIE5v
dEVxdWFsOgorICAgICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5v
cGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGNh
bkJlSW50ZXJuYWwoYnJhbmNoQ2hpbGQtPm9wY29kZSgwKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICYmIGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0gYnJhbmNoQ2hpbGQtPmNo
aWxkKDEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFuY2hD
aGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFuY2hDaGls
ZC0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKGJyYW5jaENo
aWxkLT5jaGlsZCgwKSwgYnJhbmNoQ2hpbGQtPm9wY29kZSgpID09IE5vdEVxdWFsKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKICAgICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChjcmVhdGVCcmFuY2gobV92YWx1
ZS0+Y2hpbGQoMCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjc4NCw3
ICszMjYwLDgxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBhcHBlbmQoQWlyOjpFbnRyeVN3aXRj
aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOiB7Cisg
ICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOiB7
CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFs
dWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRI
KEF0b21pY0FkZCwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRv
bWljKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgo
QXRvbWljWGNoZ0FkZCwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKTsKKyAgICAgICAgICAgIGlm
IChpc1ZhbGlkT3Bjb2RlKG9wY29kZSwgQXJnOjpUbXAsIGFkZHJlc3MpKSB7CisgICAgICAgICAg
ICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIHRtcChhdG9t
aWMtPmNoaWxkKDApKSwgdG1wKGF0b21pYykpOworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNv
ZGUsIHRtcChhdG9taWMpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9X
SURUSChBZGQsIGNhbm9uaWNhbFdpZHRoKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1
YjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21p
Y1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9X
SURUSChBdG9taWNTdWIsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21p
YyhPUENPREVfRk9SX1dJRFRIKFN1YiwgY2Fub25pY2FsV2lkdGgoYXRvbWljLT5vcGVyYXRpb25X
aWR0aCgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSog
YXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBw
ZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY0FuZCwgYXRvbWljLT5vcGVyYXRp
b25XaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQW5kLCBjYW5vbmlj
YWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjogewor
ICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVl
PigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChB
dG9taWNPciwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09E
RV9GT1JfV0lEVEgoT3IsIGNhbm9uaWNhbFdpZHRoKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgQXRvbWljWGNoZ1hvcjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9
IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRB
dG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYb3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgo
KSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
YXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX1dJRFRIKFhvciwgY2Fub25pY2FsV2lkdGgo
YXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgICAg
ICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnLCBh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWRPcGNvZGUo
b3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcykpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVs
YXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0
bXAoYXRvbWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyks
IGFkZHJlc3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX1dJRFRI
KFhvciwgY2Fub25pY2FsV2lkdGgoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNzkyLDY0ICszMzQyLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgZGF0YUxvZygiRkFUQUw6IGNvdWxkIG5vdCBsb3dlciAiLCBkZWVwRHVt
cChtX3Byb2NlZHVyZSwgbV92YWx1ZSksICJcbiIpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KLQotICAgIHZvaWQgbG93ZXJYODZEaXYoQjM6Ok9wY29kZSBv
cCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICAgICAgVG1wIGVheCA9
IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBlZHggPSBUbXAoWDg2UmVnaXN0
ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7Ci0g
ICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKLSAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkp
IHsKLSAgICAgICAgY2FzZSBJbnQzMjoKLSAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQg
PSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7Ci0gICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDY0OgotICAgICAgICAgICAgY29u
dmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7Ci0gICAgICAgICAgICBk
aXYgPSBYODZEaXY2NDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsK
LSAgICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09IERpdiA/IFg4
NlJlZ2lzdGVyczo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1v
dmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChjb252ZXJ0
VG9Eb3VibGVXb3JkLCBlYXgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0
bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQp
LCB0bXAobV92YWx1ZSkpOwotCi0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0ob3ApOwotICAg
ICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHZv
aWQgbG93ZXJYODZVRGl2KEIzOjpPcGNvZGUgb3ApCi0gICAgewotI2lmIENQVShYODYpIHx8IENQ
VShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOwotICAg
ICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4KTsKLQotICAgICAgICBBaXI6Ok9w
Y29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2
NjQ7Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7Ci0gICAgICAg
IFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gWDg2UmVnaXN0
ZXJzOjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwgdG1w
KG1fdmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKFhvcjY0LCBlZHgsIGVk
eCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkp
KTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOwotI2Vs
c2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BM
QVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KKyAgICAKICAgICBJbmRleFNldDxWYWx1ZT4gbV9s
b2NrZWQ7IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCB3aWxsIGhhdmUgbm8gVG1wIGluIEFpci4K
ICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3ZhbHVlVG9UbXA7IC8vIFRoZXNlIGFyZSB2YWx1
ZXMgdGhhdCBtdXN0IGhhdmUgYSBUbXAgaW4gQWlyLiBXZSBzYXkgdGhhdCBhIFZhbHVlKiB3aXRo
IGEgbm9uLW51bGwgVG1wIGlzICJwaW5uZWQiLgogICAgIEluZGV4TWFwPFZhbHVlLCBUbXA+IG1f
cGhpVG9UbXA7IC8vIEVhY2ggUGhpIGdldHMgaXRzIG93biBUbXAuCkBAIC0yODY0LDcgKzMzNTcs
NyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFZlY3RvcjxJbnN0LCA0Pj4gbV9pbnN0czsKICAg
ICBWZWN0b3I8SW5zdD4gbV9wcm9sb2d1ZTsKLQorICAgIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBt
X2Jsb2NrOwogICAgIGJvb2wgbV9pc1JhcmU7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKQEAgLTI4
NzUsNiArMzM2OCwxMiBAQCBwcml2YXRlOgogCiAgICAgUHJvY2VkdXJlJiBtX3Byb2NlZHVyZTsK
ICAgICBDb2RlJiBtX2NvZGU7CisKKyAgICBBaXI6OkJsb2NrSW5zZXJ0aW9uU2V0IG1fYmxvY2tJ
bnNlcnRpb25TZXQ7CisKKyAgICBUbXAgbV9lYXg7CisgICAgVG1wIG1fZWN4OworICAgIFRtcCBt
X2VkeDsKIH07CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCwzMCArMzQsNDggQEAgTWVtb3J5VmFsdWU6On5NZW1vcnlWYWx1ZSgpCiB7CiB9CiAKK1R5
cGUgTWVtb3J5VmFsdWU6OmFjY2Vzc1R5cGUoKSBjb25zdAoreworICAgIGlmIChpc0xvYWQob3Bj
b2RlKCkpKQorICAgICAgICByZXR1cm4gdHlwZSgpOworICAgIC8vIFRoaXMgaGFwcGVucyB0byB3
b3JrIGZvciBhdG9taWNzLCB0b28uIFRoYXQncyB3aHkgQXRvbWljVmFsdWUgZG9lcyBub3QgbmVl
ZCB0byBvdmVycmlkZSB0aGlzLgorICAgIHJldHVybiBjaGlsZCgwKS0+dHlwZSgpOworfQorCitC
YW5rIE1lbW9yeVZhbHVlOjphY2Nlc3NCYW5rKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYmFua0Zv
clR5cGUoYWNjZXNzVHlwZSgpKTsKK30KKwogc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRl
U2l6ZSgpIGNvbnN0CiB7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkpOworfQorCitX
aWR0aCBNZW1vcnlWYWx1ZTo6bG9hZFN0b3JlV2lkdGgoKSBjb25zdAorewogICAgIHN3aXRjaCAo
b3Bjb2RlKCkpIHsKICAgICBjYXNlIExvYWQ4WjoKICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNl
IFN0b3JlODoKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBXaWR0aDg7CiAgICAg
Y2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAg
ICAgIHJldHVybiAyOworICAgICAgICByZXR1cm4gV2lkdGgxNjsKICAgICBjYXNlIExvYWQ6Ci0g
ICAgICAgIHJldHVybiBzaXplb2ZUeXBlKHR5cGUoKSk7CisgICAgICAgIHJldHVybiB3aWR0aEZv
clR5cGUodHlwZSgpKTsKICAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlw
ZShjaGlsZCgwKS0+dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZShjaGlsZCgw
KS0+dHlwZSgpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICB9
CiB9CiAKIFdpZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHdpZHRoRm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJuIGxvYWRTdG9y
ZVdpZHRoKCk7CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYg
Y29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02Nyw2ICs4NSw4IEBAIHZvaWQgTWVt
b3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYKICAgICBpZiAoKGlzTG9hZCgpICYmIGVm
ZmVjdHMoKS5yZWFkcyAhPSByYW5nZSgpKQogICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVmZmVj
dHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgInJhbmdl
ID0gIiwgcmFuZ2UoKSk7CisgICAgaWYgKHBoYW50b21SYW5nZSgpKQorICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJwaGFudG9tUmFuZ2UgPSAiLCBwaGFudG9tUmFuZ2UoKSk7CiB9CiAKIFZhbHVl
KiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKQEAgLTc0LDYgKzk0LDU4IEBAIFZhbHVl
KiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKICAgICByZXR1cm4gbmV3IE1lbW9yeVZh
bHVlKCp0aGlzKTsKIH0KIAorLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2Fk
OFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAor
Ly8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1
ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGlu
dDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUs
IG9yaWdpbiwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBpZiAoIUFT
U0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAg
ICAgY2FzZSBMb2FkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTG9hZDhaOgor
ICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNl
IExvYWQxNlM6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3RvcmUxNjoKKyAg
ICAgICAgY2FzZSBTdG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3Ig
bG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlWYWx1ZTo6TWVt
b3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJf
dCBvZmZzZXQgPSAwKQorICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9p
bnRlciwgb2Zmc2V0KQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3
aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2Fz
ZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBm
b3Igc3RvcmVzLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9y
aWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQor
ICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9p
bnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBBU1NFUlQoaXNTdG9yZShraW5k
Lm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8g
RU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFs
dWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVt
b3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNDggKzI3LDE3IEBACiAKICNpZiBFTkFC
TEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNIZWFwUmFuZ2Uu
aCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMg
ewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxvdyBmZW5jZWQgbWVtb3J5IGFjY2Vzc2VzIG9u
IEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIzNDkK
LQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVtb3J5VmFsdWUgOiBwdWJsaWMgVmFsdWUgewog
cHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQogICAgIHsKLSAgICAg
ICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAg
ICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAgICBjYXNlIExvYWQx
NlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNh
c2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNTdG9yZShLaW5kIGtpbmQpCi0gICAgewotICAg
ICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAg
ICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNMb2FkKEtpbmQga2luZCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQpICYmICFpc1N0b3JlKGtpbmQpOworICAgICAg
ICByZXR1cm4gaXNNZW1vcnkoa2luZC5vcGNvZGUoKSk7CiAgICAgfQogCiAgICAgfk1lbW9yeVZh
bHVlKCk7CkBAIC03OCw3NiArNDcsNTYgQEAgcHVibGljOgogCiAgICAgY29uc3QgSGVhcFJhbmdl
JiByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2U7IH0KICAgICB2b2lkIHNldFJhbmdlKGNv
bnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9yYW5nZSA9IHJhbmdlOyB9CisgICAgCisgICAgLy8g
VGhpcyBpcyBhbiBhbGlhcyBmb3IgcmFuZ2UuCisgICAgY29uc3QgSGVhcFJhbmdlJiBhY2Nlc3NS
YW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlKCk7IH0KKyAgICB2b2lkIHNldEFjY2Vzc1Jhbmdl
KGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgc2V0UmFuZ2UocmFuZ2UpOyB9CisgICAgCisgICAg
Y29uc3QgSGVhcFJhbmdlJiBmZW5jZVJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9mZW5jZVJhbmdl
OyB9CisgICAgdm9pZCBzZXRGZW5jZVJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9m
ZW5jZVJhbmdlID0gcmFuZ2U7IH0KKworICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IGlzU3RvcmUob3Bjb2RlKCkpOyB9CisgICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiBp
c0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAgICBib29sIGlzU3RvcmUoKSBjb25zdCB7IHJldHVybiB0
eXBlKCkgPT0gVm9pZDsgfQotICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ICE9IFZvaWQ7IH0KKyAgICBib29sIGhhc0ZlbmNlKCkgY29uc3QgeyByZXR1cm4gISFmZW5jZVJh
bmdlKCk7IH0KIAorICAgIFR5cGUgYWNjZXNzVHlwZSgpIGNvbnN0OworICAgIEJhbmsgYWNjZXNz
QmFuaygpIGNvbnN0OwogICAgIHNpemVfdCBhY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0OwotICAgIFdp
ZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CisgICAgCisgICAgLy8gU2xpZ2h0bHkgZmFzdGVyIHZl
cnNpb24gb2YgYWNjZXNzV2lkdGgsIGlmIHlvdSBrbm93IHRoYXQgeW91J3JlIHdvcmtpbmcgd2l0
aCBhIGxvYWQgb3Igc3RvcmUuCisgICAgV2lkdGggbG9hZFN0b3JlV2lkdGgoKSBjb25zdDsKKyAg
ICAKKyAgICB2aXJ0dWFsIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoK
LSAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0cmVh
bSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJy
aWRlOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0KLSAgICAvLyBV
c2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2Yg
dGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0Ci0gICAgLy8gZGVzY3JpYmVzIHRoZSBy
ZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3Jp
Z2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAg
OiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCisgICAg
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIE1lbW9yeVZhbHVlKENo
ZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBpbnQz
Ml90IG9mZnNldCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShDaGVj
a2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKICAgICAgICAgLCBt
X29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQogICAg
IHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAo
a2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBMb2FkOgotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgICAgICBjYXNlIExvYWQ4
UzoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2UzoK
LSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUx
NjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUg
PT0gVm9pZCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9CiAgICAgfQorICAgIAorICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1dCBu
b3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3VmZml4
IHRoYXQKKyAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgorICAgIE1lbW9yeVZh
bHVlKEtpbmQsIFR5cGUsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0g
MCk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5
cGUgaXMgaW1wbGllZC4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4s
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogTWVtb3J5VmFs
dWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQotICAgIHsKLSAgICB9Cisg
ICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZz
ZXQgPSAwKTsKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KLSAgICBNZW1vcnlW
YWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50
ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBr
aW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQotICAgICAgICAsIG1fb2Zmc2V0KG9m
ZnNldCkKLSAgICAgICAgLCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCi0gICAgewotICAgICAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29k
ZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUx
NjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
CisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2lu
dGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAogICAgIGludDMyX3QgbV9vZmZzZXQgeyAw
IH07Ci0gICAgSGVhcFJhbmdlIG1fcmFuZ2U7CisgICAgSGVhcFJhbmdlIG1fcmFuZ2UgeyBIZWFw
UmFuZ2U6OnRvcCgpIH07CisgICAgSGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhlYXBSYW5nZSgp
IH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBF
TkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAiQjNXaWR0aC5o
IgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIApAQCAtODIsNyArODMsNiBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIE1vZCwg
Ly8gQWxsIGJldHMgYXJlIG9mZiBhcyB0byB3aGF0IHdpbGwgaGFwcGVuIHdoZW4geW91IGV4ZWN1
dGUgdGhpcyBmb3IgLTJeMzElLTEgYW5kIHglMC4KICAgICBVTW9kLAogCi0KICAgICAvLyBQb2x5
bW9ycGhpYyBuZWdhdGlvbi4gTm90ZSB0aGF0IHdlIG9ubHkgbmVlZCB0aGlzIGZvciBmbG9hdGlu
ZyBwb2ludCwgc2luY2UgaW50ZWdlciBuZWdhdGlvbgogICAgIC8vIGlzIGV4YWN0bHkgbGlrZSBT
dWIoMCwgeCkuIEJ1dCB0aGF0J3Mgbm90IHRydWUgZm9yIGZsb2F0aW5nIHBvaW50LiBTdWIoMCwg
MCkgaXMgMCwgd2hpbGUKICAgICAvLyBOZWcoMCkgaXMgLTAuIEFsc28sIHdlIGNhbm9uaWNhbGl6
ZSBTdWIoMCwgeCkgaW50byBOZWcoeCkgaW4gY2FzZSBvZiBpbnRlZ2Vycy4KQEAgLTE2Miw2ICsx
NjIsMTA3IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgU3RvcmUxNiwKICAgICAvLyBU
aGlzIGlzIGEgcG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgRmxvYXQsIGFuZCBE
b3VibGUuCiAgICAgU3RvcmUsCisgICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAg
dGhhdCByZXR1cm5zIGEgYm9vbGVhbi4gTWF5IGNob29zZSB0byBkbyBub3RoaW5nIGFuZCByZXR1
cm4gZmFsc2UuIFlvdSBjYW4KKyAgICAvLyB1c3VhbGx5IGFzc3VtZSB0aGF0IHRoaXMgaXMgZmFz
dGVyIGFuZCByZXN1bHRzIGluIGxlc3MgY29kZSB0aGFuIEF0b21pY1N0cm9uZ0NBUywgdGhvdWdo
IHRoYXQncworICAgIC8vIG5vdCBuZWNlc3NhcmlseSB0cnVlIG9uIEludGVsLCBpZiBpbnN0cnVj
dGlvbiBzZWxlY3Rpb24gZG9lcyBpdHMgam9iLiBJbWFnaW5lIHRoYXQgdGhpcyBvcGNvZGUgaXMK
KyAgICAvLyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gYm9vbCBBdG9taWNXZWFrQ0FTKFQgZXhwZWN0ZWRW
YWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgaWYgKCFyYW5k
KCkpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFJlYWwgd29ybGQgZXhhbXBsZSBv
ZiB0aGlzOiBjb250ZXh0IHN3aXRjaCBvbiBBUk0gd2hpbGUgZG9pbmcgQ0FTLgorICAgIC8vICAg
ICBpZiAoKnB0ciAhPSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIC8vICAgICAqcHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVybiB0cnVlOwor
ICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBhbGwgYXRvbWljcyBwdXQgdGhlIHBv
aW50ZXIgbGFzdCB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IGxvYWRzIGFuZCBzdG9yZXMgd29y
ay4gVGhpcworICAgIC8vIGlzIGEgZ29vZnkgdHJhZGl0aW9uLCBidXQgaXQncyBoYXJtbGVzcywg
YW5kIGJldHRlciB0aGFuIGJlaW5nIGluY29uc2lzdGVudC4KKyAgICAvLworICAgIC8vIE5vdGUg
dGhhdCB3ZWFrIENBUyBoYXMgbm8gZmVuY2luZyBndWFyYW50ZWVzIHdoZW4gaXQgZmFpbHMuIFRo
aXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nCisgICAgLy8gdHJhbnNmb3JtYXRpb24gaXMgYWx3
YXlzIHZhbGlkOgorICAgIC8vCisgICAgLy8gQmVmb3JlOgorICAgIC8vCisgICAgLy8gICAgICAg
ICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAg
IFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICAvLworICAgIC8vIEFm
dGVyOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goRXF1YWwoTG9hZChwdHIpLCBleHBl
Y3RlZCkpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojYXR0ZW1wdCwgRWxzZTojZmFp
bAorICAgIC8vICAgICBCQiNhdHRlbXB0OgorICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dl
YWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVu
OiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBCb3RoIGtpbmRzIG9mIENBUyBm
b3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNikgaWdub3JlIHRoZSBp
cnJlbGV2YW50IGJpdHMgb2YgdGhlCisgICAgLy8gaW5wdXQuCisgICAgQXRvbWljV2Vha0NBUywK
KyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgdGhlIG9s
ZCB2YWx1ZS4gRG9lcyBub3QgaGF2ZSB0aGUgbm9uZGV0ZXJtaW5pc20gb2YgV2Vha0NBUy4KKyAg
ICAvLyBUaGlzIGlzIGEgYml0IG1vcmUgY29kZSBhbmQgYSBiaXQgc2xvd2VyIGluIHNvbWUgY2Fz
ZXMsIHRob3VnaCBub3QgYnkgYSBsb3QuIEltYWdpbmUgdGhhdCB0aGlzCisgICAgLy8gb3Bjb2Rl
IGlzIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICAvLyBUIEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFsdWUs
IFQgbmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7CisgICAgLy8gICAgIFQgb2xkVmFsdWUgPSAq
cHRyOworICAgIC8vICAgICBpZiAob2xkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAg
ICAgICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIG9sZFZhbHVlCisgICAg
Ly8gfQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5kIEF0b21pY1N0
cm9uZ0NBUyBzb3J0IG9mIGhhdmUgdGhpcyBraW5kIG9mIGVxdWl2YWxlbmNlOgorICAgIC8vCisg
ICAgLy8gQXRvbWljV2Vha0NBUyhAZXhwLCBAbmV3LCBAcHRyKSA9PSBFcXVhbChBdG9taWNTdHJv
bmdDQVMoQGV4cCwgQG5ldywgQHB0ciksIEBleHApCisgICAgLy8KKyAgICAvLyBBc3N1bWluZyB0
aGF0IHRoZSBXZWFrQ0FTIGRvZXMgbm90IHNwdXJpb3VzbHkgZmFpbCwgb2YgY291cnNlLgorICAg
IEF0b21pY1N0cm9uZ0NBUywKKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IF9fXyBhIG1lbW9yeSBs
b2NhdGlvbiBhbmQgcmV0dXJuIHRoZSBvbGQgdmFsdWUuIFN5bnRheDoKKyAgICAvLworICAgIC8v
IEBvbGRWYWx1ZSA9IEF0b21pY1hjaGdfX18oQG9wZXJhbmQsIEBwdHIpCisgICAgLy8KKyAgICAv
LyBGb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNiksIHRoZXNlIHJl
dHVybiBzaWduLWV4dGVuZGVkIHJlc3VsdHMgYW5kIGlnbm9yZSB0aGUKKyAgICAvLyBpcnJlbGV2
YW50IGJpdHMgb2YgdGhlaXIgaW5wdXRzLgorICAgIEF0b21pY1hjaGdBZGQsCisgICAgQXRvbWlj
WGNoZ0FuZCwKKyAgICBBdG9taWNYY2hnT3IsCisgICAgQXRvbWljWGNoZ1N1YiwKKyAgICBBdG9t
aWNYY2hnWG9yLAorICAgIAorICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBBdG9t
aWNYY2hnTmVnIGFuZCBBdG9taWNYY2hnTm90LgorICAgIAorICAgIC8vIEF0b21pY2FsbHkgZXhj
aGFuZ2UgYSB2YWx1ZSB3aXRoIGEgbWVtb3J5IGxvY2F0aW9uLiBTeW50YXg6CisgICAgLy8KKyAg
ICAvLyBAb2xkVmFsdWUgPSBBdG9taWNYY2hnKEBuZXdWYWx1ZSwgQHB0cikKKyAgICBBdG9taWNY
Y2hnLAorICAgIAorICAgIC8vIEludHJvZHVjZSBhbiBpbnZpc2libGUgZGVwZW5kZW5jeSBmb3Ig
YmxvY2tpbmcgbW90aW9uIG9mIGxvYWRzIHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyLiBTeW50
YXg6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gRGVwZW5kKEBwaGFudG9tKQorICAgIC8vCisg
ICAgLy8gVGhpcyBpcyBldmVudHVhbGx5IGNvZGVnZW5lcmF0ZWQgdG8gaGF2ZSBsb2NhbCBzZW1h
bnRpY3MgYXMgaWYgd2UgZGlkOgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9ICQwCisgICAgLy8K
KyAgICAvLyBCdXQgaXQgZW5zdXJlcyB0aGF0IHRoZSB1c2VycyBvZiBAcmVzdWx0IGNhbm5vdCBl
eGVjdXRlIHVudGlsIEBwaGFudG9tIGlzIGNvbXB1dGVkLgorICAgIC8vCisgICAgLy8gVGhlIGNv
bXBpbGVyIGlzIG5vdCBhbGxvd2VkIHRvIHJlYXNvbiBhYm91dCB0aGUgZmFjdCB0aGF0IERlcGVu
ZCBjb2RlZ2VuZXJhdGVzIHRoaXMgd2F5LiBBbnkga2luZAorICAgIC8vIG9mIHRyYW5zZm9ybWF0
aW9uIG9yIGFuYWx5c2lzIHRoYXQgcmVsaWVzIG9uIHRoZSBpbnNpZ2h0IHRoYXQgRGVwZW5kIGlz
IHJlYWxseSB6ZXJvIGlzIHVuc291bmQsCisgICAgLy8gYmVjYXVzZSBpdCB1bmxvY2tzIHJlb3Jk
ZXJpbmcgb2YgdXNlcnMgb2YgQHJlc3VsdCBhbmQgQHBoYW50b20uCisgICAgLy8KKyAgICAvLyBP
biBYODYsIHRoaXMgaXMgbG93ZXJlZCB0byBhIGxvYWQtbG9hZCBmZW5jZSBhbmQgQHJlc3VsdCB1
c2VzIEBwaGFudG9tIGRpcmVjdGx5LgorICAgIC8vCisgICAgLy8gT24gQVJNLCB0aGlzIGlzIGxv
d2VyZWQgYXMgaWYgbGlrZToKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSBCaXRYb3IoQHBoYW50
b20sIEBwaGFudG9tKQorICAgIC8vCisgICAgLy8gRXhjZXB0IHRoYXQgdGhlIGNvbXBpbGVyIG5l
dmVyIGdldHMgYW4gb3Bwb3J0dW5pdHkgdG8gc2ltcGxpZnkgb3V0IHRoZSBCaXRYb3IuCisgICAg
RGVwZW5kLAogCiAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIGFjdHVhbCBhZGRy
ZXNzIG9mIGEgV2FzbSBtZW1vcnkgb3BlcmF0aW9uLiBJdCB0YWtlcyBhbiBJbnRQdHIKICAgICAv
LyBhbmQgYSBwaW5uZWQgcmVnaXN0ZXIgdGhlbiBjb21wdXRlcyB0aGUgYXBwcm9wcmlhdGUgSW50
UHRyIGFkZHJlc3MuIEZvciB0aGUgdXNlLWNhc2Ugb2YKQEAgLTMwMSw2ICs0MDIsMTEwIEBAIGlu
bGluZSBib29sIGlzRGVmaW5pdGVseVRlcm1pbmFsKE9wY29kZSAKICAgICB9CiB9CiAKK2lubGlu
ZSBib29sIGlzTG9hZChPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7Cisg
ICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAg
IGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29s
IGlzU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNh
c2UgU3RvcmU4OgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
fQorCitpbmxpbmUgYm9vbCBpc0xvYWRTdG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRj
aCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2Fz
ZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBT
dG9yZTg6CisgICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisK
K2lubGluZSBib29sIGlzQXRvbWljKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNv
ZGUpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6
CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBj
YXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9t
aWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJv
b2wgaXNBdG9taWNDQVMoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgewor
ICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNYY2hnKE9wY29kZSBvcGNvZGUpCit7CisgICAg
c3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9t
aWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1
YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitpbmxpbmUgYm9vbCBpc01lbW9yeUFjY2VzcyhPcGNvZGUgb3Bjb2RlKQoreworICAg
IHJldHVybiBpc0F0b21pYyhvcGNvZGUpIHx8IGlzTG9hZFN0b3JlKG9wY29kZSk7Cit9CisKK2lu
bGluZSBPcGNvZGUgc2lnbkV4dGVuZE9wY29kZShXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2gg
KHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiBTRXh0ODsKKyAgICBj
YXNlIFdpZHRoMTY6CisgICAgICAgIHJldHVybiBTRXh0MTY7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIE9vcHM7Cisg
ICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIwMiw2ICsyMDIsOCBAQCB2b2lkIFByb2NlZHVyZTo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjCiAgICAgICAgIH0KICAgICAgICAgZGF0YUxvZygiICAgICIsIGRlZXBEdW1w
KCp0aGlzLCB2YWx1ZSksICJcbiIpOwogICAgIH0KKyAgICBpZiAoaGFzUXVpcmtzKCkpCisgICAg
ICAgIG91dC5wcmludCgiSGFzIFF1aXJrczogVHJ1ZVxuIik7CiAgICAgaWYgKHZhcmlhYmxlcygp
LnNpemUoKSkgewogICAgICAgICBvdXQucHJpbnQoIlZhcmlhYmxlczpcbiIpOwogICAgICAgICBm
b3IgKFZhcmlhYmxlKiB2YXJpYWJsZSA6IHZhcmlhYmxlcygpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3
LDcgQEAgcHVibGljOgogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChPcmlnaW4sIFR5cGUsIGlu
dDY0X3QgdmFsdWUpOwogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChWYWx1ZSosIGludDY0X3Qg
dmFsdWUpOwogCisgICAgLy8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4K
ICAgICBWYWx1ZSogYWRkQm90dG9tKE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGFkZEJvdHRv
bShWYWx1ZSopOwogCkBAIC0xOTUsNiArMTk2LDEyIEBAIHB1YmxpYzoKICAgICAvLyBhbGl2ZS4g
R3JlYXQgZm9yIGNvbXBpbGVyLWdlbmVyYXRlZCBkYXRhIHNlY3Rpb25zLCBsaWtlIHN3aXRjaCBq
dW1wIHRhYmxlcyBhbmQgY29uc3RhbnQgcG9vbHMuCiAgICAgLy8gVGhpcyByZXR1cm5zIG1lbW9y
eSB0aGF0IGhhcyBiZWVuIHplcm8taW5pdGlhbGl6ZWQuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCogYWRkRGF0YVNlY3Rpb24oc2l6ZV90KTsKKyAgICAKKyAgICAvLyBTb21lIG9wZXJhdGlv
bnMgYXJlIHNwZWNpZmllZCBpbiBCMyBJUiB0byBiZWhhdmUgb25lIHdheSBidXQgb24gdGhpcyBn
aXZlbiBDUFUgdGhleSBiZWhhdmUgYQorICAgIC8vIGRpZmZlcmVudCB3YXkuIFdoZW4gdHJ1ZSwg
dGhvc2UgQjMgSVIgb3BzIHN3aXRjaCB0byBiZWhhdmluZyB0aGUgQ1BVIHdheSwgYW5kIHRoZSBv
cHRpbWl6ZXIgbWF5CisgICAgLy8gc3RhcnQgdGFraW5nIGFkdmFudGFnZSBvZiBpdC4KKyAgICBi
b29sIGhhc1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUXVpcmtzOyB9CisgICAgdm9pZCBz
ZXRIYXNRdWlya3MoYm9vbCB2YWx1ZSkgeyBtX2hhc1F1aXJrcyA9IHZhbHVlOyB9CiAKICAgICBP
cGFxdWVCeXByb2R1Y3RzJiBieXByb2R1Y3RzKCkgeyByZXR1cm4gKm1fYnlwcm9kdWN0czsgfQog
CkBAIC0yNTIsNiArMjU5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lk
KFByaW50U3RyZWFtJiwgT3JpZ2luKT4+IG1fb3JpZ2luUHJpbnRlcjsKICAgICBjb25zdCB2b2lk
KiBtX2Zyb250ZW5kRGF0YTsKICAgICBQQ1RvT3JpZ2luTWFwIG1fcGNUb09yaWdpbk1hcDsKKyAg
ICBib29sIG1faGFzUXVpcmtzIHsgZmFsc2UgfTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3Ro
LmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlU3RyZW5ndGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDIsNyArNjAyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnJlYWs7Ci0KKyAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIE5lZzoKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogTmVnKGNvbnN0YW50
KQogICAgICAgICAgICAgLy8gSW50byB0aGlzOiAtY29uc3RhbnQKQEAgLTEyOTUsNiArMTI5NSwx
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghbV9wcm9j
Lmhhc1F1aXJrcygpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0OChBdG9t
aWNYY2hnX19fKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXwor
ICAgICAgICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29k
ZSgpKQorICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWlj
VmFsdWU+KCktPm9wZXJhdGlvbldpZHRoKCkgPT0gV2lkdGg4KSB7CisgICAgICAgICAgICAgICAg
ICAgIHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNFeHQxNjoKQEAgLTEzNDMsNiArMTM1MywxNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhhc1F1aXJrcygpKSB7
CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0MTYoQXRvbWljWGNoZ19fXykKKyAg
ICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAg
ICBpZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5vcGVy
YXRpb25XaWR0aCgpID09IFdpZHRoMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdp
dGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgU0V4dDMyOgpAQCAtMjEwMSwyMiArMjEyMSwyNSBAQCBwcml2YXRlOgog
ICAgICAgICBBU1NFUlQobV92YWx1ZS0+bnVtQ2hpbGRyZW4oKSA+PSAyKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIExlYXZlIGl0IGFsb25lIGlmIHRoZSByaWdodCBjaGlsZCBpcyBhIGNvbnN0YW50
LgotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKSkKKyAgICAgICAg
aWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkKKyAgICAgICAgICAgIHx8IG1fdmFs
dWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIAotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3Rh
bnQoKSkgeworICAgICAgICBhdXRvIHN3YXAgPSBbJl0gKCkgewogICAgICAgICAgICAgc3RkOjpz
d2FwKG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICBt
X2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICAg
ICAgfTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNDb25zdGFu
dCgpKQorICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCisgICAgICAgIGlmICht
X3ZhbHVlLT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQorICAgICAgICAg
ICAgcmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCiAgICAgICAgIC8vIFNvcnQgdGhlIG9wZXJhbmRz
LiBUaGlzIGlzIGFuIGltcG9ydGFudCBjYW5vbmljYWxpemF0aW9uLiBXZSB1c2UgdGhlIGluZGV4
IGluc3RlYWQgb2YKICAgICAgICAgLy8gdGhlIGFkZHJlc3MgdG8gbWFrZSB0aGlzIGF0IGxlYXN0
IHNsaWdodGx5IGRldGVybWluaXN0aWMuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+
aW5kZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEpLT5pbmRleCgpKSB7Ci0gICAgICAgICAgICBzdGQ6
OnN3YXAobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAg
IG1fY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmlu
ZGV4KCkpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCByZWFsbHkgYmUgYSBmb3J3YXJkIGFuYWx5c2lzLiBJbnN0ZWFkLCB3ZSB1
c2VzIGEgYm91bmRlZC1zZWFyY2ggYmFja3dhcmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw2ICszNDYsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkg
PT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+
Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAg
ICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIExvYWQ6CkBAIC0zNTMsNiArMzU0LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwg
KnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBl
KCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+dHlwZSgpICE9IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVT
dGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFN0b3JlODoKQEAgLTM2Miw2ICszNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0g
cG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0Fj
Y2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFN0
b3JlOgpAQCAtMzY5LDggKzM3Miw0OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgp
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBl
KCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZl
bmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoK
KyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVu
KCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCks
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUt
PmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAg
ICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgICAgICAgICAg
VkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDMsICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1
ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkp
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGls
ZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRl
U3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAg
ICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdT
dWI6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgICAgICBjYXNlIEF0
b21pY1hjaGc6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGls
bCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5u
dW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQo
MSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0
YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRGVwZW5kOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4
dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlw
ZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5r
aW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKQEAg
LTUzNyw2ICs1ODEsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVGZW5jZShWYWx1ZSogdmFsdWUpCisgICAg
eworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigp
OworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgVkFMSURBVEUo
bWVtb3J0eS0+YWNjZXNzQmFuaygpID09IEdQLCAoIkZlbmNlIGF0ICIsICptZW1vcnkpKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUF0b21pYyhWYWx1ZSogdmFsdWUpCisgICAgewor
ICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOwor
ICAgICAgICAKKyAgICAgICAgVkFMSURBVEUoYmVzdFR5cGUoYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKSA9PSBhdG9taWMtPm9wZXJhdGlvblR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICB9
CiAKICAgICB2b2lkIHZhbGlkYXRlU3RhY2tBY2Nlc3MoVmFsdWUqIHZhbHVlKQogICAgIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNBcmd1bWVu
dFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFz
aWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0JvdHRvbVByb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiQjNDQ2FsbFZhbHVlLmgiCkBAIC01MTAsNiArNTExLDcgQEAgYm9vbCBWYWx1ZTo6cmV0dXJu
c0Jvb2woKSBjb25zdAogICAgIGNhc2UgQWJvdmVFcXVhbDoKICAgICBjYXNlIEJlbG93RXF1YWw6
CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQaGk6CiAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgaGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC01ODksNiArNTkxLDcgQEAgRWZmZWN0cyBWYWx1
ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1YWxP
clVub3JkZXJlZDoKICAgICBjYXNlIFNlbGVjdDoKKyAgICBjYXNlIERlcGVuZDoKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBEaXY6CiAgICAgY2FzZSBVRGl2OgpAQCAtNjAwLDE2ICs2MDMsNDQg
QEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBMb2FkOFM6CiAgICAg
Y2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKLSAgICBjYXNlIExvYWQ6Ci0gICAgICAg
IHJlc3VsdC5yZWFkcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAgIGNhc2UgTG9h
ZDogeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7Cisg
ICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9y
eS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+ZmVu
Y2VSYW5nZSgpOworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQog
ICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICBjYXNlIFN0b3JlODoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgY2FzZSBTdG9y
ZToKLSAgICAgICAgcmVzdWx0LndyaXRlcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOwor
ICAgIGNhc2UgU3RvcmU6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9y
eVZhbHVlPigpOworICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5yYW5nZSgpOworICAg
ICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICByZXN1bHQucmVhZHMg
PSBtZW1vcnktPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRv
bWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hj
aGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgor
ICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAg
QXRvbWljVmFsdWUqIGF0b21pYyA9IGFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICByZXN1bHQu
cmVhZHMgPSBhdG9taWMtPnJhbmdlKCkgfCBhdG9taWMtPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAg
cmVzdWx0LndyaXRlcyA9IGF0b21pYy0+cmFuZ2UoKSB8IGF0b21pYy0+ZmVuY2VSYW5nZSgpOwor
ICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmVzdWx0LmZlbmNl
ID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgcmVzdWx0LnJl
YWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CkBAIC02MTcsMTggKzY0OCw3IEBAIEVm
ZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgICAgICBjb25zdCBGZW5jZVZhbHVlKiBm
ZW5jZSA9IGFzPEZlbmNlVmFsdWU+KCk7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IGZlbmNlLT5y
ZWFkOwogICAgICAgICByZXN1bHQud3JpdGVzID0gZmVuY2UtPndyaXRlOwotICAgICAgICAKLSAg
ICAgICAgLy8gUHJldmVudCBraWxsaW5nIG9mIGZlbmNlcyB0aGF0IGNsYWltIG5vdCB0byB3cml0
ZSBhbnl0aGluZy4gSXQncyBhIGJpdCB3ZWlyZCB0aGF0IHdlIHVzZQotICAgICAgICAvLyBsb2Nh
bCBzdGF0ZSBhcyB0aGUgd2F5IHRvIGRvIHRoaXMsIGJ1dCBpdCBoYXBwZW5zIHRvIHdvcms6IHdl
IG11c3QgYXNzdW1lIHRoYXQgd2UgY2Fubm90Ci0gICAgICAgIC8vIGtpbGwgd3JpdGVzTG9jYWxT
dGF0ZSB1bmxlc3Mgd2UgdW5kZXJzdGFuZHMgZXhhY3RseSB3aGF0IHRoZSBpbnN0cnVjdGlvbiBp
cyBkb2luZyAobGlrZQotICAgICAgICAvLyB0aGUgd2F5IHRoYXQgZml4U1NBIHVuZGVyc3RhbmRz
IFNldC9HZXQgYW5kIHRoZSB3YXkgdGhhdCByZWR1Y2VTdHJlbmd0aCBhbmQgb3RoZXJzCi0gICAg
ICAgIC8vIHVuZGVyc3RhbmQgVXBzaWxvbikuIFRoaXMgd291bGQgb25seSBiZWNvbWUgYSBwcm9i
bGVtIGlmIHdlIGhhZCBzb21lIGFuYWx5c2lzIHRoYXQgd2FzCi0gICAgICAgIC8vIGxvb2tpbmcg
dG8gdXNlIHRoZSB3cml0ZXNMb2NhbFN0YXRlIGJpdCB0byBpbnZhbGlkYXRlIGEgQ1NFIG92ZXIg
bG9jYWwgc3RhdGUgb3BlcmF0aW9ucy4KLSAgICAgICAgLy8gVGhlbiBhIEZlbmNlIHdvdWxkIGxv
b2sgYmxvY2ssIHNheSwgdGhlIGVsaW1pbmF0aW9uIG9mIGEgcmVkdW5kYW50IEdldC4gQnV0IGl0
IGxpa2UKLSAgICAgICAgLy8gdGhhdCdzIG5vdCBhdCBhbGwgaG93IG91ciBvcHRpbWl6YXRpb25z
IGZvciBTZXQvR2V0L1Vwc2lsb24vUGhpIHdvcmsgLSB0aGV5IGdyb2sgdGhlaXIKLSAgICAgICAg
Ly8gb3BlcmF0aW9ucyBkZWVwbHkgZW5vdWdoIHRoYXQgdGhleSBoYXZlIG5vIG5lZWQgdG8gY2hl
Y2sgdGhpcyBiaXQgLSBzbyB0aGlzIGNoZWF0IGlzCi0gICAgICAgIC8vIGZpbmUuCi0gICAgICAg
IHJlc3VsdC53cml0ZXNMb2NhbFN0YXRlID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0g
dHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ0NhbGw6CkBAIC02OTQsNiAr
NzE0LDcgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgY2FzZSBDaGVjazoKICAg
ICBjYXNlIEJpdHdpc2VDYXN0OgogICAgIGNhc2UgTmVnOgorICAgIGNhc2UgRGVwZW5kOgogICAg
ICAgICByZXR1cm4gVmFsdWVLZXkoa2luZCgpLCB0eXBlKCksIGNoaWxkKDApKTsKICAgICBjYXNl
IEFkZDoKICAgICBjYXNlIFN1YjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTAgQEAgcHVibGljOgogICAgIAogICAgIE9wY29k
ZSBvcGNvZGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkub3Bjb2RlKCk7IH0KICAgICAKKyAgICAv
LyBOb3RlIHRoYXQgdGhlIGtpbmQgaXMgbWVhbnQgdG8gYmUgaW1tdXRhYmxlLiBEbyB0aGlzIHdo
ZW4geW91IGtub3cgdGhhdCB0aGlzIGlzIHNhZmUuIEl0J3Mgbm90CisgICAgLy8gdXN1YWxseSBz
YWZlLgorICAgIHZvaWQgc2V0S2luZFVuc2FmZWx5KEtpbmQga2luZCkgeyBtX2tpbmQgPSBraW5k
OyB9CisgICAgCiAgICAgLy8gSXQncyBnb29kIHByYWN0aWNlIHRvIG1pcnJvciBLaW5kIG1ldGhv
ZHMgaGVyZSwgc28geW91IGNhbiBzYXkgdmFsdWUtPmlzQmxhaCgpCiAgICAgLy8gaW5zdGVhZCBv
ZiB2YWx1ZS0+a2luZCgpLmlzQmxhaCgpLgogICAgIGJvb2wgaXNDaGlsbCgpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKS5pc0NoaWxsKCk7IH0KQEAgLTEwNyw2ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gdmFsdWVzIHdpdGggSWRlbnRpdGllcyBvbiBib3R0b20gY29uc3RhbnRzLiBGb3IgdGhpcyBy
ZWFzb24sIHRoaXMgdGFrZXMgYSBjYWxsYmFjayB0aGF0IGlzCiAgICAgLy8gcmVzcG9uc2libGUg
Zm9yIGNyZWF0aW5nIGJvdHRvbXMuIFRoZXJlJ3MgYSB1dGlsaXR5IGZvciB0aGlzLCBzZWUgQjNC
b3R0b21Qcm92aWRlci5oLiBZb3UKICAgICAvLyBjYW4gYWxzbyBhY2Nlc3MgdGhhdCB1dGlsaXR5
IHVzaW5nIHJlcGxhY2VXaXRoQm90dG9tKEluc2VydGlvblNldCYsIHNpemVfdCkuCisgICAgLy8K
KyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEJvdHRvbVByb3ZpZGVyPgogICAgIHZvaWQgcmVwbGFjZVdpdGhCb3R0b20o
Y29uc3QgQm90dG9tUHJvdmlkZXImKTsKICAgICAKQEAgLTMyMSw2ICszMjcsNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIElUb0Y6CiAgICAgICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAg
IGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIERlcGVuZDoKICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShudW1BcmdzICE9IDEpKQogICAgICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJn
cyk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1dpZHRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0
aC5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dp
ZHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMzggQEAKIAogI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworVHlw
ZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgp
IHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgY2FzZSBXaWR0aDMy
OgorICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAg
IHJldHVybiBJbnQzMjsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBGbG9h
dDsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gVm9pZDsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHN3aXRjaCAoYmFu
aykgeworICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDY0OworICAgICAg
ICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIERvdWJsZTsKKyAgICAgICAgfQorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAg
ICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVm9pZDsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKIG5hbWVzcGFjZSBXVEYgewogCiB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6V2lkdGggd2lkdGgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYg
KzYyLDE4IEBAIGlubGluZSBXaWR0aCB3aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCitpbmxpbmUgV2lkdGggY2Fub25pY2FsV2lkdGgoV2lkdGgg
d2lkdGgpCit7CisgICAgcmV0dXJuIHN0ZDo6bWF4KFdpZHRoMzIsIHdpZHRoKTsKK30KKworaW5s
aW5lIFdpZHRoIGlzQ2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgpCit7CisgICAgcmV0dXJuIHdp
ZHRoID49IFdpZHRoMzI7Cit9CisKK1R5cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0
aCk7CisKIGlubGluZSBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0aChCYW5rIGJhbmspCiB7CiAgICAg
cmV0dXJuIGJhbmsgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6IFdpZHRoNjQ7CkBAIC05Myw2ICsx
MDUsMjAgQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yQnl0ZXModW5zaWduZWQgYnl0ZQogICAgIH0K
IH0KIAoraW5saW5lIHVpbnQ2NF90IG1hc2soV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3
aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDAw
MGZmbGx1OworICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAw
ZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwZmZm
ZmZmZmZsbHU7CisgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICByZXR1cm4gMHhmZmZmZmZmZmZm
ZmZmZmZmbGx1OworICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVz
cGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgdW5zaWduZWQgQXJnOjpqc0hh
c2goKSBjb25zdAogICAgIGNhc2UgUmVsQ29uZDoKICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgY2Fz
ZSBEb3VibGVDb25kOgorICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICBjYXNlIFdpZHRoQXJnOgog
ICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KTsKICAgICAg
ICAgYnJlYWs7CkBAIC0xODIsNiArMTgzLDkgQEAgdm9pZCBBcmc6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5wcmludChhc0Rv
dWJsZUNvbmRpdGlvbigpKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RhdHVzQ29uZDoK
KyAgICAgICAgb3V0LnByaW50KGFzU3RhdHVzQ29uZGl0aW9uKCkpOworICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBvdXQucHJpbnQocG9pbnRlckR1bXAoc3BlY2lh
bCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI0MSw2ICsyNDUsOSBAQCB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkRvdWJsZUNvbmQ6CiAg
ICAgICAgIG91dC5wcmludCgiRG91YmxlQ29uZCIpOwogICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBBcmc6OlN0YXR1c0NvbmQ6CisgICAgICAgIG91dC5wcmludCgiU3RhdHVzQ29uZCIpOworICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNwZWNpYWw6CiAgICAgICAgIG91dC5wcmludCgi
U3BlY2lhbCIpOwogICAgICAgICByZXR1cm47CkBAIC0yODUsNiArMjkyLDkgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpFYXJseURlZjoK
ICAgICAgICAgb3V0LnByaW50KCJFYXJseURlZiIpOwogICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBBcmc6OkVhcmx5WkRlZjoKKyAgICAgICAgb3V0LnByaW50KCJFYXJseVpEZWYiKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpTY3JhdGNoOgogICAgICAgICBvdXQucHJpbnQoIlNj
cmF0Y2giKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBcmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFyZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgUmVsQ29uZCwKICAgICAgICAgUmVzQ29uZCwKICAgICAgICAgRG91YmxlQ29uZCwKKyAg
ICAgICAgU3RhdHVzQ29uZCwKICAgICAgICAgU3BlY2lhbCwKICAgICAgICAgV2lkdGhBcmcKICAg
ICB9OwpAQCAtMTUxLDYgKzE1Miw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gYXMgVXNlIGhhcyB1
bmRlZmluZWQgYmVoYXZpb3I6IHRoZSB1c2UgbWF5IGhhcHBlbiBiZWZvcmUgdGhlIGRlZiwgb3Ig
aXQgbWF5IGhhcHBlbiBhZnRlcgogICAgICAgICAvLyBpdC4KICAgICAgICAgRWFybHlEZWYsCisg
ICAgICAgICAgICAKKyAgICAgICAgRWFybHlaRGVmLAogCiAgICAgICAgIC8vIFNvbWUgaW5zdHJ1
Y3Rpb25zIG5lZWQgYSBzY3JhdGNoIHJlZ2lzdGVyLiBXZSBtb2RlbCB0aGlzIGJ5IHNheWluZyB0
aGF0IHRoZSB0ZW1wb3JhcnkgaXMKICAgICAgICAgLy8gZGVmaW5lZCBlYXJseSBhbmQgdXNlZCBs
YXRlLiBUaGlzIHJvbGUgaW1wbGllcyB0aGF0LgpAQCAtMTg2LDYgKzE4OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2Ug
RWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjA2LDYg
KzIxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNj
cmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMjI4LDYgKzIzMyw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VB
ZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAg
ICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHJvbGU7CiAgICAgICAgIGNh
c2UgVXNlOgogICAgICAgICAgICAgcmV0dXJuIENvbGRVc2U7CkBAIC0yNTMsNiArMjU5LDcgQEAg
cHVibGljOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICBjYXNlIFNjcmF0Y2g6
CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMjc0LDYgKzI4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAg
ICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2Ug
RWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk0LDYgKzMwMiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAgIGNhc2UgRWFybHlE
ZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzE1LDYgKzMyNCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAg
IGNhc2UgU2NyYXRjaDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0z
MzAsNiArMzQwLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNh
c2UgTGF0ZVVzZToKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpE
ZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1OCw2ICszNjksNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBV
c2VaRGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTMzLDYgKzU0
NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgc3Rh
dGljIEFyZyBzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gY29uZGl0
aW9uKQorICAgIHsKKyAgICAgICAgQXJnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9
IFN0YXR1c0NvbmQ7CisgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IGNvbmRpdGlvbjsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBzdGF0aWMgQXJnIHNwZWNpYWwoQWlyOjpT
cGVjaWFsKiBzcGVjaWFsKQogICAgIHsKICAgICAgICAgQXJnIHJlc3VsdDsKQEAgLTY1OCwxMiAr
Njc4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBEb3VibGVDb25kOwog
ICAgIH0KIAorICAgIGJvb2wgaXNTdGF0dXNDb25kKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBraW5kKCkgPT0gU3RhdHVzQ29uZDsKKyAgICB9CisKICAgICBib29sIGlzQ29uZGl0aW9u
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2Ug
UmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6
CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUxLDYgKzg3Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6
CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAg
ICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTg3Miw2ICs4OTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVs
Q29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6Cisg
ICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBj
YXNlIFdpZHRoQXJnOgogICAgICAgICBjYXNlIEludmFsaWQ6CkBAIC0xMDU4LDYgKzEwODYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgog
ICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAg
ICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMTc3LDYgKzEyMDYsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbj4obV9vZmZzZXQpOwog
ICAgIH0KICAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uIGFzU3RhdHVz
Q29uZGl0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1N0YXR1c0NvbmQoKSk7
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0
aW9uPihtX29mZnNldCk7CisgICAgfQorICAgIAogICAgIC8vIFRlbGxzIHlvdSBpZiB0aGUgQXJn
IGlzIGludmVydGlibGUuIE9ubHkgY29uZGl0aW9uIGFyZ3VtZW50cyBhcmUgaW52ZXJ0aWJsZSwg
YW5kIGV2ZW4gZm9yIHRob3NlLCB0aGVyZQogICAgIC8vIGFyZSBhIGZldyBleGNlcHRpb25zIC0g
bm90YWJseSBPdmVyZmxvdyBhbmQgU2lnbmVkLgogICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29u
c3QKQEAgLTExODQsNiArMTIxOSw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChraW5kKCkp
IHsKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAg
ICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBj
YXNlIFJlc0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OmlzSW52ZXJ0
aWJsZShhc1Jlc3VsdENvbmRpdGlvbigpKTsKQEAgLTEyMDQsNiArMTI0MCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiByZXNDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNSZXN1
bHRDb25kaXRpb24oKSkpOwogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAgICAgICBy
ZXR1cm4gZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzRG91YmxlQ29uZGl0aW9u
KCkpKTsKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgorICAgICAgICAgICAgcmV0dXJuIHN0YXR1
c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1N0YXR1c0NvbmRpdGlvbigpKSk7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgcmV0dXJuIEFyZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw2ICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNl
CiAKIGNvbnN0IGNoYXIqIGNvbnN0IEJhc2ljQmxvY2s6OmR1bXBQcmVmaXggPSAiIyI7CiAKK3Zv
aWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhCYXNpY0Jsb2NrKiBibG9jaykKK3sKKyAgICBt
X3N1Y2Nlc3NvcnMucmVzaXplKDEpOworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRhcmdldDsKK30K
Kwordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YWtlbiwg
RnJlcXVlbnRlZEJsb2NrIG5vdFRha2VuKQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMik7
CisgICAgbV9zdWNjZXNzb3JzWzBdID0gdGFrZW47CisgICAgbV9zdWNjZXNzb3JzWzFdID0gbm90
VGFrZW47Cit9CisKIGJvb2wgQmFzaWNCbG9jazo6YWRkUHJlZGVjZXNzb3IoQmFzaWNCbG9jayog
YmxvY2spCiB7CiAgICAgcmV0dXJuIEIzOjphZGRQcmVkZWNlc3Nvcih0aGlzLCBibG9jayk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Js
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDkgQEAgcHVibGljOgogICAgIGNvbnN0
IFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7
IH0KICAgICBTdWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3Jz
OyB9CiAKKyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKTsKKyAgICB2b2lk
IHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrLCBGcmVxdWVudGVkQmxvY2spOworCiAgICAg
QmFzaWNCbG9jayogc3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQogICAgIEJhc2ljQmxvY2sqJiBzdWNjZXNzb3JC
bG9jayh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9
CiAgICAgU3VjY2Vzc29yQ29sbGVjdGlvbjxCYXNpY0Jsb2NrLCBTdWNjZXNzb3JMaXN0PiBzdWNj
ZXNzb3JCbG9ja3MoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9j
a0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRp
b25TZXQuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJCYXNpY0Jsb2Nr
LmgiCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworQmxvY2tJ
bnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KENvZGUgJmNvZGUpCisgICAgOiBHZW5lcmlj
QmxvY2tJbnNlcnRpb25TZXQoY29kZS5tX2Jsb2NrcykKK3sKK30KKworQmxvY2tJbnNlcnRpb25T
ZXQ6On5CbG9ja0luc2VydGlvblNldCgpCit7Cit9CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlv
blNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
QjNfSklUKQorCisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJc25lcnRpb25TZXQuaCIKKyNpbmNs
dWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBB
aXIgeworCitjbGFzcyBJbnNlcnRpb25TZXQ7CisKK3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0PEJhc2ljQmxvY2s+OjpCbG9ja0luc2VydGlvbiBCbG9ja0luc2VydGlvbjsKKworY2xh
c3MgQmxvY2tJbnNlcnRpb25TZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJh
c2ljQmxvY2s+IHsKK3B1YmxpYzoKKyAgICBCbG9ja0luc2VydGlvblNldChDb2RlJik7CisgICAg
fkJsb2NrSW5zZXJ0aW9uU2V0KCk7CisgICAgCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBldmVu
dHVhbGx5IGltcGxlbWVudCBCMzo6QmxvY2tJbnNlcnRpb25TZXQncyBzcGxpdEZvcndhcmQoKS4K
K307CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVy
YXRlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDggQEAgdm9pZCBw
cmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgICAgICBkYXRhTG9nKCJJbml0aWFs
IGFpcjpcbiIpOwogICAgICAgICBkYXRhTG9nKGNvZGUpOwogICAgIH0KKyAgICAKKyAgICBzaW1w
bGlmeUNGRyhjb2RlKTsKIAogICAgIGxvd2VyTWFjcm9zKGNvZGUpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxNS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNjYsOSArMTY2LDEyIEBAIHg4NjogQWRkRmxvYXQgVTpGOjMyLCBVRDpGOjMy
CiBTdWIzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRk
cgorICAgIHg4NjogSW1tLCBCYXNlSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwg
VG1wCisgICAgeDg2OiBCYXNlSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2
OiBUbXAsIEJhc2VJbmRleAogCiBhcm02NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIsIEQ6RzozMgog
ICAgIFRtcCwgVG1wLCBUbXAKQEAgLTE3Niw5ICsxNzksMTIgQEAgYXJtNjQ6IFN1YjMyIFU6Rzoz
MiwgVTpHOjMyLCBEOkc6MzIKIDY0OiBTdWI2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRt
cAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEJhc2VJbmRleAogICAgIEltbSwg
VG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEJhc2VJbmRleCwgVG1wCiAgICAgeDg2
OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgQmFzZUluZGV4CiAKIGFybTY0OiBTdWI2NCBVOkc6
NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMjA0LDkgKzIxMCwxMiBA
QCB4ODY6IFN1YkZsb2F0IFU6RjozMiwgVUQ6RjozMgogTmVnMzIgVVpEOkc6MzIKICAgICBUbXAK
ICAgICB4ODY6IEFkZHIKKyAgICB4ODY6IEJhc2VJbmRleAogCiA2NDogTmVnNjQgVUQ6Rzo2NAog
ICAgIFRtcAorICAgIHg4NjogQWRkcgorICAgIHg4NjogQmFzZUluZGV4CiAKIGFybTY0OiBOZWdh
dGVEb3VibGUgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcApAQCAtMzMwLDggKzMzOSwxMSBA
QCBBbmQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgVG1w
CiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgQmFzZUluZGV4CiAgICAgeDg2OiBB
ZGRyLCBUbXAKKyAgICB4ODY6IEJhc2VJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAg
ICB4ODY6IEltbSwgQmFzZUluZGV4CiAKIDY0OiBBbmQ2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0
CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMzM5LDcgKzM1MSwxMyBAQCBBbmQzMiBVOkc6MzIsIFVa
RDpHOjMyCiAKIHg4Nl82NDogQW5kNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKLSAg
ICB4ODY6IEltbSwgVG1wCisgICAgSW1tLCBUbXAKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEJh
c2VJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgQmFzZUluZGV4CisgICAgQWRkciwgVG1w
CisgICAgQmFzZUluZGV4LCBUbXAKIAogQW5kRG91YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6NjQK
ICAgICBUbXAsIFRtcCwgVG1wCkBAIC00NTksOCArNDc3LDExIEBAIE9yMzIgVTpHOjMyLCBVWkQ6
RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRy
CisgICAgeDg2OiBUbXAsIEJhc2VJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBC
YXNlSW5kZXgsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEJhc2VJbmRl
eAogCiA2NDogT3I2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApA
QCAtNDY5LDYgKzQ5MCwxMiBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBPcjY0IFU6Rzo2
NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAorICAgIHg4NjogSW1t
LCBBZGRyCisgICAgeDg2OiBJbW0sIEJhc2VJbmRleAorICAgIHg4NjogVG1wLCBBZGRyCisgICAg
eDg2OiBUbXAsIEJhc2VJbmRleAorICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBCYXNlSW5k
ZXgsIFRtcAogCiBYb3IzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIFRtcCwgVG1wLCBU
bXAKQEAgLTQ4MCw4ICs1MDcsMTEgQEAgWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwg
VG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAs
IEJhc2VJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBCYXNlSW5kZXgsIFRtcAog
ICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEJhc2VJbmRleAogCiA2NDogWG9yNjQg
VTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ5MCw2ICs1MjAs
MTEgQEAgWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogNjQ6IFhvcjY0IFU6Rzo2NCwgVUQ6Rzo2NAog
ICAgIFRtcCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgQmFzZUluZGV4
CisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEJhc2VJbmRleCwgVG1wCisgICAgeDg2OiBJ
bW0sIEFkZHIKKyAgICB4ODY6IEltbSwgQmFzZUluZGV4CiAgICAgeDg2OiBJbW0sIFRtcAogCiBh
cm02NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCkBAIC00OTgsMTMgKzUzMywxNSBAQCBhcm02NDog
Tm90MzIgVTpHOjMyLCBaRDpHOjMyCiB4ODY6IE5vdDMyIFVaRDpHOjMyCiAgICAgVG1wCiAgICAg
QWRkcgorICAgIEJhc2VJbmRleAogCiBhcm02NDogTm90NjQgVTpHOjY0LCBEOkc6NjQKICAgICBU
bXAsIFRtcAogCi14ODY6IE5vdDY0IFVEOkc6NjQKK3g4Nl82NDogTm90NjQgVUQ6Rzo2NAogICAg
IFRtcAogICAgIEFkZHIKKyAgICBCYXNlSW5kZXgKIAogYXJtNjQ6IEFic0RvdWJsZSBVOkY6NjQs
IEQ6Rjo2NAogICAgIFRtcCwgVG1wCkBAIC02NjgsMjggKzcwNSwzODAgQEAgTG9hZDggVTpHOjgs
IFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3E4IFU6Rzo4
LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBTdG9yZTggVTpHOjgs
IEQ6Rzo4CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgogICAgIHg4NjogSW1tLCBJbmRl
eAogICAgIHg4NjogSW1tLCBBZGRyCiAKK1N0b3JlUmVsOCBVOkc6OCwgRDpHOjgKKyAgICBUbXAs
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0s
IEFkZHIKKwogTG9hZDhTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwg
VG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpE
Okc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIExvYWQxNiBVOkc6MTYsIFpE
Okc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3ExNiBVOkc6MTYs
IFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIExvYWQxNlNpZ25lZEV4
dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAog
CitMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgorICAgIEFkZHIsIFRt
cAorICAgIEluZGV4LCBUbXAKKwogU3RvcmUxNiBVOkc6MTYsIEQ6RzoxNgogICAgIFRtcCwgSW5k
ZXgKICAgICBUbXAsIEFkZHIKIAorU3RvcmVBY3ExNiBVOkc6MTYsIEQ6RzoxNgorICAgIFRtcCwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKworTG9hZEFjcTMyIFU6RzozMiwgWkQ6RzozMgorICAgIFRt
cCwgVG1wCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCitTdG9yZVJlbDMyIFU6Rzoz
MiwgWkQ6RzozMgorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwg
QWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorCis2NDogTG9hZEFjcTY0IFU6Rzo2NCwgWkQ6Rzo2
NAorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCis2NDogU3Rv
cmVSZWw2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4Cisg
ICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKworIyBUaGUgZmlyc3Qgb3Bl
cmFuZCBpcyByYXguCit4ODY6IEF0b21pY1N0cm9uZ0NBUzggVTpHOjMyLCBVRDpHOjgsIFU6Rzo4
LCBVRDpHOjgsIFpEOkc6OAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisg
ICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogQXRvbWljU3Ryb25n
Q0FTMTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYsIFpEOkc6OAorICAgIFN0YXR1
c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJ
bmRleCwgVG1wCisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMzIgVTpHOjMyLCBVRDpHOjMyLCBVOkc6
MzIsIFVEOkc6MzIsIFpEOkc6OAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1w
CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4Nl82NDogQXRvbWlj
U3Ryb25nQ0FTNjQgVTpHOjMyLCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQsIFpEOkc6OAorICAg
IFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwg
VG1wLCBJbmRleCwgVG1wCisKK3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVRDpHOjgsIFU6Rzo4LCBV
RDpHOjgKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4Njog
QXRvbWljU3Ryb25nQ0FTMTYgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2CisgICAgVG1wKiwgVG1w
LCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzMyIFVE
Okc6MzIsIFU6RzozMiwgVUQ6RzozMgorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRt
cCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNTdHJvbmdDQVM2NCBVRDpHOjY0LCBVOkc6NjQsIFVE
Okc6NjQKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4Njog
QnJhbmNoQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIsIFVEOkc6OCwgVTpHOjgsIFVEOkc6OCAvYnJh
bmNoCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1w
KiwgVG1wLCBJbmRleAorCit4ODY6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2IFU6RzozMiwgVUQ6
RzoxNiwgVTpHOjMyLCBVRDpHOjE2IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAs
IEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRv
bWljU3Ryb25nQ0FTMzIgVTpHOjMyLCBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIgL2JyYW5jaAor
ICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRt
cCwgSW5kZXgKKworeDg2XzY0OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6
NjQsIFU6Rzo2NCwgVUQ6Rzo2NCAvYnJhbmNoCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBB
ZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDgg
VTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQWRkMTYgVTpHOjE2LCBVRDpHOjE2Cisg
ICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2OiBBdG9taWNBZGQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0
b21pY0FkZDY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViOCBVOkc6OCwg
VUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWIxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0s
IEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODY6IEF0b21pY1N1YjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljU3Vi
NjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBbmQ4IFU6Rzo4LCBVRDpHOjgK
KyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY0FuZDE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgor
ICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRv
bWljQW5kMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAor
ICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNBbmQ2NCBVOkc6
NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1t
LCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwor
eDg2OiBBdG9taWNPcjE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3IzMiBV
Okc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY09yNjQgVTpHOjY0LCBVRDpHOjY0
CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNYb3I4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21p
Y1hvcjE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9yMzIgVTpHOjMyLCBV
RDpHOjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYb3I2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJ
bW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IEF0b21pY05lZzggVUQ6Rzo4CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRv
bWljTmVnMTYgVUQ6RzoxNgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05lZzMy
IFVEOkc6MzIKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2XzY0OiBBdG9taWNOZWc2NCBVRDpH
OjY0CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTm90OCBVRDpHOjgKKyAgICBB
ZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QxNiBVRDpHOjE2CisgICAgQWRkcgorICAg
IEluZGV4CisKK3g4NjogQXRvbWljTm90MzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAor
Cit4ODZfNjQ6IEF0b21pY05vdDY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2
OiBBdG9taWNYY2hnQWRkOCBVRDpHOjgsIFVEOkc6OAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNYY2hnQWRkMTYgVUQ6RzoxNiwgVUQ6RzoxNgorICAgIFRtcCwg
QWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnQWRkMzIgVUQ6RzozMiwgVUQ6
RzozMgorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYY2hn
QWRkNjQgVUQ6Rzo2NCwgVUQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwor
eDg2OiBBdG9taWNYY2hnOCBVRDpHOjgsIFVEOkc6OAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNYY2hnMTYgVUQ6RzoxNiwgVUQ6RzoxNgorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnMzIgVUQ6RzozMiwgVUQ6RzozMgor
ICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYY2hnNjQgVUQ6
Rzo2NCwgVUQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworYXJtNjQ6IExv
YWRMaW5rOCBVOkc6OCwgWkQ6Rzo4CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCith
cm02NDogTG9hZExpbmtBY3E4IFU6Rzo4LCBaRDpHOjgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRl
eCwgVG1wCisKKyMgU3VwZXIgY29uZnVzaW5nIGZhY3Q6IHRoaXMgcmV0dXJucyAwIHRvIG1lYW4g
c3VjY2VzcywgMSB0byBtZWFuIGZhaWx1cmUuCithcm02NDogU3RvcmVDb25kOCBVOkc6OCwgRDpH
OjgsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCith
cm02NDogU3RvcmVDb25kUmVsOCBVOkc6OCwgRDpHOjgsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIs
IFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmsxNiBVOkc6MTYsIFpE
Okc6MTYKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0Fj
cTE2IFU6RzoxNiwgWkQ6RzoxNgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJt
NjQ6IFN0b3JlQ29uZDE2IFU6RzoxNiwgRDpHOjE2LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBU
bXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDE2IFU6RzoxNiwg
RDpHOjE2LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAK
KworYXJtNjQ6IExvYWRMaW5rMzIgVTpHOjMyLCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAg
SW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmtBY3EzMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBB
ZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQzMiBVOkc6MzIsIEQ6
RzozMiwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisK
K2FybTY0OiBTdG9yZUNvbmRSZWwzMiBVOkc6MzIsIEQ6RzozMiwgRVpEOkc6OAorICAgIFRtcCwg
QWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGluazY0IFU6Rzo2
NCwgWkQ6Rzo2NAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRM
aW5rQWNxNjQgVTpHOjY0LCBaRDpHOjY0CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAor
Cithcm02NDogU3RvcmVDb25kNjQgVTpHOjY0LCBEOkc6NjQsIEVaRDpHOjgKKyAgICBUbXAsIEFk
ZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsNjQgVTpH
OjY0LCBEOkc6NjQsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgs
IFRtcAorCithcm02NDogRGVwZW5kMzIgVTpHOjMyLCBEOkc6MzIKKyAgICBUbXAsIFRtcAorCith
cm02NDogRGVwZW5kNjQgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcAorCiBDb21wYXJlMzIg
VTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBU
bXAKICAgICBSZWxDb25kLCBUbXAsIEltbSwgVG1wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCShyZXZpc2lv
biAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxv
Y2tPcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzcsNiArMTc3LDEwIEBAIHZvaWQgb3B0
aW1pemVCbG9ja09yZGVyKENvZGUmIGNvZGUpCiAgICAgICAgIGNhc2UgQnJhbmNoU3ViNjQ6CiAg
ICAgICAgIGNhc2UgQnJhbmNoTmVnMzI6CiAgICAgICAgIGNhc2UgQnJhbmNoTmVnNjQ6CisgICAg
ICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTODoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9t
aWNTdHJvbmdDQVMxNjoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMjoKKyAg
ICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVM2NDoKICAgICAgICAgICAgIGlmIChjb2Rl
LmZpbmROZXh0QmxvY2soYmxvY2spID09IGJsb2NrLT5zdWNjZXNzb3JCbG9jaygwKSAmJiBicmFu
Y2guYXJnc1swXS5pc0ludmVydGlibGUoKSkgewogICAgICAgICAgICAgICAgIHN0ZDo6c3dhcChi
bG9jay0+c3VjY2Vzc29yKDApLCBibG9jay0+c3VjY2Vzc29yKDEpKTsKICAgICAgICAgICAgICAg
ICBicmFuY2guYXJnc1swXSA9IGJyYW5jaC5hcmdzWzBdLmludmVydGVkKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3Bw
CShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBh
ZEludGVyZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgdm9pZCBw
YWRJbnRlcmZlcmVuY2UoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFy
Zzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KHJvbGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAg
ICAgaGFzRWFybHlEZWYgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlVXNlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNp
b24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5
dGhpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBzcGlsbEV2
ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVD
b2xkVXNlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNl
IEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDog
Y29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKGJhbmspKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFzZXRCZWZvcmUuZ2V0KHJlZykgJiYgIXNldEFmdGVyLmdldChyZWcpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVf
Z2VuZXJhdG9yLnJiCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNCArNTEsNDkgQEAgY2xhc3MgQXJn
CiAgICAgICAgIEBiYW5rID0gYmFuawogICAgICAgICBAd2lkdGggPSB3aWR0aAogICAgIGVuZAot
Ci0gICAgZGVmIHdpZHRoQ29kZQorICAgIAorICAgIGRlZiBzZWxmLndpZHRoQ29kZSh3aWR0aCkK
ICAgICAgICAgaWYgd2lkdGggPT0gIlB0ciIKICAgICAgICAgICAgICJwb2ludGVyV2lkdGgoKSIK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgIldpZHRoI3t3aWR0aH0iCiAgICAgICAgIGVuZAog
ICAgIGVuZAorCisgICAgZGVmIHdpZHRoQ29kZQorICAgICAgICBBcmcud2lkdGhDb2RlKHdpZHRo
KQorICAgIGVuZAorICAgIAorICAgIGRlZiBzZWxmLnJvbGVDb2RlKHJvbGUpCisgICAgICAgIGNh
c2Ugcm9sZQorICAgICAgICB3aGVuICJVIgorICAgICAgICAgICAgIlVzZSIKKyAgICAgICAgd2hl
biAiRCIKKyAgICAgICAgICAgICJEZWYiCisgICAgICAgIHdoZW4gIlpEIgorICAgICAgICAgICAg
IlpEZWYiCisgICAgICAgIHdoZW4gIlVEIgorICAgICAgICAgICAgIlVzZURlZiIKKyAgICAgICAg
d2hlbiAiVVpEIgorICAgICAgICAgICAgIlVzZVpEZWYiCisgICAgICAgIHdoZW4gIlVBIgorICAg
ICAgICAgICAgIlVzZUFkZHIiCisgICAgICAgIHdoZW4gIlMiCisgICAgICAgICAgICAiU2NyYXRj
aCIKKyAgICAgICAgd2hlbiAiRUQiCisgICAgICAgICAgICAiRWFybHlEZWYiCisgICAgICAgIHdo
ZW4gIkVaRCIKKyAgICAgICAgICAgICJFYXJseVpEZWYiCisgICAgICAgIHdoZW4gIkxVIgorICAg
ICAgICAgICAgIkxhdGVVc2UiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisgICAg
ICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiByb2xlQ29kZQorICAgICAgICBBcmcucm9s
ZUNvZGUocm9sZSkKKyAgICBlbmQKIGVuZAogCiBjbGFzcyBPdmVybG9hZApAQCAtMTgyLDcgKzIx
Nyw3IEBAIGRlZiBsZXgoc3RyLCBmaWxlTmFtZSkKIGVuZAogCiBkZWYgaXNSb2xlKHRva2VuKQot
ICAgIHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEpfChTKSlcWi8KKyAg
ICB0b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUyl8KEVEKXwoRVpE
KXwoTFUpKVxaLwogZW5kCiAKIGRlZiBpc0dGKHRva2VuKQpAQCAtMTkwLDcgKzIyNSw3IEBAIGRl
ZiBpc0dGKHRva2VuKQogZW5kCiAKIGRlZiBpc0tpbmQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xB
KChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8KEFkZHIpfChJbmRleCl8
KFJlbENvbmQpfChSZXNDb25kKXwoRG91YmxlQ29uZCkpXFovCisgICAgdG9rZW4gPX4gL1xBKChU
bXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8KEFkZHIpfChJbmRleCl8KFJl
bENvbmQpfChSZXNDb25kKXwoRG91YmxlQ29uZCl8KFN0YXR1c0NvbmQpKVxaLwogZW5kCiAKIGRl
ZiBpc0FyY2godG9rZW4pCkBAIC0yNjQsNyArMjk5LDcgQEAgY2xhc3MgUGFyc2VyCiAKICAgICBk
ZWYgY29uc3VtZUtpbmQKICAgICAgICAgcmVzdWx0ID0gdG9rZW4uc3RyaW5nCi0gICAgICAgIHBh
cnNlRXJyb3IoIkV4cGVjdGVkIGtpbmQgKEltbSwgQmlnSW1tLCBCaXRJbW0sIEJpdEltbTY0LCBU
bXAsIEFkZHIsIEluZGV4LCBSZWxDb25kLCBSZXNDb25kLCBvciBEb3VibGVDb25kKSIpIHVubGVz
cyBpc0tpbmQocmVzdWx0KQorICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBraW5kIChJbW0s
IEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVz
Q29uZCwgRG91YmxlQ29uZCwgb3IgU3RhdHVzQ29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkK
ICAgICAgICAgYWR2YW5jZQogICAgICAgICByZXN1bHQKICAgICBlbmQKQEAgLTYzNCwyOCArNjY5
LDcgQEAgd3JpdGVIKCJPcGNvZGVVdGlscyIpIHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
b3ZlcmxvYWQuc2lnbmF0dXJlLmVhY2hfd2l0aF9pbmRleCB7CiAgICAgICAgICAgICAgICAgfCBh
cmcsIGluZGV4IHwKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByb2xlID0gbmls
Ci0gICAgICAgICAgICAgICAgY2FzZSBhcmcucm9sZQotICAgICAgICAgICAgICAgIHdoZW4gIlUi
Ci0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAgICAgICAgIHdoZW4g
IkQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiRGVmIgotICAgICAgICAgICAgICAgIHdo
ZW4gIlpEIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlpEZWYiCi0gICAgICAgICAgICAg
ICAgd2hlbiAiVUQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgotICAgICAg
ICAgICAgICAgIHdoZW4gIlVaRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VaRGVm
IgotICAgICAgICAgICAgICAgIHdoZW4gIlVBIgotICAgICAgICAgICAgICAgICAgICByb2xlID0g
IlVzZUFkZHIiCi0gICAgICAgICAgICAgICAgd2hlbiAiUyIKLSAgICAgICAgICAgICAgICAgICAg
cm9sZSA9ICJTY3JhdGNoIgotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgcmFpc2UKLSAgICAgICAgICAgICAgICBlbmQKLQotICAgICAgICAgICAgICAgIG91dHAucHV0
cyAiZnVuY3RvcihhcmdzWyN7aW5kZXh9XSwgQXJnOjoje3JvbGV9LCAje2FyZy5iYW5rfVAsICN7
YXJnLndpZHRoQ29kZX0pOyIKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJn
c1sje2luZGV4fV0sIEFyZzo6I3thcmcucm9sZUNvZGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndp
ZHRoQ29kZX0pOyIKICAgICAgICAgICAgIH0KICAgICAgICAgZW5kCiAgICAgfQpAQCAtODE5LDYg
KzgzMyw3IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgIHdo
ZW4gIlJlbENvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiUmVzQ29uZCIKICAgICAgICAgICAg
ICAgICB3aGVuICJEb3VibGVDb25kIgorICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQi
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByYWlzZSAiVW5leHBl
Y3RlZCBraW5kOiAje2tpbmQubmFtZX0iCiAgICAgICAgICAgICAgICAgZW5kCkBAIC0xMTA1LDYg
KzExMjAsOCBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICAg
ICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNSZXN1bHRDb25kaXRpb24oKSIKICAgICAg
ICAgICAgICAgICB3aGVuICJEb3VibGVDb25kIgogICAgICAgICAgICAgICAgICAgICBvdXRwLnBy
aW50ICJhcmdzWyN7aW5kZXh9XS5hc0RvdWJsZUNvbmRpdGlvbigpIgorICAgICAgICAgICAgICAg
IHdoZW4gIlN0YXR1c0NvbmQiCisgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3Nb
I3tpbmRleH1dLmFzU3RhdHVzQ29uZGl0aW9uKCkiCiAgICAgICAgICAgICAgICAgZW5kCiAgICAg
ICAgICAgICB9CiAKQEAgLTExNDgsMjcgKzExNjUsNyBAQCBGaWxlLm9wZW4oIkpTQWlyX29wY29k
ZS5qcyIsICJ3IikgewogICAgICAgICAgICAgICAgIG91dHAucHV0cyAiY2FzZSAje292ZXJsb2Fk
LnNpZ25hdHVyZS5sZW5ndGh9OiIgaWYgbmVlZE92ZXJsb2FkU3dpdGNoCiAgICAgICAgICAgICAg
ICAgb3ZlcmxvYWQuc2lnbmF0dXJlLmVhY2hfd2l0aF9pbmRleCB7CiAgICAgICAgICAgICAgICAg
ICAgIHwgYXJnLCBpbmRleCB8Ci0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSBuaWwKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBhcmcucm9sZQotICAgICAgICAgICAgICAgICAgICB3aGVuICJV
IgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2UiCi0gICAgICAgICAgICAgICAg
ICAgIHdoZW4gIkQiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIkRlZiIKLSAgICAg
ICAgICAgICAgICAgICAgd2hlbiAiWkQiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0g
IlpEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlVEIgotICAgICAgICAgICAgICAgICAg
ICAgICAgcm9sZSA9ICJVc2VEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlVaRCIKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAgICAgICAgICAgICAgICAg
ICAgd2hlbiAiVUEiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZUFkZHIiCi0g
ICAgICAgICAgICAgICAgICAgIHdoZW4gIlMiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xl
ID0gIlNjcmF0Y2giCi0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpbnN0LnZpc2l0QXJnKCN7aW5kZXh9
LCBmdW5jLCBBcmcuI3tyb2xlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aH0pOyIKKyAgICAg
ICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpbnN0LnZpc2l0QXJnKCN7aW5kZXh9LCBmdW5jLCBB
cmcuI3thcmcucm9sZUNvZGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRofSk7IgogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImJyZWFrOyIKICAgICAgICAg
ICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302963</attachid>
            <date>2017-02-28 12:08:11 -0800</date>
            <delta_ts>2017-02-28 12:37:23 -0800</delta_ts>
            <desc>it&apos;s starting to compile</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>244163</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMiBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAq
LzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhp
c1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAg
LTIyNDMsOCArMjI0OSw2IEBACiAJCURDMjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0
MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0
MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIw
QzFEMzQzNzcwMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBD
ZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pT
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0
QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhE
MUQwMEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1
bXBBc0pTLmggKi87IH07CiAJCURDNjA1QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERD
NjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2
MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJREM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNF
MjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgKi87IH07CkBAIC0yNzY0LDYgKzI3Njgs
MTIgQEAKIAkJMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNX
aWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNw
cDsgcGF0aCA9IGIzL0IzV2lkdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1Zh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFs
dWUuY3BwOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIz
L0IzQXRvbWljVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUx
RTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBh
dGggPSBiMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25T
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNl
cnRpb25TZXQuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFp
ckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFp
ckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5
IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQzE5ODMyRDM0MDA3RDRCMTkg
LyogRGVidWdnZXJTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWJ1
Z2dlclNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERGMTk4MzJE
OTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlw
ZVByb2ZpbGVyTG9nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3NzgsOCAr
NDc4OCw2IEBACiAJCURDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElDU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREMzRDJCMDkxRDM0MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBDZWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCURDM0QyQjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwQ2VsbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1w
QXNKUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJEdW1wQXNK
Uy5jcHA7IHBhdGggPSBiMy9haXIvQWlyRHVtcEFzSlMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRHVtcEFzSlMuaDsgcGF0aCA9IGIzL2Fp
ci9BaXJEdW1wQXNKUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYwNUI1OTFD
RTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckV2ZW50LmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2Zp
bGVyRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYwNUI1QTFDRTI2
RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBQcm9maWxlckV2ZW50Lmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlclVJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQ
cm9maWxlclVJRC5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlclVJRC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjkyLDYgKzUzMDAsOCBAQAogCQkJCTBGRUM4NEIzMUJE
QUNEODgwMDgwRkY3NCAvKiBhaXIgKi8sCiAJCQkJMEZFQzg0QjQxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzQXJndW1lbnRSZWdWYWx1ZS5jcHAgKi8sCiAJCQkJMEZFQzg0QjUxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzQXJndW1lbnRSZWdWYWx1ZS5oICovLAorCQkJCTBGMkM2M0IzMUU2MzQzRTgwMEMxMzgz
OSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLywKKwkJCQkwRjJDNjNCNDFFNjM0M0U4MDBDMTM4Mzkg
LyogQjNBdG9taWNWYWx1ZS5oICovLAogCQkJCTBGMkM2M0FCMUU2MEFFM0MwMEMxMzgzOSAvKiBC
M0JhbmsuY3BwICovLAogCQkJCTBGMkM2M0FDMUU2MEFFM0MwMEMxMzgzOSAvKiBCM0JhbmsuaCAq
LywKIAkJCQkwRkVDODRCNjFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrLmNwcCAqLywK
QEAgLTUzNTQsNiArNTM2NCw3IEBACiAJCQkJMEZFQzg0Q0QxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
RnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg0Q0UxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
R2VuZXJhdGUuY3BwICovLAogCQkJCTBGRUM4NENGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVy
YXRlLmggKi8sCisJCQkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZFQzg0RDAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2Vu
ZXJpY0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NUJGMUJFMTY3QTAwMDgwRkY3NCAv
KiBCM0hlYXBSYW5nZS5jcHAgKi8sCiAJCQkJMEZFQzg1QzAxQkUxNjdBMDAwODBGRjc0IC8qIEIz
SGVhcFJhbmdlLmggKi8sCkBAIC01NDY5LDYgKzU0ODAsOCBAQAogCQkJCTBGNjRFQUYyMUM0RUNE
MDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggKi8sCiAJCQkJMEZFQzg1NEMxQkRBQ0RDNzAw
ODBGRjc0IC8qIEFpckJhc2ljQmxvY2suY3BwICovLAogCQkJCTBGRUM4NTREMUJEQUNEQzcwMDgw
RkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmggKi8sCisJCQkJMEYyQzYzQjkxRTYzNDQwODAwQzEzODM5
IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLywKKwkJCQkwRjJDNjNCQTFFNjM0NDA4MDBD
MTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkIzODc4QjFCRkJDNDRE
MDBFM0FCMUUgLyogQWlyQmxvY2tXb3JrbGlzdC5oICovLAogCQkJCTBGNjE4MzIwMUM0NUJGMDcw
MDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTBGNjE4MzIxMUM0
NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKQEAgLTU0ODAsOCAr
NTQ5Myw2IEBACiAJCQkJMEYxMEYxQTIxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oICov
LAogCQkJCTc5QUJCMTdCMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuY3BwICov
LAogCQkJCTc5QUJCMTdDMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuaCAqLywK
LQkJCQlEQzQ1NEI4QTFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovLAotCQkJ
CURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oICovLAogCQkJCTBGNDU3
MDM2MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgKi8sCiAJCQkJ
MEY0NTcwMzcxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi8sCiAJ
CQkJMEY2MTgzMjMxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVtaXRTaHVmZmxlLmNwcCAqLywKQEAg
LTczMjYsNiArNzMzNyw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTBGMUZFNTFCMTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oICovLAorCQkJCTBG
MkM2M0JGMUU2NjBFQTUwMEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCAqLywK
IAkJCQk4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
ICovLAogCQkJCTBGMzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UuaCAqLywKIAkJCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRB
c3NlbWJsZXIuaCAqLywKQEAgLTczNTQsOCArNzM2Niw4IEBACiAJCQkJODZDNTY4REUxMUEyMTNF
RTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovLAogCQkJCUZFNjhDNjM1MUI5MERE
RDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovLAogCQkJCUZFNjhDNjM2
MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLywKLQkJCQk4NjAx
NjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQk4NjAx
NjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLywKKwkJCQk4
NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQlB
N0E0QUUwNzE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwICov
LAogCQkJCTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oICovLAogCQkJCTY1ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbC5oICovLApAQCAtNzk0Myw3ICs3OTU1LDYgQEAKIAkJCQkwRkVDODU3NDFC
REFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkVDODU3NjFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJREM0NTRCOEQxRDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4MzJEMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0
U2h1ZmZsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0REUxQ0YxQzRDMUI1NDAwNEQ2QzExIC8q
IEFpckZpeE9idmlvdXNTcGlsbHMuaCBpbiBIZWFkZXJzICovLApAQCAtNzk1Niw2ICs3OTY3LDcg
QEAKIAkJCQkwRkVDODU4MDFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzg1ODExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkRGNjdENzFEOURDNDQyMDAxQjk4MjUgLyogQWlyS2luZC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQkMxRTYzNDQwQzAwQzEzODM5IC8qIEFpckJsb2NrSW5z
ZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0RDQzODFDMDAxNjFDMDA4MUQ2NjMg
LyogQWlyTGl2ZW5lc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTM0QzFBMUM0QjM5QUUwMDAz
QTUxMiAvKiBBaXJMb2dSZWdpc3RlclByZXNzdXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYx
ODMyRjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmggaW4gSGVhZGVy
cyAqLywKQEAgLTgwNDcsNiArODA1OSw3IEBACiAJCQkJNDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4
IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVCMzFCREVE
OTU3MDA4MEZGNzQgLyogQjNDb25zdFB0clZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMz
OERGNjFCRTkzRDU1MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjJDNjNCODFFNjM0M0Y3MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRp
b25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4RTBFMUJGMDI3NkMwMDEzQzg4RiAvKiBC
M0RhdGFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzRkNGQzFDMTYyNUJFMDAzMjNG
NjcgLyogQjNEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCOEFEOTFDNEVEREEy
MDA5NjkwNTIgLyogQjNEdXBsaWNhdGVUYWlscy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzY2LDYg
KzgzNzksNyBAQAogCQkJCTBGMzkyQzhBMUI0NjE4ODQwMDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6
ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUzIC8qIERGR09T
UkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVFMTcxNzhF
NzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMkM2M0I3MUU2MzQzRUQwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjYyMzc5ODFBRTQ1Q0E3MDBENDAyRUEgLyogREZHUGhhbnRvbUluc2VydGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1QzE0RUY5MEFGMDBDNzI1MzIgLyogREZH
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VCMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdQaGlDaGlsZHJlbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzkyLDYgKzk4MDYsNyBAQAogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTBGRkE1NDk3
MTZCODgzNTAwMEIzQTk4MiAvKiBBNjRET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
MkM2M0MwMUU2NjBFQTcwMEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUFENDkzN0MzMUREQkU2MTQwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVs
ZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkg
LyogQWJzdHJhY3RQQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzcwQjRGNTFCRjI2MjAyMDA1
QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTk4MDIsNyArOTgxNyw2IEBACiAJCQkJMEZFQzg1NzMxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckNDYWxsU3BlY2lhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVD
ODU3NTFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjYxODMyQjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCURDNDU0QjhDMUQwMEU4MjIwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjQ1NzAzODFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENv
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MTgzMkMxQzQ1QkYwNzAwNzI0NTBCIC8qIEFp
ckVtaXRTaHVmZmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNERFMUNFMUM0QzFCNTQwMDRE
NkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAyNDgs
NiArMTAyNjIsNyBAQAogCQkJCTlFNzI5NDA3MTkwRjAxQTUwMDFBOTFCNSAvKiBJbml0aWFsaXpl
VGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTNFNUI3MTg1QjhCRDMwMDdFOTVB
RCAvKiBJbmplY3RlZFNjcmlwdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTE0QjJDMjE4NUE2
ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGMkM2M0I2MUU2MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1OEUzNTkxMTg2MERFQ0YwMDFGMjRGRSAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1Q0ExODVGOTYyNDAwN0U5NUFEIC8qIEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTg0MEUyMDE4N0I3Qjg2
MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MDI2Niw2ICsxMDI4MSw3IEBACiAJCQkJRTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMyNDM4
QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1MEU0QjYxMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQkIxRTYzNDQwQTAwQzEzODM5IC8q
IEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NTE2NUQyMUJE
RjBCOTgwMDNCNzVDMSAvKiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0YxMDdFQzM3NjAwNDI3QTQ4IC8qIEludGVy
bmFsRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIiAvLyBIYXZlIHRvIGJyZWFrIHdpdGgg
c3R5bGUgYmVjYXVzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggaXMgYSBzaGFkeSBoZWFkZXIu
CisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN0
YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAg
ICBjYXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdWNjZXNzOgorICAgICAgICBvdXQu
cHJpbnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlckJhc2U6OkZhaWx1cmU6CisgICAgICAgIG91dC5wcmludCgiRmFpbHVyZSIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTQt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1JhbmRvbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDggKzUxLDI4
IEBAIG5hbWVzcGFjZSBERkcgewogc3RydWN0IE9TUkV4aXQ7CiB9CiAKK2NsYXNzIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXR1c0NvbmRpdGlvbiB7
CisgICAgICAgIFN1Y2Nlc3MsCisgICAgICAgIEZhaWx1cmUKKyAgICB9OworICAgIAorICAgIHN0
YXRpYyBTdGF0dXNDb25kaXRpb24gaW52ZXJ0KFN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisg
ICAgeworICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbikgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6
CisgICAgICAgICAgICByZXR1cm4gRmFpbHVyZTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAg
ICAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgfQorfTsKKwog
dGVtcGxhdGUgPGNsYXNzIEFzc2VtYmxlclR5cGUsIGNsYXNzIE1hY3JvQXNzZW1ibGVyVHlwZT4K
LWNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgeworY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlciA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZSB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1i
bGVyVHlwZT4gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlclR5cGU7CiAgICAgdHlwZWRlZiBBc3NlbWJs
ZXJUeXBlIEFzc2VtYmxlclR5cGVfVDsKQEAgLTExMDgsMyArMTEyOSwxNiBAQCBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxF
UikKIAogfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCituYW1l
c3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdGF0dXND
b25kaXRpb24pOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBU1NF
TUJMRVIpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEz
Niw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMy
OyAvLyBUaGlzIGlzIHN1cGVyIHVzZWZ1bCBmb3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8v
IFV0aWxpdGllcyB1c2VkIGJ5IHRoZSBERkcgSklULgorICAgIHVzaW5nIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXJCYXNlOjppbnZlcnQ7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZl
cnQ7CiAgICAgCiAgICAgc3RhdGljIERvdWJsZUNvbmRpdGlvbiBpbnZlcnQoRG91YmxlQ29uZGl0
aW9uIGNvbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNTEsMTYgKzI1MSw3MSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFJl
Z2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
bmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBh
bmQxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwg
ZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX3JtKHNyYywgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9
CisKICAgICB2b2lkIGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsK
ICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2Us
IHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1i
bGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwog
ICAgIH0KIAorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsK
KyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8aW50MTZf
dD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisK
KyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0u
bV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFk
ZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kOChUcnVzdGVkSW1tMzIgaW1tLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0YXRp
Y19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0PGlu
dDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFJlZ2lzdGVy
SUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
aWYgKG9wMSA9PSBvcDIpCkBAIC00NTYsNiArNTExLDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOwogICAgIH0KIAor
ICAgIHZvaWQgbmVnMzIoQmFzZUluZGV4IHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5uZWdsX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRleCwg
c3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihBZGRyZXNzIHNyY0Rlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rl
c3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihCYXNlSW5kZXggc3JjRGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3dfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5i
YXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5l
ZzgoQWRkcmVzcyBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnYl9tKHNy
Y0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnOChCYXNl
SW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2JfbShzcmNEZXN0
Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsKKyAg
ICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNDcxLDE2ICs1
NTEsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5vcndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAg
ICB9CisKKyAgICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoUmVnaXN0
ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9y
bShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I4KFJl
Z2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2Nh
bGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQsIHNy
Yy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBv
cjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLm9ybF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKGltbS5tX3ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGludDE2
X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQor
CisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5t
X3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX2ltKHN0YXRpY19j
YXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+
KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgb3Ax
LCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9w
MSA9PSBvcDIpCkBAIC02NTQsMTYgKzc4OSw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwog
ICAgIH0KIAorICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19pbShzdGF0aWNfY2FzdDxpbnQxNl90
PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKwor
ICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFs
dWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1
YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBz
dWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0PGlu
dDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKEFkZHJlc3Mg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMyKEJh
c2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0
KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWIxNihSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9ybShzcmMsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJ
RCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9y
bShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKworICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0
LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3ViOChS
ZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5z
Y2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9ycihzcmMsIGRlc3QpOwpA
QCAtNjc3LDYgKzg2Nyw1MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3Js
X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2
b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAg
ICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90bF9t
KGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpOworICAg
ICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3R3
X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwor
ICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3Qp
CisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5t
X3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9h
c3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3J3X2ltKGlt
bS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0
KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5t
X3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9h
c3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwg
ZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGlu
dDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5p
bmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQpA
QCAtNjkwLDExICs5MjQsNDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JsX3Jt
KHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihS
ZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5z
Y2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEJh
c2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwor
ICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihBZGRy
ZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9y
bF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZvaWQg
eG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2Nh
bGUsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBS
ZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9wMSA9
PSBvcDIpCkBAIC03NDEsNiArMTAwNSwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG5vdDMy
KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgbm90MTYoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90
d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90MTYoQmFz
ZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBub3Q4KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdGJfbShk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDgoQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzcXJ0
RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5zcXJ0c2RfcnIoc3JjLCBkc3QpOwpAQCAtMjc0MywxMjEgKzMwMzIsNzg3
IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwogICAgICAgICBtX2Fzc2Vt
Ymxlci5vcmxfaW0oMCwgMCwgWDg2UmVnaXN0ZXJzOjplc3ApOwogICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVn
aXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3
VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CiAKLSAgICAv
LyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwg
c3RvcmVzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KLSAgICB2b2lkIHN0b3JlRmVuY2UoKQor
ICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJl
c3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdi
X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1l
YW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQncyBhIG5v
LW9wIG9uIHg4Ni4KLSAgICB2b2lkIGxvYWRGZW5jZSgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdD
QVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkK
ICAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
cmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxh
Y2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRp
b25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewotICAg
ICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1
dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAg
ICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9Ci0gICAgCi0g
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKworICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjptYXhKdW1w
UmVwbGFjZW1lbnRTaXplKCk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRp
YyBwdHJkaWZmX3QgcGF0Y2hhYmxlSnVtcFNpemUoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
MzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OnBhdGNoYWJsZUp1bXBTaXplKCk7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0
LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAgIH0K
IAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkKKyAgICB2
b2lkIGF0b21pY1N0cm9uZ0NBUzgoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgaWYgKHNfc3Nl
NF8xQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpCi0gICAgICAgICAg
ICB1cGRhdGVFYXgxRWN4RmxhZ3MoKTsKLSAgICAgICAgcmV0dXJuIHNfc3NlNF8xQ2hlY2tTdGF0
ZSA9PSBDUFVJRENoZWNrU3RhdGU6OlNldDsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVj
dGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzQVZYKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCiAg
ICAgewotICAgICAgICAvLyBBVlggc3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVzc2lvbnMg
YW5kIHRob3NlIHJlZ3Jlc3Npb25zIGNhbiBiZSBtYXNzaXZlLgotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9h
c3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCB1cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYo
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgaW50IGZsYWdzID0gMDsKLSNpZiBDT01QSUxFUihN
U1ZDKQotICAgICAgICBpbnQgY3B1SW5mb1s0XTsKLSAgICAgICAgX19jcHVpZChjcHVJbmZvLCAw
eDEpOwotICAgICAgICBmbGFncyA9IGNwdUluZm9bMl07Ci0jZWxpZiBDT01QSUxFUihHQ0NfT1Jf
Q0xBTkcpCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgYXNtICgKLSAgICAgICAgICAgICJtb3Zs
ICQweDEsICUlZWF4OyIKLSAgICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAgICAibW92bCAl
JWVjeCwgJTA7IgotICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgIDoKLSAg
ICAgICAgICAgIDogIiVlYXgiLCAiJWVieCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICAp
OwotI2Vsc2UKLSAgICAgICAgYXNtICgKLSAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIK
LSAgICAgICAgICAgICJwdXNobCAlJWVieDsiCi0gICAgICAgICAgICAiY3B1aWQ7IgotICAgICAg
ICAgICAgInBvcGwgJSVlYng7IgotICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAg
ICAgICAgIDogIj1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4
IiwgIiVlY3giLCAiJWVkeCIKLSAgICAgICAgICAgICk7Ci0jZW5kaWYKLSNlbmRpZiAvLyBDT01Q
SUxFUihHQ0NfT1JfQ0xBTkcpCi0gICAgICAgIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9IChmbGFncyAm
ICgxIDw8IDE5KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xl
YXI7Ci0gICAgICAgIHNfYXZ4Q2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDI4KSkgPyBDUFVJ
RENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3df
cm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9CiAK
LSNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKLSAgICB2b2lkIHByb2JlKFByb2JlRnVuY3Rpb24sIHZv
aWQqIGFyZzEsIHZvaWQqIGFyZzIpOwotI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQorICAg
IHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9t
aWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3
X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgWDg2QXNzZW1i
bGVyOjpDb25kaXRpb24geDg2Q29uZGl0aW9uKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCk7CisgICAgICAgIGF0
b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9
CiAKLSAgICBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24oUmVzdWx0Q29uZGl0
aW9uIGNvbmQpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29u
ZCk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9h
c3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICB2b2lk
IHNldDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcykKICAgICB7Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAgLy8gT24gMzItYml0IHg4NiB3ZSBj
YW4gb25seSBzZXQgdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOwotICAgICAgICAvLyBlc3AuLmVkaSBh
cmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQotICAgICAgICBpZiAoZGVzdCA+PSA0KSB7
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ycihkZXN0LCBYODZSZWdpc3RlcnM6OmVh
eCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zZXRDQ19yKGNvbmQsIFg4NlJlZ2lzdGVyczo6
ZWF4KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnpibF9ycihYODZSZWdpc3RlcnM6OmVh
eCwgWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcnIo
ZGVzdCwgWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0jZW5kaWYKLSAgICAgICAgbV9hc3NlbWJsZXIuc2V0Q0Nfcihjb25kLCBkZXN0KTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIubW92emJsX3JyKGRlc3QsIGRlc3QpOworICAgICAgICByZXR1cm4gYnJh
bmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
IH0pOwogICAgIH0KIAotICAgIHZvaWQgY21vdihYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewotI2lm
IENQVShYODZfNjQpCi0gICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZxX3JyKGNvbmQsIHNyYywgZGVz
dCk7Ci0jZWxzZQotICAgICAgICBtX2Fzc2VtYmxlci5jbW92bF9ycihjb25kLCBzcmMsIGRlc3Qp
OwotI2VuZGlmCisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNMWkNOVCgpCisgICAgSnVt
cCBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBl
Y3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5j
aEF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRB
bmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9
CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTOChTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzgoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1Zh
bHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzE2
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5l
d1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NB
UzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQp
CisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZFJlc3Vs
dCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNX
ZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9t
aWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICBKdW1w
IGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0
LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFr
Q0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBu
ZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FT
MzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVy
biBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFs
dWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzMyKFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2hBdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhZGQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQWRkOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJ
RCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhZGQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQWRkMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQz
MihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHN1YjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHN1YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNTdWI4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChyZWcsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFRydXN0ZWRJbW0zMiBpbW0s
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFJlZ2lzdGVy
SUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNTdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Vi
MzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWIzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIg
aW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFuZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNBbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMy
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoUmVnaXN0
ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihUcnVzdGVk
SW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBv
cjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBvcjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHhvcjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNY
b3I4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYb3I4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Ix
NihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNYb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHhvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WG9yMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzgo
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnOChh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2KGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzE2KEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWcxNihh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMyKGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzMyKEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWczMihh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90OChhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MTYoQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDE2KGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MzIoQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDMyKGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCBy
ZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54
YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhhZGR3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0Fk
ZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRsX3JtKHJlZywgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNo
Z0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3dfcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShy
ZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJl
ZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAg
IC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1h
bCBzdG9yZXMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgorICAgIHZvaWQgc3RvcmVGZW5jZSgp
CisgICAgeworICAgIH0KKworICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJl
dmVudHMgbW90aW9uIG9mIG5vcm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCisg
ICAgdm9pZCBsb2FkRmVuY2UoKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCByZXBs
YWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0
aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxh
Y2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0
aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFz
c2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBw
dHJkaWZmX3QgcGF0Y2hhYmxlSnVtcFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFz
c2VtYmxlcjo6cGF0Y2hhYmxlSnVtcFNpemUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpCisgICAgeworICAgICAgICBpZiAoc19zc2U0
XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkKKyAgICAgICAgICAg
IHVwZGF0ZUVheDFFY3hGbGFncygpOworICAgICAgICByZXR1cm4gc19zc2U0XzFDaGVja1N0YXRl
ID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAgIH0KKworICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzQVZYKCkKKyAgICB7CisgICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlzdGVyaW91cyBy
ZWdyZXNzaW9ucyBhbmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUuCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVFYXgxRWN4Rmxh
Z3MoKQorICAgIHsKKyAgICAgICAgaW50IGZsYWdzID0gMDsKKyNpZiBDT01QSUxFUihNU1ZDKQor
ICAgICAgICBpbnQgY3B1SW5mb1s0XTsKKyAgICAgICAgX19jcHVpZChjcHVJbmZvLCAweDEpOwor
ICAgICAgICBmbGFncyA9IGNwdUluZm9bMl07CisjZWxpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcp
CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgYXNtICgKKyAgICAgICAgICAgICJtb3ZsICQweDEs
ICUlZWF4OyIKKyAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAgICAibW92bCAlJWVjeCwg
JTA7IgorICAgICAgICAgICAgOiAiPWciIChmbGFncykKKyAgICAgICAgICAgIDoKKyAgICAgICAg
ICAgIDogIiVlYXgiLCAiJWVieCIsICIlZWN4IiwgIiVlZHgiCisgICAgICAgICAgICApOworI2Vs
c2UKKyAgICAgICAgYXNtICgKKyAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKKyAgICAg
ICAgICAgICJwdXNobCAlJWVieDsiCisgICAgICAgICAgICAiY3B1aWQ7IgorICAgICAgICAgICAg
InBvcGwgJSVlYng7IgorICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAgICAgICAg
IDogIj1nIiAoZmxhZ3MpCisgICAgICAgICAgICA6CisgICAgICAgICAgICA6ICIlZWF4IiwgIiVl
Y3giLCAiJWVkeCIKKyAgICAgICAgICAgICk7CisjZW5kaWYKKyNlbmRpZiAvLyBDT01QSUxFUihH
Q0NfT1JfQ0xBTkcpCisgICAgICAgIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8
IDE5KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7Cisg
ICAgICAgIHNfYXZ4Q2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDI4KSkgPyBDUFVJRENoZWNr
U3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CisgICAgfQorCisjaWYgRU5BQkxF
KE1BU01fUFJPQkUpCisgICAgdm9pZCBwcm9iZShQcm9iZUZ1bmN0aW9uLCB2b2lkKiBhcmcxLCB2
b2lkKiBhcmcyKTsKKyNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKKworcHJvdGVjdGVkOgor
ICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8WDg2QXNzZW1ibGVy
OjpDb25kaXRpb24+KGNvbmQpOworICAgIH0KKworICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9u
IHg4NkNvbmRpdGlvbihSZXN1bHRDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCk7CisgICAgfQorCisg
ICAgWDg2QXNzZW1ibGVyOjpDb25kaXRpb24geDg2Q29uZGl0aW9uKFN0YXR1c0NvbmRpdGlvbiBj
b25kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAgIGNhc2UgU3VjY2Vz
czoKKyAgICAgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkU7CisgICAgICAg
IGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlv
bk5FOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkU7CisgICAgfQorCisgICAgdm9p
ZCBzZXQzMihYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworI2lmIENQVShYODYpCisgICAgICAgIC8vIE9uIDMyLWJpdCB4ODYgd2UgY2FuIG9ubHkg
c2V0IHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKKyAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBl
ZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEKKyAgICAgICAgaWYgKGRlc3QgPj0gNCkgeworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcnIoZGVzdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc2V0Q0Nfcihjb25kLCBYODZSZWdpc3RlcnM6OmVheCk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z6YmxfcnIoWDg2UmVnaXN0ZXJzOjplYXgsIFg4NlJl
Z2lzdGVyczo6ZWF4KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JyKGRlc3QsIFg4
NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlm
CisgICAgICAgIG1fYXNzZW1ibGVyLnNldENDX3IoY29uZCwgZGVzdCk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdnpibF9ycihkZXN0LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGNtb3YoWDg2
QXNzZW1ibGVyOjpDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgbV9hc3NlbWJsZXIuY21vdnFfcnIo
Y29uZCwgc3JjLCBkZXN0KTsKKyNlbHNlCisgICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZsX3JyKGNv
bmQsIHNyYywgZGVzdCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0xaQ05UKCkKICAgICB7CiAgICAgICAgIGlmIChzX2x6Y250Q2hlY2tTdGF0ZSA9PSBDUFVJRENo
ZWNrU3RhdGU6Ok5vdENoZWNrZWQpIHsKICAgICAgICAgICAgIGludCBmbGFncyA9IDA7CkBAIC0y
OTI1LDYgKzM4ODAsMzUgQEAgcHJvdGVjdGVkOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihz
aXplT2ZSZWdpc3RlciksIGRzdCk7CiAgICAgICAgIHNyY0lzTm9uWmVyby5saW5rKHRoaXMpOwog
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWlj
U3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIHJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAg
IHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRB
bmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9u
KGNvbmQpLCByZXN1bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Cisg
ICAgdm9pZCBhdG9taWNTdHJvbmdDQVMoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29u
c3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4
NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBm
dW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIEp1bXAgYnJhbmNo
QXRvbWljU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3Rl
ZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2
UmVnaXN0ZXJzOjplYXgpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2
Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQogCiBwcml2YXRlOgogICAgIC8vIE9ubHkgTWFjcm9B
c3NlbWJsZXJYODYgc2hvdWxkIGJlIHVzaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kOyBTU0UyIGlz
IGFsd2F5cyBhdmFpbGFibGUgb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIxMjk5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2OSw2ICsyNjksMTEgQEAgcHVibGlj
OgogICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBh
ZGQ2NChBYnNvbHV0ZUFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpAQCAt
MzA2LDYgKzMxMSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX2lt
KGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAg
ICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IDEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5p
bmNxX20oYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfaW0o
aW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYWRkNjQoVHJ1c3RlZEltbTMyIGlt
bSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKQEAgLTM0MiwxMSArMzU1
LDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ycihzcmMsIGRlc3QpOwog
ICAgIH0KIAorICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfcm0oc3JjLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFuZDY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5hbmRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAg
ICB2b2lkIGFuZDY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFf
aXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kNjQoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5k
cV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAg
dm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYW5kNjQoVHJ1
c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIGludHB0
cl90IGludFZhbHVlID0gaW1tLmFzSW50cHRyKCk7CkBAIC01NTIsMTEgKzU5NSw1MSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfcihkZXN0KTsKICAgICB9CiAKKyAgICB2b2lk
IG5lZzY0KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfbShk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZzY0KEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVncV9tKGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3I2
NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIub3JxX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBvcjY0KFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfcm0o
c3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2Us
IGRlc3QpOworICAgIH0KKworICAgIHZvaWQgb3I2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG9y
NjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3I2
NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBp
ZiAoaW1tLm1fdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkKQEAg
LTYxOSwxNiArNzAyLDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9pbShp
bW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAg
dm9pZCBzdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAg
IHZvaWQgc3ViNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLnN1YnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0K
IAorICAgIHZvaWQgc3ViNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmlu
ZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc3ViNjQoUmVnaXN0ZXJJ
RCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfcm0o
c3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KFJl
Z2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN1YnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54b3JxX3JyKHNyYywgZGVzdCk7CkBA
IC02NTEsNiArNzQ5LDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgeG9yNjQoUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
eG9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2Nh
bGUpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJh
c2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9tcihzcmMub2Zmc2V0
LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKworICAgIHZv
aWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIueG9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAg
IHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pcihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7CkBAIC02
NjYsNiArNzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubm90cV9tKGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgbm90NjQoQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RxX20oZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBsb2FkNjQo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7
CkBAIC0xMjk0LDcgKzE0MjIsMjI1IEBAIHB1YmxpYzoKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lz
dGVyKCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRl
c3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBtYXNrOCk7CiAgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9
CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21w
eGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9u
Z0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3Rl
ZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0
cm9uZ0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4
cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2Fs
ZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hB
dG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVy
LmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KIAorICAgIHZvaWQgYXRvbWljV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vh
a0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgSnVtcCBicmFu
Y2hBdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFu
ZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRv
bWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljQWRkNjQo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhZGQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2NChpbW0s
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFJlZ2lzdGVySUQg
cmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFkZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2NChyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3Vi
NjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChUcnVz
dGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2NChyZWcsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFJlZ2lzdGVySUQgcmVnLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNB
bmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDY0
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYW5kNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBbmQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDY0KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFRy
dXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljT3I2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KHJlZywgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChSZWdpc3RlcklEIHJlZywgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2
NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjY0KGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoUmVnaXN0ZXJJ
RCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgeG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYb3I2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjY0KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnNjQoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc2NChhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc2NChCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnNjQoYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90NjQoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q2NChhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q2NChCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90NjQoYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG1fYXNzZW1ibGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIueGFkZHFfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNYY2hnNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0o
cmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNYY2hnNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJl
c3Muc2NhbGUpOworICAgIH0KKyAgICAKICAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9VaW50MzIo
RlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIuY3Z0dHNkMnNpcV9ycihzcmMsIGRlc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTkwLDE2ICsxOTAsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfQURE
X0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MDEsCiAgICAgICAgIE9QX0FERF9HdkV2ICAg
ICAgICAgICAgICAgICAgICAgPSAweDAzLAogICAgICAgICBPUF9BRERfRUFYSXYgICAgICAgICAg
ICAgICAgICAgID0gMHgwNSwKKyAgICAgICAgT1BfT1JfRXZHYiAgICAgICAgICAgICAgICAgICAg
ICA9IDB4MDgsCiAgICAgICAgIE9QX09SX0V2R3YgICAgICAgICAgICAgICAgICAgICAgPSAweDA5
LAogICAgICAgICBPUF9PUl9HdkV2ICAgICAgICAgICAgICAgICAgICAgID0gMHgwQiwKICAgICAg
ICAgT1BfT1JfRUFYSXYgICAgICAgICAgICAgICAgICAgICA9IDB4MEQsCiAgICAgICAgIE9QXzJC
WVRFX0VTQ0FQRSAgICAgICAgICAgICAgICAgPSAweDBGLAorICAgICAgICBPUF9BTkRfRXZHYiAg
ICAgICAgICAgICAgICAgICAgID0gMHgyMCwKICAgICAgICAgT1BfQU5EX0V2R3YgICAgICAgICAg
ICAgICAgICAgICA9IDB4MjEsCiAgICAgICAgIE9QX0FORF9HdkV2ICAgICAgICAgICAgICAgICAg
ICAgPSAweDIzLAorICAgICAgICBPUF9TVUJfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgy
OCwKICAgICAgICAgT1BfU1VCX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MjksCiAgICAg
ICAgIE9QX1NVQl9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDJCLAogICAgICAgICBPUF9T
VUJfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgyRCwKICAgICAgICAgUFJFX1BSRURJQ1Rf
QlJBTkNIX05PVF9UQUtFTiAgICA9IDB4MkUsCisgICAgICAgIE9QX1hPUl9FdkdiICAgICAgICAg
ICAgICAgICAgICAgPSAweDMwLAogICAgICAgICBPUF9YT1JfRXZHdiAgICAgICAgICAgICAgICAg
ICAgID0gMHgzMSwKICAgICAgICAgT1BfWE9SX0d2RXYgICAgICAgICAgICAgICAgICAgICA9IDB4
MzMsCiAgICAgICAgIE9QX1hPUl9FQVhJdiAgICAgICAgICAgICAgICAgICAgPSAweDM1LApAQCAt
MjIzLDYgKzIyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QX0dST1VQMV9FdkliICAgICAgICAg
ICAgICAgICAgPSAweDgzLAogICAgICAgICBPUF9URVNUX0ViR2IgICAgICAgICAgICAgICAgICAg
ID0gMHg4NCwKICAgICAgICAgT1BfVEVTVF9Fdkd2ICAgICAgICAgICAgICAgICAgICA9IDB4ODUs
CisgICAgICAgIE9QX1hDSEdfRXZHYiAgICAgICAgICAgICAgICAgICAgPSAweDg2LAogICAgICAg
ICBPUF9YQ0hHX0V2R3YgICAgICAgICAgICAgICAgICAgID0gMHg4NywKICAgICAgICAgT1BfTU9W
X0ViR2IgICAgICAgICAgICAgICAgICAgICA9IDB4ODgsCiAgICAgICAgIE9QX01PVl9Fdkd2ICAg
ICAgICAgICAgICAgICAgICAgPSAweDg5LApAQCAtMjUyLDYgKzI1Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIFBSRV9TU0VfRjIgICAgICAgICAgICAgICAgICAgICAgPSAweEYyLAogICAgICAgICBQ
UkVfU1NFX0YzICAgICAgICAgICAgICAgICAgICAgID0gMHhGMywKICAgICAgICAgT1BfSExUICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDB4RjQsCisgICAgICAgIE9QX0dST1VQM19FYiAgICAg
ICAgICAgICAgICAgICAgPSAweEY2LAogICAgICAgICBPUF9HUk9VUDNfRWJJYiAgICAgICAgICAg
ICAgICAgID0gMHhGNiwKICAgICAgICAgT1BfR1JPVVAzX0V2ICAgICAgICAgICAgICAgICAgICA9
IDB4RjcsCiAgICAgICAgIE9QX0dST1VQM19Fdkl6ICAgICAgICAgICAgICAgICAgPSAweEY3LCAv
LyBPUF9HUk9VUDNfRXYgaGFzIGFuIGltbWVkaWF0ZSwgd2hlbiBpbnN0cnVjdGlvbiBpcyBhIHRl
c3QuIApAQCAtMjkwLDYgKzI5Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIE9QX1NFVENDICAgICAg
ICAgICAgPSAweDkwLAogICAgICAgICBPUDJfM0JZVEVfRVNDQVBFX0FFID0gMHhBRSwKICAgICAg
ICAgT1AyX0lNVUxfR3ZFdiAgICAgICA9IDB4QUYsCisgICAgICAgIE9QMl9DTVBYQ0hHYiAgICAg
ICAgPSAweEIwLAorICAgICAgICBPUDJfQ01QWENIRyAgICAgICAgID0gMHhCMSwKICAgICAgICAg
T1AyX01PVlpYX0d2RWIgICAgICA9IDB4QjYsCiAgICAgICAgIE9QMl9CU0YgICAgICAgICAgICAg
PSAweEJDLAogICAgICAgICBPUDJfVFpDTlQgICAgICAgICAgID0gMHhCQywKQEAgLTI5OCw2ICsz
MDYsOCBAQCBwcml2YXRlOgogICAgICAgICBPUDJfTU9WU1hfR3ZFYiAgICAgID0gMHhCRSwKICAg
ICAgICAgT1AyX01PVlpYX0d2RXcgICAgICA9IDB4QjcsCiAgICAgICAgIE9QMl9NT1ZTWF9HdkV3
ICAgICAgPSAweEJGLAorICAgICAgICBPUDJfWEFERGIgICAgICAgICAgID0gMHhDMCwKKyAgICAg
ICAgT1AyX1hBREQgICAgICAgICAgICA9IDB4QzEsCiAgICAgICAgIE9QMl9QRVhUUldfR2RVZEli
ICAgPSAweEM1LAogICAgICAgICBPUDJfUFNMTFFfVWRxSWIgICAgID0gMHg3MywKICAgICAgICAg
T1AyX1BTUkxRX1VkcUliICAgICA9IDB4NzMsCkBAIC01NjIsMTEgKzU3MiwyMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FERF9HdkV2LCBkc3QsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBhZGRxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FERF9HdkV2LCBkc3QsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZHFfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FERF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7
CiAgICAgfQogCisgICAgdm9pZCBhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FERF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZHFfaXIoaW50IGltbSwgUmVn
aXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1t
KSkgewpAQCAtNTkxLDYgKzYxMSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUzMihpbW0pOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBhZGRxX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkp
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBH
Uk9VUDFfT1BfQURELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FERCwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBhZGRsX2lt
KGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewpAQCAtNjE0LDExICs2NDUsNDMgQEAg
cHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwg
YmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZGxfbXIoaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3Qs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQp
OwogICAgIH0KIAorICAgIHZvaWQgYW5kbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBhbmRsX3JtKHNyYywgb2Zmc2V0
LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBhbmRsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgYW5kYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMs
IGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhbmRsX2ly
KGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VY
VEVORF84XzMyKGltbSkpIHsKQEAgLTY0MSw2ICs3MDQsNDEgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgfQogCisgICAgdm9pZCBhbmRsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
MV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQor
CisgICAgdm9pZCBhbmR3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAg
ICAgICAgYW5kbF9pbShpbW0sIG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmR3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBhbmRsX2ltKGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2Nh
bGUpOworICAgIH0KKworICAgIHZvaWQgYW5kYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAxX0ViSWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9p
ZCBhbmRxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC02NTcs
NiArNzU1LDQ4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMy
KGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQor
CisgICAgdm9pZCBhbmRxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDY0KE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9p
ZCBhbmRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIGFuZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9V
UDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAg
fQorCisgICAgdm9pZCBhbmRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KICNl
bHNlCiAgICAgdm9pZCBhbmRsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewpA
QCAtNzAzLDYgKzg0MywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDVfRXYsIEdST1VQMV9PUF9BREQsIGJhc2UsIG9mZnNldCk7CiAg
ICAgfQorCisgICAgdm9pZCBpbmNxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9HUk9VUDVfRXYsIEdST1VQMV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogICAgIHZvaWQgbmVnbF9y
KFJlZ2lzdGVySUQgZHN0KQpAQCAtNzE1LDYgKzg2MCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9ORUcs
IGRzdCk7CiAgICAgfQorCisgICAgdm9pZCBuZWdxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2
LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgbmVncV9t
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBH
Uk9VUDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlm
CiAKICAgICB2b2lkIG5lZ2xfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCkBAIC03MjIs
NiArODc3LDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQM19FdiwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lk
IG5lZ2xfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNf
RXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
KyAgICB2b2lkIG5lZ3dfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5lZ2xf
bShvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWdsX20o
b2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnYl9tKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAg
fQorCisgICAgdm9pZCBuZWdiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgfQorCiAgICAgdm9pZCBub3RsX3IoUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBk
c3QpOwpAQCAtNzMyLDYgKzkxNCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIG9mZnNldCk7CiAgICAg
fQogCisgICAgdm9pZCBub3RsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgfQorCisgICAgdm9pZCBub3R3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICBub3RsX20ob2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAg
ICAgICAgbm90bF9tKG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIG5vdGJfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBv
ZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBub3Rx
X3IoUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNzQyLDYgKzk1MSwxMSBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQ
M19PUF9OT1QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBub3RxX20oaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19P
UF9OT1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAg
IHZvaWQgb3JsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTc1NCwxMSAr
OTY4LDQzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2
RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9tcihpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0
ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfR3ZF
diwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBv
cmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9m
ZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG9ybF9ybShzcmMsIG9mZnNl
dCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBvcmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJh
c2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgb3JsX2lyKGludCBp
bW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKQEAgLTc4NCwxMiArMTAzMCw4OSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICB2b2lkIG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6
LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2
b2lkIG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG9y
bF9pbShpbW0sIG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcndfaW0oaW50IGlt
bSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIG9ybF9pbShpbW0sIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdS
T1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgIH0KKworICAgIHZvaWQgb3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfT1IsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBvcnFfcnIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgb3JxX21y
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNl
dCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisK
KyAgICB2b2lkIG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1t
KSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIs
IEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIHZvaWQgb3JxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTgzMSwxMSArMTE1NCw0MyBAQCBw
dWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwgZHN0LCBi
YXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9tcihpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYsIGRzdCwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3VibF9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7
CiAgICAgfQogCisgICAgdm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vi
d19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgo
UFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJf
RXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9p
ZCBzdWJiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YmxfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtODYxLDYgKzEyMTYsNDEgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgfQogCisgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENB
Tl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisg
ICAgdm9pZCBzdWJ3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAg
ICAgc3VibF9pbShpbW0sIG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5E
X1NJWkUpOworICAgICAgICBzdWJsX2ltKGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUp
OworICAgIH0KKworICAgIHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQ
MV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBz
dWJxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC04NzIsMTEg
KzEyNjIsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9T
VUJfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9tcihp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwg
UmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAg
ICAgdm9pZCBzdWJxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZHdiwg
c3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZH
diwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBz
dWJxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTkwMSw2ICsxMzAxLDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9
CisKKyAgICB2b2lkIHN1YnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vs
c2UKICAgICB2b2lkIHN1YmxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBA
IC05MjQsMTEgKzEzMzUsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWE9SX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhv
cmxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisKICAgICB2b2lkIHhvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZH
diwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9ybF9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0V2
R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQg
eG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAg
ICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTQwLDYgKzEzNjEsNjMg
QEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB4b3JsX2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hP
UiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0p
OworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZzZXQsIGJh
c2UpOworICAgIH0KKworICAgIHZvaWQgeG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIHhv
cmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCB4b3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgeG9y
bF9pbShpbW0sIG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3J3X2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICB4b3JsX2ltKGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9F
dkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JiX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1Jf
RXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9p
ZCB4b3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1hP
UiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7
CisgICAgfQorCiAgICAgdm9pZCB4b3JsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAg
IHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTk3NCwxMSAr
MTQ1Miw0NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCB4b3Jx
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6
LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHhvcnFf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1t
KSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIs
IEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9S
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorICAgIAogICAgIHZvaWQgeG9ycV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zm
c2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2LCBkZXN0LCBiYXNlLCBvZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYsIGRlc3QsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgbHpjbnRfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTU4NiwxMSArMjEwMCwzOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMs
IGRzdCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQg
eGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgeGNoZ2xfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CiAKKyAgICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCB4Y2hn
cV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMTYwNiw2ICsy
MTQ3LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgeGNo
Z3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICB9CiAjZW5kaWYKIAogICAgIHZvaWQgbW92bF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkc3QpCkBAIC0yNzc1LDYgKzMzMjEsOTAgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX0xPQ0spOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3JtKFJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBvZmZzZXQp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX0NNUFhDSEdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hn
d19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ2xfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGNtcHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3Ffcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgY21weGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRiX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQUREYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHhhZGRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX1hBRERiLCBzcmMsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkd19ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29C
eXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCB4YWRkd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChP
UDJfWEFERCwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgeGFkZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
eGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9YQURELCBzcmMsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1hBREQsIHNyYywg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKICAgICB2b2lkIG1mZW5j
ZSgpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci50aHJlZUJ5dGVPcChPUDJfM0JZVEVfRVND
QVBFX0FFLCBPUDNfTUZFTkNFKTsKQEAgLTM3NTEsNiArNDM4MSwyNCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0oZ3JvdXBPcCwgcm0pOwogICAgICAgICB9CiAK
KyAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcs
IFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgU2lu
Z2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAg
IHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJlZywgYmFzZSksIHJlZywgMCwg
YmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NB
UEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAg
ICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIH0K
KworICAgICAgICB2b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJl
ZywgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludCBvZmZz
ZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVy
IHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdS
ZXF1aXJlc1JleChyZWcpIHx8IHJlZ1JlcXVpcmVzUmV4KGluZGV4LCBiYXNlKSwgcmVnLCBpbmRl
eCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9F
U0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAg
ICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIEltbWVkaWF0ZXM6CiAgICAgICAgIC8vCiAg
ICAgICAgIC8vIEFuIGltbWVkYWl0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlh
dGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgorCisjaWYgRU5BQkxF
KEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK0F0b21pY1ZhbHVl
Ojp+QXRvbWljVmFsdWUoKQoreworfQorCitXaWR0aCBBdG9taWNWYWx1ZTo6YWNjZXNzV2lkdGgo
KSBjb25zdAoreworICAgIHJldHVybiBtX3dpZHRoOworfQorCit2b2lkIEF0b21pY1ZhbHVlOjpk
dW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAorewor
ICAgIG91dC5wcmludChjb21tYSwgIndpZHRoID0gIiwgbV93aWR0aCk7CisgICAgCisgICAgTWVt
b3J5VmFsdWU6OmR1bXBNZXRhKGNvbW1hLCBvdXQpOworfQorCitWYWx1ZSogQXRvbWljVmFsdWU6
OmNsb25lSW1wbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyBBdG9taWNWYWx1ZSgqdGhpcyk7
Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4s
IFdpZHRoIHdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zm
c2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIG9wZXJhbmQt
PnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIG9wZXJhbmQsIHBvaW50ZXIpCisgICAgLCBtX3dpZHRo
KHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSk7CisgICAgCisg
ICAgQVNTRVJUKGJlc3RUeXBlKG9wZXJhdGlvbldpZHRoKCkpID09IG9wZXJhdGlvblR5cGUoKSk7
CisgICAgCisgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgY2FzZSBBdG9taWNYY2hn
QWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAg
ICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2Ug
QXRvbWljWGNoZzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUs
IFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAg
ICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIGtpbmQub3Bjb2RlKCkgPT0gQXRv
bWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRWYWx1ZS0+dHlwZSgpLCBvcmlnaW4sIG9mZnNl
dCwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUsIHBvaW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRo
KQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQVNT
RVJUKGJlc3RUeXBlKG9wZXJhdGlvbldpZHRoKCkpID09IG9wZXJhdGlvblR5cGUoKSk7CisKKyAg
ICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAg
Y2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5o
IgorI2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEF0b21pY1ZhbHVlIDogcHVibGljIE1lbW9yeVZh
bHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7
CisgICAgICAgIHJldHVybiBpc0F0b21pYyhraW5kLm9wY29kZSgpKTsKKyAgICB9CisgICAgCisg
ICAgfkF0b21pY1ZhbHVlKCk7CisgICAgCisgICAgVHlwZSBvcGVyYXRpb25UeXBlKCkgY29uc3Qg
eyByZXR1cm4gY2hpbGQoMCktPnR5cGUoKTsgfQorICAgIAorICAgIFdpZHRoIG9wZXJhdGlvbldp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIAorICAgIC8vIFN5bm9ueW0gZm9y
IG9wZXJhdGlvbldpZHRoKCksIGlmIHlvdSdyZSBhY2Nlc3NpbmcgdmlhIE1lbW9yeVZhbHVlLgor
ICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCitwcm90ZWN0ZWQ6
CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92
ZXJyaWRlOworICAgIAorICAgIFZhbHVlKiBjbG9uZUltcGwoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKKyAgICAKKyAgICBBdG9t
aWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFsdWUqIHBvaW50
ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3Jp
Z2luLCBXaWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUq
IHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCisgICAgV2lkdGggbV93aWR0aDsK
K307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJ
VCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0
aW9uU2V0LmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDM1ICszNiwxMyBAQAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIEJsb2NrSW5zZXJ0aW9uU2V0OjpCbG9j
a0luc2VydGlvblNldChQcm9jZWR1cmUgJnByb2MpCi0gICAgOiBtX3Byb2MocHJvYykKKyAgICA6
IEdlbmVyaWNCbG9ja0luc2VydGlvblNldChwcm9jLm1fYmxvY2tzKQorICAgICwgbV9wcm9jKHBy
b2MpCiB7CiB9CiAKIEJsb2NrSW5zZXJ0aW9uU2V0Ojp+QmxvY2tJbnNlcnRpb25TZXQoKSB7IH0K
IAotdm9pZCBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5zZXJ0
aW9uKQotewotICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRpb24pKTsKLX0K
LQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydCh1bnNpZ25lZCBpbmRleCwg
ZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxv
Y2sobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOwotICAgIEJhc2ljQmxvY2sq
IHJlc3VsdCA9IGJsb2NrLmdldCgpOwotICAgIGluc2VydChCbG9ja0luc2VydGlvbihpbmRleCwg
V1RGTW92ZShibG9jaykpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1CYXNpY0Jsb2NrKiBC
bG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91Ymxl
IGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgoKSwgZnJlcXVl
bmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5KCkpOwotfQot
Ci1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayog
YWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChhZnRlci0+aW5k
ZXgoKSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBhZnRlci0+ZnJl
cXVlbmN5KCkpOwotfQotCiBCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3
YXJkKAogICAgIEJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCYgdmFsdWVJbmRleCwgSW5zZXJ0
aW9uU2V0KiBpbnNlcnRpb25TZXQsIGRvdWJsZSBmcmVxdWVuY3kpCiB7CkBAIC0xMDIsMzIgKzgw
LDYgQEAgQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6OnNwbGl0Rm9ydwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLWJvb2wgQmxvY2tJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoKQotewotICAg
IGlmIChtX2luc2VydGlvbnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Ci0gICAgLy8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3Jk
ZXIuIFNvLCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKLSAgICAvLyBydW5uaW5nIFdURjo6
ZXhlY3V0ZUluc2VydGlvbnMuIFdlIHN0cm9uZ2x5IHByZWZlciBhIHN0YWJsZSBzb3J0IGFuZCB3
ZSB3YW50IGl0IHRvIGJlCi0gICAgLy8gZmFzdCwgc28gd2UgdXNlIGJ1YmJsZSBzb3J0LgotICAg
IGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7Ci0K
LSAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX3Byb2MubV9ibG9ja3MsIG1faW5zZXJ0aW9ucyk7Ci0g
ICAgCi0gICAgLy8gUHJ1bmUgb3V0IGVtcHR5IGVudHJpZXMuIFRoaXMgaXNuJ3Qgc3RyaWN0bHkg
bmVjZXNzYXJ5IGJ1dCBpdCdzCi0gICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0
IGZyb20gZ3Jvd2luZy4KLSAgICBtX3Byb2MubV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCi0g
ICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+JiBibG9ja1B0cikgLT4gYm9v
bCB7Ci0gICAgICAgICAgICByZXR1cm4gIWJsb2NrUHRyOwotICAgICAgICB9KTsKLSAgICAKLSAg
ICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGluZGljZXMuCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvYy5tX2Jsb2Nrcy5zaXplKCk7ICsraSkK
LSAgICAgICAgbV9wcm9jLm1fYmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKLSAgICAKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFC
TEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRp
b25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0lu
c2VydGlvblNldC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlIDx3dGYvSW5zZXJ0
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzUsMjYgKzM2LDEzIEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBJbnNlcnRpb25TZXQ7CiAKLXR5cGVk
ZWYgV1RGOjpJbnNlcnRpb248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBCbG9ja0luc2Vy
dGlvbjsKK3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+OjpCbG9j
a0luc2VydGlvbiBCbG9ja0luc2VydGlvbjsKIAotY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgewor
Y2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0
PEJhc2ljQmxvY2s+IHsKIHB1YmxpYzoKICAgICBCbG9ja0luc2VydGlvblNldChQcm9jZWR1cmUm
KTsKICAgICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKICAgICAKLSAgICB2b2lkIGluc2VydChCbG9j
a0luc2VydGlvbiYmKTsKLQotICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGlu
ZGV4LgotICAgIEJhc2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1
ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBiZWZvcmUgdGhlIGdp
dmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNzIHRoZSBmcmVxdWVuY3kKLSAgICAv
LyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0byBqdXN0IHVzZSB0aGUgZnJlcXVl
bmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCi0gICAgLy8gdXN1YWxseSB3aGF0IHlv
dSB3YW50LgotICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUs
IGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sg
YWZ0ZXIgdGhlIGdpdmVuIGJsb2NrLgotICAgIEJhc2ljQmxvY2sqIGluc2VydEFmdGVyKEJhc2lj
QmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KICAgICAvLyBBIGhlbHBl
ciB0byBzcGxpdCBhIGJsb2NrIHdoZW4gZm9yd2FyZCBpdGVyYXRpbmcgb3ZlciBpdC4gSXQgY3Jl
YXRlcyBhIG5ldyBibG9jayB0byBob2xkCiAgICAgLy8gZXZlcnl0aGluZyBiZWZvcmUgdGhlIGlu
c3RydWN0aW9uIGF0IHZhbHVlSW5kZXguIFRoZSBjdXJyZW50IGJsb2NrIGlzIGxlZnQgd2l0aAog
ICAgIC8vIGV2ZXJ5dGhpbmcgYXQgYW5kIGFmdGVyIHZhbHVlSW5kZXguIElmIHRoZSBvcHRpb25h
bCBJbnNlcnRpb25TZXQgaXMgcHJvdmlkZWQsIGl0IHdpbGwgZ2V0CkBAIC04MCwxMiArNjgsOSBA
QCBwdWJsaWM6CiAgICAgQmFzaWNCbG9jayogc3BsaXRGb3J3YXJkKAogICAgICAgICBCYXNpY0Js
b2NrKiwgdW5zaWduZWQmIHZhbHVlSW5kZXgsIEluc2VydGlvblNldCogPSBudWxscHRyLAogICAg
ICAgICBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0gICAgCi0gICAgYm9vbCBleGVjdXRlKCk7
CiAKIHByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7Ci0gICAgVmVjdG9yPEJsb2NrSW5z
ZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCShyZXZpc2lvbiAyMTI5
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODIsNyArODIsOCBAQCBib29sIEVmZmVjdHM6OmludGVyZmVyZXMoY29uc3QgRWZm
ZWN0cyYgCiAgICAgICAgIHx8IGludGVyZmVyZXNXaXRoV3JpdGVzUGlubmVkKG90aGVyLCAqdGhp
cykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKICAgICAgICAgfHwg
d3JpdGVzLm92ZXJsYXBzKG90aGVyLnJlYWRzKQotICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhv
dGhlci53cml0ZXMpOworICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53cml0ZXMpCisg
ICAgICAgIHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3Bl
cmF0b3I9PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTk1LDcgKzk2LDggQEAgYm9v
bCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIAogICAgICAgICAmJiB3cml0ZXNQ
aW5uZWQgPT0gb3RoZXIud3JpdGVzUGlubmVkCiAgICAgICAgICYmIHJlYWRzUGlubmVkID09IG90
aGVyLnJlYWRzUGlubmVkCiAgICAgICAgICYmIHdyaXRlcyA9PSBvdGhlci53cml0ZXMKLSAgICAg
ICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHM7CisgICAgICAgICYmIHJlYWRzID09IG90aGVyLnJl
YWRzCisgICAgICAgICYmIGZlbmNlID09IG90aGVyLmZlbmNlOwogfQogCiBib29sIEVmZmVjdHM6
Om9wZXJhdG9yIT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0CkBAIC0xMjAsNiArMTIyLDgg
QEAgdm9pZCBFZmZlY3RzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbgogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJXcml0ZXNQaW5uZWQiKTsKICAgICBpZiAocmVhZHNQaW5uZWQpCiAgICAg
ICAgIG91dC5wcmludChjb21tYSwgIlJlYWRzUGlubmVkIik7CisgICAgaWYgKGZlbmNlKQorICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJGZW5jZSIpOwogICAgIGlmICh3cml0ZXMpCiAgICAgICAg
IG91dC5wcmludChjb21tYSwgIldyaXRlczoiLCB3cml0ZXMpOwogICAgIGlmIChyZWFkcykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkod29ya2luZyBjb3B5KQpAQCAt
NzEsNiArNzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBib29sIHJlYWRzUGlubmVkIHsgZmFs
c2UgfTsKICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07CisgICAgCisgICAgLy8gTWVt
b3J5IGZlbmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBlYWNoIG90aGVyIHJlZ2FyZGxl
c3Mgb2YgdGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisgICAgLy8gaWYgdGhlIG9wZXJh
dGlvbiBpcyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZlbmNlIHsgZmFsc2UgfTsKIAogICAg
IEhlYXBSYW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRzOwpAQCAtODksNiArOTMsNyBA
QCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9w
KCk7CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIHJlc3VsdC53
cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcgKzEwOCw3IEBAIHN0cnVjdCBFZmZl
Y3RzIHsKIAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8fCB3cml0
ZXMgfHwgd3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRl
d2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQgfHwgZmVu
Y2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHJlb3JkZXJpbmcgaW5zdHJ1Y3Rp
b25zIHdpdGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxkIGNoYW5nZSBwcm9ncmFtCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNz
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWlu
YXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0cnVjdCBJbXB1cmVCbG9ja0RhdGEgewogCiAg
ICAgUmFuZ2VTZXQ8SGVhcFJhbmdlPiByZWFkczsgLy8gVGhpcyBvbmx5IGdldHMgdXNlZCBmb3Ig
Zm9yd2FyZCBzdG9yZSBlbGltaW5hdGlvbi4KICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+IHdyaXRl
czsgLy8gVGhpcyBnZXRzIHVzZWQgZm9yIGJvdGggbG9hZCBhbmQgc3RvcmUgZWxpbWluYXRpb24u
CisgICAgYm9vbCBmZW5jZTsKIAogICAgIE1lbW9yeVZhbHVlTWFwIHN0b3Jlc0F0SGVhZDsKICAg
ICBNZW1vcnlWYWx1ZU1hcCBtZW1vcnlWYWx1ZXNBdFRhaWw7CkBAIC0xNzQsMTIgKzE3NSwxNCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeSAm
JiBtZW1vcnktPmlzU3RvcmUoKQogICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS5yZWFkcy5v
dmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCi0gICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndy
aXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpKQorICAgICAgICAgICAgICAgICAgICAmJiAh
ZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQorICAgICAgICAgICAgICAgICAg
ICAmJiAoIWRhdGEuZmVuY2UgfHwgIW1lbW9yeS0+aGFzRmVuY2UoKSkpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGEuc3RvcmVzQXRIZWFkLmFkZChtZW1vcnkpOwogICAgICAgICAgICAgICAgIGRh
dGEucmVhZHMuYWRkKGVmZmVjdHMucmVhZHMpOwogCiAgICAgICAgICAgICAgICAgaWYgKEhlYXBS
YW5nZSB3cml0ZXMgPSBlZmZlY3RzLndyaXRlcykKICAgICAgICAgICAgICAgICAgICAgY2xvYmJl
cihkYXRhLCB3cml0ZXMpOworICAgICAgICAgICAgICAgIGRhdGEuZmVuY2UgfD0gZWZmZWN0cy5m
ZW5jZTsKIAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkpCiAgICAgICAgICAgICAgICAgICAg
IGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkpOwpAQCAtNDc4LDYgKzQ4MSw5IEBA
IHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgogICAgIGJvb2wgZmluZFN0
b3JlQWZ0ZXJDbG9iYmVyKFZhbHVlKiBwdHIsIEhlYXBSYW5nZSByYW5nZSwgY29uc3QgRmlsdGVy
JiBmaWx0ZXIpCiAgICAgeworICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkt
Pmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAg
ICAvLyBXZSBjYW4gZWxpbWluYXRlIGEgc3RvcmUgaWYgZXZlcnkgZm9yd2FyZCBwYXRoIGhpdHMg
YSBzdG9yZSB0byB0aGUgc2FtZSBsb2NhdGlvbiBiZWZvcmUKICAgICAgICAgLy8gaGl0dGluZyBh
bnkgb3BlcmF0aW9uIHRoYXQgb2JzZXJ2ZXMgdGhlIHN0b3JlLiBUaGlzIHNlYXJjaCBzZWVtcyBs
aWtlIGl0IHNob3VsZCBiZQogICAgICAgICAvLyBleHBlbnNpdmUsIGJ1dCBpbiB0aGUgb3Zlcndo
ZWxtaW5nIG1ham9yaXR5IG9mIGNhc2VzIGl0IHdpbGwgYWxtb3N0IGltbWVkaWF0ZWx5IGhpdCBh
biAKQEAgLTYxNCw2ICs2MjAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nKCptX3ZhbHVlLCAiOiBsb29raW5nIGJhY2t3YXJkIGZvciAiLCAq
cHRyLCAiLi4uXG4iKTsKICAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGZlbmNlcy5cbiIpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAo
TWVtb3J5VmFsdWUqIG1hdGNoID0gbV9kYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5kKHB0ciwg
ZmlsdGVyKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTky
LDYgKzkyLDcgQEAgdm9pZCBnZW5lcmF0ZVRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlLAogICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTA3CiAg
ICAgfQogCisgICAgLy8gVGhpcyBwdXRzIHRoZSBJUiBpbiBxdWlya3MgbW9kZS4KICAgICBsb3dl
ck1hY3Jvcyhwcm9jZWR1cmUpOwogCiAgICAgaWYgKG9wdExldmVsID49IDEpIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlv
blNldC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewor
CitjbGFzcyBJbnNlcnRpb25TZXQ7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJhc2ljQmxvY2s+Citj
bGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQgeworcHVibGljOgorICAgIHR5cGVkZWYgV1RG
OjpJbnNlcnRpb248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBCbG9ja0luc2VydGlvbjsK
KyAgICAKKyAgICBCbG9ja0luc2VydGlvblNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+PiYgYmxvY2tzKQorICAgICAgICA6IG1fYmxvY2tzKGJsb2NrcykKKyAgICB7CisgICAg
fQorICAgIAorICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5zZXJ0aW9uKQorICAg
IHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOworICAg
IH0KKworICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGluZGV4LgorICAgIEJh
c2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
CisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3IEJh
c2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOworICAgICAgICBCYXNpY0Jsb2NrKiByZXN1
bHQgPSBibG9jay5nZXQoKTsKKyAgICAgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBX
VEZNb3ZlKGJsb2NrKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8v
IEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ug
d2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5CisgICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5h
TiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxv
Y2suIFRoYXQncworICAgIC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KKyAgICBCYXNpY0Jsb2Nr
KiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5h
TikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVu
Y3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7CisgICAg
fQorCisgICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxvY2suCisg
ICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVx
dWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChhZnRlci0+aW5kZXgo
KSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBhZnRlci0+ZnJlcXVl
bmN5KCkpOworICAgIH0KKworICAgIGJvb2wgZXhlY3V0ZSgpCisgICAgeworICAgICAgICBpZiAo
bV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4g
YW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCisgICAgICAgIC8vIHJ1
bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxl
IHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKKyAgICAgICAgLy8gZmFzdCwgc28gd2UgdXNlIGJ1
YmJsZSBzb3J0LgorICAgICAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2lu
c2VydGlvbnMuZW5kKCkpOworICAgICAgICAKKyAgICAgICAgZXhlY3V0ZUluc2VydGlvbnMobV9i
bG9ja3MsIG1faW5zZXJ0aW9ucyk7CisgICAgICAgIAorICAgICAgICAvLyBQcnVuZSBvdXQgZW1w
dHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MKKyAgICAg
ICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KKyAgICAg
ICAgbV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAgICBbJl0gKHN0ZDo6dW5p
cXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+IGJvb2wgeworICAgICAgICAgICAgICAg
IHJldHVybiAhYmxvY2tQdHI7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgbV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOworICAgICAgICAKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFz
aWNCbG9jaz4+JiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1faW5z
ZXJ0aW9uczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAorICAgIEhlYXBSYW5nZSBvcGVyYXRv
cnwoY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBI
ZWFwUmFuZ2UoCisgICAgICAgICAgICBzdGQ6Om1pbihtX2JlZ2luLCBvdGhlci5tX2JlZ2luKSwK
KyAgICAgICAgICAgIHN0ZDo6bWF4KG1fZW5kLCBvdGhlci5tX2VuZCkpOworICAgIH0KKyAgICAK
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbiAhPSBt
X2VuZDsgfQogCiAgICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCwxMSBAQCBWYWx1ZSogSW5zZXJ0aW9u
U2V0OjppbnNlcnRCb3R0b20oc2l6ZV90CiAgICAgcmV0dXJuIGluc2VydEJvdHRvbShpbmRleCwg
bGlrZVZhbHVlLT5vcmlnaW4oKSwgbGlrZVZhbHVlLT50eXBlKCkpOwogfQogCitWYWx1ZSogSW5z
ZXJ0aW9uU2V0OjppbnNlcnRDbG9uZShzaXplX3QgaW5kZXgsIFZhbHVlKiB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gaW5zZXJ0VmFsdWUoaW5kZXgsIG1fcHJvY2VkdXJlLmNsb25lKHZhbHVlKSk7Cit9
CisKIHZvaWQgSW5zZXJ0aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAg
IGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkocmV2aXNpb24g
MjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogCiAgICAgVmFsdWUqIGluc2Vy
dEJvdHRvbShzaXplX3QgaW5kZXgsIE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGluc2VydEJv
dHRvbShzaXplX3QgaW5kZXgsIFZhbHVlKik7CisgICAgCisgICAgVmFsdWUqIGluc2VydENsb25l
KHNpemVfdCBpbmRleCwgVmFsdWUqKTsKIAogICAgIHZvaWQgZXhlY3V0ZShCYXNpY0Jsb2NrKik7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDExICs1OCwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IDogbV9wcm9jKHByb2MpCiAgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChwcm9jKQogICAg
ICAgICAsIG1faW5zZXJ0aW9uU2V0KHByb2MpCisgICAgICAgICwgbV91c2VDb3VudHMocHJvYykK
ICAgICB7CiAgICAgfQogCiAgICAgYm9vbCBydW4oKQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIW1fcHJvYy5oYXNRdWlya3MoKSk7CisgICAgICAgIAogICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAg
ICAgICAgICAgICBwcm9jZXNzQ3VycmVudEJsb2NrKCk7CkBAIC03Miw2ICs3NSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX3Byb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAgICAg
IG1fcHJvYy5pbnZhbGlkYXRlQ0ZHKCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8v
IFRoaXMgaW5kaWNhdGVzIHRoYXQgd2UndmUgCisgICAgICAgIG1fcHJvYy5zZXRIYXNRdWlya3Mo
dHJ1ZSk7CisgICAgICAgIAogICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwogICAgIH0KICAgICAK
QEAgLTE4NSw3ICsxOTIsOTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQg
PSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgICAgICBpZiAo
aXNYODYoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBsb2FkLWxvYWQgZmVu
Y2UuIFRoaXMgY29kZWdlbnMgdG8gbm90aGluZyBvbiBYODYuIFdlIHVzZSBpdCB0byB0ZWxsIHRo
ZQorICAgICAgICAgICAgICAgICAgICAvLyBjb21waWxlciBub3QgdG8gYmxvY2sgbG9hZCBtb3Rp
b24uCisgICAgICAgICAgICAgICAgICAgIEZlbmNlVmFsdWUqIGZlbmNlID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0PEZlbmNlVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmVuY2UtPnJlYWQgPSBIZWFwUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgZmVu
Y2UtPndyaXRlID0gSGVhcFJhbmdlOjp0b3AoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIC8vIEtpbGwgdGhlIERlcGVuZCwgd2hpY2ggc2hvdWxkIHVubG9jayBh
IGJ1bmNoIG9mIGNvZGUgc2ltcGxpZmljYXRpb24uCisgICAgICAgICAgICAgICAgICAgIG1fbm9k
ZS0+cmVwbGFjZVdpdGhCb3R0b20obV9pbnNlcnRpb25TZXQsIG1faW5kZXgpOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAKKyAg
ICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ry
b25nQ0FTOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEF0b21pY1ZhbHVl
KiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBX
aWR0aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBpZiAoaXNDYW5vbmljYWxXaWR0aCh3aWR0aCkpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFZhbHVl
KiBleHBlY3RlZFZhbHVlID0gYXRvbWljLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAvLyBPbiBBUk0sIHRoZSBsb2FkIHBhcnQgb2YgdGhlIENBUyBkb2VzIGEg
bG9hZCB3aXRoIHplcm8gZXh0ZW5zaW9uLiBUaGVyZWZvcmUsIHdlIG5lZWQKKyAgICAgICAgICAg
ICAgICAvLyB0byB6ZXJvLWV4dGVuZCB0aGUgaW5wdXQuCisgICAgICAgICAgICAgICAgVmFsdWUq
IG1hc2tlZEV4cGVjdGVkVmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAg
ICAgICAgICAgICAgICAgICBtX2luZGV4LCBCaXRBbmQsIG1fb3JpZ2luLCBleHBlY3RlZFZhbHVl
LAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudCht
X2luZGV4LCBleHBlY3RlZFZhbHVlLCBtYXNrKHdpZHRoKSkpOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIGF0b21pYy0+Y2hpbGQoMCkgPSBtYXNrZWRFeHBlY3RlZFZhbHVlOwor
ICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIEF0b21p
Y1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBj
YXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAg
ICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzog
eworICAgICAgICAgICAgICAgIC8vIE9uIFg4NiwgdGhlc2UgbWF5IGFjdHVhbGx5IHJldHVybiBn
YXJiYWdlIGluIHRoZSBoaWdoIGJpdHMuIE9uIEFSTTY0LCB0aGVzZSBzb3J0YQorICAgICAgICAg
ICAgICAgIC8vIHplcm8tZXh0ZW5kIHRoZWlyIGhpZ2ggYml0cywgZXhjZXB0IHRoYXQgdGhlIGhp
Z2ggYml0cyBtaWdodCBnZXQgcG9sbHV0ZWQgYnkgaGlnaAorICAgICAgICAgICAgICAgIC8vIGJp
dHMgaW4gdGhlIG9wZXJhbmQuIC4gU28sIGVpdGhlciB3YXksIHdlIG5lZWQgdG8gdGhyb3cgYSBz
aWduLWV4dGVuZCBvbiB0aGVzZQorICAgICAgICAgICAgICAgIC8vIHRoaW5ncy4KKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAobV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljWGNoZ1N1YiAmJiBtX3VzZUNvdW50
cy5udW1Vc2VzKG1fdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbiB4ODYs
IHhjaGdhZGQgaXMgYmV0dGVyIHRoYW4geGNoZ3N1YiBpZiBpdCBoYXMgYW55IHVzZXJzLgorICAg
ICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+c2V0S2luZFVuc2FmZWx5KEF0b21pY1hjaGdB
ZGQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMSkgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5k
ZXgsIE5lZywgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBleGVt
cHQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUo
KSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0
b21pY1hjaGdTdWI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGV4ZW1wdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGlmIChleGVtcHQpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRvbWljVmFsdWUq
IGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgICAgIFdp
ZHRoIHdpZHRoID0gYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUq
IG5ld1ZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbmRleCwgc2lnbkV4dGVuZE9wY29kZSh3aWR0aCksIG1fb3JpZ2luLAorICAgICAg
ICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDbG9uZShtX2luZGV4LCBtX3ZhbHVl
KSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdp
dGhJZGVudGl0eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CkBAIC00NzAsNiArNTY2LDcgQEAgcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsK
ICAgICBCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIEluc2VydGlv
blNldCBtX2luc2VydGlvblNldDsKKyAgICBVc2VDb3VudHMgbV91c2VDb3VudHM7CiAgICAgQmFz
aWNCbG9jayogbV9ibG9jazsKICAgICB1bnNpZ25lZCBtX2luZGV4OwogICAgIFZhbHVlKiBtX3Zh
bHVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9w
dGltaXphdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTUgKzE1NiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2FzZSBSb3RMOiB7CiAgICAgICAgICAgICAgICAgLy8gQVJNNjQgZG9lc24ndCBoYXZl
IGEgcm90YXRlIGxlZnQuCiAgICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5l
ZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1f
aW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hp
ZnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0
eShyb3RhdGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3Zh
bHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigp
LCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOworICAgICAgICAgICAgICAgICAgICBtX3Zh
bHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDE0
IEBAIG5hbWVzcGFjZSB7CiAKIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCisvLyBGSVhN
RTogV2Ugd291bGRuJ3QgbmVlZCB0aGlzIGlmIEFpciBzdXBwb3J0ZWQgV2lkdGggbW9kaWZpZXJz
IGluIEFpcjo6S2luZC4KKy8vIE9PUFMhISEgKG5lZWQgYSBidWcgVVJMKQorI2RlZmluZSBPUENP
REVfRk9SX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAorICAgICh3aWR0aCkgPT0gV2lkdGg4ID8g
b3Bjb2RlICMjIDggOiBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDog
XAorICAgICh3aWR0aCkgPT0gV2lkdGgzMiA/IG9wY29kZSAjIyAzMiA6IFwKKyAgICBvcGNvZGUg
IyMgNjQpCisKIGNsYXNzIExvd2VyVG9BaXIgewogcHVibGljOgogICAgIExvd2VyVG9BaXIoUHJv
Y2VkdXJlJiBwcm9jZWR1cmUpCkBAIC04Myw2ICs5MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwg
bV9kb21pbmF0b3JzKHByb2NlZHVyZS5kb21pbmF0b3JzKCkpCiAgICAgICAgICwgbV9wcm9jZWR1
cmUocHJvY2VkdXJlKQogICAgICAgICAsIG1fY29kZShwcm9jZWR1cmUuY29kZSgpKQorICAgICAg
ICAsIG1fYmxvY2tJbnNlcnRpb25TZXQobV9jb2RlKQorI2lmIENQVShYODYpIHx8IENQVShYODZf
NjQpCisgICAgICAgICwgbV9lYXgoWDg2UmVnaXN0ZXJzOjplYXgpCisgICAgICAgICwgbV9lY3go
WDg2UmVnaXN0ZXJzOjplY3gpCisgICAgICAgICwgbV9lZHgoWDg2UmVnaXN0ZXJzOjplZHgpCisj
ZW5kaWYKICAgICB7CiAgICAgfQogCkBAIC0xMjQsMTQgKzEzOCwxOCBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIGhvaXN0ZWQgYWRkcmVzcyBleHByZXNzaW9uIGJlZm9yZSB3ZSBkdXBsaWNhdGUgaXQg
YmFjayBpbnRvIHRoZSBsb29wLgogICAgICAgICBmb3IgKEIzOjpCYXNpY0Jsb2NrKiBibG9jayA6
IG1fcHJvY2VkdXJlLmJsb2Nrc0luUHJlT3JkZXIoKSkgewogICAgICAgICAgICAgbV9ibG9jayA9
IGJsb2NrOwotICAgICAgICAgICAgLy8gUmVzZXQgc29tZSBzdGF0ZS4KLSAgICAgICAgICAgIG1f
aW5zdHMucmVzaXplKDApOwogCiAgICAgICAgICAgICBtX2lzUmFyZSA9ICFtX2Zhc3RXb3JrbGlz
dC5zYXcoYmxvY2spOwogCiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJMb3dlcmluZyBCbG9jayAiLCAqYmxvY2ssICI6XG4iKTsKICAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1
cCBjb3JyZWN0bHkuCisgICAgICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vz
c29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Js
b2NrW2Jsb2NrXS0+c3VjY2Vzc29ycygpLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgQWly
OjpGcmVxdWVudGVkQmxvY2sobV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNj
ZXNzb3IuZnJlcXVlbmN5KCkpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gUHJv
Y2VzcyBibG9ja3MgaW4gcmV2ZXJzZSBvcmRlciBzbyB3ZSBzZWUgdXNlcyBiZWZvcmUgZGVmcy4g
VGhhdCdzIHdoYXQgYWxsb3dzIHVzCiAgICAgICAgICAgICAvLyB0byBtYXRjaCBwYXR0ZXJucyBl
ZmZlY3RpdmVseS4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7
IGktLTspIHsKQEAgLTE0OSwxOSArMTY3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIE5vdyBhcHBlbmQgdGhlIGluc3RydWN0
aW9ucy4gbV9pbnN0cyBjb250YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIsIHNvIHdlIHByb2Nl
c3MKLSAgICAgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCi0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX2luc3RzLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgIGZvciAoSW5z
dCYgaW5zdCA6IG1faW5zdHNbaV0pCi0gICAgICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2Nr
W2Jsb2NrXS0+YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3Jy
ZWN0bHkuCi0gICAgICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDog
YmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Js
b2NrXS0+c3VjY2Vzc29ycygpLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgQWlyOjpGcmVx
dWVudGVkQmxvY2sobV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNjZXNzb3Iu
ZnJlcXVlbmN5KCkpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmlzaEFwcGVuZGlu
Z0luc3RydWN0aW9ucyhtX2Jsb2NrVG9CbG9ja1tibG9ja10pOwogICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBtX2Jsb2NrSW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKIAogICAgICAgICBBaXI6
Okluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9jb2RlKTsKICAgICAgICAgZm9yIChJbnN0JiBp
bnN0IDogbV9wcm9sb2d1ZSkKQEAgLTUzOCw3ICs1NDcsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuIEFyZygpOwogCiAgICAgICAgIGludDMyX3Qgb2Zmc2V0ID0gdmFsdWUtPm9mZnNl
dCgpOwotICAgICAgICBXaWR0aCB3aWR0aCA9IHZhbHVlLT5hY2Nlc3NXaWR0aCgpOworICAgICAg
ICBXaWR0aCB3aWR0aCA9IHZhbHVlLT5sb2FkU3RvcmVXaWR0aCgpOwogCiAgICAgICAgIEFyZyBy
ZXN1bHQgPSBlZmZlY3RpdmVBZGRyKHZhbHVlLT5sYXN0Q2hpbGQoKSwgb2Zmc2V0LCB3aWR0aCk7
CiAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNWYWxpZEZvcm0od2lkdGgpKTsKQEAgLTU2MiwxMSAr
NTcxLDE2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQXJnUHJvbWlzZSBsb2FkUHJvbWlzZUFueU9w
Y29kZShWYWx1ZSogbG9hZFZhbHVlKQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobG9h
ZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKSk7CiAgICAgICAgIGlmICghY2FuQmVJbnRlcm5hbChs
b2FkVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwogICAgICAgICBpZiAoY3Jvc3Nl
c0ludGVyZmVyZW5jZShsb2FkVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwotICAg
ICAgICBBcmdQcm9taXNlIHJlc3VsdChhZGRyKGxvYWRWYWx1ZSksIGxvYWRWYWx1ZSk7CisgICAg
ICAgIGlmIChsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIEFyZygpOworICAgICAgICBBcmcgbG9hZEFkZHIgPSBhZGRyKGxvYWRWYWx1
ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxvYWRBZGRyKTsKKyAgICAgICAgQXJnUHJvbWlz
ZSByZXN1bHQobG9hZEFkZHIsIGxvYWRWYWx1ZSk7CiAgICAgICAgIGlmIChsb2FkVmFsdWUtPnRy
YXBzKCkpCiAgICAgICAgICAgICByZXN1bHQuc2V0VHJhcHModHJ1ZSk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CkBAIC04OTgsMTEgKzkxMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAgICAgICAgIGFw
cGVuZChNb3ZlLCB0bXAodmFsdWUpLCB0bXAobV92YWx1ZSkpOwotICAgICAgICBhcHBlbmQoTW92
ZSwgdG1wKGFtb3VudCksIFRtcChYODZSZWdpc3RlcnM6OmVjeCkpOwotICAgICAgICBhcHBlbmQo
b3Bjb2RlLCBUbXAoWDg2UmVnaXN0ZXJzOjplY3gpLCB0bXAobV92YWx1ZSkpOwotI2VuZGlmCisg
ICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1vdW50KSwgbV9lY3gpOworICAgICAgICBhcHBlbmQo
b3Bjb2RlLCBtX2VjeCwgdG1wKG1fdmFsdWUpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxBaXI6
Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQ+CkBAIC05MzEsMTAgKzk0Mywx
NSBAQCBwcml2YXRlOgogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUg
b3Bjb2RlNjQsIENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9IE5vdENvbW11dGF0aXZlPgog
ICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVCaW5PcChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQog
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkp
OworICAgICAgICAKICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlw
ZShvcGNvZGUzMiwgb3Bjb2RlNjQsIGxlZnQtPnR5cGUoKSk7CiAgICAgICAgIGlmIChvcGNvZGUg
PT0gQWlyOjpPb3BzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKKyAgICAg
ICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICAgICAgQXJnIHN0b3JlQWRkciA9IGFkZHIo
bV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVChzdG9yZUFkZHIpOwogCkBAIC05OTQsMTAgKzEwMTEs
NDggQEAgcHJpdmF0ZToKIAogICAgICAgICByZXR1cm4gSW5zdChtb3ZlLCBtX3ZhbHVlLCB0bXAo
dmFsdWUpLCBkZXN0KTsKICAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNvZGUo
V2lkdGggd2lkdGgsIEJhbmsgYmFuaywgYm9vbCByZWxlYXNlKQorICAgIHsKKyAgICAgICAgc3dp
dGNoICh3aWR0aCkgeworICAgICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJl
bDggOiBTdG9yZTg7CisgICAgICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJl
bDE2IDogU3RvcmUxNjsKKyAgICAgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICAgICAgc3dpdGNo
IChiYW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiBy
ZWxlYXNlID8gU3RvcmVSZWwzMiA6IE1vdmUzMjsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJl
dHVybiBNb3ZlRmxvYXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM2NEJpdCgpKTsK
KyAgICAgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsNjQgOiBNb3ZlOworICAgICAgICAg
ICAgY2FzZSBGUDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVEb3VibGU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShWYWx1ZSogdmFs
dWUpCisgICAgeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9y
eVZhbHVlPigpOworICAgICAgICByZXR1cm4gc3RvcmVPcGNvZGUobWVtb3J5LT5sb2FkU3RvcmVX
aWR0aCgpLCBtZW1vcnktPmFjY2Vzc0JhbmsoKSwgbWVtb3J5LT5oYXNGZW5jZSgpKTsKKyAgICB9
CiAKICAgICBJbnN0IGNyZWF0ZVN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQog
ICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IG1vdmVGb3JUeXBlKHZhbHVl
LT50eXBlKCkpOworICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gc3RvcmVPcGNvZGUo
dmFsdWUpOwogICAgICAgICByZXR1cm4gY3JlYXRlU3RvcmUobW92ZU9wY29kZSwgdmFsdWUsIGRl
c3QpOwogICAgIH0KIApAQCAtMTAwNiw3ICsxMDYxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgY3JlYXRlU3RvcmUoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKSkpOwogICAgIH0KLQorICAgIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVG
b3JUeXBlKFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTA3
Myw3ICsxMTI4LDQxIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2luc3RzLmxhc3QoKS5h
cHBlbmQoaW5zdCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgZmluaXNoQXBwZW5kaW5nSW5zdHJ1
Y3Rpb25zKEFpcjo6QmFzaWNCbG9jayogdGFyZ2V0KQorICAgIHsKKyAgICAgICAgLy8gTm93IGFw
cGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBv
cmRlciwgc28gd2UgcHJvY2VzcworICAgICAgICAvLyBpdCBpbiByZXZlcnNlLgorICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2luc3RzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgZm9y
IChJbnN0JiBpbnN0IDogbV9pbnN0c1tpXSkKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmFwcGVu
ZEluc3QoV1RGTW92ZShpbnN0KSk7CisgICAgICAgIH0KKyAgICAgICAgbV9pbnN0cy5yZXNpemUo
MCk7CisgICAgfQorICAgIAorICAgIEFpcjo6QmFzaWNCbG9jayogbmV3QmxvY2soKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QWZ0ZXIobV9ibG9ja1Rv
QmxvY2tbbV9ibG9ja10pOworICAgIH0KIAorICAgIC8vIE5PVEU6IFRoaXMgd2lsbCBjcmVhdGUg
YSBjb250aW51YXRpb24gYmxvY2sgKGBuZXh0QmxvY2tgKSAqYWZ0ZXIqIGFueSBibG9ja3MgeW91
J3ZlIGNyZWF0ZWQgdXNpbmcKKyAgICAvLyBuZXdCbG9jaygpLiBTbywgaXQncyBwcmVmZXJhYmxl
IHRvIGNyZWF0ZSBhbGwgb2YgeW91ciBibG9ja3MgdXBmcm9udCB1c2luZyBuZXdCbG9jaygpLiBB
bHNvIG5vdGUKKyAgICAvLyB0aGF0IGFueSBjb2RlIHlvdSBlbWl0IGJlZm9yZSB0aGlzIHdpbGwg
YmUgcHJlcGVuZGVkIHRvIHRoZSBjb250aW51YXRpb24sIGFuZCBhbnkgY29kZSB5b3UgZW1pdAor
ICAgIC8vIGFmdGVyIHRoaXMgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgcHJldmlvdXMgYmxvY2su
CisgICAgdm9pZCBzcGxpdEJsb2NrKEFpcjo6QmFzaWNCbG9jayomIHByZXZpb3VzQmxvY2ssIEFp
cjo6QmFzaWNCbG9jayomIG5leHRCbG9jaykKKyAgICB7CisgICAgICAgIEFpcjo6QmFzaWNCbG9j
ayogYmxvY2sgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXTsKKyAgICAgICAgCisgICAgICAgIHBy
ZXZpb3VzQmxvY2sgPSBibG9jazsKKyAgICAgICAgbmV4dEJsb2NrID0gbV9ibG9ja0luc2VydGlv
blNldC5pbnNlcnRBZnRlcihibG9jayk7CisgICAgICAgIAorICAgICAgICBmaW5pc2hBcHBlbmRp
bmdJbnN0cnVjdGlvbnMobmV4dEJsb2NrKTsKKyAgICAgICAgbmV4dEJsb2NrLT5zdWNjZXNzb3Jz
KCkgPSBibG9jay0+c3VjY2Vzc29ycygpOworICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpLmNs
ZWFyKCk7CisgICAgICAgIAorICAgICAgICBtX2luc3RzLmFwcGVuZChWZWN0b3I8SW5zdD4oKSk7
CisgICAgfQorICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cz4KICAgICBUKiBlbnN1cmVTcGVjaWFsKFQqJiBmaWVsZCwgQXJndW1lbnRzJiYuLi4gYXJn
dW1lbnRzKQogICAgIHsKQEAgLTExMjMsNyArMTIxMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZhbHVlUmVwOjpTdGFja0FyZ3VtZW50Ogog
ICAgICAgICAgICAgICAgIGFyZyA9IEFyZzo6Y2FsbEFyZyh2YWx1ZS5yZXAoKS5vZmZzZXRGcm9t
U1AoKSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWUudmFsdWUoKSwgYXJnKTsK
KyAgICAgICAgICAgICAgICBhcHBlbmRTdG9yZShtb3ZlRm9yVHlwZSh2YWx1ZS52YWx1ZSgpKSwg
YXJnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE5NjEsNiArMjA1
MCwzMDggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgdm9p
ZCBhcHBlbmRYODZEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFpcjo6T3Bjb2Rl
IGNvbnZlcnRUb0RvdWJsZVdvcmQ7CisgICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKKyAgICAgICAg
c3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAg
ICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7CisgICAg
ICAgICAgICBkaXYgPSBYODZEaXYzMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEludDY0OgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1
YWRXb3JkNjQ7CisgICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChv
cCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKKyAgICAgICAgVG1wIHJlc3VsdCA9IG9wID09IERpdiA/
IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGls
ZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdvcmQsIG1fZWF4
LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUt
PmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7
CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpPcGNvZGUgb3ApCisgICAgewor
ICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZV
RGl2MzIgOiBYODZVRGl2NjQ7CisKKyAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0g
VU1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gbV9lYXggOiBtX2VkeDsK
KworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgbV9lYXgpOwor
ICAgICAgICBhcHBlbmQoWG9yNjQsIG1fZWR4LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChkaXYs
IG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVuZChN
b3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2Rl
IGxvYWRMaW5rT3Bjb2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZlbmNlID8gT1BDT0RFX0ZPUl9XSURUSChMb2FkTGlua0FjcSwgd2lkdGgpIDogT1BD
T0RFX0ZPUl9XSURUSChMb2FkTGluaywgd2lkdGgpOworICAgIH0KKyAgICAKKyAgICBBaXI6Ok9w
Y29kZSBzdG9yZUNvbmRPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVuY2UpCisgICAgeworICAg
ICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZFJlbCwgd2lkdGgp
IDogT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmQsIHdpZHRoKTsKKyAgICB9CisgICAgCisgICAg
Ly8gVGhpcyBjYW4gZW1pdCBjb2RlIGZvciB0aGUgZm9sbG93aW5nIHBhdHRlcm5zOgorICAgIC8v
IEF0b21pY1dlYWtDQVMKKyAgICAvLyBCaXRYb3IoQXRvbWljV2Vha0NBUywgMSkKKyAgICAvLyBB
dG9taWNTdHJvbmdDQVMKKyAgICAvLyBFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKQor
ICAgIC8vIE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gQnJhbmNo
KEF0b21pY1dlYWtDQVMpCisgICAgLy8gQnJhbmNoKEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhw
ZWN0ZWQpKQorICAgIC8vIEJyYW5jaChOb3RFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVk
KSkKKyAgICAvLworICAgIC8vIEl0IGFzc3VtZXMgdGhhdCBhdG9taWNWYWx1ZSBwb2ludHMgdG8g
dGhlIENBUywgYW5kIG1fdmFsdWUgcG9pbnRzIHRvIHRoZSBpbnN0cnVjdGlvbiBiZWluZworICAg
IC8vIGdlbmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBjb25zdW1lZCBldmVyeXRoaW5n
IHRoYXQgbmVlZHMgdG8gYmUgY29uc3VtZWQuCisgICAgdm9pZCBhcHBlbmRDQVMoVmFsdWUqIGF0
b21pY1ZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9t
aWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGF0b21pYyk7CisgICAgICAgIAorICAgICAgICBib29sIGlzQnJhbmNoID0gbV92YWx1ZS0+
b3AoKSA9PSBCcmFuY2g7CisgICAgICAgIGJvb2wgaXNTdHJvbmcgPSBhdG9taWMtPm9wKCkgPT0g
QXRvbWljU3Ryb25nQ0FTOworICAgICAgICBib29sIHJldHVybnNPbGRWYWx1ZSA9IG1fdmFsdWUt
Pm9wKCkgPT0gQXRvbWljU3Ryb25nQ0FTOworICAgICAgICAKKyAgICAgICAgV2lkdGggd2lkdGgg
PSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihh
dG9taWMpOworCisgICAgICAgIFRtcCB2YWx1ZVJlc3VsdFRtcDsKKyAgICAgICAgVG1wIGJvb2xS
ZXN1bHRUbXA7CisgICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUpIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFpbnZlcnQpOworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSB0bXAo
bV92YWx1ZSk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7
CisgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0
VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gbV9j
b2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YWx1ZVJlc3Vs
dFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IHRt
cChtX3ZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVG1wIHN1Y2Nlc3NCb29s
UmVzdWx0VG1wOworICAgICAgICBpZiAoaXNTdHJvbmcgJiYgIWlzQnJhbmNoKQorICAgICAgICAg
ICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBib29sUmVzdWx0VG1wOworCisg
ICAgICAgIFRtcCBleHBlY3RlZFZhbHVlVG1wID0gdG1wKGF0b21pYy0+Y2hpbGQoMCkpOworICAg
ICAgICBUbXAgbmV3VmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGlsZCgxKSk7CisgICAgICAgIAor
ICAgICAgICBGcmVxdWVudGVkQmxvY2sgc3VjY2VzczsKKyAgICAgICAgRnJlcXVlbnRlZEJsb2Nr
IGZhaWx1cmU7CisgICAgICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgc3VjY2VzcyA9
IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoaW52ZXJ0KTsKKyAgICAgICAgICAg
IGZhaWx1cmUgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29yKCFpbnZlcnQpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAg
YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPm9wZXJhdGlvblR5cGUoKSksIGltbU9y
VG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgICAgICBpZiAocmV0dXJuc09s
ZFZhbHVlKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWlj
U3Ryb25nQ0FTLCB3aWR0aCksIG1fZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAg
ICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPm9wZXJhdGlvblR5cGUo
KSksIG1fZWF4LCB2YWx1ZVJlc3VsdFRtcCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnJh
bmNoKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNoQXRv
bWljU3Ryb25nQ0FTLCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3Vj
Y2VzcyksIG1fZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgbV9i
bG9ja1RvQmxvY2tbbV9ibG9ja10tPnNldFN1Y2Nlc3NvcnMoc3VjY2VzcywgZmFpbHVyZSk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURU
SChBdG9taWNTdHJvbmdDQVMsIHdpZHRoKSwgQXJnOjpzdGF0dXNDb25kKGludmVydCA/IE1hY3Jv
QXNzZW1ibGVyOjpGYWlsdXJlIDogTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgdG1w
KGF0b21pYy0+Y2hpbGQoMSkpLCBhZGRyZXNzLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNB
Uk02NCgpKTsKKyAgICAgICAgLy8gV2Ugd2lzaCB0byBlbWl0OgorICAgICAgICAvLworICAgICAg
ICAvLyBCbG9jayAjcmVsb29wOgorICAgICAgICAvLyAgICAgTG9hZExpbmsKKyAgICAgICAgLy8g
ICAgIEJyYW5jaCBOb3RFcXVhbAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRoZW46I2ZhaWws
IEVsc2U6ICNzdG9yZQorICAgICAgICAvLyBCbG9jayAjc3RvcmU6CisgICAgICAgIC8vICAgICBT
dG9yZUNvbmQKKyAgICAgICAgLy8gICAgIFhvciAkMSwgJXJlc3VsdCAgICA8LS0tIG9ubHkgaWYg
IWludmVydAorICAgICAgICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6ICNk
b25lCisgICAgICAgIC8vIEJsb2NrICNmYWlsOgorICAgICAgICAvLyAgICAgTW92ZSAkaW52ZXJ0
LCAlcmVzdWx0CisgICAgICAgIC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29yczog
I2RvbmUKKyAgICAgICAgLy8gQmxvY2sgI2RvbmU6CisgICAgICAgIAorICAgICAgICBBaXI6OkJh
c2ljQmxvY2sqIHJlbG9vcEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Js
b2NrKiBzdG9yZUJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBz
dWNjZXNzQmxvY2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoICYmIGlzU3Ryb25n
KQorICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpC
YXNpY0Jsb2NrKiBmYWlsQmxvY2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoKQor
ICAgICAgICAgICAgZmFpbEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Js
b2NrKiBzdHJvbmdGYWlsQmxvY2s7CisgICAgICAgIGlmIChpc1N0cm9uZykKKyAgICAgICAgICAg
IHN0cm9uZ0ZhaWxCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayBj
b21wYXJpc29uRmFpbDsKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrIHdlYWtGYWlsOworICAgICAg
ICBpZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgIGNvbXBhcmlzb25GYWlsID0gc3Ryb25nRmFp
bEJsb2NrOworICAgICAgICAgICAgd2Vha0ZhaWwgPSByZWxvb3BCbG9jazsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGlmIChpc0JyYW5jaCkKKyAgICAgICAgICAgICAgICBjb21wYXJp
c29uRmFpbCA9IGZhaWx1cmU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY29t
cGFyaXNvbkZhaWwgPSBmYWlsQmxvY2s7CisgICAgICAgICAgICB3ZWFrRmFpbCA9IGZhaWx1cmU7
CisgICAgICAgIH0KKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOworICAgICAg
ICBBaXI6OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhiZWdpbkJs
b2NrLCBkb25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEp1bXApOworICAgICAg
ICBiZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAg
ICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQobG9hZExpbmtPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFz
RmVuY2UoKSksIG1fdmFsdWUsIHZhbHVlUmVzdWx0VG1wLCBhZGRyZXNzKTsKKyAgICAgICAgcmVs
b29wQmxvY2stPmFwcGVuZChPUENPREVfRk9SX1dJRFRIKEJyYW5jaCwgY2Fub25pY2FsV2lkdGgo
d2lkdGgpKSwgbV92YWx1ZSwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCkg
dmFsdWVSZXN1bHRUbXAsIGV4cGVjdGVkVmFsdWVUbXApOworICAgICAgICByZWxvb3BCbG9jay0+
c2V0U3VjY2Vzc29ycyhjb21wYXJpc29uRmFpbCwgc3RvcmVCbG9jayk7CisgICAgICAgIAorICAg
ICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhh
c0ZlbmNlKCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZVRtcCwgYWRkcmVzcywgc3VjY2Vzc0Jvb2xSZXN1
bHRUbXApOworICAgICAgICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHN0b3JlQmxvY2st
PmFwcGVuZChCcmFuY2hUZXN0MzIsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyks
IGJvb2xSZXN1bHRUbXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAgICBzdG9yZUJsb2Nr
LT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIHdlYWtGYWlsKTsKKyAgICAgICAgICAgIGRvbmVCbG9j
ay0+c3VjY2Vzc29ycygpLmNsZWFyKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghZG9u
ZUJsb2NrLT5zaXplKCkpOworICAgICAgICAgICAgZG9uZUJsb2NrLT5hcHBlbmQoT29wcywgbV92
YWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNTdHJvbmcpIHsKKyAg
ICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBBcmc6OnJlc0Nv
bmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCwgQXJnOjpiaXRJ
bW0oLTEpKTsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1Y2Nl
c3NCbG9jaywgcmVsb29wQmxvY2spOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IHN1Y2Nlc3NCbG9jay0+YXBwZW5kKE1vdmUsIG1fdmFsdWUsIEFyZzo6aW1tKCFpbnZlcnQpLCBi
b29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChKdW1w
LCBtX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPnNldFN1Y2Nlc3NvcnMo
ZG9uZUJsb2NrKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFp
bnZlcnQpCisgICAgICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChYb3IzMiwgbV92
YWx1ZSwgQXJnOjpiaXRJbW0oMSksIGJvb2xSZXN1bHRUbXAsIGJvb2xSZXN1bHRUbXApOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChKdW1wLCBt
X3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVC
bG9jayk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZhaWxCbG9j
ay0+YXBwZW5kKE1vdmUsIG1fdmFsdWUsIEFyZzo6aW1tKGludmVydCksIGJvb2xSZXN1bHRUbXAp
OworICAgICAgICAgICAgZmFpbEJsb2NrLT5hcHBlbmQoSnVtcCwgbV92YWx1ZSk7CisgICAgICAg
ICAgICBmYWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKGlzU3Ryb25nKSB7CisgICAgICAgICAgICBUbXAgdG1wID0gbV9j
b2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPmFwcGVuZChzdG9y
ZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIHZhbHVlUmVz
dWx0VG1wLCBhZGRyZXNzLCB0bXApOworICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBl
bmQoQnJhbmNoVGVzdDMyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCB0bXAs
IEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPnNldFN1Y2Nl
c3NvcnMoZmFpbEJsb2NrLCByZWxvb3BCbG9jayk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgYm9vbCBhcHBlbmRWb2lkQXRvbWljKEFpcjo6T3Bjb2RlIGF0b21pY09wY29kZSkKKyAgICB7
CisgICAgICAgIGlmIChtX3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKG1fdmFs
dWUpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwgQXJn
OjpJbW0sIGFkZHJlc3Mua2luZCgpKSAmJiBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAg
ICAgICAgICBhcHBlbmQoYXRvbWljT3Bjb2RlLCBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRy
ZXNzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoaXNWYWxpZEZvcm0oYXRvbWljT3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5k
KCkpKSB7CisgICAgICAgICAgICBhcHBlbmQoYXRvbWljT3Bjb2RlLCB0bXAobV92YWx1ZS0+Y2hp
bGQoMCkpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhcHBl
bmRHZW5lcmFsQXRvbWljKEFpcjo6T3Bjb2RlIG9wY29kZSkKKyAgICB7CisgICAgICAgIEF0b21p
Y1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgCisg
ICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgVG1wIG9sZFZhbHVl
ID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIFRtcCBuZXdWYWx1ZSA9IG1fY29kZS5uZXdU
bXAoR1ApOworICAgICAgICAKKyAgICAgICAgLy8gV2UgbmVlZCBhIENBUyBsb29wIG9yIGEgTEwv
U0MgbG9vcC4gVXNpbmcgcHJlcGFyZS9hdHRlbXB0IGphcmdvbiwgd2Ugd2FudDoKKyAgICAgICAg
Ly8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIFByZXBhcmUKKyAg
ICAgICAgLy8gICAgIG9wY29kZQorICAgICAgICAvLyAgICAgQXR0ZW1wdAorICAgICAgICAvLyAg
IFN1Y2Nlc3NvcnM6IFRoZW46I2RvbmUsIEVsc2U6I3JlbG9vcAorICAgICAgICAvLyBCbG9jayAj
ZG9uZToKKyAgICAgICAgLy8gICAgIE1vdmUgb2xkVmFsdWUsIHJlc3VsdAorICAgICAgICAKKyAg
ICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG9sZFZhbHVl
LCB0bXAoYXRvbWljKSk7CisgICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9v
cEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2Nr
OworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9j
ayhiZWdpbkJsb2NrLCBkb25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEp1bXAp
OworICAgICAgICBiZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAg
ICAgCisgICAgICAgIEFpcjo6T3Bjb2RlIHByZXBhcmVPcGNvZGU7CisgICAgICAgIGlmIChpc1g4
NigpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkgewor
ICAgICAgICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9
IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDE2
U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgV2lkdGgzMjoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTW92ZTMyOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAg
ICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNBUk02NCgpKTsKKyAgICAgICAgICAgIG9wY29kZSA9IGxvYWRMaW5rT3Bjb2RlKGF0b21pYy0+
b3BlcmF0aW9uV2lkdGgoKSwgYXRvbWljLT5oYXNGZW5jZSgpKTsKKyAgICAgICAgfQorICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKHByZXBhcmVPcGNvZGUsIG1fdmFsdWUsIGFkZHJlc3MsIG9s
ZFZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChvcGNvZGUgIT0gTm9wKSB7CisgICAgICAg
ICAgICBpZiAoaW1tKGF0b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJn
OjpJbW0sIEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2st
PmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIGltbShhdG9taWMtPmNoaWxkKDApKSwgb2xkVmFsdWUs
IG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJn
OjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2st
PmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIHRtcChhdG9taWMtPmNoaWxkKDApKSwgb2xkVmFsdWUs
IG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJlbG9vcEJs
b2NrLT5hcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgb2xkVmFsdWUs
IG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoaW1tKGF0b21pYy0+Y2hpbGQoMCkpICYm
IGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIGltbShhdG9taWMtPmNo
aWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIHRtcChhdG9taWMtPmNo
aWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
aWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIGNhc09wY29kZSA9IE9QQ09E
RV9GT1JfV0lEVEgoQnJhbmNoQXRvbWljU3Ryb25nQ0FTLCBhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCkpOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUo
YXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwgbV9lYXgpOworICAgICAgICAgICAgcmVsb29wQmxv
Y2stPmFwcGVuZChjYXNPcGNvZGUsIG1fdmFsdWUsIEFyZzo6c3RhdHVzQ29uZChNYWNyb0Fzc2Vt
Ymxlcjo6U3VjY2VzcyksIG1fZWF4LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOworICAgICAgICAgICAg
VG1wIGJvb2xSZXN1bHQgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgICAgIHJlbG9vcEJs
b2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSwgYXRv
bWljLT5oYXNGZW5jZSgpKSwgbmV3VmFsdWUsIGFkZHJlc3MsIGJvb2xSZXN1bHQpOworICAgICAg
ICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIEFyZzo6cmVzQ29uZChNYWNy
b0Fzc2VtYmxlcjo6WmVybyksIGJvb2xSZXN1bHQsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAg
IH0KKyAgICAgICAgcmVsb29wQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrLCByZWxvb3BC
bG9jayk7CisgICAgfQorICAgIAogICAgIHZvaWQgbG93ZXIoKQogICAgIHsKICAgICAgICAgc3dp
dGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewpAQCAtMTk3MSwzMCArMjM2Miw1MCBAQCBwcml2YXRl
OgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOiB7Ci0gICAgICAg
ICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG1vdmVGb3JUeXBlKG1fdmFsdWUtPnR5
cGUoKSksIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAg
ICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAg
ICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gQWlyOjpPb3BzOworICAgICAgICAgICAgaWYg
KG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAobWVtb3J5LT50
eXBlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAgICAg
ICBvcGNvZGUgPSBMb2FkQWNxMzI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgSW50NjQ6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExvYWRB
Y3E2NDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgb3Bjb2RlID0gbW92ZUZvclR5cGUobWVtb3J5LT50eXBl
KCkpOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1f
dmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOFM6IHsKLSAgICAg
ICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDhTaWduZWRFeHRlbmRUbzMy
LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFp
cjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgp
ID8gTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIDogTG9hZDhTaWduZWRFeHRlbmRUbzMyOworICAg
ICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBMb2FkOFo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGlu
Z0luc3QobV92YWx1ZSwgTG9hZDgsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVl
KSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5
VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOCA6IExvYWQ4OworICAgICAgICAgICAgYXBw
ZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSks
IHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBMb2FkMTZTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFs
dWUsIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcCht
X3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8
TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIDog
TG9hZDE2U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3Qo
bV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2Wjog
ewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTYsIG1fdmFs
dWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2Fk
QWNxMTYgOiBMb2FkMTY7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUs
IG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQWRk
OiB7CiAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjA5Miw3ICsyNTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX3Zh
bHVlLT5pc0NoaWxsKCkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgp
KTsKICAgICAgICAgICAgIGlmIChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsK
LSAgICAgICAgICAgICAgICBsb3dlclg4NkRpdihEaXYpOworICAgICAgICAgICAgICAgIGFwcGVu
ZFg4NkRpdihEaXYpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIEFTU0VSVCghaXNYODYoKSB8fCBpc0Zsb2F0KG1fdmFsdWUtPnR5cGUoKSkpOwpA
QCAtMjEwMyw3ICsyNTE0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIFVEaXY6IHsKICAg
ICAgICAgICAgIGlmIChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAg
ICAgICAgICAgICBsb3dlclg4NlVEaXYoVURpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2
VURpdihVRGl2KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAg
LTIxMTcsMTMgKzI1MjgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNb2Q6IHsKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzWDg2KCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fdmFsdWUtPmlzQ2hpbGwoKSk7Ci0gICAgICAgICAgICBsb3dlclg4NkRpdihNb2QpOwor
ICAgICAgICAgICAgYXBwZW5kWDg2RGl2KE1vZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIFVNb2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGlzWDg2KCkpOwotICAgICAgICAgICAgbG93ZXJYODZVRGl2KFVNb2QpOworICAgICAgICAgICAg
YXBwZW5kWDg2VURpdihVTW9kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC0yMTYyLDEwICsyNTczLDI3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYXBwZW5kVW5P
cDxOb3QzMiwgTm90NjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoaXMgcGF0
dGVybiBpcyBzdXBlciB1c2VmdWwgb24gYm90aCB4ODYgYW5kIEFSTTY0LCBzaW5jZSB0aGUgaW52
ZXJzaW9uIG9mIHRoZSBDQVMgcmVzdWx0CisgICAgICAgICAgICAvLyBjYW4gYmUgZG9uZSB3aXRo
IHplcm8gY29zdCBvbiB4ODYgKGp1c3QgZmxpcCB0aGUgc2V0IGZyb20gRSB0byBORSkgYW5kIGl0
J3MgYSBwcm9ncmVzc2lvbgorICAgICAgICAgICAgLy8gb24gQVJNNjQgKHNpbmNlIFNUWCByZXR1
cm5zIDAgb24gc3VjY2Vzcywgc28gb3JkaW5hcmlseSB3ZSBoYXZlIHRvIGZsaXAgaXQpLgorICAg
ICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludCgxKQorICAgICAgICAgICAgICAg
ICYmIGlzQXRvbWljQ0FTKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAg
ICAgICAmJiBjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAg
ICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBh
cHBlbmRDQVMobV92YWx1ZS0+Y2hpbGQoMCksIHRydWUpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgYXBwZW5kQmluT3A8
WG9yMzIsIFhvcjY0LCBYb3JEb3VibGUsIFhvckZsb2F0LCBDb21tdXRhdGl2ZT4oCiAgICAgICAg
ICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRGVwZW5k
OiB7CisgICAgICAgICAgICBhcHBlbmRVbk9wPERlcGVuZDMyLCBEZXBlbmQ2ND4obV92YWx1ZS0+
Y2hpbGQoMCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBTaGw6IHsKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQzMigxKSkg
ewpAQCAtMjI2Niw3ICsyNjk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlVG9TdG9yZSwgYWRkciht
X3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMjg3LDcgKzI3MTUsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTgsIHZh
bHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3Zh
bHVlLCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTIzMDgsNyArMjczNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBhcHBlbmRTdG9yZShBaXI6OlN0b3JlMTYsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVl
KSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCB2YWx1ZVRvU3RvcmUsIGFkZHIo
bV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI0MTYsNyAr
Mjg0NCwyMiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBFcXVhbDoKLSAg
ICAgICAgY2FzZSBOb3RFcXVhbDoKKyAgICAgICAgY2FzZSBOb3RFcXVhbDogeworICAgICAgICAg
ICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMKKyAg
ICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0gbV92YWx1ZS0+
Y2hpbGQoMSkKKyAgICAgICAgICAgICAgICAmJiBjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxk
KDApKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMobV92YWx1
ZS0+Y2hpbGQoMCktPmNoaWxkKDEpKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2xvY2tl
ZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgxKSkpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAg
ICAgICBhcHBlbmRDQVMobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPm9wY29kZSgpID09IE5v
dEVxdWFsKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoY3JlYXRlQ29tcGFy
ZShtX3ZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAg
IAogICAgICAgICBjYXNlIExlc3NUaGFuOgogICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuOgogICAg
ICAgICBjYXNlIExlc3NFcXVhbDoKQEAgLTI3MjcsNiArMzE3MCwzOSBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBCcmFuY2g6IHsKKyAgICAgICAgICAgIGlmIChjYW5CZUlu
dGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgICAgIFZhbHVlKiBicmFu
Y2hDaGlsZCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIHN3aXRjaCAoYnJh
bmNoQ2hpbGQtPm9wY29kZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FT
OgorICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFuY2hDaGlsZCk7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZCwgZmFsc2UpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICAgICAgICAgICAgICAvLyBBIGJyYW5jaCBp
cyBhIGNvbXBhcmlzb24gdG8gemVyby4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJyYW5jaENo
aWxkLT5jaGlsZCgwKS0+aXNJbnQoMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1p
dEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENB
UyhicmFuY2hDaGlsZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgRXF1YWw6CisgICAgICAgICAgICAg
ICAgY2FzZSBOb3RFcXVhbDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJyYW5jaENoaWxkLT5j
aGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAgICAgICAgICAgICAgICAg
ICAgICAmJiBjYW5CZUludGVybmFsKGJyYW5jaENoaWxkLT5vcGNvZGUoMCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAmJiBicmFuY2hDaGlsZC0+Y2hpbGQoMCktPmNoaWxkKDApID09IGJyYW5j
aENoaWxkLT5jaGlsZCgxKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJu
YWwoYnJhbmNoQ2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwo
YnJhbmNoQ2hpbGQtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENB
UyhicmFuY2hDaGlsZC0+Y2hpbGQoMCksIGJyYW5jaENoaWxkLT5vcGNvZGUoKSA9PSBOb3RFcXVh
bCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoY3JlYXRlQnJh
bmNoKG1fdmFsdWUtPmNoaWxkKDApKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTI3ODQsNyArMzI2MCw4MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYXBwZW5kKEFpcjo6
RW50cnlTd2l0Y2gpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICBjYXNlIEF0b21pY1N0cm9u
Z0NBUzogeworICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUsIGZhbHNlKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWlj
WGNoZ0FkZDogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFz
PEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RF
X0ZPUl9XSURUSChBdG9taWNBZGQsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXJnIGFkZHJlc3Mg
PSBhZGRyKGF0b21pYyk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVf
Rk9SX1dJRFRIKEF0b21pY1hjaGdBZGQsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSk7CisgICAg
ICAgICAgICBpZiAoaXNWYWxpZE9wY29kZShvcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNzKSkgewor
ICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkp
LCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9taWMpKTsKKyAgICAgICAgICAgICAgICBh
cHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9Q
Q09ERV9GT1JfV0lEVEgoQWRkLCBjYW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAgICBjYXNlIEF0
b21pY1hjaGdTdWI6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVl
LT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9Q
Q09ERV9GT1JfV0lEVEgoQXRvbWljU3ViLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdl
bmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChTdWIsIGNhbm9uaWNhbFdpZHRoKGF0b21pYy0+
b3BlcmF0aW9uV2lkdGgoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDogeworICAgICAgICAgICAgQXRv
bWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAg
ICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNBbmQsIGF0b21p
Yy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEFu
ZCwgY2Fub25pY2FsV2lkdGgoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNY
Y2hnT3I6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxB
dG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9G
T1JfV0lEVEgoQXRvbWljT3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0
b21pYyhPUENPREVfRk9SX1dJRFRIKE9yLCBjYW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlv
bldpZHRoKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVl
KiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChh
cHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWG9yLCBhdG9taWMtPm9wZXJh
dGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChYb3IsIGNhbm9u
aWNhbFdpZHRoKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZzogewor
ICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVl
PigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWlj
KTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRv
bWljWGNoZywgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1Zh
bGlkT3Bjb2RlKG9wY29kZSwgQXJnOjpUbXAsIGFkZHJlc3MpKSB7CisgICAgICAgICAgICAgICAg
YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIHRtcChhdG9taWMtPmNo
aWxkKDApKSwgdG1wKGF0b21pYykpOworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRt
cChhdG9taWMpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RF
X0ZPUl9XSURUSChYb3IsIGNhbm9uaWNhbFdpZHRoKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjc5Miw2NCArMzM0
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGRhdGFMb2coIkZBVEFMOiBjb3VsZCBub3QgbG93ZXIg
IiwgZGVlcER1bXAobV9wcm9jZWR1cmUsIG1fdmFsdWUpLCAiXG4iKTsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0KLSAgICB2b2lkIGxvd2VyWDg2RGl2KEIz
OjpPcGNvZGUgb3ApCi0gICAgewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgICAg
IFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1w
KFg4NlJlZ2lzdGVyczo6ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3Vi
bGVXb3JkOwotICAgICAgICBBaXI6Ok9wY29kZSBkaXY7Ci0gICAgICAgIHN3aXRjaCAobV92YWx1
ZS0+dHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgSW50MzI6Ci0gICAgICAgICAgICBjb252ZXJ0VG9E
b3VibGVXb3JkID0gWDg2Q29udmVydFRvRG91YmxlV29yZDMyOwotICAgICAgICAgICAgZGl2ID0g
WDg2RGl2MzI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ2NDoKLSAgICAg
ICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0OwotICAg
ICAgICAgICAgZGl2ID0gWDg2RGl2NjQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8IG9w
ID09IE1vZCk7Ci0gICAgICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9
PSBEaXYgPyBYODZSZWdpc3RlcnM6OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAg
IGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBl
bmQoY29udmVydFRvRG91YmxlV29yZCwgZWF4LCBlZHgpOwotICAgICAgICBhcHBlbmQoZGl2LCBl
YXgsIGVkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBU
bXAocmVzdWx0KSwgdG1wKG1fdmFsdWUpKTsKLQotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFN
KG9wKTsKLSAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9
Ci0KLSAgICB2b2lkIGxvd2VyWDg2VURpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBDUFUo
WDg2KSB8fCBDUFUoWDg2XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6
ZWF4KTsKLSAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAgICAg
ICAgQWlyOjpPcGNvZGUgZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURpdjMy
IDogWDg2VURpdjY0OwotCi0gICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVNb2Qp
OwotICAgICAgICBYODZSZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gVURpdiA/
IFg4NlJlZ2lzdGVyczo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5k
KE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChYb3I2
NCwgZWR4LCBlZHgpOwotICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1fdmFsdWUt
PmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1wKG1fdmFs
dWUpKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVBQ0hB
QkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlmCi0gICAgfQotCisgICAgCiAgICAgSW5kZXhTZXQ8
VmFsdWU+IG1fbG9ja2VkOyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQgd2lsbCBoYXZlIG5vIFRt
cCBpbiBBaXIuCiAgICAgSW5kZXhNYXA8VmFsdWUsIFRtcD4gbV92YWx1ZVRvVG1wOyAvLyBUaGVz
ZSBhcmUgdmFsdWVzIHRoYXQgbXVzdCBoYXZlIGEgVG1wIGluIEFpci4gV2Ugc2F5IHRoYXQgYSBW
YWx1ZSogd2l0aCBhIG5vbi1udWxsIFRtcCBpcyAicGlubmVkIi4KICAgICBJbmRleE1hcDxWYWx1
ZSwgVG1wPiBtX3BoaVRvVG1wOyAvLyBFYWNoIFBoaSBnZXRzIGl0cyBvd24gVG1wLgpAQCAtMjg2
NCw3ICszMzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxWZWN0b3I8SW5zdCwgND4+IG1f
aW5zdHM7CiAgICAgVmVjdG9yPEluc3Q+IG1fcHJvbG9ndWU7Ci0KKyAgICAKICAgICBCMzo6QmFz
aWNCbG9jayogbV9ibG9jazsKICAgICBib29sIG1faXNSYXJlOwogICAgIHVuc2lnbmVkIG1faW5k
ZXg7CkBAIC0yODc1LDYgKzMzNjgsMTIgQEAgcHJpdmF0ZToKIAogICAgIFByb2NlZHVyZSYgbV9w
cm9jZWR1cmU7CiAgICAgQ29kZSYgbV9jb2RlOworCisgICAgQWlyOjpCbG9ja0luc2VydGlvblNl
dCBtX2Jsb2NrSW5zZXJ0aW9uU2V0OworCisgICAgVG1wIG1fZWF4OworICAgIFRtcCBtX2VjeDsK
KyAgICBUbXAgbV9lZHg7CiB9OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMjk5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMzAgKzM0LDQ4IEBAIE1lbW9yeVZhbHVlOjp+TWVtb3J5VmFsdWUoKQog
ewogfQogCitUeXBlIE1lbW9yeVZhbHVlOjphY2Nlc3NUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAo
aXNMb2FkKG9wY29kZSgpKSkKKyAgICAgICAgcmV0dXJuIHR5cGUoKTsKKyAgICAvLyBUaGlzIGhh
cHBlbnMgdG8gd29yayBmb3IgYXRvbWljcywgdG9vLiBUaGF0J3Mgd2h5IEF0b21pY1ZhbHVlIGRv
ZXMgbm90IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy4KKyAgICByZXR1cm4gY2hpbGQoMCktPnR5cGUo
KTsKK30KKworQmFuayBNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuaygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGJhbmtGb3JUeXBlKGFjY2Vzc1R5cGUoKSk7Cit9CisKIHNpemVfdCBNZW1vcnlWYWx1ZTo6
YWNjZXNzQnl0ZVNpemUoKSBjb25zdAogeworICAgIHJldHVybiBieXRlcyhhY2Nlc3NXaWR0aCgp
KTsKK30KKworV2lkdGggTWVtb3J5VmFsdWU6OmxvYWRTdG9yZVdpZHRoKCkgY29uc3QKK3sKICAg
ICBzd2l0Y2ggKG9wY29kZSgpKSB7CiAgICAgY2FzZSBMb2FkOFo6CiAgICAgY2FzZSBMb2FkOFM6
CiAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4gV2lk
dGg4OwogICAgIGNhc2UgTG9hZDE2WjoKICAgICBjYXNlIExvYWQxNlM6CiAgICAgY2FzZSBTdG9y
ZTE2OgotICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgcmV0dXJuIFdpZHRoMTY7CiAgICAgY2Fz
ZSBMb2FkOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZSh0eXBlKCkpOworICAgICAgICByZXR1
cm4gd2lkdGhGb3JUeXBlKHR5cGUoKSk7CiAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmV0dXJu
IHNpemVvZlR5cGUoY2hpbGQoMCktPnR5cGUoKSk7CisgICAgICAgIHJldHVybiB3aWR0aEZvclR5
cGUoY2hpbGQoMCktPnR5cGUoKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBXaWR0
aDg7CiAgICAgfQogfQogCiBXaWR0aCBNZW1vcnlWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAog
ewotICAgIHJldHVybiB3aWR0aEZvckJ5dGVzKGFjY2Vzc0J5dGVTaXplKCkpOworICAgIHJldHVy
biBsb2FkU3RvcmVXaWR0aCgpOwogfQogCiB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21t
YVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdApAQCAtNjcsNiArODUsOCBA
QCB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImCiAgICAgaWYgKChpc0xv
YWQoKSAmJiBlZmZlY3RzKCkucmVhZHMgIT0gcmFuZ2UoKSkKICAgICAgICAgfHwgKGlzU3RvcmUo
KSAmJiBlZmZlY3RzKCkud3JpdGVzICE9IHJhbmdlKCkpKQogICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJyYW5nZSA9ICIsIHJhbmdlKCkpOworICAgIGlmIChwaGFudG9tUmFuZ2UoKSkKKyAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAicGhhbnRvbVJhbmdlID0gIiwgcGhhbnRvbVJhbmdlKCkpOwog
fQogCiBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CkBAIC03NCw2ICs5NCw1
OCBAQCBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAgICAgcmV0dXJuIG5l
dyBNZW1vcnlWYWx1ZSgqdGhpcyk7CiB9CiAKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1
dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3Vm
Zml4IHRoYXQKKy8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCitNZW1vcnlWYWx1ZTo6
TWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBw
b2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBr
aW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCit7Cisg
ICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgp
KSB7CisgICAgICAgIGNhc2UgTG9hZDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAg
ICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RvcmU4OgorICAgICAgICBjYXNlIFN0
b3JlMTY6CisgICAgICAgIGNhc2UgU3RvcmU6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBW
b2lkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0aGlz
IGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgorTWVtb3J5
VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50
ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBv
cmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewor
ICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBMb2FkOFo6Cisg
ICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQxNlo6CisgICAgICAgIGNhc2Ug
TG9hZDE2UzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0
aGlzIGZvcm0gZm9yIHN0b3Jlcy4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQs
IE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zm
c2V0ID0gMCkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwg
dmFsdWUsIHBvaW50ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCit7CisgICAgQVNTRVJUKGlz
U3RvcmUoa2luZC5vcGNvZGUoKSkpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAog
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNNZW1vcnlWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M01lbW9yeVZhbHVlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM01lbW9yeVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDQ4ICsyNywxNyBAQAog
CiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzQmFuay5oIgogI2luY2x1ZGUgIkIz
SGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsKIAotLy8gRklYTUU6IFdlIHdhbnQgdG8gYWxsb3cgZmVuY2VkIG1lbW9yeSBh
Y2Nlc3NlcyBvbiBBUk0uCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyMzQ5Ci0KIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIE1lbW9yeVZhbHVlIDogcHVibGlj
IFZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKICAg
ICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICBjYXNlIExvYWQ4
WjoKLSAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAg
Y2FzZSBMb2FkMTZTOgotICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIGNhc2UgU3RvcmU4Ogot
ICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzU3RvcmUoS2luZCBraW5kKQot
ICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgU3Rv
cmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzTG9hZChLaW5kIGtp
bmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWNjZXB0cyhraW5kKSAmJiAhaXNTdG9yZShraW5k
KTsKKyAgICAgICAgcmV0dXJuIGlzTWVtb3J5KGtpbmQub3Bjb2RlKCkpOwogICAgIH0KIAogICAg
IH5NZW1vcnlWYWx1ZSgpOwpAQCAtNzgsNzYgKzQ3LDU2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IEhlYXBSYW5nZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CiAgICAgdm9pZCBz
ZXRSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fcmFuZ2UgPSByYW5nZTsgfQorICAg
IAorICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHJhbmdlLgorICAgIGNvbnN0IEhlYXBSYW5n
ZSYgYWNjZXNzUmFuZ2UoKSBjb25zdCB7IHJldHVybiByYW5nZSgpOyB9CisgICAgdm9pZCBzZXRB
Y2Nlc3NSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IHNldFJhbmdlKHJhbmdlKTsgfQor
ICAgIAorICAgIGNvbnN0IEhlYXBSYW5nZSYgZmVuY2VSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmVuY2VSYW5nZTsgfQorICAgIHZvaWQgc2V0RmVuY2VSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJh
bmdlKSB7IG1fZmVuY2VSYW5nZSA9IHJhbmdlOyB9CisKKyAgICBib29sIGlzU3RvcmUoKSBjb25z
dCB7IHJldHVybiBpc1N0b3JlKG9wY29kZSgpKTsgfQorICAgIGJvb2wgaXNMb2FkKCkgY29uc3Qg
eyByZXR1cm4gaXNMb2FkKG9wY29kZSgpKTsgfQogCi0gICAgYm9vbCBpc1N0b3JlKCkgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IFZvaWQ7IH0KLSAgICBib29sIGlzTG9hZCgpIGNvbnN0IHsgcmV0
dXJuIHR5cGUoKSAhPSBWb2lkOyB9CisgICAgYm9vbCBoYXNGZW5jZSgpIGNvbnN0IHsgcmV0dXJu
ICEhZmVuY2VSYW5nZSgpOyB9CiAKKyAgICBUeXBlIGFjY2Vzc1R5cGUoKSBjb25zdDsKKyAgICBC
YW5rIGFjY2Vzc0JhbmsoKSBjb25zdDsKICAgICBzaXplX3QgYWNjZXNzQnl0ZVNpemUoKSBjb25z
dDsKLSAgICBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0OworICAgIAorICAgIC8vIFNsaWdodGx5
IGZhc3RlciB2ZXJzaW9uIG9mIGFjY2Vzc1dpZHRoLCBpZiB5b3Uga25vdyB0aGF0IHlvdSdyZSB3
b3JraW5nIHdpdGggYSBsb2FkIG9yIHN0b3JlLgorICAgIFdpZHRoIGxvYWRTdG9yZVdpZHRoKCkg
Y29uc3Q7CisgICAgCisgICAgdmlydHVhbCBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0OwogCiBw
cm90ZWN0ZWQ6Ci0gICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwg
UHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZhbHVlKiBjbG9uZUltcGwoKSBj
b25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOwot
Ci0gICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywg
b3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAotICAgIC8vIGRlc2Ny
aWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBl
IHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAp
Ci0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2lu
dGVyKQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBNZW1v
cnlWYWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9y
aWdpbiwgaW50MzJfdCBvZmZzZXQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDog
VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBhcmd1bWVudHMuLi4pCiAg
ICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0
b3AoKSkKICAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTG9hZDoKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAgICAgICAg
Y2FzZSBMb2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAgICAgICBjYXNl
IExvYWQxNlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAgICBj
YXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAgIEFT
U0VSVCh0eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBM
b2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2
ZSBhIHN1ZmZpeCB0aGF0CisgICAgLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KKyAg
ICBNZW1vcnlWYWx1ZShLaW5kLCBUeXBlLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90
IG9mZnNldCA9IDApOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhl
IHJldHVybiB0eXBlIGlzIGltcGxpZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmln
aW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6
IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKLSAgICB7
Ci0gICAgfQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGlu
dDMyX3Qgb2Zmc2V0ID0gMCk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBzdG9yZXMuCi0g
ICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZh
bHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUoQ2hlY2tl
ZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKLSAgICAgICAgLCBt
X29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQotICAg
IHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAo
a2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAgICBj
YXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHZhbHVlLCBW
YWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKTsKKyAgICAKICAgICBpbnQzMl90IG1f
b2Zmc2V0IHsgMCB9OwotICAgIEhlYXBSYW5nZSBtX3JhbmdlOworICAgIEhlYXBSYW5nZSBtX3Jh
bmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSBtX2ZlbmNlUmFuZ2UgeyBI
ZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzVHlwZS5oIgorI2luY2x1ZGUg
IkIzV2lkdGguaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKQEAgLTgyLDcgKzgzLDYgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsK
ICAgICBNb2QsIC8vIEFsbCBiZXRzIGFyZSBvZmYgYXMgdG8gd2hhdCB3aWxsIGhhcHBlbiB3aGVu
IHlvdSBleGVjdXRlIHRoaXMgZm9yIC0yXjMxJS0xIGFuZCB4JTAuCiAgICAgVU1vZCwKIAotCiAg
ICAgLy8gUG9seW1vcnBoaWMgbmVnYXRpb24uIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdGhpcyBm
b3IgZmxvYXRpbmcgcG9pbnQsIHNpbmNlIGludGVnZXIgbmVnYXRpb24KICAgICAvLyBpcyBleGFj
dGx5IGxpa2UgU3ViKDAsIHgpLiBCdXQgdGhhdCdzIG5vdCB0cnVlIGZvciBmbG9hdGluZyBwb2lu
dC4gU3ViKDAsIDApIGlzIDAsIHdoaWxlCiAgICAgLy8gTmVnKDApIGlzIC0wLiBBbHNvLCB3ZSBj
YW5vbmljYWxpemUgU3ViKDAsIHgpIGludG8gTmVnKHgpIGluIGNhc2Ugb2YgaW50ZWdlcnMuCkBA
IC0xNjIsNiArMTYyLDEwNyBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIFN0b3JlMTYs
CiAgICAgLy8gVGhpcyBpcyBhIHBvbHltb3JwaGljIHN0b3JlIGZvciBJbnQzMiwgSW50NjQsIEZs
b2F0LCBhbmQgRG91YmxlLgogICAgIFN0b3JlLAorICAgIAorICAgIC8vIEF0b21pYyBjb21wYXJl
IGFuZCBzd2FwIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4uIE1heSBjaG9vc2UgdG8gZG8gbm90aGlu
ZyBhbmQgcmV0dXJuIGZhbHNlLiBZb3UgY2FuCisgICAgLy8gdXN1YWxseSBhc3N1bWUgdGhhdCB0
aGlzIGlzIGZhc3RlciBhbmQgcmVzdWx0cyBpbiBsZXNzIGNvZGUgdGhhbiBBdG9taWNTdHJvbmdD
QVMsIHRob3VnaCB0aGF0J3MKKyAgICAvLyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSBvbiBJbnRlbCwg
aWYgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIGRvZXMgaXRzIGpvYi4gSW1hZ2luZSB0aGF0IHRoaXMg
b3Bjb2RlIGlzCisgICAgLy8gYXMgaWYgeW91IGRpZCB0aGlzIGF0b21pY2FsbHk6CisgICAgLy8K
KyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8vIGJvb2wgQXRvbWljV2Vha0NBUyhU
IGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7CisgICAgLy8gICAg
IGlmICghcmFuZCgpKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBSZWFsIHdvcmxk
IGV4YW1wbGUgb2YgdGhpczogY29udGV4dCBzd2l0Y2ggb24gQVJNIHdoaWxlIGRvaW5nIENBUy4K
KyAgICAvLyAgICAgaWYgKCpwdHIgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAvLyAgICAgKnB0ciA9IG5ld1ZhbHVlOworICAgIC8vICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgYWxsIGF0b21pY3Mg
cHV0IHRoZSBwb2ludGVyIGxhc3QgdG8gYmUgY29uc2lzdGVudCB3aXRoIGhvdyBsb2FkcyBhbmQg
c3RvcmVzIHdvcmsuIFRoaXMKKyAgICAvLyBpcyBhIGdvb2Z5IHRyYWRpdGlvbiwgYnV0IGl0J3Mg
aGFybWxlc3MsIGFuZCBiZXR0ZXIgdGhhbiBiZWluZyBpbmNvbnNpc3RlbnQuCisgICAgLy8KKyAg
ICAvLyBOb3RlIHRoYXQgd2VhayBDQVMgaGFzIG5vIGZlbmNpbmcgZ3VhcmFudGVlcyB3aGVuIGl0
IGZhaWxzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZworICAgIC8vIHRyYW5zZm9ybWF0
aW9uIGlzIGFsd2F5cyB2YWxpZDoKKyAgICAvLworICAgIC8vIEJlZm9yZToKKyAgICAvLworICAg
IC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAg
ICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8K
KyAgICAvLyBBZnRlcjoKKyAgICAvLworICAgIC8vICAgICAgICAgQnJhbmNoKEVxdWFsKExvYWQo
cHRyKSwgZXhwZWN0ZWQpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I2F0dGVtcHQs
IEVsc2U6I2ZhaWwKKyAgICAvLyAgICAgQkIjYXR0ZW1wdDoKKyAgICAvLyAgICAgICAgIEJyYW5j
aChBdG9taWNXZWFrQ0FTKGV4cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vz
c29yczogVGhlbjojc3VjY2VzcywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQm90aCBraW5k
cyBvZiBDQVMgZm9yIG5vbi1jYW5vbmljYWwgd2lkdGhzIChXaWR0aDggYW5kIFdpZHRoMTYpIGln
bm9yZSB0aGUgaXJyZWxldmFudCBiaXRzIG9mIHRoZQorICAgIC8vIGlucHV0LgorICAgIEF0b21p
Y1dlYWtDQVMsCisgICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1
cm5zIHRoZSBvbGQgdmFsdWUuIERvZXMgbm90IGhhdmUgdGhlIG5vbmRldGVybWluaXNtIG9mIFdl
YWtDQVMuCisgICAgLy8gVGhpcyBpcyBhIGJpdCBtb3JlIGNvZGUgYW5kIGEgYml0IHNsb3dlciBp
biBzb21lIGNhc2VzLCB0aG91Z2ggbm90IGJ5IGEgbG90LiBJbWFnaW5lIHRoYXQgdGhpcworICAg
IC8vIG9wY29kZSBpcyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAvLworICAg
IC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gVCBBdG9taWNTdHJvbmdDQVMoVCBleHBl
Y3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBUKiBwdHIpCisgICAgLy8geworICAgIC8vICAgICBUIG9s
ZFZhbHVlID0gKnB0cjsKKyAgICAvLyAgICAgaWYgKG9sZFZhbHVlID09IGV4cGVjdGVkVmFsdWUp
CisgICAgLy8gICAgICAgICAqcHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVybiBvbGRW
YWx1ZQorICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBBdG9taWNXZWFrQ0FTIGFu
ZCBBdG9taWNTdHJvbmdDQVMgc29ydCBvZiBoYXZlIHRoaXMga2luZCBvZiBlcXVpdmFsZW5jZToK
KyAgICAvLworICAgIC8vIEF0b21pY1dlYWtDQVMoQGV4cCwgQG5ldywgQHB0cikgPT0gRXF1YWwo
QXRvbWljU3Ryb25nQ0FTKEBleHAsIEBuZXcsIEBwdHIpLCBAZXhwKQorICAgIC8vCisgICAgLy8g
QXNzdW1pbmcgdGhhdCB0aGUgV2Vha0NBUyBkb2VzIG5vdCBzcHVyaW91c2x5IGZhaWwsIG9mIGNv
dXJzZS4KKyAgICBBdG9taWNTdHJvbmdDQVMsCisgICAgCisgICAgLy8gQXRvbWljYWxseSBfX18g
YSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybiB0aGUgb2xkIHZhbHVlLiBTeW50YXg6CisgICAg
Ly8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNYY2hnX19fKEBvcGVyYW5kLCBAcHRyKQorICAg
IC8vCisgICAgLy8gRm9yIG5vbi1jYW5vbmljYWwgd2lkdGhzIChXaWR0aDggYW5kIFdpZHRoMTYp
LCB0aGVzZSByZXR1cm4gc2lnbi1leHRlbmRlZCByZXN1bHRzIGFuZCBpZ25vcmUgdGhlCisgICAg
Ly8gaXJyZWxldmFudCBiaXRzIG9mIHRoZWlyIGlucHV0cy4KKyAgICBBdG9taWNYY2hnQWRkLAor
ICAgIEF0b21pY1hjaGdBbmQsCisgICAgQXRvbWljWGNoZ09yLAorICAgIEF0b21pY1hjaGdTdWIs
CisgICAgQXRvbWljWGNoZ1hvciwKKyAgICAKKyAgICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxk
IGhhdmUgQXRvbWljWGNoZ05lZyBhbmQgQXRvbWljWGNoZ05vdC4KKyAgICAKKyAgICAvLyBBdG9t
aWNhbGx5IGV4Y2hhbmdlIGEgdmFsdWUgd2l0aCBhIG1lbW9yeSBsb2NhdGlvbi4gU3ludGF4Ogor
ICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWljWGNoZyhAbmV3VmFsdWUsIEBwdHIpCisg
ICAgQXRvbWljWGNoZywKKyAgICAKKyAgICAvLyBJbnRyb2R1Y2UgYW4gaW52aXNpYmxlIGRlcGVu
ZGVuY3kgZm9yIGJsb2NraW5nIG1vdGlvbiBvZiBsb2FkcyB3aXRoIHJlc3BlY3QgdG8gZWFjaCBv
dGhlci4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9IERlcGVuZChAcGhhbnRvbSkK
KyAgICAvLworICAgIC8vIFRoaXMgaXMgZXZlbnR1YWxseSBjb2RlZ2VuZXJhdGVkIHRvIGhhdmUg
bG9jYWwgc2VtYW50aWNzIGFzIGlmIHdlIGRpZDoKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSAk
MAorICAgIC8vCisgICAgLy8gQnV0IGl0IGVuc3VyZXMgdGhhdCB0aGUgdXNlcnMgb2YgQHJlc3Vs
dCBjYW5ub3QgZXhlY3V0ZSB1bnRpbCBAcGhhbnRvbSBpcyBjb21wdXRlZC4KKyAgICAvLworICAg
IC8vIFRoZSBjb21waWxlciBpcyBub3QgYWxsb3dlZCB0byByZWFzb24gYWJvdXQgdGhlIGZhY3Qg
dGhhdCBEZXBlbmQgY29kZWdlbmVyYXRlcyB0aGlzIHdheS4gQW55IGtpbmQKKyAgICAvLyBvZiB0
cmFuc2Zvcm1hdGlvbiBvciBhbmFseXNpcyB0aGF0IHJlbGllcyBvbiB0aGUgaW5zaWdodCB0aGF0
IERlcGVuZCBpcyByZWFsbHkgemVybyBpcyB1bnNvdW5kLAorICAgIC8vIGJlY2F1c2UgaXQgdW5s
b2NrcyByZW9yZGVyaW5nIG9mIHVzZXJzIG9mIEByZXN1bHQgYW5kIEBwaGFudG9tLgorICAgIC8v
CisgICAgLy8gT24gWDg2LCB0aGlzIGlzIGxvd2VyZWQgdG8gYSBsb2FkLWxvYWQgZmVuY2UgYW5k
IEByZXN1bHQgdXNlcyBAcGhhbnRvbSBkaXJlY3RseS4KKyAgICAvLworICAgIC8vIE9uIEFSTSwg
dGhpcyBpcyBsb3dlcmVkIGFzIGlmIGxpa2U6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gQml0
WG9yKEBwaGFudG9tLCBAcGhhbnRvbSkKKyAgICAvLworICAgIC8vIEV4Y2VwdCB0aGF0IHRoZSBj
b21waWxlciBuZXZlciBnZXRzIGFuIG9wcG9ydHVuaXR5IHRvIHNpbXBsaWZ5IG91dCB0aGUgQml0
WG9yLgorICAgIERlcGVuZCwKIAogICAgIC8vIFRoaXMgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBh
Y3R1YWwgYWRkcmVzcyBvZiBhIFdhc20gbWVtb3J5IG9wZXJhdGlvbi4gSXQgdGFrZXMgYW4gSW50
UHRyCiAgICAgLy8gYW5kIGEgcGlubmVkIHJlZ2lzdGVyIHRoZW4gY29tcHV0ZXMgdGhlIGFwcHJv
cHJpYXRlIEludFB0ciBhZGRyZXNzLiBGb3IgdGhlIHVzZS1jYXNlIG9mCkBAIC0zMDEsNiArNDAy
LDExMCBAQCBpbmxpbmUgYm9vbCBpc0RlZmluaXRlbHlUZXJtaW5hbChPcGNvZGUgCiAgICAgfQog
fQogCitpbmxpbmUgYm9vbCBpc0xvYWQoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9w
Y29kZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9h
ZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitp
bmxpbmUgYm9vbCBpc1N0b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUp
IHsKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNlIFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNMb2FkU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sK
KyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhT
OgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBMb2FkOgor
ICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pYyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3
aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWlj
U3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdB
bmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAg
IGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisK
K2lubGluZSBib29sIGlzQXRvbWljQ0FTKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChv
cGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdD
QVM6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljWGNoZyhPcGNvZGUgb3Bjb2Rl
KQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAg
IGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0
b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNo
ZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNNZW1vcnlBY2Nlc3MoT3Bjb2RlIG9wY29k
ZSkKK3sKKyAgICByZXR1cm4gaXNBdG9taWMob3Bjb2RlKSB8fCBpc0xvYWRTdG9yZShvcGNvZGUp
OworfQorCitpbmxpbmUgT3Bjb2RlIHNpZ25FeHRlbmRPcGNvZGUoV2lkdGggd2lkdGgpCit7Cisg
ICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgICAgICByZXR1cm4gU0V4
dDg7CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4gU0V4dDE2OworICAgIGRlZmF1
bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBPb3BzOworICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFj
ZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDggQEAgdm9pZCBQcm9jZWR1cmU6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgYwogICAgICAgICB9CiAgICAgICAgIGRhdGFMb2coIiAgICAi
LCBkZWVwRHVtcCgqdGhpcywgdmFsdWUpLCAiXG4iKTsKICAgICB9CisgICAgaWYgKGhhc1F1aXJr
cygpKQorICAgICAgICBvdXQucHJpbnQoIkhhcyBRdWlya3M6IFRydWVcbiIpOwogICAgIGlmICh2
YXJpYWJsZXMoKS5zaXplKCkpIHsKICAgICAgICAgb3V0LnByaW50KCJWYXJpYWJsZXM6XG4iKTsK
ICAgICAgICAgZm9yIChWYXJpYWJsZSogdmFyaWFibGUgOiB2YXJpYWJsZXMoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE3LDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoT3JpZ2lu
LCBUeXBlLCBpbnQ2NF90IHZhbHVlKTsKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoVmFsdWUq
LCBpbnQ2NF90IHZhbHVlKTsKIAorICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9t
IGlzIHplcm8uCiAgICAgVmFsdWUqIGFkZEJvdHRvbShPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVl
KiBhZGRCb3R0b20oVmFsdWUqKTsKIApAQCAtMTk1LDYgKzE5NiwxMiBAQCBwdWJsaWM6CiAgICAg
Ly8gYWxpdmUuIEdyZWF0IGZvciBjb21waWxlci1nZW5lcmF0ZWQgZGF0YSBzZWN0aW9ucywgbGlr
ZSBzd2l0Y2gganVtcCB0YWJsZXMgYW5kIGNvbnN0YW50IHBvb2xzLgogICAgIC8vIFRoaXMgcmV0
dXJucyBtZW1vcnkgdGhhdCBoYXMgYmVlbiB6ZXJvLWluaXRpYWxpemVkLgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQqIGFkZERhdGFTZWN0aW9uKHNpemVfdCk7CisgICAgCisgICAgLy8gU29t
ZSBvcGVyYXRpb25zIGFyZSBzcGVjaWZpZWQgaW4gQjMgSVIgdG8gYmVoYXZlIG9uZSB3YXkgYnV0
IG9uIHRoaXMgZ2l2ZW4gQ1BVIHRoZXkgYmVoYXZlIGEKKyAgICAvLyBkaWZmZXJlbnQgd2F5LiBX
aGVuIHRydWUsIHRob3NlIEIzIElSIG9wcyBzd2l0Y2ggdG8gYmVoYXZpbmcgdGhlIENQVSB3YXks
IGFuZCB0aGUgb3B0aW1pemVyIG1heQorICAgIC8vIHN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2Yg
aXQuCisgICAgYm9vbCBoYXNRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX2hhc1F1aXJrczsgfQor
ICAgIHZvaWQgc2V0SGFzUXVpcmtzKGJvb2wgdmFsdWUpIHsgbV9oYXNRdWlya3MgPSB2YWx1ZTsg
fQogCiAgICAgT3BhcXVlQnlwcm9kdWN0cyYgYnlwcm9kdWN0cygpIHsgcmV0dXJuICptX2J5cHJv
ZHVjdHM7IH0KIApAQCAtMjUyLDYgKzI1OSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJl
ZFRhc2s8dm9pZChQcmludFN0cmVhbSYsIE9yaWdpbik+PiBtX29yaWdpblByaW50ZXI7CiAgICAg
Y29uc3Qgdm9pZCogbV9mcm9udGVuZERhdGE7CiAgICAgUENUb09yaWdpbk1hcCBtX3BjVG9Pcmln
aW5NYXA7CisgICAgYm9vbCBtX2hhc1F1aXJrcyB7IGZhbHNlIH07CiB9OwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0
cmVuZ3RoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1
Y2VTdHJlbmd0aC5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAyLDcgKzYwMiw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGJyZWFrOwotCisgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBOZWc6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IE5l
Zyhjb25zdGFudCkKICAgICAgICAgICAgIC8vIEludG8gdGhpczogLWNvbnN0YW50CkBAIC0xMjk1
LDYgKzEyOTUsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczog
U0V4dDgoQXRvbWljWGNoZ19fXykKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21p
Y1hjaGdfX18KKyAgICAgICAgICAgICAgICBpZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxk
KDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCkt
PmFzPEF0b21pY1ZhbHVlPigpLT5vcGVyYXRpb25XaWR0aCgpID09IFdpZHRoOCkgeworICAgICAg
ICAgICAgICAgICAgICByZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTRXh0MTY6CkBAIC0xMzQzLDYg
KzEzNTMsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNR
dWlya3MoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDE2KEF0b21pY1hj
aGdfX18pCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlzOiBBdG9taWNYY2hnX19fCisgICAg
ICAgICAgICAgICAgaWYgKGlzQXRvbWljWGNoZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkp
CisgICAgICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1
ZT4oKS0+b3BlcmF0aW9uV2lkdGgoKSA9PSBXaWR0aDE2KSB7CisgICAgICAgICAgICAgICAgICAg
IHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIFNFeHQzMjoKQEAgLTIxMDEsMjIgKzIxMjEsMjUgQEAg
cHJpdmF0ZToKICAgICAgICAgQVNTRVJUKG1fdmFsdWUtPm51bUNoaWxkcmVuKCkgPj0gMik7CiAg
ICAgICAgIAogICAgICAgICAvLyBMZWF2ZSBpdCBhbG9uZSBpZiB0aGUgcmlnaHQgY2hpbGQgaXMg
YSBjb25zdGFudC4KLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkp
CisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNDb25zdGFudCgpCisgICAgICAgICAg
ICB8fCBtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDAp
LT5pc0NvbnN0YW50KCkpIHsKKyAgICAgICAgYXV0byBzd2FwID0gWyZdICgpIHsKICAgICAgICAg
ICAgIHN0ZDo6c3dhcChtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAg
ICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCkt
PmlzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7CisgICAgICAgIAorICAg
ICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUykK
KyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7CisgICAgICAgIAogICAgICAgICAvLyBTb3J0IHRo
ZSBvcGVyYW5kcy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgY2Fub25pY2FsaXphdGlvbi4gV2UgdXNl
IHRoZSBpbmRleCBpbnN0ZWFkIG9mCiAgICAgICAgIC8vIHRoZSBhZGRyZXNzIHRvIG1ha2UgdGhp
cyBhdCBsZWFzdCBzbGlnaHRseSBkZXRlcm1pbmlzdGljLgotICAgICAgICBpZiAobV92YWx1ZS0+
Y2hpbGQoMCktPmluZGV4KCkgPiBtX3ZhbHVlLT5jaGlsZCgxKS0+aW5kZXgoKSkgewotICAgICAg
ICAgICAgc3RkOjpzd2FwKG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0g
ICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5kZXgoKSA+IG1fdmFsdWUtPmNo
aWxkKDEpLT5pbmRleCgpKQorICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGEgZm9yd2FyZCBhbmFseXNpcy4gSW5z
dGVhZCwgd2UgdXNlcyBhIGJvdW5kZWQtc2VhcmNoIGJhY2t3YXJkcwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYs
NiArMzQ2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1D
aGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwog
ICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBMb2FkOgpAQCAtMzUzLDYgKzM1NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAx
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGls
ZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAg
IHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBTdG9yZTg6CkBAIC0zNjIsNiArMzY0LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMyLCAoIkF0
ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+
dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlk
YXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBTdG9yZToKQEAgLTM2OSw4ICszNzIsNDkgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9p
bnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
dmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vz
cyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21p
Y1dlYWtDQVM6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGls
bCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5u
dW1DaGlsZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgx
KS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlz
SW50KHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMiktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgp
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVl
KTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAg
ICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAz
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBl
KCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUo
KSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1
ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+Y2hpbGQoMiktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAg
ICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNo
Z0FuZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBB
dG9taWNYY2hnU3ViOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2lu
ZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCks
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUt
PnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAg
dmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIERlcGVuZDoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtp
bmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50
eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQo
dmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAgICAgICAgICAgIFZBTElEQVRF
KCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZh
bHVlKSk7CkBAIC01MzcsNiArNTgxLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRlRmVuY2UoVmFsdWUqIHZh
bHVlKQorICAgIHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAg
IFZBTElEQVRFKG1lbW9ydHktPmFjY2Vzc0JhbmsoKSA9PSBHUCwgKCJGZW5jZSBhdCAiLCAqbWVt
b3J5KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVBdG9taWMoVmFsdWUqIHZhbHVl
KQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IHZhbHVlLT5hczxBdG9taWNW
YWx1ZT4oKTsKKyAgICAgICAgCisgICAgICAgIFZBTElEQVRFKGJlc3RUeXBlKGF0b21pYy0+b3Bl
cmF0aW9uV2lkdGgoKSkgPT0gYXRvbWljLT5vcGVyYXRpb25UeXBlKCksICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgfQogCiAgICAgdm9pZCB2YWxpZGF0ZVN0YWNrQWNjZXNzKFZhbHVlKiB2YWx1ZSkK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUg
IkIzQXJndW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNs
dWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCb3R0b21Qcm92aWRlci5o
IgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpAQCAtNTEwLDYgKzUxMSw3IEBAIGJvb2wgVmFs
dWU6OnJldHVybnNCb29sKCkgY29uc3QKICAgICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgY2FzZSBC
ZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKKyAgICBjYXNlIEF0b21pY1dl
YWtDQVM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgUGhpOgogICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBzdG9yeSBoZXJlLgpAQCAtNTg5LDYgKzU5MSw3IEBAIEVm
ZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBj
YXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgY2FzZSBTZWxlY3Q6CisgICAgY2FzZSBEZXBlbmQ6
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTYwMCwx
NiArNjAzLDQ0IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgTG9h
ZDhTOgogICAgIGNhc2UgTG9hZDE2WjoKICAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBMb2Fk
OgotICAgICAgICByZXN1bHQucmVhZHMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAg
ICBjYXNlIExvYWQ6IHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZh
bHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAg
IGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC53cml0ZXMgPSBt
ZW1vcnktPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7Cisg
ICAgICAgIH0KICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBTdG9yZTg6CiAgICAgY2FzZSBTdG9yZTE2OgotICAg
IGNhc2UgU3RvcmU6Ci0gICAgICAgIHJlc3VsdC53cml0ZXMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+
cmFuZ2UoKTsKKyAgICBjYXNlIFN0b3JlOiB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkg
PSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFu
Z2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgcmVz
dWx0LnJlYWRzID0gbWVtb3J5LT5mZW5jZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQuZmVu
Y2UgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0g
dHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAg
ICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2Fz
ZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWlj
WGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOiB7
CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhczxBdG9taWNWYWx1ZT4oKTsKKyAgICAg
ICAgcmVzdWx0LnJlYWRzID0gYXRvbWljLT5yYW5nZSgpIHwgYXRvbWljLT5mZW5jZVJhbmdlKCk7
CisgICAgICAgIHJlc3VsdC53cml0ZXMgPSBhdG9taWMtPnJhbmdlKCkgfCBhdG9taWMtPmZlbmNl
UmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJl
c3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1
ZTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAg
IHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpAQCAtNjE3LDE4ICs2
NDgsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICAgICAgY29uc3QgRmVu
Y2VWYWx1ZSogZmVuY2UgPSBhczxGZW5jZVZhbHVlPigpOwogICAgICAgICByZXN1bHQucmVhZHMg
PSBmZW5jZS0+cmVhZDsKICAgICAgICAgcmVzdWx0LndyaXRlcyA9IGZlbmNlLT53cml0ZTsKLSAg
ICAgICAgCi0gICAgICAgIC8vIFByZXZlbnQga2lsbGluZyBvZiBmZW5jZXMgdGhhdCBjbGFpbSBu
b3QgdG8gd3JpdGUgYW55dGhpbmcuIEl0J3MgYSBiaXQgd2VpcmQgdGhhdCB3ZSB1c2UKLSAgICAg
ICAgLy8gbG9jYWwgc3RhdGUgYXMgdGhlIHdheSB0byBkbyB0aGlzLCBidXQgaXQgaGFwcGVucyB0
byB3b3JrOiB3ZSBtdXN0IGFzc3VtZSB0aGF0IHdlIGNhbm5vdAotICAgICAgICAvLyBraWxsIHdy
aXRlc0xvY2FsU3RhdGUgdW5sZXNzIHdlIHVuZGVyc3RhbmRzIGV4YWN0bHkgd2hhdCB0aGUgaW5z
dHJ1Y3Rpb24gaXMgZG9pbmcgKGxpa2UKLSAgICAgICAgLy8gdGhlIHdheSB0aGF0IGZpeFNTQSB1
bmRlcnN0YW5kcyBTZXQvR2V0IGFuZCB0aGUgd2F5IHRoYXQgcmVkdWNlU3RyZW5ndGggYW5kIG90
aGVycwotICAgICAgICAvLyB1bmRlcnN0YW5kIFVwc2lsb24pLiBUaGlzIHdvdWxkIG9ubHkgYmVj
b21lIGEgcHJvYmxlbSBpZiB3ZSBoYWQgc29tZSBhbmFseXNpcyB0aGF0IHdhcwotICAgICAgICAv
LyBsb29raW5nIHRvIHVzZSB0aGUgd3JpdGVzTG9jYWxTdGF0ZSBiaXQgdG8gaW52YWxpZGF0ZSBh
IENTRSBvdmVyIGxvY2FsIHN0YXRlIG9wZXJhdGlvbnMuCi0gICAgICAgIC8vIFRoZW4gYSBGZW5j
ZSB3b3VsZCBsb29rIGJsb2NrLCBzYXksIHRoZSBlbGltaW5hdGlvbiBvZiBhIHJlZHVuZGFudCBH
ZXQuIEJ1dCBpdCBsaWtlCi0gICAgICAgIC8vIHRoYXQncyBub3QgYXQgYWxsIGhvdyBvdXIgb3B0
aW1pemF0aW9ucyBmb3IgU2V0L0dldC9VcHNpbG9uL1BoaSB3b3JrIC0gdGhleSBncm9rIHRoZWly
Ci0gICAgICAgIC8vIG9wZXJhdGlvbnMgZGVlcGx5IGVub3VnaCB0aGF0IHRoZXkgaGF2ZSBubyBu
ZWVkIHRvIGNoZWNrIHRoaXMgYml0IC0gc28gdGhpcyBjaGVhdCBpcwotICAgICAgICAvLyBmaW5l
LgotICAgICAgICByZXN1bHQud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CisgICAgICAgIHJlc3Vs
dC5mZW5jZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENDYWxsOgpA
QCAtNjk0LDYgKzcxNCw3IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNhc2Ug
Q2hlY2s6CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICBjYXNlIE5lZzoKKyAgICBjYXNlIERl
cGVuZDoKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgpLCBjaGlsZCgwKSk7
CiAgICAgY2FzZSBBZGQ6CiAgICAgY2FzZSBTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDEwIEBAIHB1YmxpYzoKICAgICAK
ICAgICBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLm9wY29kZSgpOyB9CiAg
ICAgCisgICAgLy8gTm90ZSB0aGF0IHRoZSBraW5kIGlzIG1lYW50IHRvIGJlIGltbXV0YWJsZS4g
RG8gdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgdGhpcyBpcyBzYWZlLiBJdCdzIG5vdAorICAgIC8v
IHVzdWFsbHkgc2FmZS4KKyAgICB2b2lkIHNldEtpbmRVbnNhZmVseShLaW5kIGtpbmQpIHsgbV9r
aW5kID0ga2luZDsgfQorICAgIAogICAgIC8vIEl0J3MgZ29vZCBwcmFjdGljZSB0byBtaXJyb3Ig
S2luZCBtZXRob2RzIGhlcmUsIHNvIHlvdSBjYW4gc2F5IHZhbHVlLT5pc0JsYWgoKQogICAgIC8v
IGluc3RlYWQgb2YgdmFsdWUtPmtpbmQoKS5pc0JsYWgoKS4KICAgICBib29sIGlzQ2hpbGwoKSBj
b25zdCB7IHJldHVybiBraW5kKCkuaXNDaGlsbCgpOyB9CkBAIC0xMDcsNiArMTExLDggQEAgcHVi
bGljOgogICAgIC8vIHZhbHVlcyB3aXRoIElkZW50aXRpZXMgb24gYm90dG9tIGNvbnN0YW50cy4g
Rm9yIHRoaXMgcmVhc29uLCB0aGlzIHRha2VzIGEgY2FsbGJhY2sgdGhhdCBpcwogICAgIC8vIHJl
c3BvbnNpYmxlIGZvciBjcmVhdGluZyBib3R0b21zLiBUaGVyZSdzIGEgdXRpbGl0eSBmb3IgdGhp
cywgc2VlIEIzQm90dG9tUHJvdmlkZXIuaC4gWW91CiAgICAgLy8gY2FuIGFsc28gYWNjZXNzIHRo
YXQgdXRpbGl0eSB1c2luZyByZXBsYWNlV2l0aEJvdHRvbShJbnNlcnRpb25TZXQmLCBzaXplX3Qp
LgorICAgIC8vCisgICAgLy8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCb3R0b21Qcm92aWRlcj4KICAgICB2b2lkIHJlcGxhY2VX
aXRoQm90dG9tKGNvbnN0IEJvdHRvbVByb3ZpZGVyJik7CiAgICAgCkBAIC0zMjEsNiArMzI3LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJVG9GOgogICAgICAgICBjYXNlIEJpdHdpc2VDYXN0
OgogICAgICAgICBjYXNlIEJyYW5jaDoKKyAgICAgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkobnVtQXJncyAhPSAxKSkKICAgICAgICAgICAgICAgICBiYWRLaW5kKGtp
bmQsIG51bUFyZ3MpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNXaWR0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzV2lkdGguY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNXaWR0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDM4IEBACiAKICNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAorbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CisKK1R5cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0
Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgY2FzZSBXaWR0aDE2OgorICAgIGNh
c2UgV2lkdGgzMjoKKyAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNhc2UgR1A6Cisg
ICAgICAgICAgICByZXR1cm4gSW50MzI7CisgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICBy
ZXR1cm4gRmxvYXQ7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIFZvaWQ7CisgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICBz
d2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJldHVybiBJbnQ2
NDsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBEb3VibGU7CisgICAgICAg
IH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IFZvaWQ7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIFZvaWQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCiBuYW1lc3BhY2UgV1RG
IHsKIAogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QjM6OldpZHRo
IHdpZHRoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCShyZXZpc2lvbiAyMTI5
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw2ICs2MiwxOCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JUeXBlKFR5cGUgdHlwZSkK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAoraW5saW5lIFdpZHRoIGNhbm9uaWNhbFdp
ZHRoKFdpZHRoIHdpZHRoKQoreworICAgIHJldHVybiBzdGQ6Om1heChXaWR0aDMyLCB3aWR0aCk7
Cit9CisKK2lubGluZSBib29sIGlzQ2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgpCit7CisgICAg
cmV0dXJuIHdpZHRoID49IFdpZHRoMzI7Cit9CisKK1R5cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBX
aWR0aCB3aWR0aCk7CisKIGlubGluZSBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0aChCYW5rIGJhbmsp
CiB7CiAgICAgcmV0dXJuIGJhbmsgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6IFdpZHRoNjQ7CkBA
IC05Myw2ICsxMDUsMjAgQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yQnl0ZXModW5zaWduZWQgYnl0
ZQogICAgIH0KIH0KIAoraW5saW5lIHVpbnQ2NF90IG1hc2soV2lkdGggd2lkdGgpCit7CisgICAg
c3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgICAgICByZXR1cm4gMHgwMDAw
MDAwMDAwMDAwMGZmbGx1OworICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgcmV0dXJuIDB4MDAw
MDAwMDAwMDAwZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHJldHVybiAweDAw
MDAwMDAwZmZmZmZmZmZsbHU7CisgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICByZXR1cm4gMHhm
ZmZmZmZmZmZmZmZmZmZmbGx1OworICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIz
CiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBcmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QXJnLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJBcmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgdW5zaWduZWQg
QXJnOjpqc0hhc2goKSBjb25zdAogICAgIGNhc2UgUmVsQ29uZDoKICAgICBjYXNlIFJlc0NvbmQ6
CiAgICAgY2FzZSBEb3VibGVDb25kOgorICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICBjYXNlIFdp
ZHRoQXJnOgogICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0
KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODIsNiArMTgzLDkgQEAgdm9pZCBBcmc6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5w
cmludChhc0RvdWJsZUNvbmRpdGlvbigpKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3Rh
dHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KGFzU3RhdHVzQ29uZGl0aW9uKCkpOworICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBvdXQucHJpbnQocG9pbnRlckR1
bXAoc3BlY2lhbCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI0MSw2ICsyNDUsOSBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkRvdWJs
ZUNvbmQ6CiAgICAgICAgIG91dC5wcmludCgiRG91YmxlQ29uZCIpOwogICAgICAgICByZXR1cm47
CisgICAgY2FzZSBBcmc6OlN0YXR1c0NvbmQ6CisgICAgICAgIG91dC5wcmludCgiU3RhdHVzQ29u
ZCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNwZWNpYWw6CiAgICAgICAgIG91
dC5wcmludCgiU3BlY2lhbCIpOwogICAgICAgICByZXR1cm47CkBAIC0yODUsNiArMjkyLDkgQEAg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpF
YXJseURlZjoKICAgICAgICAgb3V0LnByaW50KCJFYXJseURlZiIpOwogICAgICAgICByZXR1cm47
CisgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKKyAgICAgICAgb3V0LnByaW50KCJFYXJseVpEZWYi
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpTY3JhdGNoOgogICAgICAgICBvdXQu
cHJpbnQoIlNjcmF0Y2giKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBcmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFyZy5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckFyZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgUmVsQ29uZCwKICAgICAgICAgUmVzQ29uZCwKICAgICAgICAgRG91Ymxl
Q29uZCwKKyAgICAgICAgU3RhdHVzQ29uZCwKICAgICAgICAgU3BlY2lhbCwKICAgICAgICAgV2lk
dGhBcmcKICAgICB9OwpAQCAtMTUxLDYgKzE1Miw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gYXMg
VXNlIGhhcyB1bmRlZmluZWQgYmVoYXZpb3I6IHRoZSB1c2UgbWF5IGhhcHBlbiBiZWZvcmUgdGhl
IGRlZiwgb3IgaXQgbWF5IGhhcHBlbiBhZnRlcgogICAgICAgICAvLyBpdC4KICAgICAgICAgRWFy
bHlEZWYsCisgICAgICAgICAgICAKKyAgICAgICAgRWFybHlaRGVmLAogCiAgICAgICAgIC8vIFNv
bWUgaW5zdHJ1Y3Rpb25zIG5lZWQgYSBzY3JhdGNoIHJlZ2lzdGVyLiBXZSBtb2RlbCB0aGlzIGJ5
IHNheWluZyB0aGF0IHRoZSB0ZW1wb3JhcnkgaXMKICAgICAgICAgLy8gZGVmaW5lZCBlYXJseSBh
bmQgdXNlZCBsYXRlLiBUaGlzIHJvbGUgaW1wbGllcyB0aGF0LgpAQCAtMTg2LDYgKzE4OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAg
ICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMjA2LDYgKzIxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAg
ICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFy
bHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI4LDYgKzIzMyw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlE
ZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHJvbGU7CiAg
ICAgICAgIGNhc2UgVXNlOgogICAgICAgICAgICAgcmV0dXJuIENvbGRVc2U7CkBAIC0yNTMsNiAr
MjU5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICBjYXNl
IFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVm
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtMjc0LDYgKzI4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBa
RGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAg
ICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk0LDYgKzMwMiw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAgIGNh
c2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0
Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzE1LDYgKzMyNCw3
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6
CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CkBAIC0zMzAsNiArMzQwLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAg
ICAgICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2Fz
ZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBMYXRlQ29s
ZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1OCw2ICszNjksNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAg
ICAgY2FzZSBVc2VaRGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
NTMzLDYgKzU0NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
CisgICAgc3RhdGljIEFyZyBzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRp
b24gY29uZGl0aW9uKQorICAgIHsKKyAgICAgICAgQXJnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0
Lm1fa2luZCA9IFN0YXR1c0NvbmQ7CisgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IGNvbmRpdGlv
bjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBzdGF0aWMgQXJnIHNwZWNp
YWwoQWlyOjpTcGVjaWFsKiBzcGVjaWFsKQogICAgIHsKICAgICAgICAgQXJnIHJlc3VsdDsKQEAg
LTY1OCwxMiArNjc4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBEb3Vi
bGVDb25kOwogICAgIH0KIAorICAgIGJvb2wgaXNTdGF0dXNDb25kKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBraW5kKCkgPT0gU3RhdHVzQ29uZDsKKyAgICB9CisKICAgICBib29sIGlz
Q29uZGl0aW9uKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAg
ICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERv
dWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUx
LDYgKzg3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNl
IFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXND
b25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg3Miw2ICs4OTksNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJs
ZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgog
ICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICBjYXNlIEludmFsaWQ6CkBAIC0xMDU4LDYg
KzEwODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBS
ZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29u
ZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTc3LDYgKzEyMDYsMTIgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbj4obV9v
ZmZzZXQpOwogICAgIH0KICAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9u
IGFzU3RhdHVzQ29uZGl0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1N0YXR1
c0NvbmQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6U3Rh
dHVzQ29uZGl0aW9uPihtX29mZnNldCk7CisgICAgfQorICAgIAogICAgIC8vIFRlbGxzIHlvdSBp
ZiB0aGUgQXJnIGlzIGludmVydGlibGUuIE9ubHkgY29uZGl0aW9uIGFyZ3VtZW50cyBhcmUgaW52
ZXJ0aWJsZSwgYW5kIGV2ZW4gZm9yIHRob3NlLCB0aGVyZQogICAgIC8vIGFyZSBhIGZldyBleGNl
cHRpb25zIC0gbm90YWJseSBPdmVyZmxvdyBhbmQgU2lnbmVkLgogICAgIGJvb2wgaXNJbnZlcnRp
YmxlKCkgY29uc3QKQEAgLTExODQsNiArMTIxOSw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNo
IChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNv
bmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6
OmlzSW52ZXJ0aWJsZShhc1Jlc3VsdENvbmRpdGlvbigpKTsKQEAgLTEyMDQsNiArMTI0MCw4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiByZXNDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZl
cnQoYXNSZXN1bHRDb25kaXRpb24oKSkpOwogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAg
ICAgICAgICByZXR1cm4gZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzRG91Ymxl
Q29uZGl0aW9uKCkpKTsKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgorICAgICAgICAgICAgcmV0
dXJuIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1N0YXR1c0NvbmRpdGlvbigp
KSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM1LDYgKzM1LDE5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1l
c3BhY2UKIAogY29uc3QgY2hhciogY29uc3QgQmFzaWNCbG9jazo6ZHVtcFByZWZpeCA9ICIjIjsK
IAordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YXJnZXQp
Cit7CisgICAgbV9zdWNjZXNzb3JzLnJlc2l6ZSgxKTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0gPSB0
YXJnZXQ7Cit9CisKK3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxv
Y2sgdGFrZW4sIEZyZXF1ZW50ZWRCbG9jayBub3RUYWtlbikKK3sKKyAgICBtX3N1Y2Nlc3NvcnMu
cmVzaXplKDIpOworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRha2VuOworICAgIG1fc3VjY2Vzc29y
c1sxXSA9IG5vdFRha2VuOworfQorCiBib29sIEJhc2ljQmxvY2s6OmFkZFByZWRlY2Vzc29yKEJh
c2ljQmxvY2sqIGJsb2NrKQogewogICAgIHJldHVybiBCMzo6YWRkUHJlZGVjZXNzb3IodGhpcywg
YmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Js
b2NrLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw5IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTdWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9z
dWNjZXNzb3JzOyB9CiAgICAgU3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIHsgcmV0dXJuIG1f
c3VjY2Vzc29yczsgfQogCisgICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayk7
CisgICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jaywgRnJlcXVlbnRlZEJsb2Nr
KTsKKwogICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSBjb25z
dCB7IHJldHVybiBzdWNjZXNzb3IoaW5kZXgpLmJsb2NrKCk7IH0KICAgICBCYXNpY0Jsb2NrKiYg
c3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCku
YmxvY2soKTsgfQogICAgIFN1Y2Nlc3NvckNvbGxlY3Rpb248QmFzaWNCbG9jaywgU3VjY2Vzc29y
TGlzdD4gc3VjY2Vzc29yQmxvY2tzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFpckJs
b2NrSW5zZXJ0aW9uU2V0LmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWly
QmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvQnViYmxl
U29ydC5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7
CisKK0Jsb2NrSW5zZXJ0aW9uU2V0OjpCbG9ja0luc2VydGlvblNldChDb2RlICZjb2RlKQorICAg
IDogR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KGNvZGUubV9ibG9ja3MpCit7Cit9CisKK0Jsb2Nr
SW5zZXJ0aW9uU2V0Ojp+QmxvY2tJbnNlcnRpb25TZXQoKQoreworfQorCit9IH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNl
dC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxv
Y2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzR2VuZXJpY0Jsb2NrSXNuZXJ0aW9uU2V0
LmgiCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UgQWlyIHsKKworY2xhc3MgSW5zZXJ0aW9uU2V0OworCit0eXBlZGVmIEdlbmVyaWNC
bG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRp
b247CisKK2NsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2Vy
dGlvblNldDxCYXNpY0Jsb2NrPiB7CitwdWJsaWM6CisgICAgQmxvY2tJbnNlcnRpb25TZXQoQ29k
ZSYpOworICAgIH5CbG9ja0luc2VydGlvblNldCgpOworICAgIAorICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZXZlbnR1YWxseSBpbXBsZW1lbnQgQjM6OkJsb2NrSW5zZXJ0aW9uU2V0J3Mgc3BsaXRG
b3J3YXJkKCkuCit9OworCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJEdW1wQXNKUy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJEdW1wQXNKUy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuY3BwCShub25leGlzdGVudCkKQEAgLTEsMjQ1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQWlyRHVtcEFzSlMuaCIKLQotI2lmIEVOQUJM
RShCM19KSVQpCi0KLSNpbmNsdWRlICJBaXJDb2RlLmgiCi0jaW5jbHVkZSAiQWlySW5zdElubGlu
ZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewot
Ci1uYW1lc3BhY2UgewotCi1DU3RyaW5nIHZhck5hbWVGb3JCbG9ja0F0SW5kZXgodW5zaWduZWQg
aW5kZXgpCi17Ci0gICAgcmV0dXJuIHRvQ1N0cmluZygiYmIiLCBpbmRleCk7Ci19Ci0KLUNTdHJp
bmcgdmFyTmFtZShCYXNpY0Jsb2NrKiBibG9jaykKLXsKLSAgICByZXR1cm4gdmFyTmFtZUZvckJs
b2NrQXRJbmRleChibG9jay0+aW5kZXgoKSk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZUZvclN0YWNr
U2xvdEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgcmV0dXJuIHRvQ1N0cmluZygic2xv
dCIsIGluZGV4KTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKFN0YWNrU2xvdCogc2xvdCkKLXsKLSAg
ICByZXR1cm4gdmFyTmFtZUZvclN0YWNrU2xvdEF0SW5kZXgoc2xvdC0+aW5kZXgoKSk7Ci19Ci0K
LUNTdHJpbmcgdmFyTmFtZShSZWcgcmVnKQotewotICAgIHJldHVybiB0b0NTdHJpbmcoIlJlZy4i
LCByZWcuZGVidWdOYW1lKCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWVGb3JUbXBXaXRoQmFua0Fu
ZEluZGV4KEJhbmsgYmFuaywgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgcmV0dXJuIHRvQ1N0cmlu
ZyhiYW5rID09IEZQID8gImYiIDogIiIsICJ0bXAiLCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFy
TmFtZShUbXAgdG1wKQotewotICAgIGlmICh0bXAuaXNSZWcoKSkKLSAgICAgICAgcmV0dXJuIHZh
ck5hbWUodG1wLnJlZygpKTsKLSAgICByZXR1cm4gdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5kSW5k
ZXgoQXJnKHRtcCkuYmFuaygpLCB0bXAudG1wSW5kZXgoKSk7Ci19Ci0KLX0gLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQotCi12b2lkIGR1bXBBc0pTKENvZGUmIGNvZGUsIFByaW50U3RyZWFtJiBvdXQp
Ci17Ci0gICAgb3V0LnByaW50bG4oImxldCBjb2RlID0gbmV3IENvZGUoKTsiKTsKLSAgICAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZS5zaXplKCk7ICsraSkKLSAgICAgICAgb3V0
LnByaW50bG4oImxldCAiLCB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KGkpLCAiID0gY29kZS5hZGRC
bG9jaygpOyIpOwotICAgIAotICAgIG91dC5wcmludGxuKCJsZXQgaGFzaDsiKTsKLQotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlLnN0YWNrU2xvdHMoKS5zaXplKCk7ICsraSkgewot
ICAgICAgICBTdGFja1Nsb3QqIHNsb3QgPSBjb2RlLnN0YWNrU2xvdHMoKVtpXTsKLSAgICAgICAg
aWYgKHNsb3QpIHsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJsZXQgIiwgdmFyTmFtZShzbG90
KSwgIiA9IGNvZGUuYWRkU3RhY2tTbG90KCIsIHNsb3QtPmJ5dGVTaXplKCksICIsICIsIHNsb3Qt
PmtpbmQoKSwgIik7Iik7Ci0gICAgICAgICAgICBpZiAoc2xvdC0+b2Zmc2V0RnJvbUZQKCkpCi0g
ICAgICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShzbG90KSwgIi5zZXRPZmZzZXRGcm9t
RlAoIiwgc2xvdC0+b2Zmc2V0RnJvbUZQKCksICIpOyIpOwotICAgICAgICAgICAgb3V0LnByaW50
bG4oImhhc2ggPSAiLCB2YXJOYW1lKHNsb3QpLCAiLmhhc2goKTsiKTsKLSAgICAgICAgICAgIG91
dC5wcmludGxuKCJpZiAoaGFzaCAhPSAiLCBzbG90LT5qc0hhc2goKSwgIikiKTsKLSAgICAgICAg
ICAgIG91dC5wcmludGxuKCIgICAgdGhyb3cgbmV3IEVycm9yKFwiQmFkIGhhc2g6IFwiICsgaGFz
aCk7Iik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0LnByaW50bG4oImNvZGUuYWRk
U3RhY2tTbG90KDEsIFNwaWxsKTsiKTsKLSAgICB9Ci0gICAgCi0gICAgZm9yRWFjaEJhbmsoCi0g
ICAgICAgIFsmXSAoQmFuayBiYW5rKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBj
b2RlLm51bVRtcHMoYmFuayk7IGktLTspIHsKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigK
LSAgICAgICAgICAgICAgICAgICAgImxldCAiLCB2YXJOYW1lRm9yVG1wV2l0aEJhbmtBbmRJbmRl
eChiYW5rLCBpKSwgIiA9IGNvZGUubmV3VG1wKCIsIGJhbmssICIpOyIpOwotICAgICAgICAgICAg
fQotICAgICAgICB9KTsKLSAgICAKLSAgICBvdXQucHJpbnRsbigibGV0IGluc3Q7Iik7Ci0gICAg
b3V0LnByaW50bG4oImxldCBhcmc7Iik7Ci0gICAgCi0gICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IGNvZGUpIHsKLSAgICAgICAgZm9yIChGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxv
Y2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAg
ICAgICAgdmFyTmFtZShibG9jayksICIuc3VjY2Vzc29ycy5wdXNoKG5ldyBGcmVxdWVudGVkQmxv
Y2soIiwKLSAgICAgICAgICAgICAgICB2YXJOYW1lKHN1Y2Nlc3Nvci5ibG9jaygpKSwgIiwgIiwg
c3VjY2Vzc29yLmZyZXF1ZW5jeSgpLCAiKSk7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBibG9jay0+cHJlZGVjZXNzb3JzKCkp
Ci0gICAgICAgICAgICBvdXQucHJpbnRsbih2YXJOYW1lKGJsb2NrKSwgIi5wcmVkZWNlc3NvcnMu
cHVzaCgiLCB2YXJOYW1lKHByZWRlY2Vzc29yKSwgIik7Iik7Ci0gICAgICAgIAotICAgICAgICBm
b3IgKEluc3QmIGluc3QgOiAqYmxvY2spIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBkbyBzb21ldGhpbmcgZm9yIGZsYWdzLgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjc1MQotICAgICAgICAgICAgb3V0LnByaW50
bG4oImluc3QgPSBuZXcgSW5zdCgiLCBpbnN0LmtpbmQub3Bjb2RlLCAiKTsiKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAotICAgICAgICAgICAgICAgIFsmXSAo
QXJnJiBhcmcsIEFyZzo6Um9sZSwgQmFuaywgV2lkdGgpIHsKLSAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChhcmcua2luZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbnZh
bGlkOgotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpUbXA6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVRtcCgiLCB2YXJOYW1lKGFyZy50
bXAoKSksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkltbToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlSW1tKCIsIGFy
Zy52YWx1ZSgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaWdJbW06
Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUJpZ0ltbSgiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52YWx1ZSgpKSwgIiwgIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSA+
PiAzMiksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkJpdEltbToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlQml0SW1t
KCIsIGFyZy52YWx1ZSgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpC
aXRJbW02NDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlQml0SW1tNjQoIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSksICIs
ICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJn
LnZhbHVlKCkgPj4gMzIpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpB
ZGRyOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVBZGRyKCIsIHZhck5hbWUoYXJnLmJhc2Uo
KSksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNl
IEFyZzo6U3RhY2s6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZVN0YWNrKCIsIHZhck5hbWUo
YXJnLnN0YWNrU2xvdCgpKSwgIiwgIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpDYWxsQXJnOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVDYWxsQXJnKCIsIGFyZy5vZmZzZXQoKSwgIik7Iik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6SW5kZXg6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0g
QXJnLmNyZWF0ZUluZGV4KCIsIHZhck5hbWUoYXJnLmJhc2UoKSksICIsICIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyTmFtZShhcmcuaW5kZXgoKSksICIsICIsIGFyZy5zY2FsZSgp
LCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OlJlbENvbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0g
QXJnLmNyZWF0ZVJlbENvbmQoIiwgYXJnLmFzUmVsYXRpb25hbENvbmRpdGlvbigpLCAiKTsiKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpSZXNDb25kOgotICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVSZXNDb25kKCIsIGFyZy5hc1Jl
c3VsdENvbmRpdGlvbigpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpE
b3VibGVDb25kOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFy
Zy5jcmVhdGVEb3VibGVDb25kKCIsIGFyZy5hc0RvdWJsZUNvbmRpdGlvbigpLCAiKTsiKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpTcGVjaWFsOgotICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVTcGVjaWFsKCk7Iik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6V2lkdGhBcmc6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVdpZHRoQXJnKCIsIGFyZy53aWR0aCgpLCAi
KTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRs
bigiaW5zdC5hcmdzLnB1c2goYXJnKTsiKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gUGF0Y2gpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoaW5zdC5oYXNOb25BcmdFZmZlY3RzKCkpCi0gICAgICAgICAgICAgICAg
ICAgIG91dC5wcmludGxuKCJpbnN0LnBhdGNoSGFzTm9uQXJnRWZmZWN0cyA9IHRydWU7Iik7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFF
YXJseUNsb2JiZXJlZFJlZ3MgPSBuZXcgU2V0KCk7Iik7Ci0gICAgICAgICAgICAgICAgb3V0LnBy
aW50bG4oImluc3QuZXh0cmFDbG9iYmVyZWRSZWdzID0gbmV3IFNldCgpOyIpOwotICAgICAgICAg
ICAgICAgIGluc3QuZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoKS5mb3JFYWNoKAotICAgICAgICAg
ICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKCJpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzLmFkZCgiLCB2YXJOYW1lKHJlZyks
ICIpOyIpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBpbnN0LmV4
dHJhQ2xvYmJlcmVkUmVncygpLmZvckVhY2goCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoUmVn
IHJlZykgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFD
bG9iYmVyZWRSZWdzLmFkZCgiLCB2YXJOYW1lKHJlZyksICIpOyIpOwotICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigi
aW5zdC5wYXRjaEFyZ0RhdGEgPSBbXTsiKTsKLSAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hB
cmcoCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoQXJnJiwgQXJnOjpSb2xlIHJvbGUsIEJhbmsg
YmFuaywgV2lkdGggd2lkdGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxu
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0LnBhdGNoQXJnRGF0YS5wdXNoKHty
b2xlOiBBcmcuIiwgcm9sZSwgIiwgdHlwZTogIiwgYmFuaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiLCB3aWR0aDogIiwgd2lkdGgsICJ9KTsiKTsKLSAgICAgICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpbnN0Lmtp
bmQub3Bjb2RlID09IENDYWxsIHx8IGluc3Qua2luZC5vcGNvZGUgPT0gQ29sZENDYWxsKSB7Ci0g
ICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuY0NhbGxUeXBlID0gIiwgaW5zdC5vcmln
aW4tPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuY0NhbGxBcmdU
eXBlcyA9IFtdOyIpOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBp
bnN0Lm9yaWdpbi0+bnVtQ2hpbGRyZW4oKTsgKytpKQotICAgICAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbigiaW5zdC5jQ2FsbEFyZ1R5cGVzLnB1c2goIiwgaW5zdC5vcmlnaW4tPmNoaWxkKGkp
LT50eXBlKCksICIpOyIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBvdXQucHJpbnRsbigiaGFzaCA9IGluc3QuaGFzaCgpOyIpOwotICAgICAgICAgICAgb3V0LnBy
aW50bG4oImlmIChoYXNoICE9ICIsIGluc3QuanNIYXNoKCksICIpIik7Ci0gICAgICAgICAgICBv
dXQucHJpbnRsbigiICAgIHRocm93IG5ldyBFcnJvcihcIkJhZCBoYXNoOiBcIiArIGhhc2gpOyIp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBvdXQucHJpbnRsbih2YXJOYW1lKGJsb2NrKSwg
Ii5hcHBlbmQoaW5zdCk7Iik7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLX0gfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzOjpBaXIKLQotI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCi0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgJKHJldmlzaW9uIDIxMjk5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoQjNfSklUKQotCi0jaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMg
eyBuYW1lc3BhY2UgQWlyIHsKLQotY2xhc3MgQ29kZTsKLQotLy8gVGhpcyBpcyB1c2VkIGZvciBi
ZW5jaG1hcmtpbmcuIFZhcmlvdXMgb3BlcmF0aW9ucyBvbiBBaXIgYXJlIGludGVyZXN0aW5nIGZy
b20gYSBiZW5jaG1hcmtpbmcKLS8vIHN0YW5kcG9pbnQuIFdlIGNhbiB3cml0ZSBzb21lIEFpciBw
aGFzZXMgaW4gSlMgYW5kIHRoZW4gdXNlIHRoYXQgdG8gYmVuY2htYXJrIEpTLiBUaGUgYmVuY2ht
YXJrCi0vLyBpcyBjYWxsZWQgSlNBaXIsIGFuZCBpdCdzIGluIFBlcmZvcm1hbmNlVGVzdHMvSlNB
aXIuCi12b2lkIGR1bXBBc0pTKENvZGUmLCBQcmludFN0cmVhbSYpOwotCi19IH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMzo6QWlyCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQWlyQWxsb2NhdGVSZWdp
c3RlcnNCeUdyYXBoQ29sb3JpbmcuaCIKICNpbmNsdWRlICJBaXJBbGxvY2F0ZVN0YWNrLmgiCiAj
aW5jbHVkZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFpckR1bXBBc0pTLmgiCiAjaW5jbHVkZSAi
QWlyRWxpbWluYXRlRGVhZENvZGUuaCIKICNpbmNsdWRlICJBaXJGaXhPYnZpb3VzU3BpbGxzLmgi
CiAjaW5jbHVkZSAiQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmgiCkBAIC03Myw2ICs3Miw4
IEBAIHZvaWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAgICAgZGF0YUxv
ZygiSW5pdGlhbCBhaXI6XG4iKTsKICAgICAgICAgZGF0YUxvZyhjb2RlKTsKICAgICB9CisgICAg
CisgICAgc2ltcGxpZnlDRkcoY29kZSk7CiAKICAgICBsb3dlck1hY3Jvcyhjb2RlKTsKIApAQCAt
MTA3LDIzICsxMDgsMTEgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQog
ICAgIC8vIGRvZXMgdGhpbmdzIGxpa2UgaWRlbnRpZnkgd2hpY2ggY2FsbGVlLXNhdmVzIHdlJ3Jl
IHVzaW5nIGFuZCBzYXZlcyB0aGVtLgogICAgIGhhbmRsZUNhbGxlZVNhdmVzKGNvZGUpOwogICAg
IAotICAgIGlmIChPcHRpb25zOjpkdW1wQWlyQXNKU0JlZm9yZUFsbG9jYXRlU3RhY2soKSkgewot
ICAgICAgICBkYXRhTG9nKCJEdW1waW5nIEFpciBhcyBKUyBiZWZvcmUgYWxsb2NhdGVTdGFjazpc
biIpOwotICAgICAgICBkdW1wQXNKUyhjb2RlLCBXVEY6OmRhdGFGaWxlKCkpOwotICAgICAgICBk
YXRhTG9nKCJBaXIgaGFzaDogIiwgY29kZS5qc0hhc2goKSwgIlxuIik7Ci0gICAgfQotCiAgICAg
Ly8gVGhpcyB0dXJucyBhbGwgU3RhY2sgYW5kIENhbGxBcmcgQXJncyBpbnRvIEFkZHIgYXJncyB0
aGF0IHVzZSB0aGUgZnJhbWUgcG9pbnRlci4gSXQgZG9lcwogICAgIC8vIHRoaXMgYnkgZmlyc3Qt
Zml0IGFsbG9jYXRpbmcgc3RhY2sgc2xvdHMuIEl0IHNob3VsZCBiZSBwcmV0dHkgZGFybiBjbG9z
ZSB0byBvcHRpbWFsLCBzbyB3ZQogICAgIC8vIHNob3VsZG4ndCBoYXZlIHRvIHdvcnJ5IGFib3V0
IHRoaXMgdmVyeSBtdWNoLgogICAgIGFsbG9jYXRlU3RhY2soY29kZSk7CiAgICAgCi0gICAgaWYg
KE9wdGlvbnM6OmR1bXBBaXJBZnRlckFsbG9jYXRlU3RhY2soKSkgewotICAgICAgICBkYXRhTG9n
KCJEdW1waW5nIEFpciBhZnRlciBhbGxvY2F0ZVN0YWNrOlxuIik7Ci0gICAgICAgIGRhdGFMb2co
Y29kZSk7Ci0gICAgICAgIGRhdGFMb2coIkFpciBoYXNoOiAiLCBjb2RlLmpzSGFzaCgpLCAiXG4i
KTsKLSAgICB9Ci0KICAgICAvLyBJZiB3ZSBjb2FsZXNjZWQgbW92ZXMgdGhlbiB3ZSBjYW4gdW5i
cmVhayBjcml0aWNhbCBlZGdlcy4gVGhpcyBpcyB0aGUgbWFpbiByZWFzb24gZm9yIHRoaXMKICAg
ICAvLyBwaGFzZS4KICAgICBzaW1wbGlmeUNGRyhjb2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTExNyw2ICsxMTcsNyBAQCBBZGQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgeDg2OiBJbW0s
IEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgs
IFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAgICAgeDg2OiBUbXAsIEluZGV4CiAKQEAgLTEzNSw5
ICsxMzYsMTIgQEAgeDg2OiBBZGQxNiBVOkc6MTYsIFVEOkc6MTYKIDY0OiBBZGQ2NCBVOkc6NjQs
IFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0s
IEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgs
IFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAKIDY0OiBBZGQ2
NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgSW1tLCBUbXAsIFRtcApAQCAtMTY2LDkgKzE3
MCwxMiBAQCB4ODY6IEFkZEZsb2F0IFU6RjozMiwgVUQ6RjozMgogU3ViMzIgVTpHOjMyLCBVWkQ6
RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5k
ZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1w
CiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKIAogYXJtNjQ6IFN1YjMy
IFU6RzozMiwgVTpHOjMyLCBEOkc6MzIKICAgICBUbXAsIFRtcCwgVG1wCkBAIC0xNzYsOSArMTgz
LDEyIEBAIGFybTY0OiBTdWIzMiBVOkc6MzIsIFU6RzozMiwgRDpHOjMyCiA2NDogU3ViNjQgVTpH
OjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4Njog
SW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IElu
ZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogCiBhcm02
NDogU3ViNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTIw
NCw5ICsyMTQsMTIgQEAgeDg2OiBTdWJGbG9hdCBVOkY6MzIsIFVEOkY6MzIKIE5lZzMyIFVaRDpH
OjMyCiAgICAgVG1wCiAgICAgeDg2OiBBZGRyCisgICAgeDg2OiBJbmRleAogCiA2NDogTmVnNjQg
VUQ6Rzo2NAogICAgIFRtcAorICAgIHg4NjogQWRkcgorICAgIHg4NjogSW5kZXgKIAogYXJtNjQ6
IE5lZ2F0ZURvdWJsZSBVOkY6NjQsIEQ6Rjo2NAogICAgIFRtcCwgVG1wCkBAIC0zMzAsOCArMzQz
LDExIEBAIEFuZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1t
LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogICAgIHg4Njog
QWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4
ODY6IEltbSwgSW5kZXgKIAogNjQ6IEFuZDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBU
bXAsIFRtcCwgVG1wCkBAIC0zMzksNyArMzU1LDEzIEBAIEFuZDMyIFU6RzozMiwgVVpEOkc6MzIK
IAogeDg2XzY0OiBBbmQ2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAotICAgIHg4Njog
SW1tLCBUbXAKKyAgICBJbW0sIFRtcAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRt
cAogCiBBbmREb3VibGUgVTpGOjY0LCBVOkY6NjQsIEQ6Rjo2NAogICAgIFRtcCwgVG1wLCBUbXAK
QEAgLTQ1OSw4ICs0ODEsMTEgQEAgT3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAK
ICAgICB4ODY6IEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5k
ZXgKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogSW1t
LCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAKIDY0OiBPcjY0IFU6Rzo2NCwgVTpHOjY0LCBE
Okc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00NjksNiArNDk0LDEyIEBAIE9yMzIgVTpHOjMy
LCBVWkQ6RzozMgogNjQ6IE9yNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4
ODY6IEltbSwgVG1wCisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAg
ICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAorICAgIHg4NjogQWRkciwgVG1w
CisgICAgeDg2OiBJbmRleCwgVG1wCiAKIFhvcjMyIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAg
ICAgVG1wLCBUbXAsIFRtcApAQCAtNDgwLDggKzUxMSwxMSBAQCBYb3IzMiBVOkc6MzIsIFVaRDpH
OjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIK
KyAgICB4ODY6IFRtcCwgSW5kZXgKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgs
IFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAKIDY0OiBYb3I2
NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDkwLDYgKzUy
NCwxMSBAQCBYb3IzMiBVOkc6MzIsIFVaRDpHOjMyCiA2NDogWG9yNjQgVTpHOjY0LCBVRDpHOjY0
CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAor
ICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAgeDg2OiBJbW0sIEFk
ZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICB4ODY6IEltbSwgVG1wCiAKIGFybTY0OiBOb3Qz
MiBVOkc6MzIsIFpEOkc6MzIKQEAgLTQ5OCwxMyArNTM3LDE1IEBAIGFybTY0OiBOb3QzMiBVOkc6
MzIsIFpEOkc6MzIKIHg4NjogTm90MzIgVVpEOkc6MzIKICAgICBUbXAKICAgICBBZGRyCisgICAg
SW5kZXgKIAogYXJtNjQ6IE5vdDY0IFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAKIAoteDg2
OiBOb3Q2NCBVRDpHOjY0Cit4ODZfNjQ6IE5vdDY0IFVEOkc6NjQKICAgICBUbXAKICAgICBBZGRy
CisgICAgSW5kZXgKIAogYXJtNjQ6IEFic0RvdWJsZSBVOkY6NjQsIEQ6Rjo2NAogICAgIFRtcCwg
VG1wCkBAIC02NjgsMjggKzcwOSwzODAgQEAgTG9hZDggVTpHOjgsIFpEOkc6MzIKICAgICBBZGRy
LCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3E4IFU6Rzo4LCBaRDpHOjMyCisgICAgQWRk
ciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBTdG9yZTggVTpHOjgsIEQ6Rzo4CiAgICAgVG1wLCBJ
bmRleAogICAgIFRtcCwgQWRkcgogICAgIHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBB
ZGRyCiAKK1N0b3JlUmVsOCBVOkc6OCwgRDpHOjgKKyAgICBUbXAsIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKwogTG9hZDhTaWdu
ZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRt
cAogCitMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIKKyAgICBBZGRyLCBU
bXAKKyAgICBJbmRleCwgVG1wCisKIExvYWQxNiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBU
bXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3ExNiBVOkc6MTYsIFpEOkc6MzIKKyAgICBBZGRy
LCBUbXAKKyAgICBJbmRleCwgVG1wCisKIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBa
RDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTZTaWduZWRF
eHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAK
KwogU3RvcmUxNiBVOkc6MTYsIEQ6RzoxNgogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIK
IAorU3RvcmVBY3ExNiBVOkc6MTYsIEQ6RzoxNgorICAgIFRtcCwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKworTG9hZEFjcTMyIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wCisgICAgQWRkciwg
VG1wCisgICAgSW5kZXgsIFRtcAorCitTdG9yZVJlbDMyIFU6RzozMiwgWkQ6RzozMgorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1t
LCBJbmRleAorCis2NDogTG9hZEFjcTY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIFRtcCwgVG1wCisg
ICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCis2NDogU3RvcmVSZWw2NCBVOkc6NjQsIFpE
Okc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIK
KyAgICB4ODY6IEltbSwgSW5kZXgKKworIyBUaGUgZmlyc3Qgb3BlcmFuZCBpcyByYXguCit4ODY6
IEF0b21pY1N0cm9uZ0NBUzggVTpHOjMyLCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjgsIFpEOkc6OAor
ICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1w
KiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMTYgVTpHOjMyLCBVRDpH
OjE2LCBVOkc6MzIsIFVEOkc6MTYsIFpEOkc6OAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwg
QWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4Njog
QXRvbWljU3Ryb25nQ0FTMzIgVTpHOjMyLCBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIsIFpEOkc6
OAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwg
VG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4Nl82NDogQXRvbWljU3Ryb25nQ0FTNjQgVTpHOjMy
LCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQsIFpEOkc6OAorICAgIFN0YXR1c0NvbmQsIFRtcCos
IFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisK
K3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjgKKyAgICBUbXAqLCBU
bXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMTYg
VUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2CisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzMyIFVEOkc6MzIsIFU6RzozMiwgVUQ6
RzozMgorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2XzY0
OiBBdG9taWNTdHJvbmdDQVM2NCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQKKyAgICBUbXAqLCBU
bXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25n
Q0FTOCBVOkc6MzIsIFVEOkc6OCwgVTpHOjgsIFVEOkc6OCAvYnJhbmNoCisgICAgU3RhdHVzQ29u
ZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4
ODY6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2IFU6RzozMiwgVUQ6RzoxNiwgVTpHOjMyLCBVRDpH
OjE2IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXND
b25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIgVTpH
OjMyLCBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIgL2JyYW5jaAorICAgIFN0YXR1c0NvbmQsIFRt
cCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2XzY0
OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2
NCAvYnJhbmNoCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29u
ZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDggVTpHOjgsIFVEOkc6OAorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogQXRvbWljQWRkMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNB
ZGQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY0FkZDY0IFU6Rzo2NCwg
VUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNTdWIxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjMyIFU6
RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljU3ViNjQgVTpHOjY0LCBVRDpHOjY0
CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNBbmQ4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21p
Y0FuZDE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMzIgVTpHOjMyLCBV
RDpHOjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNBbmQ2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJ
bW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IEF0b21pY09yOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNPcjE2IFU6
RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3IzMiBVOkc6MzIsIFVEOkc6MzIKKyAg
ICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODZfNjQ6IEF0b21pY09yNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNYb3I4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjE2IFU6RzoxNiwgVUQ6
RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9yMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
XzY0OiBBdG9taWNYb3I2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY05lZzgg
VUQ6Rzo4CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTmVnMTYgVUQ6RzoxNgor
ICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05lZzMyIFVEOkc6MzIKKyAgICBBZGRy
CisgICAgSW5kZXgKKworeDg2XzY0OiBBdG9taWNOZWc2NCBVRDpHOjY0CisgICAgQWRkcgorICAg
IEluZGV4CisKK3g4NjogQXRvbWljTm90OCBVRDpHOjgKKyAgICBBZGRyCisgICAgSW5kZXgKKwor
eDg2OiBBdG9taWNOb3QxNiBVRDpHOjE2CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRv
bWljTm90MzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0b21pY05v
dDY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnQWRkOCBV
RDpHOjgsIFVEOkc6OAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNYY2hnQWRkMTYgVUQ6RzoxNiwgVUQ6RzoxNgorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2OiBBdG9taWNYY2hnQWRkMzIgVUQ6RzozMiwgVUQ6RzozMgorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYY2hnQWRkNjQgVUQ6Rzo2NCwgVUQ6
Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnOCBV
RDpHOjgsIFVEOkc6OAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNYY2hnMTYgVUQ6RzoxNiwgVUQ6RzoxNgorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2OiBBdG9taWNYY2hnMzIgVUQ6RzozMiwgVUQ6RzozMgorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYY2hnNjQgVUQ6Rzo2NCwgVUQ6Rzo2NAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworYXJtNjQ6IExvYWRMaW5rOCBVOkc6OCwgWkQ6
Rzo4CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmtBY3E4
IFU6Rzo4LCBaRDpHOjgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKKyMgU3VwZXIg
Y29uZnVzaW5nIGZhY3Q6IHRoaXMgcmV0dXJucyAwIHRvIG1lYW4gc3VjY2VzcywgMSB0byBtZWFu
IGZhaWx1cmUuCithcm02NDogU3RvcmVDb25kOCBVOkc6OCwgRDpHOjgsIEVaRDpHOjgKKyAgICBU
bXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVs
OCBVOkc6OCwgRDpHOjgsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5k
ZXgsIFRtcAorCithcm02NDogTG9hZExpbmsxNiBVOkc6MTYsIFpEOkc6MTYKKyAgICBBZGRyLCBU
bXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTE2IFU6RzoxNiwgWkQ6Rzox
NgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDE2IFU6
RzoxNiwgRDpHOjE2LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4
LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDE2IFU6RzoxNiwgRDpHOjE2LCBFWkQ6Rzo4Cisg
ICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5r
MzIgVTpHOjMyLCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02
NDogTG9hZExpbmtBY3EzMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRl
eCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQzMiBVOkc6MzIsIEQ6RzozMiwgRVpEOkc6OAorICAg
IFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRS
ZWwzMiBVOkc6MzIsIEQ6RzozMiwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1w
LCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGluazY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIEFk
ZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxNjQgVTpHOjY0LCBa
RDpHOjY0CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25k
NjQgVTpHOjY0LCBEOkc6NjQsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwg
SW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsNjQgVTpHOjY0LCBEOkc6NjQsIEVaRDpH
OjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogRGVw
ZW5kMzIgVTpHOjMyLCBEOkc6MzIKKyAgICBUbXAsIFRtcAorCithcm02NDogRGVwZW5kNjQgVTpH
OjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcAorCiBDb21wYXJlMzIgVTpHOjMyLCBVOkc6MzIsIFU6
RzozMiwgWkQ6RzozMgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAKICAgICBSZWxDb25kLCBU
bXAsIEltbSwgVG1wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGlt
aXplQmxvY2tPcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xNzcsNiArMTc3LDEwIEBAIHZvaWQgb3B0aW1pemVCbG9ja09yZGVyKENv
ZGUmIGNvZGUpCiAgICAgICAgIGNhc2UgQnJhbmNoU3ViNjQ6CiAgICAgICAgIGNhc2UgQnJhbmNo
TmVnMzI6CiAgICAgICAgIGNhc2UgQnJhbmNoTmVnNjQ6CisgICAgICAgIGNhc2UgQnJhbmNoQXRv
bWljU3Ryb25nQ0FTODoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMxNjoKKyAg
ICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMjoKKyAgICAgICAgY2FzZSBCcmFuY2hB
dG9taWNTdHJvbmdDQVM2NDoKICAgICAgICAgICAgIGlmIChjb2RlLmZpbmROZXh0QmxvY2soYmxv
Y2spID09IGJsb2NrLT5zdWNjZXNzb3JCbG9jaygwKSAmJiBicmFuY2guYXJnc1swXS5pc0ludmVy
dGlibGUoKSkgewogICAgICAgICAgICAgICAgIHN0ZDo6c3dhcChibG9jay0+c3VjY2Vzc29yKDAp
LCBibG9jay0+c3VjY2Vzc29yKDEpKTsKICAgICAgICAgICAgICAgICBicmFuY2guYXJnc1swXSA9
IGJyYW5jaC5hcmdzWzBdLmludmVydGVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgdm9pZCBwYWRJbnRlcmZlcmVuY2UoQ29k
ZSYgY29kZSkKICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5r
LCBXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJvbGUpIHsKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNl
IEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAgICAgaGFzRWFybHlEZWYgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgQXJnOjpMYXRlVXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29k
ZSkKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVDb2xkVXNlOgogICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgog
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogY29kZS5yZWdzSW5Qcmlvcml0
eU9yZGVyKGJhbmspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXRCZWZv
cmUuZ2V0KHJlZykgJiYgIXNldEFmdGVyLmdldChyZWcpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSwxNCArNTEsNDkgQEAgY2xhc3MgQXJnCiAgICAgICAgIEBiYW5rID0g
YmFuawogICAgICAgICBAd2lkdGggPSB3aWR0aAogICAgIGVuZAotCi0gICAgZGVmIHdpZHRoQ29k
ZQorICAgIAorICAgIGRlZiBzZWxmLndpZHRoQ29kZSh3aWR0aCkKICAgICAgICAgaWYgd2lkdGgg
PT0gIlB0ciIKICAgICAgICAgICAgICJwb2ludGVyV2lkdGgoKSIKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgIldpZHRoI3t3aWR0aH0iCiAgICAgICAgIGVuZAogICAgIGVuZAorCisgICAgZGVm
IHdpZHRoQ29kZQorICAgICAgICBBcmcud2lkdGhDb2RlKHdpZHRoKQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBzZWxmLnJvbGVDb2RlKHJvbGUpCisgICAgICAgIGNhc2Ugcm9sZQorICAgICAgICB3
aGVuICJVIgorICAgICAgICAgICAgIlVzZSIKKyAgICAgICAgd2hlbiAiRCIKKyAgICAgICAgICAg
ICJEZWYiCisgICAgICAgIHdoZW4gIlpEIgorICAgICAgICAgICAgIlpEZWYiCisgICAgICAgIHdo
ZW4gIlVEIgorICAgICAgICAgICAgIlVzZURlZiIKKyAgICAgICAgd2hlbiAiVVpEIgorICAgICAg
ICAgICAgIlVzZVpEZWYiCisgICAgICAgIHdoZW4gIlVBIgorICAgICAgICAgICAgIlVzZUFkZHIi
CisgICAgICAgIHdoZW4gIlMiCisgICAgICAgICAgICAiU2NyYXRjaCIKKyAgICAgICAgd2hlbiAi
RUQiCisgICAgICAgICAgICAiRWFybHlEZWYiCisgICAgICAgIHdoZW4gIkVaRCIKKyAgICAgICAg
ICAgICJFYXJseVpEZWYiCisgICAgICAgIHdoZW4gIkxVIgorICAgICAgICAgICAgIkxhdGVVc2Ui
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVuZAorICAgIGVuZAor
ICAgIAorICAgIGRlZiByb2xlQ29kZQorICAgICAgICBBcmcucm9sZUNvZGUocm9sZSkKKyAgICBl
bmQKIGVuZAogCiBjbGFzcyBPdmVybG9hZApAQCAtMTgyLDcgKzIxNyw3IEBAIGRlZiBsZXgoc3Ry
LCBmaWxlTmFtZSkKIGVuZAogCiBkZWYgaXNSb2xlKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgo
VSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEpfChTKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEoKFUp
fChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUyl8KEVEKXwoRVpEKXwoTFUpKVxaLwogZW5kCiAK
IGRlZiBpc0dGKHRva2VuKQpAQCAtMTkwLDcgKzIyNSw3IEBAIGRlZiBpc0dGKHRva2VuKQogZW5k
CiAKIGRlZiBpc0tpbmQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJ
bW0pfChCaXRJbW0pfChCaXRJbW02NCl8KEFkZHIpfChJbmRleCl8KFJlbENvbmQpfChSZXNDb25k
KXwoRG91YmxlQ29uZCkpXFovCisgICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJbW0p
fChCaXRJbW0pfChCaXRJbW02NCl8KEFkZHIpfChJbmRleCl8KFJlbENvbmQpfChSZXNDb25kKXwo
RG91YmxlQ29uZCl8KFN0YXR1c0NvbmQpKVxaLwogZW5kCiAKIGRlZiBpc0FyY2godG9rZW4pCkBA
IC0yNjQsNyArMjk5LDcgQEAgY2xhc3MgUGFyc2VyCiAKICAgICBkZWYgY29uc3VtZUtpbmQKICAg
ICAgICAgcmVzdWx0ID0gdG9rZW4uc3RyaW5nCi0gICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVk
IGtpbmQgKEltbSwgQmlnSW1tLCBCaXRJbW0sIEJpdEltbTY0LCBUbXAsIEFkZHIsIEluZGV4LCBS
ZWxDb25kLCBSZXNDb25kLCBvciBEb3VibGVDb25kKSIpIHVubGVzcyBpc0tpbmQocmVzdWx0KQor
ICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwgQml0SW1tLCBC
aXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgRG91YmxlQ29uZCwg
b3IgU3RhdHVzQ29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKICAgICAgICAgYWR2YW5jZQog
ICAgICAgICByZXN1bHQKICAgICBlbmQKQEAgLTYzNCwyOCArNjY5LDcgQEAgd3JpdGVIKCJPcGNv
ZGVVdGlscyIpIHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3ZlcmxvYWQuc2lnbmF0dXJl
LmVhY2hfd2l0aF9pbmRleCB7CiAgICAgICAgICAgICAgICAgfCBhcmcsIGluZGV4IHwKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByb2xlID0gbmlsCi0gICAgICAgICAgICAgICAg
Y2FzZSBhcmcucm9sZQotICAgICAgICAgICAgICAgIHdoZW4gIlUiCi0gICAgICAgICAgICAgICAg
ICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAgICAgICAgIHdoZW4gIkQiCi0gICAgICAgICAgICAg
ICAgICAgIHJvbGUgPSAiRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlpEIgotICAgICAgICAg
ICAgICAgICAgICByb2xlID0gIlpEZWYiCi0gICAgICAgICAgICAgICAgd2hlbiAiVUQiCi0gICAg
ICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlVa
RCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VaRGVmIgotICAgICAgICAgICAgICAg
IHdoZW4gIlVBIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZUFkZHIiCi0gICAgICAg
ICAgICAgICAgd2hlbiAiUyIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3JhdGNoIgot
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAg
ICAgICAgICBlbmQKLQotICAgICAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3RvcihhcmdzWyN7
aW5kZXh9XSwgQXJnOjoje3JvbGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRoQ29kZX0pOyIK
KyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0sIEFyZzo6
I3thcmcucm9sZUNvZGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRoQ29kZX0pOyIKICAgICAg
ICAgICAgIH0KICAgICAgICAgZW5kCiAgICAgfQpAQCAtODE5LDYgKzgzMyw3IEBAIHdyaXRlSCgi
T3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgIHdoZW4gIlJlbENvbmQiCiAgICAg
ICAgICAgICAgICAgd2hlbiAiUmVzQ29uZCIKICAgICAgICAgICAgICAgICB3aGVuICJEb3VibGVD
b25kIgorICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICByYWlzZSAiVW5leHBlY3RlZCBraW5kOiAje2tpbmQu
bmFtZX0iCiAgICAgICAgICAgICAgICAgZW5kCkBAIC0xMTA1LDYgKzExMjAsOCBAQCB3cml0ZUgo
Ik9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJn
c1sje2luZGV4fV0uYXNSZXN1bHRDb25kaXRpb24oKSIKICAgICAgICAgICAgICAgICB3aGVuICJE
b3VibGVDb25kIgogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9
XS5hc0RvdWJsZUNvbmRpdGlvbigpIgorICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQi
CisgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzU3RhdHVz
Q29uZGl0aW9uKCkiCiAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICB9CiAKQEAgLTEx
NDgsMjcgKzExNjUsNyBAQCBGaWxlLm9wZW4oIkpTQWlyX29wY29kZS5qcyIsICJ3IikgewogICAg
ICAgICAgICAgICAgIG91dHAucHV0cyAiY2FzZSAje292ZXJsb2FkLnNpZ25hdHVyZS5sZW5ndGh9
OiIgaWYgbmVlZE92ZXJsb2FkU3dpdGNoCiAgICAgICAgICAgICAgICAgb3ZlcmxvYWQuc2lnbmF0
dXJlLmVhY2hfd2l0aF9pbmRleCB7CiAgICAgICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8
Ci0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSBuaWwKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBhcmcucm9sZQotICAgICAgICAgICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAgICAg
ICAgICAgICAgcm9sZSA9ICJVc2UiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIkQiCi0gICAg
ICAgICAgICAgICAgICAgICAgICByb2xlID0gIkRlZiIKLSAgICAgICAgICAgICAgICAgICAgd2hl
biAiWkQiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlpEZWYiCi0gICAgICAgICAg
ICAgICAgICAgIHdoZW4gIlVEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VE
ZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlVaRCIKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVUEiCi0gICAg
ICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZUFkZHIiCi0gICAgICAgICAgICAgICAgICAg
IHdoZW4gIlMiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlNjcmF0Y2giCi0gICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAg
ICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgb3V0cC5wdXRzICJpbnN0LnZpc2l0QXJnKCN7aW5kZXh9LCBmdW5jLCBBcmcuI3tyb2xl
fSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aH0pOyIKKyAgICAgICAgICAgICAgICAgICAgb3V0
cC5wdXRzICJpbnN0LnZpc2l0QXJnKCN7aW5kZXh9LCBmdW5jLCBBcmcuI3thcmcucm9sZUNvZGV9
LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRofSk7IgogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBvdXRwLnB1dHMgImJyZWFrOyIKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEzLDkgKzQxMyw2IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYo
Ym9vbCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAog
ICAgIHYoYm9vbCwgZXhwb3NlSW50ZXJuYWxNb2R1bGVMb2FkZXIsIGZhbHNlLCBOb3JtYWwsICJl
eHBvc2UgdGhlIGludGVybmFsIG1vZHVsZSBsb2FkZXIgb2JqZWN0IHRvIHRoZSBnbG9iYWwgc3Bh
Y2UgZm9yIGRlYnVnZ2luZyIpIFwKICAgICBcCi0gICAgdihib29sLCBkdW1wQWlyQXNKU0JlZm9y
ZUFsbG9jYXRlU3RhY2ssIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICB2KGJvb2wsIGR1
bXBBaXJBZnRlckFsbG9jYXRlU3RhY2ssIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICBc
CiAgICAgdihib29sLCB1c2VTdXBlclNhbXBsZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwK
ICAgICBcCiAgICAgdihib29sLCByZXBvcnRMTEludFN0YXRzLCBmYWxzZSwgQ29uZmlndXJhYmxl
LCAiUmVwb3J0cyBMTEludCBzdGF0aXN0aWNzIikgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302968</attachid>
            <date>2017-02-28 12:37:23 -0800</date>
            <delta_ts>2017-02-28 13:52:03 -0800</delta_ts>
            <desc>more things compile</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>250446</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMiBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAq
LzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhp
c1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAg
LTIyNDMsOCArMjI0OSw2IEBACiAJCURDMjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0
MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0
MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIw
QzFEMzQzNzcwMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBD
ZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pT
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0
QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhE
MUQwMEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1
bXBBc0pTLmggKi87IH07CiAJCURDNjA1QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERD
NjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2
MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJREM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNF
MjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgKi87IH07CkBAIC0yNzY0LDYgKzI3Njgs
MTIgQEAKIAkJMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNX
aWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNw
cDsgcGF0aCA9IGIzL0IzV2lkdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1Zh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFs
dWUuY3BwOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIz
L0IzQXRvbWljVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUx
RTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBh
dGggPSBiMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25T
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNl
cnRpb25TZXQuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFp
ckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFp
ckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5
IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQzE5ODMyRDM0MDA3RDRCMTkg
LyogRGVidWdnZXJTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWJ1
Z2dlclNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERGMTk4MzJE
OTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlw
ZVByb2ZpbGVyTG9nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3NzgsOCAr
NDc4OCw2IEBACiAJCURDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElDU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREMzRDJCMDkxRDM0MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBDZWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCURDM0QyQjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwQ2VsbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1w
QXNKUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJEdW1wQXNK
Uy5jcHA7IHBhdGggPSBiMy9haXIvQWlyRHVtcEFzSlMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRHVtcEFzSlMuaDsgcGF0aCA9IGIzL2Fp
ci9BaXJEdW1wQXNKUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYwNUI1OTFD
RTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckV2ZW50LmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2Zp
bGVyRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYwNUI1QTFDRTI2
RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBQcm9maWxlckV2ZW50Lmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlclVJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQ
cm9maWxlclVJRC5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlclVJRC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjkyLDYgKzUzMDAsOCBAQAogCQkJCTBGRUM4NEIzMUJE
QUNEODgwMDgwRkY3NCAvKiBhaXIgKi8sCiAJCQkJMEZFQzg0QjQxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzQXJndW1lbnRSZWdWYWx1ZS5jcHAgKi8sCiAJCQkJMEZFQzg0QjUxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzQXJndW1lbnRSZWdWYWx1ZS5oICovLAorCQkJCTBGMkM2M0IzMUU2MzQzRTgwMEMxMzgz
OSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLywKKwkJCQkwRjJDNjNCNDFFNjM0M0U4MDBDMTM4Mzkg
LyogQjNBdG9taWNWYWx1ZS5oICovLAogCQkJCTBGMkM2M0FCMUU2MEFFM0MwMEMxMzgzOSAvKiBC
M0JhbmsuY3BwICovLAogCQkJCTBGMkM2M0FDMUU2MEFFM0MwMEMxMzgzOSAvKiBCM0JhbmsuaCAq
LywKIAkJCQkwRkVDODRCNjFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrLmNwcCAqLywK
QEAgLTUzNTQsNiArNTM2NCw3IEBACiAJCQkJMEZFQzg0Q0QxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
RnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg0Q0UxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
R2VuZXJhdGUuY3BwICovLAogCQkJCTBGRUM4NENGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVy
YXRlLmggKi8sCisJCQkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZFQzg0RDAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2Vu
ZXJpY0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NUJGMUJFMTY3QTAwMDgwRkY3NCAv
KiBCM0hlYXBSYW5nZS5jcHAgKi8sCiAJCQkJMEZFQzg1QzAxQkUxNjdBMDAwODBGRjc0IC8qIEIz
SGVhcFJhbmdlLmggKi8sCkBAIC01NDY5LDYgKzU0ODAsOCBAQAogCQkJCTBGNjRFQUYyMUM0RUNE
MDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggKi8sCiAJCQkJMEZFQzg1NEMxQkRBQ0RDNzAw
ODBGRjc0IC8qIEFpckJhc2ljQmxvY2suY3BwICovLAogCQkJCTBGRUM4NTREMUJEQUNEQzcwMDgw
RkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmggKi8sCisJCQkJMEYyQzYzQjkxRTYzNDQwODAwQzEzODM5
IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLywKKwkJCQkwRjJDNjNCQTFFNjM0NDA4MDBD
MTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkIzODc4QjFCRkJDNDRE
MDBFM0FCMUUgLyogQWlyQmxvY2tXb3JrbGlzdC5oICovLAogCQkJCTBGNjE4MzIwMUM0NUJGMDcw
MDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTBGNjE4MzIxMUM0
NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKQEAgLTU0ODAsOCAr
NTQ5Myw2IEBACiAJCQkJMEYxMEYxQTIxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oICov
LAogCQkJCTc5QUJCMTdCMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuY3BwICov
LAogCQkJCTc5QUJCMTdDMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuaCAqLywK
LQkJCQlEQzQ1NEI4QTFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovLAotCQkJ
CURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oICovLAogCQkJCTBGNDU3
MDM2MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgKi8sCiAJCQkJ
MEY0NTcwMzcxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi8sCiAJ
CQkJMEY2MTgzMjMxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVtaXRTaHVmZmxlLmNwcCAqLywKQEAg
LTczMjYsNiArNzMzNyw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTBGMUZFNTFCMTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oICovLAorCQkJCTBG
MkM2M0JGMUU2NjBFQTUwMEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCAqLywK
IAkJCQk4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
ICovLAogCQkJCTBGMzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UuaCAqLywKIAkJCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRB
c3NlbWJsZXIuaCAqLywKQEAgLTczNTQsOCArNzM2Niw4IEBACiAJCQkJODZDNTY4REUxMUEyMTNF
RTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovLAogCQkJCUZFNjhDNjM1MUI5MERE
RDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovLAogCQkJCUZFNjhDNjM2
MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLywKLQkJCQk4NjAx
NjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQk4NjAx
NjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLywKKwkJCQk4
NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQlB
N0E0QUUwNzE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwICov
LAogCQkJCTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oICovLAogCQkJCTY1ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbC5oICovLApAQCAtNzk0Myw3ICs3OTU1LDYgQEAKIAkJCQkwRkVDODU3NDFC
REFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkVDODU3NjFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJREM0NTRCOEQxRDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4MzJEMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0
U2h1ZmZsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0REUxQ0YxQzRDMUI1NDAwNEQ2QzExIC8q
IEFpckZpeE9idmlvdXNTcGlsbHMuaCBpbiBIZWFkZXJzICovLApAQCAtNzk1Niw2ICs3OTY3LDcg
QEAKIAkJCQkwRkVDODU4MDFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzg1ODExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkRGNjdENzFEOURDNDQyMDAxQjk4MjUgLyogQWlyS2luZC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQkMxRTYzNDQwQzAwQzEzODM5IC8qIEFpckJsb2NrSW5z
ZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0RDQzODFDMDAxNjFDMDA4MUQ2NjMg
LyogQWlyTGl2ZW5lc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTM0QzFBMUM0QjM5QUUwMDAz
QTUxMiAvKiBBaXJMb2dSZWdpc3RlclByZXNzdXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYx
ODMyRjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmggaW4gSGVhZGVy
cyAqLywKQEAgLTgwNDcsNiArODA1OSw3IEBACiAJCQkJNDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4
IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVCMzFCREVE
OTU3MDA4MEZGNzQgLyogQjNDb25zdFB0clZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMz
OERGNjFCRTkzRDU1MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjJDNjNCODFFNjM0M0Y3MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRp
b25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4RTBFMUJGMDI3NkMwMDEzQzg4RiAvKiBC
M0RhdGFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzRkNGQzFDMTYyNUJFMDAzMjNG
NjcgLyogQjNEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCOEFEOTFDNEVEREEy
MDA5NjkwNTIgLyogQjNEdXBsaWNhdGVUYWlscy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzY2LDYg
KzgzNzksNyBAQAogCQkJCTBGMzkyQzhBMUI0NjE4ODQwMDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6
ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUzIC8qIERGR09T
UkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVFMTcxNzhF
NzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMkM2M0I3MUU2MzQzRUQwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjYyMzc5ODFBRTQ1Q0E3MDBENDAyRUEgLyogREZHUGhhbnRvbUluc2VydGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1QzE0RUY5MEFGMDBDNzI1MzIgLyogREZH
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VCMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdQaGlDaGlsZHJlbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzkyLDYgKzk4MDYsNyBAQAogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTBGRkE1NDk3
MTZCODgzNTAwMEIzQTk4MiAvKiBBNjRET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
MkM2M0MwMUU2NjBFQTcwMEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUFENDkzN0MzMUREQkU2MTQwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVs
ZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkg
LyogQWJzdHJhY3RQQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzcwQjRGNTFCRjI2MjAyMDA1
QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTk4MDIsNyArOTgxNyw2IEBACiAJCQkJMEZFQzg1NzMxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckNDYWxsU3BlY2lhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVD
ODU3NTFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjYxODMyQjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCURDNDU0QjhDMUQwMEU4MjIwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjQ1NzAzODFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENv
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MTgzMkMxQzQ1QkYwNzAwNzI0NTBCIC8qIEFp
ckVtaXRTaHVmZmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNERFMUNFMUM0QzFCNTQwMDRE
NkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAyNDgs
NiArMTAyNjIsNyBAQAogCQkJCTlFNzI5NDA3MTkwRjAxQTUwMDFBOTFCNSAvKiBJbml0aWFsaXpl
VGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTNFNUI3MTg1QjhCRDMwMDdFOTVB
RCAvKiBJbmplY3RlZFNjcmlwdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTE0QjJDMjE4NUE2
ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGMkM2M0I2MUU2MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1OEUzNTkxMTg2MERFQ0YwMDFGMjRGRSAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1Q0ExODVGOTYyNDAwN0U5NUFEIC8qIEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTg0MEUyMDE4N0I3Qjg2
MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MDI2Niw2ICsxMDI4MSw3IEBACiAJCQkJRTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMyNDM4
QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1MEU0QjYxMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQkIxRTYzNDQwQTAwQzEzODM5IC8q
IEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NTE2NUQyMUJE
RjBCOTgwMDNCNzVDMSAvKiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0YxMDdFQzM3NjAwNDI3QTQ4IC8qIEludGVy
bmFsRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIiAvLyBIYXZlIHRvIGJyZWFrIHdpdGgg
c3R5bGUgYmVjYXVzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggaXMgYSBzaGFkeSBoZWFkZXIu
CisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN0
YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAg
ICBjYXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdWNjZXNzOgorICAgICAgICBvdXQu
cHJpbnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlckJhc2U6OkZhaWx1cmU6CisgICAgICAgIG91dC5wcmludCgiRmFpbHVyZSIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTQt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1JhbmRvbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDggKzUxLDI4
IEBAIG5hbWVzcGFjZSBERkcgewogc3RydWN0IE9TUkV4aXQ7CiB9CiAKK2NsYXNzIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXR1c0NvbmRpdGlvbiB7
CisgICAgICAgIFN1Y2Nlc3MsCisgICAgICAgIEZhaWx1cmUKKyAgICB9OworICAgIAorICAgIHN0
YXRpYyBTdGF0dXNDb25kaXRpb24gaW52ZXJ0KFN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisg
ICAgeworICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbikgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6
CisgICAgICAgICAgICByZXR1cm4gRmFpbHVyZTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAg
ICAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgfQorfTsKKwog
dGVtcGxhdGUgPGNsYXNzIEFzc2VtYmxlclR5cGUsIGNsYXNzIE1hY3JvQXNzZW1ibGVyVHlwZT4K
LWNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgeworY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlciA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZSB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1i
bGVyVHlwZT4gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlclR5cGU7CiAgICAgdHlwZWRlZiBBc3NlbWJs
ZXJUeXBlIEFzc2VtYmxlclR5cGVfVDsKQEAgLTExMDgsMyArMTEyOSwxNiBAQCBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxF
UikKIAogfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCituYW1l
c3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdGF0dXND
b25kaXRpb24pOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBU1NF
TUJMRVIpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEz
Niw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMy
OyAvLyBUaGlzIGlzIHN1cGVyIHVzZWZ1bCBmb3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8v
IFV0aWxpdGllcyB1c2VkIGJ5IHRoZSBERkcgSklULgorICAgIHVzaW5nIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXJCYXNlOjppbnZlcnQ7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZl
cnQ7CiAgICAgCiAgICAgc3RhdGljIERvdWJsZUNvbmRpdGlvbiBpbnZlcnQoRG91YmxlQ29uZGl0
aW9uIGNvbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzEsNiArMTcxLDExIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAg
fQogCisgICAgdm9pZCBhZGQzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMu
aW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhZGQzMihSZWdpc3Rl
cklEIHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbF9y
bShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwpAQCAtMjUxLDE2ICsyNTYsNzEgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX3JtKHNyYywgZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYW5kd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKwor
ICAgIHZvaWQgYW5kMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRl
c3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kOChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kOChSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
bmRiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCiAgICAgdm9pZCBhbmQzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmQzMihCYXNlSW5kZXggc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9p
ZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9pbShpbW0ubV92
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X2ltKHN0YXRpY19j
YXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBhbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8aW50
MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5k
Yl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9pbShzdGF0
aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhbmQz
MihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIGlmIChvcDEgPT0gb3AyKQpAQCAtNDU2LDYgKzUxNiwzMSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm5lZ2xfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsK
ICAgICB9CiAKKyAgICB2b2lkIG5lZzMyKEJhc2VJbmRleCBzcmNEZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UsIHNyY0Rl
c3QuaW5kZXgsIHNyY0Rlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnMTYoQWRkcmVz
cyBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnd19tKHNyY0Rlc3Qub2Zm
c2V0LCBzcmNEZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnMTYoQmFzZUluZGV4IHNy
Y0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQs
IHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisg
ICAgdm9pZCBuZWc4KEFkZHJlc3Mgc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm5lZ2JfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IG5lZzgoQmFzZUluZGV4IHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdi
X20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5z
Y2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcnIoc3JjLCBkZXN0KTsKQEAg
LTQ3MSwxNiArNTU2LDcxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9y
bF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUp
OworICAgIH0KKworICAgIHZvaWQgb3IxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
b3I4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5vcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2
b2lkIG9yOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5vcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4
LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoQWRkcmVzcyBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9tcihzcmMub2Zmc2V0
LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKEJhc2VJbmRleCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9tcihzcmMu
b2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwog
ICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci5vcmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbShpbW0u
bV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19pbShzdGF0aWNf
Y2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OworICAgIH0KKworICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19pbShzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9p
bShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmJfaW0oc3RhdGljX2Nh
c3Q8aW50OF90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihSZWdp
c3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIGlmIChvcDEgPT0gb3AyKQpAQCAtNjU0LDE2ICs3OTQsNzEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nh
c3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+
KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisg
ICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwor
ICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJ3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5t
X3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBzdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9pbShzdGF0
aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIz
MihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIuc3VibF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9p
ZCBzdWIzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zdWJsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5z
Y2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yndfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoUmVnaXN0
ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmJf
cm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjMy
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN1Ymxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5k
ZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yndfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIHN1YjgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3ViYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5k
ZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfcnIoc3Jj
LCBkZXN0KTsKQEAgLTY3Nyw2ICs4NzIsNTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3Nl
bWJsZXIueG9ybF9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAg
fQogCisgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9pbShpbW0ubV92
YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7Cisg
ICAgfQorCisgICAgdm9pZCB4b3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3Zh
bHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci54b3J3X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0Lmlu
ZGV4LCBkZXN0LnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9yd19pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwg
ZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50
OF90PihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9pbShpbW0ubV92YWx1ZSwgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4KFRydXN0ZWRJbW0z
MiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0
aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBk
ZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1
ZSA9PSAtMSkKQEAgLTY5MCwxMSArOTI5LDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIueG9ybF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZv
aWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIueG9ybF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5k
ZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMs
IEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfcm0oc3JjLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFJlZ2lzdGVy
SUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcndf
cm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsK
KyAgICB9CisKKyAgICB2b2lkIHhvcjgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQg
eG9yMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KICAgICAK
KyAgICB2b2lkIHhvcjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRl
eCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCB4b3IzMihSZWdpc3Rl
cklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGlmIChvcDEgPT0gb3AyKQpAQCAtNzQxLDYgKzEwMTAsMzEgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5ub3RsX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAg
dm9pZCBub3QzMihCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5v
dGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAg
ICB9CisKKyAgICB2b2lkIG5vdDE2KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IG5vdDE2KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90d19t
KGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KworICAgIHZvaWQgbm90OChBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5ub3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3Q4
KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAg
IHZvaWQgc3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAg
IHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3FydHNkX3JyKHNyYywgZHN0KTsKQEAgLTEwNzEsNDIg
KzEzNjUsMjMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggYWRkcmVzcykKICAgICB7Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAgLy8gT24gMzIt
Yml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKLSAg
ICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEKLSAgICAg
ICAgaWYgKHNyYyA+PSA0KSB7Ci0gICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lz
dGVyLgotICAgICAgICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRk
cmVzcyk7Ci0KLSAgICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0
byBwZXJmb3JtIHRoZSBzdG9yZS4KLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7Ci0gICAgICAgICAgICBzd2FwKHNy
YywgdGVtcCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAg
ICBtX2Fzc2VtYmxlci5tb3Z3X3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTE2
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotI2lmIENQVShYODYpCi0g
ICAgICAgIC8vIE9uIDMyLWJpdCB4ODYgd2UgY2FuIG9ubHkgc3RvcmUgZnJvbSB0aGUgZmlyc3Qg
NCByZWdpc3RlcnM7Ci0gICAgICAgIC8vIGVzcC4uZWRpIGFyZSBtYXBwZWQgdG8gdGhlICdoJyBy
ZWdpc3RlcnMhCi0gICAgICAgIGlmIChzcmMgPj0gNCkgewotICAgICAgICAgICAgLy8gUGljayBh
IHRlbXBvcmFyeSByZWdpc3Rlci4KLSAgICAgICAgICAgIFJlZ2lzdGVySUQgdGVtcCA9IGdldFVu
dXNlZFJlZ2lzdGVyKGFkZHJlc3MpOwotCi0gICAgICAgICAgICAvLyBTd2FwIHRvIHRoZSB0ZW1w
b3JhcnkgcmVnaXN0ZXIgdG8gcGVyZm9ybSB0aGUgc3RvcmUuCi0gICAgICAgICAgICBzd2FwKHNy
YywgdGVtcCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3JtKHRlbXAsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgbV9hc3NlbWJsZXIu
bW92d19ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAg
IHZvaWQgc3RvcmUxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1f
dmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlMTYoVHJ1c3RlZEltbTMyIGltbSwg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0
aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UpOworICAgIH0KIAogICAgIC8vIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbjoKICAgICAvLwpA
QCAtMjc0Myw3NCArMzAxOCw4MzggQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbSgwLCAwLCBYODZSZWdpc3RlcnM6OmVzcCk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
IH0pOworICAgIH0KIAotICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVu
dHMgbW90aW9uIG9mIG5vcm1hbCBzdG9yZXMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgotICAg
IHZvaWQgc3RvcmVGZW5jZSgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAg
ICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICAv
LyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwg
bG9hZHMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgotICAgIHZvaWQgbG9hZEZlbmNlKCkKKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQs
IGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0
aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHZvaWQgYXRvbWlj
U3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKICAgICB7Ci0gICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGlu
c3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJs
ZUFkZHJlc3MoKSk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
IH0pOwogICAgIH0KLSAgICAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVu
dFNpemUoKQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBY
ODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVy
LmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7
CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6
cGF0Y2hhYmxlSnVtcFNpemUoKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1Bv
aW50Um91bmRpbmcoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAg
ewotICAgICAgICBpZiAoc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90
Q2hlY2tlZCkKLSAgICAgICAgICAgIHVwZGF0ZUVheDFFY3hGbGFncygpOwotICAgICAgICByZXR1
cm4gc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAgICAgICBh
dG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhj
aGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAg
fQogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNBVlgoKQorICAgIHZvaWQgYXRvbWljU3Ryb25n
Q0FTOChSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBC
YXNlSW5kZXggYWRkcmVzcykKICAgICB7Ci0gICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlz
dGVyaW91cyByZWdyZXNzaW9ucyBhbmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUu
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVk
QW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0p
OwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hGbGFncygpCisgICAgdm9p
ZCBhdG9taWNTdHJvbmdDQVMxNihSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAgICBpbnQgZmxhZ3Mg
PSAwOwotI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgICAgIGludCBjcHVJbmZvWzRdOwotICAgICAg
ICBfX2NwdWlkKGNwdUluZm8sIDB4MSk7Ci0gICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsKLSNl
bGlmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICBhc20g
KAotICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgotICAgICAgICAgICAgImNwdWlkOyIK
LSAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdz
KQotICAgICAgICAgICAgOgotICAgICAgICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3giLCAi
JWVkeCIKLSAgICAgICAgICAgICk7Ci0jZWxzZQotICAgICAgICBhc20gKAotICAgICAgICAgICAg
Im1vdmwgJDB4MSwgJSVlYXg7IgotICAgICAgICAgICAgInB1c2hsICUlZWJ4OyIKLSAgICAgICAg
ICAgICJjcHVpZDsiCi0gICAgICAgICAgICAicG9wbCAlJWVieDsiCi0gICAgICAgICAgICAibW92
bCAlJWVjeCwgJTA7IgotICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgIDoK
LSAgICAgICAgICAgIDogIiVlYXgiLCAiJWVjeCIsICIlZWR4IgotICAgICAgICAgICAgKTsKLSNl
bmRpZgorICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1f
YXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZd
IHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xf
cm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
YXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
WyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NB
UzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICBK
dW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4
cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9
KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9u
Z0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xf
cm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM4KFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsK
KyAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFs
dWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTOChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3
VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FT
MTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
bmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFr
Q0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21p
Y1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0
b21pY1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1
bXAgYnJhbmNoQXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFu
Y2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFu
ZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRv
bWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dl
YWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3Vs
dCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtD
QVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdW
YWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMzIo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1
ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFkZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNBZGQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ4KGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ4
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIGFkZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIGFkZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRk
MTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNBZGQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhZGQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY0FkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQzMihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFk
ZDMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhZGQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1N1YjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1
YjgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1N1YjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBzdWIxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N1YjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0
ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWIxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgYW5kOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY0FuZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDgo
cmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFJlZ2lzdGVy
SUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYW5kOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYoaW1tLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgYW5kMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQx
NihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY0FuZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYocmVnLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1tMzIg
aW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMyKGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5k
MzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdp
c3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIGFuZDMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljT3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I4KGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBvcjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoUmVn
aXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgb3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljT3I4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I4KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9y
MTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljT3IxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgb3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY09yMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMzIoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFJlZ2lzdGVySUQgcmVnLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMy
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1hvcjgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1hvcjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IxNihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIo
cmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc4KEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVn
OChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc4KEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc4
KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzE2KEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMTYo
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMTYoQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2
KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzMyKEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMzIo
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMzIoQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMy
KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDgoQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDgoQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDgoYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MTYoQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QxNihhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QxNihCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MzIoQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QzMihhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QzMihCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkOChSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWGNoZ0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhhZGR3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueGFkZHdfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hn
QWRkMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNY
Y2hnQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9ybShyZWcs
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBtX2Fzc2VtYmxlci54Y2hnYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1hjaGcxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShy
ZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1hjaGcxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGd3X3Jt
KHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzMyKFJlZ2lzdGVySUQg
cmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzMyKFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBsb2FkQWNxOChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbG9hZDgoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOChC
YXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkOChzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihB
ZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDhTaWduZWRF
eHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWdu
ZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRBY3ExNihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbG9hZDE2KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEJh
c2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNihzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIo
QWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNlNpZ25l
ZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTZT
aWduZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBsb2FkQWNxMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGxvYWQzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3Ez
MihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMzIo
c3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBzdG9yZTgoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBzdG9yZVJlbDgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgc3RvcmU4KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4
KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4
KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUxNihzcmMsIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHN0b3JlUmVsMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgc3RvcmUxNihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0
b3JlUmVsMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAg
ICBzdG9yZTE2KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMsIGRlc3QpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHN0b3JlUmVsMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBzdG9yZTMyKGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIC8vIFdlIHRh
a2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBzdG9yZXMu
IFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgorICAgIHZvaWQgc3RvcmVGZW5jZSgpCisgICAgewor
ICAgIH0KKworICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90
aW9uIG9mIG5vcm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBs
b2FkRmVuY2UoKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1
bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwg
ZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVt
cChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1
dGFibGVBZGRyZXNzKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1
bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qg
cGF0Y2hhYmxlSnVtcFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6
cGF0Y2hhYmxlSnVtcFNpemUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zs
b2F0aW5nUG9pbnRSb3VuZGluZygpCisgICAgeworICAgICAgICBpZiAoc19zc2U0XzFDaGVja1N0
YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkKKyAgICAgICAgICAgIHVwZGF0ZUVh
eDFFY3hGbGFncygpOworICAgICAgICByZXR1cm4gc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlE
Q2hlY2tTdGF0ZTo6U2V0OworICAgIH0KKworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQVZYKCkK
KyAgICB7CisgICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlzdGVyaW91cyByZWdyZXNzaW9u
cyBhbmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUuCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAg
IHsKKyAgICAgICAgaW50IGZsYWdzID0gMDsKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgICAgICBp
bnQgY3B1SW5mb1s0XTsKKyAgICAgICAgX19jcHVpZChjcHVJbmZvLCAweDEpOworICAgICAgICBm
bGFncyA9IGNwdUluZm9bMl07CisjZWxpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCisjaWYgQ1BV
KFg4Nl82NCkKKyAgICAgICAgYXNtICgKKyAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIK
KyAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAg
ICAgICAgICAgOiAiPWciIChmbGFncykKKyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVl
YXgiLCAiJWVieCIsICIlZWN4IiwgIiVlZHgiCisgICAgICAgICAgICApOworI2Vsc2UKKyAgICAg
ICAgYXNtICgKKyAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKKyAgICAgICAgICAgICJw
dXNobCAlJWVieDsiCisgICAgICAgICAgICAiY3B1aWQ7IgorICAgICAgICAgICAgInBvcGwgJSVl
Yng7IgorICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAgICAgICAgIDogIj1nIiAo
ZmxhZ3MpCisgICAgICAgICAgICA6CisgICAgICAgICAgICA6ICIlZWF4IiwgIiVlY3giLCAiJWVk
eCIKKyAgICAgICAgICAgICk7CisjZW5kaWYKICNlbmRpZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xB
TkcpCiAgICAgICAgIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDE5KSkgPyBD
UFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CiAgICAgICAgIHNf
YXZ4Q2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDI4KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNl
dCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CkBAIC0yODMxLDYgKzM4NzAsMTggQEAgcHJvdGVj
dGVkOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8WDg2QXNzZW1ibGVyOjpDb25kaXRpb24+
KGNvbmQpOwogICAgIH0KIAorICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlv
bihTdGF0dXNDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZCkgewor
ICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpD
b25kaXRpb25FOworICAgICAgICBjYXNlIEZhaWx1cmU6CisgICAgICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjpDb25kaXRpb25ORTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25F
OworICAgIH0KKwogICAgIHZvaWQgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICNpZiBDUFUoWDg2KQpAQCAtMjkyNSw2ICszOTc2LDM1
IEBAIHByb3RlY3RlZDoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoc2l6ZU9mUmVnaXN0ZXIp
LCBkc3QpOwogICAgICAgICBzcmNJc05vblplcm8ubGluayh0aGlzKTsKICAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUyhTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCByZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVk
QW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgZnVuYygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZS
ZWdpc3RlcnM6OmVheCk7CisgICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgcmVzdWx0
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWlj
U3Ryb25nQ0FTKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMp
CisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVh
eCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVuYygpOworICAgICAg
ICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NB
UyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29u
c3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4
NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBm
dW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4
KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25k
KSkpOworICAgIH0KIAogcHJpdmF0ZToKICAgICAvLyBPbmx5IE1hY3JvQXNzZW1ibGVyWDg2IHNo
b3VsZCBiZSB1c2luZyB0aGUgZm9sbG93aW5nIG1ldGhvZDsgU1NFMiBpcyBhbHdheXMgYXZhaWxh
YmxlIG9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNjQsMTEgKzI2NCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
YXNzZW1ibGVyLmFkZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAor
ICAgIHZvaWQgYWRkNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4
LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgYWRkNjQoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDY0KFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKICAgICB2b2lkIGFkZDY0KEFic29sdXRlQWRkcmVzcyBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzcmMubV9wdHIpLCBz
Y3JhdGNoUmVnaXN0ZXIoKSk7CkBAIC0zMDYsNiArMzE2LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gMSkKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmluY3FfbShhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkcV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7
CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lz
dGVyKCkpOwpAQCAtMzQyLDExICszNjAsNDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRxX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YW5kcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2Nh
bGUpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJh
c2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zmc2V0
LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZv
aWQgYW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pcihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pbShpbW0ubV92YWx1
ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCiAgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0
KQogICAgIHsKICAgICAgICAgaW50cHRyX3QgaW50VmFsdWUgPSBpbW0uYXNJbnRwdHIoKTsKQEAg
LTU1MiwxMSArNjAwLDUxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVncV9yKGRl
c3QpOwogICAgIH0KIAorICAgIHZvaWQgbmVnNjQoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubmVncV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKwor
ICAgIHZvaWQgbmVnNjQoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5uZWdxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vcnFfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAK
KyAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
LCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoQWRkcmVz
cyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9t
cihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KEJh
c2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3Qp
OworICAgIH0KKworICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9pbShpbW0u
bV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgc3Jj
RGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptYXgoKQpAQCAtNjE5LDE2ICs3MDcsMzEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9pbShpbW0ubV92
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9tcihzcmMub2Zmc2V0LCBz
cmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChCYXNlSW5kZXggc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNyYy5v
ZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAg
ICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIuc3VicV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAg
IH0KIAorICAgIHZvaWQgc3ViNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yNjQoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LnhvcnFfcnIoc3JjLCBkZXN0KTsKQEAgLTY1MSw2ICs3NTQsMzEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci54b3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAg
fQogCisgICAgdm9pZCB4b3I2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChBZGRy
ZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9y
cV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB4b3I2
NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwg
ZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX2ltKGltbS5tX3ZhbHVlLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9y
cV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54b3JxX2lyKGltbS5t
X3ZhbHVlLCBzcmNEZXN0KTsKQEAgLTY2Niw2ICs3OTQsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5ub3RxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAg
dm9pZCBub3Q2NChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5v
dHFfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAg
ICB9CisKICAgICB2b2lkIGxvYWQ2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsKQEAgLTcyNSw2ICs4NTgsMTEgQEAgcHVibGljOgogICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZxX2kzMm0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMy
bShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02
NCBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF8zMl82NChpbW0ubV92YWx1ZSkpIHsKQEAgLTEyOTQsNyArMTQzMiwyNTUgQEAg
cHVibGljOgogICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1t
UHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNo
UmVnaXN0ZXIoKSksIG1hc2s4KTsKICAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdD
QVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
cmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25n
Q0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3Vs
dCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0p
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1f
YXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQogCisgICAgSnVt
cCBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBl
Y3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5j
aEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRB
bmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJv
bmdDQVM2NChjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3Vs
dCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywg
cmVzdWx0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0
b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVz
cyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNBZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFk
ZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkNjQoVHJ1
c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQocmVnLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFkZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
U3ViNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2NChpbW0sIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2
NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIHN1YjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljU3ViNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2NChyZWcsIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgYW5kNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2
NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgYW5kNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNPcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9y
NjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNPcjY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
eG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYb3I2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVn
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNOZWc2NChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y05lZzY0KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBuZWc2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNOb3Q2NChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y05vdDY0KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBub3Q2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYY2hnQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZHFfcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkcV9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJl
c3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc2NChSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc2NChSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgbG9hZEFjcTY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNx
NjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDY0
KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU2NChzcmMsIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHN0b3JlUmVsNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgc3RvcmU2NChpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0
b3JlUmVsNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAg
ICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQorICAgIAogICAgIHZvaWQgdHJ1bmNhdGVEb3Vi
bGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5jdnR0c2Qyc2lxX3JyKHNyYywgZGVzdCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTAsMTYgKzE5MCwyMCBAQCBwcml2YXRlOgogICAg
ICAgICBPUF9BRERfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgwMSwKICAgICAgICAgT1Bf
QUREX0d2RXYgICAgICAgICAgICAgICAgICAgICA9IDB4MDMsCiAgICAgICAgIE9QX0FERF9FQVhJ
diAgICAgICAgICAgICAgICAgICAgPSAweDA1LAorICAgICAgICBPUF9PUl9FdkdiICAgICAgICAg
ICAgICAgICAgICAgID0gMHgwOCwKICAgICAgICAgT1BfT1JfRXZHdiAgICAgICAgICAgICAgICAg
ICAgICA9IDB4MDksCiAgICAgICAgIE9QX09SX0d2RXYgICAgICAgICAgICAgICAgICAgICAgPSAw
eDBCLAogICAgICAgICBPUF9PUl9FQVhJdiAgICAgICAgICAgICAgICAgICAgID0gMHgwRCwKICAg
ICAgICAgT1BfMkJZVEVfRVNDQVBFICAgICAgICAgICAgICAgICA9IDB4MEYsCisgICAgICAgIE9Q
X0FORF9FdkdiICAgICAgICAgICAgICAgICAgICAgPSAweDIwLAogICAgICAgICBPUF9BTkRfRXZH
diAgICAgICAgICAgICAgICAgICAgID0gMHgyMSwKICAgICAgICAgT1BfQU5EX0d2RXYgICAgICAg
ICAgICAgICAgICAgICA9IDB4MjMsCisgICAgICAgIE9QX1NVQl9FdkdiICAgICAgICAgICAgICAg
ICAgICAgPSAweDI4LAogICAgICAgICBPUF9TVUJfRXZHdiAgICAgICAgICAgICAgICAgICAgID0g
MHgyOSwKICAgICAgICAgT1BfU1VCX0d2RXYgICAgICAgICAgICAgICAgICAgICA9IDB4MkIsCiAg
ICAgICAgIE9QX1NVQl9FQVhJdiAgICAgICAgICAgICAgICAgICAgPSAweDJELAogICAgICAgICBQ
UkVfUFJFRElDVF9CUkFOQ0hfTk9UX1RBS0VOICAgID0gMHgyRSwKKyAgICAgICAgT1BfWE9SX0V2
R2IgICAgICAgICAgICAgICAgICAgICA9IDB4MzAsCiAgICAgICAgIE9QX1hPUl9Fdkd2ICAgICAg
ICAgICAgICAgICAgICAgPSAweDMxLAogICAgICAgICBPUF9YT1JfR3ZFdiAgICAgICAgICAgICAg
ICAgICAgID0gMHgzMywKICAgICAgICAgT1BfWE9SX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9
IDB4MzUsCkBAIC0yMjMsNiArMjI3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfR1JPVVAxX0V2
SWIgICAgICAgICAgICAgICAgICA9IDB4ODMsCiAgICAgICAgIE9QX1RFU1RfRWJHYiAgICAgICAg
ICAgICAgICAgICAgPSAweDg0LAogICAgICAgICBPUF9URVNUX0V2R3YgICAgICAgICAgICAgICAg
ICAgID0gMHg4NSwKKyAgICAgICAgT1BfWENIR19FdkdiICAgICAgICAgICAgICAgICAgICA9IDB4
ODYsCiAgICAgICAgIE9QX1hDSEdfRXZHdiAgICAgICAgICAgICAgICAgICAgPSAweDg3LAogICAg
ICAgICBPUF9NT1ZfRWJHYiAgICAgICAgICAgICAgICAgICAgID0gMHg4OCwKICAgICAgICAgT1Bf
TU9WX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4ODksCkBAIC0yNTIsNiArMjU3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgUFJFX1NTRV9GMiAgICAgICAgICAgICAgICAgICAgICA9IDB4RjIs
CiAgICAgICAgIFBSRV9TU0VfRjMgICAgICAgICAgICAgICAgICAgICAgPSAweEYzLAogICAgICAg
ICBPUF9ITFQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHhGNCwKKyAgICAgICAgT1BfR1JP
VVAzX0ViICAgICAgICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9QX0dST1VQM19FYkli
ICAgICAgICAgICAgICAgICAgPSAweEY2LAogICAgICAgICBPUF9HUk9VUDNfRXYgICAgICAgICAg
ICAgICAgICAgID0gMHhGNywKICAgICAgICAgT1BfR1JPVVAzX0V2SXogICAgICAgICAgICAgICAg
ICA9IDB4RjcsIC8vIE9QX0dST1VQM19FdiBoYXMgYW4gaW1tZWRpYXRlLCB3aGVuIGluc3RydWN0
aW9uIGlzIGEgdGVzdC4gCkBAIC0yOTAsNiArMjk2LDggQEAgcHJpdmF0ZToKICAgICAgICAgT1Bf
U0VUQ0MgICAgICAgICAgICA9IDB4OTAsCiAgICAgICAgIE9QMl8zQllURV9FU0NBUEVfQUUgPSAw
eEFFLAogICAgICAgICBPUDJfSU1VTF9HdkV2ICAgICAgID0gMHhBRiwKKyAgICAgICAgT1AyX0NN
UFhDSEdiICAgICAgICA9IDB4QjAsCisgICAgICAgIE9QMl9DTVBYQ0hHICAgICAgICAgPSAweEIx
LAogICAgICAgICBPUDJfTU9WWlhfR3ZFYiAgICAgID0gMHhCNiwKICAgICAgICAgT1AyX0JTRiAg
ICAgICAgICAgICA9IDB4QkMsCiAgICAgICAgIE9QMl9UWkNOVCAgICAgICAgICAgPSAweEJDLApA
QCAtMjk4LDYgKzMwNiw4IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9NT1ZTWF9HdkViICAgICAg
PSAweEJFLAogICAgICAgICBPUDJfTU9WWlhfR3ZFdyAgICAgID0gMHhCNywKICAgICAgICAgT1Ay
X01PVlNYX0d2RXcgICAgICA9IDB4QkYsCisgICAgICAgIE9QMl9YQUREYiAgICAgICAgICAgPSAw
eEMwLAorICAgICAgICBPUDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAgT1AyX1BF
WFRSV19HZFVkSWIgICA9IDB4QzUsCiAgICAgICAgIE9QMl9QU0xMUV9VZHFJYiAgICAgPSAweDcz
LAogICAgICAgICBPUDJfUFNSTFFfVWRxSWIgICAgID0gMHg3MywKQEAgLTQ0MCw2ICs0NTAsMTEg
QEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQUREX0d2RXYsIGRz
dCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCBhZGRsX21yKGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BRERfR3ZF
diwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAogI2lmICFD
UFUoWDg2XzY0KQogICAgIHZvaWQgYWRkbF9tcihjb25zdCB2b2lkKiBhZGRyLCBSZWdpc3RlcklE
IGRzdCkKICAgICB7CkBAIC01NjIsMTEgKzU3NywyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAg
fQogCisgICAgdm9pZCBhZGRxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0FERF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAg
dm9pZCBhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0FERF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CisKICAgICB2b2lkIGFkZHFfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtNTkxLDYg
KzYxNiwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihp
bW0pOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBhZGRxX2ltKGludCBpbW0sIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQURELCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBhZGRsX2ltKGludCBpbW0sIGNvbnN0
IHZvaWQqIGFkZHIpCiAgICAgewpAQCAtNjE0LDExICs2NTAsNDMgQEAgcHVibGljOgogICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CiAKKyAgICB2b2lkIGFuZGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAg
IHZvaWQgYW5kbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9P
UEVSQU5EX1NJWkUpOworICAgICAgICBhbmRsX3JtKHNyYywgb2Zmc2V0LCBiYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBhbmRsX3JtKHNyYywg
b2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kYl9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhbmRsX2lyKGludCBpbW0sIFJlZ2lz
dGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkp
IHsKQEAgLTY0MSw2ICs3MDksNDEgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAg
dm9pZCBhbmRsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVO
RF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFf
T1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmR3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5kbF9pbShp
bW0sIG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X2ltKGludCBpbW0sIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICBhbmRsX2ltKGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKwor
ICAgIHZvaWQgYW5kYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQ
MV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9BTkQsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBhbmRxX3JyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC02NTcsNiArNzYwLDQ4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAgICAg
IH0KICAgICB9CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRx
X21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FORF9F
dkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FO
RF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNl
LCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JP
VVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBh
bmRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMy
KGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09Q
X0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBh
bmRsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewpAQCAtNzAzLDYgKzg0OCwx
MSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9H
Uk9VUDVfRXYsIEdST1VQMV9PUF9BREQsIGJhc2UsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9p
ZCBpbmNxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9V
UDVfRXYsIEdST1VQMV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogICAgIHZvaWQgbmVnbF9yKFJlZ2lzdGVySUQgZHN0
KQpAQCAtNzE1LDYgKzg2NSwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9ORUcsIGRzdCk7CiAgICAgfQor
CisgICAgdm9pZCBuZWdxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVH
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgbmVncV9tKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG5l
Z2xfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCkBAIC03MjIsNiArODgyLDMzIEBAIHB1
YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAz
X09QX05FRywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG5lZ2xfbShpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9O
RUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3df
bShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5lZ2xfbShvZmZzZXQsIGJhc2Up
OworICAgIH0KKworICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWdsX20ob2Zmc2V0LCBiYXNlLCBp
bmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnYl9tKGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDNfRWIsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBu
ZWdiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0Vi
LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAg
ICAgdm9pZCBub3RsX3IoUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBkc3QpOwpAQCAtNzMyLDYg
KzkxOSwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBu
b3RsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2
LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBub3R3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBub3RsX20o
b2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbm90bF9tKG9m
ZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGJfbShpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBub3RxX3IoUmVnaXN0ZXJJRCBk
c3QpCiAgICAgewpAQCAtNzQyLDYgKzk1NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBub3RxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgb3JsX3JyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTc1NCwxMSArOTczLDQzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2RXYsIGRzdCwgYmFzZSwg
b2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfR3ZFdiwgZHN0LCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQog
CisgICAgdm9pZCBvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKworICAgIHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJF
X09QRVJBTkRfU0laRSk7CisgICAgICAgIG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBvcmxfcm0oc3JjLCBv
ZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcmJfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7Cisg
ICAgfQorCisgICAgdm9pZCBvcmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgb3JsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQg
ZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAg
LTc4NCwxMiArMTAzNSw4OSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lk
IG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1Is
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIG9yd19pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG9ybF9pbShpbW0sIG9mZnNl
dCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcndfaW0oaW50IGltbSwgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG9ybF9p
bShpbW0sIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9y
Yl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9PUiwgYmFz
ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0K
KworICAgIHZvaWQgb3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0K
KwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBvcnFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1Jf
RXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgb3JxX21yKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX09SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
KyAgICB2b2lkIG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwg
YmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9p
ZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9P
UF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgb3JxX2ly
KGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VY
VEVORF84XzMyKGltbSkpIHsKQEAgLTgzMSwxMSArMTE1OSw0MyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwog
ICAgIH0KIAorICAgIHZvaWQgc3VibF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAg
dm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09Q
RVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwg
c3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vid19ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YmxfaXIoaW50IGltbSwgUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpA
QCAtODYxLDYgKzEyMjEsNDEgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9p
ZCBzdWJsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1Bf
U1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdWJ3X2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgc3VibF9pbShpbW0s
IG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X2ltKGludCBpbW0sIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBzdWJsX2ltKGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9P
UF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBzdWJxX3JyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC04NzIsMTEgKzEyNjcsMjEgQEAgcHVi
bGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBi
YXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9tcihpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJxX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZz
ZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJxX2lyKGludCBpbW0s
IFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMy
KGltbSkpIHsKQEAgLTkwMSw2ICsxMzA2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIHN1
YnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIo
aW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2
SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1Bf
U1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2b2lkIHN1
YmxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC05MjQsMTEgKzEzNDAs
MjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0d2RXYs
IGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcmxfbXIoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHhv
cmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgeG9ybF9pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTQwLDYgKzEzNjYsNjMgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgfQogCisgICAgdm9pZCB4b3JsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0p
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UpOworICAgIH0KKwor
ICAgIHZvaWQgeG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZz
ZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3J3X2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgeG9ybF9pbShpbW0sIG9mZnNl
dCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICB4b3Js
X2ltKGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
eG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9FdkdiLCBzcmMsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JiX2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0
KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZv
aWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAgICAg
dm9pZCB4b3JsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTk3NCwxMSArMTQ1Nyw0NyBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9F
WFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9S
LCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1t
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHhvcnFfaW0oaW50IGltbSwgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1Is
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0p
OworICAgICAgICB9CisgICAgfQorICAgIAogICAgIHZvaWQgeG9ycV9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAK
KyAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDY0KE9QX1hPUl9HdkV2LCBkZXN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYsIGRlc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgbHpjbnRfcnIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZHN0KQpAQCAtMTU4NiwxMSArMjEwNSwzOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQog
CisgICAgdm9pZCB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZH
Yiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNoZ2Jfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdf
RXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9p
ZCB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIG9mZnNl
dCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2
b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCB4Y2hncV9ycihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMTYwNiw2ICsyMTUyLDExIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwg
c3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgeGNoZ3Ffcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWENIR19F
dkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAog
ICAgIHZvaWQgbW92bF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNzMx
LDYgKzIyODIsMTggQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9Q
X01PVl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAg
ICB2b2lkIG1vdndfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBtb3ZsX2kzMm0oaW1tLCBvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgbW92d19p
bShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFO
RF9TSVpFKTsKKyAgICAgICAgbW92bF9pMzJtKGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2Nh
bGUpOworICAgIH0KKwogICAgIHZvaWQgbW92bF9FQVhtKGNvbnN0IHZvaWQqIGFkZHIpCiAgICAg
ewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX092RUFYKTsKQEAgLTE4MDAs
NiArMjM2MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGlt
bSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX2kzMm0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDExX0V2SXosIEdST1VQMTFfTU9WLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTMyKGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZxX2k2NHIoaW50NjRfdCBpbW0sIFJlZ2lz
dGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9W
X0VBWEl2LCBkc3QpOwpAQCAtMjc3NSw2ICszMzQ0LDkwIEBAIHB1YmxpYzoKICAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9MT0NLKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbXB4Y2hn
Yl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENIR2IsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnYl9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hHYiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
Y21weGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9mZnNl
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdsX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdxX3JtKFJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9DTVBYQ0hHLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNyYywgYmFzZSwgb2Zmc2V0
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQUREYiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29C
eXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hB
REQsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkbF9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1Ay
X1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHhhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfWEFERCwgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9YQURE
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCiAgICAgdm9p
ZCBtZmVuY2UoKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudGhyZWVCeXRlT3AoT1AyXzNC
WVRFX0VTQ0FQRV9BRSwgT1AzX01GRU5DRSk7CkBAIC0zNzUxLDYgKzQ0MDQsMjQgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKGdyb3VwT3AsIHJtKTsKICAgICAg
ICAgfQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBp
bnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAg
ICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcsIGJhc2UpLCBy
ZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZ
VEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7
CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUs
IGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBp
bnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZl
cldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZihi
eXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCByZWdSZXF1aXJlc1JleChpbmRleCwgYmFzZSksIHJl
ZywgaW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1Bf
MkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29k
ZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBJbW1lZGlhdGVzOgogICAgICAg
ICAvLwogICAgICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFwcGVuZGVkIHdoZXJlIGFw
cHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKKworI2lm
IEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitBdG9t
aWNWYWx1ZTo6fkF0b21pY1ZhbHVlKCkKK3sKK30KKworV2lkdGggQXRvbWljVmFsdWU6OmFjY2Vz
c1dpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aWR0aDsKK30KKwordm9pZCBBdG9taWNW
YWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKK3sKKyAgICBvdXQucHJpbnQoY29tbWEsICJ3aWR0aCA9ICIsIG1fd2lkdGgpOworICAgIAor
ICAgIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShjb21tYSwgb3V0KTsKK30KKworVmFsdWUqIEF0b21p
Y1ZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAoreworICAgIHJldHVybiBuZXcgQXRvbWljVmFsdWUo
KnRoaXMpOworfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4g
b3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQz
Ml90IG9mZnNldCA9IDApCisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBv
cGVyYW5kLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCBvcGVyYW5kLCBwb2ludGVyKQorICAgICwg
bV93aWR0aCh3aWR0aCkKK3sKKyAgICBzZXRGZW5jZVJhbmdlKEhlYXBSYW5nZTo6dG9wKCkpOwor
ICAgIAorICAgIEFTU0VSVChiZXN0VHlwZShvcGVyYXRpb25XaWR0aCgpKSA9PSBvcGVyYXRpb25U
eXBlKCkpOworICAgIAorICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRv
bWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hn
T3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAg
ICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworQXRvbWljVmFsdWU6OkF0b21pY1Zh
bHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBleHBlY3Rl
ZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9
IDApCisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBraW5kLm9wY29kZSgp
ID09IEF0b21pY1dlYWtDQVMgPyBJbnQzMiA6IGV4cGVjdGVkVmFsdWUtPnR5cGUoKSwgb3JpZ2lu
LCBvZmZzZXQsIGV4cGVjdGVkVmFsdWUsIG5ld1ZhbHVlLCBwb2ludGVyKQorICAgICwgbV93aWR0
aCh3aWR0aCkKK3sKKyAgICBzZXRGZW5jZVJhbmdlKEhlYXBSYW5nZTo6dG9wKCkpOworICAgIAor
ICAgIEFTU0VSVChiZXN0VHlwZShvcGVyYXRpb25XaWR0aCgpKSA9PSBvcGVyYXRpb25UeXBlKCkp
OworCisgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FT
OgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzTWVtb3J5
VmFsdWUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBBdG9taWNWYWx1ZSA6IHB1YmxpYyBN
ZW1vcnlWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQp
CisgICAgeworICAgICAgICByZXR1cm4gaXNBdG9taWMoa2luZC5vcGNvZGUoKSk7CisgICAgfQor
ICAgIAorICAgIH5BdG9taWNWYWx1ZSgpOworICAgIAorICAgIFR5cGUgb3BlcmF0aW9uVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7IH0KKyAgICAKKyAgICBXaWR0aCBvcGVy
YXRpb25XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICAKKyAgICAvLyBTeW5v
bnltIGZvciBvcGVyYXRpb25XaWR0aCgpLCBpZiB5b3UncmUgYWNjZXNzaW5nIHZpYSBNZW1vcnlW
YWx1ZS4KKyAgICBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJv
dGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBj
b25zdCBvdmVycmlkZTsKKyAgICAKKyAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgCisg
ICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtp
bmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUs
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAorICAgIFdpZHRoIG1f
d2lkdGg7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0
aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9j
a0luc2VydGlvblNldC5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwzNSArMzYs
MTMgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBCbG9ja0luc2VydGlvblNl
dDo6QmxvY2tJbnNlcnRpb25TZXQoUHJvY2VkdXJlICZwcm9jKQotICAgIDogbV9wcm9jKHByb2Mp
CisgICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQocHJvYy5tX2Jsb2NrcykKKyAgICAsIG1f
cHJvYyhwcm9jKQogewogfQogCiBCbG9ja0luc2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0
KCkgeyB9CiAKLXZvaWQgQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydChCbG9ja0luc2VydGlvbiYm
IGluc2VydGlvbikKLXsKLSAgICBtX2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9u
KSk7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQodW5zaWduZWQg
aW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxv
Y2s+IGJsb2NrKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKLSAgICBCYXNp
Y0Jsb2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsKLSAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24o
aW5kZXgsIFdURk1vdmUoYmxvY2spKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQmFzaWNC
bG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUs
IGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCks
IGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgp
KTsKLX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEFmdGVyKEJhc2lj
QmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHJldHVybiBpbnNlcnQoYWZ0
ZXItPmluZGV4KCkgKyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYWZ0
ZXItPmZyZXF1ZW5jeSgpKTsKLX0KLQogQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6OnNw
bGl0Rm9yd2FyZCgKICAgICBCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQmIHZhbHVlSW5kZXgs
IEluc2VydGlvblNldCogaW5zZXJ0aW9uU2V0LCBkb3VibGUgZnJlcXVlbmN5KQogewpAQCAtMTAy
LDMyICs4MCw2IEBAIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcncKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEJsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKCkK
LXsKLSAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4g
YW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCi0gICAgLy8gcnVubmlu
ZyBXVEY6OmV4ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29y
dCBhbmQgd2Ugd2FudCBpdCB0byBiZQotICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBidWJibGUgc29y
dC4KLSAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5k
KCkpOwotCi0gICAgZXhlY3V0ZUluc2VydGlvbnMobV9wcm9jLm1fYmxvY2tzLCBtX2luc2VydGlv
bnMpOwotICAgIAotICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBUaGlzIGlzbid0IHN0
cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncwotICAgIC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxv
Y2sgbGlzdCBmcm9tIGdyb3dpbmcuCi0gICAgbV9wcm9jLm1fYmxvY2tzLnJlbW92ZUFsbE1hdGNo
aW5nKAotICAgICAgICBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIp
IC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuICFibG9ja1B0cjsKLSAgICAgICAgfSk7Ci0g
ICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRp
Y2VzLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Byb2MubV9ibG9ja3Muc2l6ZSgp
OyArK2kpCi0gICAgICAgIG1fcHJvYy5tX2Jsb2Nrc1tpXS0+bV9pbmRleCA9IGk7Ci0gICAgCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYg
Ly8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2Nr
SW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
QmxvY2tJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM0dlbmVyaWNCbG9j
a0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSA8d3Rm
L0luc2VydGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM1LDI2ICszNiwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgSW5zZXJ0aW9uU2V0Owog
Ci10eXBlZGVmIFdURjo6SW5zZXJ0aW9uPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4gQmxv
Y2tJbnNlcnRpb247Cit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2Nr
Pjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CiAKLWNsYXNzIEJsb2NrSW5zZXJ0aW9u
U2V0IHsKK2NsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2Vy
dGlvblNldDxCYXNpY0Jsb2NrPiB7CiBwdWJsaWM6CiAgICAgQmxvY2tJbnNlcnRpb25TZXQoUHJv
Y2VkdXJlJik7CiAgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7CiAgICAgCi0gICAgdm9pZCBpbnNl
cnQoQmxvY2tJbnNlcnRpb24mJik7Ci0KLSAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQgYSBn
aXZlbiBpbmRleC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJs
ZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3Jl
IHRoZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5
Ci0gICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhl
IGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxvY2suIFRoYXQncwotICAgIC8vIHVzdWFsbHkg
d2hhdCB5b3Ugd2FudC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayog
YmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3
IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRBZnRl
cihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCiAgICAgLy8g
QSBoZWxwZXIgdG8gc3BsaXQgYSBibG9jayB3aGVuIGZvcndhcmQgaXRlcmF0aW5nIG92ZXIgaXQu
IEl0IGNyZWF0ZXMgYSBuZXcgYmxvY2sgdG8gaG9sZAogICAgIC8vIGV2ZXJ5dGhpbmcgYmVmb3Jl
IHRoZSBpbnN0cnVjdGlvbiBhdCB2YWx1ZUluZGV4LiBUaGUgY3VycmVudCBibG9jayBpcyBsZWZ0
IHdpdGgKICAgICAvLyBldmVyeXRoaW5nIGF0IGFuZCBhZnRlciB2YWx1ZUluZGV4LiBJZiB0aGUg
b3B0aW9uYWwgSW5zZXJ0aW9uU2V0IGlzIHByb3ZpZGVkLCBpdCB3aWxsIGdldApAQCAtODAsMTIg
KzY4LDkgQEAgcHVibGljOgogICAgIEJhc2ljQmxvY2sqIHNwbGl0Rm9yd2FyZCgKICAgICAgICAg
QmFzaWNCbG9jayosIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqID0gbnVsbHB0
ciwKICAgICAgICAgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotICAgIAotICAgIGJvb2wgZXhl
Y3V0ZSgpOwogCiBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwotICAgIFZlY3RvcjxC
bG9ja0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAkocmV2aXNp
b24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDggQEAgYm9vbCBFZmZlY3RzOjppbnRlcmZlcmVzKGNv
bnN0IEVmZmVjdHMmIAogICAgICAgICB8fCBpbnRlcmZlcmVzV2l0aFdyaXRlc1Bpbm5lZChvdGhl
ciwgKnRoaXMpCiAgICAgICAgIHx8IHdyaXRlcy5vdmVybGFwcyhvdGhlci53cml0ZXMpCiAgICAg
ICAgIHx8IHdyaXRlcy5vdmVybGFwcyhvdGhlci5yZWFkcykKLSAgICAgICAgfHwgcmVhZHMub3Zl
cmxhcHMob3RoZXIud3JpdGVzKTsKKyAgICAgICAgfHwgcmVhZHMub3ZlcmxhcHMob3RoZXIud3Jp
dGVzKQorICAgICAgICB8fCAoZmVuY2UgJiYgb3RoZXIuZmVuY2UpOwogfQogCiBib29sIEVmZmVj
dHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0CkBAIC05NSw3ICs5Niw4
IEBAIGJvb2wgRWZmZWN0czo6b3BlcmF0b3I9PShjb25zdCBFZmZlY3RzJiAKICAgICAgICAgJiYg
d3JpdGVzUGlubmVkID09IG90aGVyLndyaXRlc1Bpbm5lZAogICAgICAgICAmJiByZWFkc1Bpbm5l
ZCA9PSBvdGhlci5yZWFkc1Bpbm5lZAogICAgICAgICAmJiB3cml0ZXMgPT0gb3RoZXIud3JpdGVz
Ci0gICAgICAgICYmIHJlYWRzID09IG90aGVyLnJlYWRzOworICAgICAgICAmJiByZWFkcyA9PSBv
dGhlci5yZWFkcworICAgICAgICAmJiBmZW5jZSA9PSBvdGhlci5mZW5jZTsKIH0KIAogYm9vbCBF
ZmZlY3RzOjpvcGVyYXRvciE9KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtMTIwLDYg
KzEyMiw4IEBAIHZvaWQgRWZmZWN0czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb24KICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzUGlubmVkIik7CiAgICAgaWYgKHJlYWRzUGlubmVk
KQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJSZWFkc1Bpbm5lZCIpOworICAgIGlmIChmZW5j
ZSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRmVuY2UiKTsKICAgICBpZiAod3JpdGVzKQog
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJXcml0ZXM6Iiwgd3JpdGVzKTsKICAgICBpZiAocmVh
ZHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCShyZXZpc2lvbiAyMTI5
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDYgKzcxLDEwIEBAIHN0cnVjdCBFZmZlY3RzIHsKICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTczCiAgICAgYm9vbCByZWFkc1Bpbm5l
ZCB7IGZhbHNlIH07CiAgICAgYm9vbCB3cml0ZXNQaW5uZWQgeyBmYWxzZSB9OworICAgIAorICAg
IC8vIE1lbW9yeSBmZW5jZXMgY2Fubm90IGJlIHJlb3JkZXJlZCBhcm91bmQgZWFjaCBvdGhlciBy
ZWdhcmRsZXNzIG9mIHRoZWlyIGVmZmVjdHMuIFRoaXMgaXMgZmxhZ2dlZAorICAgIC8vIGlmIHRo
ZSBvcGVyYXRpb24gaXMgYSBtZW1vcnkgZmVuY2UuCisgICAgYm9vbCBmZW5jZSB7IGZhbHNlIH07
CiAKICAgICBIZWFwUmFuZ2Ugd3JpdGVzOwogICAgIEhlYXBSYW5nZSByZWFkczsKQEAgLTg5LDYg
KzkzLDcgQEAgc3RydWN0IEVmZmVjdHMgewogICAgICAgICByZXN1bHQucmVhZHMgPSBIZWFwUmFu
Z2U6OnRvcCgpOwogICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVlOwogICAgICAgICBy
ZXN1bHQud3JpdGVzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEwMyw3ICsxMDgsNyBAQCBzdHJ1
Y3QgRWZmZWN0cyB7CiAKICAgICBib29sIG11c3RFeGVjdXRlKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2FsU3RhdGUg
fHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZDsKKyAgICAgICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4
aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVk
IHx8IGZlbmNlOwogICAgIH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiByZW9yZGVyaW5nIGlu
c3RydWN0aW9ucyB3aXRoIHRoZXNlIHJlc3BlY3RpdmUgZWZmZWN0cyB3b3VsZCBjaGFuZ2UgcHJv
Z3JhbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3Vi
ZXhwcmVzc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE0Miw2ICsxNDIsNyBAQCBzdHJ1Y3QgSW1wdXJlQmxvY2tEYXRh
IHsKIAogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gcmVhZHM7IC8vIFRoaXMgb25seSBnZXRzIHVz
ZWQgZm9yIGZvcndhcmQgc3RvcmUgZWxpbWluYXRpb24uCiAgICAgUmFuZ2VTZXQ8SGVhcFJhbmdl
PiB3cml0ZXM7IC8vIFRoaXMgZ2V0cyB1c2VkIGZvciBib3RoIGxvYWQgYW5kIHN0b3JlIGVsaW1p
bmF0aW9uLgorICAgIGJvb2wgZmVuY2U7CiAKICAgICBNZW1vcnlWYWx1ZU1hcCBzdG9yZXNBdEhl
YWQ7CiAgICAgTWVtb3J5VmFsdWVNYXAgbWVtb3J5VmFsdWVzQXRUYWlsOwpAQCAtMTc0LDEyICsx
NzUsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICht
ZW1vcnkgJiYgbWVtb3J5LT5pc1N0b3JlKCkKICAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEu
cmVhZHMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQotICAgICAgICAgICAgICAgICAgICAmJiAh
ZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKSkKKyAgICAgICAgICAgICAgICAg
ICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgKCFkYXRhLmZlbmNlIHx8ICFtZW1vcnktPmhhc0ZlbmNlKCkpKQogICAgICAg
ICAgICAgICAgICAgICBkYXRhLnN0b3Jlc0F0SGVhZC5hZGQobWVtb3J5KTsKICAgICAgICAgICAg
ICAgICBkYXRhLnJlYWRzLmFkZChlZmZlY3RzLnJlYWRzKTsKIAogICAgICAgICAgICAgICAgIGlm
IChIZWFwUmFuZ2Ugd3JpdGVzID0gZWZmZWN0cy53cml0ZXMpCiAgICAgICAgICAgICAgICAgICAg
IGNsb2JiZXIoZGF0YSwgd3JpdGVzKTsKKyAgICAgICAgICAgICAgICBkYXRhLmZlbmNlIHw9IGVm
ZmVjdHMuZmVuY2U7CiAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5KQogICAgICAgICAgICAg
ICAgICAgICBkYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5hZGQobWVtb3J5KTsKQEAgLTQ3OCw2ICs0
ODEsOSBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KICAgICBib29s
IGZpbmRTdG9yZUFmdGVyQ2xvYmJlcihWYWx1ZSogcHRyLCBIZWFwUmFuZ2UgcmFuZ2UsIGNvbnN0
IEZpbHRlciYgZmlsdGVyKQogICAgIHsKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZh
bHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAK
ICAgICAgICAgLy8gV2UgY2FuIGVsaW1pbmF0ZSBhIHN0b3JlIGlmIGV2ZXJ5IGZvcndhcmQgcGF0
aCBoaXRzIGEgc3RvcmUgdG8gdGhlIHNhbWUgbG9jYXRpb24gYmVmb3JlCiAgICAgICAgIC8vIGhp
dHRpbmcgYW55IG9wZXJhdGlvbiB0aGF0IG9ic2VydmVzIHRoZSBzdG9yZS4gVGhpcyBzZWFyY2gg
c2VlbXMgbGlrZSBpdCBzaG91bGQgYmUKICAgICAgICAgLy8gZXhwZW5zaXZlLCBidXQgaW4gdGhl
IG92ZXJ3aGVsbWluZyBtYWpvcml0eSBvZiBjYXNlcyBpdCB3aWxsIGFsbW9zdCBpbW1lZGlhdGVs
eSBoaXQgYW4gCkBAIC02MTQsNiArNjIwLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGlmICh2ZXJi
b3NlKQogICAgICAgICAgICAgZGF0YUxvZygqbV92YWx1ZSwgIjogbG9va2luZyBiYWNrd2FyZCBm
b3IgIiwgKnB0ciwgIi4uLlxuIik7CiAgICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+YXM8
TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpIHsKKyAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHaXZpbmcgdXAgYmVjYXVzZSBmZW5jZXMuXG4i
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAg
ICAgaWYgKE1lbW9yeVZhbHVlKiBtYXRjaCA9IG1fZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuZmlu
ZChwdHIsIGZpbHRlcikpIHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBGb3VuZCAiLCAqbWF0Y2gsICIgbG9jYWxseS5cbiIpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Miw2ICs5Miw3IEBAIHZvaWQgZ2VuZXJhdGVUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVy
ZSwKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDUwNwogICAgIH0KIAorICAgIC8vIFRoaXMgcHV0cyB0aGUgSVIgaW4gcXVpcmtzIG1vZGUuCiAg
ICAgbG93ZXJNYWNyb3MocHJvY2VkdXJlKTsKIAogICAgIGlmIChvcHRMZXZlbCA+PSAxKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmljQmxvY2tJ
bnNlcnRpb25TZXQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKKworY2xhc3MgSW5zZXJ0aW9uU2V0OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNpY0Js
b2NrPgorY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0IHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIFdURjo6SW5zZXJ0aW9uPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4gQmxvY2tJbnNl
cnRpb247CisgICAgCisgICAgQmxvY2tJbnNlcnRpb25TZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCYXNpY0Jsb2NrPj4mIGJsb2NrcykKKyAgICAgICAgOiBtX2Jsb2NrcyhibG9ja3MpCisgICAg
eworICAgIH0KKyAgICAKKyAgICB2b2lkIGluc2VydChCbG9ja0luc2VydGlvbiYmIGluc2VydGlv
bikKKyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRpb24p
KTsKKyAgICB9CisKKyAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQgYSBnaXZlbiBpbmRleC4K
KyAgICBCYXNpY0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kg
PSBQTmFOKQorICAgIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+IGJsb2Nr
KG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKKyAgICAgICAgQmFzaWNCbG9j
ayogcmVzdWx0ID0gYmxvY2suZ2V0KCk7CisgICAgICAgIGluc2VydChCbG9ja0luc2VydGlvbihp
bmRleCwgV1RGTW92ZShibG9jaykpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVzdWFs
bHkgeW91IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQorICAgIC8vIGFyZ3VtZW50LiBQYXNz
aW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdiZWZv
cmUnIGJsb2NrLiBUaGF0J3MKKyAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCisgICAgQmFz
aWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5j
eSA9IFBOYU4pCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgoKSwg
ZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5KCkp
OworICAgIH0KKworICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYWZ0ZXIgdGhlIGdpdmVuIGJs
b2NrLgorICAgIEJhc2ljQmxvY2sqIGluc2VydEFmdGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3Vi
bGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYWZ0ZXIt
PmluZGV4KCkgKyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYWZ0ZXIt
PmZyZXF1ZW5jeSgpKTsKKyAgICB9CisKKyAgICBib29sIGV4ZWN1dGUoKQorICAgIHsKKyAgICAg
ICAgaWYgKG1faW5zZXJ0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIAorICAgICAgICAvLyBXZSBhbGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRv
IHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5lZWQgdG8gc29ydCB0aGVtIGJlZm9yZQorICAgICAg
ICAvLyBydW5uaW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMuIFdlIHN0cm9uZ2x5IHByZWZlciBh
IHN0YWJsZSBzb3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCisgICAgICAgIC8vIGZhc3QsIHNvIHdl
IHVzZSBidWJibGUgc29ydC4KKyAgICAgICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4o
KSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKKyAgICAgICAgCisgICAgICAgIGV4ZWN1dGVJbnNlcnRp
b25zKG1fYmxvY2tzLCBtX2luc2VydGlvbnMpOworICAgICAgICAKKyAgICAgICAgLy8gUHJ1bmUg
b3V0IGVtcHR5IGVudHJpZXMuIFRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdz
CisgICAgICAgIC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxvY2sgbGlzdCBmcm9tIGdyb3dpbmcu
CisgICAgICAgIG1fYmxvY2tzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICAgICAgWyZdIChz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gIWJsb2NrUHRyOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGluZGljZXMu
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrcy5zaXplKCk7ICsraSkK
KyAgICAgICAgICAgIG1fYmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKKyAgICAgICAgCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJhc2ljQmxvY2s+PiYgbV9ibG9ja3M7CisgICAgVmVjdG9yPEJsb2NrSW5zZXJ0aW9uLCA4
PiBtX2luc2VydGlvbnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlm
IC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFw
UmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFu
Z2UuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVh
cFJhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KICAgICAKKyAgICBIZWFwUmFuZ2Ug
b3BlcmF0b3J8KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gSGVhcFJhbmdlKAorICAgICAgICAgICAgc3RkOjptaW4obV9iZWdpbiwgb3RoZXIubV9i
ZWdpbiksCisgICAgICAgICAgICBzdGQ6Om1heChtX2VuZCwgb3RoZXIubV9lbmQpKTsKKyAgICB9
CisgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmVn
aW4gIT0gbV9lbmQ7IH0KIAogICAgIHVuc2lnbmVkIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9i
ZWdpbjsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQu
Y3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNl
cnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsMTEgQEAgVmFsdWUqIElu
c2VydGlvblNldDo6aW5zZXJ0Qm90dG9tKHNpemVfdAogICAgIHJldHVybiBpbnNlcnRCb3R0b20o
aW5kZXgsIGxpa2VWYWx1ZS0+b3JpZ2luKCksIGxpa2VWYWx1ZS0+dHlwZSgpKTsKIH0KIAorVmFs
dWUqIEluc2VydGlvblNldDo6aW5zZXJ0Q2xvbmUoc2l6ZV90IGluZGV4LCBWYWx1ZSogdmFsdWUp
Cit7CisgICAgcmV0dXJuIGluc2VydFZhbHVlKGluZGV4LCBtX3Byb2NlZHVyZS5jbG9uZSh2YWx1
ZSkpOworfQorCiB2b2lkIEluc2VydGlvblNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykK
IHsKICAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5k
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKIAogICAgIFZhbHVl
KiBpbnNlcnRCb3R0b20oc2l6ZV90IGluZGV4LCBPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBp
bnNlcnRCb3R0b20oc2l6ZV90IGluZGV4LCBWYWx1ZSopOworICAgIAorICAgIFZhbHVlKiBpbnNl
cnRDbG9uZShzaXplX3QgaW5kZXgsIFZhbHVlKik7CiAKICAgICB2b2lkIGV4ZWN1dGUoQmFzaWNC
bG9jayopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3Mu
Y3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
ck1hY3Jvcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCwxMSArNTgsMTQgQEAgcHVibGljOgog
ICAgICAgICA6IG1fcHJvYyhwcm9jKQogICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQocHJv
YykKICAgICAgICAgLCBtX2luc2VydGlvblNldChwcm9jKQorICAgICAgICAsIG1fdXNlQ291bnRz
KHByb2MpCiAgICAgewogICAgIH0KIAogICAgIGJvb2wgcnVuKCkKICAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFtX3Byb2MuaGFzUXVpcmtzKCkpOworICAgICAgICAKICAgICAgICAgZm9y
IChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewogICAgICAgICAgICAgbV9ibG9jayA9IGJs
b2NrOwogICAgICAgICAgICAgcHJvY2Vzc0N1cnJlbnRCbG9jaygpOwpAQCAtNzIsNiArNzUsMTAg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9wcm9jLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAg
ICAgICAgICBtX3Byb2MuaW52YWxpZGF0ZUNGRygpOwogICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHdlJ3ZlIAorICAgICAgICBtX3Byb2Muc2V0SGFz
UXVpcmtzKHRydWUpOworICAgICAgICAKICAgICAgICAgcmV0dXJuIG1fY2hhbmdlZDsKICAgICB9
CiAgICAgCkBAIC0xODUsNyArMTkyLDk2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9j
aGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAg
ICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1s
b2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8g
dGVsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxv
YWQgbW90aW9uLgorICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAg
ICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1
bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAg
ICBtX25vZGUtPnJlcGxhY2VXaXRoQm90dG9tKG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4KTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQogCisgICAgICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICBjYXNlIEF0
b21pY1N0cm9uZ0NBUzogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9t
aWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAg
ICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSA9IGF0b21pYy0+Y2hpbGQoMCk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgLy8gT24gQVJNLCB0aGUgbG9hZCBwYXJ0IG9mIHRoZSBDQVMg
ZG9lcyBhIGxvYWQgd2l0aCB6ZXJvIGV4dGVuc2lvbi4gVGhlcmVmb3JlLCB3ZSBuZWVkCisgICAg
ICAgICAgICAgICAgLy8gdG8gemVyby1leHRlbmQgdGhlIGlucHV0LgorICAgICAgICAgICAgICAg
IFZhbHVlKiBtYXNrZWRFeHBlY3RlZFZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVl
PigKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgQml0QW5kLCBtX29yaWdpbiwgZXhwZWN0
ZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29u
c3RhbnQobV9pbmRleCwgZXhwZWN0ZWRWYWx1ZSwgbWFzayh3aWR0aCkpKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBhdG9taWMtPmNoaWxkKDApID0gbWFza2VkRXhwZWN0ZWRW
YWx1ZTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2Fz
ZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAg
ICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6
CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgICAgICBjYXNlIEF0b21p
Y1hjaGc6IHsKKyAgICAgICAgICAgICAgICAvLyBPbiBYODYsIHRoZXNlIG1heSBhY3R1YWxseSBy
ZXR1cm4gZ2FyYmFnZSBpbiB0aGUgaGlnaCBiaXRzLiBPbiBBUk02NCwgdGhlc2Ugc29ydGEKKyAg
ICAgICAgICAgICAgICAvLyB6ZXJvLWV4dGVuZCB0aGVpciBoaWdoIGJpdHMsIGV4Y2VwdCB0aGF0
IHRoZSBoaWdoIGJpdHMgbWlnaHQgZ2V0IHBvbGx1dGVkIGJ5IGhpZ2gKKyAgICAgICAgICAgICAg
ICAvLyBiaXRzIGluIHRoZSBvcGVyYW5kLiAuIFNvLCBlaXRoZXIgd2F5LCB3ZSBuZWVkIHRvIHRo
cm93IGEgc2lnbi1leHRlbmQgb24gdGhlc2UKKyAgICAgICAgICAgICAgICAvLyB0aGluZ3MuCisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fdmFsdWUtPm9wY29kZSgpID09IEF0b21pY1hjaGdTdWIgJiYgbV91
c2VDb3VudHMubnVtVXNlcyhtX3ZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
T24geDg2LCB4Y2hnYWRkIGlzIGJldHRlciB0aGFuIHhjaGdzdWIgaWYgaXQgaGFzIGFueSB1c2Vy
cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnNldEtpbmRVbnNhZmVseShBdG9t
aWNYY2hnQWRkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDEpID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2luZGV4LCBOZWcsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGJv
b2wgZXhlbXB0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+
b3Bjb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAg
ICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdY
b3I6CisgICAgICAgICAgICAgICAgICAgICAgICBleGVtcHQgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBpZiAoZXhlbXB0KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEF0b21p
Y1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAg
ICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNDYW5vbmljYWxXaWR0aCh3aWR0aCkpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgIG1faW5kZXgsIHNpZ25FeHRlbmRPcGNvZGUod2lkdGgpLCBtX29yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRleCwg
bV92YWx1ZSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJl
cGxhY2VXaXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpAQCAtNDcwLDYgKzU2Niw3IEBAIHByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBt
X3Byb2M7CiAgICAgQmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsKICAgICBJ
bnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CisgICAgVXNlQ291bnRzIG1fdXNlQ291bnRzOwog
ICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKICAgICBWYWx1
ZSogbV92YWx1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9z
QWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHJldmlzaW9uIDIxMjk5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDE1ICsxNTYsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGNhc2UgUm90TDogewogICAgICAgICAgICAgICAgIC8vIEFSTTY0IGRvZXNu
J3QgaGF2ZSBhIHJvdGF0ZSBsZWZ0LgogICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2lu
ZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSogcm90YXRlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZh
bHVlPihtX2luZGV4LCBSb3RSLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCks
IG5ld1NoaWZ0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRo
SWRlbnRpdHkocm90YXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlmdCA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5vcmlnaW4o
KSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcm90YXRl
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBSb3RSLCBtX3ZhbHVlLT5v
cmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCksIG5ld1NoaWZ0KTsKKyAgICAgICAgICAgICAgICAg
ICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2
ICs3MiwxNCBAQCBuYW1lc3BhY2UgewogCiBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAor
Ly8gRklYTUU6IFdlIHdvdWxkbid0IG5lZWQgdGhpcyBpZiBBaXIgc3VwcG9ydGVkIFdpZHRoIG1v
ZGlmaWVycyBpbiBBaXI6OktpbmQuCisvLyBPT1BTISEhIChuZWVkIGEgYnVnIFVSTCkKKyNkZWZp
bmUgT1BDT0RFX0ZPUl9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKKyAgICAod2lkdGgpID09IFdp
ZHRoOCA/IG9wY29kZSAjIyA4IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IG9wY29kZSAj
IyAxNiA6IFwKKyAgICAod2lkdGgpID09IFdpZHRoMzIgPyBvcGNvZGUgIyMgMzIgOiBcCisgICAg
b3Bjb2RlICMjIDY0KQorCiBjbGFzcyBMb3dlclRvQWlyIHsKIHB1YmxpYzoKICAgICBMb3dlclRv
QWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQpAQCAtODMsNiArOTEsMTIgQEAgcHVibGljOgogICAg
ICAgICAsIG1fZG9taW5hdG9ycyhwcm9jZWR1cmUuZG9taW5hdG9ycygpKQogICAgICAgICAsIG1f
cHJvY2VkdXJlKHByb2NlZHVyZSkKICAgICAgICAgLCBtX2NvZGUocHJvY2VkdXJlLmNvZGUoKSkK
KyAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0aW9uU2V0KG1fY29kZSkKKyNpZiBDUFUoWDg2KSB8fCBD
UFUoWDg2XzY0KQorICAgICAgICAsIG1fZWF4KFg4NlJlZ2lzdGVyczo6ZWF4KQorICAgICAgICAs
IG1fZWN4KFg4NlJlZ2lzdGVyczo6ZWN4KQorICAgICAgICAsIG1fZWR4KFg4NlJlZ2lzdGVyczo6
ZWR4KQorI2VuZGlmCiAgICAgewogICAgIH0KIApAQCAtMTI0LDE0ICsxMzgsMTggQEAgcHVibGlj
OgogICAgICAgICAvLyBob2lzdGVkIGFkZHJlc3MgZXhwcmVzc2lvbiBiZWZvcmUgd2UgZHVwbGlj
YXRlIGl0IGJhY2sgaW50byB0aGUgbG9vcC4KICAgICAgICAgZm9yIChCMzo6QmFzaWNCbG9jayog
YmxvY2sgOiBtX3Byb2NlZHVyZS5ibG9ja3NJblByZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG1f
YmxvY2sgPSBibG9jazsKLSAgICAgICAgICAgIC8vIFJlc2V0IHNvbWUgc3RhdGUuCi0gICAgICAg
ICAgICBtX2luc3RzLnJlc2l6ZSgwKTsKIAogICAgICAgICAgICAgbV9pc1JhcmUgPSAhbV9mYXN0
V29ya2xpc3Quc2F3KGJsb2NrKTsKIAogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiTG93ZXJpbmcgQmxvY2sgIiwgKmJsb2NrLCAiOlxuIik7CiAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFy
ZSBzZXQgdXAgY29ycmVjdGx5LgorICAgICAgICAgICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2Nr
IHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Js
b2NrVG9CbG9ja1tibG9ja10tPnN1Y2Nlc3NvcnMoKS5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrKG1fYmxvY2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygp
XSwgc3VjY2Vzc29yLmZyZXF1ZW5jeSgpKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAg
IC8vIFByb2Nlc3MgYmxvY2tzIGluIHJldmVyc2Ugb3JkZXIgc28gd2Ugc2VlIHVzZXMgYmVmb3Jl
IGRlZnMuIFRoYXQncyB3aGF0IGFsbG93cyB1cwogICAgICAgICAgICAgLy8gdG8gbWF0Y2ggcGF0
dGVybnMgZWZmZWN0aXZlbHkuCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+
c2l6ZSgpOyBpLS07KSB7CkBAIC0xNDksMTkgKzE2NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBOb3cgYXBwZW5kIHRoZSBp
bnN0cnVjdGlvbnMuIG1faW5zdHMgY29udGFpbnMgdGhlbSBpbiByZXZlcnNlIG9yZGVyLCBzbyB3
ZSBwcm9jZXNzCi0gICAgICAgICAgICAvLyBpdCBpbiByZXZlcnNlLgotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9pbnN0cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICBm
b3IgKEluc3QmIGluc3QgOiBtX2luc3RzW2ldKQotICAgICAgICAgICAgICAgICAgICBtX2Jsb2Nr
VG9CbG9ja1tibG9ja10tPmFwcGVuZEluc3QoV1RGTW92ZShpbnN0KSk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQg
dXAgY29ycmVjdGx5LgotICAgICAgICAgICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nl
c3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgICAgICBtX2Jsb2NrVG9C
bG9ja1tibG9ja10tPnN1Y2Nlc3NvcnMoKS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIEFp
cjo6RnJlcXVlbnRlZEJsb2NrKG1fYmxvY2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygpXSwgc3Vj
Y2Vzc29yLmZyZXF1ZW5jeSgpKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5pc2hB
cHBlbmRpbmdJbnN0cnVjdGlvbnMobV9ibG9ja1RvQmxvY2tbYmxvY2tdKTsKICAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgbV9ibG9ja0luc2VydGlvblNldC5leGVjdXRlKCk7CiAKICAgICAg
ICAgQWlyOjpJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fY29kZSk7CiAgICAgICAgIGZvciAo
SW5zdCYgaW5zdCA6IG1fcHJvbG9ndWUpCkBAIC01MzgsNyArNTQ3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHJldHVybiBBcmcoKTsKIAogICAgICAgICBpbnQzMl90IG9mZnNldCA9IHZhbHVl
LT5vZmZzZXQoKTsKLSAgICAgICAgV2lkdGggd2lkdGggPSB2YWx1ZS0+YWNjZXNzV2lkdGgoKTsK
KyAgICAgICAgV2lkdGggd2lkdGggPSB2YWx1ZS0+bG9hZFN0b3JlV2lkdGgoKTsKIAogICAgICAg
ICBBcmcgcmVzdWx0ID0gZWZmZWN0aXZlQWRkcih2YWx1ZS0+bGFzdENoaWxkKCksIG9mZnNldCwg
d2lkdGgpOwogICAgICAgICBBU1NFUlQocmVzdWx0LmlzVmFsaWRGb3JtKHdpZHRoKSk7CkBAIC01
NjIsMTEgKzU3MSwxNiBAQCBwcml2YXRlOgogICAgIAogICAgIEFyZ1Byb21pc2UgbG9hZFByb21p
c2VBbnlPcGNvZGUoVmFsdWUqIGxvYWRWYWx1ZSkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGxvYWRWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOwogICAgICAgICBpZiAoIWNhbkJlSW50
ZXJuYWwobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKICAgICAgICAgaWYg
KGNyb3NzZXNJbnRlcmZlcmVuY2UobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmco
KTsKLSAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQoYWRkcihsb2FkVmFsdWUpLCBsb2FkVmFsdWUp
OworICAgICAgICBpZiAobG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkK
KyAgICAgICAgICAgIHJldHVybiBBcmcoKTsKKyAgICAgICAgQXJnIGxvYWRBZGRyID0gYWRkcihs
b2FkVmFsdWUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkQWRkcik7CisgICAgICAgIEFy
Z1Byb21pc2UgcmVzdWx0KGxvYWRBZGRyLCBsb2FkVmFsdWUpOwogICAgICAgICBpZiAobG9hZFZh
bHVlLT50cmFwcygpKQogICAgICAgICAgICAgcmVzdWx0LnNldFRyYXBzKHRydWUpOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtODk4LDExICs5MTIsOSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAg
ICAgICBhcHBlbmQoTW92ZSwgdG1wKHZhbHVlKSwgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgYXBw
ZW5kKE1vdmUsIHRtcChhbW91bnQpLCBUbXAoWDg2UmVnaXN0ZXJzOjplY3gpKTsKLSAgICAgICAg
YXBwZW5kKG9wY29kZSwgVG1wKFg4NlJlZ2lzdGVyczo6ZWN4KSwgdG1wKG1fdmFsdWUpKTsKLSNl
bmRpZgorICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKGFtb3VudCksIG1fZWN4KTsKKyAgICAgICAg
YXBwZW5kKG9wY29kZSwgbV9lY3gsIHRtcChtX3ZhbHVlKSk7CiAgICAgfQogCiAgICAgdGVtcGxh
dGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0PgpAQCAtOTMxLDEw
ICs5NDMsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6
T3Bjb2RlIG9wY29kZTY0LCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRh
dGl2ZT4KICAgICBib29sIHRyeUFwcGVuZFN0b3JlQmluT3AoVmFsdWUqIGxlZnQsIFZhbHVlKiBy
aWdodCkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFsdWUtPmFzPE1lbW9yeVZh
bHVlPigpKTsKKyAgICAgICAgCiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29k
ZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBsZWZ0LT50eXBlKCkpOwogICAgICAgICBpZiAo
b3Bjb2RlID09IEFpcjo6T29wcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIEFyZyBzdG9yZUFkZHIg
PSBhZGRyKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlQoc3RvcmVBZGRyKTsKIApAQCAtOTk0LDEw
ICsxMDExLDQ4IEBAIHByaXZhdGU6CiAKICAgICAgICAgcmV0dXJuIEluc3QobW92ZSwgbV92YWx1
ZSwgdG1wKHZhbHVlKSwgZGVzdCk7CiAgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3Jl
T3Bjb2RlKFdpZHRoIHdpZHRoLCBCYW5rIGJhbmssIGJvb2wgcmVsZWFzZSkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8g
U3RvcmVSZWw4IDogU3RvcmU4OworICAgICAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8g
U3RvcmVSZWwxNiA6IFN0b3JlMTY7CisgICAgICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgICAg
IHN3aXRjaCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMzIgOiBNb3ZlMzI7CisgICAgICAgICAgICBjYXNlIEZQ
OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gTW92ZUZsb2F0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzNjRC
aXQoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDY0IDogTW92ZTsKKyAg
ICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlbGVh
c2UpOworICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNvZGUoVmFs
dWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5h
czxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHN0b3JlT3Bjb2RlKG1lbW9yeS0+bG9h
ZFN0b3JlV2lkdGgoKSwgbWVtb3J5LT5hY2Nlc3NCYW5rKCksIG1lbW9yeS0+aGFzRmVuY2UoKSk7
CisgICAgfQogCiAgICAgSW5zdCBjcmVhdGVTdG9yZShWYWx1ZSogdmFsdWUsIGNvbnN0IEFyZyYg
ZGVzdCkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBtb3ZlRm9yVHlw
ZSh2YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IHN0b3Jl
T3Bjb2RlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUsIHZh
bHVlLCBkZXN0KTsKICAgICB9CiAKQEAgLTEwMDYsNyArMTA2MSw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIGNyZWF0ZVN0b3JlKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpKTsKICAgICB9Ci0KKyAgICAKICAgICBBaXI6Ok9wY29k
ZSBtb3ZlRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
QEAgLTEwNzMsNyArMTEyOCw0MSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9pbnN0cy5s
YXN0KCkuYXBwZW5kKGluc3QpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGZpbmlzaEFwcGVuZGlu
Z0luc3RydWN0aW9ucyhBaXI6OkJhc2ljQmxvY2sqIHRhcmdldCkKKyAgICB7CisgICAgICAgIC8v
IE5vdyBhcHBlbmQgdGhlIGluc3RydWN0aW9ucy4gbV9pbnN0cyBjb250YWlucyB0aGVtIGluIHJl
dmVyc2Ugb3JkZXIsIHNvIHdlIHByb2Nlc3MKKyAgICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbnN0cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAg
ICAgIGZvciAoSW5zdCYgaW5zdCA6IG1faW5zdHNbaV0pCisgICAgICAgICAgICAgICAgdGFyZ2V0
LT5hcHBlbmRJbnN0KFdURk1vdmUoaW5zdCkpOworICAgICAgICB9CisgICAgICAgIG1faW5zdHMu
cmVzaXplKDApOworICAgIH0KKyAgICAKKyAgICBBaXI6OkJhc2ljQmxvY2sqIG5ld0Jsb2NrKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKG1f
YmxvY2tUb0Jsb2NrW21fYmxvY2tdKTsKKyAgICB9CiAKKyAgICAvLyBOT1RFOiBUaGlzIHdpbGwg
Y3JlYXRlIGEgY29udGludWF0aW9uIGJsb2NrIChgbmV4dEJsb2NrYCkgKmFmdGVyKiBhbnkgYmxv
Y2tzIHlvdSd2ZSBjcmVhdGVkIHVzaW5nCisgICAgLy8gbmV3QmxvY2soKS4gU28sIGl0J3MgcHJl
ZmVyYWJsZSB0byBjcmVhdGUgYWxsIG9mIHlvdXIgYmxvY2tzIHVwZnJvbnQgdXNpbmcgbmV3Qmxv
Y2soKS4gQWxzbyBub3RlCisgICAgLy8gdGhhdCBhbnkgY29kZSB5b3UgZW1pdCBiZWZvcmUgdGhp
cyB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgY29udGludWF0aW9uLCBhbmQgYW55IGNvZGUgeW91
IGVtaXQKKyAgICAvLyBhZnRlciB0aGlzIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHByZXZpb3Vz
IGJsb2NrLgorICAgIHZvaWQgc3BsaXRCbG9jayhBaXI6OkJhc2ljQmxvY2sqJiBwcmV2aW91c0Js
b2NrLCBBaXI6OkJhc2ljQmxvY2sqJiBuZXh0QmxvY2spCisgICAgeworICAgICAgICBBaXI6OkJh
c2ljQmxvY2sqIGJsb2NrID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9ja107CisgICAgICAgIAorICAg
ICAgICBwcmV2aW91c0Jsb2NrID0gYmxvY2s7CisgICAgICAgIG5leHRCbG9jayA9IG1fYmxvY2tJ
bnNlcnRpb25TZXQuaW5zZXJ0QWZ0ZXIoYmxvY2spOworICAgICAgICAKKyAgICAgICAgZmluaXNo
QXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG5leHRCbG9jayk7CisgICAgICAgIG5leHRCbG9jay0+c3Vj
Y2Vzc29ycygpID0gYmxvY2stPnN1Y2Nlc3NvcnMoKTsKKyAgICAgICAgYmxvY2stPnN1Y2Nlc3Nv
cnMoKS5jbGVhcigpOworICAgICAgICAKKyAgICAgICAgbV9pbnN0cy5hcHBlbmQoVmVjdG9yPElu
c3Q+KCkpOworICAgIH0KKyAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4u
LiBBcmd1bWVudHM+CiAgICAgVCogZW5zdXJlU3BlY2lhbChUKiYgZmllbGQsIEFyZ3VtZW50cyYm
Li4uIGFyZ3VtZW50cykKICAgICB7CkBAIC0xMTIzLDcgKzEyMTIsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1
bWVudDoKICAgICAgICAgICAgICAgICBhcmcgPSBBcmc6OmNhbGxBcmcodmFsdWUucmVwKCkub2Zm
c2V0RnJvbVNQKCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlLnZhbHVlKCks
IGFyZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kU3RvcmUobW92ZUZvclR5cGUodmFsdWUudmFs
dWUoKSksIGFyZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTYx
LDYgKzIwNTAsMzA4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAor
ICAgIHZvaWQgYXBwZW5kWDg2RGl2KEIzOjpPcGNvZGUgb3ApCisgICAgeworICAgICAgICBBaXI6
Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVXb3JkOworICAgICAgICBBaXI6Ok9wY29kZSBkaXY7Cisg
ICAgICAgIHN3aXRjaCAobV92YWx1ZS0+dHlwZSgpKSB7CisgICAgICAgIGNhc2UgSW50MzI6Cisg
ICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvRG91YmxlV29yZDMy
OworICAgICAgICAgICAgZGl2ID0gWDg2RGl2MzI7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252
ZXJ0VG9RdWFkV29yZDY0OworICAgICAgICAgICAgZGl2ID0gWDg2RGl2NjQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBB
U1NFUlQob3AgPT0gRGl2IHx8IG9wID09IE1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9
PSBEaXYgPyBtX2VheCA6IG1fZWR4OworCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1
ZS0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgIGFwcGVuZChjb252ZXJ0VG9Eb3VibGVXb3Jk
LCBtX2VheCwgbV9lZHgpOworICAgICAgICBhcHBlbmQoZGl2LCBtX2VheCwgbV9lZHgsIHRtcCht
X3ZhbHVlLT5jaGlsZCgxKSkpOworICAgICAgICBhcHBlbmQoTW92ZSwgcmVzdWx0LCB0bXAobV92
YWx1ZSkpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kWDg2VURpdihCMzo6T3Bjb2RlIG9wKQor
ICAgIHsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMy
ID8gWDg2VURpdjMyIDogWDg2VURpdjY0OworCisgICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8
IG9wID09IFVNb2QpOworICAgICAgICBUbXAgcmVzdWx0ID0gb3AgPT0gVURpdiA/IG1fZWF4IDog
bV9lZHg7CisKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIG1f
ZWF4KTsKKyAgICAgICAgYXBwZW5kKFhvcjY0LCBtX2VkeCwgbV9lZHgpOworICAgICAgICBhcHBl
bmQoZGl2LCBtX2VheCwgbV9lZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOworICAgICAgICBh
cHBlbmQoTW92ZSwgcmVzdWx0LCB0bXAobV92YWx1ZSkpOworICAgIH0KKyAgICAKKyAgICBBaXI6
Ok9wY29kZSBsb2FkTGlua09wY29kZShXaWR0aCB3aWR0aCwgYm9vbCBmZW5jZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmZW5jZSA/IE9QQ09ERV9GT1JfV0lEVEgoTG9hZExpbmtBY3EsIHdpZHRo
KSA6IE9QQ09ERV9GT1JfV0lEVEgoTG9hZExpbmssIHdpZHRoKTsKKyAgICB9CisgICAgCisgICAg
QWlyOjpPcGNvZGUgc3RvcmVDb25kT3Bjb2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZlbmNlID8gT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmRSZWws
IHdpZHRoKSA6IE9QQ09ERV9GT1JfV0lEVEgoU3RvcmVDb25kLCB3aWR0aCk7CisgICAgfQorICAg
IAorICAgIC8vIFRoaXMgY2FuIGVtaXQgY29kZSBmb3IgdGhlIGZvbGxvd2luZyBwYXR0ZXJuczoK
KyAgICAvLyBBdG9taWNXZWFrQ0FTCisgICAgLy8gQml0WG9yKEF0b21pY1dlYWtDQVMsIDEpCisg
ICAgLy8gQXRvbWljU3Ryb25nQ0FTCisgICAgLy8gRXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBl
Y3RlZCkKKyAgICAvLyBOb3RFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKQorICAgIC8v
IEJyYW5jaChBdG9taWNXZWFrQ0FTKQorICAgIC8vIEJyYW5jaChFcXVhbChBdG9taWNTdHJvbmdD
QVMsIGV4cGVjdGVkKSkKKyAgICAvLyBCcmFuY2goTm90RXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBl
eHBlY3RlZCkpCisgICAgLy8KKyAgICAvLyBJdCBhc3N1bWVzIHRoYXQgYXRvbWljVmFsdWUgcG9p
bnRzIHRvIHRoZSBDQVMsIGFuZCBtX3ZhbHVlIHBvaW50cyB0byB0aGUgaW5zdHJ1Y3Rpb24gYmVp
bmcKKyAgICAvLyBnZW5lcmF0ZWQuIEl0IGFzc3VtZXMgdGhhdCB5b3UndmUgY29uc3VtZWQgZXZl
cnl0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGNvbnN1bWVkLgorICAgIHZvaWQgYXBwZW5kQ0FTKFZh
bHVlKiBhdG9taWNWYWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgeworICAgICAgICBBdG9taWNWYWx1
ZSogYXRvbWljID0gYXRvbWljVmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChhdG9taWMpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpc0JyYW5jaCA9IG1f
dmFsdWUtPm9wKCkgPT0gQnJhbmNoOworICAgICAgICBib29sIGlzU3Ryb25nID0gYXRvbWljLT5v
cCgpID09IEF0b21pY1N0cm9uZ0NBUzsKKyAgICAgICAgYm9vbCByZXR1cm5zT2xkVmFsdWUgPSBt
X3ZhbHVlLT5vcCgpID09IEF0b21pY1N0cm9uZ0NBUzsKKyAgICAgICAgCisgICAgICAgIFdpZHRo
IHdpZHRoID0gYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICBBcmcgYWRkcmVzcyA9
IGFkZHIoYXRvbWljKTsKKworICAgICAgICBUbXAgdmFsdWVSZXN1bHRUbXA7CisgICAgICAgIFRt
cCBib29sUmVzdWx0VG1wOworICAgICAgICBpZiAocmV0dXJuc09sZFZhbHVlKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghaW52ZXJ0KTsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1w
ID0gdG1wKG1fdmFsdWUpOworICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IG1fY29kZS5uZXdU
bXAoR1ApOworICAgICAgICB9IGVsc2UgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICB2YWx1
ZVJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgYm9vbFJlc3VsdFRt
cCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFs
dWVSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRU
bXAgPSB0bXAobV92YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFRtcCBzdWNj
ZXNzQm9vbFJlc3VsdFRtcDsKKyAgICAgICAgaWYgKGlzU3Ryb25nICYmICFpc0JyYW5jaCkKKyAg
ICAgICAgICAgIHN1Y2Nlc3NCb29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHN1Y2Nlc3NCb29sUmVzdWx0VG1wID0gYm9vbFJlc3VsdFRt
cDsKKworICAgICAgICBUbXAgZXhwZWN0ZWRWYWx1ZVRtcCA9IHRtcChhdG9taWMtPmNoaWxkKDAp
KTsKKyAgICAgICAgVG1wIG5ld1ZhbHVlVG1wID0gdG1wKGF0b21pYy0+Y2hpbGQoMSkpOworICAg
ICAgICAKKyAgICAgICAgRnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3M7CisgICAgICAgIEZyZXF1ZW50
ZWRCbG9jayBmYWlsdXJlOworICAgICAgICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHN1
Y2Nlc3MgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29yKGludmVydCk7CisgICAg
ICAgICAgICBmYWlsdXJlID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9ja10tPnN1Y2Nlc3NvcighaW52
ZXJ0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAg
ICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5vcGVyYXRpb25UeXBlKCkp
LCBpbW1PclRtcChhdG9taWMtPmNoaWxkKDApKSwgbV9lYXgpOworICAgICAgICAgICAgaWYgKHJl
dHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRI
KEF0b21pY1N0cm9uZ0NBUywgd2lkdGgpLCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3MpOwor
ICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5vcGVyYXRp
b25UeXBlKCkpLCBtX2VheCwgdmFsdWVSZXN1bHRUbXApOworICAgICAgICAgICAgfSBlbHNlIGlm
IChpc0JyYW5jaCkgeworICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEJy
YW5jaEF0b21pY1N0cm9uZ0NBUywgd2lkdGgpLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJs
ZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAg
ICAgIG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIGZhaWx1
cmUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9G
T1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FTLCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChpbnZlcnQg
PyBNYWNyb0Fzc2VtYmxlcjo6RmFpbHVyZSA6IE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9l
YXgsIHRtcChhdG9taWMtPmNoaWxkKDEpKSwgYWRkcmVzcywgYm9vbFJlc3VsdFRtcCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzQVJNNjQoKSk7CisgICAgICAgIC8vIFdlIHdpc2ggdG8gZW1pdDoKKyAgICAgICAgLy8K
KyAgICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIExvYWRMaW5rCisgICAg
ICAgIC8vICAgICBCcmFuY2ggTm90RXF1YWwKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVu
OiNmYWlsLCBFbHNlOiAjc3RvcmUKKyAgICAgICAgLy8gQmxvY2sgI3N0b3JlOgorICAgICAgICAv
LyAgICAgU3RvcmVDb25kCisgICAgICAgIC8vICAgICBYb3IgJDEsICVyZXN1bHQgICAgPC0tLSBv
bmx5IGlmICFpbnZlcnQKKyAgICAgICAgLy8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNz
b3JzOiAjZG9uZQorICAgICAgICAvLyBCbG9jayAjZmFpbDoKKyAgICAgICAgLy8gICAgIE1vdmUg
JGludmVydCwgJXJlc3VsdAorICAgICAgICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nl
c3NvcnM6ICNkb25lCisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAgICAKKyAgICAgICAg
QWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6
QmFzaWNCbG9jayogc3RvcmVCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNC
bG9jayogc3VjY2Vzc0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCAmJiBp
c1N0cm9uZykKKyAgICAgICAgICAgIHN1Y2Nlc3NCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAg
IEFpcjo6QmFzaWNCbG9jayogZmFpbEJsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc0Jy
YW5jaCkKKyAgICAgICAgICAgIGZhaWxCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6
QmFzaWNCbG9jayogc3Ryb25nRmFpbEJsb2NrOworICAgICAgICBpZiAoaXNTdHJvbmcpCisgICAg
ICAgICAgICBzdHJvbmdGYWlsQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBGcmVxdWVudGVk
QmxvY2sgY29tcGFyaXNvbkZhaWw7CisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayB3ZWFrRmFpbDsK
KyAgICAgICAgaWYgKGlzU3Ryb25nKSB7CisgICAgICAgICAgICBjb21wYXJpc29uRmFpbCA9IHN0
cm9uZ0ZhaWxCbG9jazsKKyAgICAgICAgICAgIHdlYWtGYWlsID0gcmVsb29wQmxvY2s7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNCcmFuY2gpCisgICAgICAgICAgICAgICAg
Y29tcGFyaXNvbkZhaWwgPSBmYWlsdXJlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGNvbXBhcmlzb25GYWlsID0gZmFpbEJsb2NrOworICAgICAgICAgICAgd2Vha0ZhaWwgPSBm
YWlsdXJlOworICAgICAgICB9CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsK
KyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2so
YmVnaW5CbG9jaywgZG9uZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChKdW1wKTsK
KyAgICAgICAgYmVnaW5CbG9jay0+c2V0U3VjY2Vzc29ycyhyZWxvb3BCbG9jayk7CisgICAgICAg
IAorICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKGxvYWRMaW5rT3Bjb2RlKHdpZHRoLCBhdG9t
aWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcyk7CisgICAg
ICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChCcmFuY2gsIGNhbm9uaWNh
bFdpZHRoKHdpZHRoKSksIG1fdmFsdWUsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwpIHZhbHVlUmVzdWx0VG1wLCBleHBlY3RlZFZhbHVlVG1wKTsKKyAgICAgICAgcmVsb29w
QmxvY2stPnNldFN1Y2Nlc3NvcnMoY29tcGFyaXNvbkZhaWwsIHN0b3JlQmxvY2spOworICAgICAg
ICAKKyAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29kZSh3aWR0aCwgYXRv
bWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgbmV3VmFsdWVUbXAsIGFkZHJlc3MsIHN1Y2Nlc3NC
b29sUmVzdWx0VG1wKTsKKyAgICAgICAgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdG9y
ZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6
Olplcm8pLCBib29sUmVzdWx0VG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICAgICAgc3Rv
cmVCbG9jay0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCB3ZWFrRmFpbCk7CisgICAgICAgICAgICBk
b25lQmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIWRvbmVCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGRvbmVCbG9jay0+YXBwZW5kKE9v
cHMsIG1fdmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGlzU3Ryb25n
KSB7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgQXJn
OjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAsIEFy
Zzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29y
cyhzdWNjZXNzQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6OmltbSghaW52
ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5hcHBl
bmQoSnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5zZXRTdWNj
ZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmICghaW52ZXJ0KQorICAgICAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoWG9y
MzIsIG1fdmFsdWUsIEFyZzo6Yml0SW1tKDEpLCBib29sUmVzdWx0VG1wLCBib29sUmVzdWx0VG1w
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQo
SnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29y
cyhkb25lQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBm
YWlsQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6OmltbShpbnZlcnQpLCBib29sUmVz
dWx0VG1wKTsKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKEp1bXAsIG1fdmFsdWUpOwor
ICAgICAgICAgICAgZmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1N0cm9uZykgeworICAgICAgICAgICAgVG1wIHRt
cCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBl
bmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCB2
YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcywgdG1wKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9j
ay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJv
KSwgdG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5z
ZXRTdWNjZXNzb3JzKGZhaWxCbG9jaywgcmVsb29wQmxvY2spOworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIGJvb2wgYXBwZW5kVm9pZEF0b21pYyhBaXI6Ok9wY29kZSBhdG9taWNPcGNvZGUp
CisgICAgeworICAgICAgICBpZiAobV91c2VDb3VudHMubnVtVXNlcyhtX3ZhbHVlKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRk
cihtX3ZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc1ZhbGlkRm9ybShhdG9taWNPcGNv
ZGUsIEFyZzo6SW1tLCBhZGRyZXNzLmtpbmQoKSkgJiYgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSkg
eworICAgICAgICAgICAgYXBwZW5kKGF0b21pY09wY29kZSwgaW1tKG1fdmFsdWUtPmNoaWxkKDAp
KSwgYWRkcmVzcyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgaWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwgQXJnOjpUbXAsIGFkZHJl
c3Mua2luZCgpKSkgeworICAgICAgICAgICAgYXBwZW5kKGF0b21pY09wY29kZSwgdG1wKG1fdmFs
dWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXBwZW5kR2VuZXJhbEF0b21pYyhBaXI6Ok9wY29kZSBvcGNvZGUpCisgICAgeworICAgICAg
ICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAg
ICAgIAorICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAgIFRtcCBv
bGRWYWx1ZSA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICBUbXAgbmV3VmFsdWUgPSBtX2Nv
ZGUubmV3VG1wKEdQKTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIG5lZWQgYSBDQVMgbG9vcCBv
ciBhIExML1NDIGxvb3AuIFVzaW5nIHByZXBhcmUvYXR0ZW1wdCBqYXJnb24sIHdlIHdhbnQ6Cisg
ICAgICAgIC8vCisgICAgICAgIC8vIEJsb2NrICNyZWxvb3A6CisgICAgICAgIC8vICAgICBQcmVw
YXJlCisgICAgICAgIC8vICAgICBvcGNvZGUKKyAgICAgICAgLy8gICAgIEF0dGVtcHQKKyAgICAg
ICAgLy8gICBTdWNjZXNzb3JzOiBUaGVuOiNkb25lLCBFbHNlOiNyZWxvb3AKKyAgICAgICAgLy8g
QmxvY2sgI2RvbmU6CisgICAgICAgIC8vICAgICBNb3ZlIG9sZFZhbHVlLCByZXN1bHQKKyAgICAg
ICAgCisgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBv
bGRWYWx1ZSwgdG1wKGF0b21pYykpOworICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2Nr
KiByZWxvb3BCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVn
aW5CbG9jazsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNw
bGl0QmxvY2soYmVnaW5CbG9jaywgZG9uZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVu
ZChKdW1wKTsKKyAgICAgICAgYmVnaW5CbG9jay0+c2V0U3VjY2Vzc29ycyhyZWxvb3BCbG9jayk7
CisgICAgICAgIAorICAgICAgICBBaXI6Ok9wY29kZSBwcmVwYXJlT3Bjb2RlOworICAgICAgICBp
ZiAoaXNYODYoKSkgeworICAgICAgICAgICAgc3dpdGNoIChhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCkpIHsKKyAgICAgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgICAgIHByZXBhcmVP
cGNvZGUgPSBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9
IExvYWQxNlNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IE1vdmUz
MjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lkdGg2NDoKKyAg
ICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTW92ZTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBvcGNvZGUgPSBsb2FkTGlua09wY29kZShh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCksIGF0b21pYy0+aGFzRmVuY2UoKSk7CisgICAgICAgIH0K
KyAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChwcmVwYXJlT3Bjb2RlLCBtX3ZhbHVlLCBhZGRy
ZXNzLCBvbGRWYWx1ZSk7CisgICAgICAgIAorICAgICAgICBpZiAob3Bjb2RlICE9IE5vcCkgewor
ICAgICAgICAgICAgaWYgKGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9v
cEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG9s
ZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9v
cEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIG9s
ZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBy
ZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG9s
ZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGltbShhdG9taWMtPmNoaWxk
KDApKSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCkpCisgICAgICAg
ICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRv
bWljLT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRv
bWljLT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBjYXNPcGNvZGUg
PSBPUENPREVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9uZ0NBUywgYXRvbWljLT5vcGVyYXRp
b25XaWR0aCgpKTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQocmVsYXhlZE1vdmVG
b3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgb2xkVmFsdWUsIG1fZWF4KTsKKyAgICAgICAgICAgIHJl
bG9vcEJsb2NrLT5hcHBlbmQoY2FzT3Bjb2RlLCBtX3ZhbHVlLCBBcmc6OnN0YXR1c0NvbmQoTWFj
cm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAg
ICAgICAgIFRtcCBib29sUmVzdWx0ID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBy
ZWxvb3BCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29kZShhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCksIGF0b21pYy0+aGFzRmVuY2UoKSksIG5ld1ZhbHVlLCBhZGRyZXNzLCBib29sUmVzdWx0KTsK
KyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBBcmc6OnJlc0Nv
bmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVzdWx0LCBBcmc6OmJpdEltbSgtMSkpOwor
ICAgICAgICB9CisgICAgICAgIHJlbG9vcEJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jaywg
cmVsb29wQmxvY2spOworICAgIH0KKyAgICAKICAgICB2b2lkIGxvd2VyKCkKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsKQEAgLTE5NzEsMzAgKzIzNjIsNTAgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTG9hZDogewot
ICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBtb3ZlRm9yVHlwZShtX3Zh
bHVlLT50eXBlKCkpLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAg
ICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4o
KTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IEFpcjo6T29wczsKKyAgICAgICAg
ICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG1l
bW9yeS0+dHlwZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAgICAg
ICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTMyOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIEludDY0OgorICAgICAgICAgICAgICAgICAgICBvcGNvZGUg
PSBMb2FkQWNxNjQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG9wY29kZSA9IG1vdmVGb3JUeXBlKG1lbW9y
eS0+dHlwZSgpKTsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bj
b2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTG9hZDhTOiB7
Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQ4U2lnbmVkRXh0
ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAg
ICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFz
RmVuY2UoKSA/IExvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMiA6IExvYWQ4U2lnbmVkRXh0ZW5kVG8z
MjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3Zh
bHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDhaOiB7Ci0gICAgICAgICAgICBhcHBlbmQo
dHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQ4LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAo
bV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFz
PE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcTggOiBMb2FkODsKKyAgICAgICAg
ICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1f
dmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2UgTG9hZDE2UzogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5z
dChtX3ZhbHVlLCBMb2FkMTZTaWduZWRFeHRlbmRUbzMyLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUp
LCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFs
dWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcTE2U2lnbmVkRXh0ZW5k
VG8zMiA6IExvYWQxNlNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBp
bmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFs
dWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExv
YWQxNlo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDE2
LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFp
cjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgp
ID8gTG9hZEFjcTE2IDogTG9hZDE2OworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KKyAgICAgICAgICAgIAogICAgICAgICBj
YXNlIEFkZDogewogICAgICAgICAgICAgaWYgKHRyeUFwcGVuZExlYSgpKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTIwOTIsNyArMjUwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBp
ZiAobV92YWx1ZS0+aXNDaGlsbCgpKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlz
QVJNNjQoKSk7CiAgICAgICAgICAgICBpZiAoaXNJbnQobV92YWx1ZS0+dHlwZSgpKSAmJiBpc1g4
NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJYODZEaXYoRGl2KTsKKyAgICAgICAgICAgICAg
ICBhcHBlbmRYODZEaXYoRGl2KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBBU1NFUlQoIWlzWDg2KCkgfHwgaXNGbG9hdChtX3ZhbHVlLT50eXBl
KCkpKTsKQEAgLTIxMDMsNyArMjUxNCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBVRGl2
OiB7CiAgICAgICAgICAgICBpZiAoaXNJbnQobV92YWx1ZS0+dHlwZSgpKSAmJiBpc1g4NigpKSB7
Ci0gICAgICAgICAgICAgICAgbG93ZXJYODZVRGl2KFVEaXYpOworICAgICAgICAgICAgICAgIGFw
cGVuZFg4NlVEaXYoVURpdik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCkBAIC0yMTE3LDEzICsyNTI4LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTW9kOiB7
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4NigpKTsKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFtX3ZhbHVlLT5pc0NoaWxsKCkpOwotICAgICAgICAgICAgbG93ZXJYODZEaXYo
TW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NkRpdihNb2QpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBVTW9kOiB7CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChpc1g4NigpKTsKLSAgICAgICAgICAgIGxvd2VyWDg2VURpdihVTW9kKTsKKyAgICAg
ICAgICAgIGFwcGVuZFg4NlVEaXYoVU1vZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMjE2MiwxMCArMjU3MywyNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGFw
cGVuZFVuT3A8Tm90MzIsIE5vdDY0PihtX3ZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBU
aGlzIHBhdHRlcm4gaXMgc3VwZXIgdXNlZnVsIG9uIGJvdGggeDg2IGFuZCBBUk02NCwgc2luY2Ug
dGhlIGludmVyc2lvbiBvZiB0aGUgQ0FTIHJlc3VsdAorICAgICAgICAgICAgLy8gY2FuIGJlIGRv
bmUgd2l0aCB6ZXJvIGNvc3Qgb24geDg2IChqdXN0IGZsaXAgdGhlIHNldCBmcm9tIEUgdG8gTkUp
IGFuZCBpdCdzIGEgcHJvZ3Jlc3Npb24KKyAgICAgICAgICAgIC8vIG9uIEFSTTY0IChzaW5jZSBT
VFggcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIHNvIG9yZGluYXJpbHkgd2UgaGF2ZSB0byBmbGlwIGl0
KS4KKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMSkKKyAgICAgICAg
ICAgICAgICAmJiBpc0F0b21pY0NBUyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAg
ICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAg
ICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUtPmNoaWxkKDApLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGFwcGVu
ZEJpbk9wPFhvcjMyLCBYb3I2NCwgWG9yRG91YmxlLCBYb3JGbG9hdCwgQ29tbXV0YXRpdmU+KAog
ICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IERlcGVuZDogeworICAgICAgICAgICAgYXBwZW5kVW5PcDxEZXBlbmQzMiwgRGVwZW5kNjQ+KG1f
dmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAg
ICAgIGNhc2UgU2hsOiB7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50
MzIoMSkpIHsKQEAgLTIyNjYsNyArMjY5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZVRvU3RvcmUs
IGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkciht
X3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjI4Nyw3ICsy
NzE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFpcjo6U3Rv
cmU4LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3Rv
cmUobV92YWx1ZSwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC0yMzA4LDcgKzI3MzYsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTE2LCB2YWx1ZVRvU3RvcmUsIGFkZHIo
bV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgdmFsdWVUb1N0b3Jl
LCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0y
NDE2LDcgKzI4NDQsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgRXF1
YWw6Ci0gICAgICAgIGNhc2UgTm90RXF1YWw6CisgICAgICAgIGNhc2UgTm90RXF1YWw6IHsKKyAg
ICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25n
Q0FTCisgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApID09IG1f
dmFsdWUtPmNoaWxkKDEpCisgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVl
LT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5z
KG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKSkpOworICAgICAgICAgICAgICAgIEFTU0VSVCgh
bV9sb2NrZWQuY29udGFpbnMobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAg
ICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5vcGNvZGUo
KSA9PSBOb3RFcXVhbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNyZWF0
ZUNvbXBhcmUobV92YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBMZXNzVGhhbjoKICAgICAgICAgY2FzZSBHcmVhdGVyVGhh
bjoKICAgICAgICAgY2FzZSBMZXNzRXF1YWw6CkBAIC0yNzI3LDYgKzMxNzAsMzkgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQnJhbmNoOiB7CisgICAgICAgICAgICBpZiAo
Y2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBWYWx1
ZSogYnJhbmNoQ2hpbGQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKGJyYW5jaENoaWxkLT5vcGNvZGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWlj
V2Vha0NBUzoKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQp
OworICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQsIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICAgICAgLy8gQSBi
cmFuY2ggaXMgYSBjb21wYXJpc29uIHRvIHplcm8uCisgICAgICAgICAgICAgICAgICAgIGlmIChi
cmFuY2hDaGlsZC0+Y2hpbGQoMCktPmlzSW50KDApKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb21taXRJbnRlcm5hbChicmFuY2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
cHBlbmRDQVMoYnJhbmNoQ2hpbGQsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEVxdWFsOgorICAgICAg
ICAgICAgICAgIGNhc2UgTm90RXF1YWw6CisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hD
aGlsZC0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChicmFuY2hDaGlsZC0+b3Bjb2RlKDApKQorICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5jaGlsZCgwKSA9
PSBicmFuY2hDaGlsZC0+Y2hpbGQoMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1p
dEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdElu
dGVybmFsKGJyYW5jaENoaWxkLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
cHBlbmRDQVMoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLCBicmFuY2hDaGlsZC0+b3Bjb2RlKCkgPT0g
Tm90RXF1YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNy
ZWF0ZUJyYW5jaChtX3ZhbHVlLT5jaGlsZCgwKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0yNzg0LDcgKzMyNjAsODEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGFwcGVu
ZChBaXI6OkVudHJ5U3dpdGNoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgY2FzZSBBdG9t
aWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLCBmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IEF0b21pY1hjaGdBZGQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3Zh
bHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWlj
KE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQWRkLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFyZyBh
ZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0g
T1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnQWRkLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkp
OworICAgICAgICAgICAgaWYgKGlzVmFsaWRPcGNvZGUob3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVz
cykpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+
dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0bXAoYXRvbWljKSk7CisgICAgICAgICAg
ICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyksIGFkZHJlc3MpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0
b21pYyhPUENPREVfRk9SX1dJRFRIKEFkZCwgY2Fub25pY2FsV2lkdGgoYXRvbWljLT5vcGVyYXRp
b25XaWR0aCgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAgICAg
Y2FzZSBBdG9taWNYY2hnU3ViOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0g
bV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0
b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1N1YiwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgp
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBh
cHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoU3ViLCBjYW5vbmljYWxXaWR0aChh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6IHsKKyAgICAgICAg
ICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAg
ICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQW5k
LCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9X
SURUSChBbmQsIGNhbm9uaWNhbFdpZHRoKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
QXRvbWljWGNoZ09yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1
ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhP
UENPREVfRk9SX1dJRFRIKEF0b21pY09yLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdl
bmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChPciwgY2Fub25pY2FsV2lkdGgoYXRvbWljLT5v
cGVyYXRpb25XaWR0aCgpKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOiB7CisgICAgICAgICAgICBBdG9t
aWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAg
ICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1hvciwgYXRvbWlj
LT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoWG9y
LCBjYW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hj
aGc6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9t
aWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRy
KGF0b21pYyk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVfRk9SX1dJ
RFRIKEF0b21pY1hjaGcsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSk7CisgICAgICAgICAgICBp
ZiAoaXNWYWxpZE9wY29kZShvcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNzKSkgeworICAgICAgICAg
ICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCB0bXAoYXRv
bWljLT5jaGlsZCgwKSksIHRtcChhdG9taWMpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bj
b2RlLCB0bXAoYXRvbWljKSwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWlj
KE9QQ09ERV9GT1JfV0lEVEgoWG9yLCBjYW5vbmljYWxXaWR0aChhdG9taWMtPm9wZXJhdGlvbldp
ZHRoKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI3OTIs
NjQgKzMzNDIsNyBAQCBwcml2YXRlOgogICAgICAgICBkYXRhTG9nKCJGQVRBTDogY291bGQgbm90
IGxvd2VyICIsIGRlZXBEdW1wKG1fcHJvY2VkdXJlLCBtX3ZhbHVlKSwgIlxuIik7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotCi0gICAgdm9pZCBsb3dlclg4
NkRpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQot
ICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAgICAgVG1wIGVk
eCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAgICAgICAgQWlyOjpPcGNvZGUgY29udmVy
dFRvRG91YmxlV29yZDsKLSAgICAgICAgQWlyOjpPcGNvZGUgZGl2OwotICAgICAgICBzd2l0Y2gg
KG1fdmFsdWUtPnR5cGUoKSkgewotICAgICAgICBjYXNlIEludDMyOgotICAgICAgICAgICAgY29u
dmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMjsKLSAgICAgICAgICAg
IGRpdiA9IFg4NkRpdjMyOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50NjQ6
Ci0gICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvUXVhZFdvcmQ2
NDsKLSAgICAgICAgICAgIGRpdiA9IFg4NkRpdjY0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IERp
diB8fCBvcCA9PSBNb2QpOwotICAgICAgICBYODZSZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0
ID0gb3AgPT0gRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQot
ICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAg
ICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdvcmQsIGVheCwgZWR4KTsKLSAgICAgICAgYXBwZW5k
KGRpdiwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOwotICAgICAgICBhcHBlbmQo
TW92ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7Ci0KLSNlbHNlCi0gICAgICAgIFVOVVNF
RF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlm
Ci0gICAgfQotCi0gICAgdm9pZCBsb3dlclg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKLSAgICB7Ci0j
aWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICAgICAgVG1wIGVheCA9IFRtcChYODZSZWdp
c3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBlZHggPSBUbXAoWDg2UmVnaXN0ZXJzOjplZHgpOwot
Ci0gICAgICAgIEFpcjo6T3Bjb2RlIGRpdiA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IFg4
NlVEaXYzMiA6IFg4NlVEaXY2NDsKLQotICAgICAgICBBU1NFUlQob3AgPT0gVURpdiB8fCBvcCA9
PSBVTW9kKTsKLSAgICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09
IFVEaXYgPyBYODZSZWdpc3RlcnM6OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAg
IGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBl
bmQoWG9yNjQsIGVkeCwgZWR4KTsKLSAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcCht
X3ZhbHVlLT5jaGlsZCgxKSkpOwotICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRt
cChtX3ZhbHVlKSk7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0ob3ApOwotICAgICAgICBV
TlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZgotICAgIH0KLQorICAgIAogICAgIElu
ZGV4U2V0PFZhbHVlPiBtX2xvY2tlZDsgLy8gVGhlc2UgYXJlIHZhbHVlcyB0aGF0IHdpbGwgaGF2
ZSBubyBUbXAgaW4gQWlyLgogICAgIEluZGV4TWFwPFZhbHVlLCBUbXA+IG1fdmFsdWVUb1RtcDsg
Ly8gVGhlc2UgYXJlIHZhbHVlcyB0aGF0IG11c3QgaGF2ZSBhIFRtcCBpbiBBaXIuIFdlIHNheSB0
aGF0IGEgVmFsdWUqIHdpdGggYSBub24tbnVsbCBUbXAgaXMgInBpbm5lZCIuCiAgICAgSW5kZXhN
YXA8VmFsdWUsIFRtcD4gbV9waGlUb1RtcDsgLy8gRWFjaCBQaGkgZ2V0cyBpdHMgb3duIFRtcC4K
QEAgLTI4NjQsNyArMzM1Nyw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8VmVjdG9yPEluc3Qs
IDQ+PiBtX2luc3RzOwogICAgIFZlY3RvcjxJbnN0PiBtX3Byb2xvZ3VlOwotCisgICAgCiAgICAg
QjM6OkJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgYm9vbCBtX2lzUmFyZTsKICAgICB1bnNpZ25l
ZCBtX2luZGV4OwpAQCAtMjg3NSw2ICszMzY4LDEyIEBAIHByaXZhdGU6CiAKICAgICBQcm9jZWR1
cmUmIG1fcHJvY2VkdXJlOwogICAgIENvZGUmIG1fY29kZTsKKworICAgIEFpcjo6QmxvY2tJbnNl
cnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsKKworICAgIFRtcCBtX2VheDsKKyAgICBUbXAg
bV9lY3g7CisgICAgVG1wIG1fZWR4OwogfTsKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCShyZXZpc2lv
biAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDMwICszNCw0OCBAQCBNZW1vcnlWYWx1ZTo6fk1lbW9yeVZh
bHVlKCkKIHsKIH0KIAorVHlwZSBNZW1vcnlWYWx1ZTo6YWNjZXNzVHlwZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzTG9hZChvcGNvZGUoKSkpCisgICAgICAgIHJldHVybiB0eXBlKCk7CisgICAgLy8g
VGhpcyBoYXBwZW5zIHRvIHdvcmsgZm9yIGF0b21pY3MsIHRvby4gVGhhdCdzIHdoeSBBdG9taWNW
YWx1ZSBkb2VzIG5vdCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMuCisgICAgcmV0dXJuIGNoaWxkKDAp
LT50eXBlKCk7Cit9CisKK0JhbmsgTWVtb3J5VmFsdWU6OmFjY2Vzc0JhbmsoKSBjb25zdAorewor
ICAgIHJldHVybiBiYW5rRm9yVHlwZShhY2Nlc3NUeXBlKCkpOworfQorCiBzaXplX3QgTWVtb3J5
VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkgY29uc3QKIHsKKyAgICByZXR1cm4gYnl0ZXMoYWNjZXNz
V2lkdGgoKSk7Cit9CisKK1dpZHRoIE1lbW9yeVZhbHVlOjpsb2FkU3RvcmVXaWR0aCgpIGNvbnN0
Cit7CiAgICAgc3dpdGNoIChvcGNvZGUoKSkgewogICAgIGNhc2UgTG9hZDhaOgogICAgIGNhc2Ug
TG9hZDhTOgogICAgIGNhc2UgU3RvcmU4OgotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0
dXJuIFdpZHRoODsKICAgICBjYXNlIExvYWQxNlo6CiAgICAgY2FzZSBMb2FkMTZTOgogICAgIGNh
c2UgU3RvcmUxNjoKLSAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIHJldHVybiBXaWR0aDE2Owog
ICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmV0dXJuIHNpemVvZlR5cGUodHlwZSgpKTsKKyAgICAg
ICAgcmV0dXJuIHdpZHRoRm9yVHlwZSh0eXBlKCkpOwogICAgIGNhc2UgU3RvcmU6Ci0gICAgICAg
IHJldHVybiBzaXplb2ZUeXBlKGNoaWxkKDApLT50eXBlKCkpOworICAgICAgICByZXR1cm4gd2lk
dGhGb3JUeXBlKGNoaWxkKDApLT50eXBlKCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gV2lkdGg4OwogICAgIH0KIH0KIAogV2lkdGggTWVtb3J5VmFsdWU6OmFjY2Vzc1dpZHRoKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gd2lkdGhGb3JCeXRlcyhhY2Nlc3NCeXRlU2l6ZSgpKTsKKyAg
ICByZXR1cm4gbG9hZFN0b3JlV2lkdGgoKTsKIH0KIAogdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1l
dGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKQEAgLTY3LDYg
Kzg1LDggQEAgdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJgogICAgIGlm
ICgoaXNMb2FkKCkgJiYgZWZmZWN0cygpLnJlYWRzICE9IHJhbmdlKCkpCiAgICAgICAgIHx8IChp
c1N0b3JlKCkgJiYgZWZmZWN0cygpLndyaXRlcyAhPSByYW5nZSgpKSkKICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAicmFuZ2UgPSAiLCByYW5nZSgpKTsKKyAgICBpZiAocGhhbnRvbVJhbmdlKCkp
CisgICAgICAgIG91dC5wcmludChjb21tYSwgInBoYW50b21SYW5nZSA9ICIsIHBoYW50b21SYW5n
ZSgpKTsKIH0KIAogVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdApAQCAtNzQs
NiArOTQsNTggQEAgVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAogICAgIHJl
dHVybiBuZXcgTWVtb3J5VmFsdWUoKnRoaXMpOwogfQogCisvLyBVc2UgdGhpcyBmb3JtIGZvciBM
b2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2
ZSBhIHN1ZmZpeCB0aGF0CisvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgorTWVtb3J5
VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBW
YWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgIDogVmFsdWUoQ2hlY2tlZE9w
Y29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0
KQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5v
cGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQx
Nlo6CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IElu
dDMyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0b3JlODoKKyAgICAgICAg
Y2FzZSBTdG9yZTE2OgorICAgICAgICBjYXNlIFN0b3JlOgorICAgICAgICAgICAgQVNTRVJUKHR5
cGUgPT0gVm9pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBV
c2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4K
K01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJ
bnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpCit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJM
RUQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2UgTG9h
ZDhaOgorICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAg
ICBjYXNlIExvYWQxNlM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCisv
LyBVc2UgdGhpcyBmb3JtIGZvciBzdG9yZXMuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQz
Ml90IG9mZnNldCA9IDApCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBv
cmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQoreworICAgIEFT
U0VSVChpc1N0b3JlKGtpbmQub3Bjb2RlKCkpKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTWVtb3J5VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNNZW1vcnlWYWx1ZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw0OCArMjcs
MTcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM0JhbmsuaCIKICNpbmNs
dWRlICJCM0hlYXBSYW5nZS5oIgogI2luY2x1ZGUgIkIzVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CiAKLS8vIEZJWE1FOiBXZSB3YW50IHRvIGFsbG93IGZlbmNlZCBt
ZW1vcnkgYWNjZXNzZXMgb24gQVJNLgotLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MjM0OQotCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBNZW1vcnlWYWx1ZSA6
IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtp
bmQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgY2Fz
ZSBMb2FkOFo6Ci0gICAgICAgIGNhc2UgTG9hZDhTOgotICAgICAgICBjYXNlIExvYWQxNlo6Ci0g
ICAgICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAgY2FzZSBMb2FkOgotICAgICAgICBjYXNlIFN0
b3JlODoKLSAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICBjYXNlIFN0b3JlOgotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBpc1N0b3JlKEtpbmQg
a2luZCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICBj
YXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICBjYXNlIFN0b3JlOgot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBpc0xvYWQo
S2luZCBraW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFjY2VwdHMoa2luZCkgJiYgIWlzU3Rv
cmUoa2luZCk7CisgICAgICAgIHJldHVybiBpc01lbW9yeShraW5kLm9wY29kZSgpKTsKICAgICB9
CiAKICAgICB+TWVtb3J5VmFsdWUoKTsKQEAgLTc4LDc2ICs0Nyw1NiBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZTsgfQogICAg
IHZvaWQgc2V0UmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5nZSkgeyBtX3JhbmdlID0gcmFuZ2U7
IH0KKyAgICAKKyAgICAvLyBUaGlzIGlzIGFuIGFsaWFzIGZvciByYW5nZS4KKyAgICBjb25zdCBI
ZWFwUmFuZ2UmIGFjY2Vzc1JhbmdlKCkgY29uc3QgeyByZXR1cm4gcmFuZ2UoKTsgfQorICAgIHZv
aWQgc2V0QWNjZXNzUmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5nZSkgeyBzZXRSYW5nZShyYW5n
ZSk7IH0KKyAgICAKKyAgICBjb25zdCBIZWFwUmFuZ2UmIGZlbmNlUmFuZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2ZlbmNlUmFuZ2U7IH0KKyAgICB2b2lkIHNldEZlbmNlUmFuZ2UoY29uc3QgSGVhcFJh
bmdlJiByYW5nZSkgeyBtX2ZlbmNlUmFuZ2UgPSByYW5nZTsgfQorCisgICAgYm9vbCBpc1N0b3Jl
KCkgY29uc3QgeyByZXR1cm4gaXNTdG9yZShvcGNvZGUoKSk7IH0KKyAgICBib29sIGlzTG9hZCgp
IGNvbnN0IHsgcmV0dXJuIGlzTG9hZChvcGNvZGUoKSk7IH0KIAotICAgIGJvb2wgaXNTdG9yZSgp
IGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBWb2lkOyB9Ci0gICAgYm9vbCBpc0xvYWQoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgIT0gVm9pZDsgfQorICAgIGJvb2wgaGFzRmVuY2UoKSBjb25zdCB7
IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsgfQogCisgICAgVHlwZSBhY2Nlc3NUeXBlKCkgY29uc3Q7
CisgICAgQmFuayBhY2Nlc3NCYW5rKCkgY29uc3Q7CiAgICAgc2l6ZV90IGFjY2Vzc0J5dGVTaXpl
KCkgY29uc3Q7Ci0gICAgV2lkdGggYWNjZXNzV2lkdGgoKSBjb25zdDsKKyAgICAKKyAgICAvLyBT
bGlnaHRseSBmYXN0ZXIgdmVyc2lvbiBvZiBhY2Nlc3NXaWR0aCwgaWYgeW91IGtub3cgdGhhdCB5
b3UncmUgd29ya2luZyB3aXRoIGEgbG9hZCBvciBzdG9yZS4KKyAgICBXaWR0aCBsb2FkU3RvcmVX
aWR0aCgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgV2lkdGggYWNjZXNzV2lkdGgoKSBjb25z
dDsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwg
UHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJp
bnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWYWx1ZSogY2xvbmVJ
bXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2Nl
ZHVyZTsKLQotICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1dCBub3QgTG9hZDhaLCBM
b2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3VmZml4IHRoYXQKLSAgICAv
LyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2lu
ZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZz
ZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdp
biwgcG9pbnRlcikKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cisg
ICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBraW5kLCBUeXBlIHR5cGUsIE9y
aWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zmc2V0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAg
ICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgYXJndW1lbnRz
Li4uKQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAgICAgLCBtX3JhbmdlKEhlYXBS
YW5nZTo6dG9wKCkpCiAgICAgewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAg
ICAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIExvYWQ6
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIExvYWQ4WjoKLSAgICAg
ICAgICAgIGNhc2UgTG9hZDhTOgotICAgICAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAgICAg
ICAgY2FzZSBMb2FkMTZTOgotICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IEludDMyKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAg
ICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAg
ICAgICBBU1NFUlQodHlwZSA9PSBWb2lkKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CisgICAgCisgICAgLy8gVXNlIHRoaXMgZm9y
bSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0
aGF0IGhhdmUgYSBzdWZmaXggdGhhdAorICAgIC8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlw
ZSkuCisgICAgTWVtb3J5VmFsdWUoS2luZCwgVHlwZSwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwg
aW50MzJfdCBvZmZzZXQgPSAwKTsKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdo
ZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2lu
ZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAg
ICAgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQp
Ci0gICAgewotICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVlKiBwb2lu
dGVyLCBpbnQzMl90IG9mZnNldCA9IDApOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3Rv
cmVzLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZh
bHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVl
KENoZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpCi0gICAg
ICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0b3Ao
KSkKLSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICBz
d2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAg
ICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVlKiB2
YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CisgICAgCiAgICAgaW50
MzJfdCBtX29mZnNldCB7IDAgfTsKLSAgICBIZWFwUmFuZ2UgbV9yYW5nZTsKKyAgICBIZWFwUmFu
Z2UgbV9yYW5nZSB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKyAgICBIZWFwUmFuZ2UgbV9mZW5jZVJh
bmdlIHsgSGVhcFJhbmdlKCkgfTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJCM1R5cGUuaCIKKyNp
bmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC04Miw3ICs4Myw2IEBAIGVudW0gT3Bjb2RlIDogaW50
MTZfdCB7CiAgICAgTW9kLCAvLyBBbGwgYmV0cyBhcmUgb2ZmIGFzIHRvIHdoYXQgd2lsbCBoYXBw
ZW4gd2hlbiB5b3UgZXhlY3V0ZSB0aGlzIGZvciAtMl4zMSUtMSBhbmQgeCUwLgogICAgIFVNb2Qs
CiAKLQogICAgIC8vIFBvbHltb3JwaGljIG5lZ2F0aW9uLiBOb3RlIHRoYXQgd2Ugb25seSBuZWVk
IHRoaXMgZm9yIGZsb2F0aW5nIHBvaW50LCBzaW5jZSBpbnRlZ2VyIG5lZ2F0aW9uCiAgICAgLy8g
aXMgZXhhY3RseSBsaWtlIFN1YigwLCB4KS4gQnV0IHRoYXQncyBub3QgdHJ1ZSBmb3IgZmxvYXRp
bmcgcG9pbnQuIFN1YigwLCAwKSBpcyAwLCB3aGlsZQogICAgIC8vIE5lZygwKSBpcyAtMC4gQWxz
bywgd2UgY2Fub25pY2FsaXplIFN1YigwLCB4KSBpbnRvIE5lZyh4KSBpbiBjYXNlIG9mIGludGVn
ZXJzLgpAQCAtMTYyLDYgKzE2MiwxMDcgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBT
dG9yZTE2LAogICAgIC8vIFRoaXMgaXMgYSBwb2x5bW9ycGhpYyBzdG9yZSBmb3IgSW50MzIsIElu
dDY0LCBGbG9hdCwgYW5kIERvdWJsZS4KICAgICBTdG9yZSwKKyAgICAKKyAgICAvLyBBdG9taWMg
Y29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgYSBib29sZWFuLiBNYXkgY2hvb3NlIHRvIGRv
IG5vdGhpbmcgYW5kIHJldHVybiBmYWxzZS4gWW91IGNhbgorICAgIC8vIHVzdWFsbHkgYXNzdW1l
IHRoYXQgdGhpcyBpcyBmYXN0ZXIgYW5kIHJlc3VsdHMgaW4gbGVzcyBjb2RlIHRoYW4gQXRvbWlj
U3Ryb25nQ0FTLCB0aG91Z2ggdGhhdCdzCisgICAgLy8gbm90IG5lY2Vzc2FyaWx5IHRydWUgb24g
SW50ZWwsIGlmIGluc3RydWN0aW9uIHNlbGVjdGlvbiBkb2VzIGl0cyBqb2IuIEltYWdpbmUgdGhh
dCB0aGlzIG9wY29kZSBpcworICAgIC8vIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5Ogor
ICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBib29sIEF0b21pY1dl
YWtDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBUKiBwdHIpCisgICAgLy8geworICAg
IC8vICAgICBpZiAoIXJhbmQoKSkKKyAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gUmVh
bCB3b3JsZCBleGFtcGxlIG9mIHRoaXM6IGNvbnRleHQgc3dpdGNoIG9uIEFSTSB3aGlsZSBkb2lu
ZyBDQVMuCisgICAgLy8gICAgIGlmICgqcHRyICE9IGV4cGVjdGVkVmFsdWUpCisgICAgLy8gICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAg
ICAgcmV0dXJuIHRydWU7CisgICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IGFsbCBh
dG9taWNzIHB1dCB0aGUgcG9pbnRlciBsYXN0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cgbG9h
ZHMgYW5kIHN0b3JlcyB3b3JrLiBUaGlzCisgICAgLy8gaXMgYSBnb29meSB0cmFkaXRpb24sIGJ1
dCBpdCdzIGhhcm1sZXNzLCBhbmQgYmV0dGVyIHRoYW4gYmVpbmcgaW5jb25zaXN0ZW50LgorICAg
IC8vCisgICAgLy8gTm90ZSB0aGF0IHdlYWsgQ0FTIGhhcyBubyBmZW5jaW5nIGd1YXJhbnRlZXMg
d2hlbiBpdCBmYWlscy4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcKKyAgICAvLyB0cmFu
c2Zvcm1hdGlvbiBpcyBhbHdheXMgdmFsaWQ6CisgICAgLy8KKyAgICAvLyBCZWZvcmU6CisgICAg
Ly8KKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FTKGV4cGVjdGVkLCBuZXcsIHB0
cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3VjY2VzcywgRWxzZTojZmFpbAor
ICAgIC8vCisgICAgLy8gQWZ0ZXI6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5jaChFcXVh
bChMb2FkKHB0ciksIGV4cGVjdGVkKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNh
dHRlbXB0LCBFbHNlOiNmYWlsCisgICAgLy8gICAgIEJCI2F0dGVtcHQ6CisgICAgLy8gICAgICAg
ICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAg
IFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICAvLworICAgIC8vIEJv
dGgga2luZHMgb2YgQ0FTIGZvciBub24tY2Fub25pY2FsIHdpZHRocyAoV2lkdGg4IGFuZCBXaWR0
aDE2KSBpZ25vcmUgdGhlIGlycmVsZXZhbnQgYml0cyBvZiB0aGUKKyAgICAvLyBpbnB1dC4KKyAg
ICBBdG9taWNXZWFrQ0FTLAorICAgIAorICAgIC8vIEF0b21pYyBjb21wYXJlIGFuZCBzd2FwIHRo
YXQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBEb2VzIG5vdCBoYXZlIHRoZSBub25kZXRlcm1pbmlz
bSBvZiBXZWFrQ0FTLgorICAgIC8vIFRoaXMgaXMgYSBiaXQgbW9yZSBjb2RlIGFuZCBhIGJpdCBz
bG93ZXIgaW4gc29tZSBjYXNlcywgdGhvdWdoIG5vdCBieSBhIGxvdC4gSW1hZ2luZSB0aGF0IHRo
aXMKKyAgICAvLyBvcGNvZGUgaXMgYXMgaWYgeW91IGRpZCB0aGlzIGF0b21pY2FsbHk6CisgICAg
Ly8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8vIFQgQXRvbWljU3Ryb25nQ0FT
KFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAg
ICAgVCBvbGRWYWx1ZSA9ICpwdHI7CisgICAgLy8gICAgIGlmIChvbGRWYWx1ZSA9PSBleHBlY3Rl
ZFZhbHVlKQorICAgIC8vICAgICAgICAgKnB0ciA9IG5ld1ZhbHVlOworICAgIC8vICAgICByZXR1
cm4gb2xkVmFsdWUKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgQXRvbWljV2Vh
a0NBUyBhbmQgQXRvbWljU3Ryb25nQ0FTIHNvcnQgb2YgaGF2ZSB0aGlzIGtpbmQgb2YgZXF1aXZh
bGVuY2U6CisgICAgLy8KKyAgICAvLyBBdG9taWNXZWFrQ0FTKEBleHAsIEBuZXcsIEBwdHIpID09
IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhAZXhwLCBAbmV3LCBAcHRyKSwgQGV4cCkKKyAgICAvLwor
ICAgIC8vIEFzc3VtaW5nIHRoYXQgdGhlIFdlYWtDQVMgZG9lcyBub3Qgc3B1cmlvdXNseSBmYWls
LCBvZiBjb3Vyc2UuCisgICAgQXRvbWljU3Ryb25nQ0FTLAorICAgIAorICAgIC8vIEF0b21pY2Fs
bHkgX19fIGEgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm4gdGhlIG9sZCB2YWx1ZS4gU3ludGF4
OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWljWGNoZ19fXyhAb3BlcmFuZCwgQHB0
cikKKyAgICAvLworICAgIC8vIEZvciBub24tY2Fub25pY2FsIHdpZHRocyAoV2lkdGg4IGFuZCBX
aWR0aDE2KSwgdGhlc2UgcmV0dXJuIHNpZ24tZXh0ZW5kZWQgcmVzdWx0cyBhbmQgaWdub3JlIHRo
ZQorICAgIC8vIGlycmVsZXZhbnQgYml0cyBvZiB0aGVpciBpbnB1dHMuCisgICAgQXRvbWljWGNo
Z0FkZCwKKyAgICBBdG9taWNYY2hnQW5kLAorICAgIEF0b21pY1hjaGdPciwKKyAgICBBdG9taWNY
Y2hnU3ViLAorICAgIEF0b21pY1hjaGdYb3IsCisgICAgCisgICAgLy8gRklYTUU6IE1heWJlIHdl
IHNob3VsZCBoYXZlIEF0b21pY1hjaGdOZWcgYW5kIEF0b21pY1hjaGdOb3QuCisgICAgCisgICAg
Ly8gQXRvbWljYWxseSBleGNoYW5nZSBhIHZhbHVlIHdpdGggYSBtZW1vcnkgbG9jYXRpb24uIFN5
bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGcoQG5ld1ZhbHVlLCBA
cHRyKQorICAgIEF0b21pY1hjaGcsCisgICAgCisgICAgLy8gSW50cm9kdWNlIGFuIGludmlzaWJs
ZSBkZXBlbmRlbmN5IGZvciBibG9ja2luZyBtb3Rpb24gb2YgbG9hZHMgd2l0aCByZXNwZWN0IHRv
IGVhY2ggb3RoZXIuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSBEZXBlbmQoQHBo
YW50b20pCisgICAgLy8KKyAgICAvLyBUaGlzIGlzIGV2ZW50dWFsbHkgY29kZWdlbmVyYXRlZCB0
byBoYXZlIGxvY2FsIHNlbWFudGljcyBhcyBpZiB3ZSBkaWQ6CisgICAgLy8KKyAgICAvLyBAcmVz
dWx0ID0gJDAKKyAgICAvLworICAgIC8vIEJ1dCBpdCBlbnN1cmVzIHRoYXQgdGhlIHVzZXJzIG9m
IEByZXN1bHQgY2Fubm90IGV4ZWN1dGUgdW50aWwgQHBoYW50b20gaXMgY29tcHV0ZWQuCisgICAg
Ly8KKyAgICAvLyBUaGUgY29tcGlsZXIgaXMgbm90IGFsbG93ZWQgdG8gcmVhc29uIGFib3V0IHRo
ZSBmYWN0IHRoYXQgRGVwZW5kIGNvZGVnZW5lcmF0ZXMgdGhpcyB3YXkuIEFueSBraW5kCisgICAg
Ly8gb2YgdHJhbnNmb3JtYXRpb24gb3IgYW5hbHlzaXMgdGhhdCByZWxpZXMgb24gdGhlIGluc2ln
aHQgdGhhdCBEZXBlbmQgaXMgcmVhbGx5IHplcm8gaXMgdW5zb3VuZCwKKyAgICAvLyBiZWNhdXNl
IGl0IHVubG9ja3MgcmVvcmRlcmluZyBvZiB1c2VycyBvZiBAcmVzdWx0IGFuZCBAcGhhbnRvbS4K
KyAgICAvLworICAgIC8vIE9uIFg4NiwgdGhpcyBpcyBsb3dlcmVkIHRvIGEgbG9hZC1sb2FkIGZl
bmNlIGFuZCBAcmVzdWx0IHVzZXMgQHBoYW50b20gZGlyZWN0bHkuCisgICAgLy8KKyAgICAvLyBP
biBBUk0sIHRoaXMgaXMgbG93ZXJlZCBhcyBpZiBsaWtlOgorICAgIC8vCisgICAgLy8gQHJlc3Vs
dCA9IEJpdFhvcihAcGhhbnRvbSwgQHBoYW50b20pCisgICAgLy8KKyAgICAvLyBFeGNlcHQgdGhh
dCB0aGUgY29tcGlsZXIgbmV2ZXIgZ2V0cyBhbiBvcHBvcnR1bml0eSB0byBzaW1wbGlmeSBvdXQg
dGhlIEJpdFhvci4KKyAgICBEZXBlbmQsCiAKICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gY29tcHV0
ZSB0aGUgYWN0dWFsIGFkZHJlc3Mgb2YgYSBXYXNtIG1lbW9yeSBvcGVyYXRpb24uIEl0IHRha2Vz
IGFuIEludFB0cgogICAgIC8vIGFuZCBhIHBpbm5lZCByZWdpc3RlciB0aGVuIGNvbXB1dGVzIHRo
ZSBhcHByb3ByaWF0ZSBJbnRQdHIgYWRkcmVzcy4gRm9yIHRoZSB1c2UtY2FzZSBvZgpAQCAtMzAx
LDYgKzQwMiwxMTAgQEAgaW5saW5lIGJvb2wgaXNEZWZpbml0ZWx5VGVybWluYWwoT3Bjb2RlIAog
ICAgIH0KIH0KIAoraW5saW5lIGJvb2wgaXNMb2FkKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dp
dGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBj
YXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKworaW5saW5lIGJvb2wgaXNTdG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAo
b3Bjb2RlKSB7CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2Ug
U3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzTG9hZFN0b3JlKE9wY29kZSBvcGNv
ZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNl
IExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2FkMTZTOgorICAgIGNhc2Ug
TG9hZDoKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNlIFN0b3JlMTY6CisgICAgY2FzZSBTdG9y
ZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWMoT3Bjb2RlIG9wY29kZSkKK3sK
KyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNl
IEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9t
aWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1
YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY0NBUyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3
aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWlj
U3Ryb25nQ0FTOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1hjaGcoT3Bjb2Rl
IG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0Fk
ZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAg
Y2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0
b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzTWVtb3J5QWNjZXNzKE9wY29k
ZSBvcGNvZGUpCit7CisgICAgcmV0dXJuIGlzQXRvbWljKG9wY29kZSkgfHwgaXNMb2FkU3RvcmUo
b3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZSBzaWduRXh0ZW5kT3Bjb2RlKFdpZHRoIHdpZHRo
KQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgcmV0
dXJuIFNFeHQ4OworICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgcmV0dXJuIFNFeHQxNjsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gT29wczsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBu
YW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVy
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJv
Y2VkdXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiw4IEBAIHZvaWQgUHJvY2Vk
dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGMKICAgICAgICAgfQogICAgICAgICBkYXRhTG9n
KCIgICAgIiwgZGVlcER1bXAoKnRoaXMsIHZhbHVlKSwgIlxuIik7CiAgICAgfQorICAgIGlmICho
YXNRdWlya3MoKSkKKyAgICAgICAgb3V0LnByaW50KCJIYXMgUXVpcmtzOiBUcnVlXG4iKTsKICAg
ICBpZiAodmFyaWFibGVzKCkuc2l6ZSgpKSB7CiAgICAgICAgIG91dC5wcmludCgiVmFyaWFibGVz
OlxuIik7CiAgICAgICAgIGZvciAoVmFyaWFibGUqIHZhcmlhYmxlIDogdmFyaWFibGVzKCkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50
KE9yaWdpbiwgVHlwZSwgaW50NjRfdCB2YWx1ZSk7CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50
KFZhbHVlKiwgaW50NjRfdCB2YWx1ZSk7CiAKKyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0
IGJvdHRvbSBpcyB6ZXJvLgogICAgIFZhbHVlKiBhZGRCb3R0b20oT3JpZ2luLCBUeXBlKTsKICAg
ICBWYWx1ZSogYWRkQm90dG9tKFZhbHVlKik7CiAKQEAgLTE5NSw2ICsxOTYsMTIgQEAgcHVibGlj
OgogICAgIC8vIGFsaXZlLiBHcmVhdCBmb3IgY29tcGlsZXItZ2VuZXJhdGVkIGRhdGEgc2VjdGlv
bnMsIGxpa2Ugc3dpdGNoIGp1bXAgdGFibGVzIGFuZCBjb25zdGFudCBwb29scy4KICAgICAvLyBU
aGlzIHJldHVybnMgbWVtb3J5IHRoYXQgaGFzIGJlZW4gemVyby1pbml0aWFsaXplZC4KICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkKiBhZGREYXRhU2VjdGlvbihzaXplX3QpOworICAgIAorICAg
IC8vIFNvbWUgb3BlcmF0aW9ucyBhcmUgc3BlY2lmaWVkIGluIEIzIElSIHRvIGJlaGF2ZSBvbmUg
d2F5IGJ1dCBvbiB0aGlzIGdpdmVuIENQVSB0aGV5IGJlaGF2ZSBhCisgICAgLy8gZGlmZmVyZW50
IHdheS4gV2hlbiB0cnVlLCB0aG9zZSBCMyBJUiBvcHMgc3dpdGNoIHRvIGJlaGF2aW5nIHRoZSBD
UFUgd2F5LCBhbmQgdGhlIG9wdGltaXplciBtYXkKKyAgICAvLyBzdGFydCB0YWtpbmcgYWR2YW50
YWdlIG9mIGl0LgorICAgIGJvb2wgaGFzUXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNRdWly
a3M7IH0KKyAgICB2b2lkIHNldEhhc1F1aXJrcyhib29sIHZhbHVlKSB7IG1faGFzUXVpcmtzID0g
dmFsdWU7IH0KIAogICAgIE9wYXF1ZUJ5cHJvZHVjdHMmIGJ5cHJvZHVjdHMoKSB7IHJldHVybiAq
bV9ieXByb2R1Y3RzOyB9CiAKQEAgLTI1Miw2ICsyNTksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxTaGFyZWRUYXNrPHZvaWQoUHJpbnRTdHJlYW0mLCBPcmlnaW4pPj4gbV9vcmlnaW5QcmludGVy
OwogICAgIGNvbnN0IHZvaWQqIG1fZnJvbnRlbmREYXRhOwogICAgIFBDVG9PcmlnaW5NYXAgbV9w
Y1RvT3JpZ2luTWFwOworICAgIGJvb2wgbV9oYXNRdWlya3MgeyBmYWxzZSB9OwogfTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VTdHJlbmd0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUmVkdWNlU3RyZW5ndGguY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwMiw3
ICs2MDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBicmVhazsK
LQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmVnOgogICAgICAgICAgICAgLy8gVHVybiB0
aGlzOiBOZWcoY29uc3RhbnQpCiAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IC1jb25zdGFudApA
QCAtMTI5NSw2ICsxMjk1LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKCFtX3Byb2MuaGFzUXVpcmtzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJu
IHRoaXM6IFNFeHQ4KEF0b21pY1hjaGdfX18pCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlz
OiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAgICAgaWYgKGlzQXRvbWljWGNoZyhtX3ZhbHVl
LT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNo
aWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+b3BlcmF0aW9uV2lkdGgoKSA9PSBXaWR0aDgpIHsK
KyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgw
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU0V4dDE2OgpAQCAt
MTM0Myw2ICsxMzUzLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFtX3By
b2MuaGFzUXVpcmtzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNFeHQxNihB
dG9taWNYY2hnX19fKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19f
XworICAgICAgICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9w
Y29kZSgpKQorICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRv
bWljVmFsdWU+KCktPm9wZXJhdGlvbldpZHRoKCkgPT0gV2lkdGgxNikgeworICAgICAgICAgICAg
ICAgICAgICByZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTRXh0MzI6CkBAIC0yMTAxLDIyICsyMTIx
LDI1IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChtX3ZhbHVlLT5udW1DaGlsZHJlbigpID49
IDIpOwogICAgICAgICAKICAgICAgICAgLy8gTGVhdmUgaXQgYWxvbmUgaWYgdGhlIHJpZ2h0IGNo
aWxkIGlzIGEgY29uc3RhbnQuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNDb25z
dGFudCgpKQorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKQorICAg
ICAgICAgICAgfHwgbV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NB
UykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIGlmIChtX3ZhbHVlLT5j
aGlsZCgwKS0+aXNDb25zdGFudCgpKSB7CisgICAgICAgIGF1dG8gc3dhcCA9IFsmXSAoKSB7CiAg
ICAgICAgICAgICBzdGQ6OnN3YXAobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEp
KTsKICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNo
aWxkKDApLT5pc0NvbnN0YW50KCkpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOworICAgICAg
ICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJv
bmdDQVMpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOworICAgICAgICAKICAgICAgICAgLy8g
U29ydCB0aGUgb3BlcmFuZHMuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGNhbm9uaWNhbGl6YXRpb24u
IFdlIHVzZSB0aGUgaW5kZXggaW5zdGVhZCBvZgogICAgICAgICAvLyB0aGUgYWRkcmVzcyB0byBt
YWtlIHRoaXMgYXQgbGVhc3Qgc2xpZ2h0bHkgZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAgaWYgKG1f
dmFsdWUtPmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4KCkpIHsK
LSAgICAgICAgICAgIHN0ZDo6c3dhcChtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQo
MSkpOwotICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmluZGV4KCkgPiBtX3Zh
bHVlLT5jaGlsZCgxKS0+aW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7CiAgICAg
fQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBhIGZvcndhcmQgYW5hbHlz
aXMuIEluc3RlYWQsIHdlIHVzZXMgYSBib3VuZGVkLXNlYXJjaCBiYWNrd2FyZHMKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQ2LDYgKzM0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQg
IiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJ
bnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZh
bHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTG9hZDoKQEAgLTM1Myw2ICszNTQs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVu
KCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgIT0gVm9pZCwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAg
ICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgU3RvcmU4OgpAQCAtMzYyLDYgKzM2NCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQz
MiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hp
bGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAg
ICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgU3RvcmU6CkBAIC0zNjksOCArMzcyLDQ5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2
YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgp
ID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3Rh
Y2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgp
LmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSB2YWx1ZS0+
Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRl
clR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21p
Yyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoK
KyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVu
KCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEp
LT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJ
bnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0
b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAg
IGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAg
ICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFs
dWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+
dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50
KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAg
ICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZh
bHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGls
ZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgICAgICAgICBW
QUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0
ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYgKzU4MSwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUZlbmNlKFZh
bHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAg
ICAgICAgICBWQUxJREFURShtZW1vcnR5LT5hY2Nlc3NCYW5rKCkgPT0gR1AsICgiRmVuY2UgYXQg
IiwgKm1lbW9yeSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRlQXRvbWljKFZhbHVl
KiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSB2YWx1ZS0+YXM8
QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBWQUxJREFURShiZXN0VHlwZShhdG9t
aWMtPm9wZXJhdGlvbldpZHRoKCkpID09IGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVTdGFja0FjY2VzcyhWYWx1ZSog
dmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNp
bmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgi
CiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQm90dG9tUHJv
dmlkZXIuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTUxMCw2ICs1MTEsNyBAQCBi
b29sIFZhbHVlOjpyZXR1cm5zQm9vbCgpIGNvbnN0CiAgICAgY2FzZSBBYm92ZUVxdWFsOgogICAg
IGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CisgICAgY2FzZSBB
dG9taWNXZWFrQ0FTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFBoaToKICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgc3RvcnkgaGVyZS4KQEAgLTU4OSw2ICs1OTEs
NyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIEJlbG93RXF1YWw6
CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgogICAgIGNhc2UgU2VsZWN0OgorICAgIGNhc2Ug
RGVwZW5kOgogICAgICAgICBicmVhazsKICAgICBjYXNlIERpdjoKICAgICBjYXNlIFVEaXY6CkBA
IC02MDAsMTYgKzYwMyw0NCBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBj
YXNlIExvYWQ4UzoKICAgICBjYXNlIExvYWQxNlo6CiAgICAgY2FzZSBMb2FkMTZTOgotICAgIGNh
c2UgTG9hZDoKLSAgICAgICAgcmVzdWx0LnJlYWRzID0gYXM8TWVtb3J5VmFsdWU+KCktPnJhbmdl
KCk7CisgICAgY2FzZSBMb2FkOiB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxN
ZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5yYW5nZSgpOwor
ICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICByZXN1bHQud3Jp
dGVzID0gbWVtb3J5LT5mZW5jZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0
cnVlOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsK
ICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgU3RvcmU4OgogICAgIGNhc2UgU3RvcmUx
NjoKLSAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXN1bHQud3JpdGVzID0gYXM8TWVtb3J5VmFs
dWU+KCktPnJhbmdlKCk7CisgICAgY2FzZSBTdG9yZTogeworICAgICAgICBNZW1vcnlWYWx1ZSog
bWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC53cml0ZXMgPSBtZW1v
cnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgpOworICAgICAgICAgICAgcmVz
dWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQuY29udHJvbERlcGVu
ZGVudCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEF0b21pY1dlYWtD
QVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgor
ICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNl
IEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWlj
WGNoZzogeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gYXM8QXRvbWljVmFsdWU+KCk7
CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IGF0b21pYy0+cmFuZ2UoKSB8IGF0b21pYy0+ZmVuY2VS
YW5nZSgpOworICAgICAgICByZXN1bHQud3JpdGVzID0gYXRvbWljLT5yYW5nZSgpIHwgYXRvbWlj
LT5mZW5jZVJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAgICAg
ICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVu
dCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFdhc21BZGRyZXNzOgog
ICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVlOwogICAgICAgICBicmVhazsKQEAgLTYx
NywxOCArNjQ4LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgICAgIGNv
bnN0IEZlbmNlVmFsdWUqIGZlbmNlID0gYXM8RmVuY2VWYWx1ZT4oKTsKICAgICAgICAgcmVzdWx0
LnJlYWRzID0gZmVuY2UtPnJlYWQ7CiAgICAgICAgIHJlc3VsdC53cml0ZXMgPSBmZW5jZS0+d3Jp
dGU7Ci0gICAgICAgIAotICAgICAgICAvLyBQcmV2ZW50IGtpbGxpbmcgb2YgZmVuY2VzIHRoYXQg
Y2xhaW0gbm90IHRvIHdyaXRlIGFueXRoaW5nLiBJdCdzIGEgYml0IHdlaXJkIHRoYXQgd2UgdXNl
Ci0gICAgICAgIC8vIGxvY2FsIHN0YXRlIGFzIHRoZSB3YXkgdG8gZG8gdGhpcywgYnV0IGl0IGhh
cHBlbnMgdG8gd29yazogd2UgbXVzdCBhc3N1bWUgdGhhdCB3ZSBjYW5ub3QKLSAgICAgICAgLy8g
a2lsbCB3cml0ZXNMb2NhbFN0YXRlIHVubGVzcyB3ZSB1bmRlcnN0YW5kcyBleGFjdGx5IHdoYXQg
dGhlIGluc3RydWN0aW9uIGlzIGRvaW5nIChsaWtlCi0gICAgICAgIC8vIHRoZSB3YXkgdGhhdCBm
aXhTU0EgdW5kZXJzdGFuZHMgU2V0L0dldCBhbmQgdGhlIHdheSB0aGF0IHJlZHVjZVN0cmVuZ3Ro
IGFuZCBvdGhlcnMKLSAgICAgICAgLy8gdW5kZXJzdGFuZCBVcHNpbG9uKS4gVGhpcyB3b3VsZCBv
bmx5IGJlY29tZSBhIHByb2JsZW0gaWYgd2UgaGFkIHNvbWUgYW5hbHlzaXMgdGhhdCB3YXMKLSAg
ICAgICAgLy8gbG9va2luZyB0byB1c2UgdGhlIHdyaXRlc0xvY2FsU3RhdGUgYml0IHRvIGludmFs
aWRhdGUgYSBDU0Ugb3ZlciBsb2NhbCBzdGF0ZSBvcGVyYXRpb25zLgotICAgICAgICAvLyBUaGVu
IGEgRmVuY2Ugd291bGQgbG9vayBibG9jaywgc2F5LCB0aGUgZWxpbWluYXRpb24gb2YgYSByZWR1
bmRhbnQgR2V0LiBCdXQgaXQgbGlrZQotICAgICAgICAvLyB0aGF0J3Mgbm90IGF0IGFsbCBob3cg
b3VyIG9wdGltaXphdGlvbnMgZm9yIFNldC9HZXQvVXBzaWxvbi9QaGkgd29yayAtIHRoZXkgZ3Jv
ayB0aGVpcgotICAgICAgICAvLyBvcGVyYXRpb25zIGRlZXBseSBlbm91Z2ggdGhhdCB0aGV5IGhh
dmUgbm8gbmVlZCB0byBjaGVjayB0aGlzIGJpdCAtIHNvIHRoaXMgY2hlYXQgaXMKLSAgICAgICAg
Ly8gZmluZS4KLSAgICAgICAgcmVzdWx0LndyaXRlc0xvY2FsU3RhdGUgPSB0cnVlOworICAgICAg
ICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBD
Q2FsbDoKQEAgLTY5NCw2ICs3MTQsNyBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5KCkgY29uc3QKICAg
ICBjYXNlIENoZWNrOgogICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgY2FzZSBOZWc6CisgICAg
Y2FzZSBEZXBlbmQ6CiAgICAgICAgIHJldHVybiBWYWx1ZUtleShraW5kKCksIHR5cGUoKSwgY2hp
bGQoMCkpOwogICAgIGNhc2UgQWRkOgogICAgIGNhc2UgU3ViOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxMCBAQCBwdWJsaWM6
CiAgICAgCiAgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKS5vcGNvZGUo
KTsgfQogICAgIAorICAgIC8vIE5vdGUgdGhhdCB0aGUga2luZCBpcyBtZWFudCB0byBiZSBpbW11
dGFibGUuIERvIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHRoaXMgaXMgc2FmZS4gSXQncyBub3QK
KyAgICAvLyB1c3VhbGx5IHNhZmUuCisgICAgdm9pZCBzZXRLaW5kVW5zYWZlbHkoS2luZCBraW5k
KSB7IG1fa2luZCA9IGtpbmQ7IH0KKyAgICAKICAgICAvLyBJdCdzIGdvb2QgcHJhY3RpY2UgdG8g
bWlycm9yIEtpbmQgbWV0aG9kcyBoZXJlLCBzbyB5b3UgY2FuIHNheSB2YWx1ZS0+aXNCbGFoKCkK
ICAgICAvLyBpbnN0ZWFkIG9mIHZhbHVlLT5raW5kKCkuaXNCbGFoKCkuCiAgICAgYm9vbCBpc0No
aWxsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLmlzQ2hpbGwoKTsgfQpAQCAtMTA3LDYgKzExMSw4
IEBAIHB1YmxpYzoKICAgICAvLyB2YWx1ZXMgd2l0aCBJZGVudGl0aWVzIG9uIGJvdHRvbSBjb25z
dGFudHMuIEZvciB0aGlzIHJlYXNvbiwgdGhpcyB0YWtlcyBhIGNhbGxiYWNrIHRoYXQgaXMKICAg
ICAvLyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYm90dG9tcy4gVGhlcmUncyBhIHV0aWxpdHkg
Zm9yIHRoaXMsIHNlZSBCM0JvdHRvbVByb3ZpZGVyLmguIFlvdQogICAgIC8vIGNhbiBhbHNvIGFj
Y2VzcyB0aGF0IHV0aWxpdHkgdXNpbmcgcmVwbGFjZVdpdGhCb3R0b20oSW5zZXJ0aW9uU2V0Jiwg
c2l6ZV90KS4KKyAgICAvLworICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlz
IHplcm8uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQm90dG9tUHJvdmlkZXI+CiAgICAgdm9pZCBy
ZXBsYWNlV2l0aEJvdHRvbShjb25zdCBCb3R0b21Qcm92aWRlciYpOwogICAgIApAQCAtMzIxLDYg
KzMyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSVRvRjoKICAgICAgICAgY2FzZSBCaXR3
aXNlQ2FzdDoKICAgICAgICAgY2FzZSBCcmFuY2g6CisgICAgICAgIGNhc2UgRGVwZW5kOgogICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgIT0gMSkpCiAgICAgICAgICAgICAgICAgYmFk
S2luZChraW5kLCBudW1BcmdzKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwzOCBA
QAogCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeworCitUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpCit7Cisg
ICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgIGNhc2UgV2lkdGgxNjoK
KyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNl
IEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDMyOworICAgICAgICBjYXNlIEZQOgorICAgICAg
ICAgICAgcmV0dXJuIEZsb2F0OworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lkOworICAgIGNhc2UgV2lkdGg2NDoKKyAg
ICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICByZXR1
cm4gSW50NjQ7CisgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICByZXR1cm4gRG91YmxlOwor
ICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBWb2lkOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBWb2lkOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKwogbmFtZXNw
YWNlIFdURiB7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkIz
OjpXaWR0aCB3aWR0aCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkocmV2aXNp
b24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsNiArNjIsMTggQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yVHlwZShUeXBl
IHR5cGUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2lubGluZSBXaWR0aCBjYW5v
bmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gc3RkOjptYXgoV2lkdGgzMiwg
d2lkdGgpOworfQorCitpbmxpbmUgYm9vbCBpc0Nhbm9uaWNhbFdpZHRoKFdpZHRoIHdpZHRoKQor
eworICAgIHJldHVybiB3aWR0aCA+PSBXaWR0aDMyOworfQorCitUeXBlIGJlc3RUeXBlKEJhbmsg
YmFuaywgV2lkdGggd2lkdGgpOworCiBpbmxpbmUgV2lkdGggY29uc2VydmF0aXZlV2lkdGgoQmFu
ayBiYW5rKQogewogICAgIHJldHVybiBiYW5rID09IEdQID8gcG9pbnRlcldpZHRoKCkgOiBXaWR0
aDY0OwpAQCAtOTMsNiArMTA1LDIwIEBAIGlubGluZSBXaWR0aCB3aWR0aEZvckJ5dGVzKHVuc2ln
bmVkIGJ5dGUKICAgICB9CiB9CiAKK2lubGluZSB1aW50NjRfdCBtYXNrKFdpZHRoIHdpZHRoKQor
eworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgcmV0dXJu
IDB4MDAwMDAwMDAwMDAwMDBmZmxsdTsKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgIHJldHVy
biAweDAwMDAwMDAwMDAwMGZmZmZsbHU7CisgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICByZXR1
cm4gMHgwMDAwMDAwMGZmZmZmZmZmbGx1OworICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgcmV0
dXJuIDB4ZmZmZmZmZmZmZmZmZmZmZmxsdTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQXJnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFyZy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQXJnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBAIHVu
c2lnbmVkIEFyZzo6anNIYXNoKCkgY29uc3QKICAgICBjYXNlIFJlbENvbmQ6CiAgICAgY2FzZSBS
ZXNDb25kOgogICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAg
Y2FzZSBXaWR0aEFyZzoKICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X29mZnNldCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgyLDYgKzE4Myw5IEBAIHZvaWQgQXJnOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgY2FzZSBEb3VibGVDb25kOgogICAgICAg
ICBvdXQucHJpbnQoYXNEb3VibGVDb25kaXRpb24oKSk7CiAgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIFN0YXR1c0NvbmQ6CisgICAgICAgIG91dC5wcmludChhc1N0YXR1c0NvbmRpdGlvbigpKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgb3V0LnByaW50KHBv
aW50ZXJEdW1wKHNwZWNpYWwoKSkpOwogICAgICAgICByZXR1cm47CkBAIC0yNDEsNiArMjQ1LDkg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJn
OjpEb3VibGVDb25kOgogICAgICAgICBvdXQucHJpbnQoIkRvdWJsZUNvbmQiKTsKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQXJnOjpTdGF0dXNDb25kOgorICAgICAgICBvdXQucHJpbnQoIlN0
YXR1c0NvbmQiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpTcGVjaWFsOgogICAg
ICAgICBvdXQucHJpbnQoIlNwZWNpYWwiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg1LDYgKzI5
Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNl
IEFyZzo6RWFybHlEZWY6CiAgICAgICAgIG91dC5wcmludCgiRWFybHlEZWYiKTsKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CisgICAgICAgIG91dC5wcmludCgiRWFy
bHlaRGVmIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAg
ICAgb3V0LnByaW50KCJTY3JhdGNoIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFJlbENvbmQsCiAgICAgICAgIFJlc0NvbmQsCiAgICAgICAg
IERvdWJsZUNvbmQsCisgICAgICAgIFN0YXR1c0NvbmQsCiAgICAgICAgIFNwZWNpYWwsCiAgICAg
ICAgIFdpZHRoQXJnCiAgICAgfTsKQEAgLTE1MSw2ICsxNTIsOCBAQCBwdWJsaWM6CiAgICAgICAg
IC8vIGFzIFVzZSBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yOiB0aGUgdXNlIG1heSBoYXBwZW4gYmVm
b3JlIHRoZSBkZWYsIG9yIGl0IG1heSBoYXBwZW4gYWZ0ZXIKICAgICAgICAgLy8gaXQuCiAgICAg
ICAgIEVhcmx5RGVmLAorICAgICAgICAgICAgCisgICAgICAgIEVhcmx5WkRlZiwKIAogICAgICAg
ICAvLyBTb21lIGluc3RydWN0aW9ucyBuZWVkIGEgc2NyYXRjaCByZWdpc3Rlci4gV2UgbW9kZWwg
dGhpcyBieSBzYXlpbmcgdGhhdCB0aGUgdGVtcG9yYXJ5IGlzCiAgICAgICAgIC8vIGRlZmluZWQg
ZWFybHkgYW5kIHVzZWQgbGF0ZS4gVGhpcyByb2xlIGltcGxpZXMgdGhhdC4KQEAgLTE4Niw2ICsx
ODksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRy
OgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTIwNiw2ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoK
ICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBj
YXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIyOCw2ICsyMzMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNl
IEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBy
b2xlOwogICAgICAgICBjYXNlIFVzZToKICAgICAgICAgICAgIHJldHVybiBDb2xkVXNlOwpAQCAt
MjUzLDYgKzI1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAg
ICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVh
cmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI3NCw2ICsyODEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIEVhcmx5RGVm
OgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5NCw2ICszMDIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgogICAg
ICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgY2Fz
ZSBTY3JhdGNoOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMxNSw2
ICszMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFy
bHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQpAQCAtMzMwLDYgKzM0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VB
ZGRyOgogICAgICAgICBjYXNlIExhdGVVc2U6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAg
ICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2Ug
TGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTgsNiArMzY5LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIFpEZWY6
CiAgICAgICAgIGNhc2UgVXNlWkRlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTUzMyw2ICs1NDUsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAorICAgIHN0YXRpYyBBcmcgc3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3RhdHVz
Q29uZGl0aW9uIGNvbmRpdGlvbikKKyAgICB7CisgICAgICAgIEFyZyByZXN1bHQ7CisgICAgICAg
IHJlc3VsdC5tX2tpbmQgPSBTdGF0dXNDb25kOworICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBj
b25kaXRpb247CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgc3RhdGljIEFy
ZyBzcGVjaWFsKEFpcjo6U3BlY2lhbCogc3BlY2lhbCkKICAgICB7CiAgICAgICAgIEFyZyByZXN1
bHQ7CkBAIC02NTgsMTIgKzY3OCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBraW5kKCkg
PT0gRG91YmxlQ29uZDsKICAgICB9CiAKKyAgICBib29sIGlzU3RhdHVzQ29uZCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4ga2luZCgpID09IFN0YXR1c0NvbmQ7CisgICAgfQorCiAgICAg
Ym9vbCBpc0NvbmRpdGlvbigpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkg
ewogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAg
Y2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTg1MSw2ICs4NzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAg
ICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2Ug
U3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJn
OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04NzIsNiArODk5LDcgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2Fz
ZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2UgU3Bl
Y2lhbDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgY2FzZSBJbnZhbGlkOgpAQCAt
MTA1OCw2ICsxMDg2LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAg
IGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0
YXR1c0NvbmQ6CiAgICAgICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTE3Nyw2ICsxMjA2LDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRp
b24+KG1fb2Zmc2V0KTsKICAgICB9CiAgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0Nv
bmRpdGlvbiBhc1N0YXR1c0NvbmRpdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
aXNTdGF0dXNDb25kKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJs
ZXI6OlN0YXR1c0NvbmRpdGlvbj4obV9vZmZzZXQpOworICAgIH0KKyAgICAKICAgICAvLyBUZWxs
cyB5b3UgaWYgdGhlIEFyZyBpcyBpbnZlcnRpYmxlLiBPbmx5IGNvbmRpdGlvbiBhcmd1bWVudHMg
YXJlIGludmVydGlibGUsIGFuZCBldmVuIGZvciB0aG9zZSwgdGhlcmUKICAgICAvLyBhcmUgYSBm
ZXcgZXhjZXB0aW9ucyAtIG5vdGFibHkgT3ZlcmZsb3cgYW5kIFNpZ25lZC4KICAgICBib29sIGlz
SW52ZXJ0aWJsZSgpIGNvbnN0CkBAIC0xMTg0LDYgKzEyMTksNyBAQCBwdWJsaWM6CiAgICAgICAg
IHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBE
b3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyOjppc0ludmVydGlibGUoYXNSZXN1bHRDb25kaXRpb24oKSk7CkBAIC0xMjA0LDYgKzEy
NDAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gcmVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6aW52ZXJ0KGFzUmVzdWx0Q29uZGl0aW9uKCkpKTsKICAgICAgICAgY2FzZSBEb3VibGVDb25k
OgogICAgICAgICAgICAgcmV0dXJuIGRvdWJsZUNvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChh
c0RvdWJsZUNvbmRpdGlvbigpKSk7CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKKyAgICAgICAg
ICAgIHJldHVybiBzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNTdGF0dXNDb25k
aXRpb24oKSkpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjEy
OTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNSw2ICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsgbmFtZXNwYWNlCiAKIGNvbnN0IGNoYXIqIGNvbnN0IEJhc2ljQmxvY2s6OmR1bXBQcmVmaXgg
PSAiIyI7CiAKK3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sg
dGFyZ2V0KQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMSk7CisgICAgbV9zdWNjZXNzb3Jz
WzBdID0gdGFyZ2V0OworfQorCit2b2lkIEJhc2ljQmxvY2s6OnNldFN1Y2Nlc3NvcnMoRnJlcXVl
bnRlZEJsb2NrIHRha2VuLCBGcmVxdWVudGVkQmxvY2sgbm90VGFrZW4pCit7CisgICAgbV9zdWNj
ZXNzb3JzLnJlc2l6ZSgyKTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0gPSB0YWtlbjsKKyAgICBtX3N1
Y2Nlc3NvcnNbMV0gPSBub3RUYWtlbjsKK30KKwogYm9vbCBCYXNpY0Jsb2NrOjphZGRQcmVkZWNl
c3NvcihCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICByZXR1cm4gQjM6OmFkZFByZWRlY2Vzc29y
KHRoaXMsIGJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFz
aWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckJhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksOSBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIGNvbnN0IHsgcmV0
dXJuIG1fc3VjY2Vzc29yczsgfQogICAgIFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3NvcnMoKSB7IHJl
dHVybiBtX3N1Y2Nlc3NvcnM7IH0KIAorICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhGcmVxdWVudGVk
QmxvY2spOworICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2ssIEZyZXF1ZW50
ZWRCbG9jayk7CisKICAgICBCYXNpY0Jsb2NrKiBzdWNjZXNzb3JCbG9jayh1bnNpZ25lZCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAgQmFzaWNC
bG9jayomIHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBzdWNjZXNzb3Io
aW5kZXgpLmJsb2NrKCk7IH0KICAgICBTdWNjZXNzb3JDb2xsZWN0aW9uPEJhc2ljQmxvY2ssIFN1
Y2Nlc3Nvckxpc3Q+IHN1Y2Nlc3NvckJsb2NrcygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBaXJCbG9ja0luc2VydGlvblNldC5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1
ZGUgIkFpckJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3Rm
L0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFj
ZSBBaXIgeworCitCbG9ja0luc2VydGlvblNldDo6QmxvY2tJbnNlcnRpb25TZXQoQ29kZSAmY29k
ZSkKKyAgICA6IEdlbmVyaWNCbG9ja0luc2VydGlvblNldChjb2RlLm1fYmxvY2tzKQoreworfQor
CitCbG9ja0luc2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KCkKK3sKK30KKworfSB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNl
cnRpb25TZXQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0lzbmVy
dGlvblNldC5oIgorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK2NsYXNzIEluc2VydGlvblNldDsKKwordHlwZWRlZiBH
ZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2Nr
SW5zZXJ0aW9uOworCitjbGFzcyBCbG9ja0luc2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxv
Y2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4geworcHVibGljOgorICAgIEJsb2NrSW5zZXJ0aW9u
U2V0KENvZGUmKTsKKyAgICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKKyAgICAKKyAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGV2ZW50dWFsbHkgaW1wbGVtZW50IEIzOjpCbG9ja0luc2VydGlvblNldCdz
IHNwbGl0Rm9yd2FyZCgpLgorfTsKKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgor
CisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyRHVtcEFzSlMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRHVtcEFzSlMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI0
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFpckR1bXBBc0pTLmgiCi0KLSNp
ZiBFTkFCTEUoQjNfSklUKQotCi0jaW5jbHVkZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFpcklu
c3RJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2Ug
QWlyIHsKLQotbmFtZXNwYWNlIHsKLQotQ1N0cmluZyB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KHVu
c2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoImJiIiwgaW5kZXgpOwotfQot
Ci1DU3RyaW5nIHZhck5hbWUoQmFzaWNCbG9jayogYmxvY2spCi17Ci0gICAgcmV0dXJuIHZhck5h
bWVGb3JCbG9ja0F0SW5kZXgoYmxvY2stPmluZGV4KCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWVG
b3JTdGFja1Nsb3RBdEluZGV4KHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJp
bmcoInNsb3QiLCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShTdGFja1Nsb3QqIHNsb3Qp
Ci17Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JTdGFja1Nsb3RBdEluZGV4KHNsb3QtPmluZGV4KCkp
OwotfQotCi1DU3RyaW5nIHZhck5hbWUoUmVnIHJlZykKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5n
KCJSZWcuIiwgcmVnLmRlYnVnTmFtZSgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lRm9yVG1wV2l0
aEJhbmtBbmRJbmRleChCYW5rIGJhbmssIHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0
b0NTdHJpbmcoYmFuayA9PSBGUCA/ICJmIiA6ICIiLCAidG1wIiwgaW5kZXgpOwotfQotCi1DU3Ry
aW5nIHZhck5hbWUoVG1wIHRtcCkKLXsKLSAgICBpZiAodG1wLmlzUmVnKCkpCi0gICAgICAgIHJl
dHVybiB2YXJOYW1lKHRtcC5yZWcoKSk7Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JUbXBXaXRoQmFu
a0FuZEluZGV4KEFyZyh0bXApLmJhbmsoKSwgdG1wLnRtcEluZGV4KCkpOwotfQotCi19IC8vIGFu
b255bW91cyBuYW1lc3BhY2UKLQotdm9pZCBkdW1wQXNKUyhDb2RlJiBjb2RlLCBQcmludFN0cmVh
bSYgb3V0KQotewotICAgIG91dC5wcmludGxuKCJsZXQgY29kZSA9IG5ldyBDb2RlKCk7Iik7Ci0g
ICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGUuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIG91dC5wcmludGxuKCJsZXQgIiwgdmFyTmFtZUZvckJsb2NrQXRJbmRleChpKSwgIiA9IGNv
ZGUuYWRkQmxvY2soKTsiKTsKLSAgICAKLSAgICBvdXQucHJpbnRsbigibGV0IGhhc2g7Iik7Ci0K
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZS5zdGFja1Nsb3RzKCkuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgU3RhY2tTbG90KiBzbG90ID0gY29kZS5zdGFja1Nsb3RzKClbaV07Ci0g
ICAgICAgIGlmIChzbG90KSB7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZhck5h
bWUoc2xvdCksICIgPSBjb2RlLmFkZFN0YWNrU2xvdCgiLCBzbG90LT5ieXRlU2l6ZSgpLCAiLCAi
LCBzbG90LT5raW5kKCksICIpOyIpOwotICAgICAgICAgICAgaWYgKHNsb3QtPm9mZnNldEZyb21G
UCgpKQotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoc2xvdCksICIuc2V0T2Zm
c2V0RnJvbUZQKCIsIHNsb3QtPm9mZnNldEZyb21GUCgpLCAiKTsiKTsKLSAgICAgICAgICAgIG91
dC5wcmludGxuKCJoYXNoID0gIiwgdmFyTmFtZShzbG90KSwgIi5oYXNoKCk7Iik7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRsbigiaWYgKGhhc2ggIT0gIiwgc2xvdC0+anNIYXNoKCksICIpIik7Ci0g
ICAgICAgICAgICBvdXQucHJpbnRsbigiICAgIHRocm93IG5ldyBFcnJvcihcIkJhZCBoYXNoOiBc
IiArIGhhc2gpOyIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJj
b2RlLmFkZFN0YWNrU2xvdCgxLCBTcGlsbCk7Iik7Ci0gICAgfQotICAgIAotICAgIGZvckVhY2hC
YW5rKAotICAgICAgICBbJl0gKEJhbmsgYmFuaykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gY29kZS5udW1UbXBzKGJhbmspOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgb3V0LnBy
aW50bG4oCi0gICAgICAgICAgICAgICAgICAgICJsZXQgIiwgdmFyTmFtZUZvclRtcFdpdGhCYW5r
QW5kSW5kZXgoYmFuaywgaSksICIgPSBjb2RlLm5ld1RtcCgiLCBiYW5rLCAiKTsiKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgCi0gICAgb3V0LnByaW50bG4oImxldCBpbnN0OyIp
OwotICAgIG91dC5wcmludGxuKCJsZXQgYXJnOyIpOwotICAgIAotICAgIGZvciAoQmFzaWNCbG9j
ayogYmxvY2sgOiBjb2RlKSB7Ci0gICAgICAgIGZvciAoRnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3Nv
ciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludGxuKAotICAg
ICAgICAgICAgICAgIHZhck5hbWUoYmxvY2spLCAiLnN1Y2Nlc3NvcnMucHVzaChuZXcgRnJlcXVl
bnRlZEJsb2NrKCIsCi0gICAgICAgICAgICAgICAgdmFyTmFtZShzdWNjZXNzb3IuYmxvY2soKSks
ICIsICIsIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSwgIikpOyIpOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vz
c29ycygpKQotICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayksICIucHJlZGVj
ZXNzb3JzLnB1c2goIiwgdmFyTmFtZShwcmVkZWNlc3NvciksICIpOyIpOwotICAgICAgICAKLSAg
ICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgZG8gc29tZXRoaW5nIGZvciBmbGFncy4KLSAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3NTEKLSAgICAgICAgICAgIG91
dC5wcmludGxuKCJpbnN0ID0gbmV3IEluc3QoIiwgaW5zdC5raW5kLm9wY29kZSwgIik7Iik7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAg
ICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUsIEJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAoYXJnLmtpbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6SW52YWxpZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VG1wOgotICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVUbXAoIiwgdmFyTmFt
ZShhcmcudG1wKCkpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbW06
Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUlt
bSgiLCBhcmcudmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
QmlnSW1tOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVCaWdJbW0oIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSksICIsICIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZh
bHVlKCkgPj4gMzIpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaXRJ
bW06Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0
ZUJpdEltbSgiLCBhcmcudmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNl
IEFyZzo6Qml0SW1tNjQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUJpdEltbTY0KCIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVl
KCkpLCAiLCAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMy
X3Q+KGFyZy52YWx1ZSgpID4+IDMyKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNl
IEFyZzo6QWRkcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlQWRkcigiLCB2YXJOYW1lKGFy
Zy5iYXNlKCkpLCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OlN0YWNrOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVTdGFjaygiLCB2
YXJOYW1lKGFyZy5zdGFja1Nsb3QoKSksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6Q2FsbEFyZzoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlQ2FsbEFyZygiLCBhcmcub2Zmc2V0KCks
ICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkluZGV4OgotICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImFyZyA9IEFyZy5jcmVhdGVJbmRleCgiLCB2YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhck5hbWUoYXJnLmluZGV4KCkpLCAiLCAiLCBhcmcu
c2NhbGUoKSwgIiwgIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
IGNhc2UgQXJnOjpSZWxDb25kOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
ImFyZyA9IEFyZy5jcmVhdGVSZWxDb25kKCIsIGFyZy5hc1JlbGF0aW9uYWxDb25kaXRpb24oKSwg
Iik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6UmVzQ29uZDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlUmVzQ29uZCgiLCBh
cmcuYXNSZXN1bHRDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNl
IEFyZzo6RG91YmxlQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJh
cmcgPSBBcmcuY3JlYXRlRG91YmxlQ29uZCgiLCBhcmcuYXNEb3VibGVDb25kaXRpb24oKSwgIik7
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U3BlY2lhbDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlU3BlY2lhbCgpOyIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OldpZHRoQXJnOgotICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVXaWR0aEFyZygiLCBhcmcud2lk
dGgoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50bG4oImluc3QuYXJncy5wdXNoKGFyZyk7Iik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGluc3QuaGFzTm9uQXJnRWZmZWN0cygpKQotICAgICAgICAg
ICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5wYXRjaEhhc05vbkFyZ0VmZmVjdHMgPSB0cnVl
OyIpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0
LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzID0gbmV3IFNldCgpOyIpOwotICAgICAgICAgICAgICAg
IG91dC5wcmludGxuKCJpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncyA9IG5ldyBTZXQoKTsiKTsKLSAg
ICAgICAgICAgICAgICBpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkuZm9yRWFjaCgKLSAg
ICAgICAgICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFt
ZShyZWcpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg
aW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MoKS5mb3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBb
Jl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0
LmV4dHJhQ2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAiKTsiKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0LnBy
aW50bG4oImluc3QucGF0Y2hBcmdEYXRhID0gW107Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5m
b3JFYWNoQXJnKAotICAgICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xl
LCBCYW5rIGJhbmssIFdpZHRoIHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdC5wYXRjaEFyZ0RhdGEu
cHVzaCh7cm9sZTogQXJnLiIsIHJvbGUsICIsIHR5cGU6ICIsIGJhbmssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiwgd2lkdGg6ICIsIHdpZHRoLCAifSk7Iik7Ci0gICAgICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAo
aW5zdC5raW5kLm9wY29kZSA9PSBDQ2FsbCB8fCBpbnN0LmtpbmQub3Bjb2RlID09IENvbGRDQ2Fs
bCkgewotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsVHlwZSA9ICIsIGlu
c3Qub3JpZ2luLT50eXBlKCkpOwotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmND
YWxsQXJnVHlwZXMgPSBbXTsiKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAx
OyBpIDwgaW5zdC5vcmlnaW4tPm51bUNoaWxkcmVuKCk7ICsraSkKLSAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50bG4oImluc3QuY0NhbGxBcmdUeXBlcy5wdXNoKCIsIGluc3Qub3JpZ2luLT5j
aGlsZChpKS0+dHlwZSgpLCAiKTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgb3V0LnByaW50bG4oImhhc2ggPSBpbnN0Lmhhc2goKTsiKTsKLSAgICAgICAgICAg
IG91dC5wcmludGxuKCJpZiAoaGFzaCAhPSAiLCBpbnN0LmpzSGFzaCgpLCAiKSIpOwotICAgICAg
ICAgICAgb3V0LnByaW50bG4oIiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgaGFzaDogXCIgKyBo
YXNoKTsiKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShi
bG9jayksICIuYXBwZW5kKGluc3QpOyIpOwotICAgICAgICB9Ci0gICAgfQotfQotCi19IH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5oCShyZXZpc2lv
biAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEIzX0pJVCkK
LQotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Ci0KLWNsYXNzIENvZGU7Ci0KLS8vIFRoaXMgaXMgdXNl
ZCBmb3IgYmVuY2htYXJraW5nLiBWYXJpb3VzIG9wZXJhdGlvbnMgb24gQWlyIGFyZSBpbnRlcmVz
dGluZyBmcm9tIGEgYmVuY2htYXJraW5nCi0vLyBzdGFuZHBvaW50LiBXZSBjYW4gd3JpdGUgc29t
ZSBBaXIgcGhhc2VzIGluIEpTIGFuZCB0aGVuIHVzZSB0aGF0IHRvIGJlbmNobWFyayBKUy4gVGhl
IGJlbmNobWFyawotLy8gaXMgY2FsbGVkIEpTQWlyLCBhbmQgaXQncyBpbiBQZXJmb3JtYW5jZVRl
c3RzL0pTQWlyLgotdm9pZCBkdW1wQXNKUyhDb2RlJiwgUHJpbnRTdHJlYW0mKTsKLQotfSB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkFpckFsbG9j
YXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmgiCiAjaW5jbHVkZSAiQWlyQWxsb2NhdGVTdGFj
ay5oIgogI2luY2x1ZGUgIkFpckNvZGUuaCIKLSNpbmNsdWRlICJBaXJEdW1wQXNKUy5oIgogI2lu
Y2x1ZGUgIkFpckVsaW1pbmF0ZURlYWRDb2RlLmgiCiAjaW5jbHVkZSAiQWlyRml4T2J2aW91c1Nw
aWxscy5oIgogI2luY2x1ZGUgIkFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oIgpAQCAtNzMs
NiArNzIsOCBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAgICAg
IGRhdGFMb2coIkluaXRpYWwgYWlyOlxuIik7CiAgICAgICAgIGRhdGFMb2coY29kZSk7CiAgICAg
fQorICAgIAorICAgIHNpbXBsaWZ5Q0ZHKGNvZGUpOwogCiAgICAgbG93ZXJNYWNyb3MoY29kZSk7
CiAKQEAgLTEwNywyMyArMTA4LDExIEBAIHZvaWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYg
Y29kZSkKICAgICAvLyBkb2VzIHRoaW5ncyBsaWtlIGlkZW50aWZ5IHdoaWNoIGNhbGxlZS1zYXZl
cyB3ZSdyZSB1c2luZyBhbmQgc2F2ZXMgdGhlbS4KICAgICBoYW5kbGVDYWxsZWVTYXZlcyhjb2Rl
KTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6ZHVtcEFpckFzSlNCZWZvcmVBbGxvY2F0ZVN0YWNr
KCkpIHsKLSAgICAgICAgZGF0YUxvZygiRHVtcGluZyBBaXIgYXMgSlMgYmVmb3JlIGFsbG9jYXRl
U3RhY2s6XG4iKTsKLSAgICAgICAgZHVtcEFzSlMoY29kZSwgV1RGOjpkYXRhRmlsZSgpKTsKLSAg
ICAgICAgZGF0YUxvZygiQWlyIGhhc2g6ICIsIGNvZGUuanNIYXNoKCksICJcbiIpOwotICAgIH0K
LQogICAgIC8vIFRoaXMgdHVybnMgYWxsIFN0YWNrIGFuZCBDYWxsQXJnIEFyZ3MgaW50byBBZGRy
IGFyZ3MgdGhhdCB1c2UgdGhlIGZyYW1lIHBvaW50ZXIuIEl0IGRvZXMKICAgICAvLyB0aGlzIGJ5
IGZpcnN0LWZpdCBhbGxvY2F0aW5nIHN0YWNrIHNsb3RzLiBJdCBzaG91bGQgYmUgcHJldHR5IGRh
cm4gY2xvc2UgdG8gb3B0aW1hbCwgc28gd2UKICAgICAvLyBzaG91bGRuJ3QgaGF2ZSB0byB3b3Jy
eSBhYm91dCB0aGlzIHZlcnkgbXVjaC4KICAgICBhbGxvY2F0ZVN0YWNrKGNvZGUpOwogICAgIAot
ICAgIGlmIChPcHRpb25zOjpkdW1wQWlyQWZ0ZXJBbGxvY2F0ZVN0YWNrKCkpIHsKLSAgICAgICAg
ZGF0YUxvZygiRHVtcGluZyBBaXIgYWZ0ZXIgYWxsb2NhdGVTdGFjazpcbiIpOwotICAgICAgICBk
YXRhTG9nKGNvZGUpOwotICAgICAgICBkYXRhTG9nKCJBaXIgaGFzaDogIiwgY29kZS5qc0hhc2go
KSwgIlxuIik7Ci0gICAgfQotCiAgICAgLy8gSWYgd2UgY29hbGVzY2VkIG1vdmVzIHRoZW4gd2Ug
Y2FuIHVuYnJlYWsgY3JpdGljYWwgZWRnZXMuIFRoaXMgaXMgdGhlIG1haW4gcmVhc29uIGZvciB0
aGlzCiAgICAgLy8gcGhhc2UuCiAgICAgc2ltcGxpZnlDRkcoY29kZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCShyZXZpc2lvbiAyMTI5
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNjUgQEAgaW5saW5lIGJvb2wgaXNYODZVRGl2NjRW
YWxpZChjb25zdCBJbnN0JgogICAgIHJldHVybiBpc1g4NkRpdkhlbHBlclZhbGlkKGluc3QpOwog
fQogCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGNvbnN0IEluc3QmIGluc3Qp
Cit7CisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICBzd2l0Y2ggKGluc3QuYXJncy5z
aXplKCkpIHsKKyAgICBjYXNlIDM6CisgICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMF0gPT0gVG1w
KFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICBjYXNlIDU6CisgICAgICAgIHJldHVybiBpbnN0LmFy
Z3NbMV0gPT0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmIC8vIENQVShYODYpIHx8IENQVShYODZfNjQpCit9
CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoY29uc3QgSW5zdCYg
aW5zdCkKK3sKKyAgICByZXR1cm4gaW5zdC5hcmdzWzFdID09IFRtcChYODZSZWdpc3RlcnM6OmVh
eCk7Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTOFZhbGlkKGNvbnN0IEluc3Qm
IGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisK
K2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTMTZWYWxpZChjb25zdCBJbnN0JiBpbnN0KQor
eworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUg
Ym9vbCBpc0F0b21pY1N0cm9uZ0NBUzMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICBy
ZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNB
dG9taWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlz
QXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRv
bWljU3Ryb25nQ0FTOFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJh
bmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNo
QXRvbWljU3Ryb25nQ0FTMTZWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBp
c0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0Jy
YW5jaEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1
cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wg
aXNCcmFuY2hBdG9taWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAg
cmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKIH0gfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2Rl
Lm9wY29kZXMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMTcsNiArMTE3LDcgQEAgQWRkMzIgVTpHOjMyLCBVWkQ6Rzoz
MgogICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAK
KyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAgIHg4NjogVG1wLCBJ
bmRleAogCkBAIC0xMzUsOSArMTM2LDEyIEBAIHg4NjogQWRkMTYgVTpHOjE2LCBVRDpHOjE2CiA2
NDogQWRkNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRk
cgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAK
KyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJ
bmRleAogCiA2NDogQWRkNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIEltbSwgVG1wLCBU
bXAKQEAgLTE2Niw5ICsxNzAsMTIgQEAgeDg2OiBBZGRGbG9hdCBVOkY6MzIsIFVEOkY6MzIKIFN1
YjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisg
ICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAg
IHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4
CiAKIGFybTY0OiBTdWIzMiBVOkc6MzIsIFU6RzozMiwgRDpHOjMyCiAgICAgVG1wLCBUbXAsIFRt
cApAQCAtMTc2LDkgKzE4MywxMiBAQCBhcm02NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIsIEQ6Rzoz
MgogNjQ6IFN1YjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0s
IEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwg
VG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRt
cCwgSW5kZXgKIAogYXJtNjQ6IFN1YjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAs
IFRtcCwgVG1wCkBAIC0yMDQsOSArMjE0LDEyIEBAIHg4NjogU3ViRmxvYXQgVTpGOjMyLCBVRDpG
OjMyCiBOZWczMiBVWkQ6RzozMgogICAgIFRtcAogICAgIHg4NjogQWRkcgorICAgIHg4NjogSW5k
ZXgKIAogNjQ6IE5lZzY0IFVEOkc6NjQKICAgICBUbXAKKyAgICB4ODY6IEFkZHIKKyAgICB4ODY6
IEluZGV4CiAKIGFybTY0OiBOZWdhdGVEb3VibGUgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRt
cApAQCAtMzMwLDggKzM0MywxMSBAQCBBbmQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBU
bXAKICAgICB4ODY6IEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwg
SW5kZXgKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4Njog
SW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAKIDY0OiBBbmQ2NCBVOkc6NjQsIFU6Rzo2
NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMzM5LDcgKzM1NSwxMyBAQCBBbmQzMiBV
Okc6MzIsIFVaRDpHOjMyCiAKIHg4Nl82NDogQW5kNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1w
LCBUbXAKLSAgICB4ODY6IEltbSwgVG1wCisgICAgSW1tLCBUbXAKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorICAgIEFkZHIsIFRt
cAorICAgIEluZGV4LCBUbXAKIAogQW5kRG91YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6NjQKICAg
ICBUbXAsIFRtcCwgVG1wCkBAIC00NTksOCArNDgxLDExIEBAIE9yMzIgVTpHOjMyLCBVWkQ6Rzoz
MgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisg
ICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBU
bXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogCiA2NDogT3I2NCBV
Okc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDY5LDYgKzQ5NCwx
MiBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBPcjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAg
IFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2
OiBJbW0sIEluZGV4CisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAg
ICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogCiBYb3IzMiBVOkc6MzIsIFU6
RzozMiwgWkQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ4MCw4ICs1MTEsMTEgQEAgWG9y
MzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAg
IHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAK
KyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJ
bmRleAogCiA2NDogWG9yNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBU
bXAKQEAgLTQ5MCw2ICs1MjQsMTEgQEAgWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogNjQ6IFhvcjY0
IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4
ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAor
ICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJbW0sIFRt
cAogCiBhcm02NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCkBAIC00OTgsMTMgKzUzNywxNSBAQCBh
cm02NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCiB4ODY6IE5vdDMyIFVaRDpHOjMyCiAgICAgVG1w
CiAgICAgQWRkcgorICAgIEluZGV4CiAKIGFybTY0OiBOb3Q2NCBVOkc6NjQsIEQ6Rzo2NAogICAg
IFRtcCwgVG1wCiAKLXg4NjogTm90NjQgVUQ6Rzo2NAoreDg2XzY0OiBOb3Q2NCBVRDpHOjY0CiAg
ICAgVG1wCiAgICAgQWRkcgorICAgIEluZGV4CiAKIGFybTY0OiBBYnNEb3VibGUgVTpGOjY0LCBE
OkY6NjQKICAgICBUbXAsIFRtcApAQCAtNjY4LDI3ICs3MDksMzgzIEBAIExvYWQ4IFU6Rzo4LCBa
RDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOCBVOkc6OCwg
WkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogU3RvcmU4IFU6Rzo4LCBE
Okc6OAogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKICAgICB4ODY6IEltbSwgSW5kZXgK
ICAgICB4ODY6IEltbSwgQWRkcgogCitTdG9yZVJlbDggVTpHOjgsIEQ6Rzo4CisgICAgVG1wLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBB
ZGRyCisKIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRt
cAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpH
OjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBMb2FkMTYgVTpHOjE2LCBaRDpH
OjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTYgVTpHOjE2LCBa
RDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBMb2FkMTZTaWduZWRFeHRl
bmRUbzMyIFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAor
TG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAK
KyAgICBJbmRleCwgVG1wCisKIFN0b3JlMTYgVTpHOjE2LCBEOkc6MTYKICAgICBUbXAsIEluZGV4
CiAgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIK
KworU3RvcmVSZWwxNiBVOkc6MTYsIEQ6RzoxNgorICAgIFRtcCwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorCitMb2FkQWNxMzIg
VTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwg
VG1wCisKK1N0b3JlUmVsMzIgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisKKzY0OiBM
b2FkQWNxNjQgVTpHOjY0LCBaRDpHOjY0CisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAKKyAg
ICBJbmRleCwgVG1wCisKKzY0OiBTdG9yZVJlbDY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIFRtcCwg
QWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJ
bmRleAorCisjIFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4KK3g4NjogQXRvbWljU3Ryb25nQ0FT
OCBVOkc6MzIsIFVEOkc6OCwgVTpHOjgsIFVEOkc6OCwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwg
VG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBU
bXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6
RzoxNiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMz
MiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29u
ZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4
LCBUbXAKKworeDg2XzY0OiBBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2
NCwgVUQ6Rzo2NCwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJv
bmdDQVM4IFVEOkc6OCwgVTpHOjgsIFVEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRt
cCosIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVRDpHOjE2LCBVOkc6MzIs
IFVEOkc6MTYKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljU3Ryb25nQ0FTMzIgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyCisgICAgVG1wKiwg
VG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1N0cm9uZ0NB
UzY0IFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRt
cCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM4IFU6RzozMiwgVUQ6
Rzo4LCBVOkc6OCwgVUQ6Rzo4IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFk
ZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWlj
U3Ryb25nQ0FTMTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYgL2JyYW5jaAorICAg
IFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwg
SW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6
RzozMiwgVUQ6RzozMiAvYnJhbmNoCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisg
ICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEJyYW5jaEF0b21pY1N0
cm9uZ0NBUzY0IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2gKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIElu
ZGV4CisKK3g4NjogQXRvbWljQWRkOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNB
ZGQxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDMyIFU6RzozMiwgVUQ6
RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljQWRkNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1t
LCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwor
eDg2OiBBdG9taWNTdWI4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjE2IFU6
RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViMzIgVTpHOjMyLCBVRDpHOjMyCisg
ICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2XzY0OiBBdG9taWNTdWI2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIK
KyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0
b21pY0FuZDggVTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMTYgVTpHOjE2LCBV
RDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBbmQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0s
IEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODZfNjQ6IEF0b21pY0FuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIElt
bSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3I4
IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yMTYgVTpHOjE2LCBVRDpHOjE2Cisg
ICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2OiBBdG9taWNPcjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAg
IEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRv
bWljT3I2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjggVTpHOjgsIFVE
Okc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNYb3IzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hvcjY0
IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAs
IEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljTmVnOCBVRDpHOjgKKyAgICBBZGRy
CisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOZWcxNiBVRDpHOjE2CisgICAgQWRkcgorICAgIElu
ZGV4CisKK3g4NjogQXRvbWljTmVnMzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4
ODZfNjQ6IEF0b21pY05lZzY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBB
dG9taWNOb3Q4IFVEOkc6OAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDE2
IFVEOkc6MTYKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QzMiBVRDpHOjMy
CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Nl82NDogQXRvbWljTm90NjQgVUQ6Rzo2NAorICAg
IEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQ4IFVEOkc6OCwgVUQ6Rzo4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQxNiBVRDpH
OjE2LCBVRDpHOjE2CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21p
Y1hjaGdBZGQzMiBVRDpHOjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODZfNjQ6IEF0b21pY1hjaGdBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGc4IFVEOkc6OCwgVUQ6Rzo4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGcxNiBVRDpHOjE2
LCBVRDpHOjE2CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hj
aGczMiBVRDpHOjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODZfNjQ6IEF0b21pY1hjaGc2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCithcm02NDogTG9hZExpbms4IFU6Rzo4LCBaRDpHOjgKKyAgICBBZGRyLCBU
bXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTggVTpHOjgsIFpEOkc6OAor
ICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworIyBTdXBlciBjb25mdXNpbmcgZmFjdDog
dGhpcyByZXR1cm5zIDAgdG8gbWVhbiBzdWNjZXNzLCAxIHRvIG1lYW4gZmFpbHVyZS4KK2FybTY0
OiBTdG9yZUNvbmQ4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisg
ICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw4IFU6Rzo4LCBEOkc6OCwg
RVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0
OiBMb2FkTGluazE2IFU6RzoxNiwgWkQ6RzoxNgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBU
bXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMTYgVTpHOjE2LCBaRDpHOjE2CisgICAgQWRkciwgVG1w
CisgICAgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2LCBEOkc6MTYsIEVa
RDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDog
U3RvcmVDb25kUmVsMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRt
cAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmszMiBVOkc6MzIsIFpEOkc6
MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTMy
IFU6RzozMiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6
IFN0b3JlQ29uZDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAK
KyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDMyIFU6RzozMiwgRDpH
OjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKwor
YXJtNjQ6IExvYWRMaW5rNjQgVTpHOjY0LCBaRDpHOjY0CisgICAgQWRkciwgVG1wCisgICAgSW5k
ZXgsIFRtcAorCithcm02NDogTG9hZExpbmtBY3E2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRy
LCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQ2NCBVOkc6NjQsIEQ6Rzo2
NCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2Fy
bTY0OiBTdG9yZUNvbmRSZWw2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAgIFRtcCwgQWRk
ciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBEZXBlbmQzMiBVOkc6MzIsIEQ6
RzozMgorICAgIFRtcCwgVG1wCisKK2FybTY0OiBEZXBlbmQ2NCBVOkc6NjQsIEQ6Rzo2NAorICAg
IFRtcCwgVG1wCiAKIENvbXBhcmUzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAg
ICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRtcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAkocmV2aXNpb24gMjEy
OTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3Jk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTc3LDYgKzE3NywxMCBAQCB2b2lkIG9wdGltaXpl
QmxvY2tPcmRlcihDb2RlJiBjb2RlKQogICAgICAgICBjYXNlIEJyYW5jaFN1YjY0OgogICAgICAg
ICBjYXNlIEJyYW5jaE5lZzMyOgogICAgICAgICBjYXNlIEJyYW5jaE5lZzY0OgorICAgICAgICBj
YXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzg6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ry
b25nQ0FTMTY6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzI6CisgICAgICAg
IGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQ6CiAgICAgICAgICAgICBpZiAoY29kZS5maW5k
TmV4dEJsb2NrKGJsb2NrKSA9PSBibG9jay0+c3VjY2Vzc29yQmxvY2soMCkgJiYgYnJhbmNoLmFy
Z3NbMF0uaXNJbnZlcnRpYmxlKCkpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnN3YXAoYmxvY2st
PnN1Y2Nlc3NvcigwKSwgYmxvY2stPnN1Y2Nlc3NvcigxKSk7CiAgICAgICAgICAgICAgICAgYnJh
bmNoLmFyZ3NbMF0gPSBicmFuY2guYXJnc1swXS5pbnZlcnRlZCgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRl
cmZlcmVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHZvaWQgcGFkSW50
ZXJmZXJlbmNlKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJv
bGUgcm9sZSwgQmFuaywgV2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyb2xl
KSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseURlZjoKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGhh
c0Vhcmx5RGVmID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6TGF0ZVVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgc3BpbGxFdmVyeXRo
aW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlQ29sZFVz
ZToKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgQXJnOjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6
OkVhcmx5WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUu
cmVnc0luUHJpb3JpdHlPcmRlcihiYW5rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghc2V0QmVmb3JlLmdldChyZWcpICYmICFzZXRBZnRlci5nZXQocmVnKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBZnRlci5zZXQocmVnKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHJldmlz
aW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVy
YXRvci5yYgkod29ya2luZyBjb3B5KQpAQCAtNTEsMTQgKzUxLDQ5IEBAIGNsYXNzIEFyZwogICAg
ICAgICBAYmFuayA9IGJhbmsKICAgICAgICAgQHdpZHRoID0gd2lkdGgKICAgICBlbmQKLQotICAg
IGRlZiB3aWR0aENvZGUKKyAgICAKKyAgICBkZWYgc2VsZi53aWR0aENvZGUod2lkdGgpCiAgICAg
ICAgIGlmIHdpZHRoID09ICJQdHIiCiAgICAgICAgICAgICAicG9pbnRlcldpZHRoKCkiCiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICJXaWR0aCN7d2lkdGh9IgogICAgICAgICBlbmQKICAgICBl
bmQKKworICAgIGRlZiB3aWR0aENvZGUKKyAgICAgICAgQXJnLndpZHRoQ29kZSh3aWR0aCkKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5yb2xlQ29kZShyb2xlKQorICAgICAgICBjYXNlIHJv
bGUKKyAgICAgICAgd2hlbiAiVSIKKyAgICAgICAgICAgICJVc2UiCisgICAgICAgIHdoZW4gIkQi
CisgICAgICAgICAgICAiRGVmIgorICAgICAgICB3aGVuICJaRCIKKyAgICAgICAgICAgICJaRGVm
IgorICAgICAgICB3aGVuICJVRCIKKyAgICAgICAgICAgICJVc2VEZWYiCisgICAgICAgIHdoZW4g
IlVaRCIKKyAgICAgICAgICAgICJVc2VaRGVmIgorICAgICAgICB3aGVuICJVQSIKKyAgICAgICAg
ICAgICJVc2VBZGRyIgorICAgICAgICB3aGVuICJTIgorICAgICAgICAgICAgIlNjcmF0Y2giCisg
ICAgICAgIHdoZW4gIkVEIgorICAgICAgICAgICAgIkVhcmx5RGVmIgorICAgICAgICB3aGVuICJF
WkQiCisgICAgICAgICAgICAiRWFybHlaRGVmIgorICAgICAgICB3aGVuICJMVSIKKyAgICAgICAg
ICAgICJMYXRlVXNlIgorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZQorICAgICAgICBl
bmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcm9sZUNvZGUKKyAgICAgICAgQXJnLnJvbGVDb2Rl
KHJvbGUpCisgICAgZW5kCiBlbmQKIAogY2xhc3MgT3ZlcmxvYWQKQEAgLTE4Miw3ICsyMTcsNyBA
QCBkZWYgbGV4KHN0ciwgZmlsZU5hbWUpCiBlbmQKIAogZGVmIGlzUm9sZSh0b2tlbikKLSAgICB0
b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUykpXFovCisgICAgdG9r
ZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoWkQpfChVWkQpfChVQSl8KFMpfChFRCl8KEVaRCl8KExV
KSlcWi8KIGVuZAogCiBkZWYgaXNHRih0b2tlbikKQEAgLTE5MCw3ICsyMjUsNyBAQCBkZWYgaXNH
Rih0b2tlbikKIGVuZAogCiBkZWYgaXNLaW5kKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoVG1w
KXwoSW1tKXwoQmlnSW1tKXwoQml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxD
b25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpKVxaLworICAgIHRva2VuID1+IC9cQSgoVG1wKXwo
SW1tKXwoQmlnSW1tKXwoQml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25k
KXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpfChTdGF0dXNDb25kKSlcWi8KIGVuZAogCiBkZWYgaXNB
cmNoKHRva2VuKQpAQCAtMjY0LDcgKzI5OSw3IEBAIGNsYXNzIFBhcnNlcgogCiAgICAgZGVmIGNv
bnN1bWVLaW5kCiAgICAgICAgIHJlc3VsdCA9IHRva2VuLnN0cmluZwotICAgICAgICBwYXJzZUVy
cm9yKCJFeHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02NCwgVG1wLCBB
ZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgb3IgRG91YmxlQ29uZCkiKSB1bmxlc3MgaXNL
aW5kKHJlc3VsdCkKKyAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJ
bW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgQWRkciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQs
IERvdWJsZUNvbmQsIG9yIFN0YXR1c0NvbmQpIikgdW5sZXNzIGlzS2luZChyZXN1bHQpCiAgICAg
ICAgIGFkdmFuY2UKICAgICAgICAgcmVzdWx0CiAgICAgZW5kCkBAIC02MzQsMjggKzY2OSw3IEBA
IHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG92ZXJs
b2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAgIHwgYXJnLCBp
bmRleCB8Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcm9sZSA9IG5pbAotICAg
ICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUKLSAgICAgICAgICAgICAgICB3aGVuICJVIgotICAg
ICAgICAgICAgICAgICAgICByb2xlID0gIlVzZSIKLSAgICAgICAgICAgICAgICB3aGVuICJEIgot
ICAgICAgICAgICAgICAgICAgICByb2xlID0gIkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJa
RCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgIHdo
ZW4gIlVEIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZURlZiIKLSAgICAgICAgICAg
ICAgICB3aGVuICJVWkQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAg
ICAgICAgICAgICAgICB3aGVuICJVQSIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VB
ZGRyIgotICAgICAgICAgICAgICAgIHdoZW4gIlMiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUg
PSAiU2NyYXRjaCIKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJh
aXNlCi0gICAgICAgICAgICAgICAgZW5kCi0KLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1
bmN0b3IoYXJnc1sje2luZGV4fV0sIEFyZzo6I3tyb2xlfSwgI3thcmcuYmFua31QLCAje2FyZy53
aWR0aENvZGV9KTsiCisgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tp
bmRleH1dLCBBcmc6OiN7YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENv
ZGV9KTsiCiAgICAgICAgICAgICB9CiAgICAgICAgIGVuZAogICAgIH0KQEAgLTgxOSw2ICs4MzMs
NyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJS
ZWxDb25kIgogICAgICAgICAgICAgICAgIHdoZW4gIlJlc0NvbmQiCiAgICAgICAgICAgICAgICAg
d2hlbiAiRG91YmxlQ29uZCIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgogICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQg
a2luZDogI3traW5kLm5hbWV9IgogICAgICAgICAgICAgICAgIGVuZApAQCAtMTEwNSw2ICsxMTIw
LDggQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91
dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzUmVzdWx0Q29uZGl0aW9uKCkiCiAgICAgICAgICAg
ICAgICAgd2hlbiAiRG91YmxlQ29uZCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAi
YXJnc1sje2luZGV4fV0uYXNEb3VibGVDb25kaXRpb24oKSIKKyAgICAgICAgICAgICAgICB3aGVu
ICJTdGF0dXNDb25kIgorICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5k
ZXh9XS5hc1N0YXR1c0NvbmRpdGlvbigpIgogICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAg
ICAgfQogCkBAIC0xMTQ4LDI3ICsxMTY1LDcgQEAgRmlsZS5vcGVuKCJKU0Fpcl9vcGNvZGUuanMi
LCAidyIpIHsKICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tvdmVybG9hZC5zaWdu
YXR1cmUubGVuZ3RofToiIGlmIG5lZWRPdmVybG9hZFN3aXRjaAogICAgICAgICAgICAgICAgIG92
ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAgICAgICB8
IGFyZywgaW5kZXggfAotICAgICAgICAgICAgICAgICAgICByb2xlID0gbmlsCi0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgYXJnLnJvbGUKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVSIKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAgICAgICAgICAgICB3
aGVuICJEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYiCi0gICAgICAgICAg
ICAgICAgICAgIHdoZW4gIlpEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVm
IgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVRCIKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJvbGUgPSAiVXNlRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVWkQiCi0gICAgICAg
ICAgICAgICAgICAgICAgICByb2xlID0gIlVzZVpEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdo
ZW4gIlVBIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAg
ICAgICAgICAgICAgICB3aGVuICJTIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJT
Y3JhdGNoIgotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICByYWlzZQotICAgICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVu
YywgQXJnLiN7cm9sZX0sICN7YXJnLmJhbmt9UCwgI3thcmcud2lkdGh9KTsiCisgICAgICAgICAg
ICAgICAgICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7
YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aH0pOyIKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJicmVhazsiCiAgICAgICAgICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQxMyw5ICs0MTMsNiBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0
cmluZzsKICAgICB2KGJvb2wsIGR1bXBNb2R1bGVMb2FkaW5nU3RhdGUsIGZhbHNlLCBOb3JtYWws
IG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyLCBmYWxz
ZSwgTm9ybWFsLCAiZXhwb3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUgbG9hZGVyIG9iamVjdCB0byB0
aGUgZ2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dpbmciKSBcCiAgICAgXAotICAgIHYoYm9vbCwgZHVt
cEFpckFzSlNCZWZvcmVBbGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0g
ICAgdihib29sLCBkdW1wQWlyQWZ0ZXJBbGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxs
cHRyKSBcCi0gICAgXAogICAgIHYoYm9vbCwgdXNlU3VwZXJTYW1wbGVyLCBmYWxzZSwgTm9ybWFs
LCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoYm9vbCwgcmVwb3J0TExJbnRTdGF0cywgZmFsc2Us
IENvbmZpZ3VyYWJsZSwgIlJlcG9ydHMgTExJbnQgc3RhdGlzdGljcyIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302981</attachid>
            <date>2017-02-28 13:52:03 -0800</date>
            <delta_ts>2017-02-28 17:28:54 -0800</delta_ts>
            <desc>maybe the x86 part compiles now</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>256473</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMiBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAq
LzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhp
c1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAg
LTIyNDMsOCArMjI0OSw2IEBACiAJCURDMjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0
MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0
MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIw
QzFEMzQzNzcwMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBD
ZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pT
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0
QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhE
MUQwMEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1
bXBBc0pTLmggKi87IH07CiAJCURDNjA1QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERD
NjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2
MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJREM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNF
MjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgKi87IH07CkBAIC0yNzY0LDYgKzI3Njgs
MTIgQEAKIAkJMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNX
aWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNw
cDsgcGF0aCA9IGIzL0IzV2lkdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1Zh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFs
dWUuY3BwOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIz
L0IzQXRvbWljVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUx
RTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBh
dGggPSBiMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25T
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNl
cnRpb25TZXQuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFp
ckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFp
ckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5
IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQzE5ODMyRDM0MDA3RDRCMTkg
LyogRGVidWdnZXJTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWJ1
Z2dlclNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERGMTk4MzJE
OTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlw
ZVByb2ZpbGVyTG9nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3NzgsOCAr
NDc4OCw2IEBACiAJCURDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElDU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREMzRDJCMDkxRDM0MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBDZWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCURDM0QyQjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwQ2VsbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1w
QXNKUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJEdW1wQXNK
Uy5jcHA7IHBhdGggPSBiMy9haXIvQWlyRHVtcEFzSlMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRHVtcEFzSlMuaDsgcGF0aCA9IGIzL2Fp
ci9BaXJEdW1wQXNKUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYwNUI1OTFD
RTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckV2ZW50LmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2Zp
bGVyRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYwNUI1QTFDRTI2
RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBQcm9maWxlckV2ZW50Lmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlclVJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQ
cm9maWxlclVJRC5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlclVJRC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjkyLDYgKzUzMDAsOCBAQAogCQkJCTBGRUM4NEIzMUJE
QUNEODgwMDgwRkY3NCAvKiBhaXIgKi8sCiAJCQkJMEZFQzg0QjQxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzQXJndW1lbnRSZWdWYWx1ZS5jcHAgKi8sCiAJCQkJMEZFQzg0QjUxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzQXJndW1lbnRSZWdWYWx1ZS5oICovLAorCQkJCTBGMkM2M0IzMUU2MzQzRTgwMEMxMzgz
OSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLywKKwkJCQkwRjJDNjNCNDFFNjM0M0U4MDBDMTM4Mzkg
LyogQjNBdG9taWNWYWx1ZS5oICovLAogCQkJCTBGMkM2M0FCMUU2MEFFM0MwMEMxMzgzOSAvKiBC
M0JhbmsuY3BwICovLAogCQkJCTBGMkM2M0FDMUU2MEFFM0MwMEMxMzgzOSAvKiBCM0JhbmsuaCAq
LywKIAkJCQkwRkVDODRCNjFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrLmNwcCAqLywK
QEAgLTUzNTQsNiArNTM2NCw3IEBACiAJCQkJMEZFQzg0Q0QxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
RnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg0Q0UxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
R2VuZXJhdGUuY3BwICovLAogCQkJCTBGRUM4NENGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVy
YXRlLmggKi8sCisJCQkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZFQzg0RDAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2Vu
ZXJpY0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NUJGMUJFMTY3QTAwMDgwRkY3NCAv
KiBCM0hlYXBSYW5nZS5jcHAgKi8sCiAJCQkJMEZFQzg1QzAxQkUxNjdBMDAwODBGRjc0IC8qIEIz
SGVhcFJhbmdlLmggKi8sCkBAIC01NDY5LDYgKzU0ODAsOCBAQAogCQkJCTBGNjRFQUYyMUM0RUNE
MDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggKi8sCiAJCQkJMEZFQzg1NEMxQkRBQ0RDNzAw
ODBGRjc0IC8qIEFpckJhc2ljQmxvY2suY3BwICovLAogCQkJCTBGRUM4NTREMUJEQUNEQzcwMDgw
RkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmggKi8sCisJCQkJMEYyQzYzQjkxRTYzNDQwODAwQzEzODM5
IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLywKKwkJCQkwRjJDNjNCQTFFNjM0NDA4MDBD
MTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkIzODc4QjFCRkJDNDRE
MDBFM0FCMUUgLyogQWlyQmxvY2tXb3JrbGlzdC5oICovLAogCQkJCTBGNjE4MzIwMUM0NUJGMDcw
MDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTBGNjE4MzIxMUM0
NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKQEAgLTU0ODAsOCAr
NTQ5Myw2IEBACiAJCQkJMEYxMEYxQTIxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oICov
LAogCQkJCTc5QUJCMTdCMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuY3BwICov
LAogCQkJCTc5QUJCMTdDMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuaCAqLywK
LQkJCQlEQzQ1NEI4QTFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovLAotCQkJ
CURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oICovLAogCQkJCTBGNDU3
MDM2MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgKi8sCiAJCQkJ
MEY0NTcwMzcxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi8sCiAJ
CQkJMEY2MTgzMjMxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVtaXRTaHVmZmxlLmNwcCAqLywKQEAg
LTczMjYsNiArNzMzNyw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTBGMUZFNTFCMTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oICovLAorCQkJCTBG
MkM2M0JGMUU2NjBFQTUwMEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCAqLywK
IAkJCQk4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
ICovLAogCQkJCTBGMzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UuaCAqLywKIAkJCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRB
c3NlbWJsZXIuaCAqLywKQEAgLTczNTQsOCArNzM2Niw4IEBACiAJCQkJODZDNTY4REUxMUEyMTNF
RTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovLAogCQkJCUZFNjhDNjM1MUI5MERE
RDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovLAogCQkJCUZFNjhDNjM2
MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLywKLQkJCQk4NjAx
NjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQk4NjAx
NjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLywKKwkJCQk4
NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQlB
N0E0QUUwNzE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwICov
LAogCQkJCTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oICovLAogCQkJCTY1ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbC5oICovLApAQCAtNzk0Myw3ICs3OTU1LDYgQEAKIAkJCQkwRkVDODU3NDFC
REFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkVDODU3NjFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJREM0NTRCOEQxRDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4MzJEMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0
U2h1ZmZsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0REUxQ0YxQzRDMUI1NDAwNEQ2QzExIC8q
IEFpckZpeE9idmlvdXNTcGlsbHMuaCBpbiBIZWFkZXJzICovLApAQCAtNzk1Niw2ICs3OTY3LDcg
QEAKIAkJCQkwRkVDODU4MDFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzg1ODExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkRGNjdENzFEOURDNDQyMDAxQjk4MjUgLyogQWlyS2luZC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQkMxRTYzNDQwQzAwQzEzODM5IC8qIEFpckJsb2NrSW5z
ZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0RDQzODFDMDAxNjFDMDA4MUQ2NjMg
LyogQWlyTGl2ZW5lc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTM0QzFBMUM0QjM5QUUwMDAz
QTUxMiAvKiBBaXJMb2dSZWdpc3RlclByZXNzdXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYx
ODMyRjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmggaW4gSGVhZGVy
cyAqLywKQEAgLTgwNDcsNiArODA1OSw3IEBACiAJCQkJNDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4
IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVCMzFCREVE
OTU3MDA4MEZGNzQgLyogQjNDb25zdFB0clZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMz
OERGNjFCRTkzRDU1MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjJDNjNCODFFNjM0M0Y3MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRp
b25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4RTBFMUJGMDI3NkMwMDEzQzg4RiAvKiBC
M0RhdGFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzRkNGQzFDMTYyNUJFMDAzMjNG
NjcgLyogQjNEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCOEFEOTFDNEVEREEy
MDA5NjkwNTIgLyogQjNEdXBsaWNhdGVUYWlscy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzY2LDYg
KzgzNzksNyBAQAogCQkJCTBGMzkyQzhBMUI0NjE4ODQwMDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6
ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUzIC8qIERGR09T
UkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVFMTcxNzhF
NzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMkM2M0I3MUU2MzQzRUQwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjYyMzc5ODFBRTQ1Q0E3MDBENDAyRUEgLyogREZHUGhhbnRvbUluc2VydGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1QzE0RUY5MEFGMDBDNzI1MzIgLyogREZH
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VCMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdQaGlDaGlsZHJlbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzkyLDYgKzk4MDYsNyBAQAogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTBGRkE1NDk3
MTZCODgzNTAwMEIzQTk4MiAvKiBBNjRET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
MkM2M0MwMUU2NjBFQTcwMEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUFENDkzN0MzMUREQkU2MTQwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVs
ZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkg
LyogQWJzdHJhY3RQQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzcwQjRGNTFCRjI2MjAyMDA1
QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTk4MDIsNyArOTgxNyw2IEBACiAJCQkJMEZFQzg1NzMxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckNDYWxsU3BlY2lhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVD
ODU3NTFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjYxODMyQjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCURDNDU0QjhDMUQwMEU4MjIwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjQ1NzAzODFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENv
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MTgzMkMxQzQ1QkYwNzAwNzI0NTBCIC8qIEFp
ckVtaXRTaHVmZmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNERFMUNFMUM0QzFCNTQwMDRE
NkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAyNDgs
NiArMTAyNjIsNyBAQAogCQkJCTlFNzI5NDA3MTkwRjAxQTUwMDFBOTFCNSAvKiBJbml0aWFsaXpl
VGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTNFNUI3MTg1QjhCRDMwMDdFOTVB
RCAvKiBJbmplY3RlZFNjcmlwdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTE0QjJDMjE4NUE2
ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGMkM2M0I2MUU2MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1OEUzNTkxMTg2MERFQ0YwMDFGMjRGRSAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1Q0ExODVGOTYyNDAwN0U5NUFEIC8qIEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTg0MEUyMDE4N0I3Qjg2
MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MDI2Niw2ICsxMDI4MSw3IEBACiAJCQkJRTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMyNDM4
QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1MEU0QjYxMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQkIxRTYzNDQwQTAwQzEzODM5IC8q
IEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NTE2NUQyMUJE
RjBCOTgwMDNCNzVDMSAvKiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0YxMDdFQzM3NjAwNDI3QTQ4IC8qIEludGVy
bmFsRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIiAvLyBIYXZlIHRvIGJyZWFrIHdpdGgg
c3R5bGUgYmVjYXVzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggaXMgYSBzaGFkeSBoZWFkZXIu
CisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN0
YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAg
ICBjYXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdWNjZXNzOgorICAgICAgICBvdXQu
cHJpbnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlckJhc2U6OkZhaWx1cmU6CisgICAgICAgIG91dC5wcmludCgiRmFpbHVyZSIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTQt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1JhbmRvbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDggKzUxLDI4
IEBAIG5hbWVzcGFjZSBERkcgewogc3RydWN0IE9TUkV4aXQ7CiB9CiAKK2NsYXNzIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXR1c0NvbmRpdGlvbiB7
CisgICAgICAgIFN1Y2Nlc3MsCisgICAgICAgIEZhaWx1cmUKKyAgICB9OworICAgIAorICAgIHN0
YXRpYyBTdGF0dXNDb25kaXRpb24gaW52ZXJ0KFN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisg
ICAgeworICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbikgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6
CisgICAgICAgICAgICByZXR1cm4gRmFpbHVyZTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAg
ICAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgfQorfTsKKwog
dGVtcGxhdGUgPGNsYXNzIEFzc2VtYmxlclR5cGUsIGNsYXNzIE1hY3JvQXNzZW1ibGVyVHlwZT4K
LWNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgeworY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlciA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZSB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1i
bGVyVHlwZT4gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlclR5cGU7CiAgICAgdHlwZWRlZiBBc3NlbWJs
ZXJUeXBlIEFzc2VtYmxlclR5cGVfVDsKQEAgLTExMDgsMyArMTEyOSwxNiBAQCBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxF
UikKIAogfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCituYW1l
c3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdGF0dXND
b25kaXRpb24pOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBU1NF
TUJMRVIpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEz
Niw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMy
OyAvLyBUaGlzIGlzIHN1cGVyIHVzZWZ1bCBmb3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8v
IFV0aWxpdGllcyB1c2VkIGJ5IHRoZSBERkcgSklULgorICAgIHVzaW5nIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXJCYXNlOjppbnZlcnQ7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZl
cnQ7CiAgICAgCiAgICAgc3RhdGljIERvdWJsZUNvbmRpdGlvbiBpbnZlcnQoRG91YmxlQ29uZGl0
aW9uIGNvbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzEsNiArMTcxLDExIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAg
fQogCisgICAgdm9pZCBhZGQzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMu
aW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhZGQzMihSZWdpc3Rl
cklEIHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbF9y
bShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwpAQCAtMjUxLDE2ICsyNTYsNzEgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX3JtKHNyYywgZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYW5kd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKwor
ICAgIHZvaWQgYW5kMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRl
c3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kOChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kOChSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
bmRiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCiAgICAgdm9pZCBhbmQzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmQzMihCYXNlSW5kZXggc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9p
ZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9pbShpbW0ubV92
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X2ltKHN0YXRpY19j
YXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBhbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8aW50
MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5k
Yl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9pbShzdGF0
aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhbmQz
MihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIGlmIChvcDEgPT0gb3AyKQpAQCAtNDU2LDYgKzUxNiwzMSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm5lZ2xfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsK
ICAgICB9CiAKKyAgICB2b2lkIG5lZzMyKEJhc2VJbmRleCBzcmNEZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UsIHNyY0Rl
c3QuaW5kZXgsIHNyY0Rlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnMTYoQWRkcmVz
cyBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnd19tKHNyY0Rlc3Qub2Zm
c2V0LCBzcmNEZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnMTYoQmFzZUluZGV4IHNy
Y0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQs
IHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisg
ICAgdm9pZCBuZWc4KEFkZHJlc3Mgc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm5lZ2JfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IG5lZzgoQmFzZUluZGV4IHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdi
X20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5z
Y2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcnIoc3JjLCBkZXN0KTsKQEAg
LTQ3MSwxNiArNTU2LDcxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9y
bF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUp
OworICAgIH0KKworICAgIHZvaWQgb3IxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
b3I4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5vcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2
b2lkIG9yOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5vcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4
LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoQWRkcmVzcyBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9tcihzcmMub2Zmc2V0
LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKEJhc2VJbmRleCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9tcihzcmMu
b2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwog
ICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci5vcmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbShpbW0u
bV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19pbShzdGF0aWNf
Y2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OworICAgIH0KKworICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19pbShzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9p
bShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmJfaW0oc3RhdGljX2Nh
c3Q8aW50OF90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihSZWdp
c3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIGlmIChvcDEgPT0gb3AyKQpAQCAtNjU0LDE2ICs3OTQsNzEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nh
c3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+
KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisg
ICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwor
ICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJ3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5t
X3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBzdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9pbShzdGF0
aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIz
MihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIuc3VibF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9p
ZCBzdWIzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zdWJsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5z
Y2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yndfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoUmVnaXN0
ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmJf
cm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjMy
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN1Ymxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5k
ZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yndfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIHN1YjgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3ViYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5k
ZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfcnIoc3Jj
LCBkZXN0KTsKQEAgLTY3Nyw2ICs4NzIsNTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3Nl
bWJsZXIueG9ybF9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAg
fQogCisgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9pbShpbW0ubV92
YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7Cisg
ICAgfQorCisgICAgdm9pZCB4b3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3Zh
bHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci54b3J3X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0Lmlu
ZGV4LCBkZXN0LnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9yd19pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwg
ZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50
OF90PihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9pbShpbW0ubV92YWx1ZSwgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4KFRydXN0ZWRJbW0z
MiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0
aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBk
ZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1
ZSA9PSAtMSkKQEAgLTY5MCwxMSArOTI5LDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIueG9ybF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZv
aWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIueG9ybF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5k
ZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMs
IEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfcm0oc3JjLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFJlZ2lzdGVy
SUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcndf
cm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsK
KyAgICB9CisKKyAgICB2b2lkIHhvcjgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQg
eG9yMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KICAgICAK
KyAgICB2b2lkIHhvcjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRl
eCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCB4b3IzMihSZWdpc3Rl
cklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGlmIChvcDEgPT0gb3AyKQpAQCAtNzQxLDYgKzEwMTAsMzEgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5ub3RsX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAg
dm9pZCBub3QzMihCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5v
dGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAg
ICB9CisKKyAgICB2b2lkIG5vdDE2KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IG5vdDE2KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90d19t
KGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KworICAgIHZvaWQgbm90OChBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5ub3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3Q4
KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAg
IHZvaWQgc3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAg
IHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3FydHNkX3JyKHNyYywgZHN0KTsKQEAgLTEwNzEsNDIg
KzEzNjUsMjMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggYWRkcmVzcykKICAgICB7Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAgLy8gT24gMzIt
Yml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKLSAg
ICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEKLSAgICAg
ICAgaWYgKHNyYyA+PSA0KSB7Ci0gICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lz
dGVyLgotICAgICAgICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRk
cmVzcyk7Ci0KLSAgICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0
byBwZXJmb3JtIHRoZSBzdG9yZS4KLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7Ci0gICAgICAgICAgICBzd2FwKHNy
YywgdGVtcCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAg
ICBtX2Fzc2VtYmxlci5tb3Z3X3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTE2
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotI2lmIENQVShYODYpCi0g
ICAgICAgIC8vIE9uIDMyLWJpdCB4ODYgd2UgY2FuIG9ubHkgc3RvcmUgZnJvbSB0aGUgZmlyc3Qg
NCByZWdpc3RlcnM7Ci0gICAgICAgIC8vIGVzcC4uZWRpIGFyZSBtYXBwZWQgdG8gdGhlICdoJyBy
ZWdpc3RlcnMhCi0gICAgICAgIGlmIChzcmMgPj0gNCkgewotICAgICAgICAgICAgLy8gUGljayBh
IHRlbXBvcmFyeSByZWdpc3Rlci4KLSAgICAgICAgICAgIFJlZ2lzdGVySUQgdGVtcCA9IGdldFVu
dXNlZFJlZ2lzdGVyKGFkZHJlc3MpOwotCi0gICAgICAgICAgICAvLyBTd2FwIHRvIHRoZSB0ZW1w
b3JhcnkgcmVnaXN0ZXIgdG8gcGVyZm9ybSB0aGUgc3RvcmUuCi0gICAgICAgICAgICBzd2FwKHNy
YywgdGVtcCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3JtKHRlbXAsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgbV9hc3NlbWJsZXIu
bW92d19ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAg
IHZvaWQgc3RvcmUxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1f
dmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlMTYoVHJ1c3RlZEltbTMyIGltbSwg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0
aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UpOworICAgIH0KIAogICAgIC8vIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbjoKICAgICAvLwpA
QCAtMjc0Myw3NCArMzAxOCw4MzggQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbSgwLCAwLCBYODZSZWdpc3RlcnM6OmVzcCk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
IH0pOworICAgIH0KIAotICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVu
dHMgbW90aW9uIG9mIG5vcm1hbCBzdG9yZXMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgotICAg
IHZvaWQgc3RvcmVGZW5jZSgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAg
ICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICAv
LyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwg
bG9hZHMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgotICAgIHZvaWQgbG9hZEZlbmNlKCkKKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQs
IGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0
aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHZvaWQgYXRvbWlj
U3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKICAgICB7Ci0gICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGlu
c3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJs
ZUFkZHJlc3MoKSk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
IH0pOwogICAgIH0KLSAgICAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVu
dFNpemUoKQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBY
ODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVy
LmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7
CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6
cGF0Y2hhYmxlSnVtcFNpemUoKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1Bv
aW50Um91bmRpbmcoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAg
ewotICAgICAgICBpZiAoc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90
Q2hlY2tlZCkKLSAgICAgICAgICAgIHVwZGF0ZUVheDFFY3hGbGFncygpOwotICAgICAgICByZXR1
cm4gc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAgICAgICBh
dG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhj
aGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAg
fQogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNBVlgoKQorICAgIHZvaWQgYXRvbWljU3Ryb25n
Q0FTOChSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBC
YXNlSW5kZXggYWRkcmVzcykKICAgICB7Ci0gICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlz
dGVyaW91cyByZWdyZXNzaW9ucyBhbmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUu
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVk
QW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0p
OwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hGbGFncygpCisgICAgdm9p
ZCBhdG9taWNTdHJvbmdDQVMxNihSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAgICBpbnQgZmxhZ3Mg
PSAwOwotI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgICAgIGludCBjcHVJbmZvWzRdOwotICAgICAg
ICBfX2NwdWlkKGNwdUluZm8sIDB4MSk7Ci0gICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsKLSNl
bGlmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICBhc20g
KAotICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgotICAgICAgICAgICAgImNwdWlkOyIK
LSAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdz
KQotICAgICAgICAgICAgOgotICAgICAgICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3giLCAi
JWVkeCIKLSAgICAgICAgICAgICk7Ci0jZWxzZQotICAgICAgICBhc20gKAotICAgICAgICAgICAg
Im1vdmwgJDB4MSwgJSVlYXg7IgotICAgICAgICAgICAgInB1c2hsICUlZWJ4OyIKLSAgICAgICAg
ICAgICJjcHVpZDsiCi0gICAgICAgICAgICAicG9wbCAlJWVieDsiCi0gICAgICAgICAgICAibW92
bCAlJWVjeCwgJTA7IgotICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgIDoK
LSAgICAgICAgICAgIDogIiVlYXgiLCAiJWVjeCIsICIlZWR4IgotICAgICAgICAgICAgKTsKLSNl
bmRpZgorICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1f
YXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZd
IHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xf
cm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
YXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
WyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NB
UzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICBK
dW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4
cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9
KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9u
Z0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xf
cm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM4KFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsK
KyAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFs
dWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTOChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3
VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FT
MTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
bmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFr
Q0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21p
Y1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0
b21pY1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1
bXAgYnJhbmNoQXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFu
Y2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFu
ZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRv
bWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dl
YWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3Vs
dCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtD
QVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdW
YWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMzIo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1
ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFkZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNBZGQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ4KGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ4
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIGFkZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIGFkZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRk
MTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNBZGQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhZGQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY0FkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQzMihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFk
ZDMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhZGQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1N1YjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1
YjgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1N1YjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBzdWIxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N1YjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0
ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWIxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgYW5kOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY0FuZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDgo
cmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFJlZ2lzdGVy
SUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYW5kOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYoaW1tLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgYW5kMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQx
NihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY0FuZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYocmVnLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1tMzIg
aW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMyKGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5k
MzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdp
c3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIGFuZDMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljT3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I4KGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBvcjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoUmVn
aXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgb3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljT3I4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I4KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9y
MTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljT3IxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgb3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY09yMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMzIoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFJlZ2lzdGVySUQgcmVnLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMy
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1hvcjgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1hvcjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IxNihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIo
cmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc4KEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVn
OChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc4KEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc4
KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzE2KEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMTYo
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMTYoQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2
KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzMyKEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMzIo
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMzIoQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMy
KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDgoQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDgoQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDgoYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MTYoQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QxNihhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QxNihCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MzIoQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QzMihhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QzMihCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkOChSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWGNoZ0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhhZGR3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueGFkZHdfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hn
QWRkMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNY
Y2hnQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9ybShyZWcs
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBtX2Fzc2VtYmxlci54Y2hnYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1hjaGcxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShy
ZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1hjaGcxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGd3X3Jt
KHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzMyKFJlZ2lzdGVySUQg
cmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzMyKFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBsb2FkQWNxOChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbG9hZDgoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOChC
YXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkOChzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihB
ZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDhTaWduZWRF
eHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWdu
ZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRBY3ExNihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbG9hZDE2KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEJh
c2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNihzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIo
QWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNlNpZ25l
ZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTZT
aWduZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBsb2FkQWNxMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGxvYWQzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3Ez
MihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMzIo
c3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBzdG9yZTgoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBzdG9yZVJlbDgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgc3RvcmU4KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4
KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4
KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUxNihzcmMsIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHN0b3JlUmVsMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgc3RvcmUxNihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0
b3JlUmVsMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAg
ICBzdG9yZTE2KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMsIGRlc3QpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHN0b3JlUmVsMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBzdG9yZTMyKGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIC8vIFdlIHRh
a2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBzdG9yZXMu
IFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgorICAgIHZvaWQgc3RvcmVGZW5jZSgpCisgICAgewor
ICAgIH0KKworICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90
aW9uIG9mIG5vcm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBs
b2FkRmVuY2UoKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1
bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwg
ZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVt
cChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1
dGFibGVBZGRyZXNzKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1
bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qg
cGF0Y2hhYmxlSnVtcFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6
cGF0Y2hhYmxlSnVtcFNpemUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zs
b2F0aW5nUG9pbnRSb3VuZGluZygpCisgICAgeworICAgICAgICBpZiAoc19zc2U0XzFDaGVja1N0
YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkKKyAgICAgICAgICAgIHVwZGF0ZUVh
eDFFY3hGbGFncygpOworICAgICAgICByZXR1cm4gc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlE
Q2hlY2tTdGF0ZTo6U2V0OworICAgIH0KKworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQVZYKCkK
KyAgICB7CisgICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlzdGVyaW91cyByZWdyZXNzaW9u
cyBhbmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUuCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAg
IHsKKyAgICAgICAgaW50IGZsYWdzID0gMDsKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgICAgICBp
bnQgY3B1SW5mb1s0XTsKKyAgICAgICAgX19jcHVpZChjcHVJbmZvLCAweDEpOworICAgICAgICBm
bGFncyA9IGNwdUluZm9bMl07CisjZWxpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCisjaWYgQ1BV
KFg4Nl82NCkKKyAgICAgICAgYXNtICgKKyAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIK
KyAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAg
ICAgICAgICAgOiAiPWciIChmbGFncykKKyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVl
YXgiLCAiJWVieCIsICIlZWN4IiwgIiVlZHgiCisgICAgICAgICAgICApOworI2Vsc2UKKyAgICAg
ICAgYXNtICgKKyAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKKyAgICAgICAgICAgICJw
dXNobCAlJWVieDsiCisgICAgICAgICAgICAiY3B1aWQ7IgorICAgICAgICAgICAgInBvcGwgJSVl
Yng7IgorICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAgICAgICAgIDogIj1nIiAo
ZmxhZ3MpCisgICAgICAgICAgICA6CisgICAgICAgICAgICA6ICIlZWF4IiwgIiVlY3giLCAiJWVk
eCIKKyAgICAgICAgICAgICk7CisjZW5kaWYKICNlbmRpZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xB
TkcpCiAgICAgICAgIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDE5KSkgPyBD
UFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CiAgICAgICAgIHNf
YXZ4Q2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDI4KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNl
dCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CkBAIC0yODMxLDYgKzM4NzAsMTggQEAgcHJvdGVj
dGVkOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8WDg2QXNzZW1ibGVyOjpDb25kaXRpb24+
KGNvbmQpOwogICAgIH0KIAorICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlv
bihTdGF0dXNDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZCkgewor
ICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpD
b25kaXRpb25FOworICAgICAgICBjYXNlIEZhaWx1cmU6CisgICAgICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjpDb25kaXRpb25ORTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25F
OworICAgIH0KKwogICAgIHZvaWQgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICNpZiBDUFUoWDg2KQpAQCAtMjkyNSw2ICszOTc2LDM1
IEBAIHByb3RlY3RlZDoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoc2l6ZU9mUmVnaXN0ZXIp
LCBkc3QpOwogICAgICAgICBzcmNJc05vblplcm8ubGluayh0aGlzKTsKICAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUyhTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCByZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVk
QW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgZnVuYygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZS
ZWdpc3RlcnM6OmVheCk7CisgICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgcmVzdWx0
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWlj
U3Ryb25nQ0FTKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMp
CisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVh
eCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVuYygpOworICAgICAg
ICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NB
UyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29u
c3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4
NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBm
dW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4
KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25k
KSkpOworICAgIH0KIAogcHJpdmF0ZToKICAgICAvLyBPbmx5IE1hY3JvQXNzZW1ibGVyWDg2IHNo
b3VsZCBiZSB1c2luZyB0aGUgZm9sbG93aW5nIG1ldGhvZDsgU1NFMiBpcyBhbHdheXMgYXZhaWxh
YmxlIG9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNjQsMTEgKzI2NCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
YXNzZW1ibGVyLmFkZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAor
ICAgIHZvaWQgYWRkNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4
LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgYWRkNjQoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDY0KFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKICAgICB2b2lkIGFkZDY0KEFic29sdXRlQWRkcmVzcyBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzcmMubV9wdHIpLCBz
Y3JhdGNoUmVnaXN0ZXIoKSk7CkBAIC0zMDYsNiArMzE2LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gMSkKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmluY3FfbShhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkcV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7
CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lz
dGVyKCkpOwpAQCAtMzQyLDExICszNjAsNDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRxX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YW5kcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2Nh
bGUpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJh
c2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zmc2V0
LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZv
aWQgYW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pcihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pbShpbW0ubV92YWx1
ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCiAgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0
KQogICAgIHsKICAgICAgICAgaW50cHRyX3QgaW50VmFsdWUgPSBpbW0uYXNJbnRwdHIoKTsKQEAg
LTU1MiwxMSArNjAwLDUxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVncV9yKGRl
c3QpOwogICAgIH0KIAorICAgIHZvaWQgbmVnNjQoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubmVncV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKwor
ICAgIHZvaWQgbmVnNjQoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5uZWdxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vcnFfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAK
KyAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
LCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoQWRkcmVz
cyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9t
cihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KEJh
c2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3Qp
OworICAgIH0KKworICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9pbShpbW0u
bV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgc3Jj
RGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptYXgoKQpAQCAtNjE5LDE2ICs3MDcsMzEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9pbShpbW0ubV92
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9tcihzcmMub2Zmc2V0LCBz
cmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChCYXNlSW5kZXggc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNyYy5v
ZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAg
ICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIuc3VicV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAg
IH0KIAorICAgIHZvaWQgc3ViNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yNjQoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LnhvcnFfcnIoc3JjLCBkZXN0KTsKQEAgLTY1MSw2ICs3NTQsMzEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci54b3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAg
fQogCisgICAgdm9pZCB4b3I2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChBZGRy
ZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9y
cV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB4b3I2
NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwg
ZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX2ltKGltbS5tX3ZhbHVlLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9y
cV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54b3JxX2lyKGltbS5t
X3ZhbHVlLCBzcmNEZXN0KTsKQEAgLTY2Niw2ICs3OTQsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5ub3RxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAg
dm9pZCBub3Q2NChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5v
dHFfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAg
ICB9CisKICAgICB2b2lkIGxvYWQ2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsKQEAgLTcyNSw2ICs4NTgsMTEgQEAgcHVibGljOgogICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZxX2kzMm0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMy
bShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02
NCBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF8zMl82NChpbW0ubV92YWx1ZSkpIHsKQEAgLTEyOTQsNyArMTQzMiwyNTUgQEAg
cHVibGljOgogICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1t
UHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNo
UmVnaXN0ZXIoKSksIG1hc2s4KTsKICAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdD
QVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
cmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25n
Q0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3Vs
dCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0p
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1f
YXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQogCisgICAgSnVt
cCBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBl
Y3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5j
aEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRB
bmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJv
bmdDQVM2NChjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3Vs
dCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywg
cmVzdWx0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0
b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVz
cyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNBZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFk
ZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkNjQoVHJ1
c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQocmVnLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFkZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
U3ViNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2NChpbW0sIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2
NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIHN1YjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljU3ViNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2NChyZWcsIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgYW5kNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2
NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgYW5kNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNPcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9y
NjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNPcjY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
eG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYb3I2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVn
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNOZWc2NChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y05lZzY0KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBuZWc2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNOb3Q2NChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y05vdDY0KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBub3Q2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYY2hnQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZHFfcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkcV9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJl
c3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc2NChSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc2NChSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgbG9hZEFjcTY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNx
NjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDY0
KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU2NChzcmMsIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHN0b3JlUmVsNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgc3RvcmU2NChpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0
b3JlUmVsNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAg
ICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQorICAgIAogICAgIHZvaWQgdHJ1bmNhdGVEb3Vi
bGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5jdnR0c2Qyc2lxX3JyKHNyYywgZGVzdCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTAsMTYgKzE5MCwyMCBAQCBwcml2YXRlOgogICAg
ICAgICBPUF9BRERfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgwMSwKICAgICAgICAgT1Bf
QUREX0d2RXYgICAgICAgICAgICAgICAgICAgICA9IDB4MDMsCiAgICAgICAgIE9QX0FERF9FQVhJ
diAgICAgICAgICAgICAgICAgICAgPSAweDA1LAorICAgICAgICBPUF9PUl9FdkdiICAgICAgICAg
ICAgICAgICAgICAgID0gMHgwOCwKICAgICAgICAgT1BfT1JfRXZHdiAgICAgICAgICAgICAgICAg
ICAgICA9IDB4MDksCiAgICAgICAgIE9QX09SX0d2RXYgICAgICAgICAgICAgICAgICAgICAgPSAw
eDBCLAogICAgICAgICBPUF9PUl9FQVhJdiAgICAgICAgICAgICAgICAgICAgID0gMHgwRCwKICAg
ICAgICAgT1BfMkJZVEVfRVNDQVBFICAgICAgICAgICAgICAgICA9IDB4MEYsCisgICAgICAgIE9Q
X0FORF9FdkdiICAgICAgICAgICAgICAgICAgICAgPSAweDIwLAogICAgICAgICBPUF9BTkRfRXZH
diAgICAgICAgICAgICAgICAgICAgID0gMHgyMSwKICAgICAgICAgT1BfQU5EX0d2RXYgICAgICAg
ICAgICAgICAgICAgICA9IDB4MjMsCisgICAgICAgIE9QX1NVQl9FdkdiICAgICAgICAgICAgICAg
ICAgICAgPSAweDI4LAogICAgICAgICBPUF9TVUJfRXZHdiAgICAgICAgICAgICAgICAgICAgID0g
MHgyOSwKICAgICAgICAgT1BfU1VCX0d2RXYgICAgICAgICAgICAgICAgICAgICA9IDB4MkIsCiAg
ICAgICAgIE9QX1NVQl9FQVhJdiAgICAgICAgICAgICAgICAgICAgPSAweDJELAogICAgICAgICBQ
UkVfUFJFRElDVF9CUkFOQ0hfTk9UX1RBS0VOICAgID0gMHgyRSwKKyAgICAgICAgT1BfWE9SX0V2
R2IgICAgICAgICAgICAgICAgICAgICA9IDB4MzAsCiAgICAgICAgIE9QX1hPUl9Fdkd2ICAgICAg
ICAgICAgICAgICAgICAgPSAweDMxLAogICAgICAgICBPUF9YT1JfR3ZFdiAgICAgICAgICAgICAg
ICAgICAgID0gMHgzMywKICAgICAgICAgT1BfWE9SX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9
IDB4MzUsCkBAIC0yMjMsNiArMjI3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfR1JPVVAxX0V2
SWIgICAgICAgICAgICAgICAgICA9IDB4ODMsCiAgICAgICAgIE9QX1RFU1RfRWJHYiAgICAgICAg
ICAgICAgICAgICAgPSAweDg0LAogICAgICAgICBPUF9URVNUX0V2R3YgICAgICAgICAgICAgICAg
ICAgID0gMHg4NSwKKyAgICAgICAgT1BfWENIR19FdkdiICAgICAgICAgICAgICAgICAgICA9IDB4
ODYsCiAgICAgICAgIE9QX1hDSEdfRXZHdiAgICAgICAgICAgICAgICAgICAgPSAweDg3LAogICAg
ICAgICBPUF9NT1ZfRWJHYiAgICAgICAgICAgICAgICAgICAgID0gMHg4OCwKICAgICAgICAgT1Bf
TU9WX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4ODksCkBAIC0yNTIsNiArMjU3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgUFJFX1NTRV9GMiAgICAgICAgICAgICAgICAgICAgICA9IDB4RjIs
CiAgICAgICAgIFBSRV9TU0VfRjMgICAgICAgICAgICAgICAgICAgICAgPSAweEYzLAogICAgICAg
ICBPUF9ITFQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHhGNCwKKyAgICAgICAgT1BfR1JP
VVAzX0ViICAgICAgICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9QX0dST1VQM19FYkli
ICAgICAgICAgICAgICAgICAgPSAweEY2LAogICAgICAgICBPUF9HUk9VUDNfRXYgICAgICAgICAg
ICAgICAgICAgID0gMHhGNywKICAgICAgICAgT1BfR1JPVVAzX0V2SXogICAgICAgICAgICAgICAg
ICA9IDB4RjcsIC8vIE9QX0dST1VQM19FdiBoYXMgYW4gaW1tZWRpYXRlLCB3aGVuIGluc3RydWN0
aW9uIGlzIGEgdGVzdC4gCkBAIC0yOTAsNiArMjk2LDggQEAgcHJpdmF0ZToKICAgICAgICAgT1Bf
U0VUQ0MgICAgICAgICAgICA9IDB4OTAsCiAgICAgICAgIE9QMl8zQllURV9FU0NBUEVfQUUgPSAw
eEFFLAogICAgICAgICBPUDJfSU1VTF9HdkV2ICAgICAgID0gMHhBRiwKKyAgICAgICAgT1AyX0NN
UFhDSEdiICAgICAgICA9IDB4QjAsCisgICAgICAgIE9QMl9DTVBYQ0hHICAgICAgICAgPSAweEIx
LAogICAgICAgICBPUDJfTU9WWlhfR3ZFYiAgICAgID0gMHhCNiwKICAgICAgICAgT1AyX0JTRiAg
ICAgICAgICAgICA9IDB4QkMsCiAgICAgICAgIE9QMl9UWkNOVCAgICAgICAgICAgPSAweEJDLApA
QCAtMjk4LDYgKzMwNiw4IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9NT1ZTWF9HdkViICAgICAg
PSAweEJFLAogICAgICAgICBPUDJfTU9WWlhfR3ZFdyAgICAgID0gMHhCNywKICAgICAgICAgT1Ay
X01PVlNYX0d2RXcgICAgICA9IDB4QkYsCisgICAgICAgIE9QMl9YQUREYiAgICAgICAgICAgPSAw
eEMwLAorICAgICAgICBPUDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAgT1AyX1BF
WFRSV19HZFVkSWIgICA9IDB4QzUsCiAgICAgICAgIE9QMl9QU0xMUV9VZHFJYiAgICAgPSAweDcz
LAogICAgICAgICBPUDJfUFNSTFFfVWRxSWIgICAgID0gMHg3MywKQEAgLTQ0MCw2ICs0NTAsMTEg
QEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQUREX0d2RXYsIGRz
dCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCBhZGRsX21yKGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BRERfR3ZF
diwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAogI2lmICFD
UFUoWDg2XzY0KQogICAgIHZvaWQgYWRkbF9tcihjb25zdCB2b2lkKiBhZGRyLCBSZWdpc3RlcklE
IGRzdCkKICAgICB7CkBAIC01NjIsMTEgKzU3NywyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAg
fQogCisgICAgdm9pZCBhZGRxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0FERF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAg
dm9pZCBhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0FERF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CisKICAgICB2b2lkIGFkZHFfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtNTkxLDYg
KzYxNiwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihp
bW0pOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBhZGRxX2ltKGludCBpbW0sIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQURELCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBhZGRsX2ltKGludCBpbW0sIGNvbnN0
IHZvaWQqIGFkZHIpCiAgICAgewpAQCAtNjE0LDExICs2NTAsNDMgQEAgcHVibGljOgogICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CiAKKyAgICB2b2lkIGFuZGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAg
IHZvaWQgYW5kbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9P
UEVSQU5EX1NJWkUpOworICAgICAgICBhbmRsX3JtKHNyYywgb2Zmc2V0LCBiYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBhbmRsX3JtKHNyYywg
b2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kYl9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhbmRsX2lyKGludCBpbW0sIFJlZ2lz
dGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkp
IHsKQEAgLTY0MSw2ICs3MDksNDEgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAg
dm9pZCBhbmRsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVO
RF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFf
T1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmR3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5kbF9pbShp
bW0sIG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X2ltKGludCBpbW0sIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICBhbmRsX2ltKGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKwor
ICAgIHZvaWQgYW5kYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQ
MV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9BTkQsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBhbmRxX3JyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC02NTcsNiArNzYwLDQ4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAgICAg
IH0KICAgICB9CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRx
X21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FORF9F
dkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FO
RF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNl
LCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JP
VVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBh
bmRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMy
KGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09Q
X0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBh
bmRsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewpAQCAtNzAzLDYgKzg0OCwx
MSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9H
Uk9VUDVfRXYsIEdST1VQMV9PUF9BREQsIGJhc2UsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9p
ZCBpbmNxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9V
UDVfRXYsIEdST1VQMV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogICAgIHZvaWQgbmVnbF9yKFJlZ2lzdGVySUQgZHN0
KQpAQCAtNzE1LDYgKzg2NSwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9ORUcsIGRzdCk7CiAgICAgfQor
CisgICAgdm9pZCBuZWdxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVH
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgbmVncV9tKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG5l
Z2xfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCkBAIC03MjIsNiArODgyLDMzIEBAIHB1
YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAz
X09QX05FRywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG5lZ2xfbShpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9O
RUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3df
bShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5lZ2xfbShvZmZzZXQsIGJhc2Up
OworICAgIH0KKworICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWdsX20ob2Zmc2V0LCBiYXNlLCBp
bmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnYl9tKGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDNfRWIsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBu
ZWdiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0Vi
LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAg
ICAgdm9pZCBub3RsX3IoUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBkc3QpOwpAQCAtNzMyLDYg
KzkxOSwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBu
b3RsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2
LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBub3R3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBub3RsX20o
b2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbm90bF9tKG9m
ZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGJfbShpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBub3RxX3IoUmVnaXN0ZXJJRCBk
c3QpCiAgICAgewpAQCAtNzQyLDYgKzk1NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBub3RxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgb3JsX3JyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTc1NCwxMSArOTczLDQzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2RXYsIGRzdCwgYmFzZSwg
b2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfR3ZFdiwgZHN0LCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQog
CisgICAgdm9pZCBvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKworICAgIHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJF
X09QRVJBTkRfU0laRSk7CisgICAgICAgIG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBvcmxfcm0oc3JjLCBv
ZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcmJfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7Cisg
ICAgfQorCisgICAgdm9pZCBvcmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgb3JsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQg
ZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAg
LTc4NCwxMiArMTAzNSw4OSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lk
IG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1Is
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIG9yd19pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG9ybF9pbShpbW0sIG9mZnNl
dCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcndfaW0oaW50IGltbSwgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG9ybF9p
bShpbW0sIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9y
Yl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9PUiwgYmFz
ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0K
KworICAgIHZvaWQgb3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0K
KwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBvcnFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1Jf
RXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgb3JxX21yKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX09SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
KyAgICB2b2lkIG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwg
YmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9p
ZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9P
UF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgb3JxX2ly
KGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VY
VEVORF84XzMyKGltbSkpIHsKQEAgLTgzMSwxMSArMTE1OSw0MyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwog
ICAgIH0KIAorICAgIHZvaWQgc3VibF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAg
dm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09Q
RVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwg
c3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vid19ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YmxfaXIoaW50IGltbSwgUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpA
QCAtODYxLDYgKzEyMjEsNDEgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9p
ZCBzdWJsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1Bf
U1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdWJ3X2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgc3VibF9pbShpbW0s
IG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X2ltKGludCBpbW0sIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBzdWJsX2ltKGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9P
UF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBzdWJxX3JyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC04NzIsMTEgKzEyNjcsMjEgQEAgcHVi
bGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBi
YXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9tcihpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJxX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZz
ZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJxX2lyKGludCBpbW0s
IFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMy
KGltbSkpIHsKQEAgLTkwMSw2ICsxMzA2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIHN1
YnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIo
aW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2
SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1Bf
U1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2b2lkIHN1
YmxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC05MjQsMTEgKzEzNDAs
MjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0d2RXYs
IGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcmxfbXIoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHhv
cmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgeG9ybF9pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTQwLDYgKzEzNjYsNjMgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgfQogCisgICAgdm9pZCB4b3JsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0p
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UpOworICAgIH0KKwor
ICAgIHZvaWQgeG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZz
ZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3J3X2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgeG9ybF9pbShpbW0sIG9mZnNl
dCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICB4b3Js
X2ltKGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
eG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9FdkdiLCBzcmMsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JiX2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0
KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZv
aWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAgICAg
dm9pZCB4b3JsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTk3NCwxMSArMTQ1Nyw0NyBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9F
WFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9S
LCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1t
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHhvcnFfaW0oaW50IGltbSwgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1Is
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0p
OworICAgICAgICB9CisgICAgfQorICAgIAogICAgIHZvaWQgeG9ycV9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAK
KyAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDY0KE9QX1hPUl9HdkV2LCBkZXN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYsIGRlc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgbHpjbnRfcnIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZHN0KQpAQCAtMTU4NiwxMSArMjEwNSwzOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQog
CisgICAgdm9pZCB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZH
Yiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNoZ2Jfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdf
RXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9p
ZCB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIG9mZnNl
dCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2
b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCB4Y2hncV9ycihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMTYwNiw2ICsyMTUyLDExIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwg
c3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgeGNoZ3Ffcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWENIR19F
dkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAog
ICAgIHZvaWQgbW92bF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNzMx
LDYgKzIyODIsMTggQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9Q
X01PVl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAg
ICB2b2lkIG1vdndfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBtb3ZsX2kzMm0oaW1tLCBvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgbW92d19p
bShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFO
RF9TSVpFKTsKKyAgICAgICAgbW92bF9pMzJtKGltbSwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2Nh
bGUpOworICAgIH0KKwogICAgIHZvaWQgbW92bF9FQVhtKGNvbnN0IHZvaWQqIGFkZHIpCiAgICAg
ewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX092RUFYKTsKQEAgLTE4MDAs
NiArMjM2MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGlt
bSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX2kzMm0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDExX0V2SXosIEdST1VQMTFfTU9WLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTMyKGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZxX2k2NHIoaW50NjRfdCBpbW0sIFJlZ2lz
dGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9W
X0VBWEl2LCBkc3QpOwpAQCAtMjc3NSw2ICszMzQ0LDkwIEBAIHB1YmxpYzoKICAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9MT0NLKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbXB4Y2hn
Yl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENIR2IsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnYl9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hHYiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
Y21weGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9mZnNl
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdsX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdxX3JtKFJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9DTVBYQ0hHLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNyYywgYmFzZSwgb2Zmc2V0
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQUREYiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29C
eXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hB
REQsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkbF9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1Ay
X1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHhhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfWEFERCwgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9YQURE
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCiAgICAgdm9p
ZCBtZmVuY2UoKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudGhyZWVCeXRlT3AoT1AyXzNC
WVRFX0VTQ0FQRV9BRSwgT1AzX01GRU5DRSk7CkBAIC0zNzUxLDYgKzQ0MDQsMjQgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKGdyb3VwT3AsIHJtKTsKICAgICAg
ICAgfQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBp
bnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAg
ICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcsIGJhc2UpLCBy
ZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZ
VEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7
CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUs
IGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBp
bnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZl
cldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZihi
eXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCByZWdSZXF1aXJlc1JleChpbmRleCwgYmFzZSksIHJl
ZywgaW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1Bf
MkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29k
ZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBJbW1lZGlhdGVzOgogICAgICAg
ICAvLwogICAgICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFwcGVuZGVkIHdoZXJlIGFw
cHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKKworI2lm
IEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitBdG9t
aWNWYWx1ZTo6fkF0b21pY1ZhbHVlKCkKK3sKK30KKworV2lkdGggQXRvbWljVmFsdWU6OmFjY2Vz
c1dpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aWR0aDsKK30KKwordm9pZCBBdG9taWNW
YWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKK3sKKyAgICBvdXQucHJpbnQoY29tbWEsICJ3aWR0aCA9ICIsIG1fd2lkdGgpOworICAgIAor
ICAgIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShjb21tYSwgb3V0KTsKK30KKworVmFsdWUqIEF0b21p
Y1ZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAoreworICAgIHJldHVybiBuZXcgQXRvbWljVmFsdWUo
KnRoaXMpOworfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4g
b3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQz
Ml90IG9mZnNldCA9IDApCisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBv
cGVyYW5kLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCBvcGVyYW5kLCBwb2ludGVyKQorICAgICwg
bV93aWR0aCh3aWR0aCkKK3sKKyAgICBzZXRGZW5jZVJhbmdlKEhlYXBSYW5nZTo6dG9wKCkpOwor
ICAgIAorICAgIEFTU0VSVChiZXN0VHlwZShvcGVyYXRpb25XaWR0aCgpKSA9PSBvcGVyYXRpb25U
eXBlKCkpOworICAgIAorICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRv
bWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hn
T3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAg
ICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworQXRvbWljVmFsdWU6OkF0b21pY1Zh
bHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBleHBlY3Rl
ZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9
IDApCisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBraW5kLm9wY29kZSgp
ID09IEF0b21pY1dlYWtDQVMgPyBJbnQzMiA6IGV4cGVjdGVkVmFsdWUtPnR5cGUoKSwgb3JpZ2lu
LCBvZmZzZXQsIGV4cGVjdGVkVmFsdWUsIG5ld1ZhbHVlLCBwb2ludGVyKQorICAgICwgbV93aWR0
aCh3aWR0aCkKK3sKKyAgICBzZXRGZW5jZVJhbmdlKEhlYXBSYW5nZTo6dG9wKCkpOworICAgIAor
ICAgIEFTU0VSVChiZXN0VHlwZShvcGVyYXRpb25XaWR0aCgpKSA9PSBvcGVyYXRpb25UeXBlKCkp
OworCisgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FT
OgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzTWVtb3J5
VmFsdWUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBBdG9taWNWYWx1ZSA6IHB1YmxpYyBN
ZW1vcnlWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQp
CisgICAgeworICAgICAgICByZXR1cm4gaXNBdG9taWMoa2luZC5vcGNvZGUoKSk7CisgICAgfQor
ICAgIAorICAgIH5BdG9taWNWYWx1ZSgpOworICAgIAorICAgIFR5cGUgb3BlcmF0aW9uVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7IH0KKyAgICAKKyAgICBXaWR0aCBvcGVy
YXRpb25XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICAKKyAgICAvLyBTeW5v
bnltIGZvciBvcGVyYXRpb25XaWR0aCgpLCBpZiB5b3UncmUgYWNjZXNzaW5nIHZpYSBNZW1vcnlW
YWx1ZS4KKyAgICBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJv
dGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBj
b25zdCBvdmVycmlkZTsKKyAgICAKKyAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgCisg
ICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtp
bmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUs
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAorICAgIFdpZHRoIG1f
d2lkdGg7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrLmgJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgQmxvY2tJbnNlcnRp
b25TZXQ7CiBjbGFzcyBJbnNlcnRpb25TZXQ7CiBjbGFzcyBQcm9jZWR1cmU7CiBjbGFzcyBWYWx1
ZTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CiAK
IGNsYXNzIEJhc2ljQmxvY2sgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhc2ljQmxvY2sp
OwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrSW5z
ZXJ0aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBJbnNlcnRpb25TZXQ7CiAgICAgZnJpZW5kIGNs
YXNzIFByb2NlZHVyZTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEdlbmVy
aWNCbG9ja0luc2VydGlvblNldDsKICAgICAKICAgICAvLyBJbnN0YW50aWF0ZSB2aWEgUHJvY2Vk
dXJlLgogICAgIEJhc2ljQmxvY2sodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0
LmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxv
Y2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDM1ICszNiwxMyBAQAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIEJsb2NrSW5zZXJ0aW9uU2V0OjpCbG9ja0luc2Vy
dGlvblNldChQcm9jZWR1cmUgJnByb2MpCi0gICAgOiBtX3Byb2MocHJvYykKKyAgICA6IEdlbmVy
aWNCbG9ja0luc2VydGlvblNldChwcm9jLm1fYmxvY2tzKQorICAgICwgbV9wcm9jKHByb2MpCiB7
CiB9CiAKIEJsb2NrSW5zZXJ0aW9uU2V0Ojp+QmxvY2tJbnNlcnRpb25TZXQoKSB7IH0KIAotdm9p
ZCBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5zZXJ0aW9uKQot
ewotICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRpb24pKTsKLX0KLQotQmFz
aWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91Ymxl
IGZyZXF1ZW5jeSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3
IEJhc2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOwotICAgIEJhc2ljQmxvY2sqIHJlc3Vs
dCA9IGJsb2NrLmdldCgpOwotICAgIGluc2VydChCbG9ja0luc2VydGlvbihpbmRleCwgV1RGTW92
ZShibG9jaykpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0lu
c2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1
ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgoKSwgZnJlcXVlbmN5ID09
IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5KCkpOwotfQotCi1CYXNp
Y0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIs
IGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChhZnRlci0+aW5kZXgoKSAr
IDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBhZnRlci0+ZnJlcXVlbmN5
KCkpOwotfQotCiBCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3YXJkKAog
ICAgIEJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0
KiBpbnNlcnRpb25TZXQsIGRvdWJsZSBmcmVxdWVuY3kpCiB7CkBAIC0xMDIsMzIgKzgwLDYgQEAg
QmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6OnNwbGl0Rm9ydwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLWJvb2wgQmxvY2tJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoKQotewotICAgIGlmICht
X2luc2VydGlvbnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAg
Ly8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3JkZXIuIFNv
LCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKLSAgICAvLyBydW5uaW5nIFdURjo6ZXhlY3V0
ZUluc2VydGlvbnMuIFdlIHN0cm9uZ2x5IHByZWZlciBhIHN0YWJsZSBzb3J0IGFuZCB3ZSB3YW50
IGl0IHRvIGJlCi0gICAgLy8gZmFzdCwgc28gd2UgdXNlIGJ1YmJsZSBzb3J0LgotICAgIGJ1YmJs
ZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7Ci0KLSAgICBl
eGVjdXRlSW5zZXJ0aW9ucyhtX3Byb2MubV9ibG9ja3MsIG1faW5zZXJ0aW9ucyk7Ci0gICAgCi0g
ICAgLy8gUHJ1bmUgb3V0IGVtcHR5IGVudHJpZXMuIFRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNz
YXJ5IGJ1dCBpdCdzCi0gICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZyb20g
Z3Jvd2luZy4KLSAgICBtX3Byb2MubV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCi0gICAgICAg
IFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+JiBibG9ja1B0cikgLT4gYm9vbCB7Ci0g
ICAgICAgICAgICByZXR1cm4gIWJsb2NrUHRyOwotICAgICAgICB9KTsKLSAgICAKLSAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGluZGljZXMuCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvYy5tX2Jsb2Nrcy5zaXplKCk7ICsraSkKLSAgICAg
ICAgbV9wcm9jLm1fYmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKLSAgICAKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNf
SklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlv
blNldC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNC
bG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAj
aWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0
LmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzUsMjYgKzM2LDEzIEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBJbnNlcnRpb25TZXQ7CiAKLXR5cGVkZWYgV1RG
OjpJbnNlcnRpb248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBCbG9ja0luc2VydGlvbjsK
K3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+OjpCbG9ja0luc2Vy
dGlvbiBCbG9ja0luc2VydGlvbjsKIAotY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgeworY2xhc3Mg
QmxvY2tJbnNlcnRpb25TZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2lj
QmxvY2s+IHsKIHB1YmxpYzoKICAgICBCbG9ja0luc2VydGlvblNldChQcm9jZWR1cmUmKTsKICAg
ICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKICAgICAKLSAgICB2b2lkIGluc2VydChCbG9ja0luc2Vy
dGlvbiYmKTsKLQotICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGluZGV4Lgot
ICAgIEJhc2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSA9
IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBiZWZvcmUgdGhlIGdpdmVuIGJs
b2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNzIHRoZSBmcmVxdWVuY3kKLSAgICAvLyBhcmd1
bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9m
IHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCi0gICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3YW50
LgotICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJs
ZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYWZ0ZXIg
dGhlIGdpdmVuIGJsb2NrLgotICAgIEJhc2ljQmxvY2sqIGluc2VydEFmdGVyKEJhc2ljQmxvY2sq
IGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KICAgICAvLyBBIGhlbHBlciB0byBz
cGxpdCBhIGJsb2NrIHdoZW4gZm9yd2FyZCBpdGVyYXRpbmcgb3ZlciBpdC4gSXQgY3JlYXRlcyBh
IG5ldyBibG9jayB0byBob2xkCiAgICAgLy8gZXZlcnl0aGluZyBiZWZvcmUgdGhlIGluc3RydWN0
aW9uIGF0IHZhbHVlSW5kZXguIFRoZSBjdXJyZW50IGJsb2NrIGlzIGxlZnQgd2l0aAogICAgIC8v
IGV2ZXJ5dGhpbmcgYXQgYW5kIGFmdGVyIHZhbHVlSW5kZXguIElmIHRoZSBvcHRpb25hbCBJbnNl
cnRpb25TZXQgaXMgcHJvdmlkZWQsIGl0IHdpbGwgZ2V0CkBAIC04MCwxMiArNjgsOSBAQCBwdWJs
aWM6CiAgICAgQmFzaWNCbG9jayogc3BsaXRGb3J3YXJkKAogICAgICAgICBCYXNpY0Jsb2NrKiwg
dW5zaWduZWQmIHZhbHVlSW5kZXgsIEluc2VydGlvblNldCogPSBudWxscHRyLAogICAgICAgICBk
b3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0gICAgCi0gICAgYm9vbCBleGVjdXRlKCk7CiAKIHBy
aXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7Ci0gICAgVmVjdG9yPEJsb2NrSW5zZXJ0aW9u
LCA4PiBtX2luc2VydGlvbnM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODIsNyArODIsOCBAQCBib29sIEVmZmVjdHM6OmludGVyZmVyZXMoY29uc3QgRWZmZWN0cyYg
CiAgICAgICAgIHx8IGludGVyZmVyZXNXaXRoV3JpdGVzUGlubmVkKG90aGVyLCAqdGhpcykKICAg
ICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKICAgICAgICAgfHwgd3JpdGVz
Lm92ZXJsYXBzKG90aGVyLnJlYWRzKQotICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53
cml0ZXMpOworICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53cml0ZXMpCisgICAgICAg
IHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3I9
PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTk1LDcgKzk2LDggQEAgYm9vbCBFZmZl
Y3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIAogICAgICAgICAmJiB3cml0ZXNQaW5uZWQg
PT0gb3RoZXIud3JpdGVzUGlubmVkCiAgICAgICAgICYmIHJlYWRzUGlubmVkID09IG90aGVyLnJl
YWRzUGlubmVkCiAgICAgICAgICYmIHdyaXRlcyA9PSBvdGhlci53cml0ZXMKLSAgICAgICAgJiYg
cmVhZHMgPT0gb3RoZXIucmVhZHM7CisgICAgICAgICYmIHJlYWRzID09IG90aGVyLnJlYWRzCisg
ICAgICAgICYmIGZlbmNlID09IG90aGVyLmZlbmNlOwogfQogCiBib29sIEVmZmVjdHM6Om9wZXJh
dG9yIT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0CkBAIC0xMjAsNiArMTIyLDggQEAgdm9p
ZCBFZmZlY3RzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbgogICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJXcml0ZXNQaW5uZWQiKTsKICAgICBpZiAocmVhZHNQaW5uZWQpCiAgICAgICAgIG91
dC5wcmludChjb21tYSwgIlJlYWRzUGlubmVkIik7CisgICAgaWYgKGZlbmNlKQorICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJGZW5jZSIpOwogICAgIGlmICh3cml0ZXMpCiAgICAgICAgIG91dC5w
cmludChjb21tYSwgIldyaXRlczoiLCB3cml0ZXMpOwogICAgIGlmIChyZWFkcykKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiAr
NzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBib29sIHJlYWRzUGlubmVkIHsgZmFsc2UgfTsK
ICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07CisgICAgCisgICAgLy8gTWVtb3J5IGZl
bmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBlYWNoIG90aGVyIHJlZ2FyZGxlc3Mgb2Yg
dGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisgICAgLy8gaWYgdGhlIG9wZXJhdGlvbiBp
cyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZlbmNlIHsgZmFsc2UgfTsKIAogICAgIEhlYXBS
YW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRzOwpAQCAtODksNiArOTMsNyBAQCBzdHJ1
Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CiAg
ICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIHJlc3VsdC53cml0ZXNQ
aW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcgKzEwOCw3IEBAIHN0cnVjdCBFZmZlY3RzIHsK
IAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHRl
cm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8fCB3cml0ZXMgfHwg
d3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRld2F5cyB8
fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQgfHwgZmVuY2U7CiAg
ICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHJlb3JkZXJpbmcgaW5zdHJ1Y3Rpb25zIHdp
dGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxkIGNoYW5nZSBwcm9ncmFtCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29t
bW9uU3ViZXhwcmVzc2lvbnMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0cnVjdCBJbXB1cmVCbG9ja0RhdGEgewogCiAgICAgUmFu
Z2VTZXQ8SGVhcFJhbmdlPiByZWFkczsgLy8gVGhpcyBvbmx5IGdldHMgdXNlZCBmb3IgZm9yd2Fy
ZCBzdG9yZSBlbGltaW5hdGlvbi4KICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+IHdyaXRlczsgLy8g
VGhpcyBnZXRzIHVzZWQgZm9yIGJvdGggbG9hZCBhbmQgc3RvcmUgZWxpbWluYXRpb24uCisgICAg
Ym9vbCBmZW5jZTsKIAogICAgIE1lbW9yeVZhbHVlTWFwIHN0b3Jlc0F0SGVhZDsKICAgICBNZW1v
cnlWYWx1ZU1hcCBtZW1vcnlWYWx1ZXNBdFRhaWw7CkBAIC0xNzQsMTIgKzE3NSwxNCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeSAmJiBtZW1v
cnktPmlzU3RvcmUoKQogICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS5yZWFkcy5vdmVybGFw
cyhtZW1vcnktPnJhbmdlKCkpCi0gICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5v
dmVybGFwcyhtZW1vcnktPnJhbmdlKCkpKQorICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS53
cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQorICAgICAgICAgICAgICAgICAgICAmJiAo
IWRhdGEuZmVuY2UgfHwgIW1lbW9yeS0+aGFzRmVuY2UoKSkpCiAgICAgICAgICAgICAgICAgICAg
IGRhdGEuc3RvcmVzQXRIZWFkLmFkZChtZW1vcnkpOwogICAgICAgICAgICAgICAgIGRhdGEucmVh
ZHMuYWRkKGVmZmVjdHMucmVhZHMpOwogCiAgICAgICAgICAgICAgICAgaWYgKEhlYXBSYW5nZSB3
cml0ZXMgPSBlZmZlY3RzLndyaXRlcykKICAgICAgICAgICAgICAgICAgICAgY2xvYmJlcihkYXRh
LCB3cml0ZXMpOworICAgICAgICAgICAgICAgIGRhdGEuZmVuY2UgfD0gZWZmZWN0cy5mZW5jZTsK
IAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEu
bWVtb3J5VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkpOwpAQCAtNDc4LDYgKzQ4MSw5IEBAIHByaXZh
dGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgogICAgIGJvb2wgZmluZFN0b3JlQWZ0
ZXJDbG9iYmVyKFZhbHVlKiBwdHIsIEhlYXBSYW5nZSByYW5nZSwgY29uc3QgRmlsdGVyJiBmaWx0
ZXIpCiAgICAgeworICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0Zl
bmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICAvLyBX
ZSBjYW4gZWxpbWluYXRlIGEgc3RvcmUgaWYgZXZlcnkgZm9yd2FyZCBwYXRoIGhpdHMgYSBzdG9y
ZSB0byB0aGUgc2FtZSBsb2NhdGlvbiBiZWZvcmUKICAgICAgICAgLy8gaGl0dGluZyBhbnkgb3Bl
cmF0aW9uIHRoYXQgb2JzZXJ2ZXMgdGhlIHN0b3JlLiBUaGlzIHNlYXJjaCBzZWVtcyBsaWtlIGl0
IHNob3VsZCBiZQogICAgICAgICAvLyBleHBlbnNpdmUsIGJ1dCBpbiB0aGUgb3ZlcndoZWxtaW5n
IG1ham9yaXR5IG9mIGNhc2VzIGl0IHdpbGwgYWxtb3N0IGltbWVkaWF0ZWx5IGhpdCBhbiAKQEAg
LTYxNCw2ICs2MjAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCptX3ZhbHVlLCAiOiBsb29raW5nIGJhY2t3YXJkIGZvciAiLCAqcHRyLCAi
Li4uXG4iKTsKICAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4o
KS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGZlbmNlcy5cbiIpOworICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKE1lbW9yeVZh
bHVlKiBtYXRjaCA9IG1fZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuZmluZChwdHIsIGZpbHRlcikp
IHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBGb3VuZCAiLCAqbWF0Y2gsICIgbG9jYWxseS5cbiIpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw3
IEBAIHZvaWQgZ2VuZXJhdGVUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSwKICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDUwNwogICAgIH0KIAor
ICAgIC8vIFRoaXMgcHV0cyB0aGUgSVIgaW4gcXVpcmtzIG1vZGUuCiAgICAgbG93ZXJNYWNyb3Mo
cHJvY2VkdXJlKTsKIAogICAgIGlmIChvcHRMZXZlbCA+PSAxKSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmljQmxvY2tJ
bnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJQdXJlTmFOLmgiCisjaW5jbHVkZSA8d3RmL0J1
YmJsZVNvcnQuaD4KKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworY2xhc3MgSW5zZXJ0
aW9uU2V0OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNpY0Jsb2NrPgorY2xhc3MgR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFdURjo6SW5zZXJ0aW9uPHN0
ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4gQmxvY2tJbnNlcnRpb247CisgICAgCisgICAgR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+
JiBibG9ja3MpCisgICAgICAgIDogbV9ibG9ja3MoYmxvY2tzKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgdm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCisgICAgeworICAg
ICAgICBtX2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7CisgICAgfQorCisg
ICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCisgICAgQmFzaWNCbG9j
ayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9j
ayhVSU5UX01BWCwgZnJlcXVlbmN5KSk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlc3VsdCA9IGJs
b2NrLmdldCgpOworICAgICAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUo
YmxvY2spKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gSW5zZXJ0
cyBhIG5ldyBibG9jayBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5v
dCBwYXNzIHRoZSBmcmVxdWVuY3kKKyAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNl
cyB1cyB0byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhh
dCdzCisgICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3YW50LgorICAgIEJhc2ljQmxvY2sqIGluc2Vy
dEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZyZXF1ZW5jeSA9PSBm
cmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsKKyAgICB9CisKKyAg
ICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KKyAgICBCYXNp
Y0Jsb2NrKiBpbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9
IFBOYU4pCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwg
ZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7
CisgICAgfQorCisgICAgYm9vbCBleGVjdXRlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2luc2Vy
dGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAg
ICAgICAgLy8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3Jk
ZXIuIFNvLCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKKyAgICAgICAgLy8gcnVubmluZyBX
VEY6OmV4ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBh
bmQgd2Ugd2FudCBpdCB0byBiZQorICAgICAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNv
cnQuCisgICAgICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9u
cy5lbmQoKSk7CisgICAgICAgIAorICAgICAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX2Jsb2Nrcywg
bV9pbnNlcnRpb25zKTsKKyAgICAgICAgCisgICAgICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRy
aWVzLiBUaGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncworICAgICAgICAvLyBo
ZWFsdGh5IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgorICAgICAgICBtX2Js
b2Nrcy5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRy
PEJhc2ljQmxvY2s+JiBibG9ja1B0cikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJu
ICFibG9ja1B0cjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgLy8gTWFrZSBz
dXJlIHRoYXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2VzLgorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBt
X2Jsb2Nrc1tpXS0+bV9pbmRleCA9IGk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2Nr
Pj4mIG1fYmxvY2tzOworICAgIFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25z
OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNf
SklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdlIG9wZXJhdG9yfChjb25z
dCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5n
ZSgKKyAgICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1fYmVnaW4pLAorICAgICAg
ICAgICAgc3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAgfQorICAgIAogICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1fZW5kOyB9
CiAKICAgICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24g
MjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJbnNlcnRpb25TZXQ6Omlu
c2VydEJvdHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9tKGluZGV4LCBsaWtlVmFs
dWUtPm9yaWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1ZhbHVlKiBJbnNlcnRpb25T
ZXQ6Omluc2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVlKQoreworICAgIHJldHVy
biBpbnNlcnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFsdWUpKTsKK30KKwogdm9p
ZCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgYnViYmxl
U29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9t
KHNpemVfdCBpbmRleCwgT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNp
emVfdCBpbmRleCwgVmFsdWUqKTsKKyAgICAKKyAgICBWYWx1ZSogaW5zZXJ0Q2xvbmUoc2l6ZV90
IGluZGV4LCBWYWx1ZSopOwogCiAgICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24g
MjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksMTEgKzI5LDEzIEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAog
I2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgorI2luY2x1ZGUgIkIz
QXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiQjNCbG9ja0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkIzQ2FzZUNvbGxlY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNDb25zdFB0clZh
bHVlLmgiCisjaW5jbHVkZSAiQjNGZW5jZVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25T
ZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUGF0
Y2hwb2ludFZhbHVlLmgiCkBAIC00Miw2ICs0NCw3IEBACiAjaW5jbHVkZSAiQjNTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMuaCIKICNpbmNsdWRlICJCM1N3aXRjaFZhbHVlLmgiCiAjaW5jbHVkZSAi
QjNVcHNpbG9uVmFsdWUuaCIKKyNpbmNsdWRlICJCM1VzZUNvdW50cy5oIgogI2luY2x1ZGUgIkIz
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgpAQCAtNTgsMTEgKzYxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3Byb2Mo
cHJvYykKICAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MpCiAgICAgICAgICwgbV9p
bnNlcnRpb25TZXQocHJvYykKKyAgICAgICAgLCBtX3VzZUNvdW50cyhwcm9jKQogICAgIHsKICAg
ICB9CiAKICAgICBib29sIHJ1bigpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9w
cm9jLmhhc1F1aXJrcygpKTsKKyAgICAgICAgCiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxv
Y2sgOiBtX3Byb2MpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgICAg
IHByb2Nlc3NDdXJyZW50QmxvY2soKTsKQEAgLTcyLDYgKzc4LDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIG1fcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICAgICAgbV9wcm9jLmlu
dmFsaWRhdGVDRkcoKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBpbmRp
Y2F0ZXMgdGhhdCB3ZSd2ZSAKKyAgICAgICAgbV9wcm9jLnNldEhhc1F1aXJrcyh0cnVlKTsKKyAg
ICAgICAgCiAgICAgICAgIHJldHVybiBtX2NoYW5nZWQ7CiAgICAgfQogICAgIApAQCAtMTg1LDcg
KzE5NSw5NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGxvYWQtbG9hZCBmZW5jZS4gVGhpcyBj
b2RlZ2VucyB0byBub3RoaW5nIG9uIFg4Ni4gV2UgdXNlIGl0IHRvIHRlbGwgdGhlCisgICAgICAg
ICAgICAgICAgICAgIC8vIGNvbXBpbGVyIG5vdCB0byBibG9jayBsb2FkIG1vdGlvbi4KKyAgICAg
ICAgICAgICAgICAgICAgRmVuY2VWYWx1ZSogZmVuY2UgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
RmVuY2VWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4pOworICAgICAgICAgICAgICAgICAgICBmZW5j
ZS0+cmVhZCA9IEhlYXBSYW5nZSgpOworICAgICAgICAgICAgICAgICAgICBmZW5jZS0+d3JpdGUg
PSBIZWFwUmFuZ2U6OnRvcCgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgLy8gS2lsbCB0aGUgRGVwZW5kLCB3aGljaCBzaG91bGQgdW5sb2NrIGEgYnVuY2ggb2Yg
Y29kZSBzaW1wbGlmaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFj
ZVdpdGhCb3R0b20obV9pbnNlcnRpb25TZXQsIG1faW5kZXgpOworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAKKyAgICAgICAgICAg
IGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOiB7
CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBXaWR0aCB3aWR0
aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBpZiAoaXNDYW5vbmljYWxXaWR0aCh3aWR0aCkpCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFZhbHVlKiBleHBlY3Rl
ZFZhbHVlID0gYXRvbWljLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAvLyBPbiBBUk0sIHRoZSBsb2FkIHBhcnQgb2YgdGhlIENBUyBkb2VzIGEgbG9hZCB3aXRo
IHplcm8gZXh0ZW5zaW9uLiBUaGVyZWZvcmUsIHdlIG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0
byB6ZXJvLWV4dGVuZCB0aGUgaW5wdXQuCisgICAgICAgICAgICAgICAgVmFsdWUqIG1hc2tlZEV4
cGVjdGVkVmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAg
ICAgICAgICBtX2luZGV4LCBCaXRBbmQsIG1fb3JpZ2luLCBleHBlY3RlZFZhbHVlLAorICAgICAg
ICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChtX2luZGV4LCBl
eHBlY3RlZFZhbHVlLCBtYXNrKHdpZHRoKSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGF0b21pYy0+Y2hpbGQoMCkgPSBtYXNrZWRFeHBlY3RlZFZhbHVlOworICAgICAgICAg
ICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6
CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21p
Y1hjaGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNh
c2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAg
ICAgICAgICAgIC8vIE9uIFg4NiwgdGhlc2UgbWF5IGFjdHVhbGx5IHJldHVybiBnYXJiYWdlIGlu
IHRoZSBoaWdoIGJpdHMuIE9uIEFSTTY0LCB0aGVzZSBzb3J0YQorICAgICAgICAgICAgICAgIC8v
IHplcm8tZXh0ZW5kIHRoZWlyIGhpZ2ggYml0cywgZXhjZXB0IHRoYXQgdGhlIGhpZ2ggYml0cyBt
aWdodCBnZXQgcG9sbHV0ZWQgYnkgaGlnaAorICAgICAgICAgICAgICAgIC8vIGJpdHMgaW4gdGhl
IG9wZXJhbmQuIC4gU28sIGVpdGhlciB3YXksIHdlIG5lZWQgdG8gdGhyb3cgYSBzaWduLWV4dGVu
ZCBvbiB0aGVzZQorICAgICAgICAgICAgICAgIC8vIHRoaW5ncy4KKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
bV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljWGNoZ1N1YiAmJiBtX3VzZUNvdW50cy5udW1Vc2Vz
KG1fdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbiB4ODYsIHhjaGdhZGQg
aXMgYmV0dGVyIHRoYW4geGNoZ3N1YiBpZiBpdCBoYXMgYW55IHVzZXJzLgorICAgICAgICAgICAg
ICAgICAgICAgICAgbV92YWx1ZS0+c2V0S2luZFVuc2FmZWx5KEF0b21pY1hjaGdBZGQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMSkgPSBtX2luc2VydGlvblNldC5p
bnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIE5lZywg
bV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBleGVtcHQgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgeworICAg
ICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdT
dWI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4ZW1wdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChl
eGVtcHQpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9
IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgICAgIFdpZHRoIHdpZHRo
ID0gYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1ZhbHVl
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgbV9p
bmRleCwgc2lnbkV4dGVuZE9wY29kZSh3aWR0aCksIG1fb3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDbG9uZShtX2luZGV4LCBtX3ZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0
eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00
NzAsNiArNTY5LDcgQEAgcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKICAgICBCbG9j
a0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIEluc2VydGlvblNldCBtX2lu
c2VydGlvblNldDsKKyAgICBVc2VDb3VudHMgbV91c2VDb3VudHM7CiAgICAgQmFzaWNCbG9jayog
bV9ibG9jazsKICAgICB1bnNpZ25lZCBtX2luZGV4OwogICAgIFZhbHVlKiBtX3ZhbHVlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFj
cm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTYsMTUgKzE1NiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2Fz
ZSBSb3RMOiB7CiAgICAgICAgICAgICAgICAgLy8gQVJNNjQgZG9lc24ndCBoYXZlIGEgcm90YXRl
IGxlZnQuCiAgICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3
U2hpZnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1
ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJv
dFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0PFZhbHVlPihtX2luZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGls
ZCgxKSk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNl
dC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVl
LT5jaGlsZCgwKSwgbmV3U2hpZnQpOworICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBs
YWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwxNCBAQAogCiAj
aWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCiAj
aW5jbHVkZSAiQWlyQ0NhbGxTcGVjaWFsLmgiCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1
ZGUgIkFpckluc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQWlyU3RhY2tTbG90LmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisj
aW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMu
aCIKICNpbmNsdWRlICJCM0Jsb2NrV29ya2xpc3QuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUu
aCIKQEAgLTcyLDYgKzc0LDE2IEBAIG5hbWVzcGFjZSB7CiAKIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOwogCisvLyBGSVhNRTogV2Ugd291bGRuJ3QgbmVlZCB0aGlzIGlmIEFpciBzdXBwb3J0
ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFpcjo6S2luZC4KKy8vIE9PUFMhISEgKG5lZWQgYSBidWcg
VVJMKQorI2RlZmluZSBPUENPREVfRk9SX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAorICAgICh3
aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDggOiBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDE2
ID8gb3Bjb2RlICMjIDE2IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgzMiA/IG9wY29kZSAjIyAz
MiA6IFwKKyAgICBvcGNvZGUgIyMgNjQpCisjZGVmaW5lIE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJ
RFRIKG9wY29kZSwgd2lkdGgpICggXAorICAgICh3aWR0aCkgPT0gV2lkdGg2NCA/IG9wY29kZSAj
IyA2NCA6IG9wY29kZSAjIyAzMikKKwogY2xhc3MgTG93ZXJUb0FpciB7CiBwdWJsaWM6CiAgICAg
TG93ZXJUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSkKQEAgLTgzLDYgKzk1LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX2RvbWluYXRvcnMocHJvY2VkdXJlLmRvbWluYXRvcnMoKSkKICAgICAg
ICAgLCBtX3Byb2NlZHVyZShwcm9jZWR1cmUpCiAgICAgICAgICwgbV9jb2RlKHByb2NlZHVyZS5j
b2RlKCkpCisgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChtX2NvZGUpCisjaWYgQ1BVKFg4
NikgfHwgQ1BVKFg4Nl82NCkKKyAgICAgICAgLCBtX2VheChYODZSZWdpc3RlcnM6OmVheCkKKyAg
ICAgICAgLCBtX2VjeChYODZSZWdpc3RlcnM6OmVjeCkKKyAgICAgICAgLCBtX2VkeChYODZSZWdp
c3RlcnM6OmVkeCkKKyNlbmRpZgogICAgIHsKICAgICB9CiAKQEAgLTEyNCwxNCArMTQyLDE4IEBA
IHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3RlZCBhZGRyZXNzIGV4cHJlc3Npb24gYmVmb3JlIHdl
IGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhlIGxvb3AuCiAgICAgICAgIGZvciAoQjM6OkJhc2lj
QmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUuYmxvY2tzSW5QcmVPcmRlcigpKSB7CiAgICAgICAg
ICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAgICAgICAgICAvLyBSZXNldCBzb21lIHN0YXRlLgot
ICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CiAKICAgICAgICAgICAgIG1faXNSYXJlID0g
IW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nIEJsb2NrICIsICpibG9jaywgIjpcbiIp
OwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vz
c29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KKyAgICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50
ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICAg
ICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCkuYXBwZW5kKAorICAgICAgICAg
ICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3Iu
YmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOworICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBpbiByZXZlcnNlIG9yZGVyIHNvIHdlIHNlZSB1c2Vz
IGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBhbGxvd3MgdXMKICAgICAgICAgICAgIC8vIHRvIG1h
dGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5LgogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
YmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAtMTQ5LDE5ICsxNzEsMTAgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gTm93IGFwcGVu
ZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRl
ciwgc28gd2UgcHJvY2VzcwotICAgICAgICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAg
ICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0c1tpXSkKLSAgICAgICAgICAgICAgICAgICAg
bV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBlbmRJbnN0KFdURk1vdmUoaW5zdCkpOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBh
cmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9j
ayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICAgICAgbV9i
bG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCkuYXBwZW5kKAotICAgICAgICAgICAgICAg
ICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2so
KV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXSk7CiAgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fYmxvY2tJbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwog
CiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2NvZGUpOwogICAgICAg
ICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xvZ3VlKQpAQCAtNTM4LDcgKzU1MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAKICAgICAgICAgaW50MzJfdCBvZmZzZXQg
PSB2YWx1ZS0+b2Zmc2V0KCk7Ci0gICAgICAgIFdpZHRoIHdpZHRoID0gdmFsdWUtPmFjY2Vzc1dp
ZHRoKCk7CisgICAgICAgIFdpZHRoIHdpZHRoID0gdmFsdWUtPmxvYWRTdG9yZVdpZHRoKCk7CiAK
ICAgICAgICAgQXJnIHJlc3VsdCA9IGVmZmVjdGl2ZUFkZHIodmFsdWUtPmxhc3RDaGlsZCgpLCBv
ZmZzZXQsIHdpZHRoKTsKICAgICAgICAgQVNTRVJUKHJlc3VsdC5pc1ZhbGlkRm9ybSh3aWR0aCkp
OwpAQCAtNTYyLDExICs1NzUsMTkgQEAgcHJpdmF0ZToKICAgICAKICAgICBBcmdQcm9taXNlIGxv
YWRQcm9taXNlQW55T3Bjb2RlKFZhbHVlKiBsb2FkVmFsdWUpCiAgICAgeworICAgICAgICBSRUxF
QVNFX0FTU0VSVChsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKICAgICAgICAgaWYgKCFj
YW5CZUludGVybmFsKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAg
ICAgIGlmIChjcm9zc2VzSW50ZXJmZXJlbmNlKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gQXJnKCk7Ci0gICAgICAgIEFyZ1Byb21pc2UgcmVzdWx0KGFkZHIobG9hZFZhbHVlKSwgbG9h
ZFZhbHVlKTsKKyAgICAgICAgLy8gT24geDg2LCBhbGwgbG9hZHMgaGF2ZSBmZW5jZXMuIERvaW5n
IHRoaXMga2luZCBvZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gd2lsbCBtb3ZlIHRoZSBsb2FkLAor
ICAgICAgICAvLyBidXQgdGhhdCdzIGZpbmUgYmVjYXVzZSBvdXIgaW50ZXJmZXJlbmNlIGFuYWx5
c2lzIHN0b3BzIHRoZSBtb3Rpb24gb2YgZmVuY2VzIGFyb3VuZCBvdGhlcgorICAgICAgICAvLyBm
ZW5jZXMuIFNvLCBhbnkgbG9hZCBtb3Rpb24gd2UgaW50cm9kdWNlIGhlcmUgd291bGQgbm90IGJl
IG9ic2VydmFibGUuCisgICAgICAgIGlmICghaXNYODYoKSAmJiBsb2FkVmFsdWUtPmFzPE1lbW9y
eVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIEFyZygpOworICAgICAg
ICBBcmcgbG9hZEFkZHIgPSBhZGRyKGxvYWRWYWx1ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGxvYWRBZGRyKTsKKyAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQobG9hZEFkZHIsIGxvYWRWYWx1
ZSk7CiAgICAgICAgIGlmIChsb2FkVmFsdWUtPnRyYXBzKCkpCiAgICAgICAgICAgICByZXN1bHQu
c2V0VHJhcHModHJ1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04OTgsMTEgKzkxOSw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpCiAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAodmFsdWUpLCB0bXAo
bV92YWx1ZSkpOwotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKGFtb3VudCksIFRtcChYODZSZWdp
c3RlcnM6OmVjeCkpOwotICAgICAgICBhcHBlbmQob3Bjb2RlLCBUbXAoWDg2UmVnaXN0ZXJzOjpl
Y3gpLCB0bXAobV92YWx1ZSkpOwotI2VuZGlmCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1v
dW50KSwgbV9lY3gpOworICAgICAgICBhcHBlbmQob3Bjb2RlLCBtX2VjeCwgdG1wKG1fdmFsdWUp
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNv
ZGUgb3Bjb2RlNjQ+CkBAIC05MzEsMTAgKzk1MCwxNiBAQCBwcml2YXRlOgogICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIENvbW11dGF0aXZpdHkgY29t
bXV0YXRpdml0eSA9IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVCaW5P
cChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOworICAgICAgICAKICAgICAgICAgQWlyOjpP
cGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIGxlZnQt
PnR5cGUoKSk7CiAgICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAKKyAgICAgICAgLy8gT24geDg2LCBhbGwgc3RvcmVzIGhh
dmUgZmVuY2VzLCBhbmQgdGhpcyBpc24ndCByZW9yZGVyaW5nIHRoZSBzdG9yZSBpdHNlbGYuCisg
ICAgICAgIGlmICghaXNYODYoKSAmJiBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVu
Y2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIEFyZyBz
dG9yZUFkZHIgPSBhZGRyKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlQoc3RvcmVBZGRyKTsKIApA
QCAtOTk0LDExICsxMDE5LDUwIEBAIHByaXZhdGU6CiAKICAgICAgICAgcmV0dXJuIEluc3QobW92
ZSwgbV92YWx1ZSwgdG1wKHZhbHVlKSwgZGVzdCk7CiAgICAgfQorICAgIAorICAgIEFpcjo6T3Bj
b2RlIHN0b3JlT3Bjb2RlKFdpZHRoIHdpZHRoLCBCYW5rIGJhbmssIGJvb2wgcmVsZWFzZSkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICAgICAgY2FzZSBXaWR0aDg6CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAgICAgICAgICAgIHJldHVybiBy
ZWxlYXNlID8gU3RvcmVSZWw4IDogQWlyOjpTdG9yZTg7CisgICAgICAgIGNhc2UgV2lkdGgxNjoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0
dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDE2IDogQWlyOjpTdG9yZTE2OworICAgICAgICBjYXNlIFdp
ZHRoMzI6CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDMyIDogTW92ZTMyOwor
ICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVs
ZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChpczY0Qml0KCkpOworICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7Cisg
ICAgICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3Rv
cmVSZWw2NCA6IE1vdmU7CisgICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZURvdWJs
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bj
b2RlIHN0b3JlT3Bjb2RlKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVl
KiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1lbW9yeS0+aXNTdG9yZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0b3JlT3Bjb2RlKG1lbW9y
eS0+bG9hZFN0b3JlV2lkdGgoKSwgbWVtb3J5LT5hY2Nlc3NCYW5rKCksIG1lbW9yeS0+aGFzRmVu
Y2UoKSk7CisgICAgfQogCiAgICAgSW5zdCBjcmVhdGVTdG9yZShWYWx1ZSogdmFsdWUsIGNvbnN0
IEFyZyYgZGVzdCkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBtb3Zl
Rm9yVHlwZSh2YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVP
cGNvZGUsIHZhbHVlLCBkZXN0KTsKKyAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IHN0
b3JlT3Bjb2RlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUs
IHZhbHVlLT5jaGlsZCgwKSwgZGVzdCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJncz4KQEAgLTEwMDYsNyArMTA3MCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBh
cHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIGNyZWF0ZVN0b3JlKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLikpKTsKICAgICB9Ci0KKyAgICAKICAgICBBaXI6Ok9wY29kZSBtb3ZlRm9yVHlw
ZShUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEwNzMsNyAr
MTEzNyw0MSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5k
KGluc3QpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9u
cyhBaXI6OkJhc2ljQmxvY2sqIHRhcmdldCkKKyAgICB7CisgICAgICAgIC8vIE5vdyBhcHBlbmQg
dGhlIGluc3RydWN0aW9ucy4gbV9pbnN0cyBjb250YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIs
IHNvIHdlIHByb2Nlc3MKKyAgICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9pbnN0cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGZvciAoSW5z
dCYgaW5zdCA6IG1faW5zdHNbaV0pCisgICAgICAgICAgICAgICAgdGFyZ2V0LT5hcHBlbmRJbnN0
KFdURk1vdmUoaW5zdCkpOworICAgICAgICB9CisgICAgICAgIG1faW5zdHMucmVzaXplKDApOwor
ICAgIH0KKyAgICAKKyAgICBBaXI6OkJhc2ljQmxvY2sqIG5ld0Jsb2NrKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKG1fYmxvY2tUb0Jsb2Nr
W21fYmxvY2tdKTsKKyAgICB9CiAKKyAgICAvLyBOT1RFOiBUaGlzIHdpbGwgY3JlYXRlIGEgY29u
dGludWF0aW9uIGJsb2NrIChgbmV4dEJsb2NrYCkgKmFmdGVyKiBhbnkgYmxvY2tzIHlvdSd2ZSBj
cmVhdGVkIHVzaW5nCisgICAgLy8gbmV3QmxvY2soKS4gU28sIGl0J3MgcHJlZmVyYWJsZSB0byBj
cmVhdGUgYWxsIG9mIHlvdXIgYmxvY2tzIHVwZnJvbnQgdXNpbmcgbmV3QmxvY2soKS4gQWxzbyBu
b3RlCisgICAgLy8gdGhhdCBhbnkgY29kZSB5b3UgZW1pdCBiZWZvcmUgdGhpcyB3aWxsIGJlIHBy
ZXBlbmRlZCB0byB0aGUgY29udGludWF0aW9uLCBhbmQgYW55IGNvZGUgeW91IGVtaXQKKyAgICAv
LyBhZnRlciB0aGlzIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHByZXZpb3VzIGJsb2NrLgorICAg
IHZvaWQgc3BsaXRCbG9jayhBaXI6OkJhc2ljQmxvY2sqJiBwcmV2aW91c0Jsb2NrLCBBaXI6OkJh
c2ljQmxvY2sqJiBuZXh0QmxvY2spCisgICAgeworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJs
b2NrID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9ja107CisgICAgICAgIAorICAgICAgICBwcmV2aW91
c0Jsb2NrID0gYmxvY2s7CisgICAgICAgIG5leHRCbG9jayA9IG1fYmxvY2tJbnNlcnRpb25TZXQu
aW5zZXJ0QWZ0ZXIoYmxvY2spOworICAgICAgICAKKyAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5z
dHJ1Y3Rpb25zKG5leHRCbG9jayk7CisgICAgICAgIG5leHRCbG9jay0+c3VjY2Vzc29ycygpID0g
YmxvY2stPnN1Y2Nlc3NvcnMoKTsKKyAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigp
OworICAgICAgICAKKyAgICAgICAgbV9pbnN0cy5hcHBlbmQoVmVjdG9yPEluc3Q+KCkpOworICAg
IH0KKyAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+
CiAgICAgVCogZW5zdXJlU3BlY2lhbChUKiYgZmllbGQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50
cykKICAgICB7CkBAIC0xMTIzLDcgKzEyMjEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoKICAgICAg
ICAgICAgICAgICBhcmcgPSBBcmc6OmNhbGxBcmcodmFsdWUucmVwKCkub2Zmc2V0RnJvbVNQKCkp
OwotICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlLnZhbHVlKCksIGFyZyk7CisgICAg
ICAgICAgICAgICAgYXBwZW5kU3RvcmUobW92ZUZvclR5cGUodmFsdWUudmFsdWUoKS0+dHlwZSgp
KSwgdmFsdWUudmFsdWUoKSwgYXJnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTE5NjEsNiArMjA1OSwzMDggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRYODZEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7Cisg
ICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7CisgICAgICAgIEFpcjo6T3Bj
b2RlIGRpdjsKKyAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSBJbnQzMjoKKyAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9E
b3VibGVXb3JkMzI7CisgICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEludDY0OgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29y
ZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7CisgICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKKyAgICAgICAgVG1wIHJl
c3VsdCA9IG9wID09IERpdiA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5kKE1vdmUs
IHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKGNvbnZlcnRU
b0RvdWJsZVdvcmQsIG1fZWF4LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBt
X2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1
bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpP
cGNvZGUgb3ApCisgICAgeworICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBl
KCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CisKKyAgICAgICAgQVNTRVJUKG9w
ID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9PSBVRGl2
ID8gbV9lYXggOiBtX2VkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNo
aWxkKDApKSwgbV9lYXgpOworICAgICAgICBhcHBlbmQoWG9yNjQsIG1fZWR4LCBtX2VkeCk7Cisg
ICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7
CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorICAg
IAorICAgIEFpcjo6T3Bjb2RlIGxvYWRMaW5rT3Bjb2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZlbmNlID8gT1BDT0RFX0ZPUl9XSURUSChMb2FkTGlu
a0FjcSwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChMb2FkTGluaywgd2lkdGgpOworICAgIH0K
KyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZUNvbmRPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wg
ZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKFN0
b3JlQ29uZFJlbCwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmQsIHdpZHRoKTsK
KyAgICB9CisgICAgCisgICAgLy8gVGhpcyBjYW4gZW1pdCBjb2RlIGZvciB0aGUgZm9sbG93aW5n
IHBhdHRlcm5zOgorICAgIC8vIEF0b21pY1dlYWtDQVMKKyAgICAvLyBCaXRYb3IoQXRvbWljV2Vh
a0NBUywgMSkKKyAgICAvLyBBdG9taWNTdHJvbmdDQVMKKyAgICAvLyBFcXVhbChBdG9taWNTdHJv
bmdDQVMsIGV4cGVjdGVkKQorICAgIC8vIE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0
ZWQpCisgICAgLy8gQnJhbmNoKEF0b21pY1dlYWtDQVMpCisgICAgLy8gQnJhbmNoKEVxdWFsKEF0
b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vIEJyYW5jaChOb3RFcXVhbChBdG9taWNT
dHJvbmdDQVMsIGV4cGVjdGVkKSkKKyAgICAvLworICAgIC8vIEl0IGFzc3VtZXMgdGhhdCBhdG9t
aWNWYWx1ZSBwb2ludHMgdG8gdGhlIENBUywgYW5kIG1fdmFsdWUgcG9pbnRzIHRvIHRoZSBpbnN0
cnVjdGlvbiBiZWluZworICAgIC8vIGdlbmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBj
b25zdW1lZCBldmVyeXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc3VtZWQuCisgICAgdm9pZCBh
cHBlbmRDQVMoVmFsdWUqIGF0b21pY1ZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGF0b21pYyk7CisgICAgICAgIAorICAgICAgICBib29sIGlz
QnJhbmNoID0gbV92YWx1ZS0+b3Bjb2RlKCkgPT0gQnJhbmNoOworICAgICAgICBib29sIGlzU3Ry
b25nID0gYXRvbWljLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wg
cmV0dXJuc09sZFZhbHVlID0gbV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTOwor
ICAgICAgICAKKyAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7
CisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworCisgICAgICAgIFRtcCB2YWx1
ZVJlc3VsdFRtcDsKKyAgICAgICAgVG1wIGJvb2xSZXN1bHRUbXA7CisgICAgICAgIGlmIChyZXR1
cm5zT2xkVmFsdWUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbnZlcnQpOworICAg
ICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSB0bXAobV92YWx1ZSk7CisgICAgICAgICAgICBib29s
UmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFu
Y2gpIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7Cisg
ICAgICAgICAgICBib29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOwor
ICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgVG1wIHN1Y2Nlc3NCb29sUmVzdWx0VG1wOworICAgICAgICBpZiAoaXNT
dHJvbmcgJiYgIWlzQnJhbmNoKQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBt
X2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xS
ZXN1bHRUbXAgPSBib29sUmVzdWx0VG1wOworCisgICAgICAgIFRtcCBleHBlY3RlZFZhbHVlVG1w
ID0gdG1wKGF0b21pYy0+Y2hpbGQoMCkpOworICAgICAgICBUbXAgbmV3VmFsdWVUbXAgPSB0bXAo
YXRvbWljLT5jaGlsZCgxKSk7CisgICAgICAgIAorICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9j
ayBzdWNjZXNzOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBmYWlsdXJlOworICAgICAg
ICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBtX2Jsb2NrVG9CbG9ja1tt
X2Jsb2NrXS0+c3VjY2Vzc29yKGludmVydCk7CisgICAgICAgICAgICBmYWlsdXJlID0gbV9ibG9j
a1RvQmxvY2tbbV9ibG9ja10tPnN1Y2Nlc3NvcighaW52ZXJ0KTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92
ZUZvclR5cGUoYXRvbWljLT5vcGVyYXRpb25UeXBlKCkpLCBpbW1PclRtcChhdG9taWMtPmNoaWxk
KDApKSwgbV9lYXgpOworICAgICAgICAgICAgaWYgKHJldHVybnNPbGRWYWx1ZSkgeworICAgICAg
ICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0cm9uZ0NBUywgd2lkdGgp
LCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIGFwcGVuZChy
ZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5vcGVyYXRpb25UeXBlKCkpLCBtX2VheCwgdmFsdWVS
ZXN1bHRUbXApOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc0JyYW5jaCkgeworICAgICAgICAg
ICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9uZ0NBUywgd2lk
dGgpLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3
VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW21fYmxv
Y2tdLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIGZhaWx1cmUpOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FT
LCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChpbnZlcnQgPyBNYWNyb0Fzc2VtYmxlcjo6RmFpbHVy
ZSA6IE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgsIHRtcChhdG9taWMtPmNoaWxkKDEp
KSwgYWRkcmVzcywgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAg
IC8vIFdlIHdpc2ggdG8gZW1pdDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9v
cDoKKyAgICAgICAgLy8gICAgIExvYWRMaW5rCisgICAgICAgIC8vICAgICBCcmFuY2ggTm90RXF1
YWwKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVuOiNmYWlsLCBFbHNlOiAjc3RvcmUKKyAg
ICAgICAgLy8gQmxvY2sgI3N0b3JlOgorICAgICAgICAvLyAgICAgU3RvcmVDb25kCisgICAgICAg
IC8vICAgICBYb3IgJDEsICVyZXN1bHQgICAgPC0tLSBvbmx5IGlmICFpbnZlcnQKKyAgICAgICAg
Ly8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAgICAvLyBC
bG9jayAjZmFpbDoKKyAgICAgICAgLy8gICAgIE1vdmUgJGludmVydCwgJXJlc3VsdAorICAgICAg
ICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8v
IEJsb2NrICNkb25lOgorICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BC
bG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3RvcmVCbG9jayA9
IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3VjY2Vzc0Jsb2NrID0gbnVs
bHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCAmJiBpc1N0cm9uZykKKyAgICAgICAgICAgIHN1
Y2Nlc3NCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogZmFpbEJs
b2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCkKKyAgICAgICAgICAgIGZhaWxC
bG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3Ryb25nRmFpbEJs
b2NrOworICAgICAgICBpZiAoaXNTdHJvbmcpCisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2sg
PSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBjb21wYXJpc29uRmFp
bDsKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sgd2Vha0ZhaWw7CisgICAgICAgIGlmIChp
c1N0cm9uZykgeworICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBzdHJvbmdGYWlsQmxvY2s7
CisgICAgICAgICAgICB3ZWFrRmFpbCA9IHJlbG9vcEJsb2NrOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKGlzQnJhbmNoKQorICAgICAgICAgICAgICAgIGNvbXBhcmlzb25GYWls
ID0gZmFpbHVyZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21wYXJpc29u
RmFpbCA9IGZhaWxCbG9jazsKKyAgICAgICAgICAgIHdlYWtGYWlsID0gZmFpbHVyZTsKKyAgICAg
ICAgfQorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFpcjo6
QmFzaWNCbG9jayogZG9uZUJsb2NrOworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ssIGRv
bmVCbG9jayk7CisgICAgICAgIAorICAgICAgICBhcHBlbmQoQWlyOjpKdW1wKTsKKyAgICAgICAg
YmVnaW5CbG9jay0+c2V0U3VjY2Vzc29ycyhyZWxvb3BCbG9jayk7CisgICAgICAgIAorICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKGxvYWRMaW5rT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0Zl
bmNlKCkpLCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcyk7CisgICAgICAgIHJlbG9v
cEJsb2NrLT5hcHBlbmQoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoQnJhbmNoLCB3aWR0aCks
IG1fdmFsdWUsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpLCB2YWx1ZVJl
c3VsdFRtcCwgZXhwZWN0ZWRWYWx1ZVRtcCk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5zZXRTdWNj
ZXNzb3JzKGNvbXBhcmlzb25GYWlsLCBzdG9yZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHN0
b3JlQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2Uo
KSksIG1fdmFsdWUsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCk7
CisgICAgICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5k
KEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJv
KSwgYm9vbFJlc3VsdFRtcCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgICAgIHN0b3JlQmxv
Y2stPnNldFN1Y2Nlc3NvcnMoc3VjY2Vzcywgd2Vha0ZhaWwpOworICAgICAgICAgICAgZG9uZUJs
b2NrLT5zdWNjZXNzb3JzKCkuY2xlYXIoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFk
b25lQmxvY2stPnNpemUoKSk7CisgICAgICAgICAgICBkb25lQmxvY2stPmFwcGVuZChBaXI6Ok9v
cHMsIG1fdmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGlzU3Ryb25n
KSB7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92
YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgc3VjY2Vzc0Jvb2xSZXN1
bHRUbXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0
U3VjY2Vzc29ycyhzdWNjZXNzQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6
OmltbSghaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICAgICAgc3VjY2Vzc0Js
b2NrLT5hcHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNz
QmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpbnZlcnQpCisgICAgICAgICAgICAgICAgICAgIHN0b3JlQmxv
Y2stPmFwcGVuZChYb3IzMiwgbV92YWx1ZSwgQXJnOjpiaXRJbW0oMSksIGJvb2xSZXN1bHRUbXAs
IGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN0b3Jl
QmxvY2stPmFwcGVuZChBaXI6Okp1bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN0b3Jl
QmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgZmFpbEJsb2NrLT5hcHBlbmQoTW92ZSwgbV92YWx1ZSwgQXJnOjpp
bW0oaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICBmYWlsQmxvY2stPmFwcGVu
ZChBaXI6Okp1bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgZmFpbEJsb2NrLT5zZXRTdWNjZXNz
b3JzKGRvbmVCbG9jayk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1N0cm9u
ZykgeworICAgICAgICAgICAgVG1wIHRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAg
ICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMt
Pmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcywgdG1wKTsKKyAg
ICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwg
QXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgdG1wLCBBcmc6OmJpdEltbSgtMSkp
OworICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGZhaWxCbG9jaywg
cmVsb29wQmxvY2spOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGJvb2wgYXBwZW5kVm9p
ZEF0b21pYyhBaXI6Ok9wY29kZSBhdG9taWNPcGNvZGUpCisgICAgeworICAgICAgICBpZiAobV91
c2VDb3VudHMubnVtVXNlcyhtX3ZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgCisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChpc1ZhbGlkRm9ybShhdG9taWNPcGNvZGUsIEFyZzo6SW1tLCBhZGRyZXNzLmtp
bmQoKSkgJiYgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgYXBwZW5kKGF0
b21pY09wY29kZSwgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzVmFsaWRG
b3JtKGF0b21pY09wY29kZSwgQXJnOjpUbXAsIGFkZHJlc3Mua2luZCgpKSkgeworICAgICAgICAg
ICAgYXBwZW5kKGF0b21pY09wY29kZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kR2VuZXJhbEF0b21pYyhB
aXI6Ok9wY29kZSBvcGNvZGUpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0g
bV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBBcmcgYWRkcmVz
cyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAgIFRtcCBvbGRWYWx1ZSA9IG1fY29kZS5uZXdUbXAo
R1ApOworICAgICAgICBUbXAgbmV3VmFsdWUgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAg
CisgICAgICAgIC8vIFdlIG5lZWQgYSBDQVMgbG9vcCBvciBhIExML1NDIGxvb3AuIFVzaW5nIHBy
ZXBhcmUvYXR0ZW1wdCBqYXJnb24sIHdlIHdhbnQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJs
b2NrICNyZWxvb3A6CisgICAgICAgIC8vICAgICBQcmVwYXJlCisgICAgICAgIC8vICAgICBvcGNv
ZGUKKyAgICAgICAgLy8gICAgIEF0dGVtcHQKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVu
OiNkb25lLCBFbHNlOiNyZWxvb3AKKyAgICAgICAgLy8gQmxvY2sgI2RvbmU6CisgICAgICAgIC8v
ICAgICBNb3ZlIG9sZFZhbHVlLCByZXN1bHQKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChyZWxh
eGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwgdG1wKGF0b21pYykpOwor
ICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2Nr
KCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpC
YXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9u
ZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChBaXI6Okp1bXApOworICAgICAgICBi
ZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAgICAg
IEFpcjo6T3Bjb2RlIHByZXBhcmVPcGNvZGU7CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkgeworICAgICAgICAgICAg
Y2FzZSBXaWR0aDg6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IExvYWQ4U2lnbmVk
RXh0ZW5kVG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lk
dGgxNjoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDE2U2lnbmVkRXh0ZW5k
VG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgzMjoK
KyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTW92ZTMyOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAgICAgICAgIHByZXBh
cmVPcGNvZGUgPSBNb3ZlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsK
KyAgICAgICAgICAgIG9wY29kZSA9IGxvYWRMaW5rT3Bjb2RlKGF0b21pYy0+b3BlcmF0aW9uV2lk
dGgoKSwgYXRvbWljLT5oYXNGZW5jZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZWxvb3BCbG9j
ay0+YXBwZW5kKHByZXBhcmVPcGNvZGUsIG1fdmFsdWUsIGFkZHJlc3MsIG9sZFZhbHVlKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChvcGNvZGUgIT0gQWlyOjpOb3ApIHsKKyAgICAgICAgICAgIGlm
IChpbW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwg
QXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5k
KG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOworICAgICAgICAgICAgZWxzZSBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwg
QXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5k
KG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFw
cGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBtX3ZhbHVlLCBvbGRWYWx1
ZSwgbmV3VmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChpbW0oYXRvbWljLT5jaGlsZCgwKSkg
JiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpUbXApKQorICAgICAgICAgICAg
ICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+
Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+
Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgQWlyOjpPcGNvZGUgY2FzT3Bjb2RlID0gT1BD
T0RFX0ZPUl9XSURUSChCcmFuY2hBdG9taWNTdHJvbmdDQVMsIGF0b21pYy0+b3BlcmF0aW9uV2lk
dGgoKSk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlw
ZShhdG9taWMtPnR5cGUoKSksIG1fdmFsdWUsIG9sZFZhbHVlLCBtX2VheCk7CisgICAgICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKGNhc09wY29kZSwgbV92YWx1ZSwgQXJnOjpzdGF0dXNDb25k
KE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7Cisg
ICAgICAgICAgICBUbXAgYm9vbFJlc3VsdCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAg
ICAgcmVsb29wQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUoYXRvbWljLT5vcGVyYXRpb25X
aWR0aCgpLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZSwgYWRkcmVzcywg
Ym9vbFJlc3VsdCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3Qz
MiwgbV92YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3Vs
dCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgfQorICAgICAgICByZWxvb3BCbG9jay0+c2V0
U3VjY2Vzc29ycyhkb25lQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgdm9p
ZCBsb3dlcigpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CkBA
IC0xOTcxLDMwICsyMzcxLDUwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIExvYWQ6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92
YWx1ZSwgbW92ZUZvclR5cGUobV92YWx1ZS0+dHlwZSgpKSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVl
KSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92
YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUg
PSBBaXI6Ok9vcHM7CisgICAgICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAg
ICAgICAgICAgICAgc3dpdGNoIChtZW1vcnktPnR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNh
c2UgSW50MzI6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3EzMjsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAg
ICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTY0OworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBvcGNv
ZGUgPSBtb3ZlRm9yVHlwZShtZW1vcnktPnR5cGUoKSk7CisgICAgICAgICAgICBhcHBlbmQodHJh
cHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1f
dmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIExvYWQ4UzogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBMb2FkOFNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRt
cChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIg
OiBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0
KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQ4Wjog
ewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOCwgbV92YWx1
ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29k
ZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRB
Y3E4IDogTG9hZDg7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9w
Y29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQxNlM6IHsKLSAgICAgICAg
ICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiwg
bV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/
IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAg
ICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZaOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBp
bmdJbnN0KG1fdmFsdWUsIExvYWQxNiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFs
dWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNiA6IExvYWQxNjsKKyAgICAgICAgICAg
IGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFs
dWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCisg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBBZGQ6IHsKICAgICAgICAgICAgIGlmICh0cnlBcHBl
bmRMZWEoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDkyLDcgKzI1MTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmlzQ2hpbGwoKSkKICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwogICAgICAgICAgICAgaWYgKGlzSW50KG1f
dmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAgIGxvd2VyWDg2RGl2
KERpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2RGl2KERpdik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKCFpc1g4NigpIHx8
IGlzRmxvYXQobV92YWx1ZS0+dHlwZSgpKSk7CkBAIC0yMTAzLDcgKzI1MjMsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIGNhc2UgVURpdjogewogICAgICAgICAgICAgaWYgKGlzSW50KG1fdmFsdWUt
PnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAgIGxvd2VyWDg2VURpdihVRGl2
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVEaXYpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjExNywxMyArMjUzNywxMyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIE1vZDogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYo
KSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV92YWx1ZS0+aXNDaGlsbCgpKTsKLSAg
ICAgICAgICAgIGxvd2VyWDg2RGl2KE1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZEaXYoTW9k
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgVU1vZDog
ewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7Ci0gICAgICAgICAgICBsb3dl
clg4NlVEaXYoVU1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVNb2QpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxNjIsMTAgKzI1ODIsMjggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPE5vdDMyLCBOb3Q2ND4obV92YWx1ZS0+Y2hp
bGQoMCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgLy8gVGhpcyBwYXR0ZXJuIGlzIHN1cGVyIHVzZWZ1bCBvbiBib3Ro
IHg4NiBhbmQgQVJNNjQsIHNpbmNlIHRoZSBpbnZlcnNpb24gb2YgdGhlIENBUyByZXN1bHQKKyAg
ICAgICAgICAgIC8vIGNhbiBiZSBkb25lIHdpdGggemVybyBjb3N0IG9uIHg4NiAoanVzdCBmbGlw
IHRoZSBzZXQgZnJvbSBFIHRvIE5FKSBhbmQgaXQncyBhIHByb2dyZXNzaW9uCisgICAgICAgICAg
ICAvLyBvbiBBUk02NCAoc2luY2UgU1RYIHJldHVybnMgMCBvbiBzdWNjZXNzLCBzbyBvcmRpbmFy
aWx5IHdlIGhhdmUgdG8gZmxpcCBpdCkuCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQo
MSktPmlzSW50KDEpCisgICAgICAgICAgICAgICAgJiYgaXNBdG9taWNDQVMobV92YWx1ZS0+Y2hp
bGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwobV92YWx1
ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1ZS0+
Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLT5jaGlsZCgwKSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxYb3IzMiwgWG9yNjQsIFhvckRvdWJsZSwgWG9y
RmxvYXQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwg
bV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBhcHBlbmRVbk9wPERlcGVuZDMyLCBEZXBlbmQ2
ND4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBTaGw6IHsKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+
aXNJbnQzMigxKSkgewpAQCAtMjI2Niw3ICsyNzA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlVG9T
dG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBh
ZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMjg3
LDcgKzI3MjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWly
OjpTdG9yZTgsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBl
bmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0yMzA4LDcgKzI3NDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTE2LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkp
OworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjQxNiw3ICsyODU0LDIyIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEVxdWFsOgotICAgICAgICBjYXNlIE5vdEVx
dWFsOgorICAgICAgICBjYXNlIE5vdEVxdWFsOiB7CisgICAgICAgICAgICBpZiAobV92YWx1ZS0+
Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICYm
IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSA9PSBtX3ZhbHVlLT5jaGlsZCgxKQorICAgICAg
ICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hp
bGQoMSkpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFs
dWUtPmNoaWxkKDEpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY29tbWl0
SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVuZENBUyht
X3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChjcmVhdGVDb21wYXJlKG1fdmFsdWUpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
TGVzc1RoYW46CiAgICAgICAgIGNhc2UgR3JlYXRlclRoYW46CiAgICAgICAgIGNhc2UgTGVzc0Vx
dWFsOgpAQCAtMjcyNyw2ICszMTgwLDQwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIEJyYW5jaDogeworICAgICAgICAgICAgaWYgKGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+
Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIGJyYW5jaENoaWxkID0gbV92YWx1
ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChicmFuY2hDaGlsZC0+b3Bjb2Rl
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAg
YXBwZW5kQ0FTKGJyYW5jaENoaWxkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJv
bmdDQVM6CisgICAgICAgICAgICAgICAgICAgIC8vIEEgYnJhbmNoIGlzIGEgY29tcGFyaXNvbiB0
byB6ZXJvLgorICAgICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5p
c0ludCgwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNo
Q2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgY2FzZSBFcXVhbDoKKyAgICAgICAgICAgICAgICBjYXNlIE5vdEVxdWFs
OgorICAgICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5vcGNvZGUo
KSA9PSBBdG9taWNTdHJvbmdDQVMKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGNhbkJlSW50
ZXJuYWwoYnJhbmNoQ2hpbGQtPmNoaWxkKDApKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYg
YnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5jaGlsZCgwKSA9PSBicmFuY2hDaGlsZC0+Y2hpbGQoMSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkLT5jaGls
ZCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQtPmNo
aWxkKDApLCBicmFuY2hDaGlsZC0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVu
ZChjcmVhdGVCcmFuY2gobV92YWx1ZS0+Y2hpbGQoMCkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMjc4NCw3ICszMjcxLDgxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBh
cHBlbmQoQWlyOjpFbnRyeVN3aXRjaCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgIGNhc2Ug
QXRvbWljU3Ryb25nQ0FTOiB7CisgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZSwgZmFsc2Up
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBBdG9taWNYY2hnQWRkOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0g
bV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0
b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY0FkZCwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgp
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBB
cmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZ0FkZCwgYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBhZGRy
ZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBl
KGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0bXAoYXRvbWljKSk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyksIGFkZHJlc3MpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXBwZW5k
R2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChBZGQsIGF0b21pYy0+b3Bl
cmF0aW9uV2lkdGgoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAg
ICAgY2FzZSBBdG9taWNYY2hnU3ViOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWlj
ID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9p
ZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1N1YiwgYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFN1YiwgYXRv
bWljLT5vcGVyYXRpb25XaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6IHsKKyAgICAgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAg
ICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQW5kLCBh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5P
TklDQUxfV0lEVEgoQW5kLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNo
Z09yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRv
bWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9S
X1dJRFRIKEF0b21pY09yLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9t
aWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoT3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgo
KSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBBdG9taWNYY2hnWG9yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWlj
ID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9p
ZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1hvciwgYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFhvciwgYXRv
bWljLT5vcGVyYXRpb25XaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisgICAgICAgICAg
ICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hjaGcsIGF0b21p
Yy0+b3BlcmF0aW9uV2lkdGgoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0ob3Bjb2Rl
LCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJl
bGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIHRtcChhdG9taWMtPmNoaWxkKDApKSwg
dG1wKGF0b21pYykpOworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChhdG9taWMp
LCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5P
TklDQUxfV0lEVEgoWG9yLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjc5Miw2NCArMzM1Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGRhdGFMb2coIkZBVEFMOiBjb3VsZCBub3QgbG93ZXIgIiwgZGVlcER1bXAobV9w
cm9jZWR1cmUsIG1fdmFsdWUpLCAiXG4iKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9Ci0KLSAgICB2b2lkIGxvd2VyWDg2RGl2KEIzOjpPcGNvZGUgb3ApCi0g
ICAgewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAo
WDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6
ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVXb3JkOwotICAgICAg
ICBBaXI6Ok9wY29kZSBkaXY7Ci0gICAgICAgIHN3aXRjaCAobV92YWx1ZS0+dHlwZSgpKSB7Ci0g
ICAgICAgIGNhc2UgSW50MzI6Ci0gICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2
Q29udmVydFRvRG91YmxlV29yZDMyOwotICAgICAgICAgICAgZGl2ID0gWDg2RGl2MzI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ2NDoKLSAgICAgICAgICAgIGNvbnZlcnRU
b0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0OwotICAgICAgICAgICAgZGl2ID0g
WDg2RGl2NjQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8IG9wID09IE1vZCk7Ci0gICAg
ICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBEaXYgPyBYODZSZWdp
c3RlcnM6OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0
bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBlbmQoY29udmVydFRvRG91
YmxlV29yZCwgZWF4LCBlZHgpOwotICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1f
dmFsdWUtPmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1w
KG1fdmFsdWUpKTsKLQotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAg
VU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGxv
d2VyWDg2VURpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAgICAg
VG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAgICAgICAgQWlyOjpPcGNvZGUg
ZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0Owot
Ci0gICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVNb2QpOwotICAgICAgICBYODZS
ZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gVURpdiA/IFg4NlJlZ2lzdGVyczo6
ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3Zh
bHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChYb3I2NCwgZWR4LCBlZHgpOwot
ICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7Ci0g
ICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1wKG1fdmFsdWUpKTsKLSNlbHNlCi0g
ICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9S
TSgpOwotI2VuZGlmCi0gICAgfQotCisgICAgCiAgICAgSW5kZXhTZXQ8VmFsdWU+IG1fbG9ja2Vk
OyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQgd2lsbCBoYXZlIG5vIFRtcCBpbiBBaXIuCiAgICAg
SW5kZXhNYXA8VmFsdWUsIFRtcD4gbV92YWx1ZVRvVG1wOyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRo
YXQgbXVzdCBoYXZlIGEgVG1wIGluIEFpci4gV2Ugc2F5IHRoYXQgYSBWYWx1ZSogd2l0aCBhIG5v
bi1udWxsIFRtcCBpcyAicGlubmVkIi4KICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3BoaVRv
VG1wOyAvLyBFYWNoIFBoaSBnZXRzIGl0cyBvd24gVG1wLgpAQCAtMjg2NCw3ICszMzY4LDcgQEAg
cHJpdmF0ZToKIAogICAgIFZlY3RvcjxWZWN0b3I8SW5zdCwgND4+IG1faW5zdHM7CiAgICAgVmVj
dG9yPEluc3Q+IG1fcHJvbG9ndWU7Ci0KKyAgICAKICAgICBCMzo6QmFzaWNCbG9jayogbV9ibG9j
azsKICAgICBib29sIG1faXNSYXJlOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CkBAIC0yODc1LDYg
KzMzNzksMTIgQEAgcHJpdmF0ZToKIAogICAgIFByb2NlZHVyZSYgbV9wcm9jZWR1cmU7CiAgICAg
Q29kZSYgbV9jb2RlOworCisgICAgQWlyOjpCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0
aW9uU2V0OworCisgICAgVG1wIG1fZWF4OworICAgIFRtcCBtX2VjeDsKKyAgICBUbXAgbV9lZHg7
CiB9OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MzAgKzM0LDQ4IEBAIE1lbW9yeVZhbHVlOjp+TWVtb3J5VmFsdWUoKQogewogfQogCitUeXBlIE1l
bW9yeVZhbHVlOjphY2Nlc3NUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNMb2FkKCkpCisgICAg
ICAgIHJldHVybiB0eXBlKCk7CisgICAgLy8gVGhpcyBoYXBwZW5zIHRvIHdvcmsgZm9yIGF0b21p
Y3MsIHRvby4gVGhhdCdzIHdoeSBBdG9taWNWYWx1ZSBkb2VzIG5vdCBuZWVkIHRvIG92ZXJyaWRl
IHRoaXMuCisgICAgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7Cit9CisKK0JhbmsgTWVtb3J5VmFs
dWU6OmFjY2Vzc0JhbmsoKSBjb25zdAoreworICAgIHJldHVybiBiYW5rRm9yVHlwZShhY2Nlc3NU
eXBlKCkpOworfQorCiBzaXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkgY29uc3QK
IHsKKyAgICByZXR1cm4gYnl0ZXMoYWNjZXNzV2lkdGgoKSk7Cit9CisKK1dpZHRoIE1lbW9yeVZh
bHVlOjpsb2FkU3RvcmVXaWR0aCgpIGNvbnN0Cit7CiAgICAgc3dpdGNoIChvcGNvZGUoKSkgewog
ICAgIGNhc2UgTG9hZDhaOgogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgU3RvcmU4OgotICAg
ICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICBjYXNlIExvYWQxNlo6
CiAgICAgY2FzZSBMb2FkMTZTOgogICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgcmV0dXJuIDI7
CisgICAgICAgIHJldHVybiBXaWR0aDE2OwogICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmV0dXJu
IHNpemVvZlR5cGUodHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZSh0eXBlKCkp
OwogICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKGNoaWxkKDApLT50
eXBlKCkpOworICAgICAgICByZXR1cm4gd2lkdGhGb3JUeXBlKGNoaWxkKDApLT50eXBlKCkpOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gV2lkdGg4OwogICAgIH0KIH0KIAogV2lkdGgg
TWVtb3J5VmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2lkdGhGb3JC
eXRlcyhhY2Nlc3NCeXRlU2l6ZSgpKTsKKyAgICByZXR1cm4gbG9hZFN0b3JlV2lkdGgoKTsKIH0K
IAogdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKQEAgLTY3LDYgKzg1LDggQEAgdm9pZCBNZW1vcnlWYWx1ZTo6ZHVt
cE1ldGEoQ29tbWFQcmludGVyJgogICAgIGlmICgoaXNMb2FkKCkgJiYgZWZmZWN0cygpLnJlYWRz
ICE9IHJhbmdlKCkpCiAgICAgICAgIHx8IChpc1N0b3JlKCkgJiYgZWZmZWN0cygpLndyaXRlcyAh
PSByYW5nZSgpKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicmFuZ2UgPSAiLCByYW5nZSgp
KTsKKyAgICBpZiAoZmVuY2VSYW5nZSgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJmZW5j
ZVJhbmdlID0gIiwgZmVuY2VSYW5nZSgpKTsKIH0KIAogVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9u
ZUltcGwoKSBjb25zdApAQCAtNzQsNiArOTQsNTggQEAgVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9u
ZUltcGwoKSBjb25zdAogICAgIHJldHVybiBuZXcgTWVtb3J5VmFsdWUoKnRoaXMpOwogfQogCisv
LyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkg
b2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CisvLyBkZXNjcmliZXMgdGhlIHJl
dHVybmVkIHR5cGUpLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0
eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQpCisgICAg
OiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCisgICAg
LCBtX29mZnNldChvZmZzZXQpCit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAg
ICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2UgTG9hZDoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6Cisg
ICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAgICAg
QVNTRVJUKHR5cGUgPT0gSW50MzIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
U3RvcmU4OgorICAgICAgICBjYXNlIFN0b3JlMTY6CisgICAgICAgIGNhc2UgU3RvcmU6CisgICAg
ICAgICAgICBBU1NFUlQodHlwZSA9PSBWb2lkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4g
dHlwZSBpcyBpbXBsaWVkLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3Jp
Z2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0KQorICAgIDogTWVtb3J5
VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQoreworICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAg
ICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9h
ZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgorTWVtb3J5VmFsdWU6Ok1l
bW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSog
cG9pbnRlciwgaW50MzJfdCBvZmZzZXQpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5k
LCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQor
eworICAgIEFTU0VSVChCMzo6aXNTdG9yZShraW5kLm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNDggKzI3LDE3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNC
YW5rLmgiCiAjaW5jbHVkZSAiQjNIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBh
bGxvdyBmZW5jZWQgbWVtb3J5IGFjY2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
TWVtb3J5VmFsdWUgOiBwdWJsaWMgVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFj
Y2VwdHMoS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7
Ci0gICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2Fz
ZSBMb2FkMTZaOgotICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAg
ICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBT
dG9yZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wg
aXNTdG9yZShLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkp
IHsKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAg
Y2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGlj
IGJvb2wgaXNMb2FkKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtp
bmQpICYmICFpc1N0b3JlKGtpbmQpOworICAgICAgICByZXR1cm4gaXNNZW1vcnlBY2Nlc3Moa2lu
ZC5vcGNvZGUoKSk7CiAgICAgfQogCiAgICAgfk1lbW9yeVZhbHVlKCk7CkBAIC03OCw3NiArNDcs
NTYgQEAgcHVibGljOgogCiAgICAgY29uc3QgSGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFuZ2U7IH0KICAgICB2b2lkIHNldFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2Up
IHsgbV9yYW5nZSA9IHJhbmdlOyB9CisgICAgCisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3Ig
cmFuZ2UuCisgICAgY29uc3QgSGVhcFJhbmdlJiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IHJhbmdlKCk7IH0KKyAgICB2b2lkIHNldEFjY2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFu
Z2UpIHsgc2V0UmFuZ2UocmFuZ2UpOyB9CisgICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBmZW5j
ZVJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9mZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRGZW5j
ZVJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0K
KworICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc1N0b3JlKG9wY29kZSgp
KTsgfQorICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1cm4gQjM6OmlzTG9hZChvcGNvZGUo
KSk7IH0KIAotICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBWb2lk
OyB9Ci0gICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgIT0gVm9pZDsgfQor
ICAgIGJvb2wgaGFzRmVuY2UoKSBjb25zdCB7IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsgfQogCisg
ICAgVHlwZSBhY2Nlc3NUeXBlKCkgY29uc3Q7CisgICAgQmFuayBhY2Nlc3NCYW5rKCkgY29uc3Q7
CiAgICAgc2l6ZV90IGFjY2Vzc0J5dGVTaXplKCkgY29uc3Q7Ci0gICAgV2lkdGggYWNjZXNzV2lk
dGgoKSBjb25zdDsKKyAgICAKKyAgICAvLyBTbGlnaHRseSBmYXN0ZXIgdmVyc2lvbiBvZiBhY2Nl
c3NXaWR0aCwgaWYgeW91IGtub3cgdGhhdCB5b3UncmUgd29ya2luZyB3aXRoIGEgbG9hZCBvciBz
dG9yZS4KKyAgICBXaWR0aCBsb2FkU3RvcmVXaWR0aCgpIGNvbnN0OworICAgIAorICAgIHZpcnR1
YWwgV2lkdGggYWNjZXNzV2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVt
cE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKLQotICAgIC8vIFVzZSB0aGlzIGZvcm0g
Zm9yIExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhh
dCBoYXZlIGEgc3VmZml4IHRoYXQKLSAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUp
LgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBW
YWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNr
ZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKKyAgICAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZVRh
ZywgS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zmc2V0LCBB
cmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtp
bmQsIHR5cGUsIG9yaWdpbiwgYXJndW1lbnRzLi4uKQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNl
dCkKLSAgICAgICAgLCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCiAgICAgewotICAgICAgICBp
ZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgp
KSB7Ci0gICAgICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIExvYWQ4WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDhTOgotICAgICAgICAg
ICAgY2FzZSBMb2FkMTZaOgotICAgICAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAgICAgICAg
ICAgIEFTU0VSVCh0eXBlID09IEludDMyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAg
ICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBWb2lkKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9
CisgICAgCisgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExv
YWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAorICAgIC8v
IGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCisgICAgTWVtb3J5VmFsdWUoS2luZCwgVHlw
ZSwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKTsKIAogICAgIC8v
IFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVk
LgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50
ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJbnQz
Miwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpCi0gICAgewotICAgIH0KKyAgICBNZW1vcnlWYWx1
ZShLaW5kLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOwogCiAg
ICAgLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2lu
ZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9y
aWdpbiwgdmFsdWUsIHBvaW50ZXIpCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAg
ICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSkKLSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJU
X0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAg
ICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAg
ICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KKyAgICBNZW1vcnlW
YWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qg
b2Zmc2V0ID0gMCk7CisgICAgCiAgICAgaW50MzJfdCBtX29mZnNldCB7IDAgfTsKLSAgICBIZWFw
UmFuZ2UgbV9yYW5nZTsKKyAgICBIZWFwUmFuZ2UgbV9yYW5nZSB7IEhlYXBSYW5nZTo6dG9wKCkg
fTsKKyAgICBIZWFwUmFuZ2UgbV9mZW5jZVJhbmdlIHsgSGVhcFJhbmdlKCkgfTsKIH07CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNv
ZGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYzLDYgKzI2MywzMyBAQCB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgT3BjCiAgICAgY2FzZSBTdG9yZToKICAgICAgICAg
b3V0LnByaW50KCJTdG9yZSIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNXZWFr
Q0FTOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1dlYWtDQVMiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1N0
cm9uZ0NBUyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAg
ICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdBZGQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnQW5kIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgb3V0LnByaW50
KCJBdG9taWNYY2hnT3IiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ1N1
YjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnU3ViIik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ1hv
ciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICBvdXQu
cHJpbnQoIkF0b21pY1hjaGciKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRGVwZW5kOgor
ICAgICAgICBvdXQucHJpbnQoIkRlcGVuZCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBX
YXNtQWRkcmVzczoKICAgICAgICAgb3V0LnByaW50KCJXYXNtQWRkcmVzcyIpOwogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkocmV2aXNpb24gMjEy
OTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIz
VHlwZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTgyLDcgKzgzLDYgQEAgZW51bSBP
cGNvZGUgOiBpbnQxNl90IHsKICAgICBNb2QsIC8vIEFsbCBiZXRzIGFyZSBvZmYgYXMgdG8gd2hh
dCB3aWxsIGhhcHBlbiB3aGVuIHlvdSBleGVjdXRlIHRoaXMgZm9yIC0yXjMxJS0xIGFuZCB4JTAu
CiAgICAgVU1vZCwKIAotCiAgICAgLy8gUG9seW1vcnBoaWMgbmVnYXRpb24uIE5vdGUgdGhhdCB3
ZSBvbmx5IG5lZWQgdGhpcyBmb3IgZmxvYXRpbmcgcG9pbnQsIHNpbmNlIGludGVnZXIgbmVnYXRp
b24KICAgICAvLyBpcyBleGFjdGx5IGxpa2UgU3ViKDAsIHgpLiBCdXQgdGhhdCdzIG5vdCB0cnVl
IGZvciBmbG9hdGluZyBwb2ludC4gU3ViKDAsIDApIGlzIDAsIHdoaWxlCiAgICAgLy8gTmVnKDAp
IGlzIC0wLiBBbHNvLCB3ZSBjYW5vbmljYWxpemUgU3ViKDAsIHgpIGludG8gTmVnKHgpIGluIGNh
c2Ugb2YgaW50ZWdlcnMuCkBAIC0xNjIsNiArMTYyLDEwNyBAQCBlbnVtIE9wY29kZSA6IGludDE2
X3QgewogICAgIFN0b3JlMTYsCiAgICAgLy8gVGhpcyBpcyBhIHBvbHltb3JwaGljIHN0b3JlIGZv
ciBJbnQzMiwgSW50NjQsIEZsb2F0LCBhbmQgRG91YmxlLgogICAgIFN0b3JlLAorICAgIAorICAg
IC8vIEF0b21pYyBjb21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4uIE1heSBj
aG9vc2UgdG8gZG8gbm90aGluZyBhbmQgcmV0dXJuIGZhbHNlLiBZb3UgY2FuCisgICAgLy8gdXN1
YWxseSBhc3N1bWUgdGhhdCB0aGlzIGlzIGZhc3RlciBhbmQgcmVzdWx0cyBpbiBsZXNzIGNvZGUg
dGhhbiBBdG9taWNTdHJvbmdDQVMsIHRob3VnaCB0aGF0J3MKKyAgICAvLyBub3QgbmVjZXNzYXJp
bHkgdHJ1ZSBvbiBJbnRlbCwgaWYgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIGRvZXMgaXRzIGpvYi4g
SW1hZ2luZSB0aGF0IHRoaXMgb3Bjb2RlIGlzCisgICAgLy8gYXMgaWYgeW91IGRpZCB0aGlzIGF0
b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8vIGJv
b2wgQXRvbWljV2Vha0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAg
ICAvLyB7CisgICAgLy8gICAgIGlmICghcmFuZCgpKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZh
bHNlOyAvLyBSZWFsIHdvcmxkIGV4YW1wbGUgb2YgdGhpczogY29udGV4dCBzd2l0Y2ggb24gQVJN
IHdoaWxlIGRvaW5nIENBUy4KKyAgICAvLyAgICAgaWYgKCpwdHIgIT0gZXhwZWN0ZWRWYWx1ZSkK
KyAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyAgICAgKnB0ciA9IG5ld1ZhbHVl
OworICAgIC8vICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBOb3Rl
IHRoYXQgYWxsIGF0b21pY3MgcHV0IHRoZSBwb2ludGVyIGxhc3QgdG8gYmUgY29uc2lzdGVudCB3
aXRoIGhvdyBsb2FkcyBhbmQgc3RvcmVzIHdvcmsuIFRoaXMKKyAgICAvLyBpcyBhIGdvb2Z5IHRy
YWRpdGlvbiwgYnV0IGl0J3MgaGFybWxlc3MsIGFuZCBiZXR0ZXIgdGhhbiBiZWluZyBpbmNvbnNp
c3RlbnQuCisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgd2VhayBDQVMgaGFzIG5vIGZlbmNpbmcg
Z3VhcmFudGVlcyB3aGVuIGl0IGZhaWxzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZwor
ICAgIC8vIHRyYW5zZm9ybWF0aW9uIGlzIGFsd2F5cyB2YWxpZDoKKyAgICAvLworICAgIC8vIEJl
Zm9yZToKKyAgICAvLworICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0
ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBF
bHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBBZnRlcjoKKyAgICAvLworICAgIC8vICAgICAgICAg
QnJhbmNoKEVxdWFsKExvYWQocHRyKSwgZXhwZWN0ZWQpKQorICAgIC8vICAgICAgIFN1Y2Nlc3Nv
cnM6IFRoZW46I2F0dGVtcHQsIEVsc2U6I2ZhaWwKKyAgICAvLyAgICAgQkIjYXR0ZW1wdDoKKyAg
ICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FTKGV4cGVjdGVkLCBuZXcsIHB0cikpCisg
ICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3VjY2VzcywgRWxzZTojZmFpbAorICAgIC8v
CisgICAgLy8gQm90aCBraW5kcyBvZiBDQVMgZm9yIG5vbi1jYW5vbmljYWwgd2lkdGhzIChXaWR0
aDggYW5kIFdpZHRoMTYpIGlnbm9yZSB0aGUgaXJyZWxldmFudCBiaXRzIG9mIHRoZQorICAgIC8v
IGlucHV0LgorICAgIEF0b21pY1dlYWtDQVMsCisgICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUg
YW5kIHN3YXAgdGhhdCByZXR1cm5zIHRoZSBvbGQgdmFsdWUuIERvZXMgbm90IGhhdmUgdGhlIG5v
bmRldGVybWluaXNtIG9mIFdlYWtDQVMuCisgICAgLy8gVGhpcyBpcyBhIGJpdCBtb3JlIGNvZGUg
YW5kIGEgYml0IHNsb3dlciBpbiBzb21lIGNhc2VzLCB0aG91Z2ggbm90IGJ5IGEgbG90LiBJbWFn
aW5lIHRoYXQgdGhpcworICAgIC8vIG9wY29kZSBpcyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWlj
YWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gVCBBdG9t
aWNTdHJvbmdDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBUKiBwdHIpCisgICAgLy8g
eworICAgIC8vICAgICBUIG9sZFZhbHVlID0gKnB0cjsKKyAgICAvLyAgICAgaWYgKG9sZFZhbHVl
ID09IGV4cGVjdGVkVmFsdWUpCisgICAgLy8gICAgICAgICAqcHRyID0gbmV3VmFsdWU7CisgICAg
Ly8gICAgIHJldHVybiBvbGRWYWx1ZQorICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhh
dCBBdG9taWNXZWFrQ0FTIGFuZCBBdG9taWNTdHJvbmdDQVMgc29ydCBvZiBoYXZlIHRoaXMga2lu
ZCBvZiBlcXVpdmFsZW5jZToKKyAgICAvLworICAgIC8vIEF0b21pY1dlYWtDQVMoQGV4cCwgQG5l
dywgQHB0cikgPT0gRXF1YWwoQXRvbWljU3Ryb25nQ0FTKEBleHAsIEBuZXcsIEBwdHIpLCBAZXhw
KQorICAgIC8vCisgICAgLy8gQXNzdW1pbmcgdGhhdCB0aGUgV2Vha0NBUyBkb2VzIG5vdCBzcHVy
aW91c2x5IGZhaWwsIG9mIGNvdXJzZS4KKyAgICBBdG9taWNTdHJvbmdDQVMsCisgICAgCisgICAg
Ly8gQXRvbWljYWxseSBfX18gYSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybiB0aGUgb2xkIHZh
bHVlLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNYY2hnX19fKEBv
cGVyYW5kLCBAcHRyKQorICAgIC8vCisgICAgLy8gRm9yIG5vbi1jYW5vbmljYWwgd2lkdGhzIChX
aWR0aDggYW5kIFdpZHRoMTYpLCB0aGVzZSByZXR1cm4gc2lnbi1leHRlbmRlZCByZXN1bHRzIGFu
ZCBpZ25vcmUgdGhlCisgICAgLy8gaXJyZWxldmFudCBiaXRzIG9mIHRoZWlyIGlucHV0cy4KKyAg
ICBBdG9taWNYY2hnQWRkLAorICAgIEF0b21pY1hjaGdBbmQsCisgICAgQXRvbWljWGNoZ09yLAor
ICAgIEF0b21pY1hjaGdTdWIsCisgICAgQXRvbWljWGNoZ1hvciwKKyAgICAKKyAgICAvLyBGSVhN
RTogTWF5YmUgd2Ugc2hvdWxkIGhhdmUgQXRvbWljWGNoZ05lZyBhbmQgQXRvbWljWGNoZ05vdC4K
KyAgICAKKyAgICAvLyBBdG9taWNhbGx5IGV4Y2hhbmdlIGEgdmFsdWUgd2l0aCBhIG1lbW9yeSBs
b2NhdGlvbi4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWljWGNoZyhA
bmV3VmFsdWUsIEBwdHIpCisgICAgQXRvbWljWGNoZywKKyAgICAKKyAgICAvLyBJbnRyb2R1Y2Ug
YW4gaW52aXNpYmxlIGRlcGVuZGVuY3kgZm9yIGJsb2NraW5nIG1vdGlvbiBvZiBsb2FkcyB3aXRo
IHJlc3BlY3QgdG8gZWFjaCBvdGhlci4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9
IERlcGVuZChAcGhhbnRvbSkKKyAgICAvLworICAgIC8vIFRoaXMgaXMgZXZlbnR1YWxseSBjb2Rl
Z2VuZXJhdGVkIHRvIGhhdmUgbG9jYWwgc2VtYW50aWNzIGFzIGlmIHdlIGRpZDoKKyAgICAvLwor
ICAgIC8vIEByZXN1bHQgPSAkMAorICAgIC8vCisgICAgLy8gQnV0IGl0IGVuc3VyZXMgdGhhdCB0
aGUgdXNlcnMgb2YgQHJlc3VsdCBjYW5ub3QgZXhlY3V0ZSB1bnRpbCBAcGhhbnRvbSBpcyBjb21w
dXRlZC4KKyAgICAvLworICAgIC8vIFRoZSBjb21waWxlciBpcyBub3QgYWxsb3dlZCB0byByZWFz
b24gYWJvdXQgdGhlIGZhY3QgdGhhdCBEZXBlbmQgY29kZWdlbmVyYXRlcyB0aGlzIHdheS4gQW55
IGtpbmQKKyAgICAvLyBvZiB0cmFuc2Zvcm1hdGlvbiBvciBhbmFseXNpcyB0aGF0IHJlbGllcyBv
biB0aGUgaW5zaWdodCB0aGF0IERlcGVuZCBpcyByZWFsbHkgemVybyBpcyB1bnNvdW5kLAorICAg
IC8vIGJlY2F1c2UgaXQgdW5sb2NrcyByZW9yZGVyaW5nIG9mIHVzZXJzIG9mIEByZXN1bHQgYW5k
IEBwaGFudG9tLgorICAgIC8vCisgICAgLy8gT24gWDg2LCB0aGlzIGlzIGxvd2VyZWQgdG8gYSBs
b2FkLWxvYWQgZmVuY2UgYW5kIEByZXN1bHQgdXNlcyBAcGhhbnRvbSBkaXJlY3RseS4KKyAgICAv
LworICAgIC8vIE9uIEFSTSwgdGhpcyBpcyBsb3dlcmVkIGFzIGlmIGxpa2U6CisgICAgLy8KKyAg
ICAvLyBAcmVzdWx0ID0gQml0WG9yKEBwaGFudG9tLCBAcGhhbnRvbSkKKyAgICAvLworICAgIC8v
IEV4Y2VwdCB0aGF0IHRoZSBjb21waWxlciBuZXZlciBnZXRzIGFuIG9wcG9ydHVuaXR5IHRvIHNp
bXBsaWZ5IG91dCB0aGUgQml0WG9yLgorICAgIERlcGVuZCwKIAogICAgIC8vIFRoaXMgaXMgdXNl
ZCB0byBjb21wdXRlIHRoZSBhY3R1YWwgYWRkcmVzcyBvZiBhIFdhc20gbWVtb3J5IG9wZXJhdGlv
bi4gSXQgdGFrZXMgYW4gSW50UHRyCiAgICAgLy8gYW5kIGEgcGlubmVkIHJlZ2lzdGVyIHRoZW4g
Y29tcHV0ZXMgdGhlIGFwcHJvcHJpYXRlIEludFB0ciBhZGRyZXNzLiBGb3IgdGhlIHVzZS1jYXNl
IG9mCkBAIC0zMDEsNiArNDAyLDExMCBAQCBpbmxpbmUgYm9vbCBpc0RlZmluaXRlbHlUZXJtaW5h
bChPcGNvZGUgCiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBpc0xvYWQoT3Bjb2RlIG9wY29kZSkK
K3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9h
ZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBMb2Fk
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1N0b3JlKE9wY29kZSBvcGNvZGUpCit7Cisg
ICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNlIFN0b3JlMTY6
CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNMb2FkU3RvcmUo
T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgTG9hZDha
OgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6
CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3RvcmUxNjoKKyAg
ICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pYyhPcGNvZGUg
b3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FT
OgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAg
ICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBB
dG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hj
aGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljQ0FTKE9wY29kZSBvcGNvZGUp
Cit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAg
Y2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWlj
WGNoZyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBB
dG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hj
aGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgor
ICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNNZW1vcnlB
Y2Nlc3MoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICByZXR1cm4gaXNBdG9taWMob3Bjb2RlKSB8fCBp
c0xvYWRTdG9yZShvcGNvZGUpOworfQorCitpbmxpbmUgT3Bjb2RlIHNpZ25FeHRlbmRPcGNvZGUo
V2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4Ogor
ICAgICAgICByZXR1cm4gU0V4dDg7CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4g
U0V4dDE2OworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBPb3BzOworICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQcm9jZWR1cmUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDggQEAg
dm9pZCBQcm9jZWR1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgYwogICAgICAgICB9CiAgICAg
ICAgIGRhdGFMb2coIiAgICAiLCBkZWVwRHVtcCgqdGhpcywgdmFsdWUpLCAiXG4iKTsKICAgICB9
CisgICAgaWYgKGhhc1F1aXJrcygpKQorICAgICAgICBvdXQucHJpbnQoIkhhcyBRdWlya3M6IFRy
dWVcbiIpOwogICAgIGlmICh2YXJpYWJsZXMoKS5zaXplKCkpIHsKICAgICAgICAgb3V0LnByaW50
KCJWYXJpYWJsZXM6XG4iKTsKICAgICAgICAgZm9yIChWYXJpYWJsZSogdmFyaWFibGUgOiB2YXJp
YWJsZXMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogYWRk
SW50Q29uc3RhbnQoT3JpZ2luLCBUeXBlLCBpbnQ2NF90IHZhbHVlKTsKICAgICBWYWx1ZSogYWRk
SW50Q29uc3RhbnQoVmFsdWUqLCBpbnQ2NF90IHZhbHVlKTsKIAorICAgIC8vIFlvdSdyZSBndWFy
YW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgVmFsdWUqIGFkZEJvdHRvbShPcmlnaW4s
IFR5cGUpOwogICAgIFZhbHVlKiBhZGRCb3R0b20oVmFsdWUqKTsKIApAQCAtMTk1LDYgKzE5Niwx
MiBAQCBwdWJsaWM6CiAgICAgLy8gYWxpdmUuIEdyZWF0IGZvciBjb21waWxlci1nZW5lcmF0ZWQg
ZGF0YSBzZWN0aW9ucywgbGlrZSBzd2l0Y2gganVtcCB0YWJsZXMgYW5kIGNvbnN0YW50IHBvb2xz
LgogICAgIC8vIFRoaXMgcmV0dXJucyBtZW1vcnkgdGhhdCBoYXMgYmVlbiB6ZXJvLWluaXRpYWxp
emVkLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFkZERhdGFTZWN0aW9uKHNpemVfdCk7
CisgICAgCisgICAgLy8gU29tZSBvcGVyYXRpb25zIGFyZSBzcGVjaWZpZWQgaW4gQjMgSVIgdG8g
YmVoYXZlIG9uZSB3YXkgYnV0IG9uIHRoaXMgZ2l2ZW4gQ1BVIHRoZXkgYmVoYXZlIGEKKyAgICAv
LyBkaWZmZXJlbnQgd2F5LiBXaGVuIHRydWUsIHRob3NlIEIzIElSIG9wcyBzd2l0Y2ggdG8gYmVo
YXZpbmcgdGhlIENQVSB3YXksIGFuZCB0aGUgb3B0aW1pemVyIG1heQorICAgIC8vIHN0YXJ0IHRh
a2luZyBhZHZhbnRhZ2Ugb2YgaXQuCisgICAgYm9vbCBoYXNRdWlya3MoKSBjb25zdCB7IHJldHVy
biBtX2hhc1F1aXJrczsgfQorICAgIHZvaWQgc2V0SGFzUXVpcmtzKGJvb2wgdmFsdWUpIHsgbV9o
YXNRdWlya3MgPSB2YWx1ZTsgfQogCiAgICAgT3BhcXVlQnlwcm9kdWN0cyYgYnlwcm9kdWN0cygp
IHsgcmV0dXJuICptX2J5cHJvZHVjdHM7IH0KIApAQCAtMjUyLDYgKzI1OSw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChQcmludFN0cmVhbSYsIE9yaWdpbik+PiBtX29y
aWdpblByaW50ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9mcm9udGVuZERhdGE7CiAgICAgUENUb09y
aWdpbk1hcCBtX3BjVG9PcmlnaW5NYXA7CisgICAgYm9vbCBtX2hhc1F1aXJrcyB7IGZhbHNlIH07
CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJC
M0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1
ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0NvbXB1dGVEaXZpc2lvbk1h
Z2ljLmgiCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgYnJlYWs7Ci0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIE5lZzoKICAgICAg
ICAgICAgIC8vIFR1cm4gdGhpczogTmVnKGNvbnN0YW50KQogICAgICAgICAgICAgLy8gSW50byB0
aGlzOiAtY29uc3RhbnQKQEAgLTEyOTUsNiArMTI5NiwxNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhhc1F1aXJrcygpKSB7CisgICAgICAg
ICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0OChBdG9taWNYY2hnX19fKQorICAgICAgICAgICAg
ICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXworICAgICAgICAgICAgICAgIGlmIChpc0F0
b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAgICAg
ICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFsdWU+KCktPm9wZXJhdGlvbldpZHRo
KCkgPT0gV2lkdGg4KSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoSWRlbnRpdHko
bV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIFNFeHQxNjoKQEAgLTEzNDMsNiArMTM1NCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICghbV9wcm9jLmhhc1F1aXJrcygpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVy
biB0aGlzOiBTRXh0MTYoQXRvbWljWGNoZ19fXykKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRo
aXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBpZiAoaXNBdG9taWNYY2hnKG1fdmFs
dWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+
Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5vcGVyYXRpb25XaWR0aCgpID09IFdpZHRoMTYp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGls
ZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU0V4dDMyOgpA
QCAtMjEwMSwyMiArMjEyMiwyNSBAQCBwcml2YXRlOgogICAgICAgICBBU1NFUlQobV92YWx1ZS0+
bnVtQ2hpbGRyZW4oKSA+PSAyKTsKICAgICAgICAgCiAgICAgICAgIC8vIExlYXZlIGl0IGFsb25l
IGlmIHRoZSByaWdodCBjaGlsZCBpcyBhIGNvbnN0YW50LgotICAgICAgICBpZiAobV92YWx1ZS0+
Y2hpbGQoMSktPmlzQ29uc3RhbnQoKSkKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5p
c0NvbnN0YW50KCkKKyAgICAgICAgICAgIHx8IG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9
PSBBdG9taWNTdHJvbmdDQVMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAg
ICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQoKSkgeworICAgICAgICBhdXRvIHN3
YXAgPSBbJl0gKCkgewogICAgICAgICAgICAgc3RkOjpzd2FwKG1fdmFsdWUtPmNoaWxkKDApLCBt
X3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAg
IGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNDb25zdGFudCgpKQorICAgICAgICAgICAgcmV0dXJu
IHN3YXAoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+b3Bjb2Rl
KCkgPT0gQXRvbWljU3Ryb25nQ0FTKQorICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKKyAgICAg
ICAgCiAgICAgICAgIC8vIFNvcnQgdGhlIG9wZXJhbmRzLiBUaGlzIGlzIGFuIGltcG9ydGFudCBj
YW5vbmljYWxpemF0aW9uLiBXZSB1c2UgdGhlIGluZGV4IGluc3RlYWQgb2YKICAgICAgICAgLy8g
dGhlIGFkZHJlc3MgdG8gbWFrZSB0aGlzIGF0IGxlYXN0IHNsaWdodGx5IGRldGVybWluaXN0aWMu
Ci0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5kZXgoKSA+IG1fdmFsdWUtPmNoaWxk
KDEpLT5pbmRleCgpKSB7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAobV92YWx1ZS0+Y2hpbGQoMCks
IG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDAp
LT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4KCkpCisgICAgICAgICAgICByZXR1
cm4gc3dhcCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUg
YSBmb3J3YXJkIGFuYWx5c2lzLiBJbnN0ZWFkLCB3ZSB1c2VzIGEgYm91bmRlZC1zZWFyY2ggYmFj
a3dhcmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBaXJDb2RlLmgi
CiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0RvbWlu
YXRvcnMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCkBAIC0zNDYsNiArMzQ3LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09
IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNo
aWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAg
ICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBMb2FkOgpAQCAtMzUzLDYgKzM1NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2
YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgp
ID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3Rh
Y2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBTdG9yZTg6CkBAIC0zNjIsNiArMzY1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBv
aW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nl
c3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTdG9y
ZToKQEAgLTM2OSw4ICszNzMsNDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgp
ID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5j
ZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigp
ID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
PnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT5j
aGlsZCgwKS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+Y2hpbGQoMiktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAg
ICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICAgICAgICAgIFZB
TElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUt
PmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQo
MiktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0
YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAg
ICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3Vi
OgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9t
aWNYY2hnOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwo
KSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVt
Q2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEp
LT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFj
a0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IERlcGVuZDoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRy
YUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUo
KSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2lu
ZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CkBAIC01
MzcsNiArNTgyLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRlRmVuY2UoVmFsdWUqIHZhbHVlKQorICAgIHsK
KyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsK
KyAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIFZBTElEQVRFKG1l
bW9yeS0+YWNjZXNzQmFuaygpID09IEdQLCAoIkZlbmNlIGF0ICIsICptZW1vcnkpKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUF0b21pYyhWYWx1ZSogdmFsdWUpCisgICAgeworICAg
ICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAg
ICAgICAKKyAgICAgICAgVkFMSURBVEUoYmVzdFR5cGUoR1AsIGF0b21pYy0+b3BlcmF0aW9uV2lk
dGgoKSkgPT0gYXRvbWljLT5vcGVyYXRpb25UeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAg
fQogCiAgICAgdm9pZCB2YWxpZGF0ZVN0YWNrQWNjZXNzKFZhbHVlKiB2YWx1ZSkKICAgICB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzQXJndW1l
bnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jh
c2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCb3R0b21Qcm92aWRlci5oIgogI2luY2x1
ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpAQCAtNTEwLDYgKzUxMSw3IEBAIGJvb2wgVmFsdWU6OnJldHVy
bnNCb29sKCkgY29uc3QKICAgICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgY2FzZSBCZWxvd0VxdWFs
OgogICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgUGhpOgogICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGhhdmUgYSBzdG9yeSBoZXJlLgpAQCAtNTg5LDYgKzU5MSw3IEBAIEVmZmVjdHMgVmFs
dWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFs
T3JVbm9yZGVyZWQ6CiAgICAgY2FzZSBTZWxlY3Q6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTYwMCwxNiArNjAzLDQ0
IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgTG9hZDhTOgogICAg
IGNhc2UgTG9hZDE2WjoKICAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBMb2FkOgotICAgICAg
ICByZXN1bHQucmVhZHMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIExv
YWQ6IHsKKyAgICAgICAgY29uc3QgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVl
PigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAgIGlm
IChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC53cml0ZXMgPSBtZW1v
cnktPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAg
ICAgIH0KICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgY2FzZSBTdG9yZTg6CiAgICAgY2FzZSBTdG9yZTE2OgotICAgIGNh
c2UgU3RvcmU6Ci0gICAgICAgIHJlc3VsdC53cml0ZXMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFu
Z2UoKTsKKyAgICBjYXNlIFN0b3JlOiB7CisgICAgICAgIGNvbnN0IE1lbW9yeVZhbHVlKiBtZW1v
cnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+
cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAg
cmVzdWx0LnJlYWRzID0gbWVtb3J5LT5mZW5jZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQu
ZmVuY2UgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50
ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoK
KyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAg
Y2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRv
bWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hn
OiB7CisgICAgICAgIGNvbnN0IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhczxBdG9taWNWYWx1ZT4o
KTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gYXRvbWljLT5yYW5nZSgpIHwgYXRvbWljLT5mZW5j
ZVJhbmdlKCk7CisgICAgICAgIHJlc3VsdC53cml0ZXMgPSBhdG9taWMtPnJhbmdlKCkgfCBhdG9t
aWMtPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgaWYgKGF0b21pYy0+aGFzRmVuY2UoKSkKKyAgICAg
ICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5k
ZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgV2FzbUFkZHJlc3M6
CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpAQCAt
NjE3LDE4ICs2NDgsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICAgICAg
Y29uc3QgRmVuY2VWYWx1ZSogZmVuY2UgPSBhczxGZW5jZVZhbHVlPigpOwogICAgICAgICByZXN1
bHQucmVhZHMgPSBmZW5jZS0+cmVhZDsKICAgICAgICAgcmVzdWx0LndyaXRlcyA9IGZlbmNlLT53
cml0ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIFByZXZlbnQga2lsbGluZyBvZiBmZW5jZXMgdGhh
dCBjbGFpbSBub3QgdG8gd3JpdGUgYW55dGhpbmcuIEl0J3MgYSBiaXQgd2VpcmQgdGhhdCB3ZSB1
c2UKLSAgICAgICAgLy8gbG9jYWwgc3RhdGUgYXMgdGhlIHdheSB0byBkbyB0aGlzLCBidXQgaXQg
aGFwcGVucyB0byB3b3JrOiB3ZSBtdXN0IGFzc3VtZSB0aGF0IHdlIGNhbm5vdAotICAgICAgICAv
LyBraWxsIHdyaXRlc0xvY2FsU3RhdGUgdW5sZXNzIHdlIHVuZGVyc3RhbmRzIGV4YWN0bHkgd2hh
dCB0aGUgaW5zdHJ1Y3Rpb24gaXMgZG9pbmcgKGxpa2UKLSAgICAgICAgLy8gdGhlIHdheSB0aGF0
IGZpeFNTQSB1bmRlcnN0YW5kcyBTZXQvR2V0IGFuZCB0aGUgd2F5IHRoYXQgcmVkdWNlU3RyZW5n
dGggYW5kIG90aGVycwotICAgICAgICAvLyB1bmRlcnN0YW5kIFVwc2lsb24pLiBUaGlzIHdvdWxk
IG9ubHkgYmVjb21lIGEgcHJvYmxlbSBpZiB3ZSBoYWQgc29tZSBhbmFseXNpcyB0aGF0IHdhcwot
ICAgICAgICAvLyBsb29raW5nIHRvIHVzZSB0aGUgd3JpdGVzTG9jYWxTdGF0ZSBiaXQgdG8gaW52
YWxpZGF0ZSBhIENTRSBvdmVyIGxvY2FsIHN0YXRlIG9wZXJhdGlvbnMuCi0gICAgICAgIC8vIFRo
ZW4gYSBGZW5jZSB3b3VsZCBsb29rIGJsb2NrLCBzYXksIHRoZSBlbGltaW5hdGlvbiBvZiBhIHJl
ZHVuZGFudCBHZXQuIEJ1dCBpdCBsaWtlCi0gICAgICAgIC8vIHRoYXQncyBub3QgYXQgYWxsIGhv
dyBvdXIgb3B0aW1pemF0aW9ucyBmb3IgU2V0L0dldC9VcHNpbG9uL1BoaSB3b3JrIC0gdGhleSBn
cm9rIHRoZWlyCi0gICAgICAgIC8vIG9wZXJhdGlvbnMgZGVlcGx5IGVub3VnaCB0aGF0IHRoZXkg
aGF2ZSBubyBuZWVkIHRvIGNoZWNrIHRoaXMgYml0IC0gc28gdGhpcyBjaGVhdCBpcwotICAgICAg
ICAvLyBmaW5lLgotICAgICAgICByZXN1bHQud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CisgICAg
ICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IENDYWxsOgpAQCAtNjk0LDYgKzcxNCw3IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAog
ICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICBjYXNlIE5lZzoKKyAg
ICBjYXNlIERlcGVuZDoKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgpLCBj
aGlsZCgwKSk7CiAgICAgY2FzZSBBZGQ6CiAgICAgY2FzZSBTdWI6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbHVlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDEwIEBAIHB1Ymxp
YzoKICAgICAKICAgICBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLm9wY29k
ZSgpOyB9CiAgICAgCisgICAgLy8gTm90ZSB0aGF0IHRoZSBraW5kIGlzIG1lYW50IHRvIGJlIGlt
bXV0YWJsZS4gRG8gdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgdGhpcyBpcyBzYWZlLiBJdCdzIG5v
dAorICAgIC8vIHVzdWFsbHkgc2FmZS4KKyAgICB2b2lkIHNldEtpbmRVbnNhZmVseShLaW5kIGtp
bmQpIHsgbV9raW5kID0ga2luZDsgfQorICAgIAogICAgIC8vIEl0J3MgZ29vZCBwcmFjdGljZSB0
byBtaXJyb3IgS2luZCBtZXRob2RzIGhlcmUsIHNvIHlvdSBjYW4gc2F5IHZhbHVlLT5pc0JsYWgo
KQogICAgIC8vIGluc3RlYWQgb2YgdmFsdWUtPmtpbmQoKS5pc0JsYWgoKS4KICAgICBib29sIGlz
Q2hpbGwoKSBjb25zdCB7IHJldHVybiBraW5kKCkuaXNDaGlsbCgpOyB9CkBAIC0xMDcsNiArMTEx
LDggQEAgcHVibGljOgogICAgIC8vIHZhbHVlcyB3aXRoIElkZW50aXRpZXMgb24gYm90dG9tIGNv
bnN0YW50cy4gRm9yIHRoaXMgcmVhc29uLCB0aGlzIHRha2VzIGEgY2FsbGJhY2sgdGhhdCBpcwog
ICAgIC8vIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBib3R0b21zLiBUaGVyZSdzIGEgdXRpbGl0
eSBmb3IgdGhpcywgc2VlIEIzQm90dG9tUHJvdmlkZXIuaC4gWW91CiAgICAgLy8gY2FuIGFsc28g
YWNjZXNzIHRoYXQgdXRpbGl0eSB1c2luZyByZXBsYWNlV2l0aEJvdHRvbShJbnNlcnRpb25TZXQm
LCBzaXplX3QpLgorICAgIC8vCisgICAgLy8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20g
aXMgemVyby4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCb3R0b21Qcm92aWRlcj4KICAgICB2b2lk
IHJlcGxhY2VXaXRoQm90dG9tKGNvbnN0IEJvdHRvbVByb3ZpZGVyJik7CiAgICAgCkBAIC0zMjEs
NiArMzI3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJVG9GOgogICAgICAgICBjYXNlIEJp
dHdpc2VDYXN0OgogICAgICAgICBjYXNlIEJyYW5jaDoKKyAgICAgICAgY2FzZSBEZXBlbmQ6CiAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkobnVtQXJncyAhPSAxKSkKICAgICAgICAgICAgICAgICBi
YWRLaW5kKGtpbmQsIG51bUFyZ3MpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDM4
IEBACiAKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAorbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CisKK1R5cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKK3sK
KyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgY2FzZSBXaWR0aDE2
OgorICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNh
c2UgR1A6CisgICAgICAgICAgICByZXR1cm4gSW50MzI7CisgICAgICAgIGNhc2UgRlA6CisgICAg
ICAgICAgICByZXR1cm4gRmxvYXQ7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFZvaWQ7CisgICAgY2FzZSBXaWR0aDY0Ogor
ICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJl
dHVybiBJbnQ2NDsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBEb3VibGU7
CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIFZvaWQ7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIFZvaWQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCiBuYW1l
c3BhY2UgV1RGIHsKIAogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6
QjM6OldpZHRoIHdpZHRoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Miw2ICs2MiwxOCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JUeXBlKFR5
cGUgdHlwZSkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAoraW5saW5lIFdpZHRoIGNh
bm9uaWNhbFdpZHRoKFdpZHRoIHdpZHRoKQoreworICAgIHJldHVybiBzdGQ6Om1heChXaWR0aDMy
LCB3aWR0aCk7Cit9CisKK2lubGluZSBib29sIGlzQ2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgp
Cit7CisgICAgcmV0dXJuIHdpZHRoID49IFdpZHRoMzI7Cit9CisKK1R5cGUgYmVzdFR5cGUoQmFu
ayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIGlubGluZSBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0aChC
YW5rIGJhbmspCiB7CiAgICAgcmV0dXJuIGJhbmsgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6IFdp
ZHRoNjQ7CkBAIC05Myw2ICsxMDUsMjAgQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yQnl0ZXModW5z
aWduZWQgYnl0ZQogICAgIH0KIH0KIAoraW5saW5lIHVpbnQ2NF90IG1hc2soV2lkdGggd2lkdGgp
Cit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgICAgICByZXR1
cm4gMHgwMDAwMDAwMDAwMDAwMGZmbGx1OworICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgcmV0
dXJuIDB4MDAwMDAwMDAwMDAwZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHJl
dHVybiAweDAwMDAwMDAwZmZmZmZmZmZsbHU7CisgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICBy
ZXR1cm4gMHhmZmZmZmZmZmZmZmZmZmZmbGx1OworICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJBcmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQXJnLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBcmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAg
dW5zaWduZWQgQXJnOjpqc0hhc2goKSBjb25zdAogICAgIGNhc2UgUmVsQ29uZDoKICAgICBjYXNl
IFJlc0NvbmQ6CiAgICAgY2FzZSBEb3VibGVDb25kOgorICAgIGNhc2UgU3RhdHVzQ29uZDoKICAg
ICBjYXNlIFdpZHRoQXJnOgogICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fb2Zmc2V0KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODIsNiArMTgzLDkgQEAgdm9pZCBBcmc6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAg
ICAgIG91dC5wcmludChhc0RvdWJsZUNvbmRpdGlvbigpKTsKICAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgU3RhdHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KGFzU3RhdHVzQ29uZGl0aW9uKCkp
OworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBvdXQucHJpbnQo
cG9pbnRlckR1bXAoc3BlY2lhbCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI0MSw2ICsyNDUs
OSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBB
cmc6OkRvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5wcmludCgiRG91YmxlQ29uZCIpOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBBcmc6OlN0YXR1c0NvbmQ6CisgICAgICAgIG91dC5wcmludCgi
U3RhdHVzQ29uZCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNwZWNpYWw6CiAg
ICAgICAgIG91dC5wcmludCgiU3BlY2lhbCIpOwogICAgICAgICByZXR1cm47CkBAIC0yODUsNiAr
MjkyLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNh
c2UgQXJnOjpFYXJseURlZjoKICAgICAgICAgb3V0LnByaW50KCJFYXJseURlZiIpOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKKyAgICAgICAgb3V0LnByaW50KCJF
YXJseVpEZWYiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpTY3JhdGNoOgogICAg
ICAgICBvdXQucHJpbnQoIlNjcmF0Y2giKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVsQ29uZCwKICAgICAgICAgUmVzQ29uZCwKICAgICAg
ICAgRG91YmxlQ29uZCwKKyAgICAgICAgU3RhdHVzQ29uZCwKICAgICAgICAgU3BlY2lhbCwKICAg
ICAgICAgV2lkdGhBcmcKICAgICB9OwpAQCAtMTUxLDYgKzE1Miw4IEBAIHB1YmxpYzoKICAgICAg
ICAgLy8gYXMgVXNlIGhhcyB1bmRlZmluZWQgYmVoYXZpb3I6IHRoZSB1c2UgbWF5IGhhcHBlbiBi
ZWZvcmUgdGhlIGRlZiwgb3IgaXQgbWF5IGhhcHBlbiBhZnRlcgogICAgICAgICAvLyBpdC4KICAg
ICAgICAgRWFybHlEZWYsCisgICAgICAgICAgICAKKyAgICAgICAgRWFybHlaRGVmLAogCiAgICAg
ICAgIC8vIFNvbWUgaW5zdHJ1Y3Rpb25zIG5lZWQgYSBzY3JhdGNoIHJlZ2lzdGVyLiBXZSBtb2Rl
bCB0aGlzIGJ5IHNheWluZyB0aGF0IHRoZSB0ZW1wb3JhcnkgaXMKICAgICAgICAgLy8gZGVmaW5l
ZCBlYXJseSBhbmQgdXNlZCBsYXRlLiBUaGlzIHJvbGUgaW1wbGllcyB0aGF0LgpAQCAtMTg2LDYg
KzE4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFk
ZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMjA2LDYgKzIxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRy
OgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAg
IGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI4LDYgKzIzMyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNh
c2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJu
IHJvbGU7CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICAgICAgcmV0dXJuIENvbGRVc2U7CkBA
IC0yNTMsNiArMjU5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAg
ICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2Ug
RWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjc0LDYgKzI4MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlE
ZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk0LDYgKzMwMiw3
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZVpEZWY6CiAg
ICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBj
YXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzE1
LDYgKzMyNCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBF
YXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkBAIC0zMzAsNiArMzQwLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVz
ZUFkZHI6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAg
ICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2Fz
ZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1OCw2ICszNjks
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgWkRl
ZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtNTMzLDYgKzU0NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCisgICAgc3RhdGljIEFyZyBzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdGF0
dXNDb25kaXRpb24gY29uZGl0aW9uKQorICAgIHsKKyAgICAgICAgQXJnIHJlc3VsdDsKKyAgICAg
ICAgcmVzdWx0Lm1fa2luZCA9IFN0YXR1c0NvbmQ7CisgICAgICAgIHJlc3VsdC5tX29mZnNldCA9
IGNvbmRpdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBzdGF0aWMg
QXJnIHNwZWNpYWwoQWlyOjpTcGVjaWFsKiBzcGVjaWFsKQogICAgIHsKICAgICAgICAgQXJnIHJl
c3VsdDsKQEAgLTY1OCwxMiArNjc4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGtpbmQo
KSA9PSBEb3VibGVDb25kOwogICAgIH0KIAorICAgIGJvb2wgaXNTdGF0dXNDb25kKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0gU3RhdHVzQ29uZDsKKyAgICB9CisKICAg
ICBib29sIGlzQ29uZGl0aW9uKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCgp
KSB7CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAg
ICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtODUxLDYgKzg3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAg
ICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2Fz
ZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhB
cmc6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg3Miw2ICs4OTksNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBj
YXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBT
cGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICBjYXNlIEludmFsaWQ6CkBA
IC0xMDU4LDYgKzEwODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAg
ICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2Ug
U3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJn
OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTc3LDYgKzEyMDYsMTIgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRp
dGlvbj4obV9vZmZzZXQpOwogICAgIH0KICAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6U3RhdHVz
Q29uZGl0aW9uIGFzU3RhdHVzQ29uZGl0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChpc1N0YXR1c0NvbmQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2Vt
Ymxlcjo6U3RhdHVzQ29uZGl0aW9uPihtX29mZnNldCk7CisgICAgfQorICAgIAogICAgIC8vIFRl
bGxzIHlvdSBpZiB0aGUgQXJnIGlzIGludmVydGlibGUuIE9ubHkgY29uZGl0aW9uIGFyZ3VtZW50
cyBhcmUgaW52ZXJ0aWJsZSwgYW5kIGV2ZW4gZm9yIHRob3NlLCB0aGVyZQogICAgIC8vIGFyZSBh
IGZldyBleGNlcHRpb25zIC0gbm90YWJseSBPdmVyZmxvdyBhbmQgU2lnbmVkLgogICAgIGJvb2wg
aXNJbnZlcnRpYmxlKCkgY29uc3QKQEAgLTExODQsNiArMTIxOSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNl
IERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gTWFjcm9B
c3NlbWJsZXI6OmlzSW52ZXJ0aWJsZShhc1Jlc3VsdENvbmRpdGlvbigpKTsKQEAgLTEyMDQsNiAr
MTI0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiByZXNDb25kKE1hY3JvQXNzZW1i
bGVyOjppbnZlcnQoYXNSZXN1bHRDb25kaXRpb24oKSkpOwogICAgICAgICBjYXNlIERvdWJsZUNv
bmQ6CiAgICAgICAgICAgICByZXR1cm4gZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0
KGFzRG91YmxlQ29uZGl0aW9uKCkpKTsKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgorICAgICAg
ICAgICAgcmV0dXJuIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1N0YXR1c0Nv
bmRpdGlvbigpKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM1LDYgKzM1LDE5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgeyBuYW1lc3BhY2UKIAogY29uc3QgY2hhciogY29uc3QgQmFzaWNCbG9jazo6ZHVtcFByZWZp
eCA9ICIjIjsKIAordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9j
ayB0YXJnZXQpCit7CisgICAgbV9zdWNjZXNzb3JzLnJlc2l6ZSgxKTsKKyAgICBtX3N1Y2Nlc3Nv
cnNbMF0gPSB0YXJnZXQ7Cit9CisKK3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhGcmVx
dWVudGVkQmxvY2sgdGFrZW4sIEZyZXF1ZW50ZWRCbG9jayBub3RUYWtlbikKK3sKKyAgICBtX3N1
Y2Nlc3NvcnMucmVzaXplKDIpOworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRha2VuOworICAgIG1f
c3VjY2Vzc29yc1sxXSA9IG5vdFRha2VuOworfQorCiBib29sIEJhc2ljQmxvY2s6OmFkZFByZWRl
Y2Vzc29yKEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIHJldHVybiBCMzo6YWRkUHJlZGVjZXNz
b3IodGhpcywgYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJC
YXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyArMzMsMTEg
QEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Citu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNz
IEdlbmVyaWNCbG9ja0luc2VydGlvblNldDsKKworbmFtZXNwYWNlIEFpciB7CiAKIGNsYXNzIEJs
b2NrSW5zZXJ0aW9uU2V0OwogY2xhc3MgQ29kZTsKQEAgLTk5LDYgKzEwMyw5IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTdWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9z
dWNjZXNzb3JzOyB9CiAgICAgU3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIHsgcmV0dXJuIG1f
c3VjY2Vzc29yczsgfQogCisgICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayk7
CisgICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jaywgRnJlcXVlbnRlZEJsb2Nr
KTsKKwogICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSBjb25z
dCB7IHJldHVybiBzdWNjZXNzb3IoaW5kZXgpLmJsb2NrKCk7IH0KICAgICBCYXNpY0Jsb2NrKiYg
c3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCku
YmxvY2soKTsgfQogICAgIFN1Y2Nlc3NvckNvbGxlY3Rpb248QmFzaWNCbG9jaywgU3VjY2Vzc29y
TGlzdD4gc3VjY2Vzc29yQmxvY2tzKCkKQEAgLTEzMyw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgQ29kZTsK
ICAgICBmcmllbmQgY2xhc3MgSW5zZXJ0aW9uU2V0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBm
cmllbmQgY2xhc3MgQjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDsKICAgICAKICAgICBCYXNp
Y0Jsb2NrKHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5KTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9j
a0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRpb25TZXQuaCIKKworI2lmIEVOQUJMRShCM19K
SVQpCisKKyNpbmNsdWRlICJBaXJCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQWlyQ29kZS5oIgor
I2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgeyBuYW1lc3BhY2UgQWlyIHsKKworQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9u
U2V0KENvZGUgJmNvZGUpCisgICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoY29kZS5tX2Js
b2NrcykKK3sKK30KKworQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpCit7
Cit9CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJ
bnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNHZW5l
cmljQmxvY2tJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8
d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCitjbGFzcyBJbnNlcnRpb25TZXQ7
CisKK3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+OjpCbG9ja0lu
c2VydGlvbiBCbG9ja0luc2VydGlvbjsKKworY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgOiBwdWJs
aWMgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+IHsKK3B1YmxpYzoKKyAgICBC
bG9ja0luc2VydGlvblNldChDb2RlJik7CisgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7CisgICAg
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBldmVudHVhbGx5IGltcGxlbWVudCBCMzo6QmxvY2tJ
bnNlcnRpb25TZXQncyBzcGxpdEZvcndhcmQoKS4KK307CisKK30gfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5jcHAJKG5vbmV4aXN0
ZW50KQpAQCAtMSwyNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBaXJEdW1w
QXNKUy5oIgotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQotI2luY2x1ZGUgIkFpckNvZGUuaCIKLSNp
bmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsgbmFtZXNwYWNlIEFpciB7Ci0KLW5hbWVzcGFjZSB7Ci0KLUNTdHJpbmcgdmFyTmFtZUZvckJs
b2NrQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJiYiIs
IGluZGV4KTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKEJhc2ljQmxvY2sqIGJsb2NrKQotewotICAg
IHJldHVybiB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KGJsb2NrLT5pbmRleCgpKTsKLX0KLQotQ1N0
cmluZyB2YXJOYW1lRm9yU3RhY2tTbG90QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBy
ZXR1cm4gdG9DU3RyaW5nKCJzbG90IiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZhck5hbWUoU3Rh
Y2tTbG90KiBzbG90KQotewotICAgIHJldHVybiB2YXJOYW1lRm9yU3RhY2tTbG90QXRJbmRleChz
bG90LT5pbmRleCgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKFJlZyByZWcpCi17Ci0gICAgcmV0
dXJuIHRvQ1N0cmluZygiUmVnLiIsIHJlZy5kZWJ1Z05hbWUoKSk7Ci19Ci0KLUNTdHJpbmcgdmFy
TmFtZUZvclRtcFdpdGhCYW5rQW5kSW5kZXgoQmFuayBiYW5rLCB1bnNpZ25lZCBpbmRleCkKLXsK
LSAgICByZXR1cm4gdG9DU3RyaW5nKGJhbmsgPT0gRlAgPyAiZiIgOiAiIiwgInRtcCIsIGluZGV4
KTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKFRtcCB0bXApCi17Ci0gICAgaWYgKHRtcC5pc1JlZygp
KQotICAgICAgICByZXR1cm4gdmFyTmFtZSh0bXAucmVnKCkpOwotICAgIHJldHVybiB2YXJOYW1l
Rm9yVG1wV2l0aEJhbmtBbmRJbmRleChBcmcodG1wKS5iYW5rKCksIHRtcC50bXBJbmRleCgpKTsK
LX0KLQotfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLXZvaWQgZHVtcEFzSlMoQ29kZSYgY29k
ZSwgUHJpbnRTdHJlYW0mIG91dCkKLXsKLSAgICBvdXQucHJpbnRsbigibGV0IGNvZGUgPSBuZXcg
Q29kZSgpOyIpOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlLnNpemUo
KTsgKytpKQotICAgICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZhck5hbWVGb3JCbG9ja0F0SW5k
ZXgoaSksICIgPSBjb2RlLmFkZEJsb2NrKCk7Iik7Ci0gICAgCi0gICAgb3V0LnByaW50bG4oImxl
dCBoYXNoOyIpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGUuc3RhY2tTbG90
cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFN0YWNrU2xvdCogc2xvdCA9IGNvZGUuc3RhY2tT
bG90cygpW2ldOwotICAgICAgICBpZiAoc2xvdCkgewotICAgICAgICAgICAgb3V0LnByaW50bG4o
ImxldCAiLCB2YXJOYW1lKHNsb3QpLCAiID0gY29kZS5hZGRTdGFja1Nsb3QoIiwgc2xvdC0+Ynl0
ZVNpemUoKSwgIiwgIiwgc2xvdC0+a2luZCgpLCAiKTsiKTsKLSAgICAgICAgICAgIGlmIChzbG90
LT5vZmZzZXRGcm9tRlAoKSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbih2YXJOYW1lKHNs
b3QpLCAiLnNldE9mZnNldEZyb21GUCgiLCBzbG90LT5vZmZzZXRGcm9tRlAoKSwgIik7Iik7Ci0g
ICAgICAgICAgICBvdXQucHJpbnRsbigiaGFzaCA9ICIsIHZhck5hbWUoc2xvdCksICIuaGFzaCgp
OyIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oImlmIChoYXNoICE9ICIsIHNsb3QtPmpzSGFz
aCgpLCAiKSIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oIiAgICB0aHJvdyBuZXcgRXJyb3Io
XCJCYWQgaGFzaDogXCIgKyBoYXNoKTsiKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBv
dXQucHJpbnRsbigiY29kZS5hZGRTdGFja1Nsb3QoMSwgU3BpbGwpOyIpOwotICAgIH0KLSAgICAK
LSAgICBmb3JFYWNoQmFuaygKLSAgICAgICAgWyZdIChCYW5rIGJhbmspIHsKLSAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IGNvZGUubnVtVG1wcyhiYW5rKTsgaS0tOykgewotICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAibGV0ICIsIHZhck5hbWVG
b3JUbXBXaXRoQmFua0FuZEluZGV4KGJhbmssIGkpLCAiID0gY29kZS5uZXdUbXAoIiwgYmFuaywg
Iik7Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIAotICAgIG91dC5wcmludGxu
KCJsZXQgaW5zdDsiKTsKLSAgICBvdXQucHJpbnRsbigibGV0IGFyZzsiKTsKLSAgICAKLSAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogY29kZSkgewotICAgICAgICBmb3IgKEZyZXF1ZW50ZWRC
bG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICBvdXQu
cHJpbnRsbigKLSAgICAgICAgICAgICAgICB2YXJOYW1lKGJsb2NrKSwgIi5zdWNjZXNzb3JzLnB1
c2gobmV3IEZyZXF1ZW50ZWRCbG9jaygiLAotICAgICAgICAgICAgICAgIHZhck5hbWUoc3VjY2Vz
c29yLmJsb2NrKCkpLCAiLCAiLCBzdWNjZXNzb3IuZnJlcXVlbmN5KCksICIpKTsiKTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA6IGJs
b2NrLT5wcmVkZWNlc3NvcnMoKSkKLSAgICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoYmxv
Y2spLCAiLnByZWRlY2Vzc29ycy5wdXNoKCIsIHZhck5hbWUocHJlZGVjZXNzb3IpLCAiKTsiKTsK
LSAgICAgICAgCi0gICAgICAgIGZvciAoSW5zdCYgaW5zdCA6ICpibG9jaykgewotICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGRvIHNvbWV0aGluZyBmb3IgZmxhZ3MuCi0gICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNzUxCi0g
ICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdCA9IG5ldyBJbnN0KCIsIGluc3Qua2luZC5vcGNv
ZGUsICIpOyIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpbnN0LmZvckVhY2hBcmcoCi0g
ICAgICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlLCBCYW5rLCBXaWR0aCkgewot
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFyZy5raW5kKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBBcmc6OkludmFsaWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlRt
cDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRl
VG1wKCIsIHZhck5hbWUoYXJnLnRtcCgpKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6SW1tOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9
IEFyZy5jcmVhdGVJbW0oIiwgYXJnLnZhbHVlKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkJpZ0ltbToKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxu
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlQmlnSW1tKCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZh
bHVlKCkpLCAiLCAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KGFyZy52YWx1ZSgpID4+IDMyKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6Qml0SW1tOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFy
ZyA9IEFyZy5jcmVhdGVCaXRJbW0oIiwgYXJnLnZhbHVlKCksICIpOyIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBcmc6OkJpdEltbTY0OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVC
aXRJbW02NCgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMy
X3Q+KGFyZy52YWx1ZSgpKSwgIiwgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSA+PiAzMiksICIpOyIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBcmc6OkFkZHI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUFkZHIo
IiwgdmFyTmFtZShhcmcuYmFzZSgpKSwgIiwgIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpTdGFjazoKLSAgICAgICAgICAgICAgICAgICAgICAg
IG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3Jl
YXRlU3RhY2soIiwgdmFyTmFtZShhcmcuc3RhY2tTbG90KCkpLCAiLCAiLCBhcmcub2Zmc2V0KCks
ICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkNhbGxBcmc6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUNhbGxBcmcoIiwg
YXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbmRl
eDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlSW5kZXgoIiwgdmFyTmFtZShhcmcuYmFzZSgp
KSwgIiwgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJOYW1lKGFyZy5pbmRleCgp
KSwgIiwgIiwgYXJnLnNjYWxlKCksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6UmVsQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlUmVsQ29uZCgiLCBhcmcuYXNSZWxhdGlvbmFs
Q29uZGl0aW9uKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlJlc0Nv
bmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0
ZVJlc0NvbmQoIiwgYXJnLmFzUmVzdWx0Q29uZGl0aW9uKCksICIpOyIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBcmc6OkRvdWJsZUNvbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBv
dXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZURvdWJsZUNvbmQoIiwgYXJnLmFzRG91YmxlQ29u
ZGl0aW9uKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlNwZWNpYWw6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVNw
ZWNpYWwoKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpXaWR0aEFyZzoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlV2lkdGhB
cmcoIiwgYXJnLndpZHRoKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmFyZ3MucHVzaChhcmcpOyIpOwotICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29k
ZSA9PSBQYXRjaCkgewotICAgICAgICAgICAgICAgIGlmIChpbnN0Lmhhc05vbkFyZ0VmZmVjdHMo
KSkKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QucGF0Y2hIYXNOb25BcmdF
ZmZlY3RzID0gdHJ1ZTsiKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbigiaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncyA9IG5ldyBTZXQoKTsiKTsKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MgPSBuZXcg
U2V0KCk7Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncygp
LmZvckVhY2goCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykgewotICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3Mu
YWRkKCIsIHZhck5hbWUocmVnKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIGluc3QuZXh0cmFDbG9iYmVyZWRSZWdzKCkuZm9yRWFjaCgKLSAgICAgICAg
ICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbigiaW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MuYWRkKCIsIHZhck5hbWUocmVnKSwgIik7
Iik7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKCJpbnN0LnBhdGNoQXJnRGF0YSA9IFtdOyIpOwotICAgICAgICAg
ICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAgICAgICAgWyZdIChBcmcmLCBB
cmc6OlJvbGUgcm9sZSwgQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3Qu
cGF0Y2hBcmdEYXRhLnB1c2goe3JvbGU6IEFyZy4iLCByb2xlLCAiLCB0eXBlOiAiLCBiYW5rLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIHdpZHRoOiAiLCB3aWR0aCwgIn0pOyIpOwot
ICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gQ0NhbGwgfHwgaW5zdC5raW5kLm9wY29k
ZSA9PSBDb2xkQ0NhbGwpIHsKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5jQ2Fs
bFR5cGUgPSAiLCBpbnN0Lm9yaWdpbi0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICBvdXQucHJp
bnRsbigiaW5zdC5jQ2FsbEFyZ1R5cGVzID0gW107Iik7Ci0gICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMTsgaSA8IGluc3Qub3JpZ2luLT5udW1DaGlsZHJlbigpOyArK2kpCi0gICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsQXJnVHlwZXMucHVzaCgiLCBp
bnN0Lm9yaWdpbi0+Y2hpbGQoaSktPnR5cGUoKSwgIik7Iik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJoYXNoID0gaW5zdC5oYXNoKCk7Iik7
Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiaWYgKGhhc2ggIT0gIiwgaW5zdC5qc0hhc2goKSwg
IikiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCIgICAgdGhyb3cgbmV3IEVycm9yKFwiQmFk
IGhhc2g6IFwiICsgaGFzaCk7Iik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG91dC5wcmlu
dGxuKHZhck5hbWUoYmxvY2spLCAiLmFwcGVuZChpbnN0KTsiKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5BQkxF
KEIzX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNK
Uy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFz
SlMuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJEdW1wQXNKUy5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShCM19KSVQpCi0KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewotCi1jbGFzcyBDb2RlOwotCi0v
LyBUaGlzIGlzIHVzZWQgZm9yIGJlbmNobWFya2luZy4gVmFyaW91cyBvcGVyYXRpb25zIG9uIEFp
ciBhcmUgaW50ZXJlc3RpbmcgZnJvbSBhIGJlbmNobWFya2luZwotLy8gc3RhbmRwb2ludC4gV2Ug
Y2FuIHdyaXRlIHNvbWUgQWlyIHBoYXNlcyBpbiBKUyBhbmQgdGhlbiB1c2UgdGhhdCB0byBiZW5j
aG1hcmsgSlMuIFRoZSBiZW5jaG1hcmsKLS8vIGlzIGNhbGxlZCBKU0FpciwgYW5kIGl0J3MgaW4g
UGVyZm9ybWFuY2VUZXN0cy9KU0Fpci4KLXZvaWQgZHVtcEFzSlMoQ29kZSYsIFByaW50U3RyZWFt
Jik7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKLQotI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVy
YXRlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNs
dWRlICJBaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5oIgogI2luY2x1ZGUgIkFp
ckFsbG9jYXRlU3RhY2suaCIKICNpbmNsdWRlICJBaXJDb2RlLmgiCi0jaW5jbHVkZSAiQWlyRHVt
cEFzSlMuaCIKICNpbmNsdWRlICJBaXJFbGltaW5hdGVEZWFkQ29kZS5oIgogI2luY2x1ZGUgIkFp
ckZpeE9idmlvdXNTcGlsbHMuaCIKICNpbmNsdWRlICJBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFs
bHMuaCIKQEAgLTczLDYgKzcyLDggQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBj
b2RlKQogICAgICAgICBkYXRhTG9nKCJJbml0aWFsIGFpcjpcbiIpOwogICAgICAgICBkYXRhTG9n
KGNvZGUpOwogICAgIH0KKyAgICAKKyAgICBzaW1wbGlmeUNGRyhjb2RlKTsKIAogICAgIGxvd2Vy
TWFjcm9zKGNvZGUpOwogCkBAIC0xMDcsMjMgKzEwOCwxMSBAQCB2b2lkIHByZXBhcmVGb3JHZW5l
cmF0aW9uKENvZGUmIGNvZGUpCiAgICAgLy8gZG9lcyB0aGluZ3MgbGlrZSBpZGVudGlmeSB3aGlj
aCBjYWxsZWUtc2F2ZXMgd2UncmUgdXNpbmcgYW5kIHNhdmVzIHRoZW0uCiAgICAgaGFuZGxlQ2Fs
bGVlU2F2ZXMoY29kZSk7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OmR1bXBBaXJBc0pTQmVmb3Jl
QWxsb2NhdGVTdGFjaygpKSB7Ci0gICAgICAgIGRhdGFMb2coIkR1bXBpbmcgQWlyIGFzIEpTIGJl
Zm9yZSBhbGxvY2F0ZVN0YWNrOlxuIik7Ci0gICAgICAgIGR1bXBBc0pTKGNvZGUsIFdURjo6ZGF0
YUZpbGUoKSk7Ci0gICAgICAgIGRhdGFMb2coIkFpciBoYXNoOiAiLCBjb2RlLmpzSGFzaCgpLCAi
XG4iKTsKLSAgICB9Ci0KICAgICAvLyBUaGlzIHR1cm5zIGFsbCBTdGFjayBhbmQgQ2FsbEFyZyBB
cmdzIGludG8gQWRkciBhcmdzIHRoYXQgdXNlIHRoZSBmcmFtZSBwb2ludGVyLiBJdCBkb2VzCiAg
ICAgLy8gdGhpcyBieSBmaXJzdC1maXQgYWxsb2NhdGluZyBzdGFjayBzbG90cy4gSXQgc2hvdWxk
IGJlIHByZXR0eSBkYXJuIGNsb3NlIHRvIG9wdGltYWwsIHNvIHdlCiAgICAgLy8gc2hvdWxkbid0
IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhpcyB2ZXJ5IG11Y2guCiAgICAgYWxsb2NhdGVTdGFjayhj
b2RlKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6ZHVtcEFpckFmdGVyQWxsb2NhdGVTdGFjaygp
KSB7Ci0gICAgICAgIGRhdGFMb2coIkR1bXBpbmcgQWlyIGFmdGVyIGFsbG9jYXRlU3RhY2s6XG4i
KTsKLSAgICAgICAgZGF0YUxvZyhjb2RlKTsKLSAgICAgICAgZGF0YUxvZygiQWlyIGhhc2g6ICIs
IGNvZGUuanNIYXNoKCksICJcbiIpOwotICAgIH0KLQogICAgIC8vIElmIHdlIGNvYWxlc2NlZCBt
b3ZlcyB0aGVuIHdlIGNhbiB1bmJyZWFrIGNyaXRpY2FsIGVkZ2VzLiBUaGlzIGlzIHRoZSBtYWlu
IHJlYXNvbiBmb3IgdGhpcwogICAgIC8vIHBoYXNlLgogICAgIHNpbXBsaWZ5Q0ZHKGNvZGUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDY1IEBAIGlubGluZSBib29s
IGlzWDg2VURpdjY0VmFsaWQoY29uc3QgSW5zdCYKICAgICByZXR1cm4gaXNYODZEaXZIZWxwZXJW
YWxpZChpbnN0KTsKIH0KIAoraW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVNWYWxpZChjb25z
dCBJbnN0JiBpbnN0KQoreworI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgc3dpdGNo
IChpbnN0LmFyZ3Muc2l6ZSgpKSB7CisgICAgY2FzZSAzOgorICAgICAgICByZXR1cm4gaW5zdC5h
cmdzWzBdID09IFRtcChYODZSZWdpc3RlcnM6OmVheCk7CisgICAgY2FzZSA1OgorICAgICAgICBy
ZXR1cm4gaW5zdC5hcmdzWzFdID09IFRtcChYODZSZWdpc3RlcnM6OmVheCk7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZiAvLyBDUFUoWDg2KSB8fCBD
UFUoWDg2XzY0KQorfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlk
KGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGluc3QuYXJnc1sxXSA9PSBUbXAoWDg2
UmVnaXN0ZXJzOjplYXgpOworfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzhWYWxp
ZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlk
KGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzE2VmFsaWQoY29uc3Qg
SW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsK
K30KKworaW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVMzMlZhbGlkKGNvbnN0IEluc3QmIGlu
c3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lu
bGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTNjRWYWxpZChjb25zdCBJbnN0JiBpbnN0KQorewor
ICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9v
bCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAg
IHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUg
Ym9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzE2VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sK
KyAgICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5s
aW5lIGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVMzMlZhbGlkKGNvbnN0IEluc3QmIGluc3Qp
Cit7CisgICAgcmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisK
K2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTNjRWYWxpZChjb25zdCBJbnN0JiBp
bnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOwor
fQorCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bj
b2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE3LDYgKzExNyw3IEBAIEFkZDMyIFU6
RzozMiwgVVpEOkc6MzIKICAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4
NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKICAg
ICB4ODY6IFRtcCwgSW5kZXgKIApAQCAtMTM1LDkgKzEzNiwxMiBAQCB4ODY6IEFkZDE2IFU6Rzox
NiwgVUQ6RzoxNgogNjQ6IEFkZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAg
eDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4
NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAg
ICB4ODY6IFRtcCwgSW5kZXgKIAogNjQ6IEFkZDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAg
ICBJbW0sIFRtcCwgVG1wCkBAIC0xNjYsOSArMTcwLDEyIEBAIHg4NjogQWRkRmxvYXQgVTpGOjMy
LCBVRDpGOjMyCiBTdWIzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6
IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBB
ZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4
NjogVG1wLCBJbmRleAogCiBhcm02NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIsIEQ6RzozMgogICAg
IFRtcCwgVG1wLCBUbXAKQEAgLTE3Niw5ICsxODMsMTIgQEAgYXJtNjQ6IFN1YjMyIFU6RzozMiwg
VTpHOjMyLCBEOkc6MzIKIDY0OiBTdWI2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAog
ICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAg
ICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRy
CisgICAgeDg2OiBUbXAsIEluZGV4CiAKIGFybTY0OiBTdWI2NCBVOkc6NjQsIFU6Rzo2NCwgRDpH
OjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMjA0LDkgKzIxNCwxMiBAQCB4ODY6IFN1YkZsb2F0
IFU6RjozMiwgVUQ6RjozMgogTmVnMzIgVVpEOkc6MzIKICAgICBUbXAKICAgICB4ODY6IEFkZHIK
KyAgICB4ODY6IEluZGV4CiAKIDY0OiBOZWc2NCBVRDpHOjY0CiAgICAgVG1wCisgICAgeDg2OiBB
ZGRyCisgICAgeDg2OiBJbmRleAogCiBhcm02NDogTmVnYXRlRG91YmxlIFU6Rjo2NCwgRDpGOjY0
CiAgICAgVG1wLCBUbXAKQEAgLTMzMCw4ICszNDMsMTEgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6Rzoz
MgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisg
ICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBU
bXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogCiA2NDogQW5kNjQg
VTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTMzOSw3ICszNTUs
MTMgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogCiB4ODZfNjQ6IEFuZDY0IFU6Rzo2NCwgVUQ6
Rzo2NAogICAgIFRtcCwgVG1wCi0gICAgeDg2OiBJbW0sIFRtcAorICAgIEltbSwgVG1wCisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCiAKIEFuZERvdWJsZSBVOkY6NjQsIFU6Rjo2
NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDU5LDggKzQ4MSwxMSBAQCBPcjMyIFU6
RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6
IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAg
eDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgK
IAogNjQ6IE9yNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAg
LTQ2OSw2ICs0OTQsMTIgQEAgT3IzMiBVOkc6MzIsIFVaRDpHOjMyCiA2NDogT3I2NCBVOkc6NjQs
IFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKKyAgICB4ODY6IEltbSwg
QWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBU
bXAsIEluZGV4CisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKIAogWG9y
MzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00ODAsOCAr
NTExLDExIEBAIFhvcjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4Njog
SW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogICAgIHg4
NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAg
ICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IFhvcjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAg
ICBUbXAsIFRtcCwgVG1wCkBAIC00OTAsNiArNTI0LDExIEBAIFhvcjMyIFU6RzozMiwgVVpEOkc6
MzIKIDY0OiBYb3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogVG1w
LCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6
IEluZGV4LCBUbXAKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAg
IHg4NjogSW1tLCBUbXAKIAogYXJtNjQ6IE5vdDMyIFU6RzozMiwgWkQ6RzozMgpAQCAtNDk4LDEz
ICs1MzcsMTUgQEAgYXJtNjQ6IE5vdDMyIFU6RzozMiwgWkQ6RzozMgogeDg2OiBOb3QzMiBVWkQ6
RzozMgogICAgIFRtcAogICAgIEFkZHIKKyAgICBJbmRleAogCiBhcm02NDogTm90NjQgVTpHOjY0
LCBEOkc6NjQKICAgICBUbXAsIFRtcAogCi14ODY6IE5vdDY0IFVEOkc6NjQKK3g4Nl82NDogTm90
NjQgVUQ6Rzo2NAogICAgIFRtcAogICAgIEFkZHIKKyAgICBJbmRleAogCiBhcm02NDogQWJzRG91
YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAgLTY2OCwyNyArNzA5LDM4MSBAQCBM
b2FkOCBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9h
ZEFjcTggVTpHOjgsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIFN0
b3JlOCBVOkc6OCwgRDpHOjgKICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAgICAgeDg2
OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJbW0sIEFkZHIKIAorU3RvcmVSZWw4IFU6Rzo4LCBEOkc6
OAorICAgIFRtcCwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAg
ICB4ODY6IEltbSwgQWRkcgorCiBMb2FkOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIK
ICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3E4U2lnbmVkRXh0ZW5kVG8z
MiBVOkc6OCwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogTG9hZDE2
IFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFj
cTE2IFU6RzoxNiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogTG9h
ZDE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJ
bmRleCwgVG1wCiAKK0xvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCisg
ICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBTdG9yZTE2IFU6RzoxNiwgRDpHOjE2CiAg
ICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4
NjogSW1tLCBBZGRyCisKK1N0b3JlUmVsMTYgVTpHOjE2LCBEOkc6MTYKKyAgICBUbXAsIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIK
KworTG9hZEFjcTMyIFU6RzozMiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBU
bXAKKworU3RvcmVSZWwzMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKworNjQ6IExv
YWRBY3E2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisK
KzY0OiBTdG9yZVJlbDY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorCisjIFRoZSBm
aXJzdCBvcGVyYW5kIGlzIHJheC4KK3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIsIFVEOkc6
OCwgVTpHOjgsIFVEOkc6OCwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRy
LCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9t
aWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiwgWkQ6Rzo4Cisg
ICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAq
LCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6
MzIsIFU6RzozMiwgVUQ6RzozMiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBB
ZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2XzY0
OiBBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCwgWkQ6
Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVM4IFVEOkc6OCwg
VTpHOjgsIFVEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgK
KworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYKKyAgICBU
bXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3Ryb25n
Q0FTMzIgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAg
VG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1N0cm9uZ0NBUzY0IFVEOkc6NjQsIFU6
Rzo2NCwgVUQ6Rzo2NAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgK
KworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6
Rzo4IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXND
b25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYgVTpH
OjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYgL2JyYW5jaAorICAgIFN0YXR1c0NvbmQsIFRt
cCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBC
cmFuY2hBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiAv
YnJhbmNoCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwg
VG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0IFU6Rzoz
MiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAq
LCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRv
bWljQWRkOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQxNiBVOkc6MTYsIFVE
Okc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
Nl82NDogQXRvbWljQWRkNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1t
LCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWI4
IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjE2IFU6RzoxNiwgVUQ6RzoxNgor
ICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisKK3g4NjogQXRvbWljU3ViMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBB
dG9taWNTdWI2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDggVTpHOjgs
IFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1t
LCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwor
eDg2OiBBdG9taWNBbmQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY0Fu
ZDY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3I4IFU6Rzo4LCBVRDpHOjgK
KyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY09yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNPcjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljT3I2NCBVOkc6NjQs
IFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjggVTpHOjgsIFVEOkc6OAorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljWG9yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYb3IzMiBV
Okc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hvcjY0IFU6Rzo2NCwgVUQ6Rzo2
NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogQXRvbWljTmVnOCBVRDpHOjgKKyAgICBBZGRyCisgICAgSW5kZXgKKwor
eDg2OiBBdG9taWNOZWcxNiBVRDpHOjE2CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRv
bWljTmVnMzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0b21pY05l
ZzY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3Q4IFVEOkc6
OAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDE2IFVEOkc6MTYKKyAgICBB
ZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QzMiBVRDpHOjMyCisgICAgQWRkcgorICAg
IEluZGV4CisKK3g4Nl82NDogQXRvbWljTm90NjQgVUQ6Rzo2NAorICAgIEFkZHIKKyAgICBJbmRl
eAorCit4ODY6IEF0b21pY1hjaGdBZGQ4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQxNiBVRDpHOjE2LCBVRDpHOjE2Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQzMiBVRDpH
OjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0
b21pY1hjaGdBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY1hjaGc4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGcxNiBVRDpHOjE2LCBVRDpHOjE2CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGczMiBVRDpHOjMyLCBV
RDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hj
aGc2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCith
cm02NDogTG9hZExpbms4IFU6Rzo4LCBaRDpHOjgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwg
VG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTggVTpHOjgsIFpEOkc6OAorICAgIEFkZHIsIFRtcAor
ICAgIEluZGV4LCBUbXAKKworIyBTdXBlciBjb25mdXNpbmcgZmFjdDogdGhpcyByZXR1cm5zIDAg
dG8gbWVhbiBzdWNjZXNzLCAxIHRvIG1lYW4gZmFpbHVyZS4KK2FybTY0OiBTdG9yZUNvbmQ4IFU6
Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwg
VG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRt
cCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGluazE2IFU6
RzoxNiwgWkQ6RzoxNgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExv
YWRMaW5rQWNxMTYgVTpHOjE2LCBaRDpHOjE2CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRt
cAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAs
IEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMTYg
VTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5k
ZXgsIFRtcAorCithcm02NDogTG9hZExpbmszMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBBZGRyLCBU
bXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTMyIFU6RzozMiwgWkQ6Rzoz
MgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDMyIFU6
RzozMiwgRDpHOjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4
LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4Cisg
ICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5r
NjQgVTpHOjY0LCBaRDpHOjY0CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02
NDogTG9hZExpbmtBY3E2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRl
eCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQ2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAg
IFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRS
ZWw2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1w
LCBJbmRleCwgVG1wCisKK2FybTY0OiBEZXBlbmQzMiBVOkc6MzIsIEQ6RzozMgorICAgIFRtcCwg
VG1wCisKK2FybTY0OiBEZXBlbmQ2NCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wCiAKIENv
bXBhcmUzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29uZCwgVG1w
LCBUbXAsIFRtcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6
ZUJsb2NrT3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTc3LDYgKzE3NywxMCBAQCB2b2lkIG9wdGltaXplQmxvY2tPcmRlcihDb2Rl
JiBjb2RlKQogICAgICAgICBjYXNlIEJyYW5jaFN1YjY0OgogICAgICAgICBjYXNlIEJyYW5jaE5l
ZzMyOgogICAgICAgICBjYXNlIEJyYW5jaE5lZzY0OgorICAgICAgICBjYXNlIEJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzg6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTY6CisgICAg
ICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzI6CisgICAgICAgIGNhc2UgQnJhbmNoQXRv
bWljU3Ryb25nQ0FTNjQ6CiAgICAgICAgICAgICBpZiAoY29kZS5maW5kTmV4dEJsb2NrKGJsb2Nr
KSA9PSBibG9jay0+c3VjY2Vzc29yQmxvY2soMCkgJiYgYnJhbmNoLmFyZ3NbMF0uaXNJbnZlcnRp
YmxlKCkpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnN3YXAoYmxvY2stPnN1Y2Nlc3NvcigwKSwg
YmxvY2stPnN1Y2Nlc3NvcigxKSk7CiAgICAgICAgICAgICAgICAgYnJhbmNoLmFyZ3NbMF0gPSBi
cmFuY2guYXJnc1swXS5pbnZlcnRlZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHZvaWQgcGFkSW50ZXJmZXJlbmNlKENvZGUm
IGNvZGUpCiAgICAgICAgICAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywg
V2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyb2xlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OkVhcmx5WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vhcmx5RGVmID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6TGF0ZVVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
U3BpbGxFdmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUp
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlQ29sZFVzZToKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3JpdHlP
cmRlcihiYW5rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0QmVmb3Jl
LmdldChyZWcpICYmICFzZXRBZnRlci5nZXQocmVnKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRBZnRlci5zZXQocmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsMTQgKzUxLDQ5IEBAIGNsYXNzIEFyZwogICAgICAgICBAYmFuayA9IGJh
bmsKICAgICAgICAgQHdpZHRoID0gd2lkdGgKICAgICBlbmQKLQotICAgIGRlZiB3aWR0aENvZGUK
KyAgICAKKyAgICBkZWYgc2VsZi53aWR0aENvZGUod2lkdGgpCiAgICAgICAgIGlmIHdpZHRoID09
ICJQdHIiCiAgICAgICAgICAgICAicG9pbnRlcldpZHRoKCkiCiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICJXaWR0aCN7d2lkdGh9IgogICAgICAgICBlbmQKICAgICBlbmQKKworICAgIGRlZiB3
aWR0aENvZGUKKyAgICAgICAgQXJnLndpZHRoQ29kZSh3aWR0aCkKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgc2VsZi5yb2xlQ29kZShyb2xlKQorICAgICAgICBjYXNlIHJvbGUKKyAgICAgICAgd2hl
biAiVSIKKyAgICAgICAgICAgICJVc2UiCisgICAgICAgIHdoZW4gIkQiCisgICAgICAgICAgICAi
RGVmIgorICAgICAgICB3aGVuICJaRCIKKyAgICAgICAgICAgICJaRGVmIgorICAgICAgICB3aGVu
ICJVRCIKKyAgICAgICAgICAgICJVc2VEZWYiCisgICAgICAgIHdoZW4gIlVaRCIKKyAgICAgICAg
ICAgICJVc2VaRGVmIgorICAgICAgICB3aGVuICJVQSIKKyAgICAgICAgICAgICJVc2VBZGRyIgor
ICAgICAgICB3aGVuICJTIgorICAgICAgICAgICAgIlNjcmF0Y2giCisgICAgICAgIHdoZW4gIkVE
IgorICAgICAgICAgICAgIkVhcmx5RGVmIgorICAgICAgICB3aGVuICJFWkQiCisgICAgICAgICAg
ICAiRWFybHlaRGVmIgorICAgICAgICB3aGVuICJMVSIKKyAgICAgICAgICAgICJMYXRlVXNlIgor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbmQKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgcm9sZUNvZGUKKyAgICAgICAgQXJnLnJvbGVDb2RlKHJvbGUpCisgICAgZW5k
CiBlbmQKIAogY2xhc3MgT3ZlcmxvYWQKQEAgLTE4Miw3ICsyMTcsNyBAQCBkZWYgbGV4KHN0ciwg
ZmlsZU5hbWUpCiBlbmQKIAogZGVmIGlzUm9sZSh0b2tlbikKLSAgICB0b2tlbiA9fiAvXEEoKFUp
fChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUykpXFovCisgICAgdG9rZW4gPX4gL1xBKChVKXwo
RCl8KFVEKXwoWkQpfChVWkQpfChVQSl8KFMpfChFRCl8KEVaRCl8KExVKSlcWi8KIGVuZAogCiBk
ZWYgaXNHRih0b2tlbikKQEAgLTE5MCw3ICsyMjUsNyBAQCBkZWYgaXNHRih0b2tlbikKIGVuZAog
CiBkZWYgaXNLaW5kKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1t
KXwoQml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8
KERvdWJsZUNvbmQpKVxaLworICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwo
Qml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERv
dWJsZUNvbmQpfChTdGF0dXNDb25kKSlcWi8KIGVuZAogCiBkZWYgaXNBcmNoKHRva2VuKQpAQCAt
MjY0LDcgKzI5OSw3IEBAIGNsYXNzIFBhcnNlcgogCiAgICAgZGVmIGNvbnN1bWVLaW5kCiAgICAg
ICAgIHJlc3VsdCA9IHRva2VuLnN0cmluZwotICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBr
aW5kIChJbW0sIEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVs
Q29uZCwgUmVzQ29uZCwgb3IgRG91YmxlQ29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKKyAg
ICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0
SW1tNjQsIFRtcCwgQWRkciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIERvdWJsZUNvbmQsIG9y
IFN0YXR1c0NvbmQpIikgdW5sZXNzIGlzS2luZChyZXN1bHQpCiAgICAgICAgIGFkdmFuY2UKICAg
ICAgICAgcmVzdWx0CiAgICAgZW5kCkBAIC02MzQsMjggKzY2OSw3IEBAIHdyaXRlSCgiT3Bjb2Rl
VXRpbHMiKSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5l
YWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAgICAgIGNh
c2UgYXJnLnJvbGUKLSAgICAgICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAgICAgICAg
ICByb2xlID0gIlVzZSIKLSAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAg
ICAgICByb2xlID0gIkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJaRCIKLSAgICAgICAgICAg
ICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlVEIgotICAgICAg
ICAgICAgICAgICAgICByb2xlID0gIlVzZURlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJVWkQi
Ci0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAgICAgICAgICAgICAgICB3
aGVuICJVQSIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAg
ICAgICAgIHdoZW4gIlMiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2NyYXRjaCIKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAg
ICAgICAgZW5kCi0KLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2lu
ZGV4fV0sIEFyZzo6I3tyb2xlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCisg
ICAgICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7
YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCiAgICAgICAg
ICAgICB9CiAgICAgICAgIGVuZAogICAgIH0KQEAgLTgxOSw2ICs4MzMsNyBAQCB3cml0ZUgoIk9w
Y29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJSZWxDb25kIgogICAgICAg
ICAgICAgICAgIHdoZW4gIlJlc0NvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29u
ZCIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQga2luZDogI3traW5kLm5h
bWV9IgogICAgICAgICAgICAgICAgIGVuZApAQCAtMTEwNSw2ICsxMTIwLDggQEAgd3JpdGVIKCJP
cGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3Nb
I3tpbmRleH1dLmFzUmVzdWx0Q29uZGl0aW9uKCkiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91
YmxlQ29uZCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0u
YXNEb3VibGVDb25kaXRpb24oKSIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgor
ICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc1N0YXR1c0Nv
bmRpdGlvbigpIgogICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQogCkBAIC0xMTQ4
LDI3ICsxMTY1LDcgQEAgRmlsZS5vcGVuKCJKU0Fpcl9vcGNvZGUuanMiLCAidyIpIHsKICAgICAg
ICAgICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tvdmVybG9hZC5zaWduYXR1cmUubGVuZ3RofToi
IGlmIG5lZWRPdmVybG9hZFN3aXRjaAogICAgICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVy
ZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAgICAgICB8IGFyZywgaW5kZXggfAot
ICAgICAgICAgICAgICAgICAgICByb2xlID0gbmlsCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
YXJnLnJvbGUKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVSIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4g
IlpEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAgICAgICAg
ICAgICAgICB3aGVuICJVRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVm
IgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVWkQiCi0gICAgICAgICAgICAgICAgICAgICAg
ICByb2xlID0gIlVzZVpEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlVBIgotICAgICAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAgICAgICAgICAgICB3
aGVuICJTIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3JhdGNoIgotICAgICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAg
ICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7cm9sZX0s
ICN7YXJnLmJhbmt9UCwgI3thcmcud2lkdGh9KTsiCisgICAgICAgICAgICAgICAgICAgIG91dHAu
cHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7YXJnLnJvbGVDb2RlfSwg
I3thcmcuYmFua31QLCAje2FyZy53aWR0aH0pOyIKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgb3V0cC5wdXRzICJicmVhazsiCiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
Myw5ICs0MTMsNiBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJv
b2wsIGR1bXBNb2R1bGVMb2FkaW5nU3RhdGUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAg
ICB2KGJvb2wsIGV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyLCBmYWxzZSwgTm9ybWFsLCAiZXhw
b3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUgbG9hZGVyIG9iamVjdCB0byB0aGUgZ2xvYmFsIHNwYWNl
IGZvciBkZWJ1Z2dpbmciKSBcCiAgICAgXAotICAgIHYoYm9vbCwgZHVtcEFpckFzSlNCZWZvcmVB
bGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgdihib29sLCBkdW1w
QWlyQWZ0ZXJBbGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgXAog
ICAgIHYoYm9vbCwgdXNlU3VwZXJTYW1wbGVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgXAogICAgIHYoYm9vbCwgcmVwb3J0TExJbnRTdGF0cywgZmFsc2UsIENvbmZpZ3VyYWJsZSwg
IlJlcG9ydHMgTExJbnQgc3RhdGlzdGljcyIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303015</attachid>
            <date>2017-02-28 17:28:54 -0800</date>
            <delta_ts>2017-03-01 10:33:46 -0800</delta_ts>
            <desc>it just passed some WeakCAS tests!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>270761</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMyBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAv
KiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87
IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQz
NDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNj
b3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5ODMyREFDMDA3RDRC
MTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDMsOCArMjI1MCw2IEBACiAJCURD
MjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIw
OTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVh
cENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRC
OEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1
QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8q
IFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREM2MDVCNUYxQ0Uy
NkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxl
clVJRC5jcHAgKi87IH07CkBAIC0yNzY0LDYgKzI3NjksMTMgQEAKIAkJMEYyQzYzQUMxRTYwQUUz
QzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4Mzkg
LyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7
IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2
M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9t
aWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQz
RTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0lu
c2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0
NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMv
YWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBh
dGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MxMUU2
NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRpdmVUcmFpdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQzNDAwN0Q0QjE5IC8q
IERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERD
MTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDc3OCw4ICs0NzkwLDYgQEAKIAkJREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8q
IElDU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUNTdGF0cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyog
SGVhcENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcENlbGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8q
IEhlYXBDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBD
ZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckR1bXBBc0pTLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJEdW1wQXNKUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJEdW1wQXNK
Uy5oOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuY3BwOyBwYXRo
ID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuaDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNUIx
Q0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyVUlELmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVy
VUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyOTIsNiArNTMwMiw4IEBA
CiAJCQkJMEZFQzg0QjMxQkRBQ0Q4ODAwODBGRjc0IC8qIGFpciAqLywKIAkJCQkwRkVDODRCNDFC
REFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRC
NTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmggKi8sCisJCQkJMEYyQzYz
QjMxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwICovLAorCQkJCTBGMkM2M0I0
MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8sCiAJCQkJMEYyQzYzQUIxRTYw
QUUzQzAwQzEzODM5IC8qIEIzQmFuay5jcHAgKi8sCiAJCQkJMEYyQzYzQUMxRTYwQUUzQzAwQzEz
ODM5IC8qIEIzQmFuay5oICovLAogCQkJCTBGRUM4NEI2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jh
c2ljQmxvY2suY3BwICovLApAQCAtNTM1NCw2ICs1MzY2LDcgQEAKIAkJCQkwRkVDODRDRDFCREFD
REFDMDA4MEZGNzQgLyogQjNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODRDRTFCREFD
REFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg0Q0YxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzR2VuZXJhdGUuaCAqLywKKwkJCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4Mzkg
LyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkVDODREMDFCREFDREFD
MDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg1QkYx
QkUxNjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmNwcCAqLywKIAkJCQkwRkVDODVDMDFCRTE2
N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLywKQEAgLTUzNzgsNiArNTM5MSw3IEBACiAJ
CQkJMEZFQzg0RDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuaCAqLywKIAkJCQkw
RjMzOEUwMzFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmNwcCAqLywKIAkJCQkw
RjMzOEUwNDFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmggKi8sCisJCQkJMEYy
QzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi8sCiAJCQkJMEYzMzhF
MDUxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0LmggKi8sCiAJCQkJMEYzMzhF
MDYxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5jcHAgKi8sCiAJCQkJMEYz
MzhFMDcxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5oICovLApAQCAtNTQ2
OSw2ICs1NDgzLDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5s
aW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2Nr
LmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5o
ICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNl
dC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0
aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29y
a2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdD
b252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC01NDgwLDggKzU0OTYsNiBAQAogCQkJCTBGMTBGMUEy
MUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAqLywKIAkJCQk3OUFCQjE3QjFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQk3OUFCQjE3QzFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmggKi8sCi0JCQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLywKLQkJCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4
QUYgLyogQWlyRHVtcEFzSlMuaCAqLywKIAkJCQkwRjQ1NzAzNjFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICovLAogCQkJCTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYy
OSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovLAogCQkJCTBGNjE4MzIzMUM0NUJGMDcwMDcy
NDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5jcHAgKi8sCkBAIC03MzI2LDYgKzczNDAsNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2
OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRjFFNjYwRUE1MDBDMTM4Mzkg
LyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAw
Rjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENE
NzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJ
ODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCkBAIC03MzU0
LDggKzczNjksOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3Nl
bWJsZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIx
IC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4
NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKQEAg
LTc5NDMsNyArNzk1OCw2IEBACiAJCQkJMEZFQzg1NzQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckND
YWxsU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzYxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTBGMUEzMUM0MjBCRjAwMDFDMDdE
MiAvKiBBaXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAotCQkJCURDNDU0QjhEMUQwMEU4MjQwMDRD
MThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NTcwMzkxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjYxODMyRDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNERFMUNGMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc5NTYsNiArNzk3MCw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckluc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3
RDcxRDlEQzQ0MjAwMUI5ODI1IC8qIEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2
M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjY4NEQ0MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUzNEMxQTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQ
cmVzc3VyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8q
IEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDQ3LDYgKzgwNjIs
NyBAQAogCQkJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQ
dHJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8q
IEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNG
NzAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjMzOEUwRTFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzM0ZDRkMxQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY2QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRl
VGFpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtODIzNyw2ICs4MjUzLDcgQEAKIAkJCQlBNzdBNDIz
RTE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNDMjFFNjY0QTVD
MDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc3
MTQzRkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQzRTQwMjFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4RDNEMDFCNTVBNkUwMDAy
QzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTgzNjYsNiArODM4Myw3IEBACiAJCQkJMEYzOTJDOEExQjQ2MTg4NDAwODQ0NzI4IC8qIERG
R09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdG
NTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYwMEM3
MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIxOUQwQkE3RDAw
QjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKQEAgLTk3OTIsNiArOTgx
MCw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTgwMiw3ICs5ODIxLDYgQEAKIAkJCQkwRkVD
ODU3MzFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTc1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0Ux
QzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMDI0OCw2ICsxMDI2Niw3IEBACiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8q
IEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVC
OEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQw
RTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMjY2LDYgKzEwMjg1LDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBB
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdB
NDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiIC8vIEhhdmUgdG8g
YnJlYWsgd2l0aCBzdHlsZSBiZWNhdXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpcyBhIHNo
YWR5IGhlYWRlci4KKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisKKyNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdURiB7CisK
K3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyQmFzZTo6U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBzd2l0Y2ggKGNvbmRp
dGlvbikgeworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN1Y2Nlc3M6Cisg
ICAgICAgIG91dC5wcmludCgiU3VjY2VzcyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6RmFpbHVyZToKKyAgICAgICAgb3V0LnByaW50KCJG
YWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0
Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUmFuZG9tLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NTAsOCArNTEsMjggQEAgbmFtZXNwYWNlIERGRyB7CiBzdHJ1Y3QgT1NSRXhpdDsKIH0KIAorY2xh
c3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgeworcHVibGljOgorICAgIGVudW0gU3RhdHVz
Q29uZGl0aW9uIHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgRmFpbHVyZQorICAgIH07Cisg
ICAgCisgICAgc3RhdGljIFN0YXR1c0NvbmRpdGlvbiBpbnZlcnQoU3RhdHVzQ29uZGl0aW9uIGNv
bmRpdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7CisgICAgICAgIGNh
c2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBGYWlsdXJlOworICAgICAgICBjYXNlIEZh
aWx1cmU6CisgICAgICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAgICAgICAgfQorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAg
ICB9Cit9OworCiB0ZW1wbGF0ZSA8Y2xhc3MgQXNzZW1ibGVyVHlwZSwgY2xhc3MgTWFjcm9Bc3Nl
bWJsZXJUeXBlPgotY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciB7CitjbGFzcyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlIHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwg
TWFjcm9Bc3NlbWJsZXJUeXBlPiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZTsKICAgICB0eXBl
ZGVmIEFzc2VtYmxlclR5cGUgQXNzZW1ibGVyVHlwZV9UOwpAQCAtMTEwOCwzICsxMTI5LDE2IEBA
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwgTWEKICNlbmRpZiAvLyBFTkFC
TEUoQVNTRU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKKworI2lmIEVOQUJMRShBU1NFTUJM
RVIpCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJh
c2U6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8g
RU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMi0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTM2LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IHR3b1RvVGhlMzI7IC8vIFRoaXMgaXMgc3VwZXIgdXNlZnVsIGZvciBzb21lIGRvdWJsZSBjb2Rl
LgogCiAgICAgLy8gVXRpbGl0aWVzIHVzZWQgYnkgdGhlIERGRyBKSVQuCisgICAgdXNpbmcgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OmludmVydDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
ckJhc2U6OmludmVydDsKICAgICAKICAgICBzdGF0aWMgRG91YmxlQ29uZGl0aW9uIGludmVydChE
b3VibGVDb25kaXRpb24gY29uZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBk
ZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFk
ZDMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CkBAIC0yNTEsMTYgKzI1
Niw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZDE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBhbmQxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmFuZGJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4
LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZz
ZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKEJhc2VJbmRleCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9
CisKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRs
X2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdf
aW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19pbShzdGF0
aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5k
OChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
bmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC00NTYsNiArNTE2LDMxIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNE
ZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgbmVnMzIoQmFzZUluZGV4IHNyY0Rlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdsX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3Qu
YmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBu
ZWcxNihBZGRyZXNzIHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20o
c3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihC
YXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3dfbShzcmNE
ZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsK
KyAgICB9CisKKyAgICB2b2lkIG5lZzgoQWRkcmVzcyBzcmNEZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubmVnYl9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgbmVnOChCYXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5lZ2JfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4
LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ycihzcmMs
IGRlc3QpOwpAQCAtNDcxLDE2ICs1NTYsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5vcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lk
IG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIub3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwg
ZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcndfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CisgICAgdm9pZCBvcjgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgb3I4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihBZGRyZXNz
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoQmFz
ZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7
CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbShpbW0ubV92YWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3
X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRp
Y19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIg
aW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9p
bShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCBvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC02NTQsMTYgKzc5NCw3MSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19p
bShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19j
YXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92YWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorCisgICAgdm9pZCBzdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50
MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9
CiAKKyAgICB2b2lkIHN1YjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5p
bmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3Jt
KHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWIxNihS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQg
c3ViOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuc3ViYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAg
IHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3Qu
aW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNjc3LDYgKzg3Miw1MCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3Js
X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZf
dD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRp
Y19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3J3X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBk
ZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0
aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5t
X3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92
YWx1ZSA9IHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1t
Lm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9y
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYg
KGltbS5tX3ZhbHVlID09IC0xKQpAQCAtNjkwLDExICs5MjksNDEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAg
fQogCisgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdp
c3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9y
d19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9y
MTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRl
c3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CiAgICAgdm9pZCB4b3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAg
ICAgfQogICAgIAorICAgIHZvaWQgeG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHhv
cjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC03NDEsNiArMTAxMCwzMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdDMyKEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbm90MTYoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgbm90MTYoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCBub3Q4KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5vdDgoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5u
b3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBzcXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcXJ0c2RfcnIoc3JjLCBkc3QpOwpA
QCAtMTA3MSw0MiArMTM2NSwyMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAgICAg
ICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNhbiBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVn
aXN0ZXJzOwotICAgICAgICAvLyBlc3AuLmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0
ZXJzIQotICAgICAgICBpZiAoc3JjID49IDQpIHsKLSAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1w
b3JhcnkgcmVnaXN0ZXIuCi0gICAgICAgICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRS
ZWdpc3RlcihhZGRyZXNzKTsKLQotICAgICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5
IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhlIHN0b3JlLgotICAgICAgICAgICAgc3dhcChzcmMsIHRl
bXApOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKLSAgICAgICAg
ICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2Vu
ZGlmCiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKICAgICB2
b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0jaWYg
Q1BVKFg4NikKLSAgICAgICAgLy8gT24gMzItYml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9t
IHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKLSAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0
byB0aGUgJ2gnIHJlZ2lzdGVycyEKLSAgICAgICAgaWYgKHNyYyA+PSA0KSB7Ci0gICAgICAgICAg
ICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLgotICAgICAgICAgICAgUmVnaXN0ZXJJRCB0
ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRkcmVzcyk7Ci0KLSAgICAgICAgICAgIC8vIFN3YXAg
dG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0byBwZXJmb3JtIHRoZSBzdG9yZS4KLSAgICAgICAg
ICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0odGVt
cCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7Ci0gICAgICAgICAgICBzd2FwKHNyYywg
dGVtcCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBt
X2Fzc2VtYmxlci5tb3Z3X3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAg
ICAgfQogCisgICAgdm9pZCBzdG9yZTE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3RvcmUxNihUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5t
b3Z3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7CisgICAgfQogCiAgICAgLy8gRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9u
OgogICAgIC8vCkBAIC0yNzQzLDc0ICszMDE4LDgzOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKDAsIDAsIFg4NlJlZ2lz
dGVyczo6ZXNwKTsKICAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsm
XSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsgfSk7CisgICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhh
dCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBv
biB4ODYuCi0gICAgdm9pZCBzdG9yZUZlbmNlKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAg
ICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAg
IH0KIAotICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9u
IG9mIG5vcm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBsb2Fk
RmVuY2UoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAgICBhdG9taWNTdHJv
bmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIu
Y21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFi
ZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNl
V2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlv
bi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4
cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsgfSk7CiAgICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSgpCisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAg
ICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHBhdGNoYWJsZUp1bXBT
aXplKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5k
ZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcykKICAgICB7Ci0gICAgICAgIGlmIChzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVj
a1N0YXRlOjpOb3RDaGVja2VkKQotICAgICAgICAgICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7Ci0g
ICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisgICAgdm9pZCBh
dG9taWNTdHJvbmdDQVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gQVZYIHN0aWxs
IGNhdXNlcyBteXN0ZXJpb3VzIHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4g
YmUgbWFzc2l2ZS4KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdG9taWNTdHJvbmdD
QVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdz
KCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAg
IGludCBmbGFncyA9IDA7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgaW50IGNwdUluZm9b
NF07Ci0gICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHgxKTsKLSAgICAgICAgZmxhZ3MgPSBjcHVJ
bmZvWzJdOwotI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQotI2lmIENQVShYODZfNjQpCi0g
ICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAg
ICAiY3B1aWQ7IgotICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDog
Ij1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlYngi
LCAiJWVjeCIsICIlZWR4IgotICAgICAgICAgICAgKTsKLSNlbHNlCi0gICAgICAgIGFzbSAoCi0g
ICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAicHVzaGwgJSVlYng7
IgotICAgICAgICAgICAgImNwdWlkOyIKLSAgICAgICAgICAgICJwb3BsICUlZWJ4OyIKLSAgICAg
ICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAg
ICAgICAgICAgOgotICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAg
ICAgICApOwotI2VuZGlmCisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2
KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5k
UmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwor
ICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0p
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBi
cmFuY2hBdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRv
bWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWlj
V2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21p
Y1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0
b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAg
IHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwg
ZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKwor
ICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihj
b25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQs
IGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBl
Y3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFkZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNB
ZGQ4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYWRkMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YWRkMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1Yjgo
aW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWI4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1
YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWIzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWIzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgYW5kOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0Fu
ZDgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihpbW0s
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
bmQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNPcjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3Iz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I4KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Iz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hvcjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJlZywgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05l
ZzgoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBuZWc4KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzgo
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG5lZzgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMTYo
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBuZWcxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbmVnMTYoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMzIo
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBuZWczMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbmVnMzIoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG5vdDgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbm90OChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QxNihBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG5vdDE2KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBub3QxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QzMihBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG5vdDMyKGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBub3QzMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkOChS
ZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIueGFkZHdfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBtX2Fzc2VtYmxlci54YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhh
ZGRsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhjaGd3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueGNoZ3dfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBsb2FkOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3E4KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IGxvYWQ4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRF
eHRlbmRUbzMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBs
b2FkOFNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbG9hZDhTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBsb2FkMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxMTYoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZDE2KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2lnbmVk
RXh0ZW5kVG8zMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbG9hZDMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgbG9hZEFjcTMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBzdG9yZVJlbDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAg
ICAgICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KGltbSwgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlMTYoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBz
dG9yZVJlbDMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBz
dG9yZTMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYywg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKGltbSwgZGVzdCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9y
bWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBzdG9yZUZlbmNl
KCkKKyAgICB7CisgICAgfQorCisgICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBw
cmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4K
KyAgICB2b2lkIGxvYWRGZW5jZSgpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9j
YXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVw
bGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGlu
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJk
aWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgfQorCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkKKyAgICB7CisgICAgICAgIGlmIChzX3Nz
ZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQorICAgICAgICAg
ICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7CisgICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3Rh
dGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydHNBVlgoKQorICAgIHsKKyAgICAgICAgLy8gQVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3Vz
IHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4gYmUgbWFzc2l2ZS4KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hG
bGFncygpCisgICAgeworICAgICAgICBpbnQgZmxhZ3MgPSAwOworI2lmIENPTVBJTEVSKE1TVkMp
CisgICAgICAgIGludCBjcHVJbmZvWzRdOworICAgICAgICBfX2NwdWlkKGNwdUluZm8sIDB4MSk7
CisgICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsKKyNlbGlmIENPTVBJTEVSKEdDQ19PUl9DTEFO
RykKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4
MSwgJSVlYXg7IgorICAgICAgICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICJtb3ZsICUlZWN4
LCAlMDsiCisgICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQorICAgICAgICAgICAgOgorICAgICAg
ICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICk7Cisj
ZWxzZQorICAgICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgorICAg
ICAgICAgICAgInB1c2hsICUlZWJ4OyIKKyAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAg
ICAicG9wbCAlJWVieDsiCisgICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAgICAgICAg
ICAgOiAiPWciIChmbGFncykKKyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVlYXgiLCAi
JWVjeCIsICIlZWR4IgorICAgICAgICAgICAgKTsKKyNlbmRpZgogI2VuZGlmIC8vIENPTVBJTEVS
KEdDQ19PUl9DTEFORykKICAgICAgICAgc19zc2U0XzFDaGVja1N0YXRlID0gKGZsYWdzICYgKDEg
PDwgMTkpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsK
ICAgICAgICAgc19hdnhDaGVja1N0YXRlID0gKGZsYWdzICYgKDEgPDwgMjgpKSA/IENQVUlEQ2hl
Y2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKQEAgLTI4MzEsNiArMzg3MCwx
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6
OkNvbmRpdGlvbj4oY29uZCk7CiAgICAgfQogCisgICAgWDg2QXNzZW1ibGVyOjpDb25kaXRpb24g
eDg2Q29uZGl0aW9uKFN0YXR1c0NvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChjb25kKSB7CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbkU7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAg
IHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbk5FOworICAgICAgICB9CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6
OkNvbmRpdGlvbkU7CisgICAgfQorCiAgICAgdm9pZCBzZXQzMihYODZBc3NlbWJsZXI6OkNvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogI2lmIENQVShYODYpCkBAIC0yOTI1
LDYgKzM5NzYsMzUgQEAgcHJvdGVjdGVkOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihzaXpl
T2ZSZWdpc3RlciksIGRzdCk7CiAgICAgICAgIHNyY0lzTm9uWmVyby5saW5rKHRoaXMpOwogICAg
IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0
LCBSZWdpc3RlcklEIHJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3
YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRS
ZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNv
bmQpLCByZXN1bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3Qg
RnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJl
Z2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5j
KCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIEp1bXAgYnJhbmNoQXRv
bWljU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFu
ZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVn
aXN0ZXJzOjplYXgpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29u
ZGl0aW9uKGNvbmQpKSk7CisgICAgfQogCiBwcml2YXRlOgogICAgIC8vIE9ubHkgTWFjcm9Bc3Nl
bWJsZXJYODYgc2hvdWxkIGJlIHVzaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kOyBTU0UyIGlzIGFs
d2F5cyBhdmFpbGFibGUgb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2NCwxMSArMjY0LDIxIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7
CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
YWRkcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQg
YWRkNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYWRkcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYWRkNjQoQWJzb2x1dGVBZGRyZXNzIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNy
Yy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKQEAgLTMwNiw2ICszMTYsMTQgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1
ZSA9PSAxKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuaW5jcV9tKGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9
CisKICAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRy
ZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBz
Y3JhdGNoUmVnaXN0ZXIoKSk7CkBAIC0zNDIsMTEgKzM2MCw0MSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLmFuZHFfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQ2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hbmRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChBZGRyZXNzIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChCYXNlSW5kZXgg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAg
fQorCiAgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2lt
KGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3Rl
cklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBpbnRwdHJfdCBpbnRWYWx1ZSA9IGltbS5hc0lu
dHB0cigpOwpAQCAtNTUyLDExICs2MDAsNTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5uZWdxX3IoZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBuZWc2NChBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBuZWc2NChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5lZ3FfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ycihzcmMsIGRlc3Qp
OwogICAgIH0KIAorICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
b3I2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2
b2lkIG9yNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5z
Y2FsZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9pbShpbW0ubV92YWx1
ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTY0IGltbSwgUmVn
aXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlIDw9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpCkBAIC02MTksMTYgKzcwNywzMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJx
X2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjY0KEFkZHJlc3Mgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNy
Yy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KEJhc2VJ
bmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1
YnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsK
KyAgICB9CisKICAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCB4b3I2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIueG9ycV9ycihzcmMsIGRlc3QpOwpAQCAtNjUxLDYgKzc1NCwzMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IHhvcjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci54b3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHhvcjY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhvcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1t
Lm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9y
NjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci54b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0
LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhv
cnFfaXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwpAQCAtNjY2LDYgKzc5NCwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vdHFfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdDY0KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubm90cV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgbG9hZDY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwpAQCAtNzI1LDYgKzg1OCwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQo
VHJ1c3RlZEltbTY0IGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzMyXzY0KGltbS5tX3ZhbHVlKSkgewpAQCAtMTI5NCw3ICsx
NDMyLDI1NSBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3Zl
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRy
ZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwgbWFzazgpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBh
dG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsm
XSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9
CiAKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FT
KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRk
cmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1Zh
bHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4g
YnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2
NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHN1YjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
U3ViNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgb3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y09yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05lZzY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTmVnNjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05vdDY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTm90NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54
YWRkcV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzY0
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzY0
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRBY3E2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCB0
cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5MCwxNiArMTkwLDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgIE9QX0FERF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDAxLAog
ICAgICAgICBPUF9BRERfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgwMywKICAgICAgICAg
T1BfQUREX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MDUsCisgICAgICAgIE9QX09SX0V2
R2IgICAgICAgICAgICAgICAgICAgICAgPSAweDA4LAogICAgICAgICBPUF9PUl9Fdkd2ICAgICAg
ICAgICAgICAgICAgICAgID0gMHgwOSwKICAgICAgICAgT1BfT1JfR3ZFdiAgICAgICAgICAgICAg
ICAgICAgICA9IDB4MEIsCiAgICAgICAgIE9QX09SX0VBWEl2ICAgICAgICAgICAgICAgICAgICAg
PSAweDBELAogICAgICAgICBPUF8yQllURV9FU0NBUEUgICAgICAgICAgICAgICAgID0gMHgwRiwK
KyAgICAgICAgT1BfQU5EX0V2R2IgICAgICAgICAgICAgICAgICAgICA9IDB4MjAsCiAgICAgICAg
IE9QX0FORF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDIxLAogICAgICAgICBPUF9BTkRf
R3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgyMywKKyAgICAgICAgT1BfU1VCX0V2R2IgICAg
ICAgICAgICAgICAgICAgICA9IDB4MjgsCiAgICAgICAgIE9QX1NVQl9Fdkd2ICAgICAgICAgICAg
ICAgICAgICAgPSAweDI5LAogICAgICAgICBPUF9TVUJfR3ZFdiAgICAgICAgICAgICAgICAgICAg
ID0gMHgyQiwKICAgICAgICAgT1BfU1VCX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MkQs
CiAgICAgICAgIFBSRV9QUkVESUNUX0JSQU5DSF9OT1RfVEFLRU4gICAgPSAweDJFLAorICAgICAg
ICBPUF9YT1JfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgzMCwKICAgICAgICAgT1BfWE9S
X0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MzEsCiAgICAgICAgIE9QX1hPUl9HdkV2ICAg
ICAgICAgICAgICAgICAgICAgPSAweDMzLAogICAgICAgICBPUF9YT1JfRUFYSXYgICAgICAgICAg
ICAgICAgICAgID0gMHgzNSwKQEAgLTIyMyw2ICsyMjcsNyBAQCBwcml2YXRlOgogICAgICAgICBP
UF9HUk9VUDFfRXZJYiAgICAgICAgICAgICAgICAgID0gMHg4MywKICAgICAgICAgT1BfVEVTVF9F
YkdiICAgICAgICAgICAgICAgICAgICA9IDB4ODQsCiAgICAgICAgIE9QX1RFU1RfRXZHdiAgICAg
ICAgICAgICAgICAgICAgPSAweDg1LAorICAgICAgICBPUF9YQ0hHX0V2R2IgICAgICAgICAgICAg
ICAgICAgID0gMHg4NiwKICAgICAgICAgT1BfWENIR19Fdkd2ICAgICAgICAgICAgICAgICAgICA9
IDB4ODcsCiAgICAgICAgIE9QX01PVl9FYkdiICAgICAgICAgICAgICAgICAgICAgPSAweDg4LAog
ICAgICAgICBPUF9NT1ZfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHg4OSwKQEAgLTI1Miw2
ICsyNTcsNyBAQCBwcml2YXRlOgogICAgICAgICBQUkVfU1NFX0YyICAgICAgICAgICAgICAgICAg
ICAgID0gMHhGMiwKICAgICAgICAgUFJFX1NTRV9GMyAgICAgICAgICAgICAgICAgICAgICA9IDB4
RjMsCiAgICAgICAgIE9QX0hMVCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweEY0LAorICAg
ICAgICBPUF9HUk9VUDNfRWIgICAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAgT1Bf
R1JPVVAzX0ViSWIgICAgICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9QX0dST1VQM19F
diAgICAgICAgICAgICAgICAgICAgPSAweEY3LAogICAgICAgICBPUF9HUk9VUDNfRXZJeiAgICAg
ICAgICAgICAgICAgID0gMHhGNywgLy8gT1BfR1JPVVAzX0V2IGhhcyBhbiBpbW1lZGlhdGUsIHdo
ZW4gaW5zdHJ1Y3Rpb24gaXMgYSB0ZXN0LiAKQEAgLTI5MCw2ICsyOTYsOCBAQCBwcml2YXRlOgog
ICAgICAgICBPUF9TRVRDQyAgICAgICAgICAgID0gMHg5MCwKICAgICAgICAgT1AyXzNCWVRFX0VT
Q0FQRV9BRSA9IDB4QUUsCiAgICAgICAgIE9QMl9JTVVMX0d2RXYgICAgICAgPSAweEFGLAorICAg
ICAgICBPUDJfQ01QWENIR2IgICAgICAgID0gMHhCMCwKKyAgICAgICAgT1AyX0NNUFhDSEcgICAg
ICAgICA9IDB4QjEsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkViICAgICAgPSAweEI2LAogICAgICAg
ICBPUDJfQlNGICAgICAgICAgICAgID0gMHhCQywKICAgICAgICAgT1AyX1RaQ05UICAgICAgICAg
ICA9IDB4QkMsCkBAIC0yOTgsNiArMzA2LDggQEAgcHJpdmF0ZToKICAgICAgICAgT1AyX01PVlNY
X0d2RWIgICAgICA9IDB4QkUsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkV3ICAgICAgPSAweEI3LAog
ICAgICAgICBPUDJfTU9WU1hfR3ZFdyAgICAgID0gMHhCRiwKKyAgICAgICAgT1AyX1hBRERiICAg
ICAgICAgICA9IDB4QzAsCisgICAgICAgIE9QMl9YQUREICAgICAgICAgICAgPSAweEMxLAogICAg
ICAgICBPUDJfUEVYVFJXX0dkVWRJYiAgID0gMHhDNSwKICAgICAgICAgT1AyX1BTTExRX1VkcUli
ICAgICA9IDB4NzMsCiAgICAgICAgIE9QMl9QU1JMUV9VZHFJYiAgICAgPSAweDczLApAQCAtNDQw
LDYgKzQ1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9B
RERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGFkZGxf
bXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9Cisg
ICAgCiAjaWYgIUNQVShYODZfNjQpCiAgICAgdm9pZCBhZGRsX21yKGNvbnN0IHZvaWQqIGFkZHIs
IFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTU2MiwxMSArNTc3LDIxIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgb2Zm
c2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9pcihpbnQgaW1tLCBSZWdpc3Rl
cklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CkBAIC01OTEsNiArNjE2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGFkZHFfaW0oaW50
IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQ
MV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQURELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2b2lkIGFkZGxfaW0oaW50
IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC02MTQsMTEgKzY1MCw0MyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNl
LCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgYW5kbF9tcihpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAg
ICAgfQogCisgICAgdm9pZCBhbmRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFuZGxfcm0oc3JjLCBvZmZzZXQsIGJh
c2UpOworICAgIH0KKworICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFu
ZGxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtNjQxLDYgKzcwOSw1MyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIGFuZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQp
OworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBH
Uk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kd19pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpF
KTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAg
ICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRWJJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgYW5kYl9pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwg
R1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2
b2lkIGFuZHFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTY1
Nyw2ICs3NzIsNDggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkg
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIGFuZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQ
MV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQog
I2Vsc2UKICAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7
CkBAIC03MDMsNiArODYwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CisKKyAgICB2b2lkIGluY3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KICNlbmRpZiAvLyBDUFUoWDg2XzY0KQogCiAgICAgdm9pZCBuZWds
X3IoUmVnaXN0ZXJJRCBkc3QpCkBAIC03MTUsNiArODc3LDE2IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05F
RywgZHN0KTsKICAgICB9CisKKyAgICB2b2lkIG5lZ3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNf
RXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBuZWdx
X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYs
IEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5k
aWYKIAogICAgIHZvaWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKQEAgLTcy
Miw2ICs4OTQsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZv
aWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
M19FdiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVn
bF9tKG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWd3X20oaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5lZ2xf
bShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWdiX20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIG5lZ2JfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKICAgICB2b2lkIG5vdGxfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1Qs
IGRzdCk7CkBAIC03MzIsNiArOTMxLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdGxfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIG5vdGxfbShvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90d19t
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICBub3RsX20ob2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG5v
dHFfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC03NDIsNiArOTY4LDExIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JP
VVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CisKKyAgICB2b2lkIG5vdHFfbShpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAz
X09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAg
ICAgdm9pZCBvcmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtNzU0LDEx
ICs5ODUsNDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1Jf
R3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX21yKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdp
c3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9H
dkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lk
IG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAg
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgb3JsX3JtKHNyYywgb2Zm
c2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAg
ICAgIG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtNzg0LDEyICsxMDQ3LDEwMSBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICB2b2lkIG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JP
VVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb3J3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9
CisgICAgfQorCisgICAgdm9pZCBvcmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
YkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09Q
X09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgb3JxX3Jy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lk
IG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7Cisg
ICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQ
MV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHZvaWQgb3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICB2b2lkIG9ycV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC04MzEsMTEgKzExODMs
NDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYs
IGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YmxfbXIoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9HdkV2
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
Ymxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vid19ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIHN1Yndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgc3ViYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHYiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJs
X2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTg2MSw2ICsxMjQ1LDUzIEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgIH0KIAorICAgIHZvaWQgc3VibF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgc3Vid19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2Us
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdWJ3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1Bf
U1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOworICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
MV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0
KQogICAgIHZvaWQgc3VicV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAg
ewpAQCAtODcyLDExICsxMzAzLDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2
b2lkIHN1YnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKwogICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YnFf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KwogICAgIHZvaWQgc3VicV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAg
ICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC05MDEsNiArMTM0MiwxNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAg
ICAgICB9CiAgICAgfQorCisgICAgdm9pZCBzdWJxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAg
fQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCiAgICAgewpAQCAtOTI0LDExICsxMzc2LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQog
CisgICAgdm9pZCB4b3JsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhv
cmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hPUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisKICAgICB2b2lkIHhvcmxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTk0
MCw2ICsxNDAyLDc1IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgeG9y
bF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihp
bW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIs
IEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yd19ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICB4b3JsX3JtKHNy
Yywgb2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcndfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICB4b3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgeG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2Us
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1Bf
WE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcmJfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAg
IHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfWE9SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0ViSWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcmJfaW0oaW50IGltbSwgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQ
MV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogICAgIHZvaWQgeG9ybF9pcihpbnQgaW1tLCBS
ZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihp
bW0pKSB7CkBAIC05NzQsMTEgKzE1MDUsNDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
ICAgIAorICAgIHZvaWQgeG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9P
UF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9F
dkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4b3JxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hP
Ul9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIHhvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfR3ZFdiwgZGVz
dCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcnFfbXIoaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2
LCBkZXN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAg
ICB2b2lkIGx6Y250X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTE1ODYs
MTEgKzIxNTMsMzggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX1hDSEdfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgeGNoZ2Jfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNoZ3dfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQg
eGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
WENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAg
ICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnbF9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2
XzY0KQogICAgIHZvaWQgeGNoZ3FfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKQEAgLTE2MDYsNiArMjIwMCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CisKKyAgICB2b2lkIHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG1vdmxfcnIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTczMSw2ICsyMzMwLDIwIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBtb3Z3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCisgICAgdm9pZCBtb3Z3X2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJ
WkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxMV9Fdkl6LCBHUk9V
UDExX01PViwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUxNihpbW0pOworICAgIH0KKwogICAgIHZvaWQgbW92bF9FQVhtKGNvbnN0IHZv
aWQqIGFkZHIpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX092
RUFYKTsKQEAgLTE4MDAsNiArMjQxMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTMyKGltbSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX2kzMm0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDExX0V2SXos
IEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZxX2k2NHIoaW50
NjRfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfTU9WX0VBWEl2LCBkc3QpOwpAQCAtMjc3NSw2ICszMzk0LDkwIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9MT0NLKTsKICAgICB9CiAgICAgCisg
ICAgdm9pZCBjbXB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENI
R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnYl9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4
KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BF
UkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNy
YywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNt
cHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcs
IHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGNtcHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9D
TVBYQ0hHLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQURE
Yiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCB4YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2
NChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhh
ZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5
dGVPcDY0KE9QMl9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisgICAgCiAgICAgdm9pZCBtZmVuY2UoKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudGhy
ZWVCeXRlT3AoT1AyXzNCWVRFX0VTQ0FQRV9BRSwgT1AzX01GRU5DRSk7CkBAIC0zNzUxLDYgKzQ0
NTQsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKGdyb3Vw
T3AsIHJtKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bj
b2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlciht
X2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1Jl
eChyZWcsIGJhc2UpLCByZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNl
LCBvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVP
cGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3Jp
dGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCByZWdSZXF1aXJlc1JleChp
bmRleCwgYmFzZSksIHJlZywgaW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRl
VW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBJbW1l
ZGlhdGVzOgogICAgICAgICAvLwogICAgICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFw
cGVuZGVkIHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzQXRvbWlj
VmFsdWUuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeworCitBdG9taWNWYWx1ZTo6fkF0b21pY1ZhbHVlKCkKK3sKK30KKworV2lkdGggQXRv
bWljVmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aWR0aDsKK30K
Kwordm9pZCBBdG9taWNWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoY29tbWEsICJ3aWR0aCA9ICIsIG1f
d2lkdGgpOworICAgIAorICAgIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShjb21tYSwgb3V0KTsKK30K
KworVmFsdWUqIEF0b21pY1ZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAoreworICAgIHJldHVybiBu
ZXcgQXRvbWljVmFsdWUoKnRoaXMpOworfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNv
ZGUsIGtpbmQsIG9wZXJhbmQtPnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIG9wZXJhbmQsIHBvaW50
ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVhcFJhbmdl
Ojp0b3AoKSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKEdQLCBvcGVyYXRpb25XaWR0aCgp
KSA9PSBvcGVyYXRpb25UeXBlKCkpOworICAgIAorICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkg
eworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAg
Y2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRv
bWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworQXRvbWlj
VmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgs
IFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBp
bnQzMl90IG9mZnNldCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIGtp
bmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRWYWx1ZS0+dHlw
ZSgpLCBvcmlnaW4sIG9mZnNldCwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUsIHBvaW50ZXIpCisg
ICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVhcFJhbmdlOjp0b3Ao
KSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKEdQLCBvcGVyYXRpb25XaWR0aCgpKSA9PSBv
cGVyYXRpb25UeXBlKCkpOworCisgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgY2Fz
ZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2lu
Y2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBBdG9taWNW
YWx1ZSA6IHB1YmxpYyBNZW1vcnlWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNj
ZXB0cyhLaW5kIGtpbmQpCisgICAgeworICAgICAgICByZXR1cm4gaXNBdG9taWMoa2luZC5vcGNv
ZGUoKSk7CisgICAgfQorICAgIAorICAgIH5BdG9taWNWYWx1ZSgpOworICAgIAorICAgIFR5cGUg
b3BlcmF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7IH0KKyAgICAK
KyAgICBXaWR0aCBvcGVyYXRpb25XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAg
ICAKKyAgICAvLyBTeW5vbnltIGZvciBvcGVyYXRpb25XaWR0aCgpLCBpZiB5b3UncmUgYWNjZXNz
aW5nIHZpYSBNZW1vcnlWYWx1ZS4KKyAgICBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIAorcHJvdGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwg
UHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICAKKyAgICBWYWx1ZSogY2xvbmVJbXBs
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBQcm9j
ZWR1cmU7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUq
IG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAorICAg
IEF0b21pY1ZhbHVlKEtpbmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBW
YWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAg
IAorICAgIFdpZHRoIG1fd2lkdGg7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKwor
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDcgQEAgY2xh
c3MgQmxvY2tJbnNlcnRpb25TZXQ7CiBjbGFzcyBJbnNlcnRpb25TZXQ7CiBjbGFzcyBQcm9jZWR1
cmU7CiBjbGFzcyBWYWx1ZTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBHZW5lcmljQmxvY2tJ
bnNlcnRpb25TZXQ7CiAKIGNsYXNzIEJhc2ljQmxvY2sgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEJhc2ljQmxvY2spOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBJbnNlcnRpb25TZXQ7
CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJp
ZW5kIGNsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDsKICAgICAKICAgICAvLyBJbnN0YW50
aWF0ZSB2aWEgUHJvY2VkdXJlLgogICAgIEJhc2ljQmxvY2sodW5zaWduZWQgaW5kZXgsIGRvdWJs
ZSBmcmVxdWVuY3kpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNl
cnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDM1ICsz
NiwxMyBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIEJsb2NrSW5zZXJ0aW9u
U2V0OjpCbG9ja0luc2VydGlvblNldChQcm9jZWR1cmUgJnByb2MpCi0gICAgOiBtX3Byb2MocHJv
YykKKyAgICA6IEdlbmVyaWNCbG9ja0luc2VydGlvblNldChwcm9jLm1fYmxvY2tzKQorICAgICwg
bV9wcm9jKHByb2MpCiB7CiB9CiAKIEJsb2NrSW5zZXJ0aW9uU2V0Ojp+QmxvY2tJbnNlcnRpb25T
ZXQoKSB7IH0KIAotdm9pZCBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KEJsb2NrSW5zZXJ0aW9u
JiYgaW5zZXJ0aW9uKQotewotICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRp
b24pKTsKLX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydCh1bnNpZ25l
ZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNC
bG9jaz4gYmxvY2sobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOwotICAgIEJh
c2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdldCgpOwotICAgIGluc2VydChCbG9ja0luc2VydGlv
bihpbmRleCwgV1RGTW92ZShibG9jaykpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1CYXNp
Y0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9y
ZSwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgo
KSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5
KCkpOwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIoQmFz
aWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChh
ZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBh
ZnRlci0+ZnJlcXVlbmN5KCkpOwotfQotCiBCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6
c3BsaXRGb3J3YXJkKAogICAgIEJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCYgdmFsdWVJbmRl
eCwgSW5zZXJ0aW9uU2V0KiBpbnNlcnRpb25TZXQsIGRvdWJsZSBmcmVxdWVuY3kpCiB7CkBAIC0x
MDIsMzIgKzgwLDYgQEAgQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6OnNwbGl0Rm9ydwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgQmxvY2tJbnNlcnRpb25TZXQ6OmV4ZWN1dGUo
KQotewotICAgIGlmIChtX2luc2VydGlvbnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCi0gICAgLy8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBp
biBhbnkgb3JkZXIuIFNvLCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKLSAgICAvLyBydW5u
aW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMuIFdlIHN0cm9uZ2x5IHByZWZlciBhIHN0YWJsZSBz
b3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCi0gICAgLy8gZmFzdCwgc28gd2UgdXNlIGJ1YmJsZSBz
b3J0LgotICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5l
bmQoKSk7Ci0KLSAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX3Byb2MubV9ibG9ja3MsIG1faW5zZXJ0
aW9ucyk7Ci0gICAgCi0gICAgLy8gUHJ1bmUgb3V0IGVtcHR5IGVudHJpZXMuIFRoaXMgaXNuJ3Qg
c3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzCi0gICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBi
bG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KLSAgICBtX3Byb2MubV9ibG9ja3MucmVtb3ZlQWxsTWF0
Y2hpbmcoCi0gICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+JiBibG9ja1B0
cikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gIWJsb2NrUHRyOwotICAgICAgICB9KTsK
LSAgICAKLSAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGlu
ZGljZXMuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvYy5tX2Jsb2Nrcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgbV9wcm9jLm1fYmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKLSAgICAK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxv
Y2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCbG9ja0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlIDx3
dGYvSW5zZXJ0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzUsMjYgKzM2LDEz
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBJbnNlcnRpb25TZXQ7
CiAKLXR5cGVkZWYgV1RGOjpJbnNlcnRpb248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBC
bG9ja0luc2VydGlvbjsKK3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxv
Y2s+OjpCbG9ja0luc2VydGlvbiBCbG9ja0luc2VydGlvbjsKIAotY2xhc3MgQmxvY2tJbnNlcnRp
b25TZXQgeworY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0PEJhc2ljQmxvY2s+IHsKIHB1YmxpYzoKICAgICBCbG9ja0luc2VydGlvblNldChQ
cm9jZWR1cmUmKTsKICAgICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKICAgICAKLSAgICB2b2lkIGlu
c2VydChCbG9ja0luc2VydGlvbiYmKTsKLQotICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBh
IGdpdmVuIGluZGV4LgotICAgIEJhc2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91
YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBiZWZv
cmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNzIHRoZSBmcmVxdWVu
Y3kKLSAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0byBqdXN0IHVzZSB0
aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCi0gICAgLy8gdXN1YWxs
eSB3aGF0IHlvdSB3YW50LgotICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9yZShCYXNpY0Jsb2Nr
KiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBu
ZXcgYmxvY2sgYWZ0ZXIgdGhlIGdpdmVuIGJsb2NrLgotICAgIEJhc2ljQmxvY2sqIGluc2VydEFm
dGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KICAgICAv
LyBBIGhlbHBlciB0byBzcGxpdCBhIGJsb2NrIHdoZW4gZm9yd2FyZCBpdGVyYXRpbmcgb3ZlciBp
dC4gSXQgY3JlYXRlcyBhIG5ldyBibG9jayB0byBob2xkCiAgICAgLy8gZXZlcnl0aGluZyBiZWZv
cmUgdGhlIGluc3RydWN0aW9uIGF0IHZhbHVlSW5kZXguIFRoZSBjdXJyZW50IGJsb2NrIGlzIGxl
ZnQgd2l0aAogICAgIC8vIGV2ZXJ5dGhpbmcgYXQgYW5kIGFmdGVyIHZhbHVlSW5kZXguIElmIHRo
ZSBvcHRpb25hbCBJbnNlcnRpb25TZXQgaXMgcHJvdmlkZWQsIGl0IHdpbGwgZ2V0CkBAIC04MCwx
MiArNjgsOSBAQCBwdWJsaWM6CiAgICAgQmFzaWNCbG9jayogc3BsaXRGb3J3YXJkKAogICAgICAg
ICBCYXNpY0Jsb2NrKiwgdW5zaWduZWQmIHZhbHVlSW5kZXgsIEluc2VydGlvblNldCogPSBudWxs
cHRyLAogICAgICAgICBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0gICAgCi0gICAgYm9vbCBl
eGVjdXRlKCk7CiAKIHByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7Ci0gICAgVmVjdG9y
PEJsb2NrSW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsOCBAQCBib29sIEVmZmVjdHM6OmludGVyZmVyZXMo
Y29uc3QgRWZmZWN0cyYgCiAgICAgICAgIHx8IGludGVyZmVyZXNXaXRoV3JpdGVzUGlubmVkKG90
aGVyLCAqdGhpcykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKICAg
ICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLnJlYWRzKQotICAgICAgICB8fCByZWFkcy5v
dmVybGFwcyhvdGhlci53cml0ZXMpOworICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53
cml0ZXMpCisgICAgICAgIHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9CiAKIGJvb2wgRWZm
ZWN0czo6b3BlcmF0b3I9PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTk1LDcgKzk2
LDggQEAgYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIAogICAgICAgICAm
JiB3cml0ZXNQaW5uZWQgPT0gb3RoZXIud3JpdGVzUGlubmVkCiAgICAgICAgICYmIHJlYWRzUGlu
bmVkID09IG90aGVyLnJlYWRzUGlubmVkCiAgICAgICAgICYmIHdyaXRlcyA9PSBvdGhlci53cml0
ZXMKLSAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHM7CisgICAgICAgICYmIHJlYWRzID09
IG90aGVyLnJlYWRzCisgICAgICAgICYmIGZlbmNlID09IG90aGVyLmZlbmNlOwogfQogCiBib29s
IEVmZmVjdHM6Om9wZXJhdG9yIT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0CkBAIC0xMjAs
NiArMTIyLDggQEAgdm9pZCBFZmZlY3RzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbgogICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJXcml0ZXNQaW5uZWQiKTsKICAgICBpZiAocmVhZHNQaW5u
ZWQpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIlJlYWRzUGlubmVkIik7CisgICAgaWYgKGZl
bmNlKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJGZW5jZSIpOwogICAgIGlmICh3cml0ZXMp
CiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlczoiLCB3cml0ZXMpOwogICAgIGlmIChy
ZWFkcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkod29ya2luZyBj
b3B5KQpAQCAtNzEsNiArNzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBib29sIHJlYWRzUGlu
bmVkIHsgZmFsc2UgfTsKICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07CisgICAgCisg
ICAgLy8gTWVtb3J5IGZlbmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBlYWNoIG90aGVy
IHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisgICAgLy8gaWYg
dGhlIG9wZXJhdGlvbiBpcyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZlbmNlIHsgZmFsc2Ug
fTsKIAogICAgIEhlYXBSYW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRzOwpAQCAtODks
NiArOTMsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBS
YW5nZTo6dG9wKCk7CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAg
IHJlc3VsdC53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVl
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcgKzEwOCw3IEBAIHN0
cnVjdCBFZmZlY3RzIHsKIAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0
ZSB8fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4gdGVybWluYWwgfHwg
ZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5u
ZWQgfHwgZmVuY2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHJlb3JkZXJpbmcg
aW5zdHJ1Y3Rpb25zIHdpdGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxkIGNoYW5nZSBw
cm9ncmFtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25T
dWJleHByZXNzaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0cnVjdCBJbXB1cmVCbG9ja0Rh
dGEgewogCiAgICAgUmFuZ2VTZXQ8SGVhcFJhbmdlPiByZWFkczsgLy8gVGhpcyBvbmx5IGdldHMg
dXNlZCBmb3IgZm9yd2FyZCBzdG9yZSBlbGltaW5hdGlvbi4KICAgICBSYW5nZVNldDxIZWFwUmFu
Z2U+IHdyaXRlczsgLy8gVGhpcyBnZXRzIHVzZWQgZm9yIGJvdGggbG9hZCBhbmQgc3RvcmUgZWxp
bWluYXRpb24uCisgICAgYm9vbCBmZW5jZTsKIAogICAgIE1lbW9yeVZhbHVlTWFwIHN0b3Jlc0F0
SGVhZDsKICAgICBNZW1vcnlWYWx1ZU1hcCBtZW1vcnlWYWx1ZXNBdFRhaWw7CkBAIC0xNzQsMTIg
KzE3NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYg
KG1lbW9yeSAmJiBtZW1vcnktPmlzU3RvcmUoKQogICAgICAgICAgICAgICAgICAgICAmJiAhZGF0
YS5yZWFkcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCi0gICAgICAgICAgICAgICAgICAgICYm
ICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpKQorICAgICAgICAgICAgICAg
ICAgICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQorICAgICAgICAg
ICAgICAgICAgICAmJiAoIWRhdGEuZmVuY2UgfHwgIW1lbW9yeS0+aGFzRmVuY2UoKSkpCiAgICAg
ICAgICAgICAgICAgICAgIGRhdGEuc3RvcmVzQXRIZWFkLmFkZChtZW1vcnkpOwogICAgICAgICAg
ICAgICAgIGRhdGEucmVhZHMuYWRkKGVmZmVjdHMucmVhZHMpOwogCiAgICAgICAgICAgICAgICAg
aWYgKEhlYXBSYW5nZSB3cml0ZXMgPSBlZmZlY3RzLndyaXRlcykKICAgICAgICAgICAgICAgICAg
ICAgY2xvYmJlcihkYXRhLCB3cml0ZXMpOworICAgICAgICAgICAgICAgIGRhdGEuZmVuY2UgfD0g
ZWZmZWN0cy5mZW5jZTsKIAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkpCiAgICAgICAgICAg
ICAgICAgICAgIGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkpOwpAQCAtNDQ1LDgg
KzQ0OCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgZGF0YUxvZygiQmFkIG1lbW9yeSB2YWx1ZTogIiwgZGVlcER1bXAobV9wcm9jLCBtX3Zh
bHVlKSwgIlxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzgsNiArNDc5LDkgQEAg
cHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3Rv
cmVBZnRlckNsb2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXIm
IGZpbHRlcikKICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+
aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAg
IC8vIFdlIGNhbiBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBh
IHN0b3JlIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFu
eSBvcGVyYXRpb24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxp
a2UgaXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hl
bG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFu
IApAQCAtNjE0LDYgKzYxOCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpw
dHIsICIuLi5cbiIpOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZh
bHVlPigpLT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoTWVt
b3J5VmFsdWUqIG1hdGNoID0gbV9kYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5kKHB0ciwgZmls
dGVyKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYg
KzkyLDcgQEAgdm9pZCBnZW5lcmF0ZVRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlLAogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTA3CiAgICAg
fQogCisgICAgLy8gVGhpcyBwdXRzIHRoZSBJUiBpbiBxdWlya3MgbW9kZS4KICAgICBsb3dlck1h
Y3Jvcyhwcm9jZWR1cmUpOwogCiAgICAgaWYgKG9wdExldmVsID49IDEpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNl
dC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNC
bG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIlB1cmVOYU4uaCIKKyNpbmNsdWRlIDx3
dGYvQnViYmxlU29ydC5oPgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBJ
bnNlcnRpb25TZXQ7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJhc2ljQmxvY2s+CitjbGFzcyBHZW5l
cmljQmxvY2tJbnNlcnRpb25TZXQgeworcHVibGljOgorICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRp
b248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBCbG9ja0luc2VydGlvbjsKKyAgICAKKyAg
ICBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Js
b2NrPj4mIGJsb2NrcykKKyAgICAgICAgOiBtX2Jsb2NrcyhibG9ja3MpCisgICAgeworICAgIH0K
KyAgICAKKyAgICB2b2lkIGluc2VydChCbG9ja0luc2VydGlvbiYmIGluc2VydGlvbikKKyAgICB7
CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRpb24pKTsKKyAgICB9
CisKKyAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQgYSBnaXZlbiBpbmRleC4KKyAgICBCYXNp
Y0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQor
ICAgIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+IGJsb2NrKG5ldyBCYXNp
Y0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKKyAgICAgICAgQmFzaWNCbG9jayogcmVzdWx0
ID0gYmxvY2suZ2V0KCk7CisgICAgICAgIGluc2VydChCbG9ja0luc2VydGlvbihpbmRleCwgV1RG
TW92ZShibG9jaykpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyBJ
bnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVzdWFsbHkgeW91IHdp
bGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQorICAgIC8vIGFyZ3VtZW50LiBQYXNzaW5nIFBOYU4g
Y2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdiZWZvcmUnIGJsb2Nr
LiBUaGF0J3MKKyAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCisgICAgQmFzaWNCbG9jayog
aW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
CisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgoKSwgZnJlcXVlbmN5
ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5KCkpOworICAgIH0K
KworICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYWZ0ZXIgdGhlIGdpdmVuIGJsb2NrLgorICAg
IEJhc2ljQmxvY2sqIGluc2VydEFmdGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVl
bmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYWZ0ZXItPmluZGV4KCkg
KyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYWZ0ZXItPmZyZXF1ZW5j
eSgpKTsKKyAgICB9CisKKyAgICBib29sIGV4ZWN1dGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1f
aW5zZXJ0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IAorICAgICAgICAvLyBXZSBhbGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFu
eSBvcmRlci4gU28sIHdlIG5lZWQgdG8gc29ydCB0aGVtIGJlZm9yZQorICAgICAgICAvLyBydW5u
aW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMuIFdlIHN0cm9uZ2x5IHByZWZlciBhIHN0YWJsZSBz
b3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCisgICAgICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBidWJi
bGUgc29ydC4KKyAgICAgICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNl
cnRpb25zLmVuZCgpKTsKKyAgICAgICAgCisgICAgICAgIGV4ZWN1dGVJbnNlcnRpb25zKG1fYmxv
Y2tzLCBtX2luc2VydGlvbnMpOworICAgICAgICAKKyAgICAgICAgLy8gUHJ1bmUgb3V0IGVtcHR5
IGVudHJpZXMuIFRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzCisgICAgICAg
IC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxvY2sgbGlzdCBmcm9tIGdyb3dpbmcuCisgICAgICAg
IG1fYmxvY2tzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICAgICAgWyZdIChzdGQ6OnVuaXF1
ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gIWJsb2NrUHRyOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGluZGljZXMuCisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrcy5zaXplKCk7ICsraSkKKyAgICAgICAg
ICAgIG1fYmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+PiYgbV9ibG9ja3M7CisgICAgVmVjdG9yPEJsb2NrSW5zZXJ0aW9uLCA4PiBtX2luc2Vy
dGlvbnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KICAgICAKKyAgICBIZWFwUmFuZ2Ugb3BlcmF0b3J8
KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSGVh
cFJhbmdlKAorICAgICAgICAgICAgc3RkOjptaW4obV9iZWdpbiwgb3RoZXIubV9iZWdpbiksCisg
ICAgICAgICAgICBzdGQ6Om1heChtX2VuZCwgb3RoZXIubV9lbmQpKTsKKyAgICB9CisgICAgCiAg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW4gIT0gbV9l
bmQ7IH0KIAogICAgIHVuc2lnbmVkIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsMTEgQEAgVmFsdWUqIEluc2VydGlvblNl
dDo6aW5zZXJ0Qm90dG9tKHNpemVfdAogICAgIHJldHVybiBpbnNlcnRCb3R0b20oaW5kZXgsIGxp
a2VWYWx1ZS0+b3JpZ2luKCksIGxpa2VWYWx1ZS0+dHlwZSgpKTsKIH0KIAorVmFsdWUqIEluc2Vy
dGlvblNldDo6aW5zZXJ0Q2xvbmUoc2l6ZV90IGluZGV4LCBWYWx1ZSogdmFsdWUpCit7CisgICAg
cmV0dXJuIGluc2VydFZhbHVlKGluZGV4LCBtX3Byb2NlZHVyZS5jbG9uZSh2YWx1ZSkpOworfQor
CiB2b2lkIEluc2VydGlvblNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBi
dWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKIAogICAgIFZhbHVlKiBpbnNlcnRC
b3R0b20oc2l6ZV90IGluZGV4LCBPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBpbnNlcnRCb3R0
b20oc2l6ZV90IGluZGV4LCBWYWx1ZSopOworICAgIAorICAgIFZhbHVlKiBpbnNlcnRDbG9uZShz
aXplX3QgaW5kZXgsIFZhbHVlKik7CiAKICAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayopOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMSArMjksMTMgQEAKICNpZiBFTkFCTEUoQjNfSklU
KQogCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCisjaW5jbHVk
ZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNp
bmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgi
CiAjaW5jbHVkZSAiQjNDYXNlQ29sbGVjdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJCM0NvbnN0
UHRyVmFsdWUuaCIKKyNpbmNsdWRlICJCM0ZlbmNlVmFsdWUuaCIKICNpbmNsdWRlICJCM0luc2Vy
dGlvblNldElubGluZXMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCiAjaW5jbHVkZSAi
QjNQYXRjaHBvaW50VmFsdWUuaCIKQEAgLTQyLDYgKzQ0LDcgQEAKICNpbmNsdWRlICJCM1N0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzU3dpdGNoVmFsdWUuaCIKICNpbmNs
dWRlICJCM1Vwc2lsb25WYWx1ZS5oIgorI2luY2x1ZGUgIkIzVXNlQ291bnRzLmgiCiAjaW5jbHVk
ZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRl
ICJMaW5rQnVmZmVyLmgiCkBAIC01OCwxMSArNjEsMTQgQEAgcHVibGljOgogICAgICAgICA6IG1f
cHJvYyhwcm9jKQogICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAgICAg
LCBtX2luc2VydGlvblNldChwcm9jKQorICAgICAgICAsIG1fdXNlQ291bnRzKHByb2MpCiAgICAg
ewogICAgIH0KIAogICAgIGJvb2wgcnVuKCkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFtX3Byb2MuaGFzUXVpcmtzKCkpOworICAgICAgICAKICAgICAgICAgZm9yIChCYXNpY0Jsb2Nr
KiBibG9jayA6IG1fcHJvYykgewogICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwogICAgICAg
ICAgICAgcHJvY2Vzc0N1cnJlbnRCbG9jaygpOwpAQCAtNzIsNiArNzgsMTAgQEAgcHVibGljOgog
ICAgICAgICAgICAgbV9wcm9jLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgICAgICAgICBtX3By
b2MuaW52YWxpZGF0ZUNGRygpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGlz
IGluZGljYXRlcyB0aGF0IHdlJ3ZlIAorICAgICAgICBtX3Byb2Muc2V0SGFzUXVpcmtzKHRydWUp
OworICAgICAgICAKICAgICAgICAgcmV0dXJuIG1fY2hhbmdlZDsKICAgICB9CiAgICAgCkBAIC0x
ODUsNyArMTk1LDk2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1sb2FkIGZlbmNlLiBU
aGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8gdGVsbCB0aGUKKyAg
ICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxvYWQgbW90aW9uLgor
ICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAgICAgICAgICAgICAg
IGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT53
cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1bmxvY2sgYSBidW5j
aCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5y
ZXBsYWNlV2l0aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAorICAgICAg
ICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdD
QVM6IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0
b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgICAgIFdpZHRo
IHdpZHRoID0gYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIGV4
cGVjdGVkVmFsdWUgPSBhdG9taWMtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIC8vIE9uIEFSTSwgdGhlIGxvYWQgcGFydCBvZiB0aGUgQ0FTIGRvZXMgYSBsb2Fk
IHdpdGggemVybyBleHRlbnNpb24uIFRoZXJlZm9yZSwgd2UgbmVlZAorICAgICAgICAgICAgICAg
IC8vIHRvIHplcm8tZXh0ZW5kIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFz
a2VkRXhwZWN0ZWRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIGV4cGVjdGVkVmFsdWUsCisg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KG1faW5k
ZXgsIGV4cGVjdGVkVmFsdWUsIG1hc2sod2lkdGgpKSk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgYXRvbWljLT5jaGlsZCgwKSA9IG1hc2tlZEV4cGVjdGVkVmFsdWU7CisgICAg
ICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNo
Z0FkZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIGNhc2Ug
QXRvbWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnOiB7Cisg
ICAgICAgICAgICAgICAgLy8gT24gWDg2LCB0aGVzZSBtYXkgYWN0dWFsbHkgcmV0dXJuIGdhcmJh
Z2UgaW4gdGhlIGhpZ2ggYml0cy4gT24gQVJNNjQsIHRoZXNlIHNvcnRhCisgICAgICAgICAgICAg
ICAgLy8gemVyby1leHRlbmQgdGhlaXIgaGlnaCBiaXRzLCBleGNlcHQgdGhhdCB0aGUgaGlnaCBi
aXRzIG1pZ2h0IGdldCBwb2xsdXRlZCBieSBoaWdoCisgICAgICAgICAgICAgICAgLy8gYml0cyBp
biB0aGUgb3BlcmFuZC4gLiBTbywgZWl0aGVyIHdheSwgd2UgbmVlZCB0byB0aHJvdyBhIHNpZ24t
ZXh0ZW5kIG9uIHRoZXNlCisgICAgICAgICAgICAgICAgLy8gdGhpbmdzLgorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChtX3ZhbHVlLT5vcGNvZGUoKSA9PSBBdG9taWNYY2hnU3ViICYmIG1fdXNlQ291bnRzLm51
bVVzZXMobV92YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9uIHg4NiwgeGNo
Z2FkZCBpcyBiZXR0ZXIgdGhhbiB4Y2hnc3ViIGlmIGl0IGhhcyBhbnkgdXNlcnMuCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5zZXRLaW5kVW5zYWZlbHkoQXRvbWljWGNoZ0FkZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgxKSA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwg
TmVnLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBib29sIGV4ZW1wdCA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWlj
WGNoZ1N1YjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlbXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
aWYgKGV4ZW1wdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRv
bWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGgg
d2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3
VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICBtX2luZGV4LCBzaWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwgbV9vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENsb25lKG1faW5kZXgsIG1fdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElk
ZW50aXR5KG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
QEAgLTQ3MCw2ICs1NjksNyBAQCBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwogICAg
IEJsb2NrSW5zZXJ0aW9uU2V0IG1fYmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgSW5zZXJ0aW9uU2V0
IG1faW5zZXJ0aW9uU2V0OworICAgIFVzZUNvdW50cyBtX3VzZUNvdW50czsKICAgICBCYXNpY0Js
b2NrKiBtX2Jsb2NrOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CiAgICAgVmFsdWUqIG1fdmFsdWU7
CkBAIC00NzcsMjEgKzU3NywxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jaGFuZ2VkIHsgZmFs
c2UgfTsKIH07CiAKLWJvb2wgbG93ZXJNYWNyb3NJbXBsKFByb2NlZHVyZSYgcHJvYykKLXsKLSAg
ICBMb3dlck1hY3JvcyBsb3dlck1hY3Jvcyhwcm9jKTsKLSAgICByZXR1cm4gbG93ZXJNYWNyb3Mu
cnVuKCk7Ci19Ci0KIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBib29sIGxvd2VyTWFjcm9z
KFByb2NlZHVyZSYgcHJvYykKIHsKLSAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvYywgImxv
d2VyTWFjcm9zIik7Ci0gICAgYm9vbCByZXN1bHQgPSBsb3dlck1hY3Jvc0ltcGwocHJvYyk7Ci0g
ICAgaWYgKHNob3VsZFZhbGlkYXRlSVIoKSkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxvd2Vy
TWFjcm9zSW1wbChwcm9jKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBMb3dlck1hY3JvcyBs
b3dlck1hY3Jvcyhwcm9jKTsKKyAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NB
ZnRlck9wdGltaXphdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTUgKzE1NiwxNCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBSb3RMOiB7CiAgICAgICAgICAgICAgICAgLy8g
QVJNNjQgZG9lc24ndCBoYXZlIGEgcm90YXRlIGxlZnQuCiAgICAgICAgICAgICAgICAgaWYgKGlz
QVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDEp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNl
dC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVl
LT5jaGlsZCgwKSwgbmV3U2hpZnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+
cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG5l
d1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBOZWcsIG1fdmFs
dWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgICAgIFZh
bHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIs
IG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOworICAgICAg
ICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDEyICsyOCwxNCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUg
IkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWlyQ0NhbGxTcGVjaWFsLmgiCiAj
aW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpckluc2VydGlvblNldC5oIgogI2luY2x1
ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tTbG90LmgiCiAjaW5jbHVk
ZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrV29ya2xpc3Qu
aCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTcyLDYgKzc0LDE2IEBAIG5hbWVzcGFj
ZSB7CiAKIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCisvLyBGSVhNRTogV2Ugd291bGRu
J3QgbmVlZCB0aGlzIGlmIEFpciBzdXBwb3J0ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFpcjo6S2lu
ZC4KKy8vIE9PUFMhISEgKG5lZWQgYSBidWcgVVJMKQorI2RlZmluZSBPUENPREVfRk9SX1dJRFRI
KG9wY29kZSwgd2lkdGgpICggXAorICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDgg
OiBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAorICAgICh3aWR0
aCkgPT0gV2lkdGgzMiA/IG9wY29kZSAjIyAzMiA6IFwKKyAgICBvcGNvZGUgIyMgNjQpCisjZGVm
aW5lIE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAorICAgICh3
aWR0aCkgPT0gV2lkdGg2NCA/IG9wY29kZSAjIyA2NCA6IG9wY29kZSAjIyAzMikKKwogY2xhc3Mg
TG93ZXJUb0FpciB7CiBwdWJsaWM6CiAgICAgTG93ZXJUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVy
ZSkKQEAgLTgzLDYgKzk1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RvbWluYXRvcnMocHJv
Y2VkdXJlLmRvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX3Byb2NlZHVyZShwcm9jZWR1cmUpCiAg
ICAgICAgICwgbV9jb2RlKHByb2NlZHVyZS5jb2RlKCkpCisgICAgICAgICwgbV9ibG9ja0luc2Vy
dGlvblNldChtX2NvZGUpCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICAgICAgLCBt
X2VheChYODZSZWdpc3RlcnM6OmVheCkKKyAgICAgICAgLCBtX2VjeChYODZSZWdpc3RlcnM6OmVj
eCkKKyAgICAgICAgLCBtX2VkeChYODZSZWdpc3RlcnM6OmVkeCkKKyNlbmRpZgogICAgIHsKICAg
ICB9CiAKQEAgLTEyNCwxNCArMTQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3RlZCBh
ZGRyZXNzIGV4cHJlc3Npb24gYmVmb3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhlIGxv
b3AuCiAgICAgICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUuYmxv
Y2tzSW5QcmVPcmRlcigpKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAgICAg
ICAgICAvLyBSZXNldCBzb21lIHN0YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7
CiAKICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAK
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2Vy
aW5nIEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAgICAgICAv
LyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KKyAg
ICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3Vj
Y2Vzc29ycygpKSB7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNj
ZXNzb3JzKCkuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9j
ayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3ko
KSkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBpbiBy
ZXZlcnNlIG9yZGVyIHNvIHdlIHNlZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBhbGxv
d3MgdXMKICAgICAgICAgICAgIC8vIHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5LgogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAtMTQ5
LDE5ICsxNzEsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNv
bnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAgICAgICAg
Ly8gaXQgaW4gcmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMu
c2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0
c1tpXSkKLSAgICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBlbmRJ
bnN0KFdURk1vdmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtl
IHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAgICAg
ICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29y
cygpKSB7Ci0gICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3Jz
KCkuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Js
b2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG1f
YmxvY2tUb0Jsb2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fYmxv
Y2tJbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0IGlu
c2VydGlvblNldChtX2NvZGUpOwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xvZ3Vl
KQpAQCAtNTYyLDExICs1NzUsMTkgQEAgcHJpdmF0ZToKICAgICAKICAgICBBcmdQcm9taXNlIGxv
YWRQcm9taXNlQW55T3Bjb2RlKFZhbHVlKiBsb2FkVmFsdWUpCiAgICAgeworICAgICAgICBSRUxF
QVNFX0FTU0VSVChsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKICAgICAgICAgaWYgKCFj
YW5CZUludGVybmFsKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAg
ICAgIGlmIChjcm9zc2VzSW50ZXJmZXJlbmNlKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gQXJnKCk7Ci0gICAgICAgIEFyZ1Byb21pc2UgcmVzdWx0KGFkZHIobG9hZFZhbHVlKSwgbG9h
ZFZhbHVlKTsKKyAgICAgICAgLy8gT24geDg2LCBhbGwgbG9hZHMgaGF2ZSBmZW5jZXMuIERvaW5n
IHRoaXMga2luZCBvZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gd2lsbCBtb3ZlIHRoZSBsb2FkLAor
ICAgICAgICAvLyBidXQgdGhhdCdzIGZpbmUgYmVjYXVzZSBvdXIgaW50ZXJmZXJlbmNlIGFuYWx5
c2lzIHN0b3BzIHRoZSBtb3Rpb24gb2YgZmVuY2VzIGFyb3VuZCBvdGhlcgorICAgICAgICAvLyBm
ZW5jZXMuIFNvLCBhbnkgbG9hZCBtb3Rpb24gd2UgaW50cm9kdWNlIGhlcmUgd291bGQgbm90IGJl
IG9ic2VydmFibGUuCisgICAgICAgIGlmICghaXNYODYoKSAmJiBsb2FkVmFsdWUtPmFzPE1lbW9y
eVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIEFyZygpOworICAgICAg
ICBBcmcgbG9hZEFkZHIgPSBhZGRyKGxvYWRWYWx1ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGxvYWRBZGRyKTsKKyAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQobG9hZEFkZHIsIGxvYWRWYWx1
ZSk7CiAgICAgICAgIGlmIChsb2FkVmFsdWUtPnRyYXBzKCkpCiAgICAgICAgICAgICByZXN1bHQu
c2V0VHJhcHModHJ1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04OTgsMTEgKzkxOSw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpCiAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAodmFsdWUpLCB0bXAo
bV92YWx1ZSkpOwotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKGFtb3VudCksIFRtcChYODZSZWdp
c3RlcnM6OmVjeCkpOwotICAgICAgICBhcHBlbmQob3Bjb2RlLCBUbXAoWDg2UmVnaXN0ZXJzOjpl
Y3gpLCB0bXAobV92YWx1ZSkpOwotI2VuZGlmCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1v
dW50KSwgbV9lY3gpOworICAgICAgICBhcHBlbmQob3Bjb2RlLCBtX2VjeCwgdG1wKG1fdmFsdWUp
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNv
ZGUgb3Bjb2RlNjQ+CkBAIC05MzEsMTAgKzk1MCwxNiBAQCBwcml2YXRlOgogICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIENvbW11dGF0aXZpdHkgY29t
bXV0YXRpdml0eSA9IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVCaW5P
cChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOworICAgICAgICAKICAgICAgICAgQWlyOjpP
cGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIGxlZnQt
PnR5cGUoKSk7CiAgICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAKKyAgICAgICAgLy8gT24geDg2LCBhbGwgc3RvcmVzIGhh
dmUgZmVuY2VzLCBhbmQgdGhpcyBpc24ndCByZW9yZGVyaW5nIHRoZSBzdG9yZSBpdHNlbGYuCisg
ICAgICAgIGlmICghaXNYODYoKSAmJiBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVu
Y2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIEFyZyBz
dG9yZUFkZHIgPSBhZGRyKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlQoc3RvcmVBZGRyKTsKIApA
QCAtOTk0LDExICsxMDE5LDUwIEBAIHByaXZhdGU6CiAKICAgICAgICAgcmV0dXJuIEluc3QobW92
ZSwgbV92YWx1ZSwgdG1wKHZhbHVlKSwgZGVzdCk7CiAgICAgfQorICAgIAorICAgIEFpcjo6T3Bj
b2RlIHN0b3JlT3Bjb2RlKFdpZHRoIHdpZHRoLCBCYW5rIGJhbmssIGJvb2wgcmVsZWFzZSkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICAgICAgY2FzZSBXaWR0aDg6CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAgICAgICAgICAgIHJldHVybiBy
ZWxlYXNlID8gU3RvcmVSZWw4IDogQWlyOjpTdG9yZTg7CisgICAgICAgIGNhc2UgV2lkdGgxNjoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0
dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDE2IDogQWlyOjpTdG9yZTE2OworICAgICAgICBjYXNlIFdp
ZHRoMzI6CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDMyIDogTW92ZTMyOwor
ICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVs
ZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChpczY0Qml0KCkpOworICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7Cisg
ICAgICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3Rv
cmVSZWw2NCA6IE1vdmU7CisgICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZURvdWJs
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bj
b2RlIHN0b3JlT3Bjb2RlKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVl
KiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1lbW9yeS0+aXNTdG9yZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0b3JlT3Bjb2RlKG1lbW9y
eS0+bG9hZFN0b3JlV2lkdGgoKSwgbWVtb3J5LT5hY2Nlc3NCYW5rKCksIG1lbW9yeS0+aGFzRmVu
Y2UoKSk7CisgICAgfQogCiAgICAgSW5zdCBjcmVhdGVTdG9yZShWYWx1ZSogdmFsdWUsIGNvbnN0
IEFyZyYgZGVzdCkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBtb3Zl
Rm9yVHlwZSh2YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVP
cGNvZGUsIHZhbHVlLCBkZXN0KTsKKyAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IHN0
b3JlT3Bjb2RlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUs
IHZhbHVlLT5jaGlsZCgwKSwgZGVzdCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJncz4KQEAgLTEwMDYsNyArMTA3MCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBh
cHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIGNyZWF0ZVN0b3JlKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLikpKTsKICAgICB9Ci0KKyAgICAKICAgICBBaXI6Ok9wY29kZSBtb3ZlRm9yVHlw
ZShUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEwNzMsNyAr
MTEzNyw0MSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5k
KGluc3QpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9u
cyhBaXI6OkJhc2ljQmxvY2sqIHRhcmdldCkKKyAgICB7CisgICAgICAgIC8vIE5vdyBhcHBlbmQg
dGhlIGluc3RydWN0aW9ucy4gbV9pbnN0cyBjb250YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIs
IHNvIHdlIHByb2Nlc3MKKyAgICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9pbnN0cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGZvciAoSW5z
dCYgaW5zdCA6IG1faW5zdHNbaV0pCisgICAgICAgICAgICAgICAgdGFyZ2V0LT5hcHBlbmRJbnN0
KFdURk1vdmUoaW5zdCkpOworICAgICAgICB9CisgICAgICAgIG1faW5zdHMucmVzaXplKDApOwor
ICAgIH0KKyAgICAKKyAgICBBaXI6OkJhc2ljQmxvY2sqIG5ld0Jsb2NrKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKG1fYmxvY2tUb0Jsb2Nr
W21fYmxvY2tdKTsKKyAgICB9CiAKKyAgICAvLyBOT1RFOiBUaGlzIHdpbGwgY3JlYXRlIGEgY29u
dGludWF0aW9uIGJsb2NrIChgbmV4dEJsb2NrYCkgKmFmdGVyKiBhbnkgYmxvY2tzIHlvdSd2ZSBj
cmVhdGVkIHVzaW5nCisgICAgLy8gbmV3QmxvY2soKS4gU28sIGl0J3MgcHJlZmVyYWJsZSB0byBj
cmVhdGUgYWxsIG9mIHlvdXIgYmxvY2tzIHVwZnJvbnQgdXNpbmcgbmV3QmxvY2soKS4gQWxzbyBu
b3RlCisgICAgLy8gdGhhdCBhbnkgY29kZSB5b3UgZW1pdCBiZWZvcmUgdGhpcyB3aWxsIGJlIHBy
ZXBlbmRlZCB0byB0aGUgY29udGludWF0aW9uLCBhbmQgYW55IGNvZGUgeW91IGVtaXQKKyAgICAv
LyBhZnRlciB0aGlzIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHByZXZpb3VzIGJsb2NrLgorICAg
IHZvaWQgc3BsaXRCbG9jayhBaXI6OkJhc2ljQmxvY2sqJiBwcmV2aW91c0Jsb2NrLCBBaXI6OkJh
c2ljQmxvY2sqJiBuZXh0QmxvY2spCisgICAgeworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJs
b2NrID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9ja107CisgICAgICAgIAorICAgICAgICBwcmV2aW91
c0Jsb2NrID0gYmxvY2s7CisgICAgICAgIG5leHRCbG9jayA9IG1fYmxvY2tJbnNlcnRpb25TZXQu
aW5zZXJ0QWZ0ZXIoYmxvY2spOworICAgICAgICAKKyAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5z
dHJ1Y3Rpb25zKG5leHRCbG9jayk7CisgICAgICAgIG5leHRCbG9jay0+c3VjY2Vzc29ycygpID0g
YmxvY2stPnN1Y2Nlc3NvcnMoKTsKKyAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigp
OworICAgICAgICAKKyAgICAgICAgbV9pbnN0cy5hcHBlbmQoVmVjdG9yPEluc3Q+KCkpOworICAg
IH0KKyAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+
CiAgICAgVCogZW5zdXJlU3BlY2lhbChUKiYgZmllbGQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50
cykKICAgICB7CkBAIC0xMTIzLDcgKzEyMjEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoKICAgICAg
ICAgICAgICAgICBhcmcgPSBBcmc6OmNhbGxBcmcodmFsdWUucmVwKCkub2Zmc2V0RnJvbVNQKCkp
OwotICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlLnZhbHVlKCksIGFyZyk7CisgICAg
ICAgICAgICAgICAgYXBwZW5kU3RvcmUobW92ZUZvclR5cGUodmFsdWUudmFsdWUoKS0+dHlwZSgp
KSwgdmFsdWUudmFsdWUoKSwgYXJnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTE5NjEsNiArMjA1OSwzMDggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRYODZEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7Cisg
ICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7CisgICAgICAgIEFpcjo6T3Bj
b2RlIGRpdjsKKyAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSBJbnQzMjoKKyAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9E
b3VibGVXb3JkMzI7CisgICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEludDY0OgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29y
ZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7CisgICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKKyAgICAgICAgVG1wIHJl
c3VsdCA9IG9wID09IERpdiA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5kKE1vdmUs
IHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKGNvbnZlcnRU
b0RvdWJsZVdvcmQsIG1fZWF4LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBt
X2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1
bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpP
cGNvZGUgb3ApCisgICAgeworICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBl
KCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CisKKyAgICAgICAgQVNTRVJUKG9w
ID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9PSBVRGl2
ID8gbV9lYXggOiBtX2VkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNo
aWxkKDApKSwgbV9lYXgpOworICAgICAgICBhcHBlbmQoWG9yNjQsIG1fZWR4LCBtX2VkeCk7Cisg
ICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7
CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorICAg
IAorICAgIEFpcjo6T3Bjb2RlIGxvYWRMaW5rT3Bjb2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZlbmNlID8gT1BDT0RFX0ZPUl9XSURUSChMb2FkTGlu
a0FjcSwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChMb2FkTGluaywgd2lkdGgpOworICAgIH0K
KyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZUNvbmRPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wg
ZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKFN0
b3JlQ29uZFJlbCwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmQsIHdpZHRoKTsK
KyAgICB9CisgICAgCisgICAgLy8gVGhpcyBjYW4gZW1pdCBjb2RlIGZvciB0aGUgZm9sbG93aW5n
IHBhdHRlcm5zOgorICAgIC8vIEF0b21pY1dlYWtDQVMKKyAgICAvLyBCaXRYb3IoQXRvbWljV2Vh
a0NBUywgMSkKKyAgICAvLyBBdG9taWNTdHJvbmdDQVMKKyAgICAvLyBFcXVhbChBdG9taWNTdHJv
bmdDQVMsIGV4cGVjdGVkKQorICAgIC8vIE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0
ZWQpCisgICAgLy8gQnJhbmNoKEF0b21pY1dlYWtDQVMpCisgICAgLy8gQnJhbmNoKEVxdWFsKEF0
b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vIEJyYW5jaChOb3RFcXVhbChBdG9taWNT
dHJvbmdDQVMsIGV4cGVjdGVkKSkKKyAgICAvLworICAgIC8vIEl0IGFzc3VtZXMgdGhhdCBhdG9t
aWNWYWx1ZSBwb2ludHMgdG8gdGhlIENBUywgYW5kIG1fdmFsdWUgcG9pbnRzIHRvIHRoZSBpbnN0
cnVjdGlvbiBiZWluZworICAgIC8vIGdlbmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBj
b25zdW1lZCBldmVyeXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc3VtZWQuCisgICAgdm9pZCBh
cHBlbmRDQVMoVmFsdWUqIGF0b21pY1ZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGF0b21pYyk7CisgICAgICAgIAorICAgICAgICBib29sIGlz
QnJhbmNoID0gbV92YWx1ZS0+b3Bjb2RlKCkgPT0gQnJhbmNoOworICAgICAgICBib29sIGlzU3Ry
b25nID0gYXRvbWljLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wg
cmV0dXJuc09sZFZhbHVlID0gbV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTOwor
ICAgICAgICAKKyAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7
CisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworCisgICAgICAgIFRtcCB2YWx1
ZVJlc3VsdFRtcDsKKyAgICAgICAgVG1wIGJvb2xSZXN1bHRUbXA7CisgICAgICAgIGlmIChyZXR1
cm5zT2xkVmFsdWUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbnZlcnQpOworICAg
ICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSB0bXAobV92YWx1ZSk7CisgICAgICAgICAgICBib29s
UmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFu
Y2gpIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7Cisg
ICAgICAgICAgICBib29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOwor
ICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgVG1wIHN1Y2Nlc3NCb29sUmVzdWx0VG1wOworICAgICAgICBpZiAoaXNT
dHJvbmcgJiYgIWlzQnJhbmNoKQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBt
X2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xS
ZXN1bHRUbXAgPSBib29sUmVzdWx0VG1wOworCisgICAgICAgIFRtcCBleHBlY3RlZFZhbHVlVG1w
ID0gdG1wKGF0b21pYy0+Y2hpbGQoMCkpOworICAgICAgICBUbXAgbmV3VmFsdWVUbXAgPSB0bXAo
YXRvbWljLT5jaGlsZCgxKSk7CisgICAgICAgIAorICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9j
ayBzdWNjZXNzOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBmYWlsdXJlOworICAgICAg
ICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBtX2Jsb2NrVG9CbG9ja1tt
X2Jsb2NrXS0+c3VjY2Vzc29yKGludmVydCk7CisgICAgICAgICAgICBmYWlsdXJlID0gbV9ibG9j
a1RvQmxvY2tbbV9ibG9ja10tPnN1Y2Nlc3NvcighaW52ZXJ0KTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92
ZUZvclR5cGUoYXRvbWljLT5vcGVyYXRpb25UeXBlKCkpLCBpbW1PclRtcChhdG9taWMtPmNoaWxk
KDApKSwgbV9lYXgpOworICAgICAgICAgICAgaWYgKHJldHVybnNPbGRWYWx1ZSkgeworICAgICAg
ICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0cm9uZ0NBUywgd2lkdGgp
LCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIGFwcGVuZChy
ZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5vcGVyYXRpb25UeXBlKCkpLCBtX2VheCwgdmFsdWVS
ZXN1bHRUbXApOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc0JyYW5jaCkgeworICAgICAgICAg
ICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9uZ0NBUywgd2lk
dGgpLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3
VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW21fYmxv
Y2tdLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIGZhaWx1cmUpOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FT
LCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChpbnZlcnQgPyBNYWNyb0Fzc2VtYmxlcjo6RmFpbHVy
ZSA6IE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgsIHRtcChhdG9taWMtPmNoaWxkKDEp
KSwgYWRkcmVzcywgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAg
IC8vIFdlIHdpc2ggdG8gZW1pdDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9v
cDoKKyAgICAgICAgLy8gICAgIExvYWRMaW5rCisgICAgICAgIC8vICAgICBCcmFuY2ggTm90RXF1
YWwKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVuOiNmYWlsLCBFbHNlOiAjc3RvcmUKKyAg
ICAgICAgLy8gQmxvY2sgI3N0b3JlOgorICAgICAgICAvLyAgICAgU3RvcmVDb25kCisgICAgICAg
IC8vICAgICBYb3IgJDEsICVyZXN1bHQgICAgPC0tLSBvbmx5IGlmICFpbnZlcnQKKyAgICAgICAg
Ly8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAgICAvLyBC
bG9jayAjZmFpbDoKKyAgICAgICAgLy8gICAgIE1vdmUgJGludmVydCwgJXJlc3VsdAorICAgICAg
ICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8v
IEJsb2NrICNkb25lOgorICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BC
bG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3RvcmVCbG9jayA9
IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3VjY2Vzc0Jsb2NrID0gbnVs
bHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCAmJiBpc1N0cm9uZykKKyAgICAgICAgICAgIHN1
Y2Nlc3NCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogZmFpbEJs
b2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCkKKyAgICAgICAgICAgIGZhaWxC
bG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3Ryb25nRmFpbEJs
b2NrOworICAgICAgICBpZiAoaXNTdHJvbmcpCisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2sg
PSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBjb21wYXJpc29uRmFp
bDsKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sgd2Vha0ZhaWw7CisgICAgICAgIGlmIChp
c1N0cm9uZykgeworICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBzdHJvbmdGYWlsQmxvY2s7
CisgICAgICAgICAgICB3ZWFrRmFpbCA9IHJlbG9vcEJsb2NrOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKGlzQnJhbmNoKQorICAgICAgICAgICAgICAgIGNvbXBhcmlzb25GYWls
ID0gZmFpbHVyZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21wYXJpc29u
RmFpbCA9IGZhaWxCbG9jazsKKyAgICAgICAgICAgIHdlYWtGYWlsID0gZmFpbHVyZTsKKyAgICAg
ICAgfQorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFpcjo6
QmFzaWNCbG9jayogZG9uZUJsb2NrOworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ssIGRv
bmVCbG9jayk7CisgICAgICAgIAorICAgICAgICBhcHBlbmQoQWlyOjpKdW1wKTsKKyAgICAgICAg
YmVnaW5CbG9jay0+c2V0U3VjY2Vzc29ycyhyZWxvb3BCbG9jayk7CisgICAgICAgIAorICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKGxvYWRMaW5rT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0Zl
bmNlKCkpLCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcyk7CisgICAgICAgIHJlbG9v
cEJsb2NrLT5hcHBlbmQoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoQnJhbmNoLCB3aWR0aCks
IG1fdmFsdWUsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpLCB2YWx1ZVJl
c3VsdFRtcCwgZXhwZWN0ZWRWYWx1ZVRtcCk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5zZXRTdWNj
ZXNzb3JzKGNvbXBhcmlzb25GYWlsLCBzdG9yZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHN0
b3JlQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2Uo
KSksIG1fdmFsdWUsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCk7
CisgICAgICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5k
KEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJv
KSwgYm9vbFJlc3VsdFRtcCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgICAgIHN0b3JlQmxv
Y2stPnNldFN1Y2Nlc3NvcnMoc3VjY2Vzcywgd2Vha0ZhaWwpOworICAgICAgICAgICAgZG9uZUJs
b2NrLT5zdWNjZXNzb3JzKCkuY2xlYXIoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFk
b25lQmxvY2stPnNpemUoKSk7CisgICAgICAgICAgICBkb25lQmxvY2stPmFwcGVuZChBaXI6Ok9v
cHMsIG1fdmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGlzU3Ryb25n
KSB7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92
YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgc3VjY2Vzc0Jvb2xSZXN1
bHRUbXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0
U3VjY2Vzc29ycyhzdWNjZXNzQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6
OmltbSghaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICAgICAgc3VjY2Vzc0Js
b2NrLT5hcHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNz
QmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpbnZlcnQpCisgICAgICAgICAgICAgICAgICAgIHN0b3JlQmxv
Y2stPmFwcGVuZChYb3IzMiwgbV92YWx1ZSwgQXJnOjpiaXRJbW0oMSksIGJvb2xSZXN1bHRUbXAs
IGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN0b3Jl
QmxvY2stPmFwcGVuZChBaXI6Okp1bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN0b3Jl
QmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgZmFpbEJsb2NrLT5hcHBlbmQoTW92ZSwgbV92YWx1ZSwgQXJnOjpp
bW0oaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICBmYWlsQmxvY2stPmFwcGVu
ZChBaXI6Okp1bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgZmFpbEJsb2NrLT5zZXRTdWNjZXNz
b3JzKGRvbmVCbG9jayk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1N0cm9u
ZykgeworICAgICAgICAgICAgVG1wIHRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAg
ICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMt
Pmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcywgdG1wKTsKKyAg
ICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwg
QXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgdG1wLCBBcmc6OmJpdEltbSgtMSkp
OworICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGZhaWxCbG9jaywg
cmVsb29wQmxvY2spOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGJvb2wgYXBwZW5kVm9p
ZEF0b21pYyhBaXI6Ok9wY29kZSBhdG9taWNPcGNvZGUpCisgICAgeworICAgICAgICBpZiAobV91
c2VDb3VudHMubnVtVXNlcyhtX3ZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgCisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChpc1ZhbGlkRm9ybShhdG9taWNPcGNvZGUsIEFyZzo6SW1tLCBhZGRyZXNzLmtp
bmQoKSkgJiYgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgYXBwZW5kKGF0
b21pY09wY29kZSwgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzVmFsaWRG
b3JtKGF0b21pY09wY29kZSwgQXJnOjpUbXAsIGFkZHJlc3Mua2luZCgpKSkgeworICAgICAgICAg
ICAgYXBwZW5kKGF0b21pY09wY29kZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kR2VuZXJhbEF0b21pYyhB
aXI6Ok9wY29kZSBvcGNvZGUpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0g
bV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBBcmcgYWRkcmVz
cyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAgIFRtcCBvbGRWYWx1ZSA9IG1fY29kZS5uZXdUbXAo
R1ApOworICAgICAgICBUbXAgbmV3VmFsdWUgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAg
CisgICAgICAgIC8vIFdlIG5lZWQgYSBDQVMgbG9vcCBvciBhIExML1NDIGxvb3AuIFVzaW5nIHBy
ZXBhcmUvYXR0ZW1wdCBqYXJnb24sIHdlIHdhbnQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJs
b2NrICNyZWxvb3A6CisgICAgICAgIC8vICAgICBQcmVwYXJlCisgICAgICAgIC8vICAgICBvcGNv
ZGUKKyAgICAgICAgLy8gICAgIEF0dGVtcHQKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVu
OiNkb25lLCBFbHNlOiNyZWxvb3AKKyAgICAgICAgLy8gQmxvY2sgI2RvbmU6CisgICAgICAgIC8v
ICAgICBNb3ZlIG9sZFZhbHVlLCByZXN1bHQKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChyZWxh
eGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwgdG1wKGF0b21pYykpOwor
ICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2Nr
KCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpC
YXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9u
ZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChBaXI6Okp1bXApOworICAgICAgICBi
ZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAgICAg
IEFpcjo6T3Bjb2RlIHByZXBhcmVPcGNvZGU7CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkgeworICAgICAgICAgICAg
Y2FzZSBXaWR0aDg6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IExvYWQ4U2lnbmVk
RXh0ZW5kVG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lk
dGgxNjoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDE2U2lnbmVkRXh0ZW5k
VG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgzMjoK
KyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTW92ZTMyOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAgICAgICAgIHByZXBh
cmVPcGNvZGUgPSBNb3ZlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsK
KyAgICAgICAgICAgIG9wY29kZSA9IGxvYWRMaW5rT3Bjb2RlKGF0b21pYy0+b3BlcmF0aW9uV2lk
dGgoKSwgYXRvbWljLT5oYXNGZW5jZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZWxvb3BCbG9j
ay0+YXBwZW5kKHByZXBhcmVPcGNvZGUsIG1fdmFsdWUsIGFkZHJlc3MsIG9sZFZhbHVlKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChvcGNvZGUgIT0gQWlyOjpOb3ApIHsKKyAgICAgICAgICAgIGlm
IChpbW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwg
QXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5k
KG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOworICAgICAgICAgICAgZWxzZSBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwg
QXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5k
KG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFw
cGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBtX3ZhbHVlLCBvbGRWYWx1
ZSwgbmV3VmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChpbW0oYXRvbWljLT5jaGlsZCgwKSkg
JiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpUbXApKQorICAgICAgICAgICAg
ICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+
Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+
Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgQWlyOjpPcGNvZGUgY2FzT3Bjb2RlID0gT1BD
T0RFX0ZPUl9XSURUSChCcmFuY2hBdG9taWNTdHJvbmdDQVMsIGF0b21pYy0+b3BlcmF0aW9uV2lk
dGgoKSk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlw
ZShhdG9taWMtPnR5cGUoKSksIG1fdmFsdWUsIG9sZFZhbHVlLCBtX2VheCk7CisgICAgICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKGNhc09wY29kZSwgbV92YWx1ZSwgQXJnOjpzdGF0dXNDb25k
KE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7Cisg
ICAgICAgICAgICBUbXAgYm9vbFJlc3VsdCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAg
ICAgcmVsb29wQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUoYXRvbWljLT5vcGVyYXRpb25X
aWR0aCgpLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZSwgYWRkcmVzcywg
Ym9vbFJlc3VsdCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3Qz
MiwgbV92YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3Vs
dCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgfQorICAgICAgICByZWxvb3BCbG9jay0+c2V0
U3VjY2Vzc29ycyhkb25lQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgdm9p
ZCBsb3dlcigpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CkBA
IC0xOTcxLDMwICsyMzcxLDUwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIExvYWQ6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92
YWx1ZSwgbW92ZUZvclR5cGUobV92YWx1ZS0+dHlwZSgpKSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVl
KSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92
YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUg
PSBBaXI6Ok9vcHM7CisgICAgICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAg
ICAgICAgICAgICAgc3dpdGNoIChtZW1vcnktPnR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNh
c2UgSW50MzI6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3EzMjsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAg
ICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTY0OworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBvcGNv
ZGUgPSBtb3ZlRm9yVHlwZShtZW1vcnktPnR5cGUoKSk7CisgICAgICAgICAgICBhcHBlbmQodHJh
cHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1f
dmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIExvYWQ4UzogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBMb2FkOFNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRt
cChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIg
OiBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0
KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQ4Wjog
ewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOCwgbV92YWx1
ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29k
ZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRB
Y3E4IDogTG9hZDg7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9w
Y29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQxNlM6IHsKLSAgICAgICAg
ICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiwg
bV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/
IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAg
ICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZaOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBp
bmdJbnN0KG1fdmFsdWUsIExvYWQxNiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFs
dWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNiA6IExvYWQxNjsKKyAgICAgICAgICAg
IGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFs
dWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCisg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBBZGQ6IHsKICAgICAgICAgICAgIGlmICh0cnlBcHBl
bmRMZWEoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDkyLDcgKzI1MTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmlzQ2hpbGwoKSkKICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwogICAgICAgICAgICAgaWYgKGlzSW50KG1f
dmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAgIGxvd2VyWDg2RGl2
KERpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2RGl2KERpdik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKCFpc1g4NigpIHx8
IGlzRmxvYXQobV92YWx1ZS0+dHlwZSgpKSk7CkBAIC0yMTAzLDcgKzI1MjMsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIGNhc2UgVURpdjogewogICAgICAgICAgICAgaWYgKGlzSW50KG1fdmFsdWUt
PnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAgIGxvd2VyWDg2VURpdihVRGl2
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVEaXYpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjExNywxMyArMjUzNywxMyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIE1vZDogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYo
KSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV92YWx1ZS0+aXNDaGlsbCgpKTsKLSAg
ICAgICAgICAgIGxvd2VyWDg2RGl2KE1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZEaXYoTW9k
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgVU1vZDog
ewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7Ci0gICAgICAgICAgICBsb3dl
clg4NlVEaXYoVU1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVNb2QpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxNjIsMTAgKzI1ODIsMjggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPE5vdDMyLCBOb3Q2ND4obV92YWx1ZS0+Y2hp
bGQoMCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgLy8gVGhpcyBwYXR0ZXJuIGlzIHN1cGVyIHVzZWZ1bCBvbiBib3Ro
IHg4NiBhbmQgQVJNNjQsIHNpbmNlIHRoZSBpbnZlcnNpb24gb2YgdGhlIENBUyByZXN1bHQKKyAg
ICAgICAgICAgIC8vIGNhbiBiZSBkb25lIHdpdGggemVybyBjb3N0IG9uIHg4NiAoanVzdCBmbGlw
IHRoZSBzZXQgZnJvbSBFIHRvIE5FKSBhbmQgaXQncyBhIHByb2dyZXNzaW9uCisgICAgICAgICAg
ICAvLyBvbiBBUk02NCAoc2luY2UgU1RYIHJldHVybnMgMCBvbiBzdWNjZXNzLCBzbyBvcmRpbmFy
aWx5IHdlIGhhdmUgdG8gZmxpcCBpdCkuCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQo
MSktPmlzSW50KDEpCisgICAgICAgICAgICAgICAgJiYgaXNBdG9taWNDQVMobV92YWx1ZS0+Y2hp
bGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwobV92YWx1
ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1ZS0+
Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLT5jaGlsZCgwKSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxYb3IzMiwgWG9yNjQsIFhvckRvdWJsZSwgWG9y
RmxvYXQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwg
bV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBhcHBlbmRVbk9wPERlcGVuZDMyLCBEZXBlbmQ2
ND4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBTaGw6IHsKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+
aXNJbnQzMigxKSkgewpAQCAtMjI2Niw3ICsyNzA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlVG9T
dG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBh
ZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMjg3
LDcgKzI3MjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWly
OjpTdG9yZTgsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBl
bmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0yMzA4LDcgKzI3NDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTE2LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkp
OworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjQxNiw3ICsyODU0LDIyIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEVxdWFsOgotICAgICAgICBjYXNlIE5vdEVx
dWFsOgorICAgICAgICBjYXNlIE5vdEVxdWFsOiB7CisgICAgICAgICAgICBpZiAobV92YWx1ZS0+
Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICYm
IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSA9PSBtX3ZhbHVlLT5jaGlsZCgxKQorICAgICAg
ICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hp
bGQoMSkpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFs
dWUtPmNoaWxkKDEpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY29tbWl0
SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVuZENBUyht
X3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChjcmVhdGVDb21wYXJlKG1fdmFsdWUpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
TGVzc1RoYW46CiAgICAgICAgIGNhc2UgR3JlYXRlclRoYW46CiAgICAgICAgIGNhc2UgTGVzc0Vx
dWFsOgpAQCAtMjcyNyw2ICszMTgwLDQwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIEJyYW5jaDogeworICAgICAgICAgICAgaWYgKGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+
Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIGJyYW5jaENoaWxkID0gbV92YWx1
ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChicmFuY2hDaGlsZC0+b3Bjb2Rl
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAg
YXBwZW5kQ0FTKGJyYW5jaENoaWxkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJv
bmdDQVM6CisgICAgICAgICAgICAgICAgICAgIC8vIEEgYnJhbmNoIGlzIGEgY29tcGFyaXNvbiB0
byB6ZXJvLgorICAgICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5p
c0ludCgwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNo
Q2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgY2FzZSBFcXVhbDoKKyAgICAgICAgICAgICAgICBjYXNlIE5vdEVxdWFs
OgorICAgICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5vcGNvZGUo
KSA9PSBBdG9taWNTdHJvbmdDQVMKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGNhbkJlSW50
ZXJuYWwoYnJhbmNoQ2hpbGQtPmNoaWxkKDApKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYg
YnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5jaGlsZCgwKSA9PSBicmFuY2hDaGlsZC0+Y2hpbGQoMSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkLT5jaGls
ZCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQtPmNo
aWxkKDApLCBicmFuY2hDaGlsZC0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVu
ZChjcmVhdGVCcmFuY2gobV92YWx1ZS0+Y2hpbGQoMCkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMjc4NCw3ICszMjcxLDgxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBh
cHBlbmQoQWlyOjpFbnRyeVN3aXRjaCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgIGNhc2Ug
QXRvbWljU3Ryb25nQ0FTOiB7CisgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZSwgZmFsc2Up
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBBdG9taWNYY2hnQWRkOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0g
bV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0
b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY0FkZCwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgp
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBB
cmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZ0FkZCwgYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBhZGRy
ZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBl
KGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0bXAoYXRvbWljKSk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyksIGFkZHJlc3MpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXBwZW5k
R2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChBZGQsIGF0b21pYy0+b3Bl
cmF0aW9uV2lkdGgoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAg
ICAgY2FzZSBBdG9taWNYY2hnU3ViOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWlj
ID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9p
ZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1N1YiwgYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFN1YiwgYXRv
bWljLT5vcGVyYXRpb25XaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6IHsKKyAgICAgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAg
ICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQW5kLCBh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5P
TklDQUxfV0lEVEgoQW5kLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNo
Z09yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRv
bWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9S
X1dJRFRIKEF0b21pY09yLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9t
aWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoT3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgo
KSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBBdG9taWNYY2hnWG9yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWlj
ID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9p
ZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1hvciwgYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFhvciwgYXRv
bWljLT5vcGVyYXRpb25XaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisgICAgICAgICAg
ICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hjaGcsIGF0b21p
Yy0+b3BlcmF0aW9uV2lkdGgoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0ob3Bjb2Rl
LCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJl
bGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIHRtcChhdG9taWMtPmNoaWxkKDApKSwg
dG1wKGF0b21pYykpOworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChhdG9taWMp
LCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5P
TklDQUxfV0lEVEgoWG9yLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjc5Miw2NCArMzM1Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGRhdGFMb2coIkZBVEFMOiBjb3VsZCBub3QgbG93ZXIgIiwgZGVlcER1bXAobV9w
cm9jZWR1cmUsIG1fdmFsdWUpLCAiXG4iKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9Ci0KLSAgICB2b2lkIGxvd2VyWDg2RGl2KEIzOjpPcGNvZGUgb3ApCi0g
ICAgewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAo
WDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6
ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVXb3JkOwotICAgICAg
ICBBaXI6Ok9wY29kZSBkaXY7Ci0gICAgICAgIHN3aXRjaCAobV92YWx1ZS0+dHlwZSgpKSB7Ci0g
ICAgICAgIGNhc2UgSW50MzI6Ci0gICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2
Q29udmVydFRvRG91YmxlV29yZDMyOwotICAgICAgICAgICAgZGl2ID0gWDg2RGl2MzI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ2NDoKLSAgICAgICAgICAgIGNvbnZlcnRU
b0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0OwotICAgICAgICAgICAgZGl2ID0g
WDg2RGl2NjQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8IG9wID09IE1vZCk7Ci0gICAg
ICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBEaXYgPyBYODZSZWdp
c3RlcnM6OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0
bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBlbmQoY29udmVydFRvRG91
YmxlV29yZCwgZWF4LCBlZHgpOwotICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1f
dmFsdWUtPmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1w
KG1fdmFsdWUpKTsKLQotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAg
VU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGxv
d2VyWDg2VURpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAgICAg
VG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAgICAgICAgQWlyOjpPcGNvZGUg
ZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0Owot
Ci0gICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVNb2QpOwotICAgICAgICBYODZS
ZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gVURpdiA/IFg4NlJlZ2lzdGVyczo6
ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3Zh
bHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChYb3I2NCwgZWR4LCBlZHgpOwot
ICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7Ci0g
ICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1wKG1fdmFsdWUpKTsKLSNlbHNlCi0g
ICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9S
TSgpOwotI2VuZGlmCi0gICAgfQotCisgICAgCiAgICAgSW5kZXhTZXQ8VmFsdWU+IG1fbG9ja2Vk
OyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQgd2lsbCBoYXZlIG5vIFRtcCBpbiBBaXIuCiAgICAg
SW5kZXhNYXA8VmFsdWUsIFRtcD4gbV92YWx1ZVRvVG1wOyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRo
YXQgbXVzdCBoYXZlIGEgVG1wIGluIEFpci4gV2Ugc2F5IHRoYXQgYSBWYWx1ZSogd2l0aCBhIG5v
bi1udWxsIFRtcCBpcyAicGlubmVkIi4KICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3BoaVRv
VG1wOyAvLyBFYWNoIFBoaSBnZXRzIGl0cyBvd24gVG1wLgpAQCAtMjg2NCw3ICszMzY4LDcgQEAg
cHJpdmF0ZToKIAogICAgIFZlY3RvcjxWZWN0b3I8SW5zdCwgND4+IG1faW5zdHM7CiAgICAgVmVj
dG9yPEluc3Q+IG1fcHJvbG9ndWU7Ci0KKyAgICAKICAgICBCMzo6QmFzaWNCbG9jayogbV9ibG9j
azsKICAgICBib29sIG1faXNSYXJlOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CkBAIC0yODc1LDYg
KzMzNzksMTIgQEAgcHJpdmF0ZToKIAogICAgIFByb2NlZHVyZSYgbV9wcm9jZWR1cmU7CiAgICAg
Q29kZSYgbV9jb2RlOworCisgICAgQWlyOjpCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0
aW9uU2V0OworCisgICAgVG1wIG1fZWF4OworICAgIFRtcCBtX2VjeDsKKyAgICBUbXAgbV9lZHg7
CiB9OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MzAgKzM0LDQ4IEBAIE1lbW9yeVZhbHVlOjp+TWVtb3J5VmFsdWUoKQogewogfQogCitUeXBlIE1l
bW9yeVZhbHVlOjphY2Nlc3NUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNMb2FkKCkpCisgICAg
ICAgIHJldHVybiB0eXBlKCk7CisgICAgLy8gVGhpcyBoYXBwZW5zIHRvIHdvcmsgZm9yIGF0b21p
Y3MsIHRvby4gVGhhdCdzIHdoeSBBdG9taWNWYWx1ZSBkb2VzIG5vdCBuZWVkIHRvIG92ZXJyaWRl
IHRoaXMuCisgICAgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7Cit9CisKK0JhbmsgTWVtb3J5VmFs
dWU6OmFjY2Vzc0JhbmsoKSBjb25zdAoreworICAgIHJldHVybiBiYW5rRm9yVHlwZShhY2Nlc3NU
eXBlKCkpOworfQorCiBzaXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkgY29uc3QK
IHsKKyAgICByZXR1cm4gYnl0ZXMoYWNjZXNzV2lkdGgoKSk7Cit9CisKK1dpZHRoIE1lbW9yeVZh
bHVlOjpsb2FkU3RvcmVXaWR0aCgpIGNvbnN0Cit7CiAgICAgc3dpdGNoIChvcGNvZGUoKSkgewog
ICAgIGNhc2UgTG9hZDhaOgogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgU3RvcmU4OgotICAg
ICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICBjYXNlIExvYWQxNlo6
CiAgICAgY2FzZSBMb2FkMTZTOgogICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgcmV0dXJuIDI7
CisgICAgICAgIHJldHVybiBXaWR0aDE2OwogICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmV0dXJu
IHNpemVvZlR5cGUodHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZSh0eXBlKCkp
OwogICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKGNoaWxkKDApLT50
eXBlKCkpOworICAgICAgICByZXR1cm4gd2lkdGhGb3JUeXBlKGNoaWxkKDApLT50eXBlKCkpOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gV2lkdGg4OwogICAgIH0KIH0KIAogV2lkdGgg
TWVtb3J5VmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2lkdGhGb3JC
eXRlcyhhY2Nlc3NCeXRlU2l6ZSgpKTsKKyAgICByZXR1cm4gbG9hZFN0b3JlV2lkdGgoKTsKIH0K
IAogdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKQEAgLTY1LDggKzgzLDExIEBAIHZvaWQgTWVtb3J5VmFsdWU6OmR1
bXBNZXRhKENvbW1hUHJpbnRlciYKICAgICBpZiAobV9vZmZzZXQpCiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIm9mZnNldCA9ICIsIG1fb2Zmc2V0KTsKICAgICBpZiAoKGlzTG9hZCgpICYmIGVm
ZmVjdHMoKS5yZWFkcyAhPSByYW5nZSgpKQotICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVmZmVj
dHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkpCisgICAgICAgIHx8IChpc1N0b3JlKCkgJiYgZWZmZWN0
cygpLndyaXRlcyAhPSByYW5nZSgpKQorICAgICAgICB8fCBmZW5jZVJhbmdlKCkpCiAgICAgICAg
IG91dC5wcmludChjb21tYSwgInJhbmdlID0gIiwgcmFuZ2UoKSk7CisgICAgaWYgKGZlbmNlUmFu
Z2UoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZmVuY2VSYW5nZSA9ICIsIGZlbmNlUmFu
Z2UoKSk7CiB9CiAKIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKQEAgLTc0
LDYgKzk1LDU4IEBAIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKICAgICBy
ZXR1cm4gbmV3IE1lbW9yeVZhbHVlKCp0aGlzKTsKIH0KIAorLy8gVXNlIHRoaXMgZm9ybSBmb3Ig
TG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhh
dmUgYSBzdWZmaXggdGhhdAorLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KK01lbW9y
eVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwg
VmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0KQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29k
ZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQor
eworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNv
ZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQxNlo6
CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IEludDMy
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0b3JlODoKKyAgICAgICAgY2Fz
ZSBTdG9yZTE2OgorICAgICAgICBjYXNlIFN0b3JlOgorICAgICAgICAgICAgQVNTRVJUKHR5cGUg
PT0gVm9pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBVc2Ug
dGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KK01l
bW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBw
b2ludGVyLCBpbnQzMl90IG9mZnNldCkKKyAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBv
cmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewor
ICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBMb2FkOFo6Cisg
ICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQxNlo6CisgICAgICAgIGNhc2Ug
TG9hZDE2UzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0
aGlzIGZvcm0gZm9yIHN0b3Jlcy4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQs
IE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zm
c2V0KQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1
ZSwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBBU1NFUlQoQjM6Omlz
U3RvcmUoa2luZC5vcGNvZGUoKSkpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAog
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNNZW1vcnlWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M01lbW9yeVZhbHVlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM01lbW9yeVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDQ4ICsyNywxNyBAQAog
CiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzQmFuay5oIgogI2luY2x1ZGUgIkIz
SGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsKIAotLy8gRklYTUU6IFdlIHdhbnQgdG8gYWxsb3cgZmVuY2VkIG1lbW9yeSBh
Y2Nlc3NlcyBvbiBBUk0uCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyMzQ5Ci0KIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIE1lbW9yeVZhbHVlIDogcHVibGlj
IFZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKICAg
ICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICBjYXNlIExvYWQ4
WjoKLSAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAg
Y2FzZSBMb2FkMTZTOgotICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIGNhc2UgU3RvcmU4Ogot
ICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzU3RvcmUoS2luZCBraW5kKQot
ICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgU3Rv
cmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzTG9hZChLaW5kIGtp
bmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWNjZXB0cyhraW5kKSAmJiAhaXNTdG9yZShraW5k
KTsKKyAgICAgICAgcmV0dXJuIGlzTWVtb3J5QWNjZXNzKGtpbmQub3Bjb2RlKCkpOwogICAgIH0K
IAogICAgIH5NZW1vcnlWYWx1ZSgpOwpAQCAtNzgsNzYgKzQ3LDU2IEBAIHB1YmxpYzoKIAogICAg
IGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CiAgICAg
dm9pZCBzZXRSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fcmFuZ2UgPSByYW5nZTsg
fQorICAgIAorICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHJhbmdlLgorICAgIGNvbnN0IEhl
YXBSYW5nZSYgYWNjZXNzUmFuZ2UoKSBjb25zdCB7IHJldHVybiByYW5nZSgpOyB9CisgICAgdm9p
ZCBzZXRBY2Nlc3NSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IHNldFJhbmdlKHJhbmdl
KTsgfQorICAgIAorICAgIGNvbnN0IEhlYXBSYW5nZSYgZmVuY2VSYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmVuY2VSYW5nZTsgfQorICAgIHZvaWQgc2V0RmVuY2VSYW5nZShjb25zdCBIZWFwUmFu
Z2UmIHJhbmdlKSB7IG1fZmVuY2VSYW5nZSA9IHJhbmdlOyB9CisKKyAgICBib29sIGlzU3RvcmUo
KSBjb25zdCB7IHJldHVybiBCMzo6aXNTdG9yZShvcGNvZGUoKSk7IH0KKyAgICBib29sIGlzTG9h
ZCgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAgICBib29sIGlz
U3RvcmUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVm9pZDsgfQotICAgIGJvb2wgaXNMb2Fk
KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpICE9IFZvaWQ7IH0KKyAgICBib29sIGhhc0ZlbmNlKCkg
Y29uc3QgeyByZXR1cm4gISFmZW5jZVJhbmdlKCk7IH0KIAorICAgIFR5cGUgYWNjZXNzVHlwZSgp
IGNvbnN0OworICAgIEJhbmsgYWNjZXNzQmFuaygpIGNvbnN0OwogICAgIHNpemVfdCBhY2Nlc3NC
eXRlU2l6ZSgpIGNvbnN0OwotICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CisgICAgCisg
ICAgLy8gU2xpZ2h0bHkgZmFzdGVyIHZlcnNpb24gb2YgYWNjZXNzV2lkdGgsIGlmIHlvdSBrbm93
IHRoYXQgeW91J3JlIHdvcmtpbmcgd2l0aCBhIGxvYWQgb3Igc3RvcmUuCisgICAgV2lkdGggbG9h
ZFN0b3JlV2lkdGgoKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIFdpZHRoIGFjY2Vzc1dpZHRo
KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYg
Y29tbWEsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShD
b21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmFsdWUq
IGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJndW1lbnRzPgorICAgIE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwg
VHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBpbnQzMl90IG9mZnNldCwgQXJndW1lbnRzLi4uIGFy
Z3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmln
aW4sIGFyZ3VtZW50cy4uLikKKyAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgeworICAg
IH0KKyAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKLQorICAgIAog
ICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9y
IGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3VmZml4IHRoYXQKICAgICAvLyBkZXNjcmli
ZXMgdGhlIHJldHVybmVkIHR5cGUpLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0
eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQot
ICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRl
cikKLSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFu
Z2U6OnRvcCgpKQotICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBMb2FkOgot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAg
ICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgICAg
IGNhc2UgTG9hZDE2UzoKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAg
ICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKHR5cGUgPT0gVm9pZCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIFR5cGUs
IE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CiAKICAgICAvLyBV
c2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4K
LSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVy
LCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIs
IG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQotICAgIHsKLSAgICB9CisgICAgTWVtb3J5VmFsdWUo
S2luZCwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKTsKIAogICAg
IC8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQs
IE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zm
c2V0ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBvcmln
aW4sIHZhbHVlLCBwb2ludGVyKQotICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAgICAg
LCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCi0gICAgewotICAgICAgICBpZiAoIUFTU0VSVF9E
SVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAg
ICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAg
IGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCisgICAgTWVtb3J5VmFs
dWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9m
ZnNldCA9IDApOworICAgIAogICAgIGludDMyX3QgbV9vZmZzZXQgeyAwIH07Ci0gICAgSGVhcFJh
bmdlIG1fcmFuZ2U7CisgICAgSGVhcFJhbmdlIG1fcmFuZ2UgeyBIZWFwUmFuZ2U6OnRvcCgpIH07
CisgICAgSGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhlYXBSYW5nZSgpIH07CiB9OwogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM05h
dGl2ZVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM05h
dGl2ZVRyYWl0cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M05hdGl2ZVRyYWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzQmFuay5oIgorI2luY2x1ZGUgIkIzVHlw
ZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTmF0aXZlVHJhaXRzOworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50OF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsg
YmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoODsKKyAgICBz
dGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBO
YXRpdmVUcmFpdHM8dWludDhfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsK
KyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDg7CisgICAgc3RhdGljIGNvbnN0
IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRz
PGludDE2X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGlj
IGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgxNjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBl
ID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDE2X3Q+
IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdp
ZHRoIHdpZHRoID0gV2lkdGgxNjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7
Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50MzJfdD4geworICAgIHN0
YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGgg
PSBXaWR0aDMyOworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czx1aW50MzJfdD4geworICAgIHN0YXRpYyBjb25z
dCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDMy
OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IE5hdGl2ZVRyYWl0czxpbnQ2NF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFu
ayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoNjQ7CisgICAgc3Rh
dGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDY0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0
aXZlVHJhaXRzPHVpbnQ2NF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOwor
ICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoNjQ7CisgICAgc3RhdGljIGNvbnN0
IFR5cGUgdHlwZSA9IEludDY0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRz
PGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEZQOworICAgIHN0YXRpYyBj
b25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoMzI7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9
IEZsb2F0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGRvdWJsZT4gewor
ICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBGUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGgg
d2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBEb3VibGU7Cit9
OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkocmV2aXNpb24gMjEy
OTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY4LDYgKzY4LDIzIEBAIHN0ZDo6b3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRlZENv
bXBhcmUoT3AKICAgICB9CiB9CiAKK09wY29kZSBzdG9yZU9wY29kZShCYW5rIGJhbmssIFdpZHRo
IHdpZHRoKQoreworICAgIHN3aXRjaCAoYmFuaykgeworICAgIGNhc2UgR1A6CisgICAgICAgIHN3
aXRjaCAod2lkdGgpIHsKKyAgICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICByZXR1cm4g
U3RvcmU4OworICAgICAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgICAgICByZXR1cm4gU3RvcmUx
NjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTdG9yZTsKKyAgICAgICAg
fQorICAgIGNhc2UgRlA6CisgICAgICAgIHJldHVybiBTdG9yZTsKKyAgICB9Cit9CisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTI2Myw2ICsyODAsMzMg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wYwogICAgIGNhc2UgU3Rv
cmU6CiAgICAgICAgIG91dC5wcmludCgiU3RvcmUiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNXZWFrQ0FTIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgb3V0LnBy
aW50KCJBdG9taWNTdHJvbmdDQVMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWlj
WGNoZ0FkZDoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnQWRkIik7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgIG91dC5wcmludCgiQXRvbWlj
WGNoZ0FuZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAg
ICAgIG91dC5wcmludCgiQXRvbWljWGNoZ09yIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEF0b21pY1hjaGdTdWI6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ1N1YiIpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICBvdXQucHJpbnQo
IkF0b21pY1hjaGdYb3IiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZzoK
KyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnIik7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIERlcGVuZDoKKyAgICAgICAgb3V0LnByaW50KCJEZXBlbmQiKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIG91dC5wcmludCgiV2FzbUFkZHJlc3Mi
KTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bj
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAK
ICNpbmNsdWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC04Miw3ICs4
Myw2IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgTW9kLCAvLyBBbGwgYmV0cyBhcmUg
b2ZmIGFzIHRvIHdoYXQgd2lsbCBoYXBwZW4gd2hlbiB5b3UgZXhlY3V0ZSB0aGlzIGZvciAtMl4z
MSUtMSBhbmQgeCUwLgogICAgIFVNb2QsCiAKLQogICAgIC8vIFBvbHltb3JwaGljIG5lZ2F0aW9u
LiBOb3RlIHRoYXQgd2Ugb25seSBuZWVkIHRoaXMgZm9yIGZsb2F0aW5nIHBvaW50LCBzaW5jZSBp
bnRlZ2VyIG5lZ2F0aW9uCiAgICAgLy8gaXMgZXhhY3RseSBsaWtlIFN1YigwLCB4KS4gQnV0IHRo
YXQncyBub3QgdHJ1ZSBmb3IgZmxvYXRpbmcgcG9pbnQuIFN1YigwLCAwKSBpcyAwLCB3aGlsZQog
ICAgIC8vIE5lZygwKSBpcyAtMC4gQWxzbywgd2UgY2Fub25pY2FsaXplIFN1YigwLCB4KSBpbnRv
IE5lZyh4KSBpbiBjYXNlIG9mIGludGVnZXJzLgpAQCAtMTYyLDYgKzE2MiwxMDcgQEAgZW51bSBP
cGNvZGUgOiBpbnQxNl90IHsKICAgICBTdG9yZTE2LAogICAgIC8vIFRoaXMgaXMgYSBwb2x5bW9y
cGhpYyBzdG9yZSBmb3IgSW50MzIsIEludDY0LCBGbG9hdCwgYW5kIERvdWJsZS4KICAgICBTdG9y
ZSwKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgYSBi
b29sZWFuLiBNYXkgY2hvb3NlIHRvIGRvIG5vdGhpbmcgYW5kIHJldHVybiBmYWxzZS4gWW91IGNh
bgorICAgIC8vIHVzdWFsbHkgYXNzdW1lIHRoYXQgdGhpcyBpcyBmYXN0ZXIgYW5kIHJlc3VsdHMg
aW4gbGVzcyBjb2RlIHRoYW4gQXRvbWljU3Ryb25nQ0FTLCB0aG91Z2ggdGhhdCdzCisgICAgLy8g
bm90IG5lY2Vzc2FyaWx5IHRydWUgb24gSW50ZWwsIGlmIGluc3RydWN0aW9uIHNlbGVjdGlvbiBk
b2VzIGl0cyBqb2IuIEltYWdpbmUgdGhhdCB0aGlzIG9wY29kZSBpcworICAgIC8vIGFzIGlmIHlv
dSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICAvLyBib29sIEF0b21pY1dlYWtDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVl
LCBUKiBwdHIpCisgICAgLy8geworICAgIC8vICAgICBpZiAoIXJhbmQoKSkKKyAgICAvLyAgICAg
ICAgIHJldHVybiBmYWxzZTsgLy8gUmVhbCB3b3JsZCBleGFtcGxlIG9mIHRoaXM6IGNvbnRleHQg
c3dpdGNoIG9uIEFSTSB3aGlsZSBkb2luZyBDQVMuCisgICAgLy8gICAgIGlmICgqcHRyICE9IGV4
cGVjdGVkVmFsdWUpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gICAgICpw
dHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gfQorICAgIC8v
CisgICAgLy8gTm90ZSB0aGF0IGFsbCBhdG9taWNzIHB1dCB0aGUgcG9pbnRlciBsYXN0IHRvIGJl
IGNvbnNpc3RlbnQgd2l0aCBob3cgbG9hZHMgYW5kIHN0b3JlcyB3b3JrLiBUaGlzCisgICAgLy8g
aXMgYSBnb29meSB0cmFkaXRpb24sIGJ1dCBpdCdzIGhhcm1sZXNzLCBhbmQgYmV0dGVyIHRoYW4g
YmVpbmcgaW5jb25zaXN0ZW50LgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHdlYWsgQ0FTIGhh
cyBubyBmZW5jaW5nIGd1YXJhbnRlZXMgd2hlbiBpdCBmYWlscy4gVGhpcyBtZWFucyB0aGF0IHRo
ZSBmb2xsb3dpbmcKKyAgICAvLyB0cmFuc2Zvcm1hdGlvbiBpcyBhbHdheXMgdmFsaWQ6CisgICAg
Ly8KKyAgICAvLyBCZWZvcmU6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNX
ZWFrQ0FTKGV4cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhl
bjojc3VjY2VzcywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQWZ0ZXI6CisgICAgLy8KKyAg
ICAvLyAgICAgICAgIEJyYW5jaChFcXVhbChMb2FkKHB0ciksIGV4cGVjdGVkKSkKKyAgICAvLyAg
ICAgICBTdWNjZXNzb3JzOiBUaGVuOiNhdHRlbXB0LCBFbHNlOiNmYWlsCisgICAgLy8gICAgIEJC
I2F0dGVtcHQ6CisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwg
bmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6
I2ZhaWwKKyAgICAvLworICAgIC8vIEJvdGgga2luZHMgb2YgQ0FTIGZvciBub24tY2Fub25pY2Fs
IHdpZHRocyAoV2lkdGg4IGFuZCBXaWR0aDE2KSBpZ25vcmUgdGhlIGlycmVsZXZhbnQgYml0cyBv
ZiB0aGUKKyAgICAvLyBpbnB1dC4KKyAgICBBdG9taWNXZWFrQ0FTLAorICAgIAorICAgIC8vIEF0
b21pYyBjb21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBEb2VzIG5v
dCBoYXZlIHRoZSBub25kZXRlcm1pbmlzbSBvZiBXZWFrQ0FTLgorICAgIC8vIFRoaXMgaXMgYSBi
aXQgbW9yZSBjb2RlIGFuZCBhIGJpdCBzbG93ZXIgaW4gc29tZSBjYXNlcywgdGhvdWdoIG5vdCBi
eSBhIGxvdC4gSW1hZ2luZSB0aGF0IHRoaXMKKyAgICAvLyBvcGNvZGUgaXMgYXMgaWYgeW91IGRp
ZCB0aGlzIGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIC8vIFQgQXRvbWljU3Ryb25nQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCog
cHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgVCBvbGRWYWx1ZSA9ICpwdHI7CisgICAgLy8gICAg
IGlmIChvbGRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgKnB0ciA9IG5l
d1ZhbHVlOworICAgIC8vICAgICByZXR1cm4gb2xkVmFsdWUKKyAgICAvLyB9CisgICAgLy8KKyAg
ICAvLyBOb3RlIHRoYXQgQXRvbWljV2Vha0NBUyBhbmQgQXRvbWljU3Ryb25nQ0FTIHNvcnQgb2Yg
aGF2ZSB0aGlzIGtpbmQgb2YgZXF1aXZhbGVuY2U6CisgICAgLy8KKyAgICAvLyBBdG9taWNXZWFr
Q0FTKEBleHAsIEBuZXcsIEBwdHIpID09IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhAZXhwLCBAbmV3
LCBAcHRyKSwgQGV4cCkKKyAgICAvLworICAgIC8vIEFzc3VtaW5nIHRoYXQgdGhlIFdlYWtDQVMg
ZG9lcyBub3Qgc3B1cmlvdXNseSBmYWlsLCBvZiBjb3Vyc2UuCisgICAgQXRvbWljU3Ryb25nQ0FT
LAorICAgIAorICAgIC8vIEF0b21pY2FsbHkgX19fIGEgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1
cm4gdGhlIG9sZCB2YWx1ZS4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRv
bWljWGNoZ19fXyhAb3BlcmFuZCwgQHB0cikKKyAgICAvLworICAgIC8vIEZvciBub24tY2Fub25p
Y2FsIHdpZHRocyAoV2lkdGg4IGFuZCBXaWR0aDE2KSwgdGhlc2UgcmV0dXJuIHNpZ24tZXh0ZW5k
ZWQgcmVzdWx0cyBhbmQgaWdub3JlIHRoZQorICAgIC8vIGlycmVsZXZhbnQgYml0cyBvZiB0aGVp
ciBpbnB1dHMuCisgICAgQXRvbWljWGNoZ0FkZCwKKyAgICBBdG9taWNYY2hnQW5kLAorICAgIEF0
b21pY1hjaGdPciwKKyAgICBBdG9taWNYY2hnU3ViLAorICAgIEF0b21pY1hjaGdYb3IsCisgICAg
CisgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBoYXZlIEF0b21pY1hjaGdOZWcgYW5kIEF0
b21pY1hjaGdOb3QuCisgICAgCisgICAgLy8gQXRvbWljYWxseSBleGNoYW5nZSBhIHZhbHVlIHdp
dGggYSBtZW1vcnkgbG9jYXRpb24uIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9
IEF0b21pY1hjaGcoQG5ld1ZhbHVlLCBAcHRyKQorICAgIEF0b21pY1hjaGcsCisgICAgCisgICAg
Ly8gSW50cm9kdWNlIGFuIGludmlzaWJsZSBkZXBlbmRlbmN5IGZvciBibG9ja2luZyBtb3Rpb24g
b2YgbG9hZHMgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuIFN5bnRheDoKKyAgICAvLworICAg
IC8vIEByZXN1bHQgPSBEZXBlbmQoQHBoYW50b20pCisgICAgLy8KKyAgICAvLyBUaGlzIGlzIGV2
ZW50dWFsbHkgY29kZWdlbmVyYXRlZCB0byBoYXZlIGxvY2FsIHNlbWFudGljcyBhcyBpZiB3ZSBk
aWQ6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gJDAKKyAgICAvLworICAgIC8vIEJ1dCBpdCBl
bnN1cmVzIHRoYXQgdGhlIHVzZXJzIG9mIEByZXN1bHQgY2Fubm90IGV4ZWN1dGUgdW50aWwgQHBo
YW50b20gaXMgY29tcHV0ZWQuCisgICAgLy8KKyAgICAvLyBUaGUgY29tcGlsZXIgaXMgbm90IGFs
bG93ZWQgdG8gcmVhc29uIGFib3V0IHRoZSBmYWN0IHRoYXQgRGVwZW5kIGNvZGVnZW5lcmF0ZXMg
dGhpcyB3YXkuIEFueSBraW5kCisgICAgLy8gb2YgdHJhbnNmb3JtYXRpb24gb3IgYW5hbHlzaXMg
dGhhdCByZWxpZXMgb24gdGhlIGluc2lnaHQgdGhhdCBEZXBlbmQgaXMgcmVhbGx5IHplcm8gaXMg
dW5zb3VuZCwKKyAgICAvLyBiZWNhdXNlIGl0IHVubG9ja3MgcmVvcmRlcmluZyBvZiB1c2VycyBv
ZiBAcmVzdWx0IGFuZCBAcGhhbnRvbS4KKyAgICAvLworICAgIC8vIE9uIFg4NiwgdGhpcyBpcyBs
b3dlcmVkIHRvIGEgbG9hZC1sb2FkIGZlbmNlIGFuZCBAcmVzdWx0IHVzZXMgQHBoYW50b20gZGly
ZWN0bHkuCisgICAgLy8KKyAgICAvLyBPbiBBUk0sIHRoaXMgaXMgbG93ZXJlZCBhcyBpZiBsaWtl
OgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9IEJpdFhvcihAcGhhbnRvbSwgQHBoYW50b20pCisg
ICAgLy8KKyAgICAvLyBFeGNlcHQgdGhhdCB0aGUgY29tcGlsZXIgbmV2ZXIgZ2V0cyBhbiBvcHBv
cnR1bml0eSB0byBzaW1wbGlmeSBvdXQgdGhlIEJpdFhvci4KKyAgICBEZXBlbmQsCiAKICAgICAv
LyBUaGlzIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIGFkZHJlc3Mgb2YgYSBXYXNtIG1l
bW9yeSBvcGVyYXRpb24uIEl0IHRha2VzIGFuIEludFB0cgogICAgIC8vIGFuZCBhIHBpbm5lZCBy
ZWdpc3RlciB0aGVuIGNvbXB1dGVzIHRoZSBhcHByb3ByaWF0ZSBJbnRQdHIgYWRkcmVzcy4gRm9y
IHRoZSB1c2UtY2FzZSBvZgpAQCAtMzAxLDYgKzQwMiwxMTIgQEAgaW5saW5lIGJvb2wgaXNEZWZp
bml0ZWx5VGVybWluYWwoT3Bjb2RlIAogICAgIH0KIH0KIAoraW5saW5lIGJvb2wgaXNMb2FkKE9w
Y29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoK
KyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2FkMTZTOgor
ICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNTdG9yZShPcGNvZGUg
b3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBTdG9yZTg6CisgICAg
Y2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29s
IGlzTG9hZFN0b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAg
ICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAg
Y2FzZSBMb2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNl
IFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNB
dG9taWMoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2Ug
QXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21p
Y1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09y
OgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAg
Y2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY0NBUyhP
cGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNX
ZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUg
Ym9vbCBpc0F0b21pY1hjaGcoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkg
eworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAg
Y2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRv
bWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBi
b29sIGlzTWVtb3J5QWNjZXNzKE9wY29kZSBvcGNvZGUpCit7CisgICAgcmV0dXJuIGlzQXRvbWlj
KG9wY29kZSkgfHwgaXNMb2FkU3RvcmUob3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZSBzaWdu
RXh0ZW5kT3Bjb2RlKFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBj
YXNlIFdpZHRoODoKKyAgICAgICAgcmV0dXJuIFNFeHQ4OworICAgIGNhc2UgV2lkdGgxNjoKKyAg
ICAgICAgcmV0dXJuIFNFeHQxNjsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gT29wczsKKyAgICB9Cit9CisKK0pTX0VY
UE9SVF9QUklWQVRFIE9wY29kZSBzdG9yZU9wY29kZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKTsK
KwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDIsNiArMjAyLDggQEAgdm9pZCBQcm9jZWR1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgYwogICAgICAgICB9CiAgICAgICAgIGRhdGFMb2coIiAgICAiLCBkZWVwRHVtcCgqdGhpcywg
dmFsdWUpLCAiXG4iKTsKICAgICB9CisgICAgaWYgKGhhc1F1aXJrcygpKQorICAgICAgICBvdXQu
cHJpbnQoIkhhcyBRdWlya3M6IFRydWVcbiIpOwogICAgIGlmICh2YXJpYWJsZXMoKS5zaXplKCkp
IHsKICAgICAgICAgb3V0LnByaW50KCJWYXJpYWJsZXM6XG4iKTsKICAgICAgICAgZm9yIChWYXJp
YWJsZSogdmFyaWFibGUgOiB2YXJpYWJsZXMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1Byb2NlZHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1Byb2NlZHVyZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw3IEBAIHB1
YmxpYzoKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoT3JpZ2luLCBUeXBlLCBpbnQ2NF90IHZh
bHVlKTsKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoVmFsdWUqLCBpbnQ2NF90IHZhbHVlKTsK
IAorICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgVmFs
dWUqIGFkZEJvdHRvbShPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBhZGRCb3R0b20oVmFsdWUq
KTsKIApAQCAtMTk1LDYgKzE5NiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gYWxpdmUuIEdyZWF0IGZv
ciBjb21waWxlci1nZW5lcmF0ZWQgZGF0YSBzZWN0aW9ucywgbGlrZSBzd2l0Y2gganVtcCB0YWJs
ZXMgYW5kIGNvbnN0YW50IHBvb2xzLgogICAgIC8vIFRoaXMgcmV0dXJucyBtZW1vcnkgdGhhdCBo
YXMgYmVlbiB6ZXJvLWluaXRpYWxpemVkLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFk
ZERhdGFTZWN0aW9uKHNpemVfdCk7CisgICAgCisgICAgLy8gU29tZSBvcGVyYXRpb25zIGFyZSBz
cGVjaWZpZWQgaW4gQjMgSVIgdG8gYmVoYXZlIG9uZSB3YXkgYnV0IG9uIHRoaXMgZ2l2ZW4gQ1BV
IHRoZXkgYmVoYXZlIGEKKyAgICAvLyBkaWZmZXJlbnQgd2F5LiBXaGVuIHRydWUsIHRob3NlIEIz
IElSIG9wcyBzd2l0Y2ggdG8gYmVoYXZpbmcgdGhlIENQVSB3YXksIGFuZCB0aGUgb3B0aW1pemVy
IG1heQorICAgIC8vIHN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2YgaXQuCisgICAgYm9vbCBoYXNR
dWlya3MoKSBjb25zdCB7IHJldHVybiBtX2hhc1F1aXJrczsgfQorICAgIHZvaWQgc2V0SGFzUXVp
cmtzKGJvb2wgdmFsdWUpIHsgbV9oYXNRdWlya3MgPSB2YWx1ZTsgfQogCiAgICAgT3BhcXVlQnlw
cm9kdWN0cyYgYnlwcm9kdWN0cygpIHsgcmV0dXJuICptX2J5cHJvZHVjdHM7IH0KIApAQCAtMjUy
LDYgKzI1OSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChQcmludFN0
cmVhbSYsIE9yaWdpbik+PiBtX29yaWdpblByaW50ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9mcm9u
dGVuZERhdGE7CiAgICAgUENUb09yaWdpbk1hcCBtX3BjVG9PcmlnaW5NYXA7CisgICAgYm9vbCBt
X2hhc1F1aXJrcyB7IGZhbHNlIH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVu
Z3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShC
M19KSVQpCiAKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Js
b2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRl
ICJCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgiCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnJlYWs7Ci0KKyAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIE5lZzoKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogTmVnKGNvbnN0YW50KQog
ICAgICAgICAgICAgLy8gSW50byB0aGlzOiAtY29uc3RhbnQKQEAgLTEyOTUsNiArMTI5NiwxNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhh
c1F1aXJrcygpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0OChBdG9taWNY
Y2hnX19fKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXworICAg
ICAgICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgp
KQorICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFs
dWU+KCktPm9wZXJhdGlvbldpZHRoKCkgPT0gV2lkdGg4KSB7CisgICAgICAgICAgICAgICAgICAg
IHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIFNFeHQxNjoKQEAgLTEzNDMsNiArMTM1NCwxNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhhc1F1aXJrcygpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0MTYoQXRvbWljWGNoZ19fXykKKyAgICAg
ICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBp
ZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5vcGVyYXRp
b25XaWR0aCgpID09IFdpZHRoMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJ
ZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgU0V4dDMyOgpAQCAtMjEwMSwyMiArMjEyMiwyNSBAQCBwcml2YXRlOgogICAg
ICAgICBBU1NFUlQobV92YWx1ZS0+bnVtQ2hpbGRyZW4oKSA+PSAyKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIExlYXZlIGl0IGFsb25lIGlmIHRoZSByaWdodCBjaGlsZCBpcyBhIGNvbnN0YW50Lgot
ICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKSkKKyAgICAgICAgaWYg
KG1fdmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkKKyAgICAgICAgICAgIHx8IG1fdmFsdWUt
PmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIAotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQo
KSkgeworICAgICAgICBhdXRvIHN3YXAgPSBbJl0gKCkgewogICAgICAgICAgICAgc3RkOjpzd2Fw
KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICAgICAg
fTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNDb25zdGFudCgp
KQorICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQorICAgICAgICAgICAg
cmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCiAgICAgICAgIC8vIFNvcnQgdGhlIG9wZXJhbmRzLiBU
aGlzIGlzIGFuIGltcG9ydGFudCBjYW5vbmljYWxpemF0aW9uLiBXZSB1c2UgdGhlIGluZGV4IGlu
c3RlYWQgb2YKICAgICAgICAgLy8gdGhlIGFkZHJlc3MgdG8gbWFrZSB0aGlzIGF0IGxlYXN0IHNs
aWdodGx5IGRldGVybWluaXN0aWMuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5k
ZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEpLT5pbmRleCgpKSB7Ci0gICAgICAgICAgICBzdGQ6OnN3
YXAobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgIG1f
Y2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4
KCkpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCByZWFsbHkgYmUgYSBmb3J3YXJkIGFuYWx5c2lzLiBJbnN0ZWFkLCB3ZSB1c2Vz
IGEgYm91bmRlZC1zZWFyY2ggYmFja3dhcmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisj
aW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMu
aCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgi
CkBAIC0zNDYsNiArMzQ3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09
IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2Uo
dmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBMb2FkOgpAQCAtMzUzLDYgKzM1
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRy
ZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAg
ICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBTdG9yZTg6CkBAIC0zNjIsNiArMzY1LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IElu
dDMyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5j
aGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAg
ICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBTdG9yZToKQEAgLTM2OSw4ICszNzMsNDkgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwg
KnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBl
KCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVT
dGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5k
KCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5udW1DaGlsZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSB2YWx1
ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9p
bnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0
b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NB
UzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxk
cmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxk
KDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
aXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoK
KyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgw
KS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlz
SW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAg
ICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
IXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5j
aGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgICAgICAg
ICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAo
IkF0ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYgKzU4MiwyMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUZlbmNl
KFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisg
ICAgICAgICAgICBWQUxJREFURShtZW1vcnktPmFjY2Vzc0JhbmsoKSA9PSBHUCwgKCJGZW5jZSBh
dCAiLCAqbWVtb3J5KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVBdG9taWMoVmFs
dWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IHZhbHVlLT5h
czxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgCisgICAgICAgIFZBTElEQVRFKGJlc3RUeXBlKEdQ
LCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpID09IGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVTdGFja0FjY2VzcyhW
YWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQp
CiAKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1Zh
bHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQm90
dG9tUHJvdmlkZXIuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTUxMCw2ICs1MTEs
NyBAQCBib29sIFZhbHVlOjpyZXR1cm5zQm9vbCgpIGNvbnN0CiAgICAgY2FzZSBBYm92ZUVxdWFs
OgogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CisgICAg
Y2FzZSBBdG9taWNXZWFrQ0FTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFBoaToK
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgc3RvcnkgaGVyZS4KQEAgLTU4OSw2
ICs1OTEsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIEJlbG93
RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgogICAgIGNhc2UgU2VsZWN0OgorICAg
IGNhc2UgRGVwZW5kOgogICAgICAgICBicmVhazsKICAgICBjYXNlIERpdjoKICAgICBjYXNlIFVE
aXY6CkBAIC02MDAsMTYgKzYwMyw0NCBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QK
ICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIExvYWQxNlo6CiAgICAgY2FzZSBMb2FkMTZTOgot
ICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmVzdWx0LnJlYWRzID0gYXM8TWVtb3J5VmFsdWU+KCkt
PnJhbmdlKCk7CisgICAgY2FzZSBMb2FkOiB7CisgICAgICAgIGNvbnN0IE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5
LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAg
ICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5mZW5jZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1
bHQuZmVuY2UgPSB0cnVlOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5k
ZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgU3RvcmU4OgogICAg
IGNhc2UgU3RvcmUxNjoKLSAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXN1bHQud3JpdGVzID0g
YXM8TWVtb3J5VmFsdWU+KCktPnJhbmdlKCk7CisgICAgY2FzZSBTdG9yZTogeworICAgICAgICBj
b25zdCBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJl
c3VsdC53cml0ZXMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0Zl
bmNlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgp
OworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2Fz
ZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21p
Y1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9y
OgorICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICBjb25zdCBBdG9taWNWYWx1ZSogYXRv
bWljID0gYXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IGF0b21pYy0+
cmFuZ2UoKSB8IGF0b21pYy0+ZmVuY2VSYW5nZSgpOworICAgICAgICByZXN1bHQud3JpdGVzID0g
YXRvbWljLT5yYW5nZSgpIHwgYXRvbWljLT5mZW5jZVJhbmdlKCk7CisgICAgICAgIGlmIChhdG9t
aWMtPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAg
ICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVl
OwogICAgICAgICBicmVhazsKQEAgLTYxNywxOCArNjQ4LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZm
ZWN0cygpIGNvbnN0CiAgICAgICAgIGNvbnN0IEZlbmNlVmFsdWUqIGZlbmNlID0gYXM8RmVuY2VW
YWx1ZT4oKTsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gZmVuY2UtPnJlYWQ7CiAgICAgICAgIHJl
c3VsdC53cml0ZXMgPSBmZW5jZS0+d3JpdGU7Ci0gICAgICAgIAotICAgICAgICAvLyBQcmV2ZW50
IGtpbGxpbmcgb2YgZmVuY2VzIHRoYXQgY2xhaW0gbm90IHRvIHdyaXRlIGFueXRoaW5nLiBJdCdz
IGEgYml0IHdlaXJkIHRoYXQgd2UgdXNlCi0gICAgICAgIC8vIGxvY2FsIHN0YXRlIGFzIHRoZSB3
YXkgdG8gZG8gdGhpcywgYnV0IGl0IGhhcHBlbnMgdG8gd29yazogd2UgbXVzdCBhc3N1bWUgdGhh
dCB3ZSBjYW5ub3QKLSAgICAgICAgLy8ga2lsbCB3cml0ZXNMb2NhbFN0YXRlIHVubGVzcyB3ZSB1
bmRlcnN0YW5kcyBleGFjdGx5IHdoYXQgdGhlIGluc3RydWN0aW9uIGlzIGRvaW5nIChsaWtlCi0g
ICAgICAgIC8vIHRoZSB3YXkgdGhhdCBmaXhTU0EgdW5kZXJzdGFuZHMgU2V0L0dldCBhbmQgdGhl
IHdheSB0aGF0IHJlZHVjZVN0cmVuZ3RoIGFuZCBvdGhlcnMKLSAgICAgICAgLy8gdW5kZXJzdGFu
ZCBVcHNpbG9uKS4gVGhpcyB3b3VsZCBvbmx5IGJlY29tZSBhIHByb2JsZW0gaWYgd2UgaGFkIHNv
bWUgYW5hbHlzaXMgdGhhdCB3YXMKLSAgICAgICAgLy8gbG9va2luZyB0byB1c2UgdGhlIHdyaXRl
c0xvY2FsU3RhdGUgYml0IHRvIGludmFsaWRhdGUgYSBDU0Ugb3ZlciBsb2NhbCBzdGF0ZSBvcGVy
YXRpb25zLgotICAgICAgICAvLyBUaGVuIGEgRmVuY2Ugd291bGQgbG9vayBibG9jaywgc2F5LCB0
aGUgZWxpbWluYXRpb24gb2YgYSByZWR1bmRhbnQgR2V0LiBCdXQgaXQgbGlrZQotICAgICAgICAv
LyB0aGF0J3Mgbm90IGF0IGFsbCBob3cgb3VyIG9wdGltaXphdGlvbnMgZm9yIFNldC9HZXQvVXBz
aWxvbi9QaGkgd29yayAtIHRoZXkgZ3JvayB0aGVpcgotICAgICAgICAvLyBvcGVyYXRpb25zIGRl
ZXBseSBlbm91Z2ggdGhhdCB0aGV5IGhhdmUgbm8gbmVlZCB0byBjaGVjayB0aGlzIGJpdCAtIHNv
IHRoaXMgY2hlYXQgaXMKLSAgICAgICAgLy8gZmluZS4KLSAgICAgICAgcmVzdWx0LndyaXRlc0xv
Y2FsU3RhdGUgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBDQ2FsbDoKQEAgLTY5NCw2ICs3MTQsNyBAQCBWYWx1ZUtl
eSBWYWx1ZTo6a2V5KCkgY29uc3QKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQml0d2lzZUNh
c3Q6CiAgICAgY2FzZSBOZWc6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIHJldHVybiBWYWx1
ZUtleShraW5kKCksIHR5cGUoKSwgY2hpbGQoMCkpOwogICAgIGNhc2UgQWRkOgogICAgIGNhc2Ug
U3ViOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw2ICs2OCwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKS5vcGNvZGUoKTsgfQogICAgIAorICAgIC8vIE5vdGUgdGhhdCB0aGUg
a2luZCBpcyBtZWFudCB0byBiZSBpbW11dGFibGUuIERvIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0
IHRoaXMgaXMgc2FmZS4gSXQncyBub3QKKyAgICAvLyB1c3VhbGx5IHNhZmUuCisgICAgdm9pZCBz
ZXRLaW5kVW5zYWZlbHkoS2luZCBraW5kKSB7IG1fa2luZCA9IGtpbmQ7IH0KKyAgICAKICAgICAv
LyBJdCdzIGdvb2QgcHJhY3RpY2UgdG8gbWlycm9yIEtpbmQgbWV0aG9kcyBoZXJlLCBzbyB5b3Ug
Y2FuIHNheSB2YWx1ZS0+aXNCbGFoKCkKICAgICAvLyBpbnN0ZWFkIG9mIHZhbHVlLT5raW5kKCku
aXNCbGFoKCkuCiAgICAgYm9vbCBpc0NoaWxsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLmlzQ2hp
bGwoKTsgfQpAQCAtMTA3LDYgKzExMSw4IEBAIHB1YmxpYzoKICAgICAvLyB2YWx1ZXMgd2l0aCBJ
ZGVudGl0aWVzIG9uIGJvdHRvbSBjb25zdGFudHMuIEZvciB0aGlzIHJlYXNvbiwgdGhpcyB0YWtl
cyBhIGNhbGxiYWNrIHRoYXQgaXMKICAgICAvLyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYm90
dG9tcy4gVGhlcmUncyBhIHV0aWxpdHkgZm9yIHRoaXMsIHNlZSBCM0JvdHRvbVByb3ZpZGVyLmgu
IFlvdQogICAgIC8vIGNhbiBhbHNvIGFjY2VzcyB0aGF0IHV0aWxpdHkgdXNpbmcgcmVwbGFjZVdp
dGhCb3R0b20oSW5zZXJ0aW9uU2V0Jiwgc2l6ZV90KS4KKyAgICAvLworICAgIC8vIFlvdSdyZSBn
dWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQm90
dG9tUHJvdmlkZXI+CiAgICAgdm9pZCByZXBsYWNlV2l0aEJvdHRvbShjb25zdCBCb3R0b21Qcm92
aWRlciYpOwogICAgIApAQCAtMzIxLDYgKzMyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
SVRvRjoKICAgICAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgY2FzZSBCcmFuY2g6Cisg
ICAgICAgIGNhc2UgRGVwZW5kOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgIT0g
MSkpCiAgICAgICAgICAgICAgICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsKICAgICAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkocmV2aXNpb24g
MjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCwzOCBAQAogCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CiAKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitUeXBlIGJlc3RUeXBlKEJhbmsg
YmFuaywgV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lk
dGg4OgorICAgIGNhc2UgV2lkdGgxNjoKKyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHN3aXRj
aCAoYmFuaykgeworICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDMyOwor
ICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIEZsb2F0OworICAgICAgICB9Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lk
OworICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNh
c2UgR1A6CisgICAgICAgICAgICByZXR1cm4gSW50NjQ7CisgICAgICAgIGNhc2UgRlA6CisgICAg
ICAgICAgICByZXR1cm4gRG91YmxlOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lkOworICAgIH0KKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBWb2lkOworfQorCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKKwogbmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkIzOjpXaWR0aCB3aWR0aCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzV2lkdGguaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzV2lkdGguaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTggQEAgaW5saW5l
IFdpZHRoIHdpZHRoRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKK2lubGluZSBXaWR0aCBjYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICBy
ZXR1cm4gc3RkOjptYXgoV2lkdGgzMiwgd2lkdGgpOworfQorCitpbmxpbmUgYm9vbCBpc0Nhbm9u
aWNhbFdpZHRoKFdpZHRoIHdpZHRoKQoreworICAgIHJldHVybiB3aWR0aCA+PSBXaWR0aDMyOwor
fQorCitUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpOworCiBpbmxpbmUgV2lk
dGggY29uc2VydmF0aXZlV2lkdGgoQmFuayBiYW5rKQogewogICAgIHJldHVybiBiYW5rID09IEdQ
ID8gcG9pbnRlcldpZHRoKCkgOiBXaWR0aDY0OwpAQCAtOTMsNiArMTA1LDIwIEBAIGlubGluZSBX
aWR0aCB3aWR0aEZvckJ5dGVzKHVuc2lnbmVkIGJ5dGUKICAgICB9CiB9CiAKK2lubGluZSB1aW50
NjRfdCBtYXNrKFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNl
IFdpZHRoODoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAwMDBmZmxsdTsKKyAgICBjYXNl
IFdpZHRoMTY6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMGZmZmZsbHU7CisgICAgY2Fz
ZSBXaWR0aDMyOgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMGZmZmZmZmZmbGx1OworICAgIGNh
c2UgV2lkdGg2NDoKKyAgICAgICAgcmV0dXJuIDB4ZmZmZmZmZmZmZmZmZmZmZmxsdTsKKyAgICB9
Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkFpclZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlLmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisj
aW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMu
aCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgi
CkBAIC00NCw2ICs0NSw3IEBACiAjaW5jbHVkZSAiQjNNYXRoRXh0cmFzLmgiCiAjaW5jbHVkZSAi
QjNNZW1vcnlWYWx1ZS5oIgogI2luY2x1ZGUgIkIzTW92ZUNvbnN0YW50cy5oIgorI2luY2x1ZGUg
IkIzTmF0aXZlVHJhaXRzLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlICJC
M1JlZHVjZVN0cmVuZ3RoLmgiCiAjaW5jbHVkZSAiQjNTbG90QmFzZVZhbHVlLmgiCkBAIC0xMzc5
MSw3ICsxMzc5Myw3IEBAIHZvaWQgdGVzdFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCiAgICAg
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpOwogICAgIHVuc2lnbmVkIHN0b3JlQ291bnQgPSAwOwog
ICAgIGZvciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoTWVt
b3J5VmFsdWU6OmlzU3RvcmUodmFsdWUtPm9wY29kZSgpKSkKKyAgICAgICAgaWYgKGlzU3RvcmUo
dmFsdWUtPm9wY29kZSgpKSkKICAgICAgICAgICAgIHN0b3JlQ291bnQrKzsKICAgICB9CiAgICAg
Q0hFQ0tfRVEoc3RvcmVDb3VudCwgMnUpOwpAQCAtMTQyNzcsNiArMTQyNzksMTAzIEBAIHZvaWQg
dGVzdE9wdGltaXplTWF0ZXJpYWxpemF0aW9uKCkKICAgICBDSEVDSyhmb3VuZCk7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RBdG9taWNXZWFrQ0FTKCkKK3sKKyAgICBUeXBl
IHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVU
cmFpdHM8VD46OndpZHRoOworICAgIAorICAgIGF1dG8gY2hlY2tEaXNhc3NlbWJseSA9IFsmXSAo
Q29tcGlsYXRpb24mIGNvbXBpbGF0aW9uKSB7CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsKKyAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAiY21weGNoZyIpOworICAg
ICAgICB9CisgICAgfTsKKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Js
b2NrKiByZWxvb3AgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGRvbmUg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9y
aWdpbigpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhyZWxvb3ApOworICAgICAgICAK
KyAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJh
bmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgs
CisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQo
cHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyKSk7Cisg
ICAgICAgIHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25lLCByZWxvb3ApOworICAgICAgICAKKyAg
ICAgICAgZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAg
ICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNr
RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlID0gNDI7CisgICAgICAgIGludm9r
ZTx2b2lkPigqY29kZSwgJnZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWUsIHN0YXRpY19j
YXN0PFQ+KDB4YmVlZikpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2Nr
KiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9y
aWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZElu
dENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAg
IHB0cikpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHN1Y2MsIGZhaWwpOworICAgICAg
ICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAg
ICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUo
cHJvYyk7CisgICAgICAgIGNoZWNrRGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVl
ID0gNDI7CisgICAgICAgIHdoaWxlICh2YWx1ZSA9PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2
b2lkPigqY29kZSwgJnZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWUsIHN0YXRpY19jYXN0
PFQ+KDEwMCkpOworICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAg
IGludm9rZTx2b2lkPigqY29kZSwgJnZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWUsIHN0
YXRpY19jYXN0PFQ+KDMwMCkpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0
MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAg
ICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNrRGlz
YXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlID0gNDI7CisgICAgICAgIHdoaWxlICgh
aW52b2tlPGJvb2w+KCpjb2RlLCAmdmFsdWUpKSB7IH0KKyAgICAgICAgCisgICAgICAgIHZhbHVl
ID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0soIWludm9rZTxib29sPigqY29k
ZSwgJnZhbHVlKSk7CisgICAgfQorfQorCiB2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWdu
ZWQgb2Zmc2V0KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTQzNzAsNiArMTQ0NjksMTMg
QEAgZG91YmxlIG5lZ2F0aXZlWmVybygpCiAgICAgcmV0dXJuIC16ZXJvKCk7CiB9CiAKKyNkZWZp
bmUgUlVOX05PVyh0ZXN0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYg
KCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGJyZWFr
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAi
Li4uXG4iKTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGVzdDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiOiBPSyFcbiIpOyAg
ICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKICNkZWZpbmUgUlVOKHRlc3QpIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rl
c3QpKSAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKQEAgLTE0NDIxLDkgKzE0NTI3LDcgQEAgdm9pZCBydW4oY29uc3Qg
Y2hhciogZmlsdGVyKQogICAgICAgICByZXR1cm4gIWZpbHRlciB8fCAhIXN0cmNhc2VzdHIodGVz
dE5hbWUsIGZpbHRlcik7CiAgICAgfTsKIAotICAgIC8vIFdlIHJ1biB0aGlzIHRlc3QgZmlyc3Qg
YmVjYXVzZSBpdCBmaWRkbGVzIHdpdGggc29tZQotICAgIC8vIEpTQyBvcHRpb25zLgotICAgIHRl
c3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZDIoKTsKKyAgICBSVU5fTk9X
KHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZDIoKSk7CiAKICAgICBS
VU4odGVzdDQyKCkpOwogICAgIFJVTih0ZXN0TG9hZDQyKCkpOwpAQCAtMTU4MzEsNiArMTU5MzUs
MTEgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0TG9hZEJhc2VJ
bmRleFNoaWZ0MigpKTsKICAgICBSVU4odGVzdExvYWRCYXNlSW5kZXhTaGlmdDMyKCkpOwogICAg
IFJVTih0ZXN0T3B0aW1pemVNYXRlcmlhbGl6YXRpb24oKSk7CisgICAgCisgICAgUlVOKHRlc3RB
dG9taWNXZWFrQ0FTPGludDhfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDE2
X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxpbnQzMl90PigpKTsKKyAgICBSVU4o
dGVzdEF0b21pY1dlYWtDQVM8aW50NjRfdD4oKSk7CiAKICAgICBSVU4odGVzdFdhc21Cb3VuZHND
aGVjaygwKSk7CiAgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soMTAwKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMiw2ICsxMDIsNyBAQCB1bnNpZ25lZCBBcmc6OmpzSGFzaCgpIGNvbnN0CiAgICAgY2FzZSBS
ZWxDb25kOgogICAgIGNhc2UgUmVzQ29uZDoKICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgY2Fz
ZSBTdGF0dXNDb25kOgogICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgIHJlc3VsdCArPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpOwogICAgICAgICBicmVhazsKQEAgLTE4Miw2ICsx
ODMsOSBAQCB2b2lkIEFyZzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIGNhc2Ug
RG91YmxlQ29uZDoKICAgICAgICAgb3V0LnByaW50KGFzRG91YmxlQ29uZGl0aW9uKCkpOwogICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0dXNDb25kOgorICAgICAgICBvdXQucHJpbnQoYXNT
dGF0dXNDb25kaXRpb24oKSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFNwZWNpYWw6CiAg
ICAgICAgIG91dC5wcmludChwb2ludGVyRHVtcChzcGVjaWFsKCkpKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMjQxLDYgKzI0NSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBBcmcKICAgICBjYXNlIEFyZzo6RG91YmxlQ29uZDoKICAgICAgICAgb3V0LnByaW50KCJEb3Vi
bGVDb25kIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6U3RhdHVzQ29uZDoKKyAg
ICAgICAgb3V0LnByaW50KCJTdGF0dXNDb25kIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNl
IEFyZzo6U3BlY2lhbDoKICAgICAgICAgb3V0LnByaW50KCJTcGVjaWFsIik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTI4NSw2ICsyOTIsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgogICAgICAgICBvdXQucHJpbnQoIkVh
cmx5RGVmIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgorICAg
ICAgICBvdXQucHJpbnQoIkVhcmx5WkRlZiIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBB
cmc6OlNjcmF0Y2g6CiAgICAgICAgIG91dC5wcmludCgiU2NyYXRjaCIpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgICAgICBSZWxDb25kLAogICAgICAg
ICBSZXNDb25kLAogICAgICAgICBEb3VibGVDb25kLAorICAgICAgICBTdGF0dXNDb25kLAogICAg
ICAgICBTcGVjaWFsLAogICAgICAgICBXaWR0aEFyZwogICAgIH07CkBAIC0xNTEsNiArMTUyLDgg
QEAgcHVibGljOgogICAgICAgICAvLyBhcyBVc2UgaGFzIHVuZGVmaW5lZCBiZWhhdmlvcjogdGhl
IHVzZSBtYXkgaGFwcGVuIGJlZm9yZSB0aGUgZGVmLCBvciBpdCBtYXkgaGFwcGVuIGFmdGVyCiAg
ICAgICAgIC8vIGl0LgogICAgICAgICBFYXJseURlZiwKKyAgICAgICAgICAgIAorICAgICAgICBF
YXJseVpEZWYsCiAKICAgICAgICAgLy8gU29tZSBpbnN0cnVjdGlvbnMgbmVlZCBhIHNjcmF0Y2gg
cmVnaXN0ZXIuIFdlIG1vZGVsIHRoaXMgYnkgc2F5aW5nIHRoYXQgdGhlIHRlbXBvcmFyeSBpcwog
ICAgICAgICAvLyBkZWZpbmVkIGVhcmx5IGFuZCB1c2VkIGxhdGUuIFRoaXMgcm9sZSBpbXBsaWVz
IHRoYXQuCkBAIC0xODYsNiArMTg5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFpEZWY6CiAg
ICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2Fz
ZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMDYsNiArMjEwLDcgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBF
YXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMjgsNiAr
MjMzLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgU2Ny
YXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAg
ICAgICAgICAgICByZXR1cm4gcm9sZTsKICAgICAgICAgY2FzZSBVc2U6CiAgICAgICAgICAgICBy
ZXR1cm4gQ29sZFVzZTsKQEAgLTI1Myw2ICsyNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
TGF0ZUNvbGRVc2U6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBFYXJseURl
ZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNzQsNiArMjgxLDcg
QEAgcHVibGljOgogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAg
ICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0yOTQsNiArMzAyLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAg
IGNhc2UgVXNlWkRlZjoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJs
eVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CkBAIC0zMTUsNiArMzI0LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIExhdGVD
b2xkVXNlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIEVhcmx5RGVm
OgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMzMCw2ICszNDAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBMYXRlVXNlOgogICAgICAgICBj
YXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgY2FzZSBTY3Jh
dGNoOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzU4LDYgKzM2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZVpEZWY6CisgICAgICAgIGNhc2Ug
RWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MzMsNiArNTQ1LDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgQXJnIHN0YXR1c0NvbmQoTWFj
cm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisgICAgeworICAgICAgICBB
cmcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gU3RhdHVzQ29uZDsKKyAgICAgICAg
cmVzdWx0Lm1fb2Zmc2V0ID0gY29uZGl0aW9uOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKwogICAgIHN0YXRpYyBBcmcgc3BlY2lhbChBaXI6OlNwZWNpYWwqIHNwZWNpYWwpCiAgICAg
ewogICAgICAgICBBcmcgcmVzdWx0OwpAQCAtNjU4LDEyICs2NzgsMTggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4ga2luZCgpID09IERvdWJsZUNvbmQ7CiAgICAgfQogCisgICAgYm9vbCBpc1N0
YXR1c0NvbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBTdGF0dXND
b25kOworICAgIH0KKwogICAgIGJvb2wgaXNDb25kaXRpb24oKSBjb25zdAogICAgIHsKICAgICAg
ICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNl
IFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXND
b25kOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC04NTEsNiArODc3LDcgQEAgcHVibGljOgogICAgICAgICBj
YXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVD
b25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2UgU3BlY2lhbDoKICAg
ICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODcyLDYg
Kzg5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJl
c0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25k
OgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAg
IGNhc2UgSW52YWxpZDoKQEAgLTEwNTgsNiArMTA4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgY2Fz
ZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29u
ZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAg
ICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNzcsNiAr
MTIwNiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2Vt
Ymxlcjo6RG91YmxlQ29uZGl0aW9uPihtX29mZnNldCk7CiAgICAgfQogICAgIAorICAgIE1hY3Jv
QXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gYXNTdGF0dXNDb25kaXRpb24oKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzU3RhdHVzQ29uZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24+KG1fb2Zmc2V0KTsKKyAgICB9
CisgICAgCiAgICAgLy8gVGVsbHMgeW91IGlmIHRoZSBBcmcgaXMgaW52ZXJ0aWJsZS4gT25seSBj
b25kaXRpb24gYXJndW1lbnRzIGFyZSBpbnZlcnRpYmxlLCBhbmQgZXZlbiBmb3IgdGhvc2UsIHRo
ZXJlCiAgICAgLy8gYXJlIGEgZmV3IGV4Y2VwdGlvbnMgLSBub3RhYmx5IE92ZXJmbG93IGFuZCBT
aWduZWQuCiAgICAgYm9vbCBpc0ludmVydGlibGUoKSBjb25zdApAQCAtMTE4NCw2ICsxMjE5LDcg
QEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAgICAgICBjYXNlIFJlbENv
bmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAg
ICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6aXNJbnZlcnRpYmxlKGFzUmVzdWx0Q29uZGl0aW9u
KCkpOwpAQCAtMTIwNCw2ICsxMjQwLDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHJl
c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1Jlc3VsdENvbmRpdGlvbigpKSk7CiAgICAg
ICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgICAgIHJldHVybiBkb3VibGVDb25kKE1hY3Jv
QXNzZW1ibGVyOjppbnZlcnQoYXNEb3VibGVDb25kaXRpb24oKSkpOworICAgICAgICBjYXNlIFN0
YXR1c0NvbmQ6CisgICAgICAgICAgICByZXR1cm4gc3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6
aW52ZXJ0KGFzU3RhdHVzQ29uZGl0aW9uKCkpKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gQXJn
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9j
ay5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNiArMzUsMTkgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogCiBjb25zdCBjaGFyKiBjb25zdCBCYXNp
Y0Jsb2NrOjpkdW1wUHJlZml4ID0gIiMiOwogCit2b2lkIEJhc2ljQmxvY2s6OnNldFN1Y2Nlc3Nv
cnMoRnJlcXVlbnRlZEJsb2NrIHRhcmdldCkKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVzaXplKDEp
OworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRhcmdldDsKK30KKwordm9pZCBCYXNpY0Jsb2NrOjpz
ZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YWtlbiwgRnJlcXVlbnRlZEJsb2NrIG5vdFRh
a2VuKQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMik7CisgICAgbV9zdWNjZXNzb3JzWzBd
ID0gdGFrZW47CisgICAgbV9zdWNjZXNzb3JzWzFdID0gbm90VGFrZW47Cit9CisKIGJvb2wgQmFz
aWNCbG9jazo6YWRkUHJlZGVjZXNzb3IoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgcmV0dXJu
IEIzOjphZGRQcmVkZWNlc3Nvcih0aGlzLCBibG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMyw3ICszMywxMSBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OworCituYW1lc3BhY2Ug
QWlyIHsKIAogY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiBjbGFzcyBDb2RlOwpAQCAtOTksNiAr
MTAzLDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3NvcnMoKSBj
b25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KICAgICBTdWNjZXNzb3JMaXN0JiBzdWNjZXNz
b3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAKKyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMo
RnJlcXVlbnRlZEJsb2NrKTsKKyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2Nr
LCBGcmVxdWVudGVkQmxvY2spOworCiAgICAgQmFzaWNCbG9jayogc3VjY2Vzc29yQmxvY2sodW5z
aWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQog
ICAgIEJhc2ljQmxvY2sqJiBzdWNjZXNzb3JCbG9jayh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4g
c3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAgU3VjY2Vzc29yQ29sbGVjdGlvbjxCYXNp
Y0Jsb2NrLCBTdWNjZXNzb3JMaXN0PiBzdWNjZXNzb3JCbG9ja3MoKQpAQCAtMTMzLDYgKzE0MCw3
IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogICAgIGZy
aWVuZCBjbGFzcyBDb2RlOwogICAgIGZyaWVuZCBjbGFzcyBJbnNlcnRpb25TZXQ7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBCMzo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0
OwogICAgIAogICAgIEJhc2ljQmxvY2sodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9u
U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJs
b2NrSW5zZXJ0aW9uU2V0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBaXJCbG9ja0luc2VydGlvblNldC5oIgor
CisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckJhc2ljQmxvY2suaCIKKyNpbmNs
dWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCitCbG9ja0luc2VydGlvblNl
dDo6QmxvY2tJbnNlcnRpb25TZXQoQ29kZSAmY29kZSkKKyAgICA6IEdlbmVyaWNCbG9ja0luc2Vy
dGlvblNldChjb2RlLm1fYmxvY2tzKQoreworfQorCitCbG9ja0luc2VydGlvblNldDo6fkJsb2Nr
SW5zZXJ0aW9uU2V0KCkKK3sKK30KKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgor
CisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisK
KyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkFpckNv
ZGUuaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK2Ns
YXNzIEluc2VydGlvblNldDsKKwordHlwZWRlZiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFz
aWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5zZXJ0aW9uOworCitjbGFzcyBCbG9ja0lu
c2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4g
eworcHVibGljOgorICAgIEJsb2NrSW5zZXJ0aW9uU2V0KENvZGUmKTsKKyAgICB+QmxvY2tJbnNl
cnRpb25TZXQoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGV2ZW50dWFsbHkgaW1w
bGVtZW50IEIzOjpCbG9ja0luc2VydGlvblNldCdzIHNwbGl0Rm9yd2FyZCgpLgorfTsKKworfSB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuY3BwCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBB
c0pTLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkFpckR1bXBBc0pTLmgiCi0KLSNpZiBFTkFCTEUoQjNfSklUKQotCi0jaW5jbHVk
ZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKLQotbmFtZXNwYWNlIHsKLQotQ1N0
cmluZyB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVy
biB0b0NTdHJpbmcoImJiIiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZhck5hbWUoQmFzaWNCbG9j
ayogYmxvY2spCi17Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JCbG9ja0F0SW5kZXgoYmxvY2stPmlu
ZGV4KCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWVGb3JTdGFja1Nsb3RBdEluZGV4KHVuc2lnbmVk
IGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoInNsb3QiLCBpbmRleCk7Ci19Ci0KLUNT
dHJpbmcgdmFyTmFtZShTdGFja1Nsb3QqIHNsb3QpCi17Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JT
dGFja1Nsb3RBdEluZGV4KHNsb3QtPmluZGV4KCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWUoUmVn
IHJlZykKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJSZWcuIiwgcmVnLmRlYnVnTmFtZSgpKTsK
LX0KLQotQ1N0cmluZyB2YXJOYW1lRm9yVG1wV2l0aEJhbmtBbmRJbmRleChCYW5rIGJhbmssIHVu
c2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoYmFuayA9PSBGUCA/ICJmIiA6
ICIiLCAidG1wIiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZhck5hbWUoVG1wIHRtcCkKLXsKLSAg
ICBpZiAodG1wLmlzUmVnKCkpCi0gICAgICAgIHJldHVybiB2YXJOYW1lKHRtcC5yZWcoKSk7Ci0g
ICAgcmV0dXJuIHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZEluZGV4KEFyZyh0bXApLmJhbmsoKSwg
dG1wLnRtcEluZGV4KCkpOwotfQotCi19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotdm9pZCBk
dW1wQXNKUyhDb2RlJiBjb2RlLCBQcmludFN0cmVhbSYgb3V0KQotewotICAgIG91dC5wcmludGxu
KCJsZXQgY29kZSA9IG5ldyBDb2RlKCk7Iik7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNvZGUuc2l6ZSgpOyArK2kpCi0gICAgICAgIG91dC5wcmludGxuKCJsZXQgIiwgdmFy
TmFtZUZvckJsb2NrQXRJbmRleChpKSwgIiA9IGNvZGUuYWRkQmxvY2soKTsiKTsKLSAgICAKLSAg
ICBvdXQucHJpbnRsbigibGV0IGhhc2g7Iik7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY29kZS5zdGFja1Nsb3RzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgU3RhY2tTbG90KiBz
bG90ID0gY29kZS5zdGFja1Nsb3RzKClbaV07Ci0gICAgICAgIGlmIChzbG90KSB7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZhck5hbWUoc2xvdCksICIgPSBjb2RlLmFkZFN0YWNr
U2xvdCgiLCBzbG90LT5ieXRlU2l6ZSgpLCAiLCAiLCBzbG90LT5raW5kKCksICIpOyIpOwotICAg
ICAgICAgICAgaWYgKHNsb3QtPm9mZnNldEZyb21GUCgpKQotICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKHZhck5hbWUoc2xvdCksICIuc2V0T2Zmc2V0RnJvbUZQKCIsIHNsb3QtPm9mZnNldEZy
b21GUCgpLCAiKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJoYXNoID0gIiwgdmFyTmFt
ZShzbG90KSwgIi5oYXNoKCk7Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiaWYgKGhhc2gg
IT0gIiwgc2xvdC0+anNIYXNoKCksICIpIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiICAg
IHRocm93IG5ldyBFcnJvcihcIkJhZCBoYXNoOiBcIiArIGhhc2gpOyIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJjb2RlLmFkZFN0YWNrU2xvdCgxLCBTcGlsbCk7
Iik7Ci0gICAgfQotICAgIAotICAgIGZvckVhY2hCYW5rKAotICAgICAgICBbJl0gKEJhbmsgYmFu
aykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZS5udW1UbXBzKGJhbmspOyBp
LS07KSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAg
ICJsZXQgIiwgdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5kSW5kZXgoYmFuaywgaSksICIgPSBjb2Rl
Lm5ld1RtcCgiLCBiYW5rLCAiKTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAg
Ci0gICAgb3V0LnByaW50bG4oImxldCBpbnN0OyIpOwotICAgIG91dC5wcmludGxuKCJsZXQgYXJn
OyIpOwotICAgIAotICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBjb2RlKSB7Ci0gICAgICAg
IGZvciAoRnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsK
LSAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgIHZhck5hbWUoYmxvY2sp
LCAiLnN1Y2Nlc3NvcnMucHVzaChuZXcgRnJlcXVlbnRlZEJsb2NrKCIsCi0gICAgICAgICAgICAg
ICAgdmFyTmFtZShzdWNjZXNzb3IuYmxvY2soKSksICIsICIsIHN1Y2Nlc3Nvci5mcmVxdWVuY3ko
KSwgIikpOyIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycygpKQotICAgICAgICAgICAgb3V0LnBy
aW50bG4odmFyTmFtZShibG9jayksICIucHJlZGVjZXNzb3JzLnB1c2goIiwgdmFyTmFtZShwcmVk
ZWNlc3NvciksICIpOyIpOwotICAgICAgICAKLSAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJs
b2NrKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZG8gc29tZXRoaW5nIGZv
ciBmbGFncy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjI3NTEKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0ID0gbmV3IEluc3Qo
IiwgaW5zdC5raW5kLm9wY29kZSwgIik7Iik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlu
c3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUs
IEJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYXJnLmtpbmQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6SW52YWxpZDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFyZzo6VG1wOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
ImFyZyA9IEFyZy5jcmVhdGVUbXAoIiwgdmFyTmFtZShhcmcudG1wKCkpLCAiKTsiKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbW06Ci0gICAgICAgICAgICAgICAgICAgICAgICBv
dXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUltbSgiLCBhcmcudmFsdWUoKSwgIik7Iik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6QmlnSW1tOgotICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFy
Zy5jcmVhdGVCaWdJbW0oIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQzMl90PihhcmcudmFsdWUoKSksICIsICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkgPj4gMzIpLCAiKTsiKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaXRJbW06Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUJpdEltbSgiLCBhcmcudmFsdWUoKSwgIik7
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6Qml0SW1tNjQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
YXJnID0gQXJnLmNyZWF0ZUJpdEltbTY0KCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkpLCAiLCAiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52YWx1ZSgpID4+IDMyKSwgIik7
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6QWRkcjoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcg
PSBBcmcuY3JlYXRlQWRkcigiLCB2YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAiLCBhcmcub2Zmc2V0
KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlN0YWNrOgotICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImFyZyA9IEFyZy5jcmVhdGVTdGFjaygiLCB2YXJOYW1lKGFyZy5zdGFja1Nsb3QoKSksICIs
ICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
Q2FsbEFyZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcu
Y3JlYXRlQ2FsbEFyZygiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkluZGV4OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVJbmRleCgiLCB2
YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ck5hbWUoYXJnLmluZGV4KCkpLCAiLCAiLCBhcmcuc2NhbGUoKSwgIiwgIiwgYXJnLm9mZnNldCgp
LCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpSZWxDb25kOgotICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVSZWxDb25kKCIs
IGFyZy5hc1JlbGF0aW9uYWxDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFyZzo6UmVzQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxu
KCJhcmcgPSBBcmcuY3JlYXRlUmVzQ29uZCgiLCBhcmcuYXNSZXN1bHRDb25kaXRpb24oKSwgIik7
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RG91YmxlQ29uZDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlRG91YmxlQ29uZCgi
LCBhcmcuYXNEb3VibGVDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6U3BlY2lhbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJh
cmcgPSBBcmcuY3JlYXRlU3BlY2lhbCgpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OldpZHRoQXJnOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9
IEFyZy5jcmVhdGVXaWR0aEFyZygiLCBhcmcud2lkdGgoKSwgIik7Iik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuYXJncy5wdXNoKGFy
Zyk7Iik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
IChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGluc3Qu
aGFzTm9uQXJnRWZmZWN0cygpKQotICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5z
dC5wYXRjaEhhc05vbkFyZ0VmZmVjdHMgPSB0cnVlOyIpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzID0g
bmV3IFNldCgpOyIpOwotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhQ2xv
YmJlcmVkUmVncyA9IG5ldyBTZXQoKTsiKTsKLSAgICAgICAgICAgICAgICBpbnN0LmV4dHJhRWFy
bHlDbG9iYmVyZWRSZWdzKCkuZm9yRWFjaCgKLSAgICAgICAgICAgICAgICAgICAgWyZdIChSZWcg
cmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUVh
cmx5Q2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAiKTsiKTsKLSAgICAgICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgaW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MoKS5m
b3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncy5hZGQoIiwg
dmFyTmFtZShyZWcpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QucGF0Y2hBcmdEYXRhID0g
W107Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAotICAgICAgICAgICAgICAg
ICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5rIGJhbmssIFdpZHRoIHdpZHRoKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaW5zdC5wYXRjaEFyZ0RhdGEucHVzaCh7cm9sZTogQXJnLiIsIHJvbGUsICIs
IHR5cGU6ICIsIGJhbmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgd2lkdGg6ICIs
IHdpZHRoLCAifSk7Iik7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29kZSA9PSBDQ2FsbCB8
fCBpbnN0LmtpbmQub3Bjb2RlID09IENvbGRDQ2FsbCkgewotICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKCJpbnN0LmNDYWxsVHlwZSA9ICIsIGluc3Qub3JpZ2luLT50eXBlKCkpOwotICAgICAg
ICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsQXJnVHlwZXMgPSBbXTsiKTsKLSAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgaW5zdC5vcmlnaW4tPm51bUNoaWxk
cmVuKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuY0NhbGxB
cmdUeXBlcy5wdXNoKCIsIGluc3Qub3JpZ2luLT5jaGlsZChpKS0+dHlwZSgpLCAiKTsiKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgb3V0LnByaW50bG4oImhhc2gg
PSBpbnN0Lmhhc2goKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJpZiAoaGFzaCAhPSAi
LCBpbnN0LmpzSGFzaCgpLCAiKSIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oIiAgICB0aHJv
dyBuZXcgRXJyb3IoXCJCYWQgaGFzaDogXCIgKyBoYXNoKTsiKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayksICIuYXBwZW5kKGluc3QpOyIpOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCi0K
LSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckR1bXBBc0pTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJEdW1wQXNKUy5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Ci0K
LWNsYXNzIENvZGU7Ci0KLS8vIFRoaXMgaXMgdXNlZCBmb3IgYmVuY2htYXJraW5nLiBWYXJpb3Vz
IG9wZXJhdGlvbnMgb24gQWlyIGFyZSBpbnRlcmVzdGluZyBmcm9tIGEgYmVuY2htYXJraW5nCi0v
LyBzdGFuZHBvaW50LiBXZSBjYW4gd3JpdGUgc29tZSBBaXIgcGhhc2VzIGluIEpTIGFuZCB0aGVu
IHVzZSB0aGF0IHRvIGJlbmNobWFyayBKUy4gVGhlIGJlbmNobWFyawotLy8gaXMgY2FsbGVkIEpT
QWlyLCBhbmQgaXQncyBpbiBQZXJmb3JtYW5jZVRlc3RzL0pTQWlyLgotdm9pZCBkdW1wQXNKUyhD
b2RlJiwgUHJpbnRTdHJlYW0mKTsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgot
Ci0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNiBAQAogI2luY2x1ZGUgIkFpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5n
LmgiCiAjaW5jbHVkZSAiQWlyQWxsb2NhdGVTdGFjay5oIgogI2luY2x1ZGUgIkFpckNvZGUuaCIK
LSNpbmNsdWRlICJBaXJEdW1wQXNKUy5oIgogI2luY2x1ZGUgIkFpckVsaW1pbmF0ZURlYWRDb2Rl
LmgiCiAjaW5jbHVkZSAiQWlyRml4T2J2aW91c1NwaWxscy5oIgogI2luY2x1ZGUgIkFpckZpeFBh
cnRpYWxSZWdpc3RlclN0YWxscy5oIgpAQCAtNzMsNiArNzIsOCBAQCB2b2lkIHByZXBhcmVGb3JH
ZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAgICAgIGRhdGFMb2coIkluaXRpYWwgYWlyOlxuIik7
CiAgICAgICAgIGRhdGFMb2coY29kZSk7CiAgICAgfQorICAgIAorICAgIHNpbXBsaWZ5Q0ZHKGNv
ZGUpOwogCiAgICAgbG93ZXJNYWNyb3MoY29kZSk7CiAKQEAgLTEwNywyMyArMTA4LDExIEBAIHZv
aWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAvLyBkb2VzIHRoaW5ncyBs
aWtlIGlkZW50aWZ5IHdoaWNoIGNhbGxlZS1zYXZlcyB3ZSdyZSB1c2luZyBhbmQgc2F2ZXMgdGhl
bS4KICAgICBoYW5kbGVDYWxsZWVTYXZlcyhjb2RlKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6
ZHVtcEFpckFzSlNCZWZvcmVBbGxvY2F0ZVN0YWNrKCkpIHsKLSAgICAgICAgZGF0YUxvZygiRHVt
cGluZyBBaXIgYXMgSlMgYmVmb3JlIGFsbG9jYXRlU3RhY2s6XG4iKTsKLSAgICAgICAgZHVtcEFz
SlMoY29kZSwgV1RGOjpkYXRhRmlsZSgpKTsKLSAgICAgICAgZGF0YUxvZygiQWlyIGhhc2g6ICIs
IGNvZGUuanNIYXNoKCksICJcbiIpOwotICAgIH0KLQogICAgIC8vIFRoaXMgdHVybnMgYWxsIFN0
YWNrIGFuZCBDYWxsQXJnIEFyZ3MgaW50byBBZGRyIGFyZ3MgdGhhdCB1c2UgdGhlIGZyYW1lIHBv
aW50ZXIuIEl0IGRvZXMKICAgICAvLyB0aGlzIGJ5IGZpcnN0LWZpdCBhbGxvY2F0aW5nIHN0YWNr
IHNsb3RzLiBJdCBzaG91bGQgYmUgcHJldHR5IGRhcm4gY2xvc2UgdG8gb3B0aW1hbCwgc28gd2UK
ICAgICAvLyBzaG91bGRuJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGlzIHZlcnkgbXVjaC4KICAg
ICBhbGxvY2F0ZVN0YWNrKGNvZGUpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpkdW1wQWlyQWZ0
ZXJBbGxvY2F0ZVN0YWNrKCkpIHsKLSAgICAgICAgZGF0YUxvZygiRHVtcGluZyBBaXIgYWZ0ZXIg
YWxsb2NhdGVTdGFjazpcbiIpOwotICAgICAgICBkYXRhTG9nKGNvZGUpOwotICAgICAgICBkYXRh
TG9nKCJBaXIgaGFzaDogIiwgY29kZS5qc0hhc2goKSwgIlxuIik7Ci0gICAgfQotCiAgICAgLy8g
SWYgd2UgY29hbGVzY2VkIG1vdmVzIHRoZW4gd2UgY2FuIHVuYnJlYWsgY3JpdGljYWwgZWRnZXMu
IFRoaXMgaXMgdGhlIG1haW4gcmVhc29uIGZvciB0aGlzCiAgICAgLy8gcGhhc2UuCiAgICAgc2lt
cGxpZnlDRkcoY29kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpcklu
c3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJJbnN0SW5saW5lcy5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcs
NjUgQEAgaW5saW5lIGJvb2wgaXNYODZVRGl2NjRWYWxpZChjb25zdCBJbnN0JgogICAgIHJldHVy
biBpc1g4NkRpdkhlbHBlclZhbGlkKGluc3QpOwogfQogCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0
cm9uZ0NBU1ZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4
Nl82NCkKKyAgICBzd2l0Y2ggKGluc3QuYXJncy5zaXplKCkpIHsKKyAgICBjYXNlIDM6CisgICAg
ICAgIHJldHVybiBpbnN0LmFyZ3NbMF0gPT0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICBj
YXNlIDU6CisgICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMV0gPT0gVG1wKFg4NlJlZ2lzdGVyczo6
ZWF4KTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlm
IC8vIENQVShYODYpIHx8IENQVShYODZfNjQpCit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRv
bWljU3Ryb25nQ0FTVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaW5zdC5h
cmdzWzFdID09IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Cit9CisKK2lubGluZSBib29sIGlzQXRv
bWljU3Ryb25nQ0FTOFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRv
bWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25n
Q0FTMTZWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0cm9u
Z0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzMyVmFs
aWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxp
ZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0
IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7
Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTOFZhbGlkKGNvbnN0IElu
c3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5z
dCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTZWYWxpZChjb25z
dCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlk
KGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQo
Y29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNW
YWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVM2NFZh
bGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25n
Q0FTVmFsaWQoaW5zdCk7Cit9CisKIH0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKIAog
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpck9wY29kZS5vcGNvZGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTcsNiAr
MTE3LDcgQEAgQWRkMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIHg4NjogSW1tLCBJbmRleAogICAg
IEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4
ODY6IFRtcCwgQWRkcgogICAgIHg4NjogVG1wLCBJbmRleAogCkBAIC0xMzUsOSArMTM2LDEyIEBA
IHg4NjogQWRkMTYgVTpHOjE2LCBVRDpHOjE2CiA2NDogQWRkNjQgVTpHOjY0LCBVRDpHOjY0CiAg
ICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAg
IEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4
ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogCiA2NDogQWRkNjQgVTpHOjY0LCBV
Okc6NjQsIEQ6Rzo2NAogICAgIEltbSwgVG1wLCBUbXAKQEAgLTE2Niw5ICsxNzAsMTIgQEAgeDg2
OiBBZGRGbG9hdCBVOkY6MzIsIFVEOkY6MzIKIFN1YjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBU
bXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1t
LCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4Njog
VG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAKIGFybTY0OiBTdWIzMiBVOkc6MzIsIFU6
RzozMiwgRDpHOjMyCiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMTc2LDkgKzE4MywxMiBAQCBhcm02
NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIsIEQ6RzozMgogNjQ6IFN1YjY0IFU6Rzo2NCwgVUQ6Rzo2
NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgK
ICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAg
ICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKIAogYXJtNjQ6IFN1YjY0IFU6
Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC0yMDQsOSArMjE0LDEy
IEBAIHg4NjogU3ViRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiBOZWczMiBVWkQ6RzozMgogICAgIFRt
cAogICAgIHg4NjogQWRkcgorICAgIHg4NjogSW5kZXgKIAogNjQ6IE5lZzY0IFVEOkc6NjQKICAg
ICBUbXAKKyAgICB4ODY6IEFkZHIKKyAgICB4ODY6IEluZGV4CiAKIGFybTY0OiBOZWdhdGVEb3Vi
bGUgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcApAQCAtMzMwLDggKzM0MywxMSBAQCBBbmQz
MiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgVG1wCiAgICAg
eDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKICAgICB4ODY6IEFkZHIsIFRtcAor
ICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIElu
ZGV4CiAKIDY0OiBBbmQ2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRt
cApAQCAtMzM5LDcgKzM1NSwxMyBAQCBBbmQzMiBVOkc6MzIsIFVaRDpHOjMyCiAKIHg4Nl82NDog
QW5kNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKLSAgICB4ODY6IEltbSwgVG1wCisg
ICAgSW1tLCBUbXAKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKIAogQW5kRG91
YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00NTksOCAr
NDgxLDExIEBAIE9yMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJ
bW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2
OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAg
IHg4NjogSW1tLCBJbmRleAogCiA2NDogT3I2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAg
VG1wLCBUbXAsIFRtcApAQCAtNDY5LDYgKzQ5NCwxMiBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIK
IDY0OiBPcjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRt
cAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBUbXAs
IEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4Njog
SW5kZXgsIFRtcAogCiBYb3IzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIFRtcCwgVG1w
LCBUbXAKQEAgLTQ4MCw4ICs1MTEsMTEgQEAgWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRt
cCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBU
bXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4
ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogCiA2NDogWG9yNjQgVTpHOjY0LCBV
Okc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ5MCw2ICs1MjQsMTEgQEAgWG9y
MzIgVTpHOjMyLCBVWkQ6RzozMgogNjQ6IFhvcjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwg
VG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEFk
ZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2
OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJbW0sIFRtcAogCiBhcm02NDogTm90MzIgVTpHOjMyLCBa
RDpHOjMyCkBAIC00OTgsMTMgKzUzNywxNSBAQCBhcm02NDogTm90MzIgVTpHOjMyLCBaRDpHOjMy
CiB4ODY6IE5vdDMyIFVaRDpHOjMyCiAgICAgVG1wCiAgICAgQWRkcgorICAgIEluZGV4CiAKIGFy
bTY0OiBOb3Q2NCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wCiAKLXg4NjogTm90NjQgVUQ6
Rzo2NAoreDg2XzY0OiBOb3Q2NCBVRDpHOjY0CiAgICAgVG1wCiAgICAgQWRkcgorICAgIEluZGV4
CiAKIGFybTY0OiBBYnNEb3VibGUgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcApAQCAtNjY4
LDI3ICs3MDksMzgzIEBAIExvYWQ4IFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAg
SW5kZXgsIFRtcAogCitMb2FkQWNxOCBVOkc6OCwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAg
IEluZGV4LCBUbXAKKwogU3RvcmU4IFU6Rzo4LCBEOkc6OAogICAgIFRtcCwgSW5kZXgKICAgICBU
bXAsIEFkZHIKICAgICB4ODY6IEltbSwgSW5kZXgKICAgICB4ODY6IEltbSwgQWRkcgogCitTdG9y
ZVJlbDggVTpHOjgsIEQ6Rzo4CisgICAgVG1wLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIHg4
NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisKIExvYWQ4U2lnbmVkRXh0ZW5kVG8z
MiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFj
cThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5k
ZXgsIFRtcAorCiBMb2FkMTYgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5k
ZXgsIFRtcAogCitMb2FkQWNxMTYgVTpHOjE2LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAg
SW5kZXgsIFRtcAorCiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgogICAg
IEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiBV
Okc6MTYsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIFN0b3JlMTYg
VTpHOjE2LCBEOkc6MTYKICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJ
bW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKworU3RvcmVSZWwxNiBVOkc6MTYsIEQ6Rzox
NgorICAgIFRtcCwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAg
ICB4ODY6IEltbSwgQWRkcgorCitMb2FkQWNxMzIgVTpHOjMyLCBaRDpHOjMyCisgICAgQWRkciwg
VG1wCisgICAgSW5kZXgsIFRtcAorCitTdG9yZVJlbDMyIFU6RzozMiwgWkQ6RzozMgorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1t
LCBJbmRleAorCis2NDogTG9hZEFjcTY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIEFkZHIsIFRtcAor
ICAgIEluZGV4LCBUbXAKKworNjQ6IFN0b3JlUmVsNjQgVTpHOjY0LCBaRDpHOjY0CisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0s
IEluZGV4CisKKyMgVGhlIGZpcnN0IG9wZXJhbmQgaXMgcmF4LgorIyBGSVhNRTogVGhpcyBmb3Jt
dWxhdGlvbiBtZWFucyB0aGF0IHRoZSBib29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGluIGVh
eCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJzCisjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0aGF0
LgoreDg2OiBBdG9taWNTdHJvbmdDQVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4LCBa
RDpHOjgKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0Nv
bmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzE2IFU6Rzoz
MiwgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2LCBaRDpHOjgKKyAgICBTdGF0dXNDb25kLCBUbXAq
LCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAor
Cit4ODY6IEF0b21pY1N0cm9uZ0NBUzMyIFU6RzozMiwgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMy
LCBaRDpHOjgKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1
c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODZfNjQ6IEF0b21pY1N0cm9uZ0NBUzY0
IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0LCBaRDpHOjgKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgs
IFRtcAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzggVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4CisgICAg
VG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N0cm9u
Z0NBUzE2IFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNgorICAgIFRtcCosIFRtcCwgQWRkcgorICAg
IFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdHJvbmdDQVMzMiBVRDpHOjMyLCBVOkc6
MzIsIFVEOkc6MzIKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisK
K3g4Nl82NDogQXRvbWljU3Ryb25nQ0FTNjQgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0CisgICAg
VG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzggVTpHOjMyLCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjggL2JyYW5jaAorICAgIFN0
YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5k
ZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6Rzoz
MiwgVUQ6RzoxNiAvYnJhbmNoCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAg
U3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEJyYW5jaEF0b21pY1N0cm9uZ0NB
UzMyIFU6RzozMiwgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyIC9icmFuY2gKKyAgICBTdGF0dXND
b25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisK
K3g4Nl82NDogQnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQgVTpHOjMyLCBVRDpHOjY0LCBVOkc6NjQs
IFVEOkc6NjQgL2JyYW5jaAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0
YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQ4IFU6Rzo4LCBVRDpH
OjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODY6IEF0b21pY0FkZDE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRk
cgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Njog
QXRvbWljQWRkMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRl
eAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNBZGQ2NCBV
Okc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjggVTpHOjgsIFVEOkc6OAorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogQXRvbWljU3ViMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNT
dWIzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1N1YjY0IFU6Rzo2NCwg
VUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNBbmQxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDMyIFU6
RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljQW5kNjQgVTpHOjY0LCBVRDpHOjY0
CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNPcjggVTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAg
IEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
T3IxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yMzIgVTpHOjMyLCBVRDpH
OjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNPcjY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljWG9yOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRl
eAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYb3IxNiBVOkc6
MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjMyIFU6RzozMiwgVUQ6RzozMgorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4Nl82NDogQXRvbWljWG9yNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNOZWc4IFVEOkc6OAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05lZzE2IFVE
Okc6MTYKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOZWczMiBVRDpHOjMyCisg
ICAgQWRkcgorICAgIEluZGV4CisKK3g4Nl82NDogQXRvbWljTmVnNjQgVUQ6Rzo2NAorICAgIEFk
ZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDggVUQ6Rzo4CisgICAgQWRkcgorICAgIElu
ZGV4CisKK3g4NjogQXRvbWljTm90MTYgVUQ6RzoxNgorICAgIEFkZHIKKyAgICBJbmRleAorCit4
ODY6IEF0b21pY05vdDMyIFVEOkc6MzIKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2XzY0OiBB
dG9taWNOb3Q2NCBVRDpHOjY0CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljWGNo
Z0FkZDggVUQ6Rzo4LCBVRDpHOjgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljWGNoZ0FkZDE2IFVEOkc6MTYsIFVEOkc6MTYKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZ0FkZDMyIFVEOkc6MzIsIFVEOkc6MzIKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljWGNoZ0FkZDY0IFVEOkc6
NjQsIFVEOkc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
WGNoZzggVUQ6Rzo4LCBVRDpHOjgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljWGNoZzE2IFVEOkc6MTYsIFVEOkc6MTYKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogQXRvbWljWGNoZzMyIFVEOkc6MzIsIFVEOkc6MzIKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljWGNoZzY0IFVEOkc6NjQsIFVEOkc6
NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK2FybTY0OiBMb2FkTGluazggVTpH
OjgsIFpEOkc6OAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRM
aW5rQWNxOCBVOkc6OCwgWkQ6Rzo4CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCisj
IFN1cGVyIGNvbmZ1c2luZyBmYWN0OiB0aGlzIHJldHVybnMgMCB0byBtZWFuIHN1Y2Nlc3MsIDEg
dG8gbWVhbiBmYWlsdXJlLgorYXJtNjQ6IFN0b3JlQ29uZDggVTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4
CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3Jl
Q29uZFJlbDggVTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBU
bXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rMTYgVTpHOjE2LCBaRDpHOjE2CisgICAg
QWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmtBY3ExNiBVOkc6MTYs
IFpEOkc6MTYKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNv
bmQxNiBVOkc6MTYsIEQ6RzoxNiwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1w
LCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWwxNiBVOkc6MTYsIEQ6RzoxNiwgRVpE
Okc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBM
b2FkTGluazMyIFU6RzozMiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAK
KworYXJtNjQ6IExvYWRMaW5rQWNxMzIgVTpHOjMyLCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisg
ICAgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kMzIgVTpHOjMyLCBEOkc6MzIsIEVaRDpH
OjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3Rv
cmVDb25kUmVsMzIgVTpHOjMyLCBEOkc6MzIsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAor
ICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbms2NCBVOkc6NjQsIFpEOkc6NjQK
KyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTY0IFU6
Rzo2NCwgWkQ6Rzo2NAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0
b3JlQ29uZDY0IFU6Rzo2NCwgRDpHOjY0LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAg
ICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDY0IFU6Rzo2NCwgRDpHOjY0
LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJt
NjQ6IERlcGVuZDMyIFU6RzozMiwgRDpHOjMyCisgICAgVG1wLCBUbXAKKworYXJtNjQ6IERlcGVu
ZDY0IFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAKIAogQ29tcGFyZTMyIFU6RzozMiwgVTpH
OjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2Nr
T3JkZXIuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzcsNiAr
MTc3LDEwIEBAIHZvaWQgb3B0aW1pemVCbG9ja09yZGVyKENvZGUmIGNvZGUpCiAgICAgICAgIGNh
c2UgQnJhbmNoU3ViNjQ6CiAgICAgICAgIGNhc2UgQnJhbmNoTmVnMzI6CiAgICAgICAgIGNhc2Ug
QnJhbmNoTmVnNjQ6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTODoKKyAgICAg
ICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMxNjoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9t
aWNTdHJvbmdDQVMzMjoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVM2NDoKICAg
ICAgICAgICAgIGlmIChjb2RlLmZpbmROZXh0QmxvY2soYmxvY2spID09IGJsb2NrLT5zdWNjZXNz
b3JCbG9jaygwKSAmJiBicmFuY2guYXJnc1swXS5pc0ludmVydGlibGUoKSkgewogICAgICAgICAg
ICAgICAgIHN0ZDo6c3dhcChibG9jay0+c3VjY2Vzc29yKDApLCBibG9jay0+c3VjY2Vzc29yKDEp
KTsKICAgICAgICAgICAgICAgICBicmFuY2guYXJnc1swXSA9IGJyYW5jaC5hcmdzWzBdLmludmVy
dGVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVy
ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQ
YWRJbnRlcmZlcmVuY2UuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAgdm9pZCBwYWRJbnRlcmZlcmVuY2UoQ29kZSYgY29kZSkKICAgICAgICAgICAg
ICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewogICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHJvbGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6
OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAg
ICAgICAgICAgICAgICAgICAgICAgaGFzRWFybHlEZWYgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlVXNlOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVy
eXRoaW5nLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1
LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkxhdGVDb2xkVXNlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
U2NyYXRjaDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIChSZWcgcmVnIDogY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKGJhbmspKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXRCZWZvcmUuZ2V0KHJlZykgJiYgIXNldEFm
dGVyLmdldChyZWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVy
LnNldChyZWcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2Vu
ZXJhdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bj
b2RlX2dlbmVyYXRvci5yYgkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNCAr
NTEsNDkgQEAgY2xhc3MgQXJnCiAgICAgICAgIEBiYW5rID0gYmFuawogICAgICAgICBAd2lkdGgg
PSB3aWR0aAogICAgIGVuZAotCi0gICAgZGVmIHdpZHRoQ29kZQorICAgIAorICAgIGRlZiBzZWxm
LndpZHRoQ29kZSh3aWR0aCkKICAgICAgICAgaWYgd2lkdGggPT0gIlB0ciIKICAgICAgICAgICAg
ICJwb2ludGVyV2lkdGgoKSIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgIldpZHRoI3t3aWR0
aH0iCiAgICAgICAgIGVuZAogICAgIGVuZAorCisgICAgZGVmIHdpZHRoQ29kZQorICAgICAgICBB
cmcud2lkdGhDb2RlKHdpZHRoKQorICAgIGVuZAorICAgIAorICAgIGRlZiBzZWxmLnJvbGVDb2Rl
KHJvbGUpCisgICAgICAgIGNhc2Ugcm9sZQorICAgICAgICB3aGVuICJVIgorICAgICAgICAgICAg
IlVzZSIKKyAgICAgICAgd2hlbiAiRCIKKyAgICAgICAgICAgICJEZWYiCisgICAgICAgIHdoZW4g
IlpEIgorICAgICAgICAgICAgIlpEZWYiCisgICAgICAgIHdoZW4gIlVEIgorICAgICAgICAgICAg
IlVzZURlZiIKKyAgICAgICAgd2hlbiAiVVpEIgorICAgICAgICAgICAgIlVzZVpEZWYiCisgICAg
ICAgIHdoZW4gIlVBIgorICAgICAgICAgICAgIlVzZUFkZHIiCisgICAgICAgIHdoZW4gIlMiCisg
ICAgICAgICAgICAiU2NyYXRjaCIKKyAgICAgICAgd2hlbiAiRUQiCisgICAgICAgICAgICAiRWFy
bHlEZWYiCisgICAgICAgIHdoZW4gIkVaRCIKKyAgICAgICAgICAgICJFYXJseVpEZWYiCisgICAg
ICAgIHdoZW4gIkxVIgorICAgICAgICAgICAgIkxhdGVVc2UiCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJhaXNlCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiByb2xlQ29k
ZQorICAgICAgICBBcmcucm9sZUNvZGUocm9sZSkKKyAgICBlbmQKIGVuZAogCiBjbGFzcyBPdmVy
bG9hZApAQCAtMTgyLDcgKzIxNyw3IEBAIGRlZiBsZXgoc3RyLCBmaWxlTmFtZSkKIGVuZAogCiBk
ZWYgaXNSb2xlKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpE
KXwoVUEpfChTKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8
KFVBKXwoUyl8KEVEKXwoRVpEKXwoTFUpKVxaLwogZW5kCiAKIGRlZiBpc0dGKHRva2VuKQpAQCAt
MTkwLDcgKzIyNSw3IEBAIGRlZiBpc0dGKHRva2VuKQogZW5kCiAKIGRlZiBpc0tpbmQodG9rZW4p
Ci0gICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02
NCl8KEFkZHIpfChJbmRleCl8KFJlbENvbmQpfChSZXNDb25kKXwoRG91YmxlQ29uZCkpXFovCisg
ICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8
KEFkZHIpfChJbmRleCl8KFJlbENvbmQpfChSZXNDb25kKXwoRG91YmxlQ29uZCl8KFN0YXR1c0Nv
bmQpKVxaLwogZW5kCiAKIGRlZiBpc0FyY2godG9rZW4pCkBAIC0yNjQsNyArMjk5LDcgQEAgY2xh
c3MgUGFyc2VyCiAKICAgICBkZWYgY29uc3VtZUtpbmQKICAgICAgICAgcmVzdWx0ID0gdG9rZW4u
c3RyaW5nCi0gICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGtpbmQgKEltbSwgQmlnSW1tLCBC
aXRJbW0sIEJpdEltbTY0LCBUbXAsIEFkZHIsIEluZGV4LCBSZWxDb25kLCBSZXNDb25kLCBvciBE
b3VibGVDb25kKSIpIHVubGVzcyBpc0tpbmQocmVzdWx0KQorICAgICAgICBwYXJzZUVycm9yKCJF
eHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJ
bmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgRG91YmxlQ29uZCwgb3IgU3RhdHVzQ29uZCkiKSB1bmxl
c3MgaXNLaW5kKHJlc3VsdCkKICAgICAgICAgYWR2YW5jZQogICAgICAgICByZXN1bHQKICAgICBl
bmQKQEAgLTYzNCwyOCArNjY5LDcgQEAgd3JpdGVIKCJPcGNvZGVVdGlscyIpIHsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgb3ZlcmxvYWQuc2lnbmF0dXJlLmVhY2hfd2l0aF9pbmRleCB7CiAg
ICAgICAgICAgICAgICAgfCBhcmcsIGluZGV4IHwKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICByb2xlID0gbmlsCi0gICAgICAgICAgICAgICAgY2FzZSBhcmcucm9sZQotICAgICAg
ICAgICAgICAgIHdoZW4gIlUiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlIgotICAg
ICAgICAgICAgICAgIHdoZW4gIkQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiRGVmIgot
ICAgICAgICAgICAgICAgIHdoZW4gIlpEIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlpE
ZWYiCi0gICAgICAgICAgICAgICAgd2hlbiAiVUQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUg
PSAiVXNlRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlVaRCIKLSAgICAgICAgICAgICAgICAg
ICAgcm9sZSA9ICJVc2VaRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlVBIgotICAgICAgICAg
ICAgICAgICAgICByb2xlID0gIlVzZUFkZHIiCi0gICAgICAgICAgICAgICAgd2hlbiAiUyIKLSAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3JhdGNoIgotICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICBlbmQKLQotICAgICAg
ICAgICAgICAgIG91dHAucHV0cyAiZnVuY3RvcihhcmdzWyN7aW5kZXh9XSwgQXJnOjoje3JvbGV9
LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRoQ29kZX0pOyIKKyAgICAgICAgICAgICAgICBvdXRw
LnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0sIEFyZzo6I3thcmcucm9sZUNvZGV9LCAje2Fy
Zy5iYW5rfVAsICN7YXJnLndpZHRoQ29kZX0pOyIKICAgICAgICAgICAgIH0KICAgICAgICAgZW5k
CiAgICAgfQpAQCAtODE5LDYgKzgzMyw3IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewog
ICAgICAgICAgICAgICAgIHdoZW4gIlJlbENvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiUmVz
Q29uZCIKICAgICAgICAgICAgICAgICB3aGVuICJEb3VibGVDb25kIgorICAgICAgICAgICAgICAg
IHdoZW4gIlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICByYWlzZSAiVW5leHBlY3RlZCBraW5kOiAje2tpbmQubmFtZX0iCiAgICAgICAgICAgICAg
ICAgZW5kCkBAIC0xMTA1LDYgKzExMjAsOCBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsK
ICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNSZXN1bHRD
b25kaXRpb24oKSIKICAgICAgICAgICAgICAgICB3aGVuICJEb3VibGVDb25kIgogICAgICAgICAg
ICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc0RvdWJsZUNvbmRpdGlvbigp
IgorICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCisgICAgICAgICAgICAgICAgICAg
IG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzU3RhdHVzQ29uZGl0aW9uKCkiCiAgICAgICAg
ICAgICAgICAgZW5kCiAgICAgICAgICAgICB9CiAKQEAgLTExNDgsMjcgKzExNjUsNyBAQCBGaWxl
Lm9wZW4oIkpTQWlyX29wY29kZS5qcyIsICJ3IikgewogICAgICAgICAgICAgICAgIG91dHAucHV0
cyAiY2FzZSAje292ZXJsb2FkLnNpZ25hdHVyZS5sZW5ndGh9OiIgaWYgbmVlZE92ZXJsb2FkU3dp
dGNoCiAgICAgICAgICAgICAgICAgb3ZlcmxvYWQuc2lnbmF0dXJlLmVhY2hfd2l0aF9pbmRleCB7
CiAgICAgICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8Ci0gICAgICAgICAgICAgICAgICAg
IHJvbGUgPSBuaWwKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBhcmcucm9sZQotICAgICAgICAg
ICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2Ui
Ci0gICAgICAgICAgICAgICAgICAgIHdoZW4gIkQiCi0gICAgICAgICAgICAgICAgICAgICAgICBy
b2xlID0gIkRlZiIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiWkQiCi0gICAgICAgICAgICAg
ICAgICAgICAgICByb2xlID0gIlpEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlVEIgot
ICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VEZWYiCi0gICAgICAgICAgICAgICAg
ICAgIHdoZW4gIlVaRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlWkRlZiIK
LSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVUEiCi0gICAgICAgICAgICAgICAgICAgICAgICBy
b2xlID0gIlVzZUFkZHIiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlMiCi0gICAgICAgICAg
ICAgICAgICAgICAgICByb2xlID0gIlNjcmF0Y2giCi0gICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgICAgIGVuZAot
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpbnN0
LnZpc2l0QXJnKCN7aW5kZXh9LCBmdW5jLCBBcmcuI3tyb2xlfSwgI3thcmcuYmFua31QLCAje2Fy
Zy53aWR0aH0pOyIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpbnN0LnZpc2l0QXJn
KCN7aW5kZXh9LCBmdW5jLCBBcmcuI3thcmcucm9sZUNvZGV9LCAje2FyZy5iYW5rfVAsICN7YXJn
LndpZHRofSk7IgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBvdXRwLnB1dHMg
ImJyZWFrOyIKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEzLDkgKzQxMyw2IEBAIHR5cGVk
ZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYoYm9vbCwgZHVtcE1vZHVsZUxvYWRp
bmdTdGF0ZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgZXhwb3NlSW50
ZXJuYWxNb2R1bGVMb2FkZXIsIGZhbHNlLCBOb3JtYWwsICJleHBvc2UgdGhlIGludGVybmFsIG1v
ZHVsZSBsb2FkZXIgb2JqZWN0IHRvIHRoZSBnbG9iYWwgc3BhY2UgZm9yIGRlYnVnZ2luZyIpIFwK
ICAgICBcCi0gICAgdihib29sLCBkdW1wQWlyQXNKU0JlZm9yZUFsbG9jYXRlU3RhY2ssIGZhbHNl
LCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICB2KGJvb2wsIGR1bXBBaXJBZnRlckFsbG9jYXRlU3Rh
Y2ssIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICBcCiAgICAgdihib29sLCB1c2VTdXBl
clNhbXBsZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdihib29sLCBy
ZXBvcnRMTEludFN0YXRzLCBmYWxzZSwgQ29uZmlndXJhYmxlLCAiUmVwb3J0cyBMTEludCBzdGF0
aXN0aWNzIikgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303078</attachid>
            <date>2017-03-01 10:33:46 -0800</date>
            <delta_ts>2017-03-01 13:37:10 -0800</delta_ts>
            <desc>added tests for strong cas</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>278537</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMyBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAv
KiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87
IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQz
NDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNj
b3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5ODMyREFDMDA3RDRC
MTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDMsOCArMjI1MCw2IEBACiAJCURD
MjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIw
OTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVh
cENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRC
OEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1
QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8q
IFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREM2MDVCNUYxQ0Uy
NkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxl
clVJRC5jcHAgKi87IH07CkBAIC0yNzY0LDYgKzI3NjksMTMgQEAKIAkJMEYyQzYzQUMxRTYwQUUz
QzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4Mzkg
LyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7
IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2
M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9t
aWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQz
RTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0lu
c2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0
NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMv
YWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBh
dGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MxMUU2
NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRpdmVUcmFpdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQzNDAwN0Q0QjE5IC8q
IERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERD
MTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDc3OCw4ICs0NzkwLDYgQEAKIAkJREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8q
IElDU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUNTdGF0cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyog
SGVhcENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcENlbGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8q
IEhlYXBDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBD
ZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckR1bXBBc0pTLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJEdW1wQXNKUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJEdW1wQXNK
Uy5oOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuY3BwOyBwYXRo
ID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuaDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNUIx
Q0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyVUlELmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVy
VUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyOTIsNiArNTMwMiw4IEBA
CiAJCQkJMEZFQzg0QjMxQkRBQ0Q4ODAwODBGRjc0IC8qIGFpciAqLywKIAkJCQkwRkVDODRCNDFC
REFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRC
NTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmggKi8sCisJCQkJMEYyQzYz
QjMxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwICovLAorCQkJCTBGMkM2M0I0
MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8sCiAJCQkJMEYyQzYzQUIxRTYw
QUUzQzAwQzEzODM5IC8qIEIzQmFuay5jcHAgKi8sCiAJCQkJMEYyQzYzQUMxRTYwQUUzQzAwQzEz
ODM5IC8qIEIzQmFuay5oICovLAogCQkJCTBGRUM4NEI2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jh
c2ljQmxvY2suY3BwICovLApAQCAtNTM1NCw2ICs1MzY2LDcgQEAKIAkJCQkwRkVDODRDRDFCREFD
REFDMDA4MEZGNzQgLyogQjNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODRDRTFCREFD
REFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg0Q0YxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzR2VuZXJhdGUuaCAqLywKKwkJCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4Mzkg
LyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkVDODREMDFCREFDREFD
MDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg1QkYx
QkUxNjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmNwcCAqLywKIAkJCQkwRkVDODVDMDFCRTE2
N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLywKQEAgLTUzNzgsNiArNTM5MSw3IEBACiAJ
CQkJMEZFQzg0RDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuaCAqLywKIAkJCQkw
RjMzOEUwMzFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmNwcCAqLywKIAkJCQkw
RjMzOEUwNDFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmggKi8sCisJCQkJMEYy
QzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi8sCiAJCQkJMEYzMzhF
MDUxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0LmggKi8sCiAJCQkJMEYzMzhF
MDYxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5jcHAgKi8sCiAJCQkJMEYz
MzhFMDcxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5oICovLApAQCAtNTQ2
OSw2ICs1NDgzLDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5s
aW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2Nr
LmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5o
ICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNl
dC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0
aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29y
a2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdD
b252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC01NDgwLDggKzU0OTYsNiBAQAogCQkJCTBGMTBGMUEy
MUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAqLywKIAkJCQk3OUFCQjE3QjFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQk3OUFCQjE3QzFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmggKi8sCi0JCQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLywKLQkJCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4
QUYgLyogQWlyRHVtcEFzSlMuaCAqLywKIAkJCQkwRjQ1NzAzNjFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICovLAogCQkJCTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYy
OSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovLAogCQkJCTBGNjE4MzIzMUM0NUJGMDcwMDcy
NDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5jcHAgKi8sCkBAIC03MzI2LDYgKzczNDAsNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2
OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRjFFNjYwRUE1MDBDMTM4Mzkg
LyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAw
Rjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENE
NzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJ
ODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCkBAIC03MzU0
LDggKzczNjksOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3Nl
bWJsZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIx
IC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4
NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKQEAg
LTc5NDMsNyArNzk1OCw2IEBACiAJCQkJMEZFQzg1NzQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckND
YWxsU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzYxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTBGMUEzMUM0MjBCRjAwMDFDMDdE
MiAvKiBBaXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAotCQkJCURDNDU0QjhEMUQwMEU4MjQwMDRD
MThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NTcwMzkxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjYxODMyRDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNERFMUNGMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc5NTYsNiArNzk3MCw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckluc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3
RDcxRDlEQzQ0MjAwMUI5ODI1IC8qIEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2
M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjY4NEQ0MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUzNEMxQTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQ
cmVzc3VyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8q
IEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDQ3LDYgKzgwNjIs
NyBAQAogCQkJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQ
dHJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8q
IEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNG
NzAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjMzOEUwRTFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzM0ZDRkMxQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY2QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRl
VGFpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtODIzNyw2ICs4MjUzLDcgQEAKIAkJCQlBNzdBNDIz
RTE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNDMjFFNjY0QTVD
MDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc3
MTQzRkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQzRTQwMjFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4RDNEMDFCNTVBNkUwMDAy
QzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTgzNjYsNiArODM4Myw3IEBACiAJCQkJMEYzOTJDOEExQjQ2MTg4NDAwODQ0NzI4IC8qIERG
R09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdG
NTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYwMEM3
MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIxOUQwQkE3RDAw
QjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKQEAgLTk3OTIsNiArOTgx
MCw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTgwMiw3ICs5ODIxLDYgQEAKIAkJCQkwRkVD
ODU3MzFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTc1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0Ux
QzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMDI0OCw2ICsxMDI2Niw3IEBACiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8q
IEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVC
OEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQw
RTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMjY2LDYgKzEwMjg1LDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBB
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdB
NDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiIC8vIEhhdmUgdG8g
YnJlYWsgd2l0aCBzdHlsZSBiZWNhdXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpcyBhIHNo
YWR5IGhlYWRlci4KKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisKKyNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdURiB7CisK
K3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyQmFzZTo6U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBzd2l0Y2ggKGNvbmRp
dGlvbikgeworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN1Y2Nlc3M6Cisg
ICAgICAgIG91dC5wcmludCgiU3VjY2VzcyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6RmFpbHVyZToKKyAgICAgICAgb3V0LnByaW50KCJG
YWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0
Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUmFuZG9tLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NTAsOCArNTEsMjggQEAgbmFtZXNwYWNlIERGRyB7CiBzdHJ1Y3QgT1NSRXhpdDsKIH0KIAorY2xh
c3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgeworcHVibGljOgorICAgIGVudW0gU3RhdHVz
Q29uZGl0aW9uIHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgRmFpbHVyZQorICAgIH07Cisg
ICAgCisgICAgc3RhdGljIFN0YXR1c0NvbmRpdGlvbiBpbnZlcnQoU3RhdHVzQ29uZGl0aW9uIGNv
bmRpdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7CisgICAgICAgIGNh
c2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBGYWlsdXJlOworICAgICAgICBjYXNlIEZh
aWx1cmU6CisgICAgICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAgICAgICAgfQorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAg
ICB9Cit9OworCiB0ZW1wbGF0ZSA8Y2xhc3MgQXNzZW1ibGVyVHlwZSwgY2xhc3MgTWFjcm9Bc3Nl
bWJsZXJUeXBlPgotY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciB7CitjbGFzcyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlIHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwg
TWFjcm9Bc3NlbWJsZXJUeXBlPiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZTsKICAgICB0eXBl
ZGVmIEFzc2VtYmxlclR5cGUgQXNzZW1ibGVyVHlwZV9UOwpAQCAtMTEwOCwzICsxMTI5LDE2IEBA
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwgTWEKICNlbmRpZiAvLyBFTkFC
TEUoQVNTRU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKKworI2lmIEVOQUJMRShBU1NFTUJM
RVIpCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJh
c2U6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8g
RU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMi0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTM2LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IHR3b1RvVGhlMzI7IC8vIFRoaXMgaXMgc3VwZXIgdXNlZnVsIGZvciBzb21lIGRvdWJsZSBjb2Rl
LgogCiAgICAgLy8gVXRpbGl0aWVzIHVzZWQgYnkgdGhlIERGRyBKSVQuCisgICAgdXNpbmcgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OmludmVydDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
ckJhc2U6OmludmVydDsKICAgICAKICAgICBzdGF0aWMgRG91YmxlQ29uZGl0aW9uIGludmVydChE
b3VibGVDb25kaXRpb24gY29uZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBk
ZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFk
ZDMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CkBAIC0yNTEsMTYgKzI1
Niw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZDE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBhbmQxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmFuZGJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4
LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZz
ZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKEJhc2VJbmRleCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9
CisKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRs
X2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdf
aW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19pbShzdGF0
aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5k
OChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
bmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC00NTYsNiArNTE2LDMxIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNE
ZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgbmVnMzIoQmFzZUluZGV4IHNyY0Rlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdsX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3Qu
YmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBu
ZWcxNihBZGRyZXNzIHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20o
c3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihC
YXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3dfbShzcmNE
ZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsK
KyAgICB9CisKKyAgICB2b2lkIG5lZzgoQWRkcmVzcyBzcmNEZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubmVnYl9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgbmVnOChCYXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5lZ2JfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4
LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ycihzcmMs
IGRlc3QpOwpAQCAtNDcxLDE2ICs1NTYsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5vcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lk
IG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIub3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwg
ZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcndfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CisgICAgdm9pZCBvcjgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgb3I4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihBZGRyZXNz
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoQmFz
ZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7
CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbShpbW0ubV92YWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3
X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRp
Y19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIg
aW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9p
bShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCBvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC02NTQsMTYgKzc5NCw3MSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19p
bShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19j
YXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92YWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorCisgICAgdm9pZCBzdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50
MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9
CiAKKyAgICB2b2lkIHN1YjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5p
bmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3Jt
KHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWIxNihS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQg
c3ViOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuc3ViYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAg
IHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3Qu
aW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNjc3LDYgKzg3Miw1MCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3Js
X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZf
dD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRp
Y19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3J3X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBk
ZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0
aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5t
X3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92
YWx1ZSA9IHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1t
Lm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9y
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYg
KGltbS5tX3ZhbHVlID09IC0xKQpAQCAtNjkwLDExICs5MjksNDEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAg
fQogCisgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdp
c3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9y
d19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9y
MTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRl
c3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CiAgICAgdm9pZCB4b3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAg
ICAgfQogICAgIAorICAgIHZvaWQgeG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHhv
cjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC03NDEsNiArMTAxMCwzMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdDMyKEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbm90MTYoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgbm90MTYoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCBub3Q4KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5vdDgoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5u
b3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBzcXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcXJ0c2RfcnIoc3JjLCBkc3QpOwpA
QCAtMTA3MSw0MiArMTM2NSwyMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAgICAg
ICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNhbiBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVn
aXN0ZXJzOwotICAgICAgICAvLyBlc3AuLmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0
ZXJzIQotICAgICAgICBpZiAoc3JjID49IDQpIHsKLSAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1w
b3JhcnkgcmVnaXN0ZXIuCi0gICAgICAgICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRS
ZWdpc3RlcihhZGRyZXNzKTsKLQotICAgICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5
IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhlIHN0b3JlLgotICAgICAgICAgICAgc3dhcChzcmMsIHRl
bXApOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKLSAgICAgICAg
ICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2Vu
ZGlmCiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKICAgICB2
b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0jaWYg
Q1BVKFg4NikKLSAgICAgICAgLy8gT24gMzItYml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9t
IHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKLSAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0
byB0aGUgJ2gnIHJlZ2lzdGVycyEKLSAgICAgICAgaWYgKHNyYyA+PSA0KSB7Ci0gICAgICAgICAg
ICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLgotICAgICAgICAgICAgUmVnaXN0ZXJJRCB0
ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRkcmVzcyk7Ci0KLSAgICAgICAgICAgIC8vIFN3YXAg
dG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0byBwZXJmb3JtIHRoZSBzdG9yZS4KLSAgICAgICAg
ICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0odGVt
cCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7Ci0gICAgICAgICAgICBzd2FwKHNyYywg
dGVtcCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBt
X2Fzc2VtYmxlci5tb3Z3X3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAg
ICAgfQogCisgICAgdm9pZCBzdG9yZTE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3RvcmUxNihUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5t
b3Z3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7CisgICAgfQogCiAgICAgLy8gRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9u
OgogICAgIC8vCkBAIC0yNzQzLDc0ICszMDE4LDgzOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKDAsIDAsIFg4NlJlZ2lz
dGVyczo6ZXNwKTsKICAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsm
XSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsgfSk7CisgICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhh
dCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBv
biB4ODYuCi0gICAgdm9pZCBzdG9yZUZlbmNlKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAg
ICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAg
IH0KIAotICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9u
IG9mIG5vcm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBsb2Fk
RmVuY2UoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAgICBhdG9taWNTdHJv
bmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIu
Y21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFi
ZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNl
V2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlv
bi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4
cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsgfSk7CiAgICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSgpCisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAg
ICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHBhdGNoYWJsZUp1bXBT
aXplKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5k
ZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcykKICAgICB7Ci0gICAgICAgIGlmIChzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVj
a1N0YXRlOjpOb3RDaGVja2VkKQotICAgICAgICAgICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7Ci0g
ICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisgICAgdm9pZCBh
dG9taWNTdHJvbmdDQVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gQVZYIHN0aWxs
IGNhdXNlcyBteXN0ZXJpb3VzIHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4g
YmUgbWFzc2l2ZS4KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdG9taWNTdHJvbmdD
QVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdz
KCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAg
IGludCBmbGFncyA9IDA7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgaW50IGNwdUluZm9b
NF07Ci0gICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHgxKTsKLSAgICAgICAgZmxhZ3MgPSBjcHVJ
bmZvWzJdOwotI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQotI2lmIENQVShYODZfNjQpCi0g
ICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAg
ICAiY3B1aWQ7IgotICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDog
Ij1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlYngi
LCAiJWVjeCIsICIlZWR4IgotICAgICAgICAgICAgKTsKLSNlbHNlCi0gICAgICAgIGFzbSAoCi0g
ICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAicHVzaGwgJSVlYng7
IgotICAgICAgICAgICAgImNwdWlkOyIKLSAgICAgICAgICAgICJwb3BsICUlZWJ4OyIKLSAgICAg
ICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAg
ICAgICAgICAgOgotICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAg
ICAgICApOwotI2VuZGlmCisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2
KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5k
UmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwor
ICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0p
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBi
cmFuY2hBdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRv
bWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWlj
V2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21p
Y1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0
b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAg
IHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwg
ZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKwor
ICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihj
b25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQs
IGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBl
Y3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFkZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNB
ZGQ4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYWRkMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YWRkMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1Yjgo
aW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWI4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1
YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWIzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWIzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgYW5kOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0Fu
ZDgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihpbW0s
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
bmQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNPcjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3Iz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I4KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Iz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hvcjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJlZywgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05l
ZzgoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBuZWc4KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzgo
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG5lZzgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMTYo
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBuZWcxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbmVnMTYoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMzIo
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBuZWczMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbmVnMzIoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG5vdDgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbm90OChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QxNihBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG5vdDE2KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBub3QxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QzMihBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG5vdDMyKGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBub3QzMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkOChS
ZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIueGFkZHdfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBtX2Fzc2VtYmxlci54YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhh
ZGRsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhjaGd3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueGNoZ3dfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBsb2FkOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3E4KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IGxvYWQ4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRF
eHRlbmRUbzMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBs
b2FkOFNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbG9hZDhTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBsb2FkMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxMTYoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZDE2KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2lnbmVk
RXh0ZW5kVG8zMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbG9hZDMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgbG9hZEFjcTMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBzdG9yZVJlbDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAg
ICAgICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KGltbSwgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlMTYoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBz
dG9yZVJlbDMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBz
dG9yZTMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYywg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKGltbSwgZGVzdCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9y
bWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBzdG9yZUZlbmNl
KCkKKyAgICB7CisgICAgfQorCisgICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBw
cmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4K
KyAgICB2b2lkIGxvYWRGZW5jZSgpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9j
YXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVw
bGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGlu
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJk
aWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgfQorCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkKKyAgICB7CisgICAgICAgIGlmIChzX3Nz
ZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQorICAgICAgICAg
ICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7CisgICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3Rh
dGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydHNBVlgoKQorICAgIHsKKyAgICAgICAgLy8gQVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3Vz
IHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4gYmUgbWFzc2l2ZS4KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hG
bGFncygpCisgICAgeworICAgICAgICBpbnQgZmxhZ3MgPSAwOworI2lmIENPTVBJTEVSKE1TVkMp
CisgICAgICAgIGludCBjcHVJbmZvWzRdOworICAgICAgICBfX2NwdWlkKGNwdUluZm8sIDB4MSk7
CisgICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsKKyNlbGlmIENPTVBJTEVSKEdDQ19PUl9DTEFO
RykKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4
MSwgJSVlYXg7IgorICAgICAgICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICJtb3ZsICUlZWN4
LCAlMDsiCisgICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQorICAgICAgICAgICAgOgorICAgICAg
ICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICk7Cisj
ZWxzZQorICAgICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgorICAg
ICAgICAgICAgInB1c2hsICUlZWJ4OyIKKyAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAg
ICAicG9wbCAlJWVieDsiCisgICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAgICAgICAg
ICAgOiAiPWciIChmbGFncykKKyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVlYXgiLCAi
JWVjeCIsICIlZWR4IgorICAgICAgICAgICAgKTsKKyNlbmRpZgogI2VuZGlmIC8vIENPTVBJTEVS
KEdDQ19PUl9DTEFORykKICAgICAgICAgc19zc2U0XzFDaGVja1N0YXRlID0gKGZsYWdzICYgKDEg
PDwgMTkpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsK
ICAgICAgICAgc19hdnhDaGVja1N0YXRlID0gKGZsYWdzICYgKDEgPDwgMjgpKSA/IENQVUlEQ2hl
Y2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKQEAgLTI4MzEsNiArMzg3MCwx
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6
OkNvbmRpdGlvbj4oY29uZCk7CiAgICAgfQogCisgICAgWDg2QXNzZW1ibGVyOjpDb25kaXRpb24g
eDg2Q29uZGl0aW9uKFN0YXR1c0NvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChjb25kKSB7CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbkU7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAg
IHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbk5FOworICAgICAgICB9CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6
OkNvbmRpdGlvbkU7CisgICAgfQorCiAgICAgdm9pZCBzZXQzMihYODZBc3NlbWJsZXI6OkNvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogI2lmIENQVShYODYpCkBAIC0yOTI1
LDYgKzM5NzYsMzUgQEAgcHJvdGVjdGVkOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihzaXpl
T2ZSZWdpc3RlciksIGRzdCk7CiAgICAgICAgIHNyY0lzTm9uWmVyby5saW5rKHRoaXMpOwogICAg
IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0
LCBSZWdpc3RlcklEIHJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3
YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRS
ZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNv
bmQpLCByZXN1bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3Qg
RnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJl
Z2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5j
KCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIEp1bXAgYnJhbmNoQXRv
bWljU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFu
ZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVn
aXN0ZXJzOjplYXgpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29u
ZGl0aW9uKGNvbmQpKSk7CisgICAgfQogCiBwcml2YXRlOgogICAgIC8vIE9ubHkgTWFjcm9Bc3Nl
bWJsZXJYODYgc2hvdWxkIGJlIHVzaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kOyBTU0UyIGlzIGFs
d2F5cyBhdmFpbGFibGUgb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2NCwxMSArMjY0LDIxIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7
CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
YWRkcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQg
YWRkNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYWRkcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYWRkNjQoQWJzb2x1dGVBZGRyZXNzIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNy
Yy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKQEAgLTMwNiw2ICszMTYsMTQgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1
ZSA9PSAxKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuaW5jcV9tKGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9
CisKICAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRy
ZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBz
Y3JhdGNoUmVnaXN0ZXIoKSk7CkBAIC0zNDIsMTEgKzM2MCw0MSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLmFuZHFfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQ2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hbmRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChBZGRyZXNzIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChCYXNlSW5kZXgg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAg
fQorCiAgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2lt
KGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3Rl
cklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBpbnRwdHJfdCBpbnRWYWx1ZSA9IGltbS5hc0lu
dHB0cigpOwpAQCAtNTUyLDExICs2MDAsNTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5uZWdxX3IoZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBuZWc2NChBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBuZWc2NChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5lZ3FfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ycihzcmMsIGRlc3Qp
OwogICAgIH0KIAorICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
b3I2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2
b2lkIG9yNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5z
Y2FsZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9pbShpbW0ubV92YWx1
ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTY0IGltbSwgUmVn
aXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlIDw9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpCkBAIC02MTksMTYgKzcwNywzMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJx
X2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjY0KEFkZHJlc3Mgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNy
Yy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KEJhc2VJ
bmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1
YnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsK
KyAgICB9CisKICAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCB4b3I2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIueG9ycV9ycihzcmMsIGRlc3QpOwpAQCAtNjUxLDYgKzc1NCwzMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IHhvcjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci54b3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHhvcjY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhvcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1t
Lm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9y
NjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci54b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0
LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhv
cnFfaXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwpAQCAtNjY2LDYgKzc5NCwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vdHFfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdDY0KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubm90cV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgbG9hZDY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwpAQCAtNzI1LDYgKzg1OCwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQo
VHJ1c3RlZEltbTY0IGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzMyXzY0KGltbS5tX3ZhbHVlKSkgewpAQCAtMTI5NCw3ICsx
NDMyLDI1NSBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3Zl
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRy
ZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwgbWFzazgpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBh
dG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsm
XSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9
CiAKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FT
KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRk
cmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1Zh
bHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4g
YnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2
NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHN1YjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
U3ViNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgb3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y09yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05lZzY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTmVnNjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05vdDY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTm90NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54
YWRkcV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzY0
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzY0
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRBY3E2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCB0
cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5MCwxNiArMTkwLDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgIE9QX0FERF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDAxLAog
ICAgICAgICBPUF9BRERfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgwMywKICAgICAgICAg
T1BfQUREX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MDUsCisgICAgICAgIE9QX09SX0V2
R2IgICAgICAgICAgICAgICAgICAgICAgPSAweDA4LAogICAgICAgICBPUF9PUl9Fdkd2ICAgICAg
ICAgICAgICAgICAgICAgID0gMHgwOSwKICAgICAgICAgT1BfT1JfR3ZFdiAgICAgICAgICAgICAg
ICAgICAgICA9IDB4MEIsCiAgICAgICAgIE9QX09SX0VBWEl2ICAgICAgICAgICAgICAgICAgICAg
PSAweDBELAogICAgICAgICBPUF8yQllURV9FU0NBUEUgICAgICAgICAgICAgICAgID0gMHgwRiwK
KyAgICAgICAgT1BfQU5EX0V2R2IgICAgICAgICAgICAgICAgICAgICA9IDB4MjAsCiAgICAgICAg
IE9QX0FORF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDIxLAogICAgICAgICBPUF9BTkRf
R3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgyMywKKyAgICAgICAgT1BfU1VCX0V2R2IgICAg
ICAgICAgICAgICAgICAgICA9IDB4MjgsCiAgICAgICAgIE9QX1NVQl9Fdkd2ICAgICAgICAgICAg
ICAgICAgICAgPSAweDI5LAogICAgICAgICBPUF9TVUJfR3ZFdiAgICAgICAgICAgICAgICAgICAg
ID0gMHgyQiwKICAgICAgICAgT1BfU1VCX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MkQs
CiAgICAgICAgIFBSRV9QUkVESUNUX0JSQU5DSF9OT1RfVEFLRU4gICAgPSAweDJFLAorICAgICAg
ICBPUF9YT1JfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgzMCwKICAgICAgICAgT1BfWE9S
X0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MzEsCiAgICAgICAgIE9QX1hPUl9HdkV2ICAg
ICAgICAgICAgICAgICAgICAgPSAweDMzLAogICAgICAgICBPUF9YT1JfRUFYSXYgICAgICAgICAg
ICAgICAgICAgID0gMHgzNSwKQEAgLTIyMyw2ICsyMjcsNyBAQCBwcml2YXRlOgogICAgICAgICBP
UF9HUk9VUDFfRXZJYiAgICAgICAgICAgICAgICAgID0gMHg4MywKICAgICAgICAgT1BfVEVTVF9F
YkdiICAgICAgICAgICAgICAgICAgICA9IDB4ODQsCiAgICAgICAgIE9QX1RFU1RfRXZHdiAgICAg
ICAgICAgICAgICAgICAgPSAweDg1LAorICAgICAgICBPUF9YQ0hHX0V2R2IgICAgICAgICAgICAg
ICAgICAgID0gMHg4NiwKICAgICAgICAgT1BfWENIR19Fdkd2ICAgICAgICAgICAgICAgICAgICA9
IDB4ODcsCiAgICAgICAgIE9QX01PVl9FYkdiICAgICAgICAgICAgICAgICAgICAgPSAweDg4LAog
ICAgICAgICBPUF9NT1ZfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHg4OSwKQEAgLTI1Miw2
ICsyNTcsNyBAQCBwcml2YXRlOgogICAgICAgICBQUkVfU1NFX0YyICAgICAgICAgICAgICAgICAg
ICAgID0gMHhGMiwKICAgICAgICAgUFJFX1NTRV9GMyAgICAgICAgICAgICAgICAgICAgICA9IDB4
RjMsCiAgICAgICAgIE9QX0hMVCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweEY0LAorICAg
ICAgICBPUF9HUk9VUDNfRWIgICAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAgT1Bf
R1JPVVAzX0ViSWIgICAgICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9QX0dST1VQM19F
diAgICAgICAgICAgICAgICAgICAgPSAweEY3LAogICAgICAgICBPUF9HUk9VUDNfRXZJeiAgICAg
ICAgICAgICAgICAgID0gMHhGNywgLy8gT1BfR1JPVVAzX0V2IGhhcyBhbiBpbW1lZGlhdGUsIHdo
ZW4gaW5zdHJ1Y3Rpb24gaXMgYSB0ZXN0LiAKQEAgLTI5MCw2ICsyOTYsOCBAQCBwcml2YXRlOgog
ICAgICAgICBPUF9TRVRDQyAgICAgICAgICAgID0gMHg5MCwKICAgICAgICAgT1AyXzNCWVRFX0VT
Q0FQRV9BRSA9IDB4QUUsCiAgICAgICAgIE9QMl9JTVVMX0d2RXYgICAgICAgPSAweEFGLAorICAg
ICAgICBPUDJfQ01QWENIR2IgICAgICAgID0gMHhCMCwKKyAgICAgICAgT1AyX0NNUFhDSEcgICAg
ICAgICA9IDB4QjEsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkViICAgICAgPSAweEI2LAogICAgICAg
ICBPUDJfQlNGICAgICAgICAgICAgID0gMHhCQywKICAgICAgICAgT1AyX1RaQ05UICAgICAgICAg
ICA9IDB4QkMsCkBAIC0yOTgsNiArMzA2LDggQEAgcHJpdmF0ZToKICAgICAgICAgT1AyX01PVlNY
X0d2RWIgICAgICA9IDB4QkUsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkV3ICAgICAgPSAweEI3LAog
ICAgICAgICBPUDJfTU9WU1hfR3ZFdyAgICAgID0gMHhCRiwKKyAgICAgICAgT1AyX1hBRERiICAg
ICAgICAgICA9IDB4QzAsCisgICAgICAgIE9QMl9YQUREICAgICAgICAgICAgPSAweEMxLAogICAg
ICAgICBPUDJfUEVYVFJXX0dkVWRJYiAgID0gMHhDNSwKICAgICAgICAgT1AyX1BTTExRX1VkcUli
ICAgICA9IDB4NzMsCiAgICAgICAgIE9QMl9QU1JMUV9VZHFJYiAgICAgPSAweDczLApAQCAtNDQw
LDYgKzQ1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9B
RERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGFkZGxf
bXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9Cisg
ICAgCiAjaWYgIUNQVShYODZfNjQpCiAgICAgdm9pZCBhZGRsX21yKGNvbnN0IHZvaWQqIGFkZHIs
IFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTU2MiwxMSArNTc3LDIxIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgb2Zm
c2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9pcihpbnQgaW1tLCBSZWdpc3Rl
cklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CkBAIC01OTEsNiArNjE2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGFkZHFfaW0oaW50
IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQ
MV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQURELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2b2lkIGFkZGxfaW0oaW50
IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC02MTQsMTEgKzY1MCw0MyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNl
LCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgYW5kbF9tcihpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAg
ICAgfQogCisgICAgdm9pZCBhbmRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFuZGxfcm0oc3JjLCBvZmZzZXQsIGJh
c2UpOworICAgIH0KKworICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFu
ZGxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtNjQxLDYgKzcwOSw1MyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIGFuZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQp
OworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBH
Uk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kd19pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpF
KTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAg
ICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRWJJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgYW5kYl9pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwg
R1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2
b2lkIGFuZHFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTY1
Nyw2ICs3NzIsNDggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkg
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIGFuZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQ
MV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQog
I2Vsc2UKICAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7
CkBAIC03MDMsNiArODYwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CisKKyAgICB2b2lkIGluY3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KICNlbmRpZiAvLyBDUFUoWDg2XzY0KQogCiAgICAgdm9pZCBuZWds
X3IoUmVnaXN0ZXJJRCBkc3QpCkBAIC03MTUsNiArODc3LDE2IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05F
RywgZHN0KTsKICAgICB9CisKKyAgICB2b2lkIG5lZ3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNf
RXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBuZWdx
X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYs
IEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5k
aWYKIAogICAgIHZvaWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKQEAgLTcy
Miw2ICs4OTQsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZv
aWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
M19FdiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVn
bF9tKG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWd3X20oaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5lZ2xf
bShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWdiX20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIG5lZ2JfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKICAgICB2b2lkIG5vdGxfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1Qs
IGRzdCk7CkBAIC03MzIsNiArOTMxLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdGxfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIG5vdGxfbShvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90d19t
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICBub3RsX20ob2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG5v
dHFfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC03NDIsNiArOTY4LDExIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JP
VVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CisKKyAgICB2b2lkIG5vdHFfbShpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAz
X09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAg
ICAgdm9pZCBvcmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtNzU0LDEx
ICs5ODUsNDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1Jf
R3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX21yKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdp
c3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9H
dkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lk
IG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAg
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgb3JsX3JtKHNyYywgb2Zm
c2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAg
ICAgIG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtNzg0LDEyICsxMDQ3LDEwMSBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICB2b2lkIG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JP
VVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb3J3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9
CisgICAgfQorCisgICAgdm9pZCBvcmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
YkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09Q
X09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgb3JxX3Jy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lk
IG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7Cisg
ICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQ
MV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHZvaWQgb3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICB2b2lkIG9ycV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC04MzEsMTEgKzExODMs
NDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYs
IGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YmxfbXIoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9HdkV2
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
Ymxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vid19ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIHN1Yndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgc3ViYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHYiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJs
X2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTg2MSw2ICsxMjQ1LDUzIEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgIH0KIAorICAgIHZvaWQgc3VibF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgc3Vid19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2Us
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdWJ3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1Bf
U1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOworICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
MV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0
KQogICAgIHZvaWQgc3VicV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAg
ewpAQCAtODcyLDExICsxMzAzLDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2
b2lkIHN1YnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKwogICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YnFf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KwogICAgIHZvaWQgc3VicV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAg
ICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC05MDEsNiArMTM0MiwxNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAg
ICAgICB9CiAgICAgfQorCisgICAgdm9pZCBzdWJxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAg
fQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCiAgICAgewpAQCAtOTI0LDExICsxMzc2LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQog
CisgICAgdm9pZCB4b3JsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhv
cmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hPUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisKICAgICB2b2lkIHhvcmxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTk0
MCw2ICsxNDAyLDc1IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgeG9y
bF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihp
bW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIs
IEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yd19ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICB4b3JsX3JtKHNy
Yywgb2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcndfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICB4b3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgeG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2Us
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1Bf
WE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcmJfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAg
IHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfWE9SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0ViSWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcmJfaW0oaW50IGltbSwgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQ
MV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogICAgIHZvaWQgeG9ybF9pcihpbnQgaW1tLCBS
ZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihp
bW0pKSB7CkBAIC05NzQsMTEgKzE1MDUsNDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
ICAgIAorICAgIHZvaWQgeG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9P
UF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9F
dkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4b3JxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hP
Ul9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIHhvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfR3ZFdiwgZGVz
dCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcnFfbXIoaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2
LCBkZXN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAg
ICB2b2lkIGx6Y250X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTE1ODYs
MTEgKzIxNTMsMzggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX1hDSEdfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgeGNoZ2Jfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNoZ3dfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQg
eGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
WENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAg
ICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnbF9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2
XzY0KQogICAgIHZvaWQgeGNoZ3FfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKQEAgLTE2MDYsNiArMjIwMCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CisKKyAgICB2b2lkIHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG1vdmxfcnIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTczMSw2ICsyMzMwLDIwIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBtb3Z3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCisgICAgdm9pZCBtb3Z3X2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJ
WkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxMV9Fdkl6LCBHUk9V
UDExX01PViwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUxNihpbW0pOworICAgIH0KKwogICAgIHZvaWQgbW92bF9FQVhtKGNvbnN0IHZv
aWQqIGFkZHIpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX092
RUFYKTsKQEAgLTE4MDAsNiArMjQxMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTMyKGltbSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX2kzMm0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDExX0V2SXos
IEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZxX2k2NHIoaW50
NjRfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfTU9WX0VBWEl2LCBkc3QpOwpAQCAtMjc3NSw2ICszMzk0LDkwIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9MT0NLKTsKICAgICB9CiAgICAgCisg
ICAgdm9pZCBjbXB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENI
R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnYl9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4
KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BF
UkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNy
YywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNt
cHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcs
IHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGNtcHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9D
TVBYQ0hHLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQURE
Yiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCB4YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2
NChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhh
ZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5
dGVPcDY0KE9QMl9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisgICAgCiAgICAgdm9pZCBtZmVuY2UoKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudGhy
ZWVCeXRlT3AoT1AyXzNCWVRFX0VTQ0FQRV9BRSwgT1AzX01GRU5DRSk7CkBAIC0zNzUxLDYgKzQ0
NTQsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKGdyb3Vw
T3AsIHJtKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bj
b2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlciht
X2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1Jl
eChyZWcsIGJhc2UpLCByZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNl
LCBvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVP
cGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3Jp
dGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCByZWdSZXF1aXJlc1JleChp
bmRleCwgYmFzZSksIHJlZywgaW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRl
VW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBJbW1l
ZGlhdGVzOgogICAgICAgICAvLwogICAgICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFw
cGVuZGVkIHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzQXRvbWlj
VmFsdWUuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeworCitBdG9taWNWYWx1ZTo6fkF0b21pY1ZhbHVlKCkKK3sKK30KKworV2lkdGggQXRv
bWljVmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aWR0aDsKK30K
Kwordm9pZCBBdG9taWNWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoY29tbWEsICJ3aWR0aCA9ICIsIG1f
d2lkdGgpOworICAgIAorICAgIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShjb21tYSwgb3V0KTsKK30K
KworVmFsdWUqIEF0b21pY1ZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAoreworICAgIHJldHVybiBu
ZXcgQXRvbWljVmFsdWUoKnRoaXMpOworfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNv
ZGUsIGtpbmQsIG9wZXJhbmQtPnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIG9wZXJhbmQsIHBvaW50
ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVhcFJhbmdl
Ojp0b3AoKSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKEdQLCBvcGVyYXRpb25XaWR0aCgp
KSA9PSBvcGVyYXRpb25UeXBlKCkpOworICAgIAorICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkg
eworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAg
Y2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRv
bWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworQXRvbWlj
VmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgs
IFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBp
bnQzMl90IG9mZnNldCkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIGtp
bmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRWYWx1ZS0+dHlw
ZSgpLCBvcmlnaW4sIG9mZnNldCwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUsIHBvaW50ZXIpCisg
ICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIHNldEZlbmNlUmFuZ2UoSGVhcFJhbmdlOjp0b3Ao
KSk7CisgICAgCisgICAgQVNTRVJUKGJlc3RUeXBlKEdQLCBvcGVyYXRpb25XaWR0aCgpKSA9PSBv
cGVyYXRpb25UeXBlKCkpOworCisgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgY2Fz
ZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2lu
Y2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBBdG9taWNW
YWx1ZSA6IHB1YmxpYyBNZW1vcnlWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNj
ZXB0cyhLaW5kIGtpbmQpCisgICAgeworICAgICAgICByZXR1cm4gaXNBdG9taWMoa2luZC5vcGNv
ZGUoKSk7CisgICAgfQorICAgIAorICAgIH5BdG9taWNWYWx1ZSgpOworICAgIAorICAgIFR5cGUg
b3BlcmF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7IH0KKyAgICAK
KyAgICBXaWR0aCBvcGVyYXRpb25XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAg
ICAKKyAgICAvLyBTeW5vbnltIGZvciBvcGVyYXRpb25XaWR0aCgpLCBpZiB5b3UncmUgYWNjZXNz
aW5nIHZpYSBNZW1vcnlWYWx1ZS4KKyAgICBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIAorcHJvdGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwg
UHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICAKKyAgICBWYWx1ZSogY2xvbmVJbXBs
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBQcm9j
ZWR1cmU7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUq
IG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAgIAorICAg
IEF0b21pY1ZhbHVlKEtpbmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBW
YWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApOworICAg
IAorICAgIFdpZHRoIG1fd2lkdGg7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKwor
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDcgQEAgY2xh
c3MgQmxvY2tJbnNlcnRpb25TZXQ7CiBjbGFzcyBJbnNlcnRpb25TZXQ7CiBjbGFzcyBQcm9jZWR1
cmU7CiBjbGFzcyBWYWx1ZTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBHZW5lcmljQmxvY2tJ
bnNlcnRpb25TZXQ7CiAKIGNsYXNzIEJhc2ljQmxvY2sgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEJhc2ljQmxvY2spOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBJbnNlcnRpb25TZXQ7
CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJp
ZW5kIGNsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDsKICAgICAKICAgICAvLyBJbnN0YW50
aWF0ZSB2aWEgUHJvY2VkdXJlLgogICAgIEJhc2ljQmxvY2sodW5zaWduZWQgaW5kZXgsIGRvdWJs
ZSBmcmVxdWVuY3kpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNl
cnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDM1ICsz
NiwxMyBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIEJsb2NrSW5zZXJ0aW9u
U2V0OjpCbG9ja0luc2VydGlvblNldChQcm9jZWR1cmUgJnByb2MpCi0gICAgOiBtX3Byb2MocHJv
YykKKyAgICA6IEdlbmVyaWNCbG9ja0luc2VydGlvblNldChwcm9jLm1fYmxvY2tzKQorICAgICwg
bV9wcm9jKHByb2MpCiB7CiB9CiAKIEJsb2NrSW5zZXJ0aW9uU2V0Ojp+QmxvY2tJbnNlcnRpb25T
ZXQoKSB7IH0KIAotdm9pZCBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KEJsb2NrSW5zZXJ0aW9u
JiYgaW5zZXJ0aW9uKQotewotICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRp
b24pKTsKLX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydCh1bnNpZ25l
ZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNC
bG9jaz4gYmxvY2sobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOwotICAgIEJh
c2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdldCgpOwotICAgIGluc2VydChCbG9ja0luc2VydGlv
bihpbmRleCwgV1RGTW92ZShibG9jaykpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1CYXNp
Y0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9y
ZSwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgo
KSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5
KCkpOwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIoQmFz
aWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChh
ZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBh
ZnRlci0+ZnJlcXVlbmN5KCkpOwotfQotCiBCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6
c3BsaXRGb3J3YXJkKAogICAgIEJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCYgdmFsdWVJbmRl
eCwgSW5zZXJ0aW9uU2V0KiBpbnNlcnRpb25TZXQsIGRvdWJsZSBmcmVxdWVuY3kpCiB7CkBAIC0x
MDIsMzIgKzgwLDYgQEAgQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6OnNwbGl0Rm9ydwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgQmxvY2tJbnNlcnRpb25TZXQ6OmV4ZWN1dGUo
KQotewotICAgIGlmIChtX2luc2VydGlvbnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCi0gICAgLy8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBp
biBhbnkgb3JkZXIuIFNvLCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKLSAgICAvLyBydW5u
aW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMuIFdlIHN0cm9uZ2x5IHByZWZlciBhIHN0YWJsZSBz
b3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCi0gICAgLy8gZmFzdCwgc28gd2UgdXNlIGJ1YmJsZSBz
b3J0LgotICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5l
bmQoKSk7Ci0KLSAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX3Byb2MubV9ibG9ja3MsIG1faW5zZXJ0
aW9ucyk7Ci0gICAgCi0gICAgLy8gUHJ1bmUgb3V0IGVtcHR5IGVudHJpZXMuIFRoaXMgaXNuJ3Qg
c3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzCi0gICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBi
bG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KLSAgICBtX3Byb2MubV9ibG9ja3MucmVtb3ZlQWxsTWF0
Y2hpbmcoCi0gICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+JiBibG9ja1B0
cikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gIWJsb2NrUHRyOwotICAgICAgICB9KTsK
LSAgICAKLSAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGlu
ZGljZXMuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvYy5tX2Jsb2Nrcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgbV9wcm9jLm1fYmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKLSAgICAK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxv
Y2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCbG9ja0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlIDx3
dGYvSW5zZXJ0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzUsMjYgKzM2LDEz
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBJbnNlcnRpb25TZXQ7
CiAKLXR5cGVkZWYgV1RGOjpJbnNlcnRpb248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBC
bG9ja0luc2VydGlvbjsKK3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxv
Y2s+OjpCbG9ja0luc2VydGlvbiBCbG9ja0luc2VydGlvbjsKIAotY2xhc3MgQmxvY2tJbnNlcnRp
b25TZXQgeworY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0PEJhc2ljQmxvY2s+IHsKIHB1YmxpYzoKICAgICBCbG9ja0luc2VydGlvblNldChQ
cm9jZWR1cmUmKTsKICAgICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKICAgICAKLSAgICB2b2lkIGlu
c2VydChCbG9ja0luc2VydGlvbiYmKTsKLQotICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBh
IGdpdmVuIGluZGV4LgotICAgIEJhc2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91
YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBiZWZv
cmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNzIHRoZSBmcmVxdWVu
Y3kKLSAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0byBqdXN0IHVzZSB0
aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCi0gICAgLy8gdXN1YWxs
eSB3aGF0IHlvdSB3YW50LgotICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9yZShCYXNpY0Jsb2Nr
KiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBu
ZXcgYmxvY2sgYWZ0ZXIgdGhlIGdpdmVuIGJsb2NrLgotICAgIEJhc2ljQmxvY2sqIGluc2VydEFm
dGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KICAgICAv
LyBBIGhlbHBlciB0byBzcGxpdCBhIGJsb2NrIHdoZW4gZm9yd2FyZCBpdGVyYXRpbmcgb3ZlciBp
dC4gSXQgY3JlYXRlcyBhIG5ldyBibG9jayB0byBob2xkCiAgICAgLy8gZXZlcnl0aGluZyBiZWZv
cmUgdGhlIGluc3RydWN0aW9uIGF0IHZhbHVlSW5kZXguIFRoZSBjdXJyZW50IGJsb2NrIGlzIGxl
ZnQgd2l0aAogICAgIC8vIGV2ZXJ5dGhpbmcgYXQgYW5kIGFmdGVyIHZhbHVlSW5kZXguIElmIHRo
ZSBvcHRpb25hbCBJbnNlcnRpb25TZXQgaXMgcHJvdmlkZWQsIGl0IHdpbGwgZ2V0CkBAIC04MCwx
MiArNjgsOSBAQCBwdWJsaWM6CiAgICAgQmFzaWNCbG9jayogc3BsaXRGb3J3YXJkKAogICAgICAg
ICBCYXNpY0Jsb2NrKiwgdW5zaWduZWQmIHZhbHVlSW5kZXgsIEluc2VydGlvblNldCogPSBudWxs
cHRyLAogICAgICAgICBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0gICAgCi0gICAgYm9vbCBl
eGVjdXRlKCk7CiAKIHByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7Ci0gICAgVmVjdG9y
PEJsb2NrSW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsOCBAQCBib29sIEVmZmVjdHM6OmludGVyZmVyZXMo
Y29uc3QgRWZmZWN0cyYgCiAgICAgICAgIHx8IGludGVyZmVyZXNXaXRoV3JpdGVzUGlubmVkKG90
aGVyLCAqdGhpcykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKICAg
ICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLnJlYWRzKQotICAgICAgICB8fCByZWFkcy5v
dmVybGFwcyhvdGhlci53cml0ZXMpOworICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53
cml0ZXMpCisgICAgICAgIHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9CiAKIGJvb2wgRWZm
ZWN0czo6b3BlcmF0b3I9PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTk1LDcgKzk2
LDggQEAgYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIAogICAgICAgICAm
JiB3cml0ZXNQaW5uZWQgPT0gb3RoZXIud3JpdGVzUGlubmVkCiAgICAgICAgICYmIHJlYWRzUGlu
bmVkID09IG90aGVyLnJlYWRzUGlubmVkCiAgICAgICAgICYmIHdyaXRlcyA9PSBvdGhlci53cml0
ZXMKLSAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHM7CisgICAgICAgICYmIHJlYWRzID09
IG90aGVyLnJlYWRzCisgICAgICAgICYmIGZlbmNlID09IG90aGVyLmZlbmNlOwogfQogCiBib29s
IEVmZmVjdHM6Om9wZXJhdG9yIT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0CkBAIC0xMjAs
NiArMTIyLDggQEAgdm9pZCBFZmZlY3RzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbgogICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJXcml0ZXNQaW5uZWQiKTsKICAgICBpZiAocmVhZHNQaW5u
ZWQpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIlJlYWRzUGlubmVkIik7CisgICAgaWYgKGZl
bmNlKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJGZW5jZSIpOwogICAgIGlmICh3cml0ZXMp
CiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlczoiLCB3cml0ZXMpOwogICAgIGlmIChy
ZWFkcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkod29ya2luZyBj
b3B5KQpAQCAtNzEsNiArNzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBib29sIHJlYWRzUGlu
bmVkIHsgZmFsc2UgfTsKICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07CisgICAgCisg
ICAgLy8gTWVtb3J5IGZlbmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBlYWNoIG90aGVy
IHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisgICAgLy8gaWYg
dGhlIG9wZXJhdGlvbiBpcyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZlbmNlIHsgZmFsc2Ug
fTsKIAogICAgIEhlYXBSYW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRzOwpAQCAtODks
NiArOTMsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBS
YW5nZTo6dG9wKCk7CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAg
IHJlc3VsdC53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVl
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcgKzEwOCw3IEBAIHN0
cnVjdCBFZmZlY3RzIHsKIAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0
ZSB8fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4gdGVybWluYWwgfHwg
ZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5u
ZWQgfHwgZmVuY2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHJlb3JkZXJpbmcg
aW5zdHJ1Y3Rpb25zIHdpdGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxkIGNoYW5nZSBw
cm9ncmFtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25T
dWJleHByZXNzaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0cnVjdCBJbXB1cmVCbG9ja0Rh
dGEgewogCiAgICAgUmFuZ2VTZXQ8SGVhcFJhbmdlPiByZWFkczsgLy8gVGhpcyBvbmx5IGdldHMg
dXNlZCBmb3IgZm9yd2FyZCBzdG9yZSBlbGltaW5hdGlvbi4KICAgICBSYW5nZVNldDxIZWFwUmFu
Z2U+IHdyaXRlczsgLy8gVGhpcyBnZXRzIHVzZWQgZm9yIGJvdGggbG9hZCBhbmQgc3RvcmUgZWxp
bWluYXRpb24uCisgICAgYm9vbCBmZW5jZTsKIAogICAgIE1lbW9yeVZhbHVlTWFwIHN0b3Jlc0F0
SGVhZDsKICAgICBNZW1vcnlWYWx1ZU1hcCBtZW1vcnlWYWx1ZXNBdFRhaWw7CkBAIC0xNzQsMTIg
KzE3NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYg
KG1lbW9yeSAmJiBtZW1vcnktPmlzU3RvcmUoKQogICAgICAgICAgICAgICAgICAgICAmJiAhZGF0
YS5yZWFkcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCi0gICAgICAgICAgICAgICAgICAgICYm
ICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpKQorICAgICAgICAgICAgICAg
ICAgICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQorICAgICAgICAg
ICAgICAgICAgICAmJiAoIWRhdGEuZmVuY2UgfHwgIW1lbW9yeS0+aGFzRmVuY2UoKSkpCiAgICAg
ICAgICAgICAgICAgICAgIGRhdGEuc3RvcmVzQXRIZWFkLmFkZChtZW1vcnkpOwogICAgICAgICAg
ICAgICAgIGRhdGEucmVhZHMuYWRkKGVmZmVjdHMucmVhZHMpOwogCiAgICAgICAgICAgICAgICAg
aWYgKEhlYXBSYW5nZSB3cml0ZXMgPSBlZmZlY3RzLndyaXRlcykKICAgICAgICAgICAgICAgICAg
ICAgY2xvYmJlcihkYXRhLCB3cml0ZXMpOworICAgICAgICAgICAgICAgIGRhdGEuZmVuY2UgfD0g
ZWZmZWN0cy5mZW5jZTsKIAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkpCiAgICAgICAgICAg
ICAgICAgICAgIGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkpOwpAQCAtNDQ1LDgg
KzQ0OCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgZGF0YUxvZygiQmFkIG1lbW9yeSB2YWx1ZTogIiwgZGVlcER1bXAobV9wcm9jLCBtX3Zh
bHVlKSwgIlxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzgsNiArNDc5LDkgQEAg
cHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3Rv
cmVBZnRlckNsb2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXIm
IGZpbHRlcikKICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+
aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAg
IC8vIFdlIGNhbiBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBh
IHN0b3JlIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFu
eSBvcGVyYXRpb24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxp
a2UgaXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hl
bG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFu
IApAQCAtNjE0LDYgKzYxOCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpw
dHIsICIuLi5cbiIpOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZh
bHVlPigpLT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoTWVt
b3J5VmFsdWUqIG1hdGNoID0gbV9kYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5kKHB0ciwgZmls
dGVyKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYg
KzkyLDcgQEAgdm9pZCBnZW5lcmF0ZVRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlLAogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTA3CiAgICAg
fQogCisgICAgLy8gVGhpcyBwdXRzIHRoZSBJUiBpbiBxdWlya3MgbW9kZS4KICAgICBsb3dlck1h
Y3Jvcyhwcm9jZWR1cmUpOwogCiAgICAgaWYgKG9wdExldmVsID49IDEpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNl
dC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNC
bG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIlB1cmVOYU4uaCIKKyNpbmNsdWRlIDx3
dGYvQnViYmxlU29ydC5oPgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBJ
bnNlcnRpb25TZXQ7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJhc2ljQmxvY2s+CitjbGFzcyBHZW5l
cmljQmxvY2tJbnNlcnRpb25TZXQgeworcHVibGljOgorICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRp
b248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBCbG9ja0luc2VydGlvbjsKKyAgICAKKyAg
ICBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Js
b2NrPj4mIGJsb2NrcykKKyAgICAgICAgOiBtX2Jsb2NrcyhibG9ja3MpCisgICAgeworICAgIH0K
KyAgICAKKyAgICB2b2lkIGluc2VydChCbG9ja0luc2VydGlvbiYmIGluc2VydGlvbikKKyAgICB7
CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRpb24pKTsKKyAgICB9
CisKKyAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQgYSBnaXZlbiBpbmRleC4KKyAgICBCYXNp
Y0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQor
ICAgIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+IGJsb2NrKG5ldyBCYXNp
Y0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKKyAgICAgICAgQmFzaWNCbG9jayogcmVzdWx0
ID0gYmxvY2suZ2V0KCk7CisgICAgICAgIGluc2VydChCbG9ja0luc2VydGlvbihpbmRleCwgV1RG
TW92ZShibG9jaykpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyBJ
bnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVzdWFsbHkgeW91IHdp
bGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQorICAgIC8vIGFyZ3VtZW50LiBQYXNzaW5nIFBOYU4g
Y2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdiZWZvcmUnIGJsb2Nr
LiBUaGF0J3MKKyAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCisgICAgQmFzaWNCbG9jayog
aW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
CisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgoKSwgZnJlcXVlbmN5
ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5KCkpOworICAgIH0K
KworICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYWZ0ZXIgdGhlIGdpdmVuIGJsb2NrLgorICAg
IEJhc2ljQmxvY2sqIGluc2VydEFmdGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVl
bmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYWZ0ZXItPmluZGV4KCkg
KyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYWZ0ZXItPmZyZXF1ZW5j
eSgpKTsKKyAgICB9CisKKyAgICBib29sIGV4ZWN1dGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1f
aW5zZXJ0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IAorICAgICAgICAvLyBXZSBhbGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFu
eSBvcmRlci4gU28sIHdlIG5lZWQgdG8gc29ydCB0aGVtIGJlZm9yZQorICAgICAgICAvLyBydW5u
aW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMuIFdlIHN0cm9uZ2x5IHByZWZlciBhIHN0YWJsZSBz
b3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCisgICAgICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBidWJi
bGUgc29ydC4KKyAgICAgICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNl
cnRpb25zLmVuZCgpKTsKKyAgICAgICAgCisgICAgICAgIGV4ZWN1dGVJbnNlcnRpb25zKG1fYmxv
Y2tzLCBtX2luc2VydGlvbnMpOworICAgICAgICAKKyAgICAgICAgLy8gUHJ1bmUgb3V0IGVtcHR5
IGVudHJpZXMuIFRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzCisgICAgICAg
IC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxvY2sgbGlzdCBmcm9tIGdyb3dpbmcuCisgICAgICAg
IG1fYmxvY2tzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICAgICAgWyZdIChzdGQ6OnVuaXF1
ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gIWJsb2NrUHRyOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGluZGljZXMuCisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrcy5zaXplKCk7ICsraSkKKyAgICAgICAg
ICAgIG1fYmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+PiYgbV9ibG9ja3M7CisgICAgVmVjdG9yPEJsb2NrSW5zZXJ0aW9uLCA4PiBtX2luc2Vy
dGlvbnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KICAgICAKKyAgICBIZWFwUmFuZ2Ugb3BlcmF0b3J8
KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSGVh
cFJhbmdlKAorICAgICAgICAgICAgc3RkOjptaW4obV9iZWdpbiwgb3RoZXIubV9iZWdpbiksCisg
ICAgICAgICAgICBzdGQ6Om1heChtX2VuZCwgb3RoZXIubV9lbmQpKTsKKyAgICB9CisgICAgCiAg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW4gIT0gbV9l
bmQ7IH0KIAogICAgIHVuc2lnbmVkIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsMTEgQEAgVmFsdWUqIEluc2VydGlvblNl
dDo6aW5zZXJ0Qm90dG9tKHNpemVfdAogICAgIHJldHVybiBpbnNlcnRCb3R0b20oaW5kZXgsIGxp
a2VWYWx1ZS0+b3JpZ2luKCksIGxpa2VWYWx1ZS0+dHlwZSgpKTsKIH0KIAorVmFsdWUqIEluc2Vy
dGlvblNldDo6aW5zZXJ0Q2xvbmUoc2l6ZV90IGluZGV4LCBWYWx1ZSogdmFsdWUpCit7CisgICAg
cmV0dXJuIGluc2VydFZhbHVlKGluZGV4LCBtX3Byb2NlZHVyZS5jbG9uZSh2YWx1ZSkpOworfQor
CiB2b2lkIEluc2VydGlvblNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBi
dWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKIAogICAgIFZhbHVlKiBpbnNlcnRC
b3R0b20oc2l6ZV90IGluZGV4LCBPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBpbnNlcnRCb3R0
b20oc2l6ZV90IGluZGV4LCBWYWx1ZSopOworICAgIAorICAgIFZhbHVlKiBpbnNlcnRDbG9uZShz
aXplX3QgaW5kZXgsIFZhbHVlKik7CiAKICAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayopOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMSArMjksMTMgQEAKICNpZiBFTkFCTEUoQjNfSklU
KQogCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCisjaW5jbHVk
ZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNp
bmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgi
CiAjaW5jbHVkZSAiQjNDYXNlQ29sbGVjdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJCM0NvbnN0
UHRyVmFsdWUuaCIKKyNpbmNsdWRlICJCM0ZlbmNlVmFsdWUuaCIKICNpbmNsdWRlICJCM0luc2Vy
dGlvblNldElubGluZXMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCiAjaW5jbHVkZSAi
QjNQYXRjaHBvaW50VmFsdWUuaCIKQEAgLTQyLDYgKzQ0LDcgQEAKICNpbmNsdWRlICJCM1N0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzU3dpdGNoVmFsdWUuaCIKICNpbmNs
dWRlICJCM1Vwc2lsb25WYWx1ZS5oIgorI2luY2x1ZGUgIkIzVXNlQ291bnRzLmgiCiAjaW5jbHVk
ZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRl
ICJMaW5rQnVmZmVyLmgiCkBAIC01OCwxMSArNjEsMTQgQEAgcHVibGljOgogICAgICAgICA6IG1f
cHJvYyhwcm9jKQogICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAgICAg
LCBtX2luc2VydGlvblNldChwcm9jKQorICAgICAgICAsIG1fdXNlQ291bnRzKHByb2MpCiAgICAg
ewogICAgIH0KIAogICAgIGJvb2wgcnVuKCkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFtX3Byb2MuaGFzUXVpcmtzKCkpOworICAgICAgICAKICAgICAgICAgZm9yIChCYXNpY0Jsb2Nr
KiBibG9jayA6IG1fcHJvYykgewogICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwogICAgICAg
ICAgICAgcHJvY2Vzc0N1cnJlbnRCbG9jaygpOwpAQCAtNzIsNiArNzgsMTAgQEAgcHVibGljOgog
ICAgICAgICAgICAgbV9wcm9jLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgICAgICAgICBtX3By
b2MuaW52YWxpZGF0ZUNGRygpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGlz
IGluZGljYXRlcyB0aGF0IHdlJ3ZlIAorICAgICAgICBtX3Byb2Muc2V0SGFzUXVpcmtzKHRydWUp
OworICAgICAgICAKICAgICAgICAgcmV0dXJuIG1fY2hhbmdlZDsKICAgICB9CiAgICAgCkBAIC0x
ODUsNyArMTk1LDk2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1sb2FkIGZlbmNlLiBU
aGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8gdGVsbCB0aGUKKyAg
ICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxvYWQgbW90aW9uLgor
ICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAgICAgICAgICAgICAg
IGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT53
cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1bmxvY2sgYSBidW5j
aCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5y
ZXBsYWNlV2l0aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAorICAgICAg
ICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdD
QVM6IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0
b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgICAgIFdpZHRo
IHdpZHRoID0gYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIGV4
cGVjdGVkVmFsdWUgPSBhdG9taWMtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIC8vIE9uIEFSTSwgdGhlIGxvYWQgcGFydCBvZiB0aGUgQ0FTIGRvZXMgYSBsb2Fk
IHdpdGggemVybyBleHRlbnNpb24uIFRoZXJlZm9yZSwgd2UgbmVlZAorICAgICAgICAgICAgICAg
IC8vIHRvIHplcm8tZXh0ZW5kIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFz
a2VkRXhwZWN0ZWRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIGV4cGVjdGVkVmFsdWUsCisg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KG1faW5k
ZXgsIGV4cGVjdGVkVmFsdWUsIG1hc2sod2lkdGgpKSk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgYXRvbWljLT5jaGlsZCgwKSA9IG1hc2tlZEV4cGVjdGVkVmFsdWU7CisgICAg
ICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNo
Z0FkZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIGNhc2Ug
QXRvbWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnOiB7Cisg
ICAgICAgICAgICAgICAgLy8gT24gWDg2LCB0aGVzZSBtYXkgYWN0dWFsbHkgcmV0dXJuIGdhcmJh
Z2UgaW4gdGhlIGhpZ2ggYml0cy4gT24gQVJNNjQsIHRoZXNlIHNvcnRhCisgICAgICAgICAgICAg
ICAgLy8gemVyby1leHRlbmQgdGhlaXIgaGlnaCBiaXRzLCBleGNlcHQgdGhhdCB0aGUgaGlnaCBi
aXRzIG1pZ2h0IGdldCBwb2xsdXRlZCBieSBoaWdoCisgICAgICAgICAgICAgICAgLy8gYml0cyBp
biB0aGUgb3BlcmFuZC4gLiBTbywgZWl0aGVyIHdheSwgd2UgbmVlZCB0byB0aHJvdyBhIHNpZ24t
ZXh0ZW5kIG9uIHRoZXNlCisgICAgICAgICAgICAgICAgLy8gdGhpbmdzLgorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChtX3ZhbHVlLT5vcGNvZGUoKSA9PSBBdG9taWNYY2hnU3ViICYmIG1fdXNlQ291bnRzLm51
bVVzZXMobV92YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9uIHg4NiwgeGNo
Z2FkZCBpcyBiZXR0ZXIgdGhhbiB4Y2hnc3ViIGlmIGl0IGhhcyBhbnkgdXNlcnMuCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5zZXRLaW5kVW5zYWZlbHkoQXRvbWljWGNoZ0FkZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgxKSA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwg
TmVnLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBib29sIGV4ZW1wdCA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWlj
WGNoZ1N1YjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlbXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
aWYgKGV4ZW1wdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRv
bWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGgg
d2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3
VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICBtX2luZGV4LCBzaWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwgbV9vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENsb25lKG1faW5kZXgsIG1fdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElk
ZW50aXR5KG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
QEAgLTQ3MCw2ICs1NjksNyBAQCBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwogICAg
IEJsb2NrSW5zZXJ0aW9uU2V0IG1fYmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgSW5zZXJ0aW9uU2V0
IG1faW5zZXJ0aW9uU2V0OworICAgIFVzZUNvdW50cyBtX3VzZUNvdW50czsKICAgICBCYXNpY0Js
b2NrKiBtX2Jsb2NrOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CiAgICAgVmFsdWUqIG1fdmFsdWU7
CkBAIC00NzcsMjEgKzU3NywxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jaGFuZ2VkIHsgZmFs
c2UgfTsKIH07CiAKLWJvb2wgbG93ZXJNYWNyb3NJbXBsKFByb2NlZHVyZSYgcHJvYykKLXsKLSAg
ICBMb3dlck1hY3JvcyBsb3dlck1hY3Jvcyhwcm9jKTsKLSAgICByZXR1cm4gbG93ZXJNYWNyb3Mu
cnVuKCk7Ci19Ci0KIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBib29sIGxvd2VyTWFjcm9z
KFByb2NlZHVyZSYgcHJvYykKIHsKLSAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvYywgImxv
d2VyTWFjcm9zIik7Ci0gICAgYm9vbCByZXN1bHQgPSBsb3dlck1hY3Jvc0ltcGwocHJvYyk7Ci0g
ICAgaWYgKHNob3VsZFZhbGlkYXRlSVIoKSkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxvd2Vy
TWFjcm9zSW1wbChwcm9jKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBMb3dlck1hY3JvcyBs
b3dlck1hY3Jvcyhwcm9jKTsKKyAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAkocmV2
aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NB
ZnRlck9wdGltaXphdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTUgKzE1NiwxNCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBSb3RMOiB7CiAgICAgICAgICAgICAgICAgLy8g
QVJNNjQgZG9lc24ndCBoYXZlIGEgcm90YXRlIGxlZnQuCiAgICAgICAgICAgICAgICAgaWYgKGlz
QVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDEp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNl
dC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVl
LT5jaGlsZCgwKSwgbmV3U2hpZnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+
cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG5l
d1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBOZWcsIG1fdmFs
dWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgICAgIFZh
bHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIs
IG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOworICAgICAg
ICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDEyICsyOCwxNCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUg
IkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWlyQ0NhbGxTcGVjaWFsLmgiCiAj
aW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpckluc2VydGlvblNldC5oIgogI2luY2x1
ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tTbG90LmgiCiAjaW5jbHVk
ZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrV29ya2xpc3Qu
aCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTcyLDYgKzc0LDE2IEBAIG5hbWVzcGFj
ZSB7CiAKIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCisvLyBGSVhNRTogV2Ugd291bGRu
J3QgbmVlZCB0aGlzIGlmIEFpciBzdXBwb3J0ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFpcjo6S2lu
ZC4KKy8vIE9PUFMhISEgKG5lZWQgYSBidWcgVVJMKQorI2RlZmluZSBPUENPREVfRk9SX1dJRFRI
KG9wY29kZSwgd2lkdGgpICggXAorICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDgg
OiBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAorICAgICh3aWR0
aCkgPT0gV2lkdGgzMiA/IG9wY29kZSAjIyAzMiA6IFwKKyAgICBvcGNvZGUgIyMgNjQpCisjZGVm
aW5lIE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAorICAgICh3
aWR0aCkgPT0gV2lkdGg2NCA/IG9wY29kZSAjIyA2NCA6IG9wY29kZSAjIyAzMikKKwogY2xhc3Mg
TG93ZXJUb0FpciB7CiBwdWJsaWM6CiAgICAgTG93ZXJUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVy
ZSkKQEAgLTgzLDYgKzk1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RvbWluYXRvcnMocHJv
Y2VkdXJlLmRvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX3Byb2NlZHVyZShwcm9jZWR1cmUpCiAg
ICAgICAgICwgbV9jb2RlKHByb2NlZHVyZS5jb2RlKCkpCisgICAgICAgICwgbV9ibG9ja0luc2Vy
dGlvblNldChtX2NvZGUpCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICAgICAgLCBt
X2VheChYODZSZWdpc3RlcnM6OmVheCkKKyAgICAgICAgLCBtX2VjeChYODZSZWdpc3RlcnM6OmVj
eCkKKyAgICAgICAgLCBtX2VkeChYODZSZWdpc3RlcnM6OmVkeCkKKyNlbmRpZgogICAgIHsKICAg
ICB9CiAKQEAgLTEyNCwxNCArMTQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3RlZCBh
ZGRyZXNzIGV4cHJlc3Npb24gYmVmb3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhlIGxv
b3AuCiAgICAgICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUuYmxv
Y2tzSW5QcmVPcmRlcigpKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAgICAg
ICAgICAvLyBSZXNldCBzb21lIHN0YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7
CiAKICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAK
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2Vy
aW5nIEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAgICAgICAv
LyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KKyAg
ICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3Vj
Y2Vzc29ycygpKSB7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNj
ZXNzb3JzKCkuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9j
ayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3ko
KSkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBpbiBy
ZXZlcnNlIG9yZGVyIHNvIHdlIHNlZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBhbGxv
d3MgdXMKICAgICAgICAgICAgIC8vIHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5LgogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAtMTQ5
LDE5ICsxNzEsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNv
bnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAgICAgICAg
Ly8gaXQgaW4gcmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMu
c2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0
c1tpXSkKLSAgICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBlbmRJ
bnN0KFdURk1vdmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtl
IHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAgICAg
ICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29y
cygpKSB7Ci0gICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3Jz
KCkuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Js
b2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG1f
YmxvY2tUb0Jsb2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fYmxv
Y2tJbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0IGlu
c2VydGlvblNldChtX2NvZGUpOwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xvZ3Vl
KQpAQCAtNTYyLDExICs1NzUsMTkgQEAgcHJpdmF0ZToKICAgICAKICAgICBBcmdQcm9taXNlIGxv
YWRQcm9taXNlQW55T3Bjb2RlKFZhbHVlKiBsb2FkVmFsdWUpCiAgICAgeworICAgICAgICBSRUxF
QVNFX0FTU0VSVChsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKICAgICAgICAgaWYgKCFj
YW5CZUludGVybmFsKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAg
ICAgIGlmIChjcm9zc2VzSW50ZXJmZXJlbmNlKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gQXJnKCk7Ci0gICAgICAgIEFyZ1Byb21pc2UgcmVzdWx0KGFkZHIobG9hZFZhbHVlKSwgbG9h
ZFZhbHVlKTsKKyAgICAgICAgLy8gT24geDg2LCBhbGwgbG9hZHMgaGF2ZSBmZW5jZXMuIERvaW5n
IHRoaXMga2luZCBvZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gd2lsbCBtb3ZlIHRoZSBsb2FkLAor
ICAgICAgICAvLyBidXQgdGhhdCdzIGZpbmUgYmVjYXVzZSBvdXIgaW50ZXJmZXJlbmNlIGFuYWx5
c2lzIHN0b3BzIHRoZSBtb3Rpb24gb2YgZmVuY2VzIGFyb3VuZCBvdGhlcgorICAgICAgICAvLyBm
ZW5jZXMuIFNvLCBhbnkgbG9hZCBtb3Rpb24gd2UgaW50cm9kdWNlIGhlcmUgd291bGQgbm90IGJl
IG9ic2VydmFibGUuCisgICAgICAgIGlmICghaXNYODYoKSAmJiBsb2FkVmFsdWUtPmFzPE1lbW9y
eVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIEFyZygpOworICAgICAg
ICBBcmcgbG9hZEFkZHIgPSBhZGRyKGxvYWRWYWx1ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGxvYWRBZGRyKTsKKyAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQobG9hZEFkZHIsIGxvYWRWYWx1
ZSk7CiAgICAgICAgIGlmIChsb2FkVmFsdWUtPnRyYXBzKCkpCiAgICAgICAgICAgICByZXN1bHQu
c2V0VHJhcHModHJ1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04OTgsMTEgKzkxOSw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpCiAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAodmFsdWUpLCB0bXAo
bV92YWx1ZSkpOwotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKGFtb3VudCksIFRtcChYODZSZWdp
c3RlcnM6OmVjeCkpOwotICAgICAgICBhcHBlbmQob3Bjb2RlLCBUbXAoWDg2UmVnaXN0ZXJzOjpl
Y3gpLCB0bXAobV92YWx1ZSkpOwotI2VuZGlmCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1v
dW50KSwgbV9lY3gpOworICAgICAgICBhcHBlbmQob3Bjb2RlLCBtX2VjeCwgdG1wKG1fdmFsdWUp
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNv
ZGUgb3Bjb2RlNjQ+CkBAIC05MzEsMTAgKzk1MCwxNiBAQCBwcml2YXRlOgogICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIENvbW11dGF0aXZpdHkgY29t
bXV0YXRpdml0eSA9IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVCaW5P
cChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOworICAgICAgICAKICAgICAgICAgQWlyOjpP
cGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIGxlZnQt
PnR5cGUoKSk7CiAgICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAKKyAgICAgICAgLy8gT24geDg2LCBhbGwgc3RvcmVzIGhh
dmUgZmVuY2VzLCBhbmQgdGhpcyBpc24ndCByZW9yZGVyaW5nIHRoZSBzdG9yZSBpdHNlbGYuCisg
ICAgICAgIGlmICghaXNYODYoKSAmJiBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVu
Y2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIEFyZyBz
dG9yZUFkZHIgPSBhZGRyKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlQoc3RvcmVBZGRyKTsKIApA
QCAtOTk0LDExICsxMDE5LDUwIEBAIHByaXZhdGU6CiAKICAgICAgICAgcmV0dXJuIEluc3QobW92
ZSwgbV92YWx1ZSwgdG1wKHZhbHVlKSwgZGVzdCk7CiAgICAgfQorICAgIAorICAgIEFpcjo6T3Bj
b2RlIHN0b3JlT3Bjb2RlKFdpZHRoIHdpZHRoLCBCYW5rIGJhbmssIGJvb2wgcmVsZWFzZSkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICAgICAgY2FzZSBXaWR0aDg6CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAgICAgICAgICAgIHJldHVybiBy
ZWxlYXNlID8gU3RvcmVSZWw4IDogQWlyOjpTdG9yZTg7CisgICAgICAgIGNhc2UgV2lkdGgxNjoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0
dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDE2IDogQWlyOjpTdG9yZTE2OworICAgICAgICBjYXNlIFdp
ZHRoMzI6CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDMyIDogTW92ZTMyOwor
ICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVs
ZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChpczY0Qml0KCkpOworICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7Cisg
ICAgICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3Rv
cmVSZWw2NCA6IE1vdmU7CisgICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZURvdWJs
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bj
b2RlIHN0b3JlT3Bjb2RlKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVl
KiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1lbW9yeS0+aXNTdG9yZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0b3JlT3Bjb2RlKG1lbW9y
eS0+bG9hZFN0b3JlV2lkdGgoKSwgbWVtb3J5LT5hY2Nlc3NCYW5rKCksIG1lbW9yeS0+aGFzRmVu
Y2UoKSk7CisgICAgfQogCiAgICAgSW5zdCBjcmVhdGVTdG9yZShWYWx1ZSogdmFsdWUsIGNvbnN0
IEFyZyYgZGVzdCkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBtb3Zl
Rm9yVHlwZSh2YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVP
cGNvZGUsIHZhbHVlLCBkZXN0KTsKKyAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IHN0
b3JlT3Bjb2RlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUs
IHZhbHVlLT5jaGlsZCgwKSwgZGVzdCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJncz4KQEAgLTEwMDYsNyArMTA3MCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBh
cHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIGNyZWF0ZVN0b3JlKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLikpKTsKICAgICB9Ci0KKyAgICAKICAgICBBaXI6Ok9wY29kZSBtb3ZlRm9yVHlw
ZShUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEwNzMsNyAr
MTEzNyw0MSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5k
KGluc3QpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9u
cyhBaXI6OkJhc2ljQmxvY2sqIHRhcmdldCkKKyAgICB7CisgICAgICAgIC8vIE5vdyBhcHBlbmQg
dGhlIGluc3RydWN0aW9ucy4gbV9pbnN0cyBjb250YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIs
IHNvIHdlIHByb2Nlc3MKKyAgICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9pbnN0cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGZvciAoSW5z
dCYgaW5zdCA6IG1faW5zdHNbaV0pCisgICAgICAgICAgICAgICAgdGFyZ2V0LT5hcHBlbmRJbnN0
KFdURk1vdmUoaW5zdCkpOworICAgICAgICB9CisgICAgICAgIG1faW5zdHMucmVzaXplKDApOwor
ICAgIH0KKyAgICAKKyAgICBBaXI6OkJhc2ljQmxvY2sqIG5ld0Jsb2NrKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKG1fYmxvY2tUb0Jsb2Nr
W21fYmxvY2tdKTsKKyAgICB9CiAKKyAgICAvLyBOT1RFOiBUaGlzIHdpbGwgY3JlYXRlIGEgY29u
dGludWF0aW9uIGJsb2NrIChgbmV4dEJsb2NrYCkgKmFmdGVyKiBhbnkgYmxvY2tzIHlvdSd2ZSBj
cmVhdGVkIHVzaW5nCisgICAgLy8gbmV3QmxvY2soKS4gU28sIGl0J3MgcHJlZmVyYWJsZSB0byBj
cmVhdGUgYWxsIG9mIHlvdXIgYmxvY2tzIHVwZnJvbnQgdXNpbmcgbmV3QmxvY2soKS4gQWxzbyBu
b3RlCisgICAgLy8gdGhhdCBhbnkgY29kZSB5b3UgZW1pdCBiZWZvcmUgdGhpcyB3aWxsIGJlIHBy
ZXBlbmRlZCB0byB0aGUgY29udGludWF0aW9uLCBhbmQgYW55IGNvZGUgeW91IGVtaXQKKyAgICAv
LyBhZnRlciB0aGlzIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHByZXZpb3VzIGJsb2NrLgorICAg
IHZvaWQgc3BsaXRCbG9jayhBaXI6OkJhc2ljQmxvY2sqJiBwcmV2aW91c0Jsb2NrLCBBaXI6OkJh
c2ljQmxvY2sqJiBuZXh0QmxvY2spCisgICAgeworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJs
b2NrID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9ja107CisgICAgICAgIAorICAgICAgICBwcmV2aW91
c0Jsb2NrID0gYmxvY2s7CisgICAgICAgIG5leHRCbG9jayA9IG1fYmxvY2tJbnNlcnRpb25TZXQu
aW5zZXJ0QWZ0ZXIoYmxvY2spOworICAgICAgICAKKyAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5z
dHJ1Y3Rpb25zKG5leHRCbG9jayk7CisgICAgICAgIG5leHRCbG9jay0+c3VjY2Vzc29ycygpID0g
YmxvY2stPnN1Y2Nlc3NvcnMoKTsKKyAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigp
OworICAgICAgICAKKyAgICAgICAgbV9pbnN0cy5hcHBlbmQoVmVjdG9yPEluc3Q+KCkpOworICAg
IH0KKyAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+
CiAgICAgVCogZW5zdXJlU3BlY2lhbChUKiYgZmllbGQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50
cykKICAgICB7CkBAIC0xMTIzLDcgKzEyMjEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoKICAgICAg
ICAgICAgICAgICBhcmcgPSBBcmc6OmNhbGxBcmcodmFsdWUucmVwKCkub2Zmc2V0RnJvbVNQKCkp
OwotICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlLnZhbHVlKCksIGFyZyk7CisgICAg
ICAgICAgICAgICAgYXBwZW5kU3RvcmUobW92ZUZvclR5cGUodmFsdWUudmFsdWUoKS0+dHlwZSgp
KSwgdmFsdWUudmFsdWUoKSwgYXJnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTE5NjEsNiArMjA1OSwzMDggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRYODZEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7Cisg
ICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7CisgICAgICAgIEFpcjo6T3Bj
b2RlIGRpdjsKKyAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSBJbnQzMjoKKyAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9E
b3VibGVXb3JkMzI7CisgICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEludDY0OgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29y
ZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7CisgICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKKyAgICAgICAgVG1wIHJl
c3VsdCA9IG9wID09IERpdiA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5kKE1vdmUs
IHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKGNvbnZlcnRU
b0RvdWJsZVdvcmQsIG1fZWF4LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBt
X2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1
bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpP
cGNvZGUgb3ApCisgICAgeworICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBl
KCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CisKKyAgICAgICAgQVNTRVJUKG9w
ID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9PSBVRGl2
ID8gbV9lYXggOiBtX2VkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNo
aWxkKDApKSwgbV9lYXgpOworICAgICAgICBhcHBlbmQoWG9yNjQsIG1fZWR4LCBtX2VkeCk7Cisg
ICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7
CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorICAg
IAorICAgIEFpcjo6T3Bjb2RlIGxvYWRMaW5rT3Bjb2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZlbmNlID8gT1BDT0RFX0ZPUl9XSURUSChMb2FkTGlu
a0FjcSwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChMb2FkTGluaywgd2lkdGgpOworICAgIH0K
KyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZUNvbmRPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wg
ZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKFN0
b3JlQ29uZFJlbCwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmQsIHdpZHRoKTsK
KyAgICB9CisgICAgCisgICAgLy8gVGhpcyBjYW4gZW1pdCBjb2RlIGZvciB0aGUgZm9sbG93aW5n
IHBhdHRlcm5zOgorICAgIC8vIEF0b21pY1dlYWtDQVMKKyAgICAvLyBCaXRYb3IoQXRvbWljV2Vh
a0NBUywgMSkKKyAgICAvLyBBdG9taWNTdHJvbmdDQVMKKyAgICAvLyBFcXVhbChBdG9taWNTdHJv
bmdDQVMsIGV4cGVjdGVkKQorICAgIC8vIE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0
ZWQpCisgICAgLy8gQnJhbmNoKEF0b21pY1dlYWtDQVMpCisgICAgLy8gQnJhbmNoKEVxdWFsKEF0
b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vIEJyYW5jaChOb3RFcXVhbChBdG9taWNT
dHJvbmdDQVMsIGV4cGVjdGVkKSkKKyAgICAvLworICAgIC8vIEl0IGFzc3VtZXMgdGhhdCBhdG9t
aWNWYWx1ZSBwb2ludHMgdG8gdGhlIENBUywgYW5kIG1fdmFsdWUgcG9pbnRzIHRvIHRoZSBpbnN0
cnVjdGlvbiBiZWluZworICAgIC8vIGdlbmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBj
b25zdW1lZCBldmVyeXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc3VtZWQuCisgICAgdm9pZCBh
cHBlbmRDQVMoVmFsdWUqIGF0b21pY1ZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGF0b21pYyk7CisgICAgICAgIAorICAgICAgICBib29sIGlz
QnJhbmNoID0gbV92YWx1ZS0+b3Bjb2RlKCkgPT0gQnJhbmNoOworICAgICAgICBib29sIGlzU3Ry
b25nID0gYXRvbWljLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wg
cmV0dXJuc09sZFZhbHVlID0gbV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTOwor
ICAgICAgICAKKyAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7
CisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworCisgICAgICAgIFRtcCB2YWx1
ZVJlc3VsdFRtcDsKKyAgICAgICAgVG1wIGJvb2xSZXN1bHRUbXA7CisgICAgICAgIGlmIChyZXR1
cm5zT2xkVmFsdWUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbnZlcnQpOworICAg
ICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSB0bXAobV92YWx1ZSk7CisgICAgICAgICAgICBib29s
UmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFu
Y2gpIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7Cisg
ICAgICAgICAgICBib29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOwor
ICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgVG1wIHN1Y2Nlc3NCb29sUmVzdWx0VG1wOworICAgICAgICBpZiAoaXNT
dHJvbmcgJiYgIWlzQnJhbmNoKQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBt
X2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xS
ZXN1bHRUbXAgPSBib29sUmVzdWx0VG1wOworCisgICAgICAgIFRtcCBleHBlY3RlZFZhbHVlVG1w
ID0gdG1wKGF0b21pYy0+Y2hpbGQoMCkpOworICAgICAgICBUbXAgbmV3VmFsdWVUbXAgPSB0bXAo
YXRvbWljLT5jaGlsZCgxKSk7CisgICAgICAgIAorICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9j
ayBzdWNjZXNzOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBmYWlsdXJlOworICAgICAg
ICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBtX2Jsb2NrVG9CbG9ja1tt
X2Jsb2NrXS0+c3VjY2Vzc29yKGludmVydCk7CisgICAgICAgICAgICBmYWlsdXJlID0gbV9ibG9j
a1RvQmxvY2tbbV9ibG9ja10tPnN1Y2Nlc3NvcighaW52ZXJ0KTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92
ZUZvclR5cGUoYXRvbWljLT5vcGVyYXRpb25UeXBlKCkpLCBpbW1PclRtcChhdG9taWMtPmNoaWxk
KDApKSwgbV9lYXgpOworICAgICAgICAgICAgaWYgKHJldHVybnNPbGRWYWx1ZSkgeworICAgICAg
ICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0cm9uZ0NBUywgd2lkdGgp
LCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIGFwcGVuZChy
ZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5vcGVyYXRpb25UeXBlKCkpLCBtX2VheCwgdmFsdWVS
ZXN1bHRUbXApOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc0JyYW5jaCkgeworICAgICAgICAg
ICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9uZ0NBUywgd2lk
dGgpLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3
VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW21fYmxv
Y2tdLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIGZhaWx1cmUpOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FT
LCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChpbnZlcnQgPyBNYWNyb0Fzc2VtYmxlcjo6RmFpbHVy
ZSA6IE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgsIHRtcChhdG9taWMtPmNoaWxkKDEp
KSwgYWRkcmVzcywgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAg
IC8vIFdlIHdpc2ggdG8gZW1pdDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9v
cDoKKyAgICAgICAgLy8gICAgIExvYWRMaW5rCisgICAgICAgIC8vICAgICBCcmFuY2ggTm90RXF1
YWwKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVuOiNmYWlsLCBFbHNlOiAjc3RvcmUKKyAg
ICAgICAgLy8gQmxvY2sgI3N0b3JlOgorICAgICAgICAvLyAgICAgU3RvcmVDb25kCisgICAgICAg
IC8vICAgICBYb3IgJDEsICVyZXN1bHQgICAgPC0tLSBvbmx5IGlmICFpbnZlcnQKKyAgICAgICAg
Ly8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAgICAvLyBC
bG9jayAjZmFpbDoKKyAgICAgICAgLy8gICAgIE1vdmUgJGludmVydCwgJXJlc3VsdAorICAgICAg
ICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8v
IEJsb2NrICNkb25lOgorICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BC
bG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3RvcmVCbG9jayA9
IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3VjY2Vzc0Jsb2NrID0gbnVs
bHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCAmJiBpc1N0cm9uZykKKyAgICAgICAgICAgIHN1
Y2Nlc3NCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogZmFpbEJs
b2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCkKKyAgICAgICAgICAgIGZhaWxC
bG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3Ryb25nRmFpbEJs
b2NrOworICAgICAgICBpZiAoaXNTdHJvbmcpCisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2sg
PSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBjb21wYXJpc29uRmFp
bDsKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sgd2Vha0ZhaWw7CisgICAgICAgIGlmIChp
c1N0cm9uZykgeworICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBzdHJvbmdGYWlsQmxvY2s7
CisgICAgICAgICAgICB3ZWFrRmFpbCA9IHJlbG9vcEJsb2NrOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKGlzQnJhbmNoKQorICAgICAgICAgICAgICAgIGNvbXBhcmlzb25GYWls
ID0gZmFpbHVyZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21wYXJpc29u
RmFpbCA9IGZhaWxCbG9jazsKKyAgICAgICAgICAgIHdlYWtGYWlsID0gZmFpbHVyZTsKKyAgICAg
ICAgfQorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFpcjo6
QmFzaWNCbG9jayogZG9uZUJsb2NrOworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ssIGRv
bmVCbG9jayk7CisgICAgICAgIAorICAgICAgICBhcHBlbmQoQWlyOjpKdW1wKTsKKyAgICAgICAg
YmVnaW5CbG9jay0+c2V0U3VjY2Vzc29ycyhyZWxvb3BCbG9jayk7CisgICAgICAgIAorICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKGxvYWRMaW5rT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0Zl
bmNlKCkpLCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcyk7CisgICAgICAgIHJlbG9v
cEJsb2NrLT5hcHBlbmQoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoQnJhbmNoLCB3aWR0aCks
IG1fdmFsdWUsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpLCB2YWx1ZVJl
c3VsdFRtcCwgZXhwZWN0ZWRWYWx1ZVRtcCk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5zZXRTdWNj
ZXNzb3JzKGNvbXBhcmlzb25GYWlsLCBzdG9yZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHN0
b3JlQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2Uo
KSksIG1fdmFsdWUsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCk7
CisgICAgICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5k
KEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJv
KSwgYm9vbFJlc3VsdFRtcCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgICAgIHN0b3JlQmxv
Y2stPnNldFN1Y2Nlc3NvcnMoc3VjY2Vzcywgd2Vha0ZhaWwpOworICAgICAgICAgICAgZG9uZUJs
b2NrLT5zdWNjZXNzb3JzKCkuY2xlYXIoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFk
b25lQmxvY2stPnNpemUoKSk7CisgICAgICAgICAgICBkb25lQmxvY2stPmFwcGVuZChBaXI6Ok9v
cHMsIG1fdmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGlzU3Ryb25n
KSB7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92
YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgc3VjY2Vzc0Jvb2xSZXN1
bHRUbXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0
U3VjY2Vzc29ycyhzdWNjZXNzQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6
OmltbSghaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICAgICAgc3VjY2Vzc0Js
b2NrLT5hcHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNz
QmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpbnZlcnQpCisgICAgICAgICAgICAgICAgICAgIHN0b3JlQmxv
Y2stPmFwcGVuZChYb3IzMiwgbV92YWx1ZSwgQXJnOjpiaXRJbW0oMSksIGJvb2xSZXN1bHRUbXAs
IGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN0b3Jl
QmxvY2stPmFwcGVuZChBaXI6Okp1bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN0b3Jl
QmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgZmFpbEJsb2NrLT5hcHBlbmQoTW92ZSwgbV92YWx1ZSwgQXJnOjpp
bW0oaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICBmYWlsQmxvY2stPmFwcGVu
ZChBaXI6Okp1bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgZmFpbEJsb2NrLT5zZXRTdWNjZXNz
b3JzKGRvbmVCbG9jayk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1N0cm9u
ZykgeworICAgICAgICAgICAgVG1wIHRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAg
ICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMt
Pmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcywgdG1wKTsKKyAg
ICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwg
QXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgdG1wLCBBcmc6OmJpdEltbSgtMSkp
OworICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGZhaWxCbG9jaywg
cmVsb29wQmxvY2spOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGJvb2wgYXBwZW5kVm9p
ZEF0b21pYyhBaXI6Ok9wY29kZSBhdG9taWNPcGNvZGUpCisgICAgeworICAgICAgICBpZiAobV91
c2VDb3VudHMubnVtVXNlcyhtX3ZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgCisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChpc1ZhbGlkRm9ybShhdG9taWNPcGNvZGUsIEFyZzo6SW1tLCBhZGRyZXNzLmtp
bmQoKSkgJiYgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgYXBwZW5kKGF0
b21pY09wY29kZSwgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzVmFsaWRG
b3JtKGF0b21pY09wY29kZSwgQXJnOjpUbXAsIGFkZHJlc3Mua2luZCgpKSkgeworICAgICAgICAg
ICAgYXBwZW5kKGF0b21pY09wY29kZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kR2VuZXJhbEF0b21pYyhB
aXI6Ok9wY29kZSBvcGNvZGUpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0g
bV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBBcmcgYWRkcmVz
cyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAgIFRtcCBvbGRWYWx1ZSA9IG1fY29kZS5uZXdUbXAo
R1ApOworICAgICAgICBUbXAgbmV3VmFsdWUgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAg
CisgICAgICAgIC8vIFdlIG5lZWQgYSBDQVMgbG9vcCBvciBhIExML1NDIGxvb3AuIFVzaW5nIHBy
ZXBhcmUvYXR0ZW1wdCBqYXJnb24sIHdlIHdhbnQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJs
b2NrICNyZWxvb3A6CisgICAgICAgIC8vICAgICBQcmVwYXJlCisgICAgICAgIC8vICAgICBvcGNv
ZGUKKyAgICAgICAgLy8gICAgIEF0dGVtcHQKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVu
OiNkb25lLCBFbHNlOiNyZWxvb3AKKyAgICAgICAgLy8gQmxvY2sgI2RvbmU6CisgICAgICAgIC8v
ICAgICBNb3ZlIG9sZFZhbHVlLCByZXN1bHQKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChyZWxh
eGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwgdG1wKGF0b21pYykpOwor
ICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2Nr
KCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpC
YXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9u
ZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChBaXI6Okp1bXApOworICAgICAgICBi
ZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAgICAg
IEFpcjo6T3Bjb2RlIHByZXBhcmVPcGNvZGU7CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkgeworICAgICAgICAgICAg
Y2FzZSBXaWR0aDg6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IExvYWQ4U2lnbmVk
RXh0ZW5kVG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lk
dGgxNjoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDE2U2lnbmVkRXh0ZW5k
VG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgzMjoK
KyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTW92ZTMyOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAgICAgICAgIHByZXBh
cmVPcGNvZGUgPSBNb3ZlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsK
KyAgICAgICAgICAgIG9wY29kZSA9IGxvYWRMaW5rT3Bjb2RlKGF0b21pYy0+b3BlcmF0aW9uV2lk
dGgoKSwgYXRvbWljLT5oYXNGZW5jZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZWxvb3BCbG9j
ay0+YXBwZW5kKHByZXBhcmVPcGNvZGUsIG1fdmFsdWUsIGFkZHJlc3MsIG9sZFZhbHVlKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChvcGNvZGUgIT0gQWlyOjpOb3ApIHsKKyAgICAgICAgICAgIGlm
IChpbW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwg
QXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5k
KG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOworICAgICAgICAgICAgZWxzZSBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwg
QXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5k
KG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFw
cGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBtX3ZhbHVlLCBvbGRWYWx1
ZSwgbmV3VmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChpbW0oYXRvbWljLT5jaGlsZCgwKSkg
JiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpUbXApKQorICAgICAgICAgICAg
ICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+
Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+
Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgQWlyOjpPcGNvZGUgY2FzT3Bjb2RlID0gT1BD
T0RFX0ZPUl9XSURUSChCcmFuY2hBdG9taWNTdHJvbmdDQVMsIGF0b21pYy0+b3BlcmF0aW9uV2lk
dGgoKSk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlw
ZShhdG9taWMtPnR5cGUoKSksIG1fdmFsdWUsIG9sZFZhbHVlLCBtX2VheCk7CisgICAgICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKGNhc09wY29kZSwgbV92YWx1ZSwgQXJnOjpzdGF0dXNDb25k
KE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7Cisg
ICAgICAgICAgICBUbXAgYm9vbFJlc3VsdCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAg
ICAgcmVsb29wQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUoYXRvbWljLT5vcGVyYXRpb25X
aWR0aCgpLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZSwgYWRkcmVzcywg
Ym9vbFJlc3VsdCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3Qz
MiwgbV92YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3Vs
dCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgfQorICAgICAgICByZWxvb3BCbG9jay0+c2V0
U3VjY2Vzc29ycyhkb25lQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgdm9p
ZCBsb3dlcigpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CkBA
IC0xOTcxLDMwICsyMzcxLDUwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIExvYWQ6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92
YWx1ZSwgbW92ZUZvclR5cGUobV92YWx1ZS0+dHlwZSgpKSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVl
KSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92
YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUg
PSBBaXI6Ok9vcHM7CisgICAgICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAg
ICAgICAgICAgICAgc3dpdGNoIChtZW1vcnktPnR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNh
c2UgSW50MzI6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3EzMjsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAg
ICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTY0OworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBvcGNv
ZGUgPSBtb3ZlRm9yVHlwZShtZW1vcnktPnR5cGUoKSk7CisgICAgICAgICAgICBhcHBlbmQodHJh
cHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1f
dmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIExvYWQ4UzogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBMb2FkOFNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRt
cChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIg
OiBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0
KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQ4Wjog
ewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOCwgbV92YWx1
ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29k
ZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRB
Y3E4IDogTG9hZDg7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9w
Y29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQxNlM6IHsKLSAgICAgICAg
ICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiwg
bV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/
IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAg
ICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZaOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBp
bmdJbnN0KG1fdmFsdWUsIExvYWQxNiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFs
dWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNiA6IExvYWQxNjsKKyAgICAgICAgICAg
IGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFs
dWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCisg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBBZGQ6IHsKICAgICAgICAgICAgIGlmICh0cnlBcHBl
bmRMZWEoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDkyLDcgKzI1MTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmlzQ2hpbGwoKSkKICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwogICAgICAgICAgICAgaWYgKGlzSW50KG1f
dmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAgIGxvd2VyWDg2RGl2
KERpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2RGl2KERpdik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKCFpc1g4NigpIHx8
IGlzRmxvYXQobV92YWx1ZS0+dHlwZSgpKSk7CkBAIC0yMTAzLDcgKzI1MjMsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIGNhc2UgVURpdjogewogICAgICAgICAgICAgaWYgKGlzSW50KG1fdmFsdWUt
PnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAgIGxvd2VyWDg2VURpdihVRGl2
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVEaXYpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjExNywxMyArMjUzNywxMyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIE1vZDogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYo
KSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV92YWx1ZS0+aXNDaGlsbCgpKTsKLSAg
ICAgICAgICAgIGxvd2VyWDg2RGl2KE1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZEaXYoTW9k
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgVU1vZDog
ewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7Ci0gICAgICAgICAgICBsb3dl
clg4NlVEaXYoVU1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVNb2QpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxNjIsMTAgKzI1ODIsMjggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPE5vdDMyLCBOb3Q2ND4obV92YWx1ZS0+Y2hp
bGQoMCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgLy8gVGhpcyBwYXR0ZXJuIGlzIHN1cGVyIHVzZWZ1bCBvbiBib3Ro
IHg4NiBhbmQgQVJNNjQsIHNpbmNlIHRoZSBpbnZlcnNpb24gb2YgdGhlIENBUyByZXN1bHQKKyAg
ICAgICAgICAgIC8vIGNhbiBiZSBkb25lIHdpdGggemVybyBjb3N0IG9uIHg4NiAoanVzdCBmbGlw
IHRoZSBzZXQgZnJvbSBFIHRvIE5FKSBhbmQgaXQncyBhIHByb2dyZXNzaW9uCisgICAgICAgICAg
ICAvLyBvbiBBUk02NCAoc2luY2UgU1RYIHJldHVybnMgMCBvbiBzdWNjZXNzLCBzbyBvcmRpbmFy
aWx5IHdlIGhhdmUgdG8gZmxpcCBpdCkuCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQo
MSktPmlzSW50KDEpCisgICAgICAgICAgICAgICAgJiYgaXNBdG9taWNDQVMobV92YWx1ZS0+Y2hp
bGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwobV92YWx1
ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1ZS0+
Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLT5jaGlsZCgwKSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxYb3IzMiwgWG9yNjQsIFhvckRvdWJsZSwgWG9y
RmxvYXQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwg
bV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBhcHBlbmRVbk9wPERlcGVuZDMyLCBEZXBlbmQ2
ND4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBTaGw6IHsKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+
aXNJbnQzMigxKSkgewpAQCAtMjI2Niw3ICsyNzA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlVG9T
dG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBh
ZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMjg3
LDcgKzI3MjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWly
OjpTdG9yZTgsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBl
bmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0yMzA4LDcgKzI3NDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTE2LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkp
OworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjQxNiw3ICsyODU0LDIyIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEVxdWFsOgotICAgICAgICBjYXNlIE5vdEVx
dWFsOgorICAgICAgICBjYXNlIE5vdEVxdWFsOiB7CisgICAgICAgICAgICBpZiAobV92YWx1ZS0+
Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICYm
IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSA9PSBtX3ZhbHVlLT5jaGlsZCgxKQorICAgICAg
ICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hp
bGQoMSkpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFs
dWUtPmNoaWxkKDEpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY29tbWl0
SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVuZENBUyht
X3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChjcmVhdGVDb21wYXJlKG1fdmFsdWUpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
TGVzc1RoYW46CiAgICAgICAgIGNhc2UgR3JlYXRlclRoYW46CiAgICAgICAgIGNhc2UgTGVzc0Vx
dWFsOgpAQCAtMjcyNyw2ICszMTgwLDQwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIEJyYW5jaDogeworICAgICAgICAgICAgaWYgKGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+
Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIGJyYW5jaENoaWxkID0gbV92YWx1
ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChicmFuY2hDaGlsZC0+b3Bjb2Rl
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAg
YXBwZW5kQ0FTKGJyYW5jaENoaWxkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJv
bmdDQVM6CisgICAgICAgICAgICAgICAgICAgIC8vIEEgYnJhbmNoIGlzIGEgY29tcGFyaXNvbiB0
byB6ZXJvLgorICAgICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5p
c0ludCgwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNo
Q2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgY2FzZSBFcXVhbDoKKyAgICAgICAgICAgICAgICBjYXNlIE5vdEVxdWFs
OgorICAgICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5vcGNvZGUo
KSA9PSBBdG9taWNTdHJvbmdDQVMKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGNhbkJlSW50
ZXJuYWwoYnJhbmNoQ2hpbGQtPmNoaWxkKDApKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYg
YnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5jaGlsZCgwKSA9PSBicmFuY2hDaGlsZC0+Y2hpbGQoMSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkLT5jaGls
ZCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQtPmNo
aWxkKDApLCBicmFuY2hDaGlsZC0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVu
ZChjcmVhdGVCcmFuY2gobV92YWx1ZS0+Y2hpbGQoMCkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMjc4NCw3ICszMjcxLDgxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBh
cHBlbmQoQWlyOjpFbnRyeVN3aXRjaCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgIGNhc2Ug
QXRvbWljU3Ryb25nQ0FTOiB7CisgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZSwgZmFsc2Up
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBBdG9taWNYY2hnQWRkOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0g
bV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0
b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY0FkZCwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgp
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBB
cmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZ0FkZCwgYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBhZGRy
ZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBl
KGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0bXAoYXRvbWljKSk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyksIGFkZHJlc3MpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXBwZW5k
R2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChBZGQsIGF0b21pYy0+b3Bl
cmF0aW9uV2lkdGgoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAg
ICAgY2FzZSBBdG9taWNYY2hnU3ViOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWlj
ID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9p
ZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1N1YiwgYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFN1YiwgYXRv
bWljLT5vcGVyYXRpb25XaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6IHsKKyAgICAgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAg
ICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQW5kLCBh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5P
TklDQUxfV0lEVEgoQW5kLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNo
Z09yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRv
bWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9S
X1dJRFRIKEF0b21pY09yLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9t
aWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoT3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgo
KSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBBdG9taWNYY2hnWG9yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWlj
ID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9p
ZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1hvciwgYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFhvciwgYXRv
bWljLT5vcGVyYXRpb25XaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisgICAgICAgICAg
ICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hjaGcsIGF0b21p
Yy0+b3BlcmF0aW9uV2lkdGgoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0ob3Bjb2Rl
LCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJl
bGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIHRtcChhdG9taWMtPmNoaWxkKDApKSwg
dG1wKGF0b21pYykpOworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChhdG9taWMp
LCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5P
TklDQUxfV0lEVEgoWG9yLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjc5Miw2NCArMzM1Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGRhdGFMb2coIkZBVEFMOiBjb3VsZCBub3QgbG93ZXIgIiwgZGVlcER1bXAobV9w
cm9jZWR1cmUsIG1fdmFsdWUpLCAiXG4iKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9Ci0KLSAgICB2b2lkIGxvd2VyWDg2RGl2KEIzOjpPcGNvZGUgb3ApCi0g
ICAgewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAo
WDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6
ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVXb3JkOwotICAgICAg
ICBBaXI6Ok9wY29kZSBkaXY7Ci0gICAgICAgIHN3aXRjaCAobV92YWx1ZS0+dHlwZSgpKSB7Ci0g
ICAgICAgIGNhc2UgSW50MzI6Ci0gICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2
Q29udmVydFRvRG91YmxlV29yZDMyOwotICAgICAgICAgICAgZGl2ID0gWDg2RGl2MzI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ2NDoKLSAgICAgICAgICAgIGNvbnZlcnRU
b0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0OwotICAgICAgICAgICAgZGl2ID0g
WDg2RGl2NjQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8IG9wID09IE1vZCk7Ci0gICAg
ICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBEaXYgPyBYODZSZWdp
c3RlcnM6OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0
bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBlbmQoY29udmVydFRvRG91
YmxlV29yZCwgZWF4LCBlZHgpOwotICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1f
dmFsdWUtPmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1w
KG1fdmFsdWUpKTsKLQotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAg
VU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGxv
d2VyWDg2VURpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAgICAg
VG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAgICAgICAgQWlyOjpPcGNvZGUg
ZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0Owot
Ci0gICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVNb2QpOwotICAgICAgICBYODZS
ZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gVURpdiA/IFg4NlJlZ2lzdGVyczo6
ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3Zh
bHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChYb3I2NCwgZWR4LCBlZHgpOwot
ICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7Ci0g
ICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1wKG1fdmFsdWUpKTsKLSNlbHNlCi0g
ICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9S
TSgpOwotI2VuZGlmCi0gICAgfQotCisgICAgCiAgICAgSW5kZXhTZXQ8VmFsdWU+IG1fbG9ja2Vk
OyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQgd2lsbCBoYXZlIG5vIFRtcCBpbiBBaXIuCiAgICAg
SW5kZXhNYXA8VmFsdWUsIFRtcD4gbV92YWx1ZVRvVG1wOyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRo
YXQgbXVzdCBoYXZlIGEgVG1wIGluIEFpci4gV2Ugc2F5IHRoYXQgYSBWYWx1ZSogd2l0aCBhIG5v
bi1udWxsIFRtcCBpcyAicGlubmVkIi4KICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3BoaVRv
VG1wOyAvLyBFYWNoIFBoaSBnZXRzIGl0cyBvd24gVG1wLgpAQCAtMjg2NCw3ICszMzY4LDcgQEAg
cHJpdmF0ZToKIAogICAgIFZlY3RvcjxWZWN0b3I8SW5zdCwgND4+IG1faW5zdHM7CiAgICAgVmVj
dG9yPEluc3Q+IG1fcHJvbG9ndWU7Ci0KKyAgICAKICAgICBCMzo6QmFzaWNCbG9jayogbV9ibG9j
azsKICAgICBib29sIG1faXNSYXJlOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CkBAIC0yODc1LDYg
KzMzNzksMTIgQEAgcHJpdmF0ZToKIAogICAgIFByb2NlZHVyZSYgbV9wcm9jZWR1cmU7CiAgICAg
Q29kZSYgbV9jb2RlOworCisgICAgQWlyOjpCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0
aW9uU2V0OworCisgICAgVG1wIG1fZWF4OworICAgIFRtcCBtX2VjeDsKKyAgICBUbXAgbV9lZHg7
CiB9OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MzAgKzM0LDQ4IEBAIE1lbW9yeVZhbHVlOjp+TWVtb3J5VmFsdWUoKQogewogfQogCitUeXBlIE1l
bW9yeVZhbHVlOjphY2Nlc3NUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNMb2FkKCkpCisgICAg
ICAgIHJldHVybiB0eXBlKCk7CisgICAgLy8gVGhpcyBoYXBwZW5zIHRvIHdvcmsgZm9yIGF0b21p
Y3MsIHRvby4gVGhhdCdzIHdoeSBBdG9taWNWYWx1ZSBkb2VzIG5vdCBuZWVkIHRvIG92ZXJyaWRl
IHRoaXMuCisgICAgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7Cit9CisKK0JhbmsgTWVtb3J5VmFs
dWU6OmFjY2Vzc0JhbmsoKSBjb25zdAoreworICAgIHJldHVybiBiYW5rRm9yVHlwZShhY2Nlc3NU
eXBlKCkpOworfQorCiBzaXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkgY29uc3QK
IHsKKyAgICByZXR1cm4gYnl0ZXMoYWNjZXNzV2lkdGgoKSk7Cit9CisKK1dpZHRoIE1lbW9yeVZh
bHVlOjpsb2FkU3RvcmVXaWR0aCgpIGNvbnN0Cit7CiAgICAgc3dpdGNoIChvcGNvZGUoKSkgewog
ICAgIGNhc2UgTG9hZDhaOgogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgU3RvcmU4OgotICAg
ICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICBjYXNlIExvYWQxNlo6
CiAgICAgY2FzZSBMb2FkMTZTOgogICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgcmV0dXJuIDI7
CisgICAgICAgIHJldHVybiBXaWR0aDE2OwogICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmV0dXJu
IHNpemVvZlR5cGUodHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZSh0eXBlKCkp
OwogICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKGNoaWxkKDApLT50
eXBlKCkpOworICAgICAgICByZXR1cm4gd2lkdGhGb3JUeXBlKGNoaWxkKDApLT50eXBlKCkpOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gV2lkdGg4OwogICAgIH0KIH0KIAogV2lkdGgg
TWVtb3J5VmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2lkdGhGb3JC
eXRlcyhhY2Nlc3NCeXRlU2l6ZSgpKTsKKyAgICByZXR1cm4gbG9hZFN0b3JlV2lkdGgoKTsKIH0K
IAogdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKQEAgLTY1LDggKzgzLDExIEBAIHZvaWQgTWVtb3J5VmFsdWU6OmR1
bXBNZXRhKENvbW1hUHJpbnRlciYKICAgICBpZiAobV9vZmZzZXQpCiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIm9mZnNldCA9ICIsIG1fb2Zmc2V0KTsKICAgICBpZiAoKGlzTG9hZCgpICYmIGVm
ZmVjdHMoKS5yZWFkcyAhPSByYW5nZSgpKQotICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVmZmVj
dHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkpCisgICAgICAgIHx8IChpc1N0b3JlKCkgJiYgZWZmZWN0
cygpLndyaXRlcyAhPSByYW5nZSgpKQorICAgICAgICB8fCBmZW5jZVJhbmdlKCkpCiAgICAgICAg
IG91dC5wcmludChjb21tYSwgInJhbmdlID0gIiwgcmFuZ2UoKSk7CisgICAgaWYgKGZlbmNlUmFu
Z2UoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZmVuY2VSYW5nZSA9ICIsIGZlbmNlUmFu
Z2UoKSk7CiB9CiAKIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKQEAgLTc0
LDYgKzk1LDU4IEBAIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKICAgICBy
ZXR1cm4gbmV3IE1lbW9yeVZhbHVlKCp0aGlzKTsKIH0KIAorLy8gVXNlIHRoaXMgZm9ybSBmb3Ig
TG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhh
dmUgYSBzdWZmaXggdGhhdAorLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KK01lbW9y
eVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwg
VmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0KQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29k
ZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQor
eworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNv
ZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQxNlo6
CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IEludDMy
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0b3JlODoKKyAgICAgICAgY2Fz
ZSBTdG9yZTE2OgorICAgICAgICBjYXNlIFN0b3JlOgorICAgICAgICAgICAgQVNTRVJUKHR5cGUg
PT0gVm9pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBVc2Ug
dGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KK01l
bW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBw
b2ludGVyLCBpbnQzMl90IG9mZnNldCkKKyAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBv
cmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewor
ICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBMb2FkOFo6Cisg
ICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQxNlo6CisgICAgICAgIGNhc2Ug
TG9hZDE2UzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0
aGlzIGZvcm0gZm9yIHN0b3Jlcy4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQs
IE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zm
c2V0KQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1
ZSwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKK3sKKyAgICBBU1NFUlQoQjM6Omlz
U3RvcmUoa2luZC5vcGNvZGUoKSkpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAog
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNNZW1vcnlWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M01lbW9yeVZhbHVlLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM01lbW9yeVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDQ4ICsyNywxNyBAQAog
CiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzQmFuay5oIgogI2luY2x1ZGUgIkIz
SGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsKIAotLy8gRklYTUU6IFdlIHdhbnQgdG8gYWxsb3cgZmVuY2VkIG1lbW9yeSBh
Y2Nlc3NlcyBvbiBBUk0uCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyMzQ5Ci0KIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIE1lbW9yeVZhbHVlIDogcHVibGlj
IFZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKICAg
ICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICBjYXNlIExvYWQ4
WjoKLSAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAg
Y2FzZSBMb2FkMTZTOgotICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIGNhc2UgU3RvcmU4Ogot
ICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzU3RvcmUoS2luZCBraW5kKQot
ICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgU3Rv
cmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzTG9hZChLaW5kIGtp
bmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWNjZXB0cyhraW5kKSAmJiAhaXNTdG9yZShraW5k
KTsKKyAgICAgICAgcmV0dXJuIGlzTWVtb3J5QWNjZXNzKGtpbmQub3Bjb2RlKCkpOwogICAgIH0K
IAogICAgIH5NZW1vcnlWYWx1ZSgpOwpAQCAtNzgsNzYgKzQ3LDU2IEBAIHB1YmxpYzoKIAogICAg
IGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CiAgICAg
dm9pZCBzZXRSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fcmFuZ2UgPSByYW5nZTsg
fQorICAgIAorICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHJhbmdlLgorICAgIGNvbnN0IEhl
YXBSYW5nZSYgYWNjZXNzUmFuZ2UoKSBjb25zdCB7IHJldHVybiByYW5nZSgpOyB9CisgICAgdm9p
ZCBzZXRBY2Nlc3NSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IHNldFJhbmdlKHJhbmdl
KTsgfQorICAgIAorICAgIGNvbnN0IEhlYXBSYW5nZSYgZmVuY2VSYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmVuY2VSYW5nZTsgfQorICAgIHZvaWQgc2V0RmVuY2VSYW5nZShjb25zdCBIZWFwUmFu
Z2UmIHJhbmdlKSB7IG1fZmVuY2VSYW5nZSA9IHJhbmdlOyB9CisKKyAgICBib29sIGlzU3RvcmUo
KSBjb25zdCB7IHJldHVybiBCMzo6aXNTdG9yZShvcGNvZGUoKSk7IH0KKyAgICBib29sIGlzTG9h
ZCgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAgICBib29sIGlz
U3RvcmUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVm9pZDsgfQotICAgIGJvb2wgaXNMb2Fk
KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpICE9IFZvaWQ7IH0KKyAgICBib29sIGhhc0ZlbmNlKCkg
Y29uc3QgeyByZXR1cm4gISFmZW5jZVJhbmdlKCk7IH0KIAorICAgIFR5cGUgYWNjZXNzVHlwZSgp
IGNvbnN0OworICAgIEJhbmsgYWNjZXNzQmFuaygpIGNvbnN0OwogICAgIHNpemVfdCBhY2Nlc3NC
eXRlU2l6ZSgpIGNvbnN0OwotICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7CisgICAgCisg
ICAgLy8gU2xpZ2h0bHkgZmFzdGVyIHZlcnNpb24gb2YgYWNjZXNzV2lkdGgsIGlmIHlvdSBrbm93
IHRoYXQgeW91J3JlIHdvcmtpbmcgd2l0aCBhIGxvYWQgb3Igc3RvcmUuCisgICAgV2lkdGggbG9h
ZFN0b3JlV2lkdGgoKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIFdpZHRoIGFjY2Vzc1dpZHRo
KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYg
Y29tbWEsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShD
b21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmFsdWUq
IGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJndW1lbnRzPgorICAgIE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwg
VHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBpbnQzMl90IG9mZnNldCwgQXJndW1lbnRzLi4uIGFy
Z3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmln
aW4sIGFyZ3VtZW50cy4uLikKKyAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgeworICAg
IH0KKyAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKLQorICAgIAog
ICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9y
IGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3VmZml4IHRoYXQKICAgICAvLyBkZXNjcmli
ZXMgdGhlIHJldHVybmVkIHR5cGUpLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0
eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQot
ICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRl
cikKLSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFu
Z2U6OnRvcCgpKQotICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBMb2FkOgot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAg
ICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgICAg
IGNhc2UgTG9hZDE2UzoKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAg
ICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKHR5cGUgPT0gVm9pZCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIFR5cGUs
IE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCk7CiAKICAgICAvLyBV
c2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4K
LSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVy
LCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIs
IG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQotICAgIHsKLSAgICB9CisgICAgTWVtb3J5VmFsdWUo
S2luZCwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKTsKIAogICAg
IC8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQs
IE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zm
c2V0ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBvcmln
aW4sIHZhbHVlLCBwb2ludGVyKQotICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAgICAg
LCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCi0gICAgewotICAgICAgICBpZiAoIUFTU0VSVF9E
SVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAg
ICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAg
IGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCisgICAgTWVtb3J5VmFs
dWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9m
ZnNldCA9IDApOworICAgIAogICAgIGludDMyX3QgbV9vZmZzZXQgeyAwIH07Ci0gICAgSGVhcFJh
bmdlIG1fcmFuZ2U7CisgICAgSGVhcFJhbmdlIG1fcmFuZ2UgeyBIZWFwUmFuZ2U6OnRvcCgpIH07
CisgICAgSGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhlYXBSYW5nZSgpIH07CiB9OwogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM05h
dGl2ZVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM05h
dGl2ZVRyYWl0cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M05hdGl2ZVRyYWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzQmFuay5oIgorI2luY2x1ZGUgIkIzVHlw
ZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTmF0aXZlVHJhaXRzOworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50OF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsg
YmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoODsKKyAgICBz
dGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBO
YXRpdmVUcmFpdHM8dWludDhfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsK
KyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDg7CisgICAgc3RhdGljIGNvbnN0
IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRz
PGludDE2X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGlj
IGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgxNjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBl
ID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDE2X3Q+
IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdp
ZHRoIHdpZHRoID0gV2lkdGgxNjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7
Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50MzJfdD4geworICAgIHN0
YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGgg
PSBXaWR0aDMyOworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czx1aW50MzJfdD4geworICAgIHN0YXRpYyBjb25z
dCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDMy
OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IE5hdGl2ZVRyYWl0czxpbnQ2NF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFu
ayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoNjQ7CisgICAgc3Rh
dGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDY0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0
aXZlVHJhaXRzPHVpbnQ2NF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOwor
ICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoNjQ7CisgICAgc3RhdGljIGNvbnN0
IFR5cGUgdHlwZSA9IEludDY0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRz
PGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEZQOworICAgIHN0YXRpYyBj
b25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoMzI7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9
IEZsb2F0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGRvdWJsZT4gewor
ICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBGUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGgg
d2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBEb3VibGU7Cit9
OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkocmV2aXNpb24gMjEy
OTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY4LDYgKzY4LDIzIEBAIHN0ZDo6b3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRlZENv
bXBhcmUoT3AKICAgICB9CiB9CiAKK09wY29kZSBzdG9yZU9wY29kZShCYW5rIGJhbmssIFdpZHRo
IHdpZHRoKQoreworICAgIHN3aXRjaCAoYmFuaykgeworICAgIGNhc2UgR1A6CisgICAgICAgIHN3
aXRjaCAod2lkdGgpIHsKKyAgICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICByZXR1cm4g
U3RvcmU4OworICAgICAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgICAgICByZXR1cm4gU3RvcmUx
NjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTdG9yZTsKKyAgICAgICAg
fQorICAgIGNhc2UgRlA6CisgICAgICAgIHJldHVybiBTdG9yZTsKKyAgICB9Cit9CisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTI2Myw2ICsyODAsMzMg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wYwogICAgIGNhc2UgU3Rv
cmU6CiAgICAgICAgIG91dC5wcmludCgiU3RvcmUiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNXZWFrQ0FTIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgb3V0LnBy
aW50KCJBdG9taWNTdHJvbmdDQVMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWlj
WGNoZ0FkZDoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnQWRkIik7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgIG91dC5wcmludCgiQXRvbWlj
WGNoZ0FuZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAg
ICAgIG91dC5wcmludCgiQXRvbWljWGNoZ09yIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEF0b21pY1hjaGdTdWI6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ1N1YiIpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICBvdXQucHJpbnQo
IkF0b21pY1hjaGdYb3IiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZzoK
KyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnIik7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIERlcGVuZDoKKyAgICAgICAgb3V0LnByaW50KCJEZXBlbmQiKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIG91dC5wcmludCgiV2FzbUFkZHJlc3Mi
KTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bj
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAK
ICNpbmNsdWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC04Miw3ICs4
Myw2IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgTW9kLCAvLyBBbGwgYmV0cyBhcmUg
b2ZmIGFzIHRvIHdoYXQgd2lsbCBoYXBwZW4gd2hlbiB5b3UgZXhlY3V0ZSB0aGlzIGZvciAtMl4z
MSUtMSBhbmQgeCUwLgogICAgIFVNb2QsCiAKLQogICAgIC8vIFBvbHltb3JwaGljIG5lZ2F0aW9u
LiBOb3RlIHRoYXQgd2Ugb25seSBuZWVkIHRoaXMgZm9yIGZsb2F0aW5nIHBvaW50LCBzaW5jZSBp
bnRlZ2VyIG5lZ2F0aW9uCiAgICAgLy8gaXMgZXhhY3RseSBsaWtlIFN1YigwLCB4KS4gQnV0IHRo
YXQncyBub3QgdHJ1ZSBmb3IgZmxvYXRpbmcgcG9pbnQuIFN1YigwLCAwKSBpcyAwLCB3aGlsZQog
ICAgIC8vIE5lZygwKSBpcyAtMC4gQWxzbywgd2UgY2Fub25pY2FsaXplIFN1YigwLCB4KSBpbnRv
IE5lZyh4KSBpbiBjYXNlIG9mIGludGVnZXJzLgpAQCAtMTYyLDYgKzE2MiwxMDcgQEAgZW51bSBP
cGNvZGUgOiBpbnQxNl90IHsKICAgICBTdG9yZTE2LAogICAgIC8vIFRoaXMgaXMgYSBwb2x5bW9y
cGhpYyBzdG9yZSBmb3IgSW50MzIsIEludDY0LCBGbG9hdCwgYW5kIERvdWJsZS4KICAgICBTdG9y
ZSwKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgYSBi
b29sZWFuLiBNYXkgY2hvb3NlIHRvIGRvIG5vdGhpbmcgYW5kIHJldHVybiBmYWxzZS4gWW91IGNh
bgorICAgIC8vIHVzdWFsbHkgYXNzdW1lIHRoYXQgdGhpcyBpcyBmYXN0ZXIgYW5kIHJlc3VsdHMg
aW4gbGVzcyBjb2RlIHRoYW4gQXRvbWljU3Ryb25nQ0FTLCB0aG91Z2ggdGhhdCdzCisgICAgLy8g
bm90IG5lY2Vzc2FyaWx5IHRydWUgb24gSW50ZWwsIGlmIGluc3RydWN0aW9uIHNlbGVjdGlvbiBk
b2VzIGl0cyBqb2IuIEltYWdpbmUgdGhhdCB0aGlzIG9wY29kZSBpcworICAgIC8vIGFzIGlmIHlv
dSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICAvLyBib29sIEF0b21pY1dlYWtDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVl
LCBUKiBwdHIpCisgICAgLy8geworICAgIC8vICAgICBpZiAoIXJhbmQoKSkKKyAgICAvLyAgICAg
ICAgIHJldHVybiBmYWxzZTsgLy8gUmVhbCB3b3JsZCBleGFtcGxlIG9mIHRoaXM6IGNvbnRleHQg
c3dpdGNoIG9uIEFSTSB3aGlsZSBkb2luZyBDQVMuCisgICAgLy8gICAgIGlmICgqcHRyICE9IGV4
cGVjdGVkVmFsdWUpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gICAgICpw
dHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gfQorICAgIC8v
CisgICAgLy8gTm90ZSB0aGF0IGFsbCBhdG9taWNzIHB1dCB0aGUgcG9pbnRlciBsYXN0IHRvIGJl
IGNvbnNpc3RlbnQgd2l0aCBob3cgbG9hZHMgYW5kIHN0b3JlcyB3b3JrLiBUaGlzCisgICAgLy8g
aXMgYSBnb29meSB0cmFkaXRpb24sIGJ1dCBpdCdzIGhhcm1sZXNzLCBhbmQgYmV0dGVyIHRoYW4g
YmVpbmcgaW5jb25zaXN0ZW50LgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHdlYWsgQ0FTIGhh
cyBubyBmZW5jaW5nIGd1YXJhbnRlZXMgd2hlbiBpdCBmYWlscy4gVGhpcyBtZWFucyB0aGF0IHRo
ZSBmb2xsb3dpbmcKKyAgICAvLyB0cmFuc2Zvcm1hdGlvbiBpcyBhbHdheXMgdmFsaWQ6CisgICAg
Ly8KKyAgICAvLyBCZWZvcmU6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNX
ZWFrQ0FTKGV4cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhl
bjojc3VjY2VzcywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQWZ0ZXI6CisgICAgLy8KKyAg
ICAvLyAgICAgICAgIEJyYW5jaChFcXVhbChMb2FkKHB0ciksIGV4cGVjdGVkKSkKKyAgICAvLyAg
ICAgICBTdWNjZXNzb3JzOiBUaGVuOiNhdHRlbXB0LCBFbHNlOiNmYWlsCisgICAgLy8gICAgIEJC
I2F0dGVtcHQ6CisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwg
bmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6
I2ZhaWwKKyAgICAvLworICAgIC8vIEJvdGgga2luZHMgb2YgQ0FTIGZvciBub24tY2Fub25pY2Fs
IHdpZHRocyAoV2lkdGg4IGFuZCBXaWR0aDE2KSBpZ25vcmUgdGhlIGlycmVsZXZhbnQgYml0cyBv
ZiB0aGUKKyAgICAvLyBpbnB1dC4KKyAgICBBdG9taWNXZWFrQ0FTLAorICAgIAorICAgIC8vIEF0
b21pYyBjb21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBEb2VzIG5v
dCBoYXZlIHRoZSBub25kZXRlcm1pbmlzbSBvZiBXZWFrQ0FTLgorICAgIC8vIFRoaXMgaXMgYSBi
aXQgbW9yZSBjb2RlIGFuZCBhIGJpdCBzbG93ZXIgaW4gc29tZSBjYXNlcywgdGhvdWdoIG5vdCBi
eSBhIGxvdC4gSW1hZ2luZSB0aGF0IHRoaXMKKyAgICAvLyBvcGNvZGUgaXMgYXMgaWYgeW91IGRp
ZCB0aGlzIGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIC8vIFQgQXRvbWljU3Ryb25nQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCog
cHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgVCBvbGRWYWx1ZSA9ICpwdHI7CisgICAgLy8gICAg
IGlmIChvbGRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgKnB0ciA9IG5l
d1ZhbHVlOworICAgIC8vICAgICByZXR1cm4gb2xkVmFsdWUKKyAgICAvLyB9CisgICAgLy8KKyAg
ICAvLyBOb3RlIHRoYXQgQXRvbWljV2Vha0NBUyBhbmQgQXRvbWljU3Ryb25nQ0FTIHNvcnQgb2Yg
aGF2ZSB0aGlzIGtpbmQgb2YgZXF1aXZhbGVuY2U6CisgICAgLy8KKyAgICAvLyBBdG9taWNXZWFr
Q0FTKEBleHAsIEBuZXcsIEBwdHIpID09IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhAZXhwLCBAbmV3
LCBAcHRyKSwgQGV4cCkKKyAgICAvLworICAgIC8vIEFzc3VtaW5nIHRoYXQgdGhlIFdlYWtDQVMg
ZG9lcyBub3Qgc3B1cmlvdXNseSBmYWlsLCBvZiBjb3Vyc2UuCisgICAgQXRvbWljU3Ryb25nQ0FT
LAorICAgIAorICAgIC8vIEF0b21pY2FsbHkgX19fIGEgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1
cm4gdGhlIG9sZCB2YWx1ZS4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRv
bWljWGNoZ19fXyhAb3BlcmFuZCwgQHB0cikKKyAgICAvLworICAgIC8vIEZvciBub24tY2Fub25p
Y2FsIHdpZHRocyAoV2lkdGg4IGFuZCBXaWR0aDE2KSwgdGhlc2UgcmV0dXJuIHNpZ24tZXh0ZW5k
ZWQgcmVzdWx0cyBhbmQgaWdub3JlIHRoZQorICAgIC8vIGlycmVsZXZhbnQgYml0cyBvZiB0aGVp
ciBpbnB1dHMuCisgICAgQXRvbWljWGNoZ0FkZCwKKyAgICBBdG9taWNYY2hnQW5kLAorICAgIEF0
b21pY1hjaGdPciwKKyAgICBBdG9taWNYY2hnU3ViLAorICAgIEF0b21pY1hjaGdYb3IsCisgICAg
CisgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBoYXZlIEF0b21pY1hjaGdOZWcgYW5kIEF0
b21pY1hjaGdOb3QuCisgICAgCisgICAgLy8gQXRvbWljYWxseSBleGNoYW5nZSBhIHZhbHVlIHdp
dGggYSBtZW1vcnkgbG9jYXRpb24uIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9
IEF0b21pY1hjaGcoQG5ld1ZhbHVlLCBAcHRyKQorICAgIEF0b21pY1hjaGcsCisgICAgCisgICAg
Ly8gSW50cm9kdWNlIGFuIGludmlzaWJsZSBkZXBlbmRlbmN5IGZvciBibG9ja2luZyBtb3Rpb24g
b2YgbG9hZHMgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuIFN5bnRheDoKKyAgICAvLworICAg
IC8vIEByZXN1bHQgPSBEZXBlbmQoQHBoYW50b20pCisgICAgLy8KKyAgICAvLyBUaGlzIGlzIGV2
ZW50dWFsbHkgY29kZWdlbmVyYXRlZCB0byBoYXZlIGxvY2FsIHNlbWFudGljcyBhcyBpZiB3ZSBk
aWQ6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gJDAKKyAgICAvLworICAgIC8vIEJ1dCBpdCBl
bnN1cmVzIHRoYXQgdGhlIHVzZXJzIG9mIEByZXN1bHQgY2Fubm90IGV4ZWN1dGUgdW50aWwgQHBo
YW50b20gaXMgY29tcHV0ZWQuCisgICAgLy8KKyAgICAvLyBUaGUgY29tcGlsZXIgaXMgbm90IGFs
bG93ZWQgdG8gcmVhc29uIGFib3V0IHRoZSBmYWN0IHRoYXQgRGVwZW5kIGNvZGVnZW5lcmF0ZXMg
dGhpcyB3YXkuIEFueSBraW5kCisgICAgLy8gb2YgdHJhbnNmb3JtYXRpb24gb3IgYW5hbHlzaXMg
dGhhdCByZWxpZXMgb24gdGhlIGluc2lnaHQgdGhhdCBEZXBlbmQgaXMgcmVhbGx5IHplcm8gaXMg
dW5zb3VuZCwKKyAgICAvLyBiZWNhdXNlIGl0IHVubG9ja3MgcmVvcmRlcmluZyBvZiB1c2VycyBv
ZiBAcmVzdWx0IGFuZCBAcGhhbnRvbS4KKyAgICAvLworICAgIC8vIE9uIFg4NiwgdGhpcyBpcyBs
b3dlcmVkIHRvIGEgbG9hZC1sb2FkIGZlbmNlIGFuZCBAcmVzdWx0IHVzZXMgQHBoYW50b20gZGly
ZWN0bHkuCisgICAgLy8KKyAgICAvLyBPbiBBUk0sIHRoaXMgaXMgbG93ZXJlZCBhcyBpZiBsaWtl
OgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9IEJpdFhvcihAcGhhbnRvbSwgQHBoYW50b20pCisg
ICAgLy8KKyAgICAvLyBFeGNlcHQgdGhhdCB0aGUgY29tcGlsZXIgbmV2ZXIgZ2V0cyBhbiBvcHBv
cnR1bml0eSB0byBzaW1wbGlmeSBvdXQgdGhlIEJpdFhvci4KKyAgICBEZXBlbmQsCiAKICAgICAv
LyBUaGlzIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIGFkZHJlc3Mgb2YgYSBXYXNtIG1l
bW9yeSBvcGVyYXRpb24uIEl0IHRha2VzIGFuIEludFB0cgogICAgIC8vIGFuZCBhIHBpbm5lZCBy
ZWdpc3RlciB0aGVuIGNvbXB1dGVzIHRoZSBhcHByb3ByaWF0ZSBJbnRQdHIgYWRkcmVzcy4gRm9y
IHRoZSB1c2UtY2FzZSBvZgpAQCAtMzAxLDYgKzQwMiwxMTIgQEAgaW5saW5lIGJvb2wgaXNEZWZp
bml0ZWx5VGVybWluYWwoT3Bjb2RlIAogICAgIH0KIH0KIAoraW5saW5lIGJvb2wgaXNMb2FkKE9w
Y29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoK
KyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2FkMTZTOgor
ICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNTdG9yZShPcGNvZGUg
b3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBTdG9yZTg6CisgICAg
Y2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29s
IGlzTG9hZFN0b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAg
ICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAg
Y2FzZSBMb2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNl
IFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNB
dG9taWMoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2Ug
QXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21p
Y1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09y
OgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAg
Y2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY0NBUyhP
cGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNX
ZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUg
Ym9vbCBpc0F0b21pY1hjaGcoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkg
eworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAg
Y2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRv
bWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBi
b29sIGlzTWVtb3J5QWNjZXNzKE9wY29kZSBvcGNvZGUpCit7CisgICAgcmV0dXJuIGlzQXRvbWlj
KG9wY29kZSkgfHwgaXNMb2FkU3RvcmUob3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZSBzaWdu
RXh0ZW5kT3Bjb2RlKFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBj
YXNlIFdpZHRoODoKKyAgICAgICAgcmV0dXJuIFNFeHQ4OworICAgIGNhc2UgV2lkdGgxNjoKKyAg
ICAgICAgcmV0dXJuIFNFeHQxNjsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gT29wczsKKyAgICB9Cit9CisKK0pTX0VY
UE9SVF9QUklWQVRFIE9wY29kZSBzdG9yZU9wY29kZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKTsK
KwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDIsNiArMjAyLDggQEAgdm9pZCBQcm9jZWR1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgYwogICAgICAgICB9CiAgICAgICAgIGRhdGFMb2coIiAgICAiLCBkZWVwRHVtcCgqdGhpcywg
dmFsdWUpLCAiXG4iKTsKICAgICB9CisgICAgaWYgKGhhc1F1aXJrcygpKQorICAgICAgICBvdXQu
cHJpbnQoIkhhcyBRdWlya3M6IFRydWVcbiIpOwogICAgIGlmICh2YXJpYWJsZXMoKS5zaXplKCkp
IHsKICAgICAgICAgb3V0LnByaW50KCJWYXJpYWJsZXM6XG4iKTsKICAgICAgICAgZm9yIChWYXJp
YWJsZSogdmFyaWFibGUgOiB2YXJpYWJsZXMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1Byb2NlZHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1Byb2NlZHVyZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw3IEBAIHB1
YmxpYzoKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoT3JpZ2luLCBUeXBlLCBpbnQ2NF90IHZh
bHVlKTsKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoVmFsdWUqLCBpbnQ2NF90IHZhbHVlKTsK
IAorICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgVmFs
dWUqIGFkZEJvdHRvbShPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBhZGRCb3R0b20oVmFsdWUq
KTsKIApAQCAtMTk1LDYgKzE5NiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gYWxpdmUuIEdyZWF0IGZv
ciBjb21waWxlci1nZW5lcmF0ZWQgZGF0YSBzZWN0aW9ucywgbGlrZSBzd2l0Y2gganVtcCB0YWJs
ZXMgYW5kIGNvbnN0YW50IHBvb2xzLgogICAgIC8vIFRoaXMgcmV0dXJucyBtZW1vcnkgdGhhdCBo
YXMgYmVlbiB6ZXJvLWluaXRpYWxpemVkLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFk
ZERhdGFTZWN0aW9uKHNpemVfdCk7CisgICAgCisgICAgLy8gU29tZSBvcGVyYXRpb25zIGFyZSBz
cGVjaWZpZWQgaW4gQjMgSVIgdG8gYmVoYXZlIG9uZSB3YXkgYnV0IG9uIHRoaXMgZ2l2ZW4gQ1BV
IHRoZXkgYmVoYXZlIGEKKyAgICAvLyBkaWZmZXJlbnQgd2F5LiBXaGVuIHRydWUsIHRob3NlIEIz
IElSIG9wcyBzd2l0Y2ggdG8gYmVoYXZpbmcgdGhlIENQVSB3YXksIGFuZCB0aGUgb3B0aW1pemVy
IG1heQorICAgIC8vIHN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2YgaXQuCisgICAgYm9vbCBoYXNR
dWlya3MoKSBjb25zdCB7IHJldHVybiBtX2hhc1F1aXJrczsgfQorICAgIHZvaWQgc2V0SGFzUXVp
cmtzKGJvb2wgdmFsdWUpIHsgbV9oYXNRdWlya3MgPSB2YWx1ZTsgfQogCiAgICAgT3BhcXVlQnlw
cm9kdWN0cyYgYnlwcm9kdWN0cygpIHsgcmV0dXJuICptX2J5cHJvZHVjdHM7IH0KIApAQCAtMjUy
LDYgKzI1OSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChQcmludFN0
cmVhbSYsIE9yaWdpbik+PiBtX29yaWdpblByaW50ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9mcm9u
dGVuZERhdGE7CiAgICAgUENUb09yaWdpbk1hcCBtX3BjVG9PcmlnaW5NYXA7CisgICAgYm9vbCBt
X2hhc1F1aXJrcyB7IGZhbHNlIH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVu
Z3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShC
M19KSVQpCiAKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Js
b2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRl
ICJCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgiCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnJlYWs7Ci0KKyAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIE5lZzoKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogTmVnKGNvbnN0YW50KQog
ICAgICAgICAgICAgLy8gSW50byB0aGlzOiAtY29uc3RhbnQKQEAgLTEyOTUsNiArMTI5NiwxNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhh
c1F1aXJrcygpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0OChBdG9taWNY
Y2hnX19fKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXworICAg
ICAgICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgp
KQorICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFs
dWU+KCktPm9wZXJhdGlvbldpZHRoKCkgPT0gV2lkdGg4KSB7CisgICAgICAgICAgICAgICAgICAg
IHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIFNFeHQxNjoKQEAgLTEzNDMsNiArMTM1NCwxNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhhc1F1aXJrcygpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0MTYoQXRvbWljWGNoZ19fXykKKyAgICAg
ICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBp
ZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5vcGVyYXRp
b25XaWR0aCgpID09IFdpZHRoMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJ
ZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgU0V4dDMyOgpAQCAtMjEwMSwyMiArMjEyMiwyNSBAQCBwcml2YXRlOgogICAg
ICAgICBBU1NFUlQobV92YWx1ZS0+bnVtQ2hpbGRyZW4oKSA+PSAyKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIExlYXZlIGl0IGFsb25lIGlmIHRoZSByaWdodCBjaGlsZCBpcyBhIGNvbnN0YW50Lgot
ICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKSkKKyAgICAgICAgaWYg
KG1fdmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkKKyAgICAgICAgICAgIHx8IG1fdmFsdWUt
PmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIAotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQo
KSkgeworICAgICAgICBhdXRvIHN3YXAgPSBbJl0gKCkgewogICAgICAgICAgICAgc3RkOjpzd2Fw
KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICAgICAg
fTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNDb25zdGFudCgp
KQorICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQorICAgICAgICAgICAg
cmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCiAgICAgICAgIC8vIFNvcnQgdGhlIG9wZXJhbmRzLiBU
aGlzIGlzIGFuIGltcG9ydGFudCBjYW5vbmljYWxpemF0aW9uLiBXZSB1c2UgdGhlIGluZGV4IGlu
c3RlYWQgb2YKICAgICAgICAgLy8gdGhlIGFkZHJlc3MgdG8gbWFrZSB0aGlzIGF0IGxlYXN0IHNs
aWdodGx5IGRldGVybWluaXN0aWMuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5k
ZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEpLT5pbmRleCgpKSB7Ci0gICAgICAgICAgICBzdGQ6OnN3
YXAobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgIG1f
Y2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4
KCkpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCByZWFsbHkgYmUgYSBmb3J3YXJkIGFuYWx5c2lzLiBJbnN0ZWFkLCB3ZSB1c2Vz
IGEgYm91bmRlZC1zZWFyY2ggYmFja3dhcmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisj
aW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMu
aCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgi
CkBAIC0zNDYsNiArMzQ3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09
IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2Uo
dmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBMb2FkOgpAQCAtMzUzLDYgKzM1
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRy
ZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAg
ICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBTdG9yZTg6CkBAIC0zNjIsNiArMzY1LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IElu
dDMyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5j
aGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAg
ICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBTdG9yZToKQEAgLTM2OSw4ICszNzMsNDkgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwg
KnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBl
KCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVT
dGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5k
KCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5udW1DaGlsZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSB2YWx1
ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9p
bnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0
b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NB
UzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxk
cmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxk
KDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
aXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoK
KyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgw
KS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlz
SW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAg
ICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
IXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5j
aGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgICAgICAg
ICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAo
IkF0ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYgKzU4MiwyMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUZlbmNl
KFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisg
ICAgICAgICAgICBWQUxJREFURShtZW1vcnktPmFjY2Vzc0JhbmsoKSA9PSBHUCwgKCJGZW5jZSBh
dCAiLCAqbWVtb3J5KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVBdG9taWMoVmFs
dWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IHZhbHVlLT5h
czxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgCisgICAgICAgIFZBTElEQVRFKGJlc3RUeXBlKEdQ
LCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpID09IGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVTdGFja0FjY2VzcyhW
YWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQp
CiAKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1Zh
bHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQm90
dG9tUHJvdmlkZXIuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTUxMCw2ICs1MTEs
NyBAQCBib29sIFZhbHVlOjpyZXR1cm5zQm9vbCgpIGNvbnN0CiAgICAgY2FzZSBBYm92ZUVxdWFs
OgogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CisgICAg
Y2FzZSBBdG9taWNXZWFrQ0FTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFBoaToK
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgc3RvcnkgaGVyZS4KQEAgLTU4OSw2
ICs1OTEsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIEJlbG93
RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgogICAgIGNhc2UgU2VsZWN0OgorICAg
IGNhc2UgRGVwZW5kOgogICAgICAgICBicmVhazsKICAgICBjYXNlIERpdjoKICAgICBjYXNlIFVE
aXY6CkBAIC02MDAsMTYgKzYwMyw0NCBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QK
ICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIExvYWQxNlo6CiAgICAgY2FzZSBMb2FkMTZTOgot
ICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmVzdWx0LnJlYWRzID0gYXM8TWVtb3J5VmFsdWU+KCkt
PnJhbmdlKCk7CisgICAgY2FzZSBMb2FkOiB7CisgICAgICAgIGNvbnN0IE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5
LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAg
ICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5mZW5jZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1
bHQuZmVuY2UgPSB0cnVlOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5k
ZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgU3RvcmU4OgogICAg
IGNhc2UgU3RvcmUxNjoKLSAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXN1bHQud3JpdGVzID0g
YXM8TWVtb3J5VmFsdWU+KCktPnJhbmdlKCk7CisgICAgY2FzZSBTdG9yZTogeworICAgICAgICBj
b25zdCBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJl
c3VsdC53cml0ZXMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0Zl
bmNlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgp
OworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2Fz
ZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21p
Y1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9y
OgorICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICBjb25zdCBBdG9taWNWYWx1ZSogYXRv
bWljID0gYXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IGF0b21pYy0+
cmFuZ2UoKSB8IGF0b21pYy0+ZmVuY2VSYW5nZSgpOworICAgICAgICByZXN1bHQud3JpdGVzID0g
YXRvbWljLT5yYW5nZSgpIHwgYXRvbWljLT5mZW5jZVJhbmdlKCk7CisgICAgICAgIGlmIChhdG9t
aWMtPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAg
ICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVl
OwogICAgICAgICBicmVhazsKQEAgLTYxNywxOCArNjQ4LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZm
ZWN0cygpIGNvbnN0CiAgICAgICAgIGNvbnN0IEZlbmNlVmFsdWUqIGZlbmNlID0gYXM8RmVuY2VW
YWx1ZT4oKTsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gZmVuY2UtPnJlYWQ7CiAgICAgICAgIHJl
c3VsdC53cml0ZXMgPSBmZW5jZS0+d3JpdGU7Ci0gICAgICAgIAotICAgICAgICAvLyBQcmV2ZW50
IGtpbGxpbmcgb2YgZmVuY2VzIHRoYXQgY2xhaW0gbm90IHRvIHdyaXRlIGFueXRoaW5nLiBJdCdz
IGEgYml0IHdlaXJkIHRoYXQgd2UgdXNlCi0gICAgICAgIC8vIGxvY2FsIHN0YXRlIGFzIHRoZSB3
YXkgdG8gZG8gdGhpcywgYnV0IGl0IGhhcHBlbnMgdG8gd29yazogd2UgbXVzdCBhc3N1bWUgdGhh
dCB3ZSBjYW5ub3QKLSAgICAgICAgLy8ga2lsbCB3cml0ZXNMb2NhbFN0YXRlIHVubGVzcyB3ZSB1
bmRlcnN0YW5kcyBleGFjdGx5IHdoYXQgdGhlIGluc3RydWN0aW9uIGlzIGRvaW5nIChsaWtlCi0g
ICAgICAgIC8vIHRoZSB3YXkgdGhhdCBmaXhTU0EgdW5kZXJzdGFuZHMgU2V0L0dldCBhbmQgdGhl
IHdheSB0aGF0IHJlZHVjZVN0cmVuZ3RoIGFuZCBvdGhlcnMKLSAgICAgICAgLy8gdW5kZXJzdGFu
ZCBVcHNpbG9uKS4gVGhpcyB3b3VsZCBvbmx5IGJlY29tZSBhIHByb2JsZW0gaWYgd2UgaGFkIHNv
bWUgYW5hbHlzaXMgdGhhdCB3YXMKLSAgICAgICAgLy8gbG9va2luZyB0byB1c2UgdGhlIHdyaXRl
c0xvY2FsU3RhdGUgYml0IHRvIGludmFsaWRhdGUgYSBDU0Ugb3ZlciBsb2NhbCBzdGF0ZSBvcGVy
YXRpb25zLgotICAgICAgICAvLyBUaGVuIGEgRmVuY2Ugd291bGQgbG9vayBibG9jaywgc2F5LCB0
aGUgZWxpbWluYXRpb24gb2YgYSByZWR1bmRhbnQgR2V0LiBCdXQgaXQgbGlrZQotICAgICAgICAv
LyB0aGF0J3Mgbm90IGF0IGFsbCBob3cgb3VyIG9wdGltaXphdGlvbnMgZm9yIFNldC9HZXQvVXBz
aWxvbi9QaGkgd29yayAtIHRoZXkgZ3JvayB0aGVpcgotICAgICAgICAvLyBvcGVyYXRpb25zIGRl
ZXBseSBlbm91Z2ggdGhhdCB0aGV5IGhhdmUgbm8gbmVlZCB0byBjaGVjayB0aGlzIGJpdCAtIHNv
IHRoaXMgY2hlYXQgaXMKLSAgICAgICAgLy8gZmluZS4KLSAgICAgICAgcmVzdWx0LndyaXRlc0xv
Y2FsU3RhdGUgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBDQ2FsbDoKQEAgLTY5NCw2ICs3MTQsNyBAQCBWYWx1ZUtl
eSBWYWx1ZTo6a2V5KCkgY29uc3QKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQml0d2lzZUNh
c3Q6CiAgICAgY2FzZSBOZWc6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIHJldHVybiBWYWx1
ZUtleShraW5kKCksIHR5cGUoKSwgY2hpbGQoMCkpOwogICAgIGNhc2UgQWRkOgogICAgIGNhc2Ug
U3ViOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw2ICs2OCwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKS5vcGNvZGUoKTsgfQogICAgIAorICAgIC8vIE5vdGUgdGhhdCB0aGUg
a2luZCBpcyBtZWFudCB0byBiZSBpbW11dGFibGUuIERvIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0
IHRoaXMgaXMgc2FmZS4gSXQncyBub3QKKyAgICAvLyB1c3VhbGx5IHNhZmUuCisgICAgdm9pZCBz
ZXRLaW5kVW5zYWZlbHkoS2luZCBraW5kKSB7IG1fa2luZCA9IGtpbmQ7IH0KKyAgICAKICAgICAv
LyBJdCdzIGdvb2QgcHJhY3RpY2UgdG8gbWlycm9yIEtpbmQgbWV0aG9kcyBoZXJlLCBzbyB5b3Ug
Y2FuIHNheSB2YWx1ZS0+aXNCbGFoKCkKICAgICAvLyBpbnN0ZWFkIG9mIHZhbHVlLT5raW5kKCku
aXNCbGFoKCkuCiAgICAgYm9vbCBpc0NoaWxsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLmlzQ2hp
bGwoKTsgfQpAQCAtMTA3LDYgKzExMSw4IEBAIHB1YmxpYzoKICAgICAvLyB2YWx1ZXMgd2l0aCBJ
ZGVudGl0aWVzIG9uIGJvdHRvbSBjb25zdGFudHMuIEZvciB0aGlzIHJlYXNvbiwgdGhpcyB0YWtl
cyBhIGNhbGxiYWNrIHRoYXQgaXMKICAgICAvLyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYm90
dG9tcy4gVGhlcmUncyBhIHV0aWxpdHkgZm9yIHRoaXMsIHNlZSBCM0JvdHRvbVByb3ZpZGVyLmgu
IFlvdQogICAgIC8vIGNhbiBhbHNvIGFjY2VzcyB0aGF0IHV0aWxpdHkgdXNpbmcgcmVwbGFjZVdp
dGhCb3R0b20oSW5zZXJ0aW9uU2V0Jiwgc2l6ZV90KS4KKyAgICAvLworICAgIC8vIFlvdSdyZSBn
dWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQm90
dG9tUHJvdmlkZXI+CiAgICAgdm9pZCByZXBsYWNlV2l0aEJvdHRvbShjb25zdCBCb3R0b21Qcm92
aWRlciYpOwogICAgIApAQCAtMzIxLDYgKzMyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
SVRvRjoKICAgICAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgY2FzZSBCcmFuY2g6Cisg
ICAgICAgIGNhc2UgRGVwZW5kOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgIT0g
MSkpCiAgICAgICAgICAgICAgICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsKICAgICAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkocmV2aXNpb24g
MjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCwzOCBAQAogCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CiAKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitUeXBlIGJlc3RUeXBlKEJhbmsg
YmFuaywgV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lk
dGg4OgorICAgIGNhc2UgV2lkdGgxNjoKKyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHN3aXRj
aCAoYmFuaykgeworICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDMyOwor
ICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIEZsb2F0OworICAgICAgICB9Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lk
OworICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNh
c2UgR1A6CisgICAgICAgICAgICByZXR1cm4gSW50NjQ7CisgICAgICAgIGNhc2UgRlA6CisgICAg
ICAgICAgICByZXR1cm4gRG91YmxlOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lkOworICAgIH0KKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBWb2lkOworfQorCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKKwogbmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkIzOjpXaWR0aCB3aWR0aCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzV2lkdGguaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzV2lkdGguaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTggQEAgaW5saW5l
IFdpZHRoIHdpZHRoRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKK2lubGluZSBXaWR0aCBjYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICBy
ZXR1cm4gc3RkOjptYXgoV2lkdGgzMiwgd2lkdGgpOworfQorCitpbmxpbmUgYm9vbCBpc0Nhbm9u
aWNhbFdpZHRoKFdpZHRoIHdpZHRoKQoreworICAgIHJldHVybiB3aWR0aCA+PSBXaWR0aDMyOwor
fQorCitUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpOworCiBpbmxpbmUgV2lk
dGggY29uc2VydmF0aXZlV2lkdGgoQmFuayBiYW5rKQogewogICAgIHJldHVybiBiYW5rID09IEdQ
ID8gcG9pbnRlcldpZHRoKCkgOiBXaWR0aDY0OwpAQCAtOTMsNiArMTA1LDIwIEBAIGlubGluZSBX
aWR0aCB3aWR0aEZvckJ5dGVzKHVuc2lnbmVkIGJ5dGUKICAgICB9CiB9CiAKK2lubGluZSB1aW50
NjRfdCBtYXNrKFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNl
IFdpZHRoODoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAwMDBmZmxsdTsKKyAgICBjYXNl
IFdpZHRoMTY6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMGZmZmZsbHU7CisgICAgY2Fz
ZSBXaWR0aDMyOgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMGZmZmZmZmZmbGx1OworICAgIGNh
c2UgV2lkdGg2NDoKKyAgICAgICAgcmV0dXJuIDB4ZmZmZmZmZmZmZmZmZmZmZmxsdTsKKyAgICB9
Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkFpclZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlLmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisj
aW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMu
aCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgi
CkBAIC00NCw2ICs0NSw3IEBACiAjaW5jbHVkZSAiQjNNYXRoRXh0cmFzLmgiCiAjaW5jbHVkZSAi
QjNNZW1vcnlWYWx1ZS5oIgogI2luY2x1ZGUgIkIzTW92ZUNvbnN0YW50cy5oIgorI2luY2x1ZGUg
IkIzTmF0aXZlVHJhaXRzLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlICJC
M1JlZHVjZVN0cmVuZ3RoLmgiCiAjaW5jbHVkZSAiQjNTbG90QmFzZVZhbHVlLmgiCkBAIC0xMzc5
MSw3ICsxMzc5Myw3IEBAIHZvaWQgdGVzdFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCiAgICAg
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpOwogICAgIHVuc2lnbmVkIHN0b3JlQ291bnQgPSAwOwog
ICAgIGZvciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoTWVt
b3J5VmFsdWU6OmlzU3RvcmUodmFsdWUtPm9wY29kZSgpKSkKKyAgICAgICAgaWYgKGlzU3RvcmUo
dmFsdWUtPm9wY29kZSgpKSkKICAgICAgICAgICAgIHN0b3JlQ291bnQrKzsKICAgICB9CiAgICAg
Q0hFQ0tfRVEoc3RvcmVDb3VudCwgMnUpOwpAQCAtMTQyNzcsNiArMTQyNzksMjk4IEBAIHZvaWQg
dGVzdE9wdGltaXplTWF0ZXJpYWxpemF0aW9uKCkKICAgICBDSEVDSyhmb3VuZCk7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RBdG9taWNXZWFrQ0FTKCkKK3sKKyAgICBUeXBl
IHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVU
cmFpdHM8VD46OndpZHRoOworICAgIAorICAgIGF1dG8gY2hlY2tEaXNhc3NlbWJseSA9IFsmXSAo
Q29tcGlsYXRpb24mIGNvbXBpbGF0aW9uKSB7CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsKKyAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAiY21weGNoZyIpOworICAg
ICAgICB9CisgICAgfTsKKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Js
b2NrKiByZWxvb3AgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGRvbmUg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9y
aWdpbigpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhyZWxvb3ApOworICAgICAgICAK
KyAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJh
bmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgs
CisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQo
cHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyKSk7Cisg
ICAgICAgIHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25lLCByZWxvb3ApOworICAgICAgICAKKyAg
ICAgICAgZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAg
ICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNr
RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlID0gNDI7CisgICAgICAgIGludm9r
ZTx2b2lkPigqY29kZSwgJnZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWUsIHN0YXRpY19j
YXN0PFQ+KDB4YmVlZikpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2Nr
KiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9y
aWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZElu
dENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAg
IHB0cikpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHN1Y2MsIGZhaWwpOworICAgICAg
ICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAg
ICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUo
cHJvYyk7CisgICAgICAgIGNoZWNrRGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVl
ID0gNDI7CisgICAgICAgIHdoaWxlICh2YWx1ZSA9PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2
b2lkPigqY29kZSwgJnZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWUsIHN0YXRpY19jYXN0
PFQ+KDEwMCkpOworICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAg
IGludm9rZTx2b2lkPigqY29kZSwgJnZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWUsIHN0
YXRpY19jYXN0PFQ+KDMwMCkpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Js
b2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0
ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAg
ICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0
MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICBwdHIpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwg
MCkpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhmYWlsLCBzdWNjKTsKKyAgICAgICAg
CisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFw
cGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAg
cHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdp
bigpKTsKKyAgICAgICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHBy
b2MpOworICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZSA9
IDQyOworICAgICAgICB3aGlsZSAodmFsdWUgPT0gNDIpCisgICAgICAgICAgICBpbnZva2U8dm9p
ZD4oKmNvZGUsICZ2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlLCBzdGF0aWNfY2FzdDxU
PigxMDApKTsKKyAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBp
bnZva2U8dm9pZD4oKmNvZGUsICZ2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlLCBzdGF0
aWNfY2FzdDxUPigzMDApKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAg
ICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAg
ICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tE
aXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWUgPSA0MjsKKyAgICAgICAgd2hpbGUg
KCFpbnZva2U8Ym9vbD4oKmNvZGUsICZ2YWx1ZSkpIHsgfQorICAgICAgICBDSEVDSyh2YWx1ZSA9
PSBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgCisgICAgICAgIHZhbHVlID0gc3Rh
dGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0soIWludm9rZTxib29sPigqY29kZSwgJnZh
bHVlKSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0QXRvbWlj
U3Ryb25nQ0FTKCkKK3sKKyAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7Cisg
ICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOworICAgIAorICAgIGF1dG8g
Y2hlY2tEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRpb24mIGNvbXBpbGF0aW9uKSB7CisgICAg
ICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21w
aWxhdGlvbiwgImxvY2siKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBp
bGF0aW9uLCAiY21weGNoZyIpOworICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAg
ICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAor
ICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29u
c3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAg
IHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHN1Y2MsIGZh
aWwpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAg
ICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCks
CisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNrRGlzYXNzZW1ibHkoKmNvZGUpOworICAg
ICAgICBUIHZhbHVlID0gNDI7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgJnZhbHVlKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWUsIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICB2
YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwg
JnZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWUsIHN0YXRpY19jYXN0PFQ+KDMwMCkpOwor
ICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNj
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRC
bG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9t
aWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4
YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICBy
b290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQ
LCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQo
cHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBz
dWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAK
KyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsK
KyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNo
ZWNrRGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlID0gNDI7CisgICAgICAgIGlu
dm9rZTx2b2lkPigqY29kZSwgJnZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWUsIHN0YXRp
Y19jYXN0PFQ+KDEwMCkpOworICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7Cisg
ICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgJnZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWUsIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgs
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAg
ICAgIGNoZWNrRGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlID0gNDI7CisgICAg
ICAgIENIRUNLKGludm9rZTxUPigqY29kZSwgJnZhbHVlKSA9PSA0Mik7CisgICAgICAgIENIRUNL
KHZhbHVlID09IHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICB2YWx1ZSA9IHN0YXRp
Y19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKGludm9rZTxUPigqY29kZSwgJnZhbHVlKSA9
PSBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0sodmFsdWUgPT0gc3RhdGljX2Nh
c3Q8VD4oMzAwKSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0
b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBP
cmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgCisg
ICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNrRGlzYXNzZW1i
bHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlID0gNDI7CisgICAgICAgIENIRUNLKGludm9rZTxi
b29sPigqY29kZSwgJnZhbHVlKSk7CisgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8VD4oMzAw
KTsKKyAgICAgICAgQ0hFQ0soIWludm9rZTxib29sPigqY29kZSwgJnZhbHVlKSk7CisgICAgfQor
ICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAg
ICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvYywg
QXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgNDIpKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpKTsKKyAgICAgICAgICAgIAorICAgICAgICBh
dXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KCpjb2Rl
KTsKKyAgICAgICAgVCB2YWx1ZSA9IDQyOworICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNv
ZGUsICZ2YWx1ZSkpOworICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAg
ICAgIENIRUNLKCFpbnZva2U8Ym9vbD4oKmNvZGUsICZ2YWx1ZSkpOworICAgIH0KK30KKwogdm9p
ZCB0ZXN0V2FzbUJvdW5kc0NoZWNrKHVuc2lnbmVkIG9mZnNldCkKIHsKICAgICBQcm9jZWR1cmUg
cHJvYzsKQEAgLTE0MzcwLDYgKzE0NjY0LDEzIEBAIGRvdWJsZSBuZWdhdGl2ZVplcm8oKQogICAg
IHJldHVybiAtemVybygpOwogfQogCisjZGVmaW5lIFJVTl9OT1codGVzdCkgZG8geyAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghc2hvdWxkUnVuKCN0ZXN0KSkgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIGRhdGFMb2coI3Rlc3QgIi4uLlxuIik7ICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHRlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGRhdGFMb2coI3Rlc3QgIjogT0shXG4iKTsgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCiAjZGVmaW5lIFJVTih0ZXN0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIGlmICghc2hvdWxkUnVuKCN0ZXN0KSkgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNDQyMSw5
ICsxNDcyMiw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICAgICAgcmV0dXJu
ICFmaWx0ZXIgfHwgISFzdHJjYXNlc3RyKHRlc3ROYW1lLCBmaWx0ZXIpOwogICAgIH07CiAKLSAg
ICAvLyBXZSBydW4gdGhpcyB0ZXN0IGZpcnN0IGJlY2F1c2UgaXQgZmlkZGxlcyB3aXRoIHNvbWUK
LSAgICAvLyBKU0Mgb3B0aW9ucy4KLSAgICB0ZXN0VGVybWluYWxQYXRjaHBvaW50VGhhdE5lZWRz
VG9CZVNwaWxsZWQyKCk7CisgICAgUlVOX05PVyh0ZXN0VGVybWluYWxQYXRjaHBvaW50VGhhdE5l
ZWRzVG9CZVNwaWxsZWQyKCkpOwogCiAgICAgUlVOKHRlc3Q0MigpKTsKICAgICBSVU4odGVzdExv
YWQ0MigpKTsKQEAgLTE1ODMxLDYgKzE2MTMwLDE1IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZp
bHRlcikKICAgICBSVU4odGVzdExvYWRCYXNlSW5kZXhTaGlmdDIoKSk7CiAgICAgUlVOKHRlc3RM
b2FkQmFzZUluZGV4U2hpZnQzMigpKTsKICAgICBSVU4odGVzdE9wdGltaXplTWF0ZXJpYWxpemF0
aW9uKCkpOworICAgIAorICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxpbnQ4X3Q+KCkpOworICAg
IFJVTih0ZXN0QXRvbWljV2Vha0NBUzxpbnQxNl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dl
YWtDQVM8aW50MzJfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDY0X3Q+KCkp
OworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDhfdD4oKSk7CisgICAgUlVOKHRlc3RB
dG9taWNTdHJvbmdDQVM8aW50MTZfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNTdHJvbmdDQVM8
aW50MzJfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNTdHJvbmdDQVM8aW50NjRfdD4oKSk7CiAK
ICAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjaygwKSk7CiAgICAgUlVOKHRlc3RXYXNtQm91bmRz
Q2hlY2soMTAwKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3Bw
CShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFy
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCB1bnNpZ25lZCBBcmc6Ompz
SGFzaCgpIGNvbnN0CiAgICAgY2FzZSBSZWxDb25kOgogICAgIGNhc2UgUmVzQ29uZDoKICAgICBj
YXNlIERvdWJsZUNvbmQ6CisgICAgY2FzZSBTdGF0dXNDb25kOgogICAgIGNhc2UgV2lkdGhBcmc6
CiAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpOwogICAg
ICAgICBicmVhazsKQEAgLTE4Miw2ICsxODMsOSBAQCB2b2lkIEFyZzo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgb3V0LnByaW50KGFz
RG91YmxlQ29uZGl0aW9uKCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0dXNDb25k
OgorICAgICAgICBvdXQucHJpbnQoYXNTdGF0dXNDb25kaXRpb24oKSk7CisgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIG91dC5wcmludChwb2ludGVyRHVtcChzcGVj
aWFsKCkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQxLDYgKzI0NSw5IEBAIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6RG91YmxlQ29uZDoK
ICAgICAgICAgb3V0LnByaW50KCJEb3VibGVDb25kIik7CiAgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIEFyZzo6U3RhdHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KCJTdGF0dXNDb25kIik7Cisg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIEFyZzo6U3BlY2lhbDoKICAgICAgICAgb3V0LnByaW50
KCJTcGVjaWFsIik7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NSw2ICsyOTIsOSBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkVhcmx5RGVm
OgogICAgICAgICBvdXQucHJpbnQoIkVhcmx5RGVmIik7CiAgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIEFyZzo6RWFybHlaRGVmOgorICAgICAgICBvdXQucHJpbnQoIkVhcmx5WkRlZiIpOworICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgIG91dC5wcmludCgi
U2NyYXRjaCIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFyZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQXJnLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQXJnLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgog
ICAgICAgICBSZWxDb25kLAogICAgICAgICBSZXNDb25kLAogICAgICAgICBEb3VibGVDb25kLAor
ICAgICAgICBTdGF0dXNDb25kLAogICAgICAgICBTcGVjaWFsLAogICAgICAgICBXaWR0aEFyZwog
ICAgIH07CkBAIC0xNTEsNiArMTUyLDggQEAgcHVibGljOgogICAgICAgICAvLyBhcyBVc2UgaGFz
IHVuZGVmaW5lZCBiZWhhdmlvcjogdGhlIHVzZSBtYXkgaGFwcGVuIGJlZm9yZSB0aGUgZGVmLCBv
ciBpdCBtYXkgaGFwcGVuIGFmdGVyCiAgICAgICAgIC8vIGl0LgogICAgICAgICBFYXJseURlZiwK
KyAgICAgICAgICAgIAorICAgICAgICBFYXJseVpEZWYsCiAKICAgICAgICAgLy8gU29tZSBpbnN0
cnVjdGlvbnMgbmVlZCBhIHNjcmF0Y2ggcmVnaXN0ZXIuIFdlIG1vZGVsIHRoaXMgYnkgc2F5aW5n
IHRoYXQgdGhlIHRlbXBvcmFyeSBpcwogICAgICAgICAvLyBkZWZpbmVkIGVhcmx5IGFuZCB1c2Vk
IGxhdGUuIFRoaXMgcm9sZSBpbXBsaWVzIHRoYXQuCkBAIC0xODYsNiArMTg5LDcgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2Fz
ZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMDYs
NiArMjEwLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2Ug
U2NyYXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0yMjgsNiArMjMzLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVz
ZUFkZHI6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAg
ICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gcm9sZTsKICAgICAgICAg
Y2FzZSBVc2U6CiAgICAgICAgICAgICByZXR1cm4gQ29sZFVzZTsKQEAgLTI1Myw2ICsyNTksNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgIGNhc2UgU2NyYXRj
aDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0yNzQsNiArMjgxLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFpEZWY6CiAg
ICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2Fz
ZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTQsNiArMzAyLDcgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlWkRlZjoKICAgICAgICAgY2FzZSBFYXJs
eURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMTUsNiArMzI0LDcgQEAgcHVi
bGljOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAg
ICAgY2FzZSBTY3JhdGNoOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTMzMCw2ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAg
Y2FzZSBMYXRlVXNlOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5
WkRlZjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU4LDYgKzM2OSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNl
IFVzZVpEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MzMsNiAr
NTQ1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBz
dGF0aWMgQXJnIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbiBjb25k
aXRpb24pCisgICAgeworICAgICAgICBBcmcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5k
ID0gU3RhdHVzQ29uZDsKKyAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY29uZGl0aW9uOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHN0YXRpYyBBcmcgc3BlY2lhbChBaXI6
OlNwZWNpYWwqIHNwZWNpYWwpCiAgICAgewogICAgICAgICBBcmcgcmVzdWx0OwpAQCAtNjU4LDEy
ICs2NzgsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4ga2luZCgpID09IERvdWJsZUNvbmQ7
CiAgICAgfQogCisgICAgYm9vbCBpc1N0YXR1c0NvbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGtpbmQoKSA9PSBTdGF0dXNDb25kOworICAgIH0KKwogICAgIGJvb2wgaXNDb25kaXRp
b24oKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2Fz
ZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29u
ZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NTEsNiArODc3
LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29u
ZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAg
ICAgICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtODcyLDYgKzg5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBS
ZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoK
KyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAg
IGNhc2UgV2lkdGhBcmc6CiAgICAgICAgIGNhc2UgSW52YWxpZDoKQEAgLTEwNTgsNiArMTA4Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6
CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAg
ICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTExNzcsNiArMTIwNiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uPihtX29mZnNldCk7
CiAgICAgfQogICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gYXNTdGF0
dXNDb25kaXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU3RhdHVzQ29uZCgp
KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25k
aXRpb24+KG1fb2Zmc2V0KTsKKyAgICB9CisgICAgCiAgICAgLy8gVGVsbHMgeW91IGlmIHRoZSBB
cmcgaXMgaW52ZXJ0aWJsZS4gT25seSBjb25kaXRpb24gYXJndW1lbnRzIGFyZSBpbnZlcnRpYmxl
LCBhbmQgZXZlbiBmb3IgdGhvc2UsIHRoZXJlCiAgICAgLy8gYXJlIGEgZmV3IGV4Y2VwdGlvbnMg
LSBub3RhYmx5IE92ZXJmbG93IGFuZCBTaWduZWQuCiAgICAgYm9vbCBpc0ludmVydGlibGUoKSBj
b25zdApAQCAtMTE4NCw2ICsxMjE5LDcgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKGtpbmQo
KSkgewogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAg
ICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IGNhc2UgUmVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6aXNJbnZl
cnRpYmxlKGFzUmVzdWx0Q29uZGl0aW9uKCkpOwpAQCAtMTIwNCw2ICsxMjQwLDggQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIHJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1Jl
c3VsdENvbmRpdGlvbigpKSk7CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgICAg
IHJldHVybiBkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNEb3VibGVDb25kaXRp
b24oKSkpOworICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CisgICAgICAgICAgICByZXR1cm4gc3Rh
dHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzU3RhdHVzQ29uZGl0aW9uKCkpKTsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzUsNiArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQog
CiBjb25zdCBjaGFyKiBjb25zdCBCYXNpY0Jsb2NrOjpkdW1wUHJlZml4ID0gIiMiOwogCit2b2lk
IEJhc2ljQmxvY2s6OnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrIHRhcmdldCkKK3sKKyAg
ICBtX3N1Y2Nlc3NvcnMucmVzaXplKDEpOworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRhcmdldDsK
K30KKwordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YWtl
biwgRnJlcXVlbnRlZEJsb2NrIG5vdFRha2VuKQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUo
Mik7CisgICAgbV9zdWNjZXNzb3JzWzBdID0gdGFrZW47CisgICAgbV9zdWNjZXNzb3JzWzFdID0g
bm90VGFrZW47Cit9CisKIGJvb2wgQmFzaWNCbG9jazo6YWRkUHJlZGVjZXNzb3IoQmFzaWNCbG9j
ayogYmxvY2spCiB7CiAgICAgcmV0dXJuIEIzOjphZGRQcmVkZWNlc3Nvcih0aGlzLCBibG9jayk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNp
Y0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMywxMSBAQAogI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKLW5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0OworCituYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7
CiBjbGFzcyBDb2RlOwpAQCAtOTksNiArMTAzLDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN1Y2Nl
c3Nvckxpc3QmIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KICAg
ICBTdWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAK
KyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKTsKKyAgICB2b2lkIHNldFN1
Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrLCBGcmVxdWVudGVkQmxvY2spOworCiAgICAgQmFzaWNC
bG9jayogc3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHN1Y2Nl
c3NvcihpbmRleCkuYmxvY2soKTsgfQogICAgIEJhc2ljQmxvY2sqJiBzdWNjZXNzb3JCbG9jayh1
bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAg
U3VjY2Vzc29yQ29sbGVjdGlvbjxCYXNpY0Jsb2NrLCBTdWNjZXNzb3JMaXN0PiBzdWNjZXNzb3JC
bG9ja3MoKQpAQCAtMTMzLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJs
b2NrSW5zZXJ0aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBDb2RlOwogICAgIGZyaWVuZCBjbGFz
cyBJbnNlcnRpb25TZXQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBCMzo6
R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIAogICAgIEJhc2ljQmxvY2sodW5zaWduZWQg
aW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
aXJCbG9ja0luc2VydGlvblNldC5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUg
IkFpckJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0J1
YmJsZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBB
aXIgeworCitCbG9ja0luc2VydGlvblNldDo6QmxvY2tJbnNlcnRpb25TZXQoQ29kZSAmY29kZSkK
KyAgICA6IEdlbmVyaWNCbG9ja0luc2VydGlvblNldChjb2RlLm1fYmxvY2tzKQoreworfQorCitC
bG9ja0luc2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KCkKK3sKK30KKworfSB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRp
b25TZXQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckJsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0luc2VydGlv
blNldC5oIgorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsgbmFtZXNwYWNlIEFpciB7CisKK2NsYXNzIEluc2VydGlvblNldDsKKwordHlwZWRlZiBHZW5l
cmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5z
ZXJ0aW9uOworCitjbGFzcyBCbG9ja0luc2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJ
bnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4geworcHVibGljOgorICAgIEJsb2NrSW5zZXJ0aW9uU2V0
KENvZGUmKTsKKyAgICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKKyAgICAKKyAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGV2ZW50dWFsbHkgaW1wbGVtZW50IEIzOjpCbG9ja0luc2VydGlvblNldCdzIHNw
bGl0Rm9yd2FyZCgpLgorfTsKKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisj
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRHVtcEFzSlMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyRHVtcEFzSlMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI0NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFpckR1bXBBc0pTLmgiCi0KLSNpZiBF
TkFCTEUoQjNfSklUKQotCi0jaW5jbHVkZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFpckluc3RJ
bmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWly
IHsKLQotbmFtZXNwYWNlIHsKLQotQ1N0cmluZyB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KHVuc2ln
bmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoImJiIiwgaW5kZXgpOwotfQotCi1D
U3RyaW5nIHZhck5hbWUoQmFzaWNCbG9jayogYmxvY2spCi17Ci0gICAgcmV0dXJuIHZhck5hbWVG
b3JCbG9ja0F0SW5kZXgoYmxvY2stPmluZGV4KCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWVGb3JT
dGFja1Nsb3RBdEluZGV4KHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmco
InNsb3QiLCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShTdGFja1Nsb3QqIHNsb3QpCi17
Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JTdGFja1Nsb3RBdEluZGV4KHNsb3QtPmluZGV4KCkpOwot
fQotCi1DU3RyaW5nIHZhck5hbWUoUmVnIHJlZykKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJS
ZWcuIiwgcmVnLmRlYnVnTmFtZSgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lRm9yVG1wV2l0aEJh
bmtBbmRJbmRleChCYW5rIGJhbmssIHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NT
dHJpbmcoYmFuayA9PSBGUCA/ICJmIiA6ICIiLCAidG1wIiwgaW5kZXgpOwotfQotCi1DU3RyaW5n
IHZhck5hbWUoVG1wIHRtcCkKLXsKLSAgICBpZiAodG1wLmlzUmVnKCkpCi0gICAgICAgIHJldHVy
biB2YXJOYW1lKHRtcC5yZWcoKSk7Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JUbXBXaXRoQmFua0Fu
ZEluZGV4KEFyZyh0bXApLmJhbmsoKSwgdG1wLnRtcEluZGV4KCkpOwotfQotCi19IC8vIGFub255
bW91cyBuYW1lc3BhY2UKLQotdm9pZCBkdW1wQXNKUyhDb2RlJiBjb2RlLCBQcmludFN0cmVhbSYg
b3V0KQotewotICAgIG91dC5wcmludGxuKCJsZXQgY29kZSA9IG5ldyBDb2RlKCk7Iik7Ci0gICAg
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGUuc2l6ZSgpOyArK2kpCi0gICAgICAg
IG91dC5wcmludGxuKCJsZXQgIiwgdmFyTmFtZUZvckJsb2NrQXRJbmRleChpKSwgIiA9IGNvZGUu
YWRkQmxvY2soKTsiKTsKLSAgICAKLSAgICBvdXQucHJpbnRsbigibGV0IGhhc2g7Iik7Ci0KLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZS5zdGFja1Nsb3RzKCkuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgU3RhY2tTbG90KiBzbG90ID0gY29kZS5zdGFja1Nsb3RzKClbaV07Ci0gICAg
ICAgIGlmIChzbG90KSB7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZhck5hbWUo
c2xvdCksICIgPSBjb2RlLmFkZFN0YWNrU2xvdCgiLCBzbG90LT5ieXRlU2l6ZSgpLCAiLCAiLCBz
bG90LT5raW5kKCksICIpOyIpOwotICAgICAgICAgICAgaWYgKHNsb3QtPm9mZnNldEZyb21GUCgp
KQotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoc2xvdCksICIuc2V0T2Zmc2V0
RnJvbUZQKCIsIHNsb3QtPm9mZnNldEZyb21GUCgpLCAiKTsiKTsKLSAgICAgICAgICAgIG91dC5w
cmludGxuKCJoYXNoID0gIiwgdmFyTmFtZShzbG90KSwgIi5oYXNoKCk7Iik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRsbigiaWYgKGhhc2ggIT0gIiwgc2xvdC0+anNIYXNoKCksICIpIik7Ci0gICAg
ICAgICAgICBvdXQucHJpbnRsbigiICAgIHRocm93IG5ldyBFcnJvcihcIkJhZCBoYXNoOiBcIiAr
IGhhc2gpOyIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJjb2Rl
LmFkZFN0YWNrU2xvdCgxLCBTcGlsbCk7Iik7Ci0gICAgfQotICAgIAotICAgIGZvckVhY2hCYW5r
KAotICAgICAgICBbJl0gKEJhbmsgYmFuaykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gY29kZS5udW1UbXBzKGJhbmspOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50
bG4oCi0gICAgICAgICAgICAgICAgICAgICJsZXQgIiwgdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5k
SW5kZXgoYmFuaywgaSksICIgPSBjb2RlLm5ld1RtcCgiLCBiYW5rLCAiKTsiKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSk7Ci0gICAgCi0gICAgb3V0LnByaW50bG4oImxldCBpbnN0OyIpOwot
ICAgIG91dC5wcmludGxuKCJsZXQgYXJnOyIpOwotICAgIAotICAgIGZvciAoQmFzaWNCbG9jayog
YmxvY2sgOiBjb2RlKSB7Ci0gICAgICAgIGZvciAoRnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6
IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAg
ICAgICAgICAgIHZhck5hbWUoYmxvY2spLCAiLnN1Y2Nlc3NvcnMucHVzaChuZXcgRnJlcXVlbnRl
ZEJsb2NrKCIsCi0gICAgICAgICAgICAgICAgdmFyTmFtZShzdWNjZXNzb3IuYmxvY2soKSksICIs
ICIsIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSwgIikpOyIpOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29y
cygpKQotICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayksICIucHJlZGVjZXNz
b3JzLnB1c2goIiwgdmFyTmFtZShwcmVkZWNlc3NvciksICIpOyIpOwotICAgICAgICAKLSAgICAg
ICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgZG8gc29tZXRoaW5nIGZvciBmbGFncy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3NTEKLSAgICAgICAgICAgIG91dC5w
cmludGxuKCJpbnN0ID0gbmV3IEluc3QoIiwgaW5zdC5raW5kLm9wY29kZSwgIik7Iik7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAgICBb
Jl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUsIEJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAoYXJnLmtpbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
SW52YWxpZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VG1wOgotICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVUbXAoIiwgdmFyTmFtZShh
cmcudG1wKCkpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbW06Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUltbSgi
LCBhcmcudmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6Qmln
SW1tOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVCaWdJbW0oIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSksICIsICIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVl
KCkgPj4gMzIpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaXRJbW06
Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUJp
dEltbSgiLCBhcmcudmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6Qml0SW1tNjQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUJpdEltbTY0KCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkp
LCAiLCAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+
KGFyZy52YWx1ZSgpID4+IDMyKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6QWRkcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlQWRkcigiLCB2YXJOYW1lKGFyZy5i
YXNlKCkpLCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBcmc6OlN0YWNrOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVTdGFjaygiLCB2YXJO
YW1lKGFyZy5zdGFja1Nsb3QoKSksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6Q2FsbEFyZzoKLSAgICAgICAgICAgICAgICAgICAgICAg
IG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlQ2FsbEFyZygiLCBhcmcub2Zmc2V0KCksICIp
OyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkluZGV4OgotICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFy
ZyA9IEFyZy5jcmVhdGVJbmRleCgiLCB2YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhck5hbWUoYXJnLmluZGV4KCkpLCAiLCAiLCBhcmcuc2Nh
bGUoKSwgIiwgIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQXJnOjpSZWxDb25kOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFy
ZyA9IEFyZy5jcmVhdGVSZWxDb25kKCIsIGFyZy5hc1JlbGF0aW9uYWxDb25kaXRpb24oKSwgIik7
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6UmVzQ29uZDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlUmVzQ29uZCgiLCBhcmcu
YXNSZXN1bHRDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6RG91YmxlQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcg
PSBBcmcuY3JlYXRlRG91YmxlQ29uZCgiLCBhcmcuYXNEb3VibGVDb25kaXRpb24oKSwgIik7Iik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U3BlY2lhbDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlU3BlY2lhbCgpOyIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OldpZHRoQXJnOgotICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVXaWR0aEFyZygiLCBhcmcud2lkdGgo
KSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgb3V0LnBy
aW50bG4oImluc3QuYXJncy5wdXNoKGFyZyk7Iik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGluc3QuaGFzTm9uQXJnRWZmZWN0cygpKQotICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5wYXRjaEhhc05vbkFyZ0VmZmVjdHMgPSB0cnVlOyIp
OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4
dHJhRWFybHlDbG9iYmVyZWRSZWdzID0gbmV3IFNldCgpOyIpOwotICAgICAgICAgICAgICAgIG91
dC5wcmludGxuKCJpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncyA9IG5ldyBTZXQoKTsiKTsKLSAgICAg
ICAgICAgICAgICBpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkuZm9yRWFjaCgKLSAgICAg
ICAgICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBv
dXQucHJpbnRsbigiaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShy
ZWcpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgaW5z
dC5leHRyYUNsb2JiZXJlZFJlZ3MoKS5mb3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0g
KFJlZyByZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4
dHJhQ2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAiKTsiKTsKLSAgICAgICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0LnByaW50
bG4oImluc3QucGF0Y2hBcmdEYXRhID0gW107Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5mb3JF
YWNoQXJnKAotICAgICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBC
YW5rIGJhbmssIFdpZHRoIHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdC5wYXRjaEFyZ0RhdGEucHVz
aCh7cm9sZTogQXJnLiIsIHJvbGUsICIsIHR5cGU6ICIsIGJhbmssCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiwgd2lkdGg6ICIsIHdpZHRoLCAifSk7Iik7Ci0gICAgICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5z
dC5raW5kLm9wY29kZSA9PSBDQ2FsbCB8fCBpbnN0LmtpbmQub3Bjb2RlID09IENvbGRDQ2FsbCkg
ewotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsVHlwZSA9ICIsIGluc3Qu
b3JpZ2luLT50eXBlKCkpOwotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxs
QXJnVHlwZXMgPSBbXTsiKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBp
IDwgaW5zdC5vcmlnaW4tPm51bUNoaWxkcmVuKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50bG4oImluc3QuY0NhbGxBcmdUeXBlcy5wdXNoKCIsIGluc3Qub3JpZ2luLT5jaGls
ZChpKS0+dHlwZSgpLCAiKTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgb3V0LnByaW50bG4oImhhc2ggPSBpbnN0Lmhhc2goKTsiKTsKLSAgICAgICAgICAgIG91
dC5wcmludGxuKCJpZiAoaGFzaCAhPSAiLCBpbnN0LmpzSGFzaCgpLCAiKSIpOwotICAgICAgICAg
ICAgb3V0LnByaW50bG4oIiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgaGFzaDogXCIgKyBoYXNo
KTsiKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9j
ayksICIuYXBwZW5kKGluc3QpOyIpOwotICAgICAgICB9Ci0gICAgfQotfQotCi19IH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMzo6QWlyCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5oCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgJKG5v
bmV4aXN0ZW50KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQot
I2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsgbmFtZXNwYWNlIEFpciB7Ci0KLWNsYXNzIENvZGU7Ci0KLS8vIFRoaXMgaXMgdXNlZCBm
b3IgYmVuY2htYXJraW5nLiBWYXJpb3VzIG9wZXJhdGlvbnMgb24gQWlyIGFyZSBpbnRlcmVzdGlu
ZyBmcm9tIGEgYmVuY2htYXJraW5nCi0vLyBzdGFuZHBvaW50LiBXZSBjYW4gd3JpdGUgc29tZSBB
aXIgcGhhc2VzIGluIEpTIGFuZCB0aGVuIHVzZSB0aGF0IHRvIGJlbmNobWFyayBKUy4gVGhlIGJl
bmNobWFyawotLy8gaXMgY2FsbGVkIEpTQWlyLCBhbmQgaXQncyBpbiBQZXJmb3JtYW5jZVRlc3Rz
L0pTQWlyLgotdm9pZCBkdW1wQXNKUyhDb2RlJiwgUHJpbnRTdHJlYW0mKTsKLQotfSB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShyZXZpc2lv
biAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkFpckFsbG9jYXRl
UmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmgiCiAjaW5jbHVkZSAiQWlyQWxsb2NhdGVTdGFjay5o
IgogI2luY2x1ZGUgIkFpckNvZGUuaCIKLSNpbmNsdWRlICJBaXJEdW1wQXNKUy5oIgogI2luY2x1
ZGUgIkFpckVsaW1pbmF0ZURlYWRDb2RlLmgiCiAjaW5jbHVkZSAiQWlyRml4T2J2aW91c1NwaWxs
cy5oIgogI2luY2x1ZGUgIkFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oIgpAQCAtNzMsNiAr
NzIsOCBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAgICAgIGRh
dGFMb2coIkluaXRpYWwgYWlyOlxuIik7CiAgICAgICAgIGRhdGFMb2coY29kZSk7CiAgICAgfQor
ICAgIAorICAgIHNpbXBsaWZ5Q0ZHKGNvZGUpOwogCiAgICAgbG93ZXJNYWNyb3MoY29kZSk7CiAK
QEAgLTEwNywyMyArMTA4LDExIEBAIHZvaWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29k
ZSkKICAgICAvLyBkb2VzIHRoaW5ncyBsaWtlIGlkZW50aWZ5IHdoaWNoIGNhbGxlZS1zYXZlcyB3
ZSdyZSB1c2luZyBhbmQgc2F2ZXMgdGhlbS4KICAgICBoYW5kbGVDYWxsZWVTYXZlcyhjb2RlKTsK
ICAgICAKLSAgICBpZiAoT3B0aW9uczo6ZHVtcEFpckFzSlNCZWZvcmVBbGxvY2F0ZVN0YWNrKCkp
IHsKLSAgICAgICAgZGF0YUxvZygiRHVtcGluZyBBaXIgYXMgSlMgYmVmb3JlIGFsbG9jYXRlU3Rh
Y2s6XG4iKTsKLSAgICAgICAgZHVtcEFzSlMoY29kZSwgV1RGOjpkYXRhRmlsZSgpKTsKLSAgICAg
ICAgZGF0YUxvZygiQWlyIGhhc2g6ICIsIGNvZGUuanNIYXNoKCksICJcbiIpOwotICAgIH0KLQog
ICAgIC8vIFRoaXMgdHVybnMgYWxsIFN0YWNrIGFuZCBDYWxsQXJnIEFyZ3MgaW50byBBZGRyIGFy
Z3MgdGhhdCB1c2UgdGhlIGZyYW1lIHBvaW50ZXIuIEl0IGRvZXMKICAgICAvLyB0aGlzIGJ5IGZp
cnN0LWZpdCBhbGxvY2F0aW5nIHN0YWNrIHNsb3RzLiBJdCBzaG91bGQgYmUgcHJldHR5IGRhcm4g
Y2xvc2UgdG8gb3B0aW1hbCwgc28gd2UKICAgICAvLyBzaG91bGRuJ3QgaGF2ZSB0byB3b3JyeSBh
Ym91dCB0aGlzIHZlcnkgbXVjaC4KICAgICBhbGxvY2F0ZVN0YWNrKGNvZGUpOwogICAgIAotICAg
IGlmIChPcHRpb25zOjpkdW1wQWlyQWZ0ZXJBbGxvY2F0ZVN0YWNrKCkpIHsKLSAgICAgICAgZGF0
YUxvZygiRHVtcGluZyBBaXIgYWZ0ZXIgYWxsb2NhdGVTdGFjazpcbiIpOwotICAgICAgICBkYXRh
TG9nKGNvZGUpOwotICAgICAgICBkYXRhTG9nKCJBaXIgaGFzaDogIiwgY29kZS5qc0hhc2goKSwg
IlxuIik7Ci0gICAgfQotCiAgICAgLy8gSWYgd2UgY29hbGVzY2VkIG1vdmVzIHRoZW4gd2UgY2Fu
IHVuYnJlYWsgY3JpdGljYWwgZWRnZXMuIFRoaXMgaXMgdGhlIG1haW4gcmVhc29uIGZvciB0aGlz
CiAgICAgLy8gcGhhc2UuCiAgICAgc2ltcGxpZnlDRkcoY29kZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNjUgQEAgaW5saW5lIGJvb2wgaXNYODZVRGl2NjRWYWxp
ZChjb25zdCBJbnN0JgogICAgIHJldHVybiBpc1g4NkRpdkhlbHBlclZhbGlkKGluc3QpOwogfQog
CitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7
CisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICBzd2l0Y2ggKGluc3QuYXJncy5zaXpl
KCkpIHsKKyAgICBjYXNlIDM6CisgICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMF0gPT0gVG1wKFg4
NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICBjYXNlIDU6CisgICAgICAgIHJldHVybiBpbnN0LmFyZ3Nb
MV0gPT0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorI2VuZGlmIC8vIENQVShYODYpIHx8IENQVShYODZfNjQpCit9CisK
K2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoY29uc3QgSW5zdCYgaW5z
dCkKK3sKKyAgICByZXR1cm4gaW5zdC5hcmdzWzFdID09IFRtcChYODZSZWdpc3RlcnM6OmVheCk7
Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTOFZhbGlkKGNvbnN0IEluc3QmIGlu
c3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lu
bGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTMTZWYWxpZChjb25zdCBJbnN0JiBpbnN0KQorewor
ICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9v
bCBpc0F0b21pY1N0cm9uZ0NBUzMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1
cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNBdG9t
aWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRv
bWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRvbWlj
U3Ryb25nQ0FTOFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJhbmNo
QXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRv
bWljU3Ryb25nQ0FTMTZWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0Jy
YW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5j
aEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4g
aXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNC
cmFuY2hBdG9taWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0
dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKIH0gfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHJldmlz
aW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9w
Y29kZXMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMTcsNiArMTE3LDcgQEAgQWRkMzIgVTpHOjMyLCBVWkQ6RzozMgog
ICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAg
ICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAgIHg4NjogVG1wLCBJbmRl
eAogCkBAIC0xMzUsOSArMTM2LDEyIEBAIHg4NjogQWRkMTYgVTpHOjE2LCBVRDpHOjE2CiA2NDog
QWRkNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgor
ICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAg
ICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRl
eAogCiA2NDogQWRkNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIEltbSwgVG1wLCBUbXAK
QEAgLTE2Niw5ICsxNzAsMTIgQEAgeDg2OiBBZGRGbG9hdCBVOkY6MzIsIFVEOkY6MzIKIFN1YjMy
IFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAg
eDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4
NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAK
IGFybTY0OiBTdWIzMiBVOkc6MzIsIFU6RzozMiwgRDpHOjMyCiAgICAgVG1wLCBUbXAsIFRtcApA
QCAtMTc2LDkgKzE4MywxMiBAQCBhcm02NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIsIEQ6RzozMgog
NjQ6IFN1YjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFk
ZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1w
CisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwg
SW5kZXgKIAogYXJtNjQ6IFN1YjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRt
cCwgVG1wCkBAIC0yMDQsOSArMjE0LDEyIEBAIHg4NjogU3ViRmxvYXQgVTpGOjMyLCBVRDpGOjMy
CiBOZWczMiBVWkQ6RzozMgogICAgIFRtcAogICAgIHg4NjogQWRkcgorICAgIHg4NjogSW5kZXgK
IAogNjQ6IE5lZzY0IFVEOkc6NjQKICAgICBUbXAKKyAgICB4ODY6IEFkZHIKKyAgICB4ODY6IElu
ZGV4CiAKIGFybTY0OiBOZWdhdGVEb3VibGUgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcApA
QCAtMzMwLDggKzM0MywxMSBAQCBBbmQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAK
ICAgICB4ODY6IEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5k
ZXgKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogSW1t
LCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAKIDY0OiBBbmQ2NCBVOkc6NjQsIFU6Rzo2NCwg
RDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMzM5LDcgKzM1NSwxMyBAQCBBbmQzMiBVOkc6
MzIsIFVaRDpHOjMyCiAKIHg4Nl82NDogQW5kNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBU
bXAKLSAgICB4ODY6IEltbSwgVG1wCisgICAgSW1tLCBUbXAKKyAgICBJbW0sIEFkZHIKKyAgICBJ
bW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorICAgIEFkZHIsIFRtcAor
ICAgIEluZGV4LCBUbXAKIAogQW5kRG91YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6NjQKICAgICBU
bXAsIFRtcCwgVG1wCkBAIC00NTksOCArNDgxLDExIEBAIE9yMzIgVTpHOjMyLCBVWkQ6RzozMgog
ICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAg
eDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAK
ICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogCiA2NDogT3I2NCBVOkc6
NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDY5LDYgKzQ5NCwxMiBA
QCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBPcjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRt
cCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJ
bW0sIEluZGV4CisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4
ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogCiBYb3IzMiBVOkc6MzIsIFU6Rzoz
MiwgWkQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ4MCw4ICs1MTEsMTEgQEAgWG9yMzIg
VTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4
NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAg
ICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRl
eAogCiA2NDogWG9yNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAK
QEAgLTQ5MCw2ICs1MjQsMTEgQEAgWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogNjQ6IFhvcjY0IFU6
Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6
IFRtcCwgSW5kZXgKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAg
IHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJbW0sIFRtcAog
CiBhcm02NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCkBAIC00OTgsMTMgKzUzNywxNSBAQCBhcm02
NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCiB4ODY6IE5vdDMyIFVaRDpHOjMyCiAgICAgVG1wCiAg
ICAgQWRkcgorICAgIEluZGV4CiAKIGFybTY0OiBOb3Q2NCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRt
cCwgVG1wCiAKLXg4NjogTm90NjQgVUQ6Rzo2NAoreDg2XzY0OiBOb3Q2NCBVRDpHOjY0CiAgICAg
VG1wCiAgICAgQWRkcgorICAgIEluZGV4CiAKIGFybTY0OiBBYnNEb3VibGUgVTpGOjY0LCBEOkY6
NjQKICAgICBUbXAsIFRtcApAQCAtNjY4LDI3ICs3MDksMzgzIEBAIExvYWQ4IFU6Rzo4LCBaRDpH
OjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOCBVOkc6OCwgWkQ6
RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogU3RvcmU4IFU6Rzo4LCBEOkc6
OAogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKICAgICB4ODY6IEltbSwgSW5kZXgKICAg
ICB4ODY6IEltbSwgQWRkcgogCitTdG9yZVJlbDggVTpHOjgsIEQ6Rzo4CisgICAgVG1wLCBJbmRl
eAorICAgIFRtcCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRy
CisKIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAog
ICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMy
CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBMb2FkMTYgVTpHOjE2LCBaRDpHOjMy
CiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTYgVTpHOjE2LCBaRDpH
OjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBMb2FkMTZTaWduZWRFeHRlbmRU
bzMyIFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9h
ZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAg
ICBJbmRleCwgVG1wCisKIFN0b3JlMTYgVTpHOjE2LCBEOkc6MTYKICAgICBUbXAsIEluZGV4CiAg
ICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKwor
U3RvcmVSZWwxNiBVOkc6MTYsIEQ6RzoxNgorICAgIFRtcCwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorCitMb2FkQWNxMzIgVTpH
OjMyLCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCitTdG9yZVJlbDMy
IFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4ODY6
IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorCis2NDogTG9hZEFjcTY0IFU6Rzo2NCwg
WkQ6Rzo2NAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworNjQ6IFN0b3JlUmVsNjQg
VTpHOjY0LCBaRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorICAgIHg4Njog
SW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisKKyMgVGhlIGZpcnN0IG9wZXJhbmQgaXMg
cmF4LgorIyBGSVhNRTogVGhpcyBmb3JtdWxhdGlvbiBtZWFucyB0aGF0IHRoZSBib29sZWFuIHJl
c3VsdCBjYW5ub3QgYmUgcHV0IGluIGVheCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJzCisjIG9mIHRo
aXMgd291bGQgYmUgT0sgd2l0aCB0aGF0LgoreDg2OiBBdG9taWNTdHJvbmdDQVM4IFU6RzozMiwg
VUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4LCBaRDpHOjgKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAs
IEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6
IEF0b21pY1N0cm9uZ0NBUzE2IFU6RzozMiwgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2LCBaRDpH
OjgKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQs
IFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzMyIFU6RzozMiwg
VUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyLCBaRDpHOjgKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBU
bXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4
ODZfNjQ6IEF0b21pY1N0cm9uZ0NBUzY0IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0
LCBaRDpHOjgKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1
c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzggVUQ6
Rzo4LCBVOkc6OCwgVUQ6Rzo4CisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzE2IFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNgor
ICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNT
dHJvbmdDQVMzMiBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIKKyAgICBUbXAqLCBUbXAsIEFkZHIK
KyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljU3Ryb25nQ0FTNjQgVUQ6Rzo2
NCwgVTpHOjY0LCBVRDpHOjY0CisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJ
bmRleAorCit4ODY6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzggVTpHOjMyLCBVRDpHOjgsIFU6Rzo4
LCBVRDpHOjggL2JyYW5jaAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0
YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVMx
NiBVOkc6MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiAvYnJhbmNoCisgICAgU3RhdHVzQ29u
ZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4
ODY6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyIFU6RzozMiwgVUQ6RzozMiwgVTpHOjMyLCBVRDpH
OjMyIC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXND
b25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4Nl82NDogQnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQg
VTpHOjMyLCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQgL2JyYW5jaAorICAgIFN0YXR1c0NvbmQs
IFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNBZGQ4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDE2IFU6Rzox
NiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQWRkMzIgVTpHOjMyLCBVRDpHOjMyCisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2XzY0OiBBdG9taWNBZGQ2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21p
Y1N1YjggVTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViMTYgVTpHOjE2LCBVRDpH
OjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWIzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFk
ZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZf
NjQ6IEF0b21pY1N1YjY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kOCBV
Okc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBbmQxNiBVOkc6MTYsIFVEOkc6MTYKKyAg
ICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODY6IEF0b21pY0FuZDMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAg
IEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRv
bWljQW5kNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAor
ICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNPcjggVTpHOjgsIFVE
Okc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4NjogQXRvbWljT3IxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFk
ZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IEF0b21pY09yMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRl
eAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNPcjY0IFU6
Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9yOCBVOkc6OCwgVUQ6Rzo4CisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2OiBBdG9taWNYb3IxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJ
bW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hv
cjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljWG9yNjQgVTpHOjY0LCBV
RDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNOZWc4IFVEOkc6OAorICAgIEFkZHIKKyAgICBJbmRl
eAorCit4ODY6IEF0b21pY05lZzE2IFVEOkc6MTYKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2
OiBBdG9taWNOZWczMiBVRDpHOjMyCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Nl82NDogQXRv
bWljTmVnNjQgVUQ6Rzo2NAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDgg
VUQ6Rzo4CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTm90MTYgVUQ6RzoxNgor
ICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDMyIFVEOkc6MzIKKyAgICBBZGRy
CisgICAgSW5kZXgKKworeDg2XzY0OiBBdG9taWNOb3Q2NCBVRDpHOjY0CisgICAgQWRkcgorICAg
IEluZGV4CisKK3g4NjogQXRvbWljWGNoZ0FkZDggVUQ6Rzo4LCBVRDpHOjgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZ0FkZDE2IFVEOkc6MTYsIFVEOkc6
MTYKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZ0FkZDMy
IFVEOkc6MzIsIFVEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82
NDogQXRvbWljWGNoZ0FkZDY0IFVEOkc6NjQsIFVEOkc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZzggVUQ6Rzo4LCBVRDpHOjgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZzE2IFVEOkc6MTYsIFVEOkc6MTYK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZzMyIFVEOkc6
MzIsIFVEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRv
bWljWGNoZzY0IFVEOkc6NjQsIFVEOkc6NjQKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK2FybTY0OiBMb2FkTGluazggVTpHOjgsIFpEOkc6OAorICAgIEFkZHIsIFRtcAorICAgIElu
ZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxOCBVOkc6OCwgWkQ6Rzo4CisgICAgQWRkciwg
VG1wCisgICAgSW5kZXgsIFRtcAorCisjIFN1cGVyIGNvbmZ1c2luZyBmYWN0OiB0aGlzIHJldHVy
bnMgMCB0byBtZWFuIHN1Y2Nlc3MsIDEgdG8gbWVhbiBmYWlsdXJlLgorYXJtNjQ6IFN0b3JlQ29u
ZDggVTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIElu
ZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDggVTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4Cisg
ICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5r
MTYgVTpHOjE2LCBaRDpHOjE2CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02
NDogTG9hZExpbmtBY3ExNiBVOkc6MTYsIFpEOkc6MTYKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRl
eCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQxNiBVOkc6MTYsIEQ6RzoxNiwgRVpEOkc6OAorICAg
IFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRS
ZWwxNiBVOkc6MTYsIEQ6RzoxNiwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1w
LCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGluazMyIFU6RzozMiwgWkQ6RzozMgorICAgIEFk
ZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMzIgVTpHOjMyLCBa
RDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25k
MzIgVTpHOjMyLCBEOkc6MzIsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwg
SW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMzIgVTpHOjMyLCBEOkc6MzIsIEVaRDpH
OjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogTG9h
ZExpbms2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisK
K2FybTY0OiBMb2FkTGlua0FjcTY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIEFkZHIsIFRtcAorICAg
IEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDY0IFU6Rzo2NCwgRDpHOjY0LCBFWkQ6Rzo4
CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3Jl
Q29uZFJlbDY0IFU6Rzo2NCwgRDpHOjY0LCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAg
ICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IERlcGVuZDMyIFU6RzozMiwgRDpHOjMyCisgICAg
VG1wLCBUbXAKKworYXJtNjQ6IERlcGVuZDY0IFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAK
IAogQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBSZWxDb25k
LCBUbXAsIFRtcCwgVG1wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9w
dGltaXplQmxvY2tPcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNzcsNiArMTc3LDEwIEBAIHZvaWQgb3B0aW1pemVCbG9ja09yZGVy
KENvZGUmIGNvZGUpCiAgICAgICAgIGNhc2UgQnJhbmNoU3ViNjQ6CiAgICAgICAgIGNhc2UgQnJh
bmNoTmVnMzI6CiAgICAgICAgIGNhc2UgQnJhbmNoTmVnNjQ6CisgICAgICAgIGNhc2UgQnJhbmNo
QXRvbWljU3Ryb25nQ0FTODoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMxNjoK
KyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMjoKKyAgICAgICAgY2FzZSBCcmFu
Y2hBdG9taWNTdHJvbmdDQVM2NDoKICAgICAgICAgICAgIGlmIChjb2RlLmZpbmROZXh0QmxvY2so
YmxvY2spID09IGJsb2NrLT5zdWNjZXNzb3JCbG9jaygwKSAmJiBicmFuY2guYXJnc1swXS5pc0lu
dmVydGlibGUoKSkgewogICAgICAgICAgICAgICAgIHN0ZDo6c3dhcChibG9jay0+c3VjY2Vzc29y
KDApLCBibG9jay0+c3VjY2Vzc29yKDEpKTsKICAgICAgICAgICAgICAgICBicmFuY2guYXJnc1sw
XSA9IGJyYW5jaC5hcmdzWzBdLmludmVydGVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCShyZXZpc2lvbiAyMTI5
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgdm9pZCBwYWRJbnRlcmZlcmVuY2Uo
Q29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBC
YW5rLCBXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJvbGUpIHsKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAgICAgaGFzRWFybHlEZWYg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgQXJnOjpMYXRlVXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYg
Y29kZSkKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVDb2xkVXNlOgogICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBcmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVm
OgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogY29kZS5yZWdzSW5Qcmlv
cml0eU9yZGVyKGJhbmspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXRC
ZWZvcmUuZ2V0KHJlZykgJiYgIXNldEFmdGVyLmdldChyZWcpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCSh3
b3JraW5nIGNvcHkpCkBAIC01MSwxNCArNTEsNDkgQEAgY2xhc3MgQXJnCiAgICAgICAgIEBiYW5r
ID0gYmFuawogICAgICAgICBAd2lkdGggPSB3aWR0aAogICAgIGVuZAotCi0gICAgZGVmIHdpZHRo
Q29kZQorICAgIAorICAgIGRlZiBzZWxmLndpZHRoQ29kZSh3aWR0aCkKICAgICAgICAgaWYgd2lk
dGggPT0gIlB0ciIKICAgICAgICAgICAgICJwb2ludGVyV2lkdGgoKSIKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgIldpZHRoI3t3aWR0aH0iCiAgICAgICAgIGVuZAogICAgIGVuZAorCisgICAg
ZGVmIHdpZHRoQ29kZQorICAgICAgICBBcmcud2lkdGhDb2RlKHdpZHRoKQorICAgIGVuZAorICAg
IAorICAgIGRlZiBzZWxmLnJvbGVDb2RlKHJvbGUpCisgICAgICAgIGNhc2Ugcm9sZQorICAgICAg
ICB3aGVuICJVIgorICAgICAgICAgICAgIlVzZSIKKyAgICAgICAgd2hlbiAiRCIKKyAgICAgICAg
ICAgICJEZWYiCisgICAgICAgIHdoZW4gIlpEIgorICAgICAgICAgICAgIlpEZWYiCisgICAgICAg
IHdoZW4gIlVEIgorICAgICAgICAgICAgIlVzZURlZiIKKyAgICAgICAgd2hlbiAiVVpEIgorICAg
ICAgICAgICAgIlVzZVpEZWYiCisgICAgICAgIHdoZW4gIlVBIgorICAgICAgICAgICAgIlVzZUFk
ZHIiCisgICAgICAgIHdoZW4gIlMiCisgICAgICAgICAgICAiU2NyYXRjaCIKKyAgICAgICAgd2hl
biAiRUQiCisgICAgICAgICAgICAiRWFybHlEZWYiCisgICAgICAgIHdoZW4gIkVaRCIKKyAgICAg
ICAgICAgICJFYXJseVpEZWYiCisgICAgICAgIHdoZW4gIkxVIgorICAgICAgICAgICAgIkxhdGVV
c2UiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVuZAorICAgIGVu
ZAorICAgIAorICAgIGRlZiByb2xlQ29kZQorICAgICAgICBBcmcucm9sZUNvZGUocm9sZSkKKyAg
ICBlbmQKIGVuZAogCiBjbGFzcyBPdmVybG9hZApAQCAtMTgyLDcgKzIxNyw3IEBAIGRlZiBsZXgo
c3RyLCBmaWxlTmFtZSkKIGVuZAogCiBkZWYgaXNSb2xlKHRva2VuKQotICAgIHRva2VuID1+IC9c
QSgoVSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEpfChTKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEo
KFUpfChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUyl8KEVEKXwoRVpEKXwoTFUpKVxaLwogZW5k
CiAKIGRlZiBpc0dGKHRva2VuKQpAQCAtMTkwLDcgKzIyNSw3IEBAIGRlZiBpc0dGKHRva2VuKQog
ZW5kCiAKIGRlZiBpc0tpbmQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChC
aWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8KEFkZHIpfChJbmRleCl8KFJlbENvbmQpfChSZXND
b25kKXwoRG91YmxlQ29uZCkpXFovCisgICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJ
bW0pfChCaXRJbW0pfChCaXRJbW02NCl8KEFkZHIpfChJbmRleCl8KFJlbENvbmQpfChSZXNDb25k
KXwoRG91YmxlQ29uZCl8KFN0YXR1c0NvbmQpKVxaLwogZW5kCiAKIGRlZiBpc0FyY2godG9rZW4p
CkBAIC0yNjQsNyArMjk5LDcgQEAgY2xhc3MgUGFyc2VyCiAKICAgICBkZWYgY29uc3VtZUtpbmQK
ICAgICAgICAgcmVzdWx0ID0gdG9rZW4uc3RyaW5nCi0gICAgICAgIHBhcnNlRXJyb3IoIkV4cGVj
dGVkIGtpbmQgKEltbSwgQmlnSW1tLCBCaXRJbW0sIEJpdEltbTY0LCBUbXAsIEFkZHIsIEluZGV4
LCBSZWxDb25kLCBSZXNDb25kLCBvciBEb3VibGVDb25kKSIpIHVubGVzcyBpc0tpbmQocmVzdWx0
KQorICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwgQml0SW1t
LCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgRG91YmxlQ29u
ZCwgb3IgU3RhdHVzQ29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKICAgICAgICAgYWR2YW5j
ZQogICAgICAgICByZXN1bHQKICAgICBlbmQKQEAgLTYzNCwyOCArNjY5LDcgQEAgd3JpdGVIKCJP
cGNvZGVVdGlscyIpIHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3ZlcmxvYWQuc2lnbmF0
dXJlLmVhY2hfd2l0aF9pbmRleCB7CiAgICAgICAgICAgICAgICAgfCBhcmcsIGluZGV4IHwKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByb2xlID0gbmlsCi0gICAgICAgICAgICAg
ICAgY2FzZSBhcmcucm9sZQotICAgICAgICAgICAgICAgIHdoZW4gIlUiCi0gICAgICAgICAgICAg
ICAgICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAgICAgICAgIHdoZW4gIkQiCi0gICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSAiRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlpEIgotICAgICAg
ICAgICAgICAgICAgICByb2xlID0gIlpEZWYiCi0gICAgICAgICAgICAgICAgd2hlbiAiVUQiCi0g
ICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgotICAgICAgICAgICAgICAgIHdoZW4g
IlVaRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VaRGVmIgotICAgICAgICAgICAg
ICAgIHdoZW4gIlVBIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZUFkZHIiCi0gICAg
ICAgICAgICAgICAgd2hlbiAiUyIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3JhdGNo
IgotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAg
ICAgICAgICAgICBlbmQKLQotICAgICAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3Rvcihhcmdz
WyN7aW5kZXh9XSwgQXJnOjoje3JvbGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRoQ29kZX0p
OyIKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0sIEFy
Zzo6I3thcmcucm9sZUNvZGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRoQ29kZX0pOyIKICAg
ICAgICAgICAgIH0KICAgICAgICAgZW5kCiAgICAgfQpAQCAtODE5LDYgKzgzMyw3IEBAIHdyaXRl
SCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgIHdoZW4gIlJlbENvbmQiCiAg
ICAgICAgICAgICAgICAgd2hlbiAiUmVzQ29uZCIKICAgICAgICAgICAgICAgICB3aGVuICJEb3Vi
bGVDb25kIgorICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByYWlzZSAiVW5leHBlY3RlZCBraW5kOiAje2tp
bmQubmFtZX0iCiAgICAgICAgICAgICAgICAgZW5kCkBAIC0xMTA1LDYgKzExMjAsOCBAQCB3cml0
ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAi
YXJnc1sje2luZGV4fV0uYXNSZXN1bHRDb25kaXRpb24oKSIKICAgICAgICAgICAgICAgICB3aGVu
ICJEb3VibGVDb25kIgogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5k
ZXh9XS5hc0RvdWJsZUNvbmRpdGlvbigpIgorICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0Nv
bmQiCisgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzU3Rh
dHVzQ29uZGl0aW9uKCkiCiAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICB9CiAKQEAg
LTExNDgsMjcgKzExNjUsNyBAQCBGaWxlLm9wZW4oIkpTQWlyX29wY29kZS5qcyIsICJ3Iikgewog
ICAgICAgICAgICAgICAgIG91dHAucHV0cyAiY2FzZSAje292ZXJsb2FkLnNpZ25hdHVyZS5sZW5n
dGh9OiIgaWYgbmVlZE92ZXJsb2FkU3dpdGNoCiAgICAgICAgICAgICAgICAgb3ZlcmxvYWQuc2ln
bmF0dXJlLmVhY2hfd2l0aF9pbmRleCB7CiAgICAgICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRl
eCB8Ci0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSBuaWwKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBhcmcucm9sZQotICAgICAgICAgICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAg
ICAgICAgICAgICAgcm9sZSA9ICJVc2UiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIkQiCi0g
ICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIkRlZiIKLSAgICAgICAgICAgICAgICAgICAg
d2hlbiAiWkQiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlpEZWYiCi0gICAgICAg
ICAgICAgICAgICAgIHdoZW4gIlVEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJV
c2VEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlVaRCIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVUEiCi0g
ICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZUFkZHIiCi0gICAgICAgICAgICAgICAg
ICAgIHdoZW4gIlMiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlNjcmF0Y2giCi0g
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0g
ICAgICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgb3V0cC5wdXRzICJpbnN0LnZpc2l0QXJnKCN7aW5kZXh9LCBmdW5jLCBBcmcuI3ty
b2xlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aH0pOyIKKyAgICAgICAgICAgICAgICAgICAg
b3V0cC5wdXRzICJpbnN0LnZpc2l0QXJnKCN7aW5kZXh9LCBmdW5jLCBBcmcuI3thcmcucm9sZUNv
ZGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRofSk7IgogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBvdXRwLnB1dHMgImJyZWFrOyIKICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEzLDkgKzQxMyw2IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAg
IHYoYm9vbCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikg
XAogICAgIHYoYm9vbCwgZXhwb3NlSW50ZXJuYWxNb2R1bGVMb2FkZXIsIGZhbHNlLCBOb3JtYWws
ICJleHBvc2UgdGhlIGludGVybmFsIG1vZHVsZSBsb2FkZXIgb2JqZWN0IHRvIHRoZSBnbG9iYWwg
c3BhY2UgZm9yIGRlYnVnZ2luZyIpIFwKICAgICBcCi0gICAgdihib29sLCBkdW1wQWlyQXNKU0Jl
Zm9yZUFsbG9jYXRlU3RhY2ssIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICB2KGJvb2ws
IGR1bXBBaXJBZnRlckFsbG9jYXRlU3RhY2ssIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAg
ICBcCiAgICAgdihib29sLCB1c2VTdXBlclNhbXBsZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICBcCiAgICAgdihib29sLCByZXBvcnRMTEludFN0YXRzLCBmYWxzZSwgQ29uZmlndXJh
YmxlLCAiUmVwb3J0cyBMTEludCBzdGF0aXN0aWNzIikgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303109</attachid>
            <date>2017-03-01 13:37:10 -0800</date>
            <delta_ts>2017-03-01 17:40:44 -0800</delta_ts>
            <desc>added acq/rel tests</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>289743</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMyBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAv
KiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87
IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQz
NDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNj
b3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5ODMyREFDMDA3RDRC
MTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDMsOCArMjI1MCw2IEBACiAJCURD
MjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIw
OTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVh
cENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRC
OEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1
QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8q
IFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREM2MDVCNUYxQ0Uy
NkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxl
clVJRC5jcHAgKi87IH07CkBAIC0yNzY0LDYgKzI3NjksMTMgQEAKIAkJMEYyQzYzQUMxRTYwQUUz
QzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4Mzkg
LyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7
IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2
M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9t
aWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQz
RTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0lu
c2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0
NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMv
YWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBh
dGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MxMUU2
NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRpdmVUcmFpdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQzNDAwN0Q0QjE5IC8q
IERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERD
MTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDc3OCw4ICs0NzkwLDYgQEAKIAkJREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8q
IElDU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUNTdGF0cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyog
SGVhcENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcENlbGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8q
IEhlYXBDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBD
ZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckR1bXBBc0pTLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJEdW1wQXNKUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJEdW1wQXNK
Uy5oOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuY3BwOyBwYXRo
ID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuaDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNUIx
Q0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyVUlELmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVy
VUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyOTIsNiArNTMwMiw4IEBA
CiAJCQkJMEZFQzg0QjMxQkRBQ0Q4ODAwODBGRjc0IC8qIGFpciAqLywKIAkJCQkwRkVDODRCNDFC
REFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRC
NTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmggKi8sCisJCQkJMEYyQzYz
QjMxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwICovLAorCQkJCTBGMkM2M0I0
MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8sCiAJCQkJMEYyQzYzQUIxRTYw
QUUzQzAwQzEzODM5IC8qIEIzQmFuay5jcHAgKi8sCiAJCQkJMEYyQzYzQUMxRTYwQUUzQzAwQzEz
ODM5IC8qIEIzQmFuay5oICovLAogCQkJCTBGRUM4NEI2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jh
c2ljQmxvY2suY3BwICovLApAQCAtNTM1NCw2ICs1MzY2LDcgQEAKIAkJCQkwRkVDODRDRDFCREFD
REFDMDA4MEZGNzQgLyogQjNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODRDRTFCREFD
REFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg0Q0YxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzR2VuZXJhdGUuaCAqLywKKwkJCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4Mzkg
LyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkVDODREMDFCREFDREFD
MDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg1QkYx
QkUxNjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmNwcCAqLywKIAkJCQkwRkVDODVDMDFCRTE2
N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLywKQEAgLTUzNzgsNiArNTM5MSw3IEBACiAJ
CQkJMEZFQzg0RDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuaCAqLywKIAkJCQkw
RjMzOEUwMzFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmNwcCAqLywKIAkJCQkw
RjMzOEUwNDFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmggKi8sCisJCQkJMEYy
QzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi8sCiAJCQkJMEYzMzhF
MDUxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0LmggKi8sCiAJCQkJMEYzMzhF
MDYxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5jcHAgKi8sCiAJCQkJMEYz
MzhFMDcxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5oICovLApAQCAtNTQ2
OSw2ICs1NDgzLDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5s
aW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2Nr
LmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5o
ICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNl
dC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0
aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29y
a2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdD
b252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC01NDgwLDggKzU0OTYsNiBAQAogCQkJCTBGMTBGMUEy
MUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAqLywKIAkJCQk3OUFCQjE3QjFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQk3OUFCQjE3QzFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmggKi8sCi0JCQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLywKLQkJCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4
QUYgLyogQWlyRHVtcEFzSlMuaCAqLywKIAkJCQkwRjQ1NzAzNjFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICovLAogCQkJCTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYy
OSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovLAogCQkJCTBGNjE4MzIzMUM0NUJGMDcwMDcy
NDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5jcHAgKi8sCkBAIC03MzI2LDYgKzczNDAsNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2
OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRjFFNjYwRUE1MDBDMTM4Mzkg
LyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAw
Rjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENE
NzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJ
ODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCkBAIC03MzU0
LDggKzczNjksOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3Nl
bWJsZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIx
IC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4
NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKQEAg
LTc5NDMsNyArNzk1OCw2IEBACiAJCQkJMEZFQzg1NzQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckND
YWxsU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzYxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTBGMUEzMUM0MjBCRjAwMDFDMDdE
MiAvKiBBaXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAotCQkJCURDNDU0QjhEMUQwMEU4MjQwMDRD
MThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NTcwMzkxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjYxODMyRDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNERFMUNGMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc5NTYsNiArNzk3MCw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckluc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3
RDcxRDlEQzQ0MjAwMUI5ODI1IC8qIEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2
M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjY4NEQ0MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUzNEMxQTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQ
cmVzc3VyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8q
IEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDQ3LDYgKzgwNjIs
NyBAQAogCQkJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQ
dHJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8q
IEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNG
NzAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjMzOEUwRTFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzM0ZDRkMxQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY2QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRl
VGFpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtODIzNyw2ICs4MjUzLDcgQEAKIAkJCQlBNzdBNDIz
RTE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNDMjFFNjY0QTVD
MDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc3
MTQzRkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQzRTQwMjFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4RDNEMDFCNTVBNkUwMDAy
QzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTgzNjYsNiArODM4Myw3IEBACiAJCQkJMEYzOTJDOEExQjQ2MTg4NDAwODQ0NzI4IC8qIERG
R09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdG
NTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYwMEM3
MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIxOUQwQkE3RDAw
QjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKQEAgLTk3OTIsNiArOTgx
MCw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTgwMiw3ICs5ODIxLDYgQEAKIAkJCQkwRkVD
ODU3MzFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTc1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0Ux
QzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMDI0OCw2ICsxMDI2Niw3IEBACiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8q
IEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVC
OEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQw
RTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMjY2LDYgKzEwMjg1LDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBB
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdB
NDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiIC8vIEhhdmUgdG8g
YnJlYWsgd2l0aCBzdHlsZSBiZWNhdXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpcyBhIHNo
YWR5IGhlYWRlci4KKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisKKyNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdURiB7CisK
K3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyQmFzZTo6U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBzd2l0Y2ggKGNvbmRp
dGlvbikgeworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN1Y2Nlc3M6Cisg
ICAgICAgIG91dC5wcmludCgiU3VjY2VzcyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6RmFpbHVyZToKKyAgICAgICAgb3V0LnByaW50KCJG
YWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0
Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUmFuZG9tLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NTAsOCArNTEsMjggQEAgbmFtZXNwYWNlIERGRyB7CiBzdHJ1Y3QgT1NSRXhpdDsKIH0KIAorY2xh
c3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgeworcHVibGljOgorICAgIGVudW0gU3RhdHVz
Q29uZGl0aW9uIHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgRmFpbHVyZQorICAgIH07Cisg
ICAgCisgICAgc3RhdGljIFN0YXR1c0NvbmRpdGlvbiBpbnZlcnQoU3RhdHVzQ29uZGl0aW9uIGNv
bmRpdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7CisgICAgICAgIGNh
c2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBGYWlsdXJlOworICAgICAgICBjYXNlIEZh
aWx1cmU6CisgICAgICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAgICAgICAgfQorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAg
ICB9Cit9OworCiB0ZW1wbGF0ZSA8Y2xhc3MgQXNzZW1ibGVyVHlwZSwgY2xhc3MgTWFjcm9Bc3Nl
bWJsZXJUeXBlPgotY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciB7CitjbGFzcyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlIHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwg
TWFjcm9Bc3NlbWJsZXJUeXBlPiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZTsKICAgICB0eXBl
ZGVmIEFzc2VtYmxlclR5cGUgQXNzZW1ibGVyVHlwZV9UOwpAQCAtMTEwOCwzICsxMTI5LDE2IEBA
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwgTWEKICNlbmRpZiAvLyBFTkFC
TEUoQVNTRU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKKworI2lmIEVOQUJMRShBU1NFTUJM
RVIpCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJh
c2U6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8g
RU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMi0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTM2LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IHR3b1RvVGhlMzI7IC8vIFRoaXMgaXMgc3VwZXIgdXNlZnVsIGZvciBzb21lIGRvdWJsZSBjb2Rl
LgogCiAgICAgLy8gVXRpbGl0aWVzIHVzZWQgYnkgdGhlIERGRyBKSVQuCisgICAgdXNpbmcgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OmludmVydDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
ckJhc2U6OmludmVydDsKICAgICAKICAgICBzdGF0aWMgRG91YmxlQ29uZGl0aW9uIGludmVydChE
b3VibGVDb25kaXRpb24gY29uZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBk
ZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFk
ZDMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CkBAIC0yNTEsMTYgKzI1
Niw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZDE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBhbmQxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmFuZGJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4
LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZz
ZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKEJhc2VJbmRleCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9
CisKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRs
X2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdf
aW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19pbShzdGF0
aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5k
OChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
bmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC00NTYsNiArNTE2LDMxIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNE
ZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgbmVnMzIoQmFzZUluZGV4IHNyY0Rlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdsX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3Qu
YmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBu
ZWcxNihBZGRyZXNzIHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20o
c3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihC
YXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3dfbShzcmNE
ZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsK
KyAgICB9CisKKyAgICB2b2lkIG5lZzgoQWRkcmVzcyBzcmNEZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubmVnYl9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgbmVnOChCYXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5lZ2JfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4
LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ycihzcmMs
IGRlc3QpOwpAQCAtNDcxLDE2ICs1NTYsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5vcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lk
IG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIub3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwg
ZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcndfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CisgICAgdm9pZCBvcjgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgb3I4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihBZGRyZXNz
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoQmFz
ZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7
CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbShpbW0ubV92YWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3
X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRp
Y19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIg
aW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9p
bShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCBvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC02NTQsMTYgKzc5NCw3MSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19p
bShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19j
YXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92YWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorCisgICAgdm9pZCBzdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50
MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9
CiAKKyAgICB2b2lkIHN1YjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5p
bmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3Jt
KHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWIxNihS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQg
c3ViOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuc3ViYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAg
IHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3Qu
aW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNjc3LDYgKzg3Miw1MCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3Js
X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZf
dD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRp
Y19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3J3X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBk
ZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0
aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5t
X3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92
YWx1ZSA9IHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1t
Lm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9y
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYg
KGltbS5tX3ZhbHVlID09IC0xKQpAQCAtNjkwLDExICs5MjksNDEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAg
fQogCisgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdp
c3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9y
d19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9y
MTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRl
c3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CiAgICAgdm9pZCB4b3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAg
ICAgfQogICAgIAorICAgIHZvaWQgeG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHhv
cjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC03NDEsNiArMTAxMCwzMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdDMyKEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbm90MTYoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgbm90MTYoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCBub3Q4KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5vdDgoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5u
b3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBzcXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcXJ0c2RfcnIoc3JjLCBkc3QpOwpA
QCAtMTA3MSw0MiArMTM2NSwyMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAgICAg
ICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNhbiBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVn
aXN0ZXJzOwotICAgICAgICAvLyBlc3AuLmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0
ZXJzIQotICAgICAgICBpZiAoc3JjID49IDQpIHsKLSAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1w
b3JhcnkgcmVnaXN0ZXIuCi0gICAgICAgICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRS
ZWdpc3RlcihhZGRyZXNzKTsKLQotICAgICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5
IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhlIHN0b3JlLgotICAgICAgICAgICAgc3dhcChzcmMsIHRl
bXApOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKLSAgICAgICAg
ICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2Vu
ZGlmCiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKICAgICB2
b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0jaWYg
Q1BVKFg4NikKLSAgICAgICAgLy8gT24gMzItYml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9t
IHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKLSAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0
byB0aGUgJ2gnIHJlZ2lzdGVycyEKLSAgICAgICAgaWYgKHNyYyA+PSA0KSB7Ci0gICAgICAgICAg
ICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLgotICAgICAgICAgICAgUmVnaXN0ZXJJRCB0
ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRkcmVzcyk7Ci0KLSAgICAgICAgICAgIC8vIFN3YXAg
dG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0byBwZXJmb3JtIHRoZSBzdG9yZS4KLSAgICAgICAg
ICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0odGVt
cCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7Ci0gICAgICAgICAgICBzd2FwKHNyYywg
dGVtcCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBt
X2Fzc2VtYmxlci5tb3Z3X3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAg
ICAgfQogCisgICAgdm9pZCBzdG9yZTE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3RvcmUxNihUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5t
b3Z3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7CisgICAgfQogCiAgICAgLy8gRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9u
OgogICAgIC8vCkBAIC0yNzQzLDc0ICszMDE4LDgzOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKDAsIDAsIFg4NlJlZ2lz
dGVyczo6ZXNwKTsKICAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsm
XSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsgfSk7CisgICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhh
dCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBv
biB4ODYuCi0gICAgdm9pZCBzdG9yZUZlbmNlKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAg
ICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAg
IH0KIAotICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9u
IG9mIG5vcm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBsb2Fk
RmVuY2UoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAgICBhdG9taWNTdHJv
bmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIu
Y21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFi
ZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNl
V2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlv
bi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4
cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsgfSk7CiAgICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSgpCisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAg
ICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHBhdGNoYWJsZUp1bXBT
aXplKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5k
ZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcykKICAgICB7Ci0gICAgICAgIGlmIChzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVj
a1N0YXRlOjpOb3RDaGVja2VkKQotICAgICAgICAgICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7Ci0g
ICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisgICAgdm9pZCBh
dG9taWNTdHJvbmdDQVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gQVZYIHN0aWxs
IGNhdXNlcyBteXN0ZXJpb3VzIHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4g
YmUgbWFzc2l2ZS4KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdG9taWNTdHJvbmdD
QVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdz
KCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAg
IGludCBmbGFncyA9IDA7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgaW50IGNwdUluZm9b
NF07Ci0gICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHgxKTsKLSAgICAgICAgZmxhZ3MgPSBjcHVJ
bmZvWzJdOwotI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQotI2lmIENQVShYODZfNjQpCi0g
ICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAg
ICAiY3B1aWQ7IgotICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDog
Ij1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlYngi
LCAiJWVjeCIsICIlZWR4IgotICAgICAgICAgICAgKTsKLSNlbHNlCi0gICAgICAgIGFzbSAoCi0g
ICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAicHVzaGwgJSVlYng7
IgotICAgICAgICAgICAgImNwdWlkOyIKLSAgICAgICAgICAgICJwb3BsICUlZWJ4OyIKLSAgICAg
ICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAg
ICAgICAgICAgOgotICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAg
ICAgICApOwotI2VuZGlmCisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2
KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5k
UmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwor
ICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0p
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBi
cmFuY2hBdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRv
bWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWlj
V2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21p
Y1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0
b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAg
IHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwg
ZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKwor
ICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihj
b25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQs
IGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBl
Y3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFkZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNB
ZGQ4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYWRkMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YWRkMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1Yjgo
aW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWI4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1
YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWIzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWIzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgYW5kOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0Fu
ZDgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihpbW0s
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
bmQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNPcjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3Iz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I4KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Iz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hvcjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJlZywgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05l
ZzgoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBuZWc4KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzgo
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG5lZzgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMTYo
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBuZWcxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbmVnMTYoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMzIo
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBuZWczMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbmVnMzIoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG5vdDgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbm90OChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QxNihBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG5vdDE2KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBub3QxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QzMihBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG5vdDMyKGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBub3QzMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkOChS
ZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIueGFkZHdfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBtX2Fzc2VtYmxlci54YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhh
ZGRsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhjaGd3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueGNoZ3dfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBsb2FkOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3E4KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IGxvYWQ4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRF
eHRlbmRUbzMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBs
b2FkOFNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbG9hZDhTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBsb2FkMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxMTYoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZDE2KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2lnbmVk
RXh0ZW5kVG8zMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbG9hZDMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgbG9hZEFjcTMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBzdG9yZVJlbDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAg
ICAgICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KGltbSwgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlMTYoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBz
dG9yZVJlbDMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBz
dG9yZTMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYywg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKGltbSwgZGVzdCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9y
bWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBzdG9yZUZlbmNl
KCkKKyAgICB7CisgICAgfQorCisgICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBw
cmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4K
KyAgICB2b2lkIGxvYWRGZW5jZSgpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9j
YXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVw
bGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGlu
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJk
aWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgfQorCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkKKyAgICB7CisgICAgICAgIGlmIChzX3Nz
ZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQorICAgICAgICAg
ICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7CisgICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3Rh
dGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydHNBVlgoKQorICAgIHsKKyAgICAgICAgLy8gQVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3Vz
IHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4gYmUgbWFzc2l2ZS4KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hG
bGFncygpCisgICAgeworICAgICAgICBpbnQgZmxhZ3MgPSAwOworI2lmIENPTVBJTEVSKE1TVkMp
CisgICAgICAgIGludCBjcHVJbmZvWzRdOworICAgICAgICBfX2NwdWlkKGNwdUluZm8sIDB4MSk7
CisgICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsKKyNlbGlmIENPTVBJTEVSKEdDQ19PUl9DTEFO
RykKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4
MSwgJSVlYXg7IgorICAgICAgICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICJtb3ZsICUlZWN4
LCAlMDsiCisgICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQorICAgICAgICAgICAgOgorICAgICAg
ICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICk7Cisj
ZWxzZQorICAgICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgorICAg
ICAgICAgICAgInB1c2hsICUlZWJ4OyIKKyAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAg
ICAicG9wbCAlJWVieDsiCisgICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAgICAgICAg
ICAgOiAiPWciIChmbGFncykKKyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVlYXgiLCAi
JWVjeCIsICIlZWR4IgorICAgICAgICAgICAgKTsKKyNlbmRpZgogI2VuZGlmIC8vIENPTVBJTEVS
KEdDQ19PUl9DTEFORykKICAgICAgICAgc19zc2U0XzFDaGVja1N0YXRlID0gKGZsYWdzICYgKDEg
PDwgMTkpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsK
ICAgICAgICAgc19hdnhDaGVja1N0YXRlID0gKGZsYWdzICYgKDEgPDwgMjgpKSA/IENQVUlEQ2hl
Y2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKQEAgLTI4MzEsNiArMzg3MCwx
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6
OkNvbmRpdGlvbj4oY29uZCk7CiAgICAgfQogCisgICAgWDg2QXNzZW1ibGVyOjpDb25kaXRpb24g
eDg2Q29uZGl0aW9uKFN0YXR1c0NvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChjb25kKSB7CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbkU7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAg
IHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbk5FOworICAgICAgICB9CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6
OkNvbmRpdGlvbkU7CisgICAgfQorCiAgICAgdm9pZCBzZXQzMihYODZBc3NlbWJsZXI6OkNvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogI2lmIENQVShYODYpCkBAIC0yOTI1
LDYgKzM5NzYsMzUgQEAgcHJvdGVjdGVkOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihzaXpl
T2ZSZWdpc3RlciksIGRzdCk7CiAgICAgICAgIHNyY0lzTm9uWmVyby5saW5rKHRoaXMpOwogICAg
IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0
LCBSZWdpc3RlcklEIHJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3
YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRS
ZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNv
bmQpLCByZXN1bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3Qg
RnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJl
Z2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5j
KCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIEp1bXAgYnJhbmNoQXRv
bWljU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFu
ZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVn
aXN0ZXJzOjplYXgpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29u
ZGl0aW9uKGNvbmQpKSk7CisgICAgfQogCiBwcml2YXRlOgogICAgIC8vIE9ubHkgTWFjcm9Bc3Nl
bWJsZXJYODYgc2hvdWxkIGJlIHVzaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kOyBTU0UyIGlzIGFs
d2F5cyBhdmFpbGFibGUgb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2NCwxMSArMjY0LDIxIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7
CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
YWRkcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQg
YWRkNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYWRkcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYWRkNjQoQWJzb2x1dGVBZGRyZXNzIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNy
Yy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKQEAgLTMwNiw2ICszMTYsMTQgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1
ZSA9PSAxKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuaW5jcV9tKGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9
CisKICAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRy
ZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBz
Y3JhdGNoUmVnaXN0ZXIoKSk7CkBAIC0zNDIsMTEgKzM2MCw0MSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLmFuZHFfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQ2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hbmRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChBZGRyZXNzIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChCYXNlSW5kZXgg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAg
fQorCiAgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2lt
KGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3Rl
cklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBpbnRwdHJfdCBpbnRWYWx1ZSA9IGltbS5hc0lu
dHB0cigpOwpAQCAtNTUyLDExICs2MDAsNTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5uZWdxX3IoZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBuZWc2NChBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBuZWc2NChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5lZ3FfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ycihzcmMsIGRlc3Qp
OwogICAgIH0KIAorICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
b3I2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2
b2lkIG9yNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5z
Y2FsZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9pbShpbW0ubV92YWx1
ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTY0IGltbSwgUmVn
aXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlIDw9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpCkBAIC02MTksMTYgKzcwNywzMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJx
X2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjY0KEFkZHJlc3Mgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNy
Yy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KEJhc2VJ
bmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1
YnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsK
KyAgICB9CisKICAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCB4b3I2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIueG9ycV9ycihzcmMsIGRlc3QpOwpAQCAtNjUxLDYgKzc1NCwzMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IHhvcjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci54b3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHhvcjY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhvcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1t
Lm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9y
NjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci54b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0
LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhv
cnFfaXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwpAQCAtNjY2LDYgKzc5NCwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vdHFfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdDY0KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubm90cV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgbG9hZDY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwpAQCAtNzI1LDYgKzg1OCwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQo
VHJ1c3RlZEltbTY0IGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzMyXzY0KGltbS5tX3ZhbHVlKSkgewpAQCAtMTI5NCw3ICsx
NDMyLDI1NSBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3Zl
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRy
ZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwgbWFzazgpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBh
dG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsm
XSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9
CiAKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FT
KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRk
cmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1Zh
bHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4g
YnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2
NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHN1YjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
U3ViNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgb3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y09yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05lZzY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTmVnNjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05vdDY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTm90NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54
YWRkcV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzY0
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzY0
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRBY3E2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCB0
cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5MCwxNiArMTkwLDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgIE9QX0FERF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDAxLAog
ICAgICAgICBPUF9BRERfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgwMywKICAgICAgICAg
T1BfQUREX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MDUsCisgICAgICAgIE9QX09SX0V2
R2IgICAgICAgICAgICAgICAgICAgICAgPSAweDA4LAogICAgICAgICBPUF9PUl9Fdkd2ICAgICAg
ICAgICAgICAgICAgICAgID0gMHgwOSwKICAgICAgICAgT1BfT1JfR3ZFdiAgICAgICAgICAgICAg
ICAgICAgICA9IDB4MEIsCiAgICAgICAgIE9QX09SX0VBWEl2ICAgICAgICAgICAgICAgICAgICAg
PSAweDBELAogICAgICAgICBPUF8yQllURV9FU0NBUEUgICAgICAgICAgICAgICAgID0gMHgwRiwK
KyAgICAgICAgT1BfQU5EX0V2R2IgICAgICAgICAgICAgICAgICAgICA9IDB4MjAsCiAgICAgICAg
IE9QX0FORF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDIxLAogICAgICAgICBPUF9BTkRf
R3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgyMywKKyAgICAgICAgT1BfU1VCX0V2R2IgICAg
ICAgICAgICAgICAgICAgICA9IDB4MjgsCiAgICAgICAgIE9QX1NVQl9Fdkd2ICAgICAgICAgICAg
ICAgICAgICAgPSAweDI5LAogICAgICAgICBPUF9TVUJfR3ZFdiAgICAgICAgICAgICAgICAgICAg
ID0gMHgyQiwKICAgICAgICAgT1BfU1VCX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MkQs
CiAgICAgICAgIFBSRV9QUkVESUNUX0JSQU5DSF9OT1RfVEFLRU4gICAgPSAweDJFLAorICAgICAg
ICBPUF9YT1JfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgzMCwKICAgICAgICAgT1BfWE9S
X0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MzEsCiAgICAgICAgIE9QX1hPUl9HdkV2ICAg
ICAgICAgICAgICAgICAgICAgPSAweDMzLAogICAgICAgICBPUF9YT1JfRUFYSXYgICAgICAgICAg
ICAgICAgICAgID0gMHgzNSwKQEAgLTIyMyw2ICsyMjcsNyBAQCBwcml2YXRlOgogICAgICAgICBP
UF9HUk9VUDFfRXZJYiAgICAgICAgICAgICAgICAgID0gMHg4MywKICAgICAgICAgT1BfVEVTVF9F
YkdiICAgICAgICAgICAgICAgICAgICA9IDB4ODQsCiAgICAgICAgIE9QX1RFU1RfRXZHdiAgICAg
ICAgICAgICAgICAgICAgPSAweDg1LAorICAgICAgICBPUF9YQ0hHX0V2R2IgICAgICAgICAgICAg
ICAgICAgID0gMHg4NiwKICAgICAgICAgT1BfWENIR19Fdkd2ICAgICAgICAgICAgICAgICAgICA9
IDB4ODcsCiAgICAgICAgIE9QX01PVl9FYkdiICAgICAgICAgICAgICAgICAgICAgPSAweDg4LAog
ICAgICAgICBPUF9NT1ZfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHg4OSwKQEAgLTI1Miw2
ICsyNTcsNyBAQCBwcml2YXRlOgogICAgICAgICBQUkVfU1NFX0YyICAgICAgICAgICAgICAgICAg
ICAgID0gMHhGMiwKICAgICAgICAgUFJFX1NTRV9GMyAgICAgICAgICAgICAgICAgICAgICA9IDB4
RjMsCiAgICAgICAgIE9QX0hMVCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweEY0LAorICAg
ICAgICBPUF9HUk9VUDNfRWIgICAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAgT1Bf
R1JPVVAzX0ViSWIgICAgICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9QX0dST1VQM19F
diAgICAgICAgICAgICAgICAgICAgPSAweEY3LAogICAgICAgICBPUF9HUk9VUDNfRXZJeiAgICAg
ICAgICAgICAgICAgID0gMHhGNywgLy8gT1BfR1JPVVAzX0V2IGhhcyBhbiBpbW1lZGlhdGUsIHdo
ZW4gaW5zdHJ1Y3Rpb24gaXMgYSB0ZXN0LiAKQEAgLTI5MCw2ICsyOTYsOCBAQCBwcml2YXRlOgog
ICAgICAgICBPUF9TRVRDQyAgICAgICAgICAgID0gMHg5MCwKICAgICAgICAgT1AyXzNCWVRFX0VT
Q0FQRV9BRSA9IDB4QUUsCiAgICAgICAgIE9QMl9JTVVMX0d2RXYgICAgICAgPSAweEFGLAorICAg
ICAgICBPUDJfQ01QWENIR2IgICAgICAgID0gMHhCMCwKKyAgICAgICAgT1AyX0NNUFhDSEcgICAg
ICAgICA9IDB4QjEsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkViICAgICAgPSAweEI2LAogICAgICAg
ICBPUDJfQlNGICAgICAgICAgICAgID0gMHhCQywKICAgICAgICAgT1AyX1RaQ05UICAgICAgICAg
ICA9IDB4QkMsCkBAIC0yOTgsNiArMzA2LDggQEAgcHJpdmF0ZToKICAgICAgICAgT1AyX01PVlNY
X0d2RWIgICAgICA9IDB4QkUsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkV3ICAgICAgPSAweEI3LAog
ICAgICAgICBPUDJfTU9WU1hfR3ZFdyAgICAgID0gMHhCRiwKKyAgICAgICAgT1AyX1hBRERiICAg
ICAgICAgICA9IDB4QzAsCisgICAgICAgIE9QMl9YQUREICAgICAgICAgICAgPSAweEMxLAogICAg
ICAgICBPUDJfUEVYVFJXX0dkVWRJYiAgID0gMHhDNSwKICAgICAgICAgT1AyX1BTTExRX1VkcUli
ICAgICA9IDB4NzMsCiAgICAgICAgIE9QMl9QU1JMUV9VZHFJYiAgICAgPSAweDczLApAQCAtNDQw
LDYgKzQ1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9B
RERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGFkZGxf
bXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9Cisg
ICAgCiAjaWYgIUNQVShYODZfNjQpCiAgICAgdm9pZCBhZGRsX21yKGNvbnN0IHZvaWQqIGFkZHIs
IFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTU2MiwxMSArNTc3LDIxIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgb2Zm
c2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9pcihpbnQgaW1tLCBSZWdpc3Rl
cklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CkBAIC01OTEsNiArNjE2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGFkZHFfaW0oaW50
IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQ
MV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQURELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2b2lkIGFkZGxfaW0oaW50
IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC02MTQsMTEgKzY1MCw0MyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNl
LCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgYW5kbF9tcihpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAg
ICAgfQogCisgICAgdm9pZCBhbmRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFuZGxfcm0oc3JjLCBvZmZzZXQsIGJh
c2UpOworICAgIH0KKworICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFu
ZGxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtNjQxLDYgKzcwOSw1MyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIGFuZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQp
OworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBH
Uk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kd19pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpF
KTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAg
ICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRWJJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgYW5kYl9pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwg
R1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2
b2lkIGFuZHFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTY1
Nyw2ICs3NzIsNDggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkg
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIGFuZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQ
MV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQog
I2Vsc2UKICAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7
CkBAIC03MDMsNiArODYwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CisKKyAgICB2b2lkIGluY3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KICNlbmRpZiAvLyBDUFUoWDg2XzY0KQogCiAgICAgdm9pZCBuZWds
X3IoUmVnaXN0ZXJJRCBkc3QpCkBAIC03MTUsNiArODc3LDE2IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05F
RywgZHN0KTsKICAgICB9CisKKyAgICB2b2lkIG5lZ3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNf
RXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBuZWdx
X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYs
IEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5k
aWYKIAogICAgIHZvaWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKQEAgLTcy
Miw2ICs4OTQsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZv
aWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
M19FdiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVn
bF9tKG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWd3X20oaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5lZ2xf
bShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWdiX20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIG5lZ2JfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKICAgICB2b2lkIG5vdGxfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1Qs
IGRzdCk7CkBAIC03MzIsNiArOTMxLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdGxfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIG5vdGxfbShvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90d19t
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICBub3RsX20ob2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG5v
dHFfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC03NDIsNiArOTY4LDExIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JP
VVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CisKKyAgICB2b2lkIG5vdHFfbShpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAz
X09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAg
ICAgdm9pZCBvcmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtNzU0LDEx
ICs5ODUsNDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1Jf
R3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX21yKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdp
c3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9H
dkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lk
IG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAg
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgb3JsX3JtKHNyYywgb2Zm
c2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAg
ICAgIG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtNzg0LDEyICsxMDQ3LDEwMSBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICB2b2lkIG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JP
VVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb3J3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9
CisgICAgfQorCisgICAgdm9pZCBvcmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
YkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09Q
X09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgb3JxX3Jy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lk
IG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7Cisg
ICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQ
MV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHZvaWQgb3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICB2b2lkIG9ycV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC04MzEsMTEgKzExODMs
NDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYs
IGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YmxfbXIoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9HdkV2
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
Ymxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vid19ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIHN1Yndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgc3ViYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHYiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJs
X2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTg2MSw2ICsxMjQ1LDUzIEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgIH0KIAorICAgIHZvaWQgc3VibF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgc3Vid19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2Us
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdWJ3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1Bf
U1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOworICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
MV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0
KQogICAgIHZvaWQgc3VicV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAg
ewpAQCAtODcyLDExICsxMzAzLDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2
b2lkIHN1YnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKwogICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YnFf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KwogICAgIHZvaWQgc3VicV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAg
ICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC05MDEsNiArMTM0MiwxNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAg
ICAgICB9CiAgICAgfQorCisgICAgdm9pZCBzdWJxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAg
fQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCiAgICAgewpAQCAtOTI0LDExICsxMzc2LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQog
CisgICAgdm9pZCB4b3JsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhv
cmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hPUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisKICAgICB2b2lkIHhvcmxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTk0
MCw2ICsxNDAyLDc1IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgeG9y
bF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihp
bW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIs
IEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yd19ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICB4b3JsX3JtKHNy
Yywgb2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcndfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICB4b3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgeG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2Us
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1Bf
WE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcmJfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAg
IHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfWE9SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0ViSWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcmJfaW0oaW50IGltbSwgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQ
MV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogICAgIHZvaWQgeG9ybF9pcihpbnQgaW1tLCBS
ZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihp
bW0pKSB7CkBAIC05NzQsMTEgKzE1MDUsNDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
ICAgIAorICAgIHZvaWQgeG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9P
UF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9F
dkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4b3JxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hP
Ul9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIHhvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfR3ZFdiwgZGVz
dCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcnFfbXIoaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2
LCBkZXN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAg
ICB2b2lkIGx6Y250X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTE1ODYs
MTEgKzIxNTMsMzggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX1hDSEdfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgeGNoZ2Jfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNoZ3dfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQg
eGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
WENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAg
ICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnbF9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2
XzY0KQogICAgIHZvaWQgeGNoZ3FfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKQEAgLTE2MDYsNiArMjIwMCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CisKKyAgICB2b2lkIHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG1vdmxfcnIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTczMSw2ICsyMzMwLDIwIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBtb3Z3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCisgICAgdm9pZCBtb3Z3X2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJ
WkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxMV9Fdkl6LCBHUk9V
UDExX01PViwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUxNihpbW0pOworICAgIH0KKwogICAgIHZvaWQgbW92bF9FQVhtKGNvbnN0IHZv
aWQqIGFkZHIpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX092
RUFYKTsKQEAgLTE4MDAsNiArMjQxMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTMyKGltbSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX2kzMm0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDExX0V2SXos
IEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZxX2k2NHIoaW50
NjRfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfTU9WX0VBWEl2LCBkc3QpOwpAQCAtMjc3NSw2ICszMzk0LDkwIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9MT0NLKTsKICAgICB9CiAgICAgCisg
ICAgdm9pZCBjbXB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENI
R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnYl9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4
KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BF
UkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNy
YywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNt
cHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcs
IHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGNtcHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9D
TVBYQ0hHLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQURE
Yiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCB4YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2
NChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhh
ZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5
dGVPcDY0KE9QMl9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisgICAgCiAgICAgdm9pZCBtZmVuY2UoKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudGhy
ZWVCeXRlT3AoT1AyXzNCWVRFX0VTQ0FQRV9BRSwgT1AzX01GRU5DRSk7CkBAIC0zNzUxLDYgKzQ0
NTQsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKGdyb3Vw
T3AsIHJtKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bj
b2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlciht
X2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1Jl
eChyZWcsIGJhc2UpLCByZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNl
LCBvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVP
cGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3Jp
dGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCByZWdSZXF1aXJlc1JleChp
bmRleCwgYmFzZSksIHJlZywgaW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRl
VW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBJbW1l
ZGlhdGVzOgogICAgICAgICAvLwogICAgICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFw
cGVuZGVkIHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzQXRvbWlj
VmFsdWUuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeworCitBdG9taWNWYWx1ZTo6fkF0b21pY1ZhbHVlKCkKK3sKK30KKworV2lkdGggQXRv
bWljVmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aWR0aDsKK30K
Kwordm9pZCBBdG9taWNWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoY29tbWEsICJ3aWR0aCA9ICIsIG1f
d2lkdGgpOworICAgIAorICAgIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShjb21tYSwgb3V0KTsKK30K
KworVmFsdWUqIEF0b21pY1ZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAoreworICAgIHJldHVybiBu
ZXcgQXRvbWljVmFsdWUoKnRoaXMpOworfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVu
Y2VSYW5nZSkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIG9wZXJhbmQt
PnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlLCBvcGVyYW5kLCBwb2lu
dGVyKQorICAgICwgbV93aWR0aCh3aWR0aCkKK3sKKyAgICBBU1NFUlQoYmVzdFR5cGUoR1AsIG9w
ZXJhdGlvbldpZHRoKCkpID09IG9wZXJhdGlvblR5cGUoKSk7CisgICAgCisgICAgc3dpdGNoIChr
aW5kLm9wY29kZSgpKSB7CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWlj
WGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6
CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2lu
LCBXaWR0aCB3aWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFs
dWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBm
ZW5jZVJhbmdlKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwga2luZC5v
cGNvZGUoKSA9PSBBdG9taWNXZWFrQ0FTID8gSW50MzIgOiBleHBlY3RlZFZhbHVlLT50eXBlKCks
IG9yaWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFs
dWUsIHBvaW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIEFTU0VSVChiZXN0VHlw
ZShHUCwgb3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKworICAgIHN3aXRj
aCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0
b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
KworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNBdG9taWNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5j
bHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgQXRvbWljVmFsdWUgOiBwdWJsaWMgTWVtb3J5VmFsdWUgewor
cHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGlzQXRvbWljKGtpbmQub3Bjb2RlKCkpOworICAgIH0KKyAgICAKKyAgICB+QXRv
bWljVmFsdWUoKTsKKyAgICAKKyAgICBUeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJldHVy
biBjaGlsZCgwKS0+dHlwZSgpOyB9CisgICAgCisgICAgV2lkdGggb3BlcmF0aW9uV2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgCisgICAgLy8gU3lub255bSBmb3Igb3BlcmF0
aW9uV2lkdGgoKSwgaWYgeW91J3JlIGFjY2Vzc2luZyB2aWEgTWVtb3J5VmFsdWUuCisgICAgV2lk
dGggYWNjZXNzV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2
b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgCisgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVl
KEtpbmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFw
UmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCkpOworICAgIAorICAgIEF0b21pY1Zh
bHVlKEtpbmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3
VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5n
ZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlOjp0
b3AoKSk7CisgICAgCisgICAgV2lkdGggbV93aWR0aDsKK307CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiAr
NDAsNyBAQCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKIGNsYXNzIEluc2VydGlvblNldDsKIGNs
YXNzIFByb2NlZHVyZTsKIGNsYXNzIFZhbHVlOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEdl
bmVyaWNCbG9ja0luc2VydGlvblNldDsKIAogY2xhc3MgQmFzaWNCbG9jayB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQmFzaWNCbG9jayk7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgZnJpZW5kIGNsYXNzIElu
c2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lPiBmcmllbmQgY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIAogICAg
IC8vIEluc3RhbnRpYXRlIHZpYSBQcm9jZWR1cmUuCiAgICAgQmFzaWNCbG9jayh1bnNpZ25lZCBp
bmRleCwgZG91YmxlIGZyZXF1ZW5jeSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzYsMzUgKzM2LDEzIEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogQmxv
Y2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSAmcHJvYykKLSAgICA6
IG1fcHJvYyhwcm9jKQorICAgIDogR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MubV9ibG9j
a3MpCisgICAgLCBtX3Byb2MocHJvYykKIHsKIH0KIAogQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9j
a0luc2VydGlvblNldCgpIHsgfQogCi12b2lkIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxv
Y2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCi17Ci0gICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZN
b3ZlKGluc2VydGlvbikpOwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5z
ZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHN0ZDo6dW5pcXVl
X3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgZnJlcXVlbmN5
KSk7Ci0gICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxvY2suZ2V0KCk7Ci0gICAgaW5zZXJ0KEJs
b2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRCZWZvcmUoQmFzaWNC
bG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHJldHVybiBpbnNlcnQoYmVm
b3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3Jl
LT5mcmVxdWVuY3koKSk7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNl
cnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1
cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZy
ZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7Ci19Ci0KIEJhc2ljQmxvY2sqIEJsb2NrSW5z
ZXJ0aW9uU2V0OjpzcGxpdEZvcndhcmQoCiAgICAgQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVk
JiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqIGluc2VydGlvblNldCwgZG91YmxlIGZyZXF1ZW5j
eSkKIHsKQEAgLTEwMiwzMiArODAsNiBAQCBCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6
c3BsaXRGb3J3CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBCbG9ja0luc2VydGlvblNl
dDo6ZXhlY3V0ZSgpCi17Ci0gICAgaWYgKG1faW5zZXJ0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBXZSBhbGxvdyBpbnNlcnRpb25zIHRvIGJlIGdp
dmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5lZWQgdG8gc29ydCB0aGVtIGJlZm9yZQot
ICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVy
IGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKLSAgICAvLyBmYXN0LCBzbyB3ZSB1
c2UgYnViYmxlIHNvcnQuCi0gICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9p
bnNlcnRpb25zLmVuZCgpKTsKLQotICAgIGV4ZWN1dGVJbnNlcnRpb25zKG1fcHJvYy5tX2Jsb2Nr
cywgbV9pbnNlcnRpb25zKTsKLSAgICAKLSAgICAvLyBQcnVuZSBvdXQgZW1wdHkgZW50cmllcy4g
VGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MKLSAgICAvLyBoZWFsdGh5IHRv
IGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgotICAgIG1fcHJvYy5tX2Jsb2Nrcy5y
ZW1vdmVBbGxNYXRjaGluZygKLSAgICAgICAgWyZdIChzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9j
az4mIGJsb2NrUHRyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiAhYmxvY2tQdHI7Ci0g
ICAgICAgIH0pOwotICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0
aGVpciBuZXcgaW5kaWNlcy4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9jLm1f
YmxvY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3Byb2MubV9ibG9ja3NbaV0tPm1faW5kZXgg
PSBpOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAi
QjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgog
I2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0z
NSwyNiArMzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIElu
c2VydGlvblNldDsKIAotdHlwZWRlZiBXVEY6Okluc2VydGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFz
aWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOwordHlwZWRlZiBHZW5lcmljQmxvY2tJbnNlcnRpb25T
ZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5zZXJ0aW9uOwogCi1jbGFzcyBC
bG9ja0luc2VydGlvblNldCB7CitjbGFzcyBCbG9ja0luc2VydGlvblNldCA6IHB1YmxpYyBHZW5l
cmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4gewogcHVibGljOgogICAgIEJsb2NrSW5z
ZXJ0aW9uU2V0KFByb2NlZHVyZSYpOwogICAgIH5CbG9ja0luc2VydGlvblNldCgpOwogICAgIAot
ICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYpOwotCi0gICAgLy8gSW5zZXJ0IGEgbmV3
IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0KHVuc2lnbmVk
IGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3
IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVzdWFsbHkgeW91IHdpbGwgbm90IHBhc3Mg
dGhlIGZyZXF1ZW5jeQotICAgIC8vIGFyZ3VtZW50LiBQYXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRv
IGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdiZWZvcmUnIGJsb2NrLiBUaGF0J3MKLSAg
ICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QmVmb3Jl
KEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8g
SW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxvY2suCi0gICAgQmFzaWNCbG9j
ayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFO
KTsKLQogICAgIC8vIEEgaGVscGVyIHRvIHNwbGl0IGEgYmxvY2sgd2hlbiBmb3J3YXJkIGl0ZXJh
dGluZyBvdmVyIGl0LiBJdCBjcmVhdGVzIGEgbmV3IGJsb2NrIHRvIGhvbGQKICAgICAvLyBldmVy
eXRoaW5nIGJlZm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYXQgdmFsdWVJbmRleC4gVGhlIGN1cnJlbnQg
YmxvY2sgaXMgbGVmdCB3aXRoCiAgICAgLy8gZXZlcnl0aGluZyBhdCBhbmQgYWZ0ZXIgdmFsdWVJ
bmRleC4gSWYgdGhlIG9wdGlvbmFsIEluc2VydGlvblNldCBpcyBwcm92aWRlZCwgaXQgd2lsbCBn
ZXQKQEAgLTgwLDEyICs2OCw5IEBAIHB1YmxpYzoKICAgICBCYXNpY0Jsb2NrKiBzcGxpdEZvcndh
cmQoCiAgICAgICAgIEJhc2ljQmxvY2sqLCB1bnNpZ25lZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9u
U2V0KiA9IG51bGxwdHIsCiAgICAgICAgIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLSAgICAK
LSAgICBib29sIGV4ZWN1dGUoKTsKIAogcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsK
LSAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKIH07CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZm
ZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Vm
ZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6
aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAgICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0
ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIu
d3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIucmVhZHMpCi0gICAgICAg
IHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7CisgICAgICAgIHx8IHJlYWRzLm92ZXJs
YXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZlbmNlICYmIG90aGVyLmZlbmNlKTsKIH0K
IAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApA
QCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYg
CiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhlci53cml0ZXNQaW5uZWQKICAgICAgICAg
JiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5uZWQKICAgICAgICAgJiYgd3JpdGVzID09
IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkczsKKyAgICAgICAg
JiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7
CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29u
c3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVjdHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlc1Bpbm5lZCIpOwogICAgIGlm
IChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsK
KyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkZlbmNlIik7CiAgICAg
aWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7
CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwxMCBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzE3MwogICAgIGJv
b2wgcmVhZHNQaW5uZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgd3JpdGVzUGlubmVkIHsgZmFsc2Ug
fTsKKyAgICAKKyAgICAvLyBNZW1vcnkgZmVuY2VzIGNhbm5vdCBiZSByZW9yZGVyZWQgYXJvdW5k
IGVhY2ggb3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBlZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQK
KyAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVtb3J5IGZlbmNlLgorICAgIGJvb2wgZmVu
Y2UgeyBmYWxzZSB9OwogCiAgICAgSGVhcFJhbmdlIHdyaXRlczsKICAgICBIZWFwUmFuZ2UgcmVh
ZHM7CkBAIC04OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZlY3RzIHsKICAgICAgICAgcmVzdWx0LnJl
YWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1
ZTsKICAgICAgICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIHJlc3VsdC5m
ZW5jZSA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMDMsNyAr
MTA4LDcgQEAgc3RydWN0IEVmZmVjdHMgewogCiAgICAgYm9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0
ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQ7CisgICAgICAgIHJldHVybiB0
ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8
IHdyaXRlc1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
cmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVzZSByZXNwZWN0aXZlIGVmZmVjdHMgd291
bGQgY2hhbmdlIHByb2dyYW0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAJKHJldmlzaW9u
IDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1
YmV4cHJlc3Npb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDIsNiArMTQyLDcgQEAgc3RydWN0IElt
cHVyZUJsb2NrRGF0YSB7CiAKICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlz
IG9ubHkgZ2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0b3JlIGVsaW1pbmF0aW9uLgogICAgIFJhbmdl
U2V0PEhlYXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdldHMgdXNlZCBmb3IgYm90aCBsb2FkIGFu
ZCBzdG9yZSBlbGltaW5hdGlvbi4KKyAgICBib29sIGZlbmNlOwogCiAgICAgTWVtb3J5VmFsdWVN
YXAgc3RvcmVzQXRIZWFkOwogICAgIE1lbW9yeVZhbHVlTWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsK
QEAgLTE3NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNTdG9yZSgpCiAgICAgICAgICAgICAgICAg
ICAgICYmICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkKLSAgICAgICAgICAg
ICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkpCisgICAg
ICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkp
CisgICAgICAgICAgICAgICAgICAgICYmICghZGF0YS5mZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5j
ZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7
CiAgICAgICAgICAgICAgICAgZGF0YS5yZWFkcy5hZGQoZWZmZWN0cy5yZWFkcyk7CiAKICAgICAg
ICAgICAgICAgICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9IGVmZmVjdHMud3JpdGVzKQogICAgICAg
ICAgICAgICAgICAgICBjbG9iYmVyKGRhdGEsIHdyaXRlcyk7CisgICAgICAgICAgICAgICAgZGF0
YS5mZW5jZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeSkK
ICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7
CkBAIC00NDUsOCArNDQ4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBkYXRhTG9nKCJCYWQgbWVtb3J5IHZhbHVlOiAiLCBkZWVwRHVtcCht
X3Byb2MsIG1fdmFsdWUpLCAiXG4iKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTQ3OCw2
ICs0NzksOSBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KICAgICBi
b29sIGZpbmRTdG9yZUFmdGVyQ2xvYmJlcihWYWx1ZSogcHRyLCBIZWFwUmFuZ2UgcmFuZ2UsIGNv
bnN0IEZpbHRlciYgZmlsdGVyKQogICAgIHsKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9y
eVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKICAgICAgICAgLy8gV2UgY2FuIGVsaW1pbmF0ZSBhIHN0b3JlIGlmIGV2ZXJ5IGZvcndhcmQg
cGF0aCBoaXRzIGEgc3RvcmUgdG8gdGhlIHNhbWUgbG9jYXRpb24gYmVmb3JlCiAgICAgICAgIC8v
IGhpdHRpbmcgYW55IG9wZXJhdGlvbiB0aGF0IG9ic2VydmVzIHRoZSBzdG9yZS4gVGhpcyBzZWFy
Y2ggc2VlbXMgbGlrZSBpdCBzaG91bGQgYmUKICAgICAgICAgLy8gZXhwZW5zaXZlLCBidXQgaW4g
dGhlIG92ZXJ3aGVsbWluZyBtYWpvcml0eSBvZiBjYXNlcyBpdCB3aWxsIGFsbW9zdCBpbW1lZGlh
dGVseSBoaXQgYW4gCkBAIC02MTQsNiArNjE4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGlmICh2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygqbV92YWx1ZSwgIjogbG9va2luZyBiYWNrd2Fy
ZCBmb3IgIiwgKnB0ciwgIi4uLlxuIik7CiAgICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpIHsKKyAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHaXZpbmcgdXAgYmVjYXVzZSBmZW5jZXMu
XG4iKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIGlmIChNZW1vcnlWYWx1ZSogbWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZp
bmQocHRyLCBmaWx0ZXIpKSB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRm91bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTIsNiArOTIsNyBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1
cmUsCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTA1MDcKICAgICB9CiAKKyAgICAvLyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgog
ICAgIGxvd2VyTWFjcm9zKHByb2NlZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiUHVyZU5hTi5oIgor
I2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
CisKK2NsYXNzIEluc2VydGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9jaz4K
K2NsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBX
VEY6Okluc2VydGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9u
OworICAgIAorICAgIEdlbmVyaWNCbG9ja0luc2VydGlvblNldChWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJhc2ljQmxvY2s+PiYgYmxvY2tzKQorICAgICAgICA6IG1fYmxvY2tzKGJsb2NrcykKKyAg
ICB7CisgICAgfQorICAgIAorICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5zZXJ0
aW9uKQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlv
bikpOworICAgIH0KKworICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGluZGV4
LgorICAgIEJhc2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5j
eSA9IFBOYU4pCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxv
Y2sobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOworICAgICAgICBCYXNpY0Js
b2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsKKyAgICAgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9u
KGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1
YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5CisgICAgLy8gYXJndW1lbnQuIFBh
c3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2Jl
Zm9yZScgYmxvY2suIFRoYXQncworICAgIC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KKyAgICBC
YXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVl
bmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgp
LCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3ko
KSk7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4g
YmxvY2suCisgICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRv
dWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChhZnRl
ci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBhZnRl
ci0+ZnJlcXVlbmN5KCkpOworICAgIH0KKworICAgIGJvb2wgZXhlY3V0ZSgpCisgICAgeworICAg
ICAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4g
dG8gdXMgaW4gYW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCisgICAg
ICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVy
IGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKKyAgICAgICAgLy8gZmFzdCwgc28g
d2UgdXNlIGJ1YmJsZSBzb3J0LgorICAgICAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdp
bigpLCBtX2luc2VydGlvbnMuZW5kKCkpOworICAgICAgICAKKyAgICAgICAgZXhlY3V0ZUluc2Vy
dGlvbnMobV9ibG9ja3MsIG1faW5zZXJ0aW9ucyk7CisgICAgICAgIAorICAgICAgICAvLyBQcnVu
ZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0
J3MKKyAgICAgICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jvd2lu
Zy4KKyAgICAgICAgbV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAgICBbJl0g
KHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+IGJvb2wgeworICAgICAg
ICAgICAgICAgIHJldHVybiAhYmxvY2tQdHI7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisg
ICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNl
cy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgbV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOworICAgICAgICAKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8QmFzaWNCbG9jaz4+JiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24s
IDg+IG1faW5zZXJ0aW9uczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hl
YXBSYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBS
YW5nZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNI
ZWFwUmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMTMgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAorICAgIEhlYXBSYW5n
ZSBvcGVyYXRvcnwoY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBIZWFwUmFuZ2UoCisgICAgICAgICAgICBzdGQ6Om1pbihtX2JlZ2luLCBvdGhlci5t
X2JlZ2luKSwKKyAgICAgICAgICAgIHN0ZDo6bWF4KG1fZW5kLCBvdGhlci5tX2VuZCkpOworICAg
IH0KKyAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9i
ZWdpbiAhPSBtX2VuZDsgfQogCiAgICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBt
X2JlZ2luOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNl
dC5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0lu
c2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCwxMSBAQCBWYWx1ZSog
SW5zZXJ0aW9uU2V0OjppbnNlcnRCb3R0b20oc2l6ZV90CiAgICAgcmV0dXJuIGluc2VydEJvdHRv
bShpbmRleCwgbGlrZVZhbHVlLT5vcmlnaW4oKSwgbGlrZVZhbHVlLT50eXBlKCkpOwogfQogCitW
YWx1ZSogSW5zZXJ0aW9uU2V0OjppbnNlcnRDbG9uZShzaXplX3QgaW5kZXgsIFZhbHVlKiB2YWx1
ZSkKK3sKKyAgICByZXR1cm4gaW5zZXJ0VmFsdWUoaW5kZXgsIG1fcHJvY2VkdXJlLmNsb25lKHZh
bHVlKSk7Cit9CisKIHZvaWQgSW5zZXJ0aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2Nr
KQogewogICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5l
bmQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9u
U2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogCiAgICAgVmFs
dWUqIGluc2VydEJvdHRvbShzaXplX3QgaW5kZXgsIE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUq
IGluc2VydEJvdHRvbShzaXplX3QgaW5kZXgsIFZhbHVlKik7CisgICAgCisgICAgVmFsdWUqIGlu
c2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqKTsKIAogICAgIHZvaWQgZXhlY3V0ZShCYXNp
Y0Jsb2NrKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jv
cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDExICsyOSwxMyBAQAogI2lmIEVO
QUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Uu
aCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0ND
YWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0Nhc2VDb2xsZWN0aW9uSW5saW5lcy5oIgogI2luY2x1
ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgorI2luY2x1ZGUgIkIzRmVuY2VWYWx1ZS5oIgogI2luY2x1
ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIK
ICNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgpAQCAtNDIsNiArNDQsNyBAQAogI2luY2x1
ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCisjaW5jbHVkZSAiQjNVc2VDb3VudHMu
aCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5o
IgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTU4LDExICs2MSwxNCBAQCBwdWJsaWM6CiAg
ICAgICAgIDogbV9wcm9jKHByb2MpCiAgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChwcm9j
KQogICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KHByb2MpCisgICAgICAgICwgbV91c2VDb3VudHMo
cHJvYykKICAgICB7CiAgICAgfQogCiAgICAgYm9vbCBydW4oKQogICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIW1fcHJvYy5oYXNRdWlya3MoKSk7CisgICAgICAgIAogICAgICAgICBmb3Ig
KEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxv
Y2s7CiAgICAgICAgICAgICBwcm9jZXNzQ3VycmVudEJsb2NrKCk7CkBAIC03Miw2ICs3OCwxMCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX3Byb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAg
ICAgICAgIG1fcHJvYy5pbnZhbGlkYXRlQ0ZHKCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgd2UndmUgCisgICAgICAgIG1fcHJvYy5zZXRIYXNR
dWlya3ModHJ1ZSk7CisgICAgICAgIAogICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwogICAgIH0K
ICAgICAKQEAgLTE4NSw3ICsxOTUsMTE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9j
aGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAg
ICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1s
b2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8g
dGVsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxv
YWQgbW90aW9uLgorICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAg
ICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1
bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAg
ICBtX3ZhbHVlLT5yZXBsYWNlV2l0aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgY2FzZSBB
dG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRv
bWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAg
ICAgICAgIFdpZHRoIHdpZHRoID0gYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgVmFsdWUqIGV4cGVjdGVkVmFsdWUgPSBhdG9taWMtPmNoaWxkKDApOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIC8vIE9uIEFSTSwgdGhlIGxvYWQgcGFydCBvZiB0aGUgQ0FT
IGRvZXMgYSBsb2FkIHdpdGggemVybyBleHRlbnNpb24uIFRoZXJlZm9yZSwgd2UgbmVlZAorICAg
ICAgICAgICAgICAgIC8vIHRvIHplcm8tZXh0ZW5kIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAg
ICBWYWx1ZSogbWFza2VkRXhwZWN0ZWRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1
ZT4oCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIGV4cGVj
dGVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENv
bnN0YW50KG1faW5kZXgsIGV4cGVjdGVkVmFsdWUsIG1hc2sod2lkdGgpKSk7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgYXRvbWljLT5jaGlsZCgwKSA9IG1hc2tlZEV4cGVjdGVk
VmFsdWU7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNh
c2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAg
ICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3Vi
OgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9t
aWNYY2hnOiB7CisgICAgICAgICAgICAgICAgLy8gT24gWDg2LCB0aGVzZSBtYXkgYWN0dWFsbHkg
cmV0dXJuIGdhcmJhZ2UgaW4gdGhlIGhpZ2ggYml0cy4gT24gQVJNNjQsIHRoZXNlIHNvcnRhCisg
ICAgICAgICAgICAgICAgLy8gemVyby1leHRlbmQgdGhlaXIgaGlnaCBiaXRzLCBleGNlcHQgdGhh
dCB0aGUgaGlnaCBiaXRzIG1pZ2h0IGdldCBwb2xsdXRlZCBieSBoaWdoCisgICAgICAgICAgICAg
ICAgLy8gYml0cyBpbiB0aGUgb3BlcmFuZC4gLiBTbywgZWl0aGVyIHdheSwgd2UgbmVlZCB0byB0
aHJvdyBhIHNpZ24tZXh0ZW5kIG9uIHRoZXNlCisgICAgICAgICAgICAgICAgLy8gdGhpbmdzLgor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5vcGNvZGUoKSA9PSBBdG9taWNYY2hnU3ViICYmIG1f
dXNlQ291bnRzLm51bVVzZXMobV92YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IE9uIHg4NiwgeGNoZ2FkZCBpcyBiZXR0ZXIgdGhhbiB4Y2hnc3ViIGlmIGl0IGhhcyBhbnkgdXNl
cnMuCisgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5zZXRPcGNvZGVVbnNhZmVseShB
dG9taWNYY2hnQWRkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDEp
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luZGV4LCBOZWcsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IGJvb2wgZXhlbXB0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobV92YWx1
ZS0+b3Bjb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgor
ICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBleGVtcHQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAoZXhlbXB0KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAg
ICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNDYW5vbmljYWxXaWR0aCh3aWR0aCkpCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgICAgIG1faW5kZXgsIHNpZ25FeHRlbmRPcGNvZGUod2lkdGgpLCBtX29yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRl
eCwgYXRvbWljKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+
cmVwbGFjZVdpdGhJZGVudGl0eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2Vk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICAgICAgY2FzZSBMb2Fk
MTZaOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBpZiAo
IW1lbW9yeS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gU3ViLXdpZHRoIGxvYWQtYWNxIG9uIEFSTTY0
IGFsd2F5cyBzaWduIGV4dGVuZHMuCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld0xvYWQgPSBt
X2luc2VydGlvblNldC5pbnNlcnRDbG9uZShtX2luZGV4LCBtZW1vcnkpOworICAgICAgICAgICAg
ICAgIG5ld0xvYWQtPnNldE9wY29kZVVuc2FmZWx5KG1lbW9yeS0+b3Bjb2RlKCkgPT0gTG9hZDha
ID8gTG9hZDhTIDogTG9hZDE2Uyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
VmFsdWUqIG5ld1ZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICAgICAgbV9pbmRleCwgQml0QW5kLCBtX29yaWdpbiwgbmV3TG9hZCwKKyAgICAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4LCBtX29yaWdpbiwgSW50MzIsIG1hc2sobWVtb3J5LT5sb2Fk
U3RvcmVXaWR0aCgpKSkpOwogCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJ
ZGVudGl0eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CkBAIC00NzAsNiArNTkyLDcgQEAgcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKICAg
ICBCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIEluc2VydGlvblNl
dCBtX2luc2VydGlvblNldDsKKyAgICBVc2VDb3VudHMgbV91c2VDb3VudHM7CiAgICAgQmFzaWNC
bG9jayogbV9ibG9jazsKICAgICB1bnNpZ25lZCBtX2luZGV4OwogICAgIFZhbHVlKiBtX3ZhbHVl
OwpAQCAtNDc3LDIxICs2MDAsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hhbmdlZCB7IGZh
bHNlIH07CiB9OwogCi1ib29sIGxvd2VyTWFjcm9zSW1wbChQcm9jZWR1cmUmIHByb2MpCi17Ci0g
ICAgTG93ZXJNYWNyb3MgbG93ZXJNYWNyb3MocHJvYyk7Ci0gICAgcmV0dXJuIGxvd2VyTWFjcm9z
LnJ1bigpOwotfQotCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogYm9vbCBsb3dlck1hY3Jv
cyhQcm9jZWR1cmUmIHByb2MpCiB7Ci0gICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHByb2MsICJs
b3dlck1hY3JvcyIpOwotICAgIGJvb2wgcmVzdWx0ID0gbG93ZXJNYWNyb3NJbXBsKHByb2MpOwot
ICAgIGlmIChzaG91bGRWYWxpZGF0ZUlSKCkpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsb3dl
ck1hY3Jvc0ltcGwocHJvYykpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgTG93ZXJNYWNyb3Mg
bG93ZXJNYWNyb3MocHJvYyk7CisgICAgcmV0dXJuIGxvd2VyTWFjcm9zLnJ1bigpOwogfQogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9z
QWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDE1ICsxNTYsMTQg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgUm90TDogewogICAgICAgICAgICAgICAgIC8v
IEFSTTY0IGRvZXNuJ3QgaGF2ZSBhIHJvdGF0ZSBsZWZ0LgogICAgICAgICAgICAgICAgIGlmIChp
c0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
PFZhbHVlPihtX2luZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgx
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcm90YXRlID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBSb3RSLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1
ZS0+Y2hpbGQoMCksIG5ld1NoaWZ0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUt
PnJlcGxhY2VXaXRoSWRlbnRpdHkocm90YXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBu
ZXdTaGlmdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3Zh
bHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICBW
YWx1ZSogcm90YXRlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBSb3RS
LCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCksIG5ld1NoaWZ0KTsKKyAgICAg
ICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDIxMjk5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMiArMjgsMTQgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRl
ICJBaXJCbG9ja0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkFpckNDYWxsU3BlY2lhbC5oIgog
I2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJBaXJJbnNlcnRpb25TZXQuaCIKICNpbmNs
dWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpclN0YWNrU2xvdC5oIgogI2luY2x1
ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNp
bmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCbG9ja1dvcmtsaXN0
LmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCkBAIC03Miw2ICs3NCwxNiBAQCBuYW1lc3Bh
Y2UgewogCiBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAorLy8gRklYTUU6IFdlIHdvdWxk
bid0IG5lZWQgdGhpcyBpZiBBaXIgc3VwcG9ydGVkIFdpZHRoIG1vZGlmaWVycyBpbiBBaXI6Oktp
bmQuCisvLyBPT1BTISEhIChuZWVkIGEgYnVnIFVSTCkKKyNkZWZpbmUgT1BDT0RFX0ZPUl9XSURU
SChvcGNvZGUsIHdpZHRoKSAoIFwKKyAgICAod2lkdGgpID09IFdpZHRoOCA/IG9wY29kZSAjIyA4
IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IG9wY29kZSAjIyAxNiA6IFwKKyAgICAod2lk
dGgpID09IFdpZHRoMzIgPyBvcGNvZGUgIyMgMzIgOiBcCisgICAgb3Bjb2RlICMjIDY0KQorI2Rl
ZmluZSBPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKKyAgICAo
d2lkdGgpID09IFdpZHRoNjQgPyBvcGNvZGUgIyMgNjQgOiBvcGNvZGUgIyMgMzIpCisKIGNsYXNz
IExvd2VyVG9BaXIgewogcHVibGljOgogICAgIExvd2VyVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1
cmUpCkBAIC04Myw2ICs5NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9kb21pbmF0b3JzKHBy
b2NlZHVyZS5kb21pbmF0b3JzKCkpCiAgICAgICAgICwgbV9wcm9jZWR1cmUocHJvY2VkdXJlKQog
ICAgICAgICAsIG1fY29kZShwcm9jZWR1cmUuY29kZSgpKQorICAgICAgICAsIG1fYmxvY2tJbnNl
cnRpb25TZXQobV9jb2RlKQorI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgICAgICwg
bV9lYXgoWDg2UmVnaXN0ZXJzOjplYXgpCisgICAgICAgICwgbV9lY3goWDg2UmVnaXN0ZXJzOjpl
Y3gpCisgICAgICAgICwgbV9lZHgoWDg2UmVnaXN0ZXJzOjplZHgpCisjZW5kaWYKICAgICB7CiAg
ICAgfQogCkBAIC0xMjQsMTQgKzE0MiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGhvaXN0ZWQg
YWRkcmVzcyBleHByZXNzaW9uIGJlZm9yZSB3ZSBkdXBsaWNhdGUgaXQgYmFjayBpbnRvIHRoZSBs
b29wLgogICAgICAgICBmb3IgKEIzOjpCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvY2VkdXJlLmJs
b2Nrc0luUHJlT3JkZXIoKSkgewogICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwotICAgICAg
ICAgICAgLy8gUmVzZXQgc29tZSBzdGF0ZS4KLSAgICAgICAgICAgIG1faW5zdHMucmVzaXplKDAp
OwogCiAgICAgICAgICAgICBtX2lzUmFyZSA9ICFtX2Zhc3RXb3JrbGlzdC5zYXcoYmxvY2spOwog
CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJMb3dl
cmluZyBCbG9jayAiLCAqYmxvY2ssICI6XG4iKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3JyZWN0bHkuCisg
ICAgICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxvY2stPnN1
Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+c3Vj
Y2Vzc29ycygpLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxv
Y2sobV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNjZXNzb3IuZnJlcXVlbmN5
KCkpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gUHJvY2VzcyBibG9ja3MgaW4g
cmV2ZXJzZSBvcmRlciBzbyB3ZSBzZWUgdXNlcyBiZWZvcmUgZGVmcy4gVGhhdCdzIHdoYXQgYWxs
b3dzIHVzCiAgICAgICAgICAgICAvLyB0byBtYXRjaCBwYXR0ZXJucyBlZmZlY3RpdmVseS4KICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGktLTspIHsKQEAgLTE0
OSwxOSArMTcxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIC8vIE5vdyBhcHBlbmQgdGhlIGluc3RydWN0aW9ucy4gbV9pbnN0cyBj
b250YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIsIHNvIHdlIHByb2Nlc3MKLSAgICAgICAgICAg
IC8vIGl0IGluIHJldmVyc2UuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luc3Rz
LnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1faW5z
dHNbaV0pCi0gICAgICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+YXBwZW5k
SW5zdChXVEZNb3ZlKGluc3QpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTWFr
ZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3JyZWN0bHkuCi0gICAgICAg
ICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3Nv
cnMoKSkgewotICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+c3VjY2Vzc29y
cygpLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sobV9i
bG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNjZXNzb3IuZnJlcXVlbmN5KCkpKTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyht
X2Jsb2NrVG9CbG9ja1tibG9ja10pOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2Js
b2NrSW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKIAogICAgICAgICBBaXI6Okluc2VydGlvblNldCBp
bnNlcnRpb25TZXQobV9jb2RlKTsKICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9wcm9sb2d1
ZSkKQEAgLTU2MiwxMSArNTc1LDE5IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQXJnUHJvbWlzZSBs
b2FkUHJvbWlzZUFueU9wY29kZShWYWx1ZSogbG9hZFZhbHVlKQogICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKSk7CiAgICAgICAgIGlmICgh
Y2FuQmVJbnRlcm5hbChsb2FkVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwogICAg
ICAgICBpZiAoY3Jvc3Nlc0ludGVyZmVyZW5jZShsb2FkVmFsdWUpKQogICAgICAgICAgICAgcmV0
dXJuIEFyZygpOwotICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChhZGRyKGxvYWRWYWx1ZSksIGxv
YWRWYWx1ZSk7CisgICAgICAgIC8vIE9uIHg4NiwgYWxsIGxvYWRzIGhhdmUgZmVuY2VzLiBEb2lu
ZyB0aGlzIGtpbmQgb2YgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIHdpbGwgbW92ZSB0aGUgbG9hZCwK
KyAgICAgICAgLy8gYnV0IHRoYXQncyBmaW5lIGJlY2F1c2Ugb3VyIGludGVyZmVyZW5jZSBhbmFs
eXNpcyBzdG9wcyB0aGUgbW90aW9uIG9mIGZlbmNlcyBhcm91bmQgb3RoZXIKKyAgICAgICAgLy8g
ZmVuY2VzLiBTbywgYW55IGxvYWQgbW90aW9uIHdlIGludHJvZHVjZSBoZXJlIHdvdWxkIG5vdCBi
ZSBvYnNlcnZhYmxlLgorICAgICAgICBpZiAoIWlzWDg2KCkgJiYgbG9hZFZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBBcmcoKTsKKyAgICAg
ICAgQXJnIGxvYWRBZGRyID0gYWRkcihsb2FkVmFsdWUpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChsb2FkQWRkcik7CisgICAgICAgIEFyZ1Byb21pc2UgcmVzdWx0KGxvYWRBZGRyLCBsb2FkVmFs
dWUpOwogICAgICAgICBpZiAobG9hZFZhbHVlLT50cmFwcygpKQogICAgICAgICAgICAgcmVzdWx0
LnNldFRyYXBzKHRydWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtODk4LDExICs5MTks
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSNpZiBDUFUo
WDg2KSB8fCBDUFUoWDg2XzY0KQogICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKHZhbHVlKSwgdG1w
KG1fdmFsdWUpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChhbW91bnQpLCBUbXAoWDg2UmVn
aXN0ZXJzOjplY3gpKTsKLSAgICAgICAgYXBwZW5kKG9wY29kZSwgVG1wKFg4NlJlZ2lzdGVyczo6
ZWN4KSwgdG1wKG1fdmFsdWUpKTsKLSNlbmRpZgorICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKGFt
b3VudCksIG1fZWN4KTsKKyAgICAgICAgYXBwZW5kKG9wY29kZSwgbV9lY3gsIHRtcChtX3ZhbHVl
KSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bj
b2RlIG9wY29kZTY0PgpAQCAtOTMxLDEwICs5NTAsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgQWly
OjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBDb21tdXRhdGl2aXR5IGNv
bW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZT4KICAgICBib29sIHRyeUFwcGVuZFN0b3JlQmlu
T3AoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKKyAgICAgICAgCiAgICAgICAgIEFpcjo6
T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBsZWZ0
LT50eXBlKCkpOwogICAgICAgICBpZiAob3Bjb2RlID09IEFpcjo6T29wcykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgCisgICAgICAgIC8vIE9uIHg4NiwgYWxsIHN0b3JlcyBo
YXZlIGZlbmNlcywgYW5kIHRoaXMgaXNuJ3QgcmVvcmRlcmluZyB0aGUgc3RvcmUgaXRzZWxmLgor
ICAgICAgICBpZiAoIWlzWDg2KCkgJiYgbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0Zl
bmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICBBcmcg
c3RvcmVBZGRyID0gYWRkcihtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUKHN0b3JlQWRkcik7CiAK
QEAgLTk5NCwxMSArMTAxOSw1MCBAQCBwcml2YXRlOgogCiAgICAgICAgIHJldHVybiBJbnN0KG1v
dmUsIG1fdmFsdWUsIHRtcCh2YWx1ZSksIGRlc3QpOwogICAgIH0KKyAgICAKKyAgICBBaXI6Ok9w
Y29kZSBzdG9yZU9wY29kZShXaWR0aCB3aWR0aCwgQmFuayBiYW5rLCBib29sIHJlbGVhc2UpCisg
ICAgeworICAgICAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4g
cmVsZWFzZSA/IFN0b3JlUmVsOCA6IEFpcjo6U3RvcmU4OworICAgICAgICBjYXNlIFdpZHRoMTY6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAgICAgICAgICAgIHJl
dHVybiByZWxlYXNlID8gU3RvcmVSZWwxNiA6IEFpcjo6U3RvcmUxNjsKKyAgICAgICAgY2FzZSBX
aWR0aDMyOgorICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQ
OgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwzMiA6IE1vdmUzMjsK
KyAgICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJl
bGVhc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRmxvYXQ7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaXM2NEJpdCgpKTsKKyAgICAgICAgICAgIHN3aXRjaCAoYmFuaykgewor
ICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0
b3JlUmVsNjQgOiBNb3ZlOworICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVEb3Vi
bGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBBaXI6Ok9w
Y29kZSBzdG9yZU9wY29kZShWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBNZW1vcnlWYWx1
ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChtZW1vcnktPmlzU3RvcmUoKSk7CisgICAgICAgIHJldHVybiBzdG9yZU9wY29kZShtZW1v
cnktPmxvYWRTdG9yZVdpZHRoKCksIG1lbW9yeS0+YWNjZXNzQmFuaygpLCBtZW1vcnktPmhhc0Zl
bmNlKCkpOworICAgIH0KIAogICAgIEluc3QgY3JlYXRlU3RvcmUoVmFsdWUqIHZhbHVlLCBjb25z
dCBBcmcmIGRlc3QpCiAgICAgewotICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gbW92
ZUZvclR5cGUodmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVTdG9yZShtb3Zl
T3Bjb2RlLCB2YWx1ZSwgZGVzdCk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBz
dG9yZU9wY29kZSh2YWx1ZSk7CisgICAgICAgIHJldHVybiBjcmVhdGVTdG9yZShtb3ZlT3Bjb2Rl
LCB2YWx1ZS0+Y2hpbGQoMCksIGRlc3QpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+CkBAIC0xMDA2LDcgKzEwNzAsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAg
YXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVTdG9yZShzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKSk7CiAgICAgfQotCisgICAgCiAgICAgQWlyOjpPcGNvZGUgbW92ZUZvclR5
cGUoVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xMDczLDcg
KzExMzcsNDEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVu
ZChpbnN0KTsKICAgICB9CisgICAgCisgICAgdm9pZCBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlv
bnMoQWlyOjpCYXNpY0Jsb2NrKiB0YXJnZXQpCisgICAgeworICAgICAgICAvLyBOb3cgYXBwZW5k
IHRoZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMgY29udGFpbnMgdGhlbSBpbiByZXZlcnNlIG9yZGVy
LCBzbyB3ZSBwcm9jZXNzCisgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBmb3IgKElu
c3QmIGluc3QgOiBtX2luc3RzW2ldKQorICAgICAgICAgICAgICAgIHRhcmdldC0+YXBwZW5kSW5z
dChXVEZNb3ZlKGluc3QpKTsKKyAgICAgICAgfQorICAgICAgICBtX2luc3RzLnJlc2l6ZSgwKTsK
KyAgICB9CisgICAgCisgICAgQWlyOjpCYXNpY0Jsb2NrKiBuZXdCbG9jaygpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlcihtX2Jsb2NrVG9CbG9j
a1ttX2Jsb2NrXSk7CisgICAgfQogCisgICAgLy8gTk9URTogVGhpcyB3aWxsIGNyZWF0ZSBhIGNv
bnRpbnVhdGlvbiBibG9jayAoYG5leHRCbG9ja2ApICphZnRlciogYW55IGJsb2NrcyB5b3UndmUg
Y3JlYXRlZCB1c2luZworICAgIC8vIG5ld0Jsb2NrKCkuIFNvLCBpdCdzIHByZWZlcmFibGUgdG8g
Y3JlYXRlIGFsbCBvZiB5b3VyIGJsb2NrcyB1cGZyb250IHVzaW5nIG5ld0Jsb2NrKCkuIEFsc28g
bm90ZQorICAgIC8vIHRoYXQgYW55IGNvZGUgeW91IGVtaXQgYmVmb3JlIHRoaXMgd2lsbCBiZSBw
cmVwZW5kZWQgdG8gdGhlIGNvbnRpbnVhdGlvbiwgYW5kIGFueSBjb2RlIHlvdSBlbWl0CisgICAg
Ly8gYWZ0ZXIgdGhpcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBwcmV2aW91cyBibG9jay4KKyAg
ICB2b2lkIHNwbGl0QmxvY2soQWlyOjpCYXNpY0Jsb2NrKiYgcHJldmlvdXNCbG9jaywgQWlyOjpC
YXNpY0Jsb2NrKiYgbmV4dEJsb2NrKQorICAgIHsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBi
bG9jayA9IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdOworICAgICAgICAKKyAgICAgICAgcHJldmlv
dXNCbG9jayA9IGJsb2NrOworICAgICAgICBuZXh0QmxvY2sgPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0
Lmluc2VydEFmdGVyKGJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGZpbmlzaEFwcGVuZGluZ0lu
c3RydWN0aW9ucyhuZXh0QmxvY2spOworICAgICAgICBuZXh0QmxvY2stPnN1Y2Nlc3NvcnMoKSA9
IGJsb2NrLT5zdWNjZXNzb3JzKCk7CisgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKCkuY2xlYXIo
KTsKKyAgICAgICAgCisgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJbnN0PigpKTsKKyAg
ICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRz
PgogICAgIFQqIGVuc3VyZVNwZWNpYWwoVComIGZpZWxkLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVu
dHMpCiAgICAgewpAQCAtMTEyMyw3ICsxMjIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlN0YWNrQXJndW1lbnQ6CiAgICAg
ICAgICAgICAgICAgYXJnID0gQXJnOjpjYWxsQXJnKHZhbHVlLnJlcCgpLm9mZnNldEZyb21TUCgp
KTsKLSAgICAgICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZS52YWx1ZSgpLCBhcmcpOworICAg
ICAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1vdmVGb3JUeXBlKHZhbHVlLnZhbHVlKCktPnR5cGUo
KSksIHZhbHVlLnZhbHVlKCksIGFyZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0xOTYxLDYgKzIwNTksMzA4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kWDg2RGl2KEIzOjpPcGNvZGUgb3ApCisgICAgewor
ICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVXb3JkOworICAgICAgICBBaXI6Ok9w
Y29kZSBkaXY7CisgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+dHlwZSgpKSB7CisgICAgICAgIGNh
c2UgSW50MzI6CisgICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRv
RG91YmxlV29yZDMyOworICAgICAgICAgICAgZGl2ID0gWDg2RGl2MzI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdv
cmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0OworICAgICAgICAgICAgZGl2ID0gWDg2RGl2NjQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8IG9wID09IE1vZCk7CisgICAgICAgIFRtcCBy
ZXN1bHQgPSBvcCA9PSBEaXYgPyBtX2VheCA6IG1fZWR4OworCisgICAgICAgIGFwcGVuZChNb3Zl
LCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgIGFwcGVuZChjb252ZXJ0
VG9Eb3VibGVXb3JkLCBtX2VheCwgbV9lZHgpOworICAgICAgICBhcHBlbmQoZGl2LCBtX2VheCwg
bV9lZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOworICAgICAgICBhcHBlbmQoTW92ZSwgcmVz
dWx0LCB0bXAobV92YWx1ZSkpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kWDg2VURpdihCMzo6
T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2ID0gbV92YWx1ZS0+dHlw
ZSgpID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0OworCisgICAgICAgIEFTU0VSVChv
cCA9PSBVRGl2IHx8IG9wID09IFVNb2QpOworICAgICAgICBUbXAgcmVzdWx0ID0gb3AgPT0gVURp
diA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5j
aGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKFhvcjY0LCBtX2VkeCwgbV9lZHgpOwor
ICAgICAgICBhcHBlbmQoZGl2LCBtX2VheCwgbV9lZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkp
OworICAgICAgICBhcHBlbmQoTW92ZSwgcmVzdWx0LCB0bXAobV92YWx1ZSkpOworICAgIH0KKyAg
ICAKKyAgICBBaXI6Ok9wY29kZSBsb2FkTGlua09wY29kZShXaWR0aCB3aWR0aCwgYm9vbCBmZW5j
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmZW5jZSA/IE9QQ09ERV9GT1JfV0lEVEgoTG9hZExp
bmtBY3EsIHdpZHRoKSA6IE9QQ09ERV9GT1JfV0lEVEgoTG9hZExpbmssIHdpZHRoKTsKKyAgICB9
CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVDb25kT3Bjb2RlKFdpZHRoIHdpZHRoLCBib29s
IGZlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZlbmNlID8gT1BDT0RFX0ZPUl9XSURUSChT
dG9yZUNvbmRSZWwsIHdpZHRoKSA6IE9QQ09ERV9GT1JfV0lEVEgoU3RvcmVDb25kLCB3aWR0aCk7
CisgICAgfQorICAgIAorICAgIC8vIFRoaXMgY2FuIGVtaXQgY29kZSBmb3IgdGhlIGZvbGxvd2lu
ZyBwYXR0ZXJuczoKKyAgICAvLyBBdG9taWNXZWFrQ0FTCisgICAgLy8gQml0WG9yKEF0b21pY1dl
YWtDQVMsIDEpCisgICAgLy8gQXRvbWljU3Ryb25nQ0FTCisgICAgLy8gRXF1YWwoQXRvbWljU3Ry
b25nQ0FTLCBleHBlY3RlZCkKKyAgICAvLyBOb3RFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVj
dGVkKQorICAgIC8vIEJyYW5jaChBdG9taWNXZWFrQ0FTKQorICAgIC8vIEJyYW5jaChFcXVhbChB
dG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKSkKKyAgICAvLyBCcmFuY2goTm90RXF1YWwoQXRvbWlj
U3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAgLy8KKyAgICAvLyBJdCBhc3N1bWVzIHRoYXQgYXRv
bWljVmFsdWUgcG9pbnRzIHRvIHRoZSBDQVMsIGFuZCBtX3ZhbHVlIHBvaW50cyB0byB0aGUgaW5z
dHJ1Y3Rpb24gYmVpbmcKKyAgICAvLyBnZW5lcmF0ZWQuIEl0IGFzc3VtZXMgdGhhdCB5b3UndmUg
Y29uc3VtZWQgZXZlcnl0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGNvbnN1bWVkLgorICAgIHZvaWQg
YXBwZW5kQ0FTKFZhbHVlKiBhdG9taWNWYWx1ZSwgYm9vbCBpbnZlcnQpCisgICAgeworICAgICAg
ICBBdG9taWNWYWx1ZSogYXRvbWljID0gYXRvbWljVmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChhdG9taWMpOworICAgICAgICAKKyAgICAgICAgYm9vbCBp
c0JyYW5jaCA9IG1fdmFsdWUtPm9wY29kZSgpID09IEJyYW5jaDsKKyAgICAgICAgYm9vbCBpc1N0
cm9uZyA9IGF0b21pYy0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTOworICAgICAgICBib29s
IHJldHVybnNPbGRWYWx1ZSA9IG1fdmFsdWUtPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUzsK
KyAgICAgICAgCisgICAgICAgIFdpZHRoIHdpZHRoID0gYXRvbWljLT5vcGVyYXRpb25XaWR0aCgp
OworICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKworICAgICAgICBUbXAgdmFs
dWVSZXN1bHRUbXA7CisgICAgICAgIFRtcCBib29sUmVzdWx0VG1wOworICAgICAgICBpZiAocmV0
dXJuc09sZFZhbHVlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghaW52ZXJ0KTsKKyAg
ICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOworICAgICAgICAgICAgYm9v
bFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICB9IGVsc2UgaWYgKGlzQnJh
bmNoKSB7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOwor
ICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsK
KyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSB0bXAobV92YWx1ZSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIFRtcCBzdWNjZXNzQm9vbFJlc3VsdFRtcDsKKyAgICAgICAgaWYgKGlz
U3Ryb25nICYmICFpc0JyYW5jaCkKKyAgICAgICAgICAgIHN1Y2Nlc3NCb29sUmVzdWx0VG1wID0g
bV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN1Y2Nlc3NCb29s
UmVzdWx0VG1wID0gYm9vbFJlc3VsdFRtcDsKKworICAgICAgICBUbXAgZXhwZWN0ZWRWYWx1ZVRt
cCA9IHRtcChhdG9taWMtPmNoaWxkKDApKTsKKyAgICAgICAgVG1wIG5ld1ZhbHVlVG1wID0gdG1w
KGF0b21pYy0+Y2hpbGQoMSkpOworICAgICAgICAKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxv
Y2sgc3VjY2VzczsKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sgZmFpbHVyZTsKKyAgICAg
ICAgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gbV9ibG9ja1RvQmxvY2tb
bV9ibG9ja10tPnN1Y2Nlc3NvcihpbnZlcnQpOworICAgICAgICAgICAgZmFpbHVyZSA9IG1fYmxv
Y2tUb0Jsb2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoIWludmVydCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1v
dmVGb3JUeXBlKGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpKSwgaW1tT3JUbXAoYXRvbWljLT5jaGls
ZCgwKSksIG1fZWF4KTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUpIHsKKyAgICAg
ICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdHJvbmdDQVMsIHdpZHRo
KSwgbV9lYXgsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQo
cmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpKSwgbV9lYXgsIHZhbHVl
UmVzdWx0VG1wKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAg
ICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChCcmFuY2hBdG9taWNTdHJvbmdDQVMsIHdp
ZHRoKSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgsIG5l
d1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1ttX2Js
b2NrXS0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCBmYWlsdXJlKTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0cm9uZ0NB
Uywgd2lkdGgpLCBBcmc6OnN0YXR1c0NvbmQoaW52ZXJ0ID8gTWFjcm9Bc3NlbWJsZXI6OkZhaWx1
cmUgOiBNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCB0bXAoYXRvbWljLT5jaGlsZCgx
KSksIGFkZHJlc3MsIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOworICAgICAg
ICAvLyBXZSB3aXNoIHRvIGVtaXQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJsb2NrICNyZWxv
b3A6CisgICAgICAgIC8vICAgICBMb2FkTGluaworICAgICAgICAvLyAgICAgQnJhbmNoIE5vdEVx
dWFsCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogVGhlbjojZmFpbCwgRWxzZTogI3N0b3JlCisg
ICAgICAgIC8vIEJsb2NrICNzdG9yZToKKyAgICAgICAgLy8gICAgIFN0b3JlQ29uZAorICAgICAg
ICAvLyAgICAgWG9yICQxLCAlcmVzdWx0ICAgIDwtLS0gb25seSBpZiAhaW52ZXJ0CisgICAgICAg
IC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAgICAgICAgLy8g
QmxvY2sgI2ZhaWw6CisgICAgICAgIC8vICAgICBNb3ZlICRpbnZlcnQsICVyZXN1bHQKKyAgICAg
ICAgLy8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAgICAv
LyBCbG9jayAjZG9uZToKKyAgICAgICAgCisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogcmVsb29w
QmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0b3JlQmxvY2sg
PSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN1Y2Nlc3NCbG9jayA9IG51
bGxwdHI7CisgICAgICAgIGlmICghaXNCcmFuY2ggJiYgaXNTdHJvbmcpCisgICAgICAgICAgICBz
dWNjZXNzQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGZhaWxC
bG9jayA9IG51bGxwdHI7CisgICAgICAgIGlmICghaXNCcmFuY2gpCisgICAgICAgICAgICBmYWls
QmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0cm9uZ0ZhaWxC
bG9jazsKKyAgICAgICAgaWYgKGlzU3Ryb25nKQorICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2Nr
ID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sgY29tcGFyaXNvbkZh
aWw7CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIHdlYWtGYWlsOworICAgICAgICBpZiAo
aXNTdHJvbmcpIHsKKyAgICAgICAgICAgIGNvbXBhcmlzb25GYWlsID0gc3Ryb25nRmFpbEJsb2Nr
OworICAgICAgICAgICAgd2Vha0ZhaWwgPSByZWxvb3BCbG9jazsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGlmIChpc0JyYW5jaCkKKyAgICAgICAgICAgICAgICBjb21wYXJpc29uRmFp
bCA9IGZhaWx1cmU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY29tcGFyaXNv
bkZhaWwgPSBmYWlsQmxvY2s7CisgICAgICAgICAgICB3ZWFrRmFpbCA9IGZhaWx1cmU7CisgICAg
ICAgIH0KKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOworICAgICAgICBBaXI6
OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhiZWdpbkJsb2NrLCBk
b25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFpcjo6SnVtcCk7CisgICAgICAg
IGJlZ2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAgICAKKyAgICAg
ICAgcmVsb29wQmxvY2stPmFwcGVuZChsb2FkTGlua09wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNG
ZW5jZSgpKSwgbV92YWx1ZSwgYWRkcmVzcywgdmFsdWVSZXN1bHRUbXApOworICAgICAgICByZWxv
b3BCbG9jay0+YXBwZW5kKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEJyYW5jaCwgd2lkdGgp
LCBtX3ZhbHVlLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSwgdmFsdWVS
ZXN1bHRUbXAsIGV4cGVjdGVkVmFsdWVUbXApOworICAgICAgICByZWxvb3BCbG9jay0+c2V0U3Vj
Y2Vzc29ycyhjb21wYXJpc29uRmFpbCwgc3RvcmVCbG9jayk7CisgICAgICAgIAorICAgICAgICBz
dG9yZUJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNl
KCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZVRtcCwgYWRkcmVzcywgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAp
OworICAgICAgICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVu
ZChCcmFuY2hUZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVy
byksIGJvb2xSZXN1bHRUbXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAgICBzdG9yZUJs
b2NrLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIHdlYWtGYWlsKTsKKyAgICAgICAgICAgIGRvbmVC
bG9jay0+c3VjY2Vzc29ycygpLmNsZWFyKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
ZG9uZUJsb2NrLT5zaXplKCkpOworICAgICAgICAgICAgZG9uZUJsb2NrLT5hcHBlbmQoQWlyOjpP
b3BzLCBtX3ZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpc1N0cm9u
ZykgeworICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIG1f
dmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHN1Y2Nlc3NCb29sUmVz
dWx0VG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPnNl
dFN1Y2Nlc3NvcnMoc3VjY2Vzc0Jsb2NrLCByZWxvb3BCbG9jayk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5hcHBlbmQoTW92ZSwgbV92YWx1ZSwgQXJn
OjppbW0oIWludmVydCksIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgICAgIHN1Y2Nlc3NC
bG9jay0+YXBwZW5kKEFpcjo6SnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3VjY2Vz
c0Jsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmICghaW52ZXJ0KQorICAgICAgICAgICAgICAgICAgICBzdG9yZUJs
b2NrLT5hcHBlbmQoWG9yMzIsIG1fdmFsdWUsIEFyZzo6Yml0SW1tKDEpLCBib29sUmVzdWx0VG1w
LCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzdG9y
ZUJsb2NrLT5hcHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdG9y
ZUJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKE1vdmUsIG1fdmFsdWUsIEFyZzo6
aW1tKGludmVydCksIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgZmFpbEJsb2NrLT5hcHBl
bmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgIGZhaWxCbG9jay0+c2V0U3VjY2Vz
c29ycyhkb25lQmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNTdHJv
bmcpIHsKKyAgICAgICAgICAgIFRtcCB0bXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAg
ICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29kZSh3aWR0aCwgYXRvbWlj
LT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgdmFsdWVSZXN1bHRUbXAsIGFkZHJlc3MsIHRtcCk7Cisg
ICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIG1fdmFsdWUs
IEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHRtcCwgQXJnOjpiaXRJbW0oLTEp
KTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+c2V0U3VjY2Vzc29ycyhmYWlsQmxvY2ss
IHJlbG9vcEJsb2NrKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBib29sIGFwcGVuZFZv
aWRBdG9taWMoQWlyOjpPcGNvZGUgYXRvbWljT3Bjb2RlKQorICAgIHsKKyAgICAgICAgaWYgKG1f
dXNlQ291bnRzLm51bVVzZXMobV92YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIAorICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAgIAor
ICAgICAgICBpZiAoaXNWYWxpZEZvcm0oYXRvbWljT3Bjb2RlLCBBcmc6OkltbSwgYWRkcmVzcy5r
aW5kKCkpICYmIGltbShtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgIGFwcGVuZChh
dG9taWNPcGNvZGUsIGltbShtX3ZhbHVlLT5jaGlsZCgwKSksIGFkZHJlc3MpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1ZhbGlk
Rm9ybShhdG9taWNPcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAgICAg
ICAgIGFwcGVuZChhdG9taWNPcGNvZGUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGFkZHJlc3Mp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZEdlbmVyYWxBdG9taWMo
QWlyOjpPcGNvZGUgb3Bjb2RlKQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9
IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAKKyAgICAgICAgQXJnIGFkZHJl
c3MgPSBhZGRyKG1fdmFsdWUpOworICAgICAgICBUbXAgb2xkVmFsdWUgPSBtX2NvZGUubmV3VG1w
KEdQKTsKKyAgICAgICAgVG1wIG5ld1ZhbHVlID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAg
IAorICAgICAgICAvLyBXZSBuZWVkIGEgQ0FTIGxvb3Agb3IgYSBMTC9TQyBsb29wLiBVc2luZyBw
cmVwYXJlL2F0dGVtcHQgamFyZ29uLCB3ZSB3YW50OgorICAgICAgICAvLworICAgICAgICAvLyBC
bG9jayAjcmVsb29wOgorICAgICAgICAvLyAgICAgUHJlcGFyZQorICAgICAgICAvLyAgICAgb3Bj
b2RlCisgICAgICAgIC8vICAgICBBdHRlbXB0CisgICAgICAgIC8vICAgU3VjY2Vzc29yczogVGhl
bjojZG9uZSwgRWxzZTojcmVsb29wCisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAgICAv
LyAgICAgTW92ZSBvbGRWYWx1ZSwgcmVzdWx0CisgICAgICAgIAorICAgICAgICBhcHBlbmQocmVs
YXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgb2xkVmFsdWUsIHRtcChhdG9taWMpKTsK
KyAgICAgICAgCisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogcmVsb29wQmxvY2sgPSBuZXdCbG9j
aygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFpcjo6
QmFzaWNCbG9jayogZG9uZUJsb2NrOworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ssIGRv
bmVCbG9jayk7CisgICAgICAgIAorICAgICAgICBhcHBlbmQoQWlyOjpKdW1wKTsKKyAgICAgICAg
YmVnaW5CbG9jay0+c2V0U3VjY2Vzc29ycyhyZWxvb3BCbG9jayk7CisgICAgICAgIAorICAgICAg
ICBBaXI6Ok9wY29kZSBwcmVwYXJlT3Bjb2RlOworICAgICAgICBpZiAoaXNYODYoKSkgeworICAg
ICAgICAgICAgc3dpdGNoIChhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpIHsKKyAgICAgICAgICAg
IGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkOFNpZ25l
ZEV4dGVuZFRvMzI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdp
ZHRoMTY6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IExvYWQxNlNpZ25lZEV4dGVu
ZFRvMzI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoMzI6
CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IE1vdmUzMjsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgICAgICAgICBwcmVw
YXJlT3Bjb2RlID0gTW92ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7
CisgICAgICAgICAgICBvcGNvZGUgPSBsb2FkTGlua09wY29kZShhdG9taWMtPm9wZXJhdGlvbldp
ZHRoKCksIGF0b21pYy0+aGFzRmVuY2UoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmVsb29wQmxv
Y2stPmFwcGVuZChwcmVwYXJlT3Bjb2RlLCBtX3ZhbHVlLCBhZGRyZXNzLCBvbGRWYWx1ZSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAob3Bjb2RlICE9IEFpcjo6Tm9wKSB7CisgICAgICAgICAgICBp
ZiAoaW1tKGF0b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpJbW0s
IEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVu
ZChvcGNvZGUsIG1fdmFsdWUsIGltbShhdG9taWMtPmNoaWxkKDApKSwgb2xkVmFsdWUsIG5ld1Zh
bHVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAs
IEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVu
ZChvcGNvZGUsIG1fdmFsdWUsIHRtcChhdG9taWMtPmNoaWxkKDApKSwgb2xkVmFsdWUsIG5ld1Zh
bHVlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5h
cHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgbV92YWx1ZSwgb2xkVmFs
dWUsIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoaW1tKGF0b21pYy0+Y2hpbGQoMCkp
ICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIGltbShhdG9taWMt
PmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIHRtcChhdG9taWMt
PmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIGNhc09wY29kZSA9IE9Q
Q09ERV9GT1JfV0lEVEgoQnJhbmNoQXRvbWljU3Ryb25nQ0FTLCBhdG9taWMtPm9wZXJhdGlvbldp
ZHRoKCkpOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChyZWxheGVkTW92ZUZvclR5
cGUoYXRvbWljLT50eXBlKCkpLCBtX3ZhbHVlLCBvbGRWYWx1ZSwgbV9lYXgpOworICAgICAgICAg
ICAgcmVsb29wQmxvY2stPmFwcGVuZChjYXNPcGNvZGUsIG1fdmFsdWUsIEFyZzo6c3RhdHVzQ29u
ZChNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCBuZXdWYWx1ZSwgYWRkcmVzcyk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwor
ICAgICAgICAgICAgVG1wIGJvb2xSZXN1bHQgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAg
ICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKGF0b21pYy0+b3BlcmF0aW9u
V2lkdGgoKSwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgbmV3VmFsdWUsIGFkZHJlc3Ms
IGJvb2xSZXN1bHQpOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0
MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIGJvb2xSZXN1
bHQsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgIH0KKyAgICAgICAgcmVsb29wQmxvY2stPnNl
dFN1Y2Nlc3NvcnMoZG9uZUJsb2NrLCByZWxvb3BCbG9jayk7CisgICAgfQorICAgIAogICAgIHZv
aWQgbG93ZXIoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewpA
QCAtMTk3MSwzMCArMjM3MSw1MCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBMb2FkOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1f
dmFsdWUsIG1vdmVGb3JUeXBlKG1fdmFsdWUtPnR5cGUoKSksIG1fdmFsdWUsIGFkZHIobV92YWx1
ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IG1f
dmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2Rl
ID0gQWlyOjpPb3BzOworICAgICAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAg
ICAgICAgICAgICAgIHN3aXRjaCAobWVtb3J5LT50eXBlKCkpIHsKKyAgICAgICAgICAgICAgICBj
YXNlIEludDMyOgorICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNxMzI7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgSW50NjQ6CisgICAg
ICAgICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3E2NDsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgb3Bj
b2RlID0gbW92ZUZvclR5cGUobWVtb3J5LT50eXBlKCkpOworICAgICAgICAgICAgYXBwZW5kKHRy
YXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcCht
X3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBMb2FkOFM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3Qo
bV92YWx1ZSwgTG9hZDhTaWduZWRFeHRlbmRUbzMyLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0
bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUt
PmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcThTaWduZWRFeHRlbmRUbzMy
IDogTG9hZDhTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5z
dChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkOFo6
IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDgsIG1fdmFs
dWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2Fk
QWNxOCA6IExvYWQ4OworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBv
cGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZTOiB7Ci0gICAgICAg
ICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIs
IG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWly
OjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkg
PyBMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIDogTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMjsKKyAg
ICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBh
ZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2WjogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBw
aW5nSW5zdChtX3ZhbHVlLCBMb2FkMTYsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3Zh
bHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVt
b3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTYgOiBMb2FkMTY7CisgICAgICAgICAg
ICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQor
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAgICBpZiAodHJ5QXBw
ZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA5Miw3ICsyNTEyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0NoaWxsKCkpCiAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKICAgICAgICAgICAgIGlmIChpc0ludCht
X3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAgICBsb3dlclg4NkRp
dihEaXYpOworICAgICAgICAgICAgICAgIGFwcGVuZFg4NkRpdihEaXYpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVCghaXNYODYoKSB8
fCBpc0Zsb2F0KG1fdmFsdWUtPnR5cGUoKSkpOwpAQCAtMjEwMyw3ICsyNTIzLDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICBjYXNlIFVEaXY6IHsKICAgICAgICAgICAgIGlmIChpc0ludChtX3ZhbHVl
LT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAgICBsb3dlclg4NlVEaXYoVURp
dik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2VURpdihVRGl2KTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTIxMTcsMTMgKzI1MzcsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBNb2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzWDg2
KCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdmFsdWUtPmlzQ2hpbGwoKSk7Ci0g
ICAgICAgICAgICBsb3dlclg4NkRpdihNb2QpOworICAgICAgICAgICAgYXBwZW5kWDg2RGl2KE1v
ZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFVNb2Q6
IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzWDg2KCkpOwotICAgICAgICAgICAgbG93
ZXJYODZVRGl2KFVNb2QpOworICAgICAgICAgICAgYXBwZW5kWDg2VURpdihVTW9kKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMTYyLDEwICsyNTgyLDI4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxOb3QzMiwgTm90NjQ+KG1fdmFsdWUtPmNo
aWxkKDApKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIFRoaXMgcGF0dGVybiBpcyBzdXBlciB1c2VmdWwgb24gYm90
aCB4ODYgYW5kIEFSTTY0LCBzaW5jZSB0aGUgaW52ZXJzaW9uIG9mIHRoZSBDQVMgcmVzdWx0Cisg
ICAgICAgICAgICAvLyBjYW4gYmUgZG9uZSB3aXRoIHplcm8gY29zdCBvbiB4ODYgKGp1c3QgZmxp
cCB0aGUgc2V0IGZyb20gRSB0byBORSkgYW5kIGl0J3MgYSBwcm9ncmVzc2lvbgorICAgICAgICAg
ICAgLy8gb24gQVJNNjQgKHNpbmNlIFNUWCByZXR1cm5zIDAgb24gc3VjY2Vzcywgc28gb3JkaW5h
cmlseSB3ZSBoYXZlIHRvIGZsaXAgaXQpLgorICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxk
KDEpLT5pc0ludCgxKQorICAgICAgICAgICAgICAgICYmIGlzQXRvbWljQ0FTKG1fdmFsdWUtPmNo
aWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAmJiBjYW5CZUludGVybmFsKG1fdmFs
dWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUt
PmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZS0+Y2hpbGQoMCks
IHRydWUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAogICAgICAgICAgICAgYXBwZW5kQmluT3A8WG9yMzIsIFhvcjY0LCBYb3JEb3VibGUsIFhv
ckZsb2F0LCBDb21tdXRhdGl2ZT4oCiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCks
IG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpc0FSTTY0KCkpOworICAgICAgICAgICAgYXBwZW5kVW5PcDxEZXBlbmQzMiwgRGVwZW5k
NjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
CiAgICAgICAgIGNhc2UgU2hsOiB7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSkt
PmlzSW50MzIoMSkpIHsKQEAgLTIyNjYsNyArMjcwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZVRv
U3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwg
YWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjI4
Nyw3ICsyNzI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFp
cjo6U3RvcmU4LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBw
ZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMjMwOCw3ICsyNzQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGFwcGVuZFN0b3JlKEFpcjo6U3RvcmUxNiwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUp
KTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI0MTYsNyArMjg1NCwyMiBAQCBwcml2
YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBFcXVhbDoKLSAgICAgICAgY2FzZSBOb3RF
cXVhbDoKKyAgICAgICAgY2FzZSBOb3RFcXVhbDogeworICAgICAgICAgICAgaWYgKG1fdmFsdWUt
PmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMKKyAgICAgICAgICAgICAgICAm
JiBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0gbV92YWx1ZS0+Y2hpbGQoMSkKKyAgICAg
ICAgICAgICAgICAmJiBjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAg
ICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMobV92YWx1ZS0+Y2hpbGQoMCktPmNo
aWxkKDEpKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhtX3Zh
bHVlLT5jaGlsZCgxKSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNvbW1p
dEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRDQVMo
bV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPm9wY29kZSgpID09IE5vdEVxdWFsKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoY3JlYXRlQ29tcGFyZShtX3ZhbHVlKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNl
IExlc3NUaGFuOgogICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuOgogICAgICAgICBjYXNlIExlc3NF
cXVhbDoKQEAgLTI3MjcsNiArMzE4MCw0MCBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBCcmFuY2g6IHsKKyAgICAgICAgICAgIGlmIChjYW5CZUludGVybmFsKG1fdmFsdWUt
PmNoaWxkKDApKSkgeworICAgICAgICAgICAgICAgIFZhbHVlKiBicmFuY2hDaGlsZCA9IG1fdmFs
dWUtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIHN3aXRjaCAoYnJhbmNoQ2hpbGQtPm9wY29k
ZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAg
ICAgICAgICBjb21taXRJbnRlcm5hbChicmFuY2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAg
IGFwcGVuZENBUyhicmFuY2hDaGlsZCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ry
b25nQ0FTOgorICAgICAgICAgICAgICAgICAgICAvLyBBIGJyYW5jaCBpcyBhIGNvbXBhcmlzb24g
dG8gemVyby4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+
aXNJbnQoMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5j
aENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZCwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIGNhc2UgRXF1YWw6CisgICAgICAgICAgICAgICAgY2FzZSBOb3RFcXVh
bDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+b3Bjb2Rl
KCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBjYW5CZUlu
dGVybmFsKGJyYW5jaENoaWxkLT5jaGlsZCgwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYm
IGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0gYnJhbmNoQ2hpbGQtPmNoaWxkKDEp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFuY2hDaGlsZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFuY2hDaGlsZC0+Y2hp
bGQoMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLT5j
aGlsZCgwKSwgYnJhbmNoQ2hpbGQtPm9wY29kZSgpID09IE5vdEVxdWFsKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBl
bmQoY3JlYXRlQnJhbmNoKG1fdmFsdWUtPmNoaWxkKDApKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTI3ODQsNyArMzI3MSw4MSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YXBwZW5kKEFpcjo6RW50cnlTd2l0Y2gpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICBjYXNl
IEF0b21pY1N0cm9uZ0NBUzogeworICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUsIGZhbHNl
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgQXRvbWljWGNoZ0FkZDogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9
IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRB
dG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNBZGQsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgo
KSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
QXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hjaGdBZGQsIGF0b21pYy0+b3BlcmF0aW9uV2lk
dGgoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgYWRk
cmVzcy5raW5kKCkpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlw
ZShhdG9taWMtPnR5cGUoKSksIHRtcChhdG9taWMtPmNoaWxkKDApKSwgdG1wKGF0b21pYykpOwor
ICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChhdG9taWMpLCBhZGRyZXNzKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFwcGVu
ZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoQWRkLCBhdG9taWMtPm9w
ZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ1N1YjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21p
YyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZv
aWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdWIsIGF0b21pYy0+b3BlcmF0aW9uV2lk
dGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChTdWIsIGF0
b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOiB7CisgICAgICAgICAg
ICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAg
ICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY0FuZCwg
YXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FO
T05JQ0FMX1dJRFRIKEFuZCwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hj
aGdPcjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0
b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZP
Ul9XSURUSChBdG9taWNPciwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRv
bWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKE9yLCBhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ1hvcjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21p
YyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZv
aWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYb3IsIGF0b21pYy0+b3BlcmF0aW9uV2lk
dGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChYb3IsIGF0
b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgICAgICBB
dG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAg
ICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnLCBhdG9t
aWMtPm9wZXJhdGlvbldpZHRoKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29k
ZSwgQXJnOjpUbXAsIGFkZHJlc3Mua2luZCgpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChy
ZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSks
IHRtcChhdG9taWMpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWlj
KSwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FO
T05JQ0FMX1dJRFRIKFhvciwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI3OTIsNjQgKzMzNTMsNyBAQCBwcml2YXRl
OgogICAgICAgICBkYXRhTG9nKCJGQVRBTDogY291bGQgbm90IGxvd2VyICIsIGRlZXBEdW1wKG1f
cHJvY2VkdXJlLCBtX3ZhbHVlKSwgIlxuIik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQotCi0gICAgdm9pZCBsb3dlclg4NkRpdihCMzo6T3Bjb2RlIG9wKQot
ICAgIHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1w
KFg4NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6
OmVkeCk7Ci0KLSAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKLSAgICAg
ICAgQWlyOjpPcGNvZGUgZGl2OwotICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgewot
ICAgICAgICBjYXNlIEludDMyOgotICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4
NkNvbnZlcnRUb0RvdWJsZVdvcmQzMjsKLSAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50NjQ6Ci0gICAgICAgICAgICBjb252ZXJ0
VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvUXVhZFdvcmQ2NDsKLSAgICAgICAgICAgIGRpdiA9
IFg4NkRpdjY0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOwotICAg
ICAgICBYODZSZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gRGl2ID8gWDg2UmVn
aXN0ZXJzOjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwg
dG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0Rv
dWJsZVdvcmQsIGVheCwgZWR4KTsKLSAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcCht
X3ZhbHVlLT5jaGlsZCgxKSkpOwotICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRt
cChtX3ZhbHVlKSk7Ci0KLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAg
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlmCi0gICAgfQotCi0gICAgdm9pZCBs
b3dlclg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4
Nl82NCkKLSAgICAgICAgVG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAg
IFRtcCBlZHggPSBUbXAoWDg2UmVnaXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2Rl
IGRpdiA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsK
LQotICAgICAgICBBU1NFUlQob3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKLSAgICAgICAgWDg2
UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09IFVEaXYgPyBYODZSZWdpc3RlcnM6
OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92
YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBlbmQoWG9yNjQsIGVkeCwgZWR4KTsK
LSAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOwot
ICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7Ci0jZWxzZQot
ICAgICAgICBVTlVTRURfUEFSQU0ob3ApOwotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKLSNlbmRpZgotICAgIH0KLQorICAgIAogICAgIEluZGV4U2V0PFZhbHVlPiBtX2xvY2tl
ZDsgLy8gVGhlc2UgYXJlIHZhbHVlcyB0aGF0IHdpbGwgaGF2ZSBubyBUbXAgaW4gQWlyLgogICAg
IEluZGV4TWFwPFZhbHVlLCBUbXA+IG1fdmFsdWVUb1RtcDsgLy8gVGhlc2UgYXJlIHZhbHVlcyB0
aGF0IG11c3QgaGF2ZSBhIFRtcCBpbiBBaXIuIFdlIHNheSB0aGF0IGEgVmFsdWUqIHdpdGggYSBu
b24tbnVsbCBUbXAgaXMgInBpbm5lZCIuCiAgICAgSW5kZXhNYXA8VmFsdWUsIFRtcD4gbV9waGlU
b1RtcDsgLy8gRWFjaCBQaGkgZ2V0cyBpdHMgb3duIFRtcC4KQEAgLTI4NjQsNyArMzM2OCw3IEBA
IHByaXZhdGU6CiAKICAgICBWZWN0b3I8VmVjdG9yPEluc3QsIDQ+PiBtX2luc3RzOwogICAgIFZl
Y3RvcjxJbnN0PiBtX3Byb2xvZ3VlOwotCisgICAgCiAgICAgQjM6OkJhc2ljQmxvY2sqIG1fYmxv
Y2s7CiAgICAgYm9vbCBtX2lzUmFyZTsKICAgICB1bnNpZ25lZCBtX2luZGV4OwpAQCAtMjg3NSw2
ICszMzc5LDEyIEBAIHByaXZhdGU6CiAKICAgICBQcm9jZWR1cmUmIG1fcHJvY2VkdXJlOwogICAg
IENvZGUmIG1fY29kZTsKKworICAgIEFpcjo6QmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2Vy
dGlvblNldDsKKworICAgIFRtcCBtX2VheDsKKyAgICBUbXAgbV9lY3g7CisgICAgVG1wIG1fZWR4
OwogfTsKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDMwICszNCw0OCBAQCBNZW1vcnlWYWx1ZTo6fk1lbW9yeVZhbHVlKCkKIHsKIH0KIAorVHlwZSBN
ZW1vcnlWYWx1ZTo6YWNjZXNzVHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzTG9hZCgpKQorICAg
ICAgICByZXR1cm4gdHlwZSgpOworICAgIC8vIFRoaXMgaGFwcGVucyB0byB3b3JrIGZvciBhdG9t
aWNzLCB0b28uIFRoYXQncyB3aHkgQXRvbWljVmFsdWUgZG9lcyBub3QgbmVlZCB0byBvdmVycmlk
ZSB0aGlzLgorICAgIHJldHVybiBjaGlsZCgwKS0+dHlwZSgpOworfQorCitCYW5rIE1lbW9yeVZh
bHVlOjphY2Nlc3NCYW5rKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYmFua0ZvclR5cGUoYWNjZXNz
VHlwZSgpKTsKK30KKwogc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0
CiB7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkpOworfQorCitXaWR0aCBNZW1vcnlW
YWx1ZTo6bG9hZFN0b3JlV2lkdGgoKSBjb25zdAorewogICAgIHN3aXRjaCAob3Bjb2RlKCkpIHsK
ICAgICBjYXNlIExvYWQ4WjoKICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIFN0b3JlODoKLSAg
ICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBXaWR0aDg7CiAgICAgY2FzZSBMb2FkMTZa
OgogICAgIGNhc2UgTG9hZDE2UzoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIHJldHVybiAy
OworICAgICAgICByZXR1cm4gV2lkdGgxNjsKICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJldHVy
biBzaXplb2ZUeXBlKHR5cGUoKSk7CisgICAgICAgIHJldHVybiB3aWR0aEZvclR5cGUodHlwZSgp
KTsKICAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZShjaGlsZCgwKS0+
dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZShjaGlsZCgwKS0+dHlwZSgpKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICB9CiB9CiAKIFdpZHRo
IE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdpZHRoRm9y
Qnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJuIGxvYWRTdG9yZVdpZHRoKCk7CiB9
CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02NSw4ICs4MywxMSBAQCB2b2lkIE1lbW9yeVZhbHVlOjpk
dW1wTWV0YShDb21tYVByaW50ZXImCiAgICAgaWYgKG1fb2Zmc2V0KQogICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJvZmZzZXQgPSAiLCBtX29mZnNldCk7CiAgICAgaWYgKChpc0xvYWQoKSAmJiBl
ZmZlY3RzKCkucmVhZHMgIT0gcmFuZ2UoKSkKLSAgICAgICAgfHwgKGlzU3RvcmUoKSAmJiBlZmZl
Y3RzKCkud3JpdGVzICE9IHJhbmdlKCkpKQorICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVmZmVj
dHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkKKyAgICAgICAgfHwgZmVuY2VSYW5nZSgpKQogICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJyYW5nZSA9ICIsIHJhbmdlKCkpOworICAgIGlmIChmZW5jZVJh
bmdlKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgImZlbmNlUmFuZ2UgPSAiLCBmZW5jZVJh
bmdlKCkpOwogfQogCiBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CkBAIC03
NCw2ICs5NSw2MiBAQCBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAgICAg
cmV0dXJuIG5ldyBNZW1vcnlWYWx1ZSgqdGhpcyk7CiB9CiAKKy8vIFVzZSB0aGlzIGZvcm0gZm9y
IExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBo
YXZlIGEgc3VmZml4IHRoYXQKKy8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCitNZW1v
cnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4s
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFu
Z2UgZmVuY2VSYW5nZSkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9y
aWdpbiwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1fcmFuZ2UocmFu
Z2UpCisgICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKK3sKKyAgICBpZiAoIUFTU0VSVF9E
SVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2Fz
ZSBMb2FkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAg
ICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExvYWQx
NlM6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3RvcmUxNjoKKyAgICAgICAg
Y2FzZSBTdG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMg
d2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFs
dWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZz
ZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1vcnlW
YWx1ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJh
bmdlKQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2lu
ZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6
CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVz
LgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFs
dWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5n
ZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5k
LCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQor
ICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQorewor
ICAgIEFTU0VSVChCMzo6aXNTdG9yZShraW5kLm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNDggKzI3LDE3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNCYW5r
LmgiCiAjaW5jbHVkZSAiQjNIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxv
dyBmZW5jZWQgbWVtb3J5IGFjY2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVt
b3J5VmFsdWUgOiBwdWJsaWMgVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2Vw
dHMoS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0g
ICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBM
b2FkMTZaOgotICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAg
ICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9y
ZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNT
dG9yZShLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsK
LSAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2Fz
ZSBTdG9yZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJv
b2wgaXNMb2FkKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQp
ICYmICFpc1N0b3JlKGtpbmQpOworICAgICAgICByZXR1cm4gaXNNZW1vcnlBY2Nlc3Moa2luZC5v
cGNvZGUoKSk7CiAgICAgfQogCiAgICAgfk1lbW9yeVZhbHVlKCk7CkBAIC03OCw3NiArNDcsNTgg
QEAgcHVibGljOgogCiAgICAgY29uc3QgSGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFuZ2U7IH0KICAgICB2b2lkIHNldFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsg
bV9yYW5nZSA9IHJhbmdlOyB9CisgICAgCisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgcmFu
Z2UuCisgICAgY29uc3QgSGVhcFJhbmdlJiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJh
bmdlKCk7IH0KKyAgICB2b2lkIHNldEFjY2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2Up
IHsgc2V0UmFuZ2UocmFuZ2UpOyB9CisgICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBmZW5jZVJh
bmdlKCkgY29uc3QgeyByZXR1cm4gbV9mZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRGZW5jZVJh
bmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0KKwor
ICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc1N0b3JlKG9wY29kZSgpKTsg
fQorICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1cm4gQjM6OmlzTG9hZChvcGNvZGUoKSk7
IH0KIAotICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBWb2lkOyB9
Ci0gICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgIT0gVm9pZDsgfQorICAg
IGJvb2wgaGFzRmVuY2UoKSBjb25zdCB7IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsgfQogCisgICAg
VHlwZSBhY2Nlc3NUeXBlKCkgY29uc3Q7CisgICAgQmFuayBhY2Nlc3NCYW5rKCkgY29uc3Q7CiAg
ICAgc2l6ZV90IGFjY2Vzc0J5dGVTaXplKCkgY29uc3Q7Ci0gICAgV2lkdGggYWNjZXNzV2lkdGgo
KSBjb25zdDsKKyAgICAKKyAgICAvLyBTbGlnaHRseSBmYXN0ZXIgdmVyc2lvbiBvZiBhY2Nlc3NX
aWR0aCwgaWYgeW91IGtub3cgdGhhdCB5b3UncmUgd29ya2luZyB3aXRoIGEgbG9hZCBvciBzdG9y
ZS4KKyAgICBXaWR0aCBsb2FkU3RvcmVXaWR0aCgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwg
V2lkdGggYWNjZXNzV2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1l
dGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29k
ZVRhZywgS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zmc2V0
LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlLCBBcmd1bWVudHMuLi4gYXJn
dW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdp
biwgYXJndW1lbnRzLi4uKQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBt
X3JhbmdlKHJhbmdlKQorICAgICAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQorICAgIHsK
KyAgICB9CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0KKyAg
ICAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhT
LCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CiAgICAgLy8gZGVz
Y3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5
cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0g
MCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBv
aW50ZXIpCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVh
cFJhbmdlOjp0b3AoKSkKLSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTG9h
ZDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZDhaOgotICAg
ICAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAg
ICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAg
ICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAg
ICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBU
eXBlLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5n
ZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJh
bmdlKCkpOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVy
biB0eXBlIGlzIGltcGxpZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3Jp
Z2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IE1lbW9y
eVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKLSAgICB7Ci0gICAg
fQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qg
b2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdl
IGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBz
dG9yZXMuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSog
dmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFs
dWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKLSAg
ICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRv
cCgpKQotICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAg
IHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAg
ICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUq
IHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFu
Z2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgp
KTsKKyAgICAKICAgICBpbnQzMl90IG1fb2Zmc2V0IHsgMCB9OwotICAgIEhlYXBSYW5nZSBtX3Jh
bmdlOworICAgIEhlYXBSYW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhl
YXBSYW5nZSBtX2ZlbmNlUmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFp
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFp
dHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVU
cmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShCM19KSVQpCisKKyNpbmNsdWRlICJCM0JhbmsuaCIKKyNpbmNsdWRlICJCM1R5cGUuaCIKKyNp
bmNsdWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IE5hdGl2ZVRyYWl0czsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgTmF0aXZlVHJhaXRzPGludDhfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBH
UDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDg7CisgICAgc3RhdGljIGNv
bnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJh
aXRzPHVpbnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3Rh
dGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg4OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5
cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxpbnQxNl90
PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBX
aWR0aCB3aWR0aCA9IFdpZHRoMTY7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMy
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQxNl90PiB7CisgICAg
c3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0
aCA9IFdpZHRoMTY7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGludDMyX3Q+IHsKKyAgICBzdGF0aWMgY29u
c3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgz
MjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDMyX3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBi
YW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAgICBz
dGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBO
YXRpdmVUcmFpdHM8aW50NjRfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsK
KyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25z
dCBUeXBlIHR5cGUgPSBJbnQ2NDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0
czx1aW50NjRfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0
aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5
cGUgPSBJbnQ2NDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxmbG9hdD4g
eworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBGUDsKKyAgICBzdGF0aWMgY29uc3QgV2lk
dGggd2lkdGggPSBXaWR0aDMyOworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBGbG9hdDsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxkb3VibGU+IHsKKyAgICBzdGF0
aWMgY29uc3QgQmFuayBiYW5rID0gRlA7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0g
V2lkdGg2NDsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gRG91YmxlOworfTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02OCw2ICs2OCwyMyBAQCBzdGQ6Om9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJlKE9w
CiAgICAgfQogfQogCitPcGNvZGUgc3RvcmVPcGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkK
K3sKKyAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICBjYXNlIEdQOgorICAgICAgICBzd2l0Y2ggKHdp
ZHRoKSB7CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlODsK
KyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlMTY7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgICAgIH0KKyAgICBj
YXNlIEZQOgorICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0yNjMsNiArMjgwLDMzIEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGMKICAgICBjYXNlIFN0b3JlOgogICAg
ICAgICBvdXQucHJpbnQoIlN0b3JlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21p
Y1dlYWtDQVM6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljV2Vha0NBUyIpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIG91dC5wcmludCgiQXRv
bWljU3Ryb25nQ0FTIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6
CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ0FkZCIpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdBbmQi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICBvdXQu
cHJpbnQoIkF0b21pY1hjaGdPciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNY
Y2hnU3ViOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdTdWIiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNY
Y2hnWG9yIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAg
IG91dC5wcmludCgiQXRvbWljWGNoZyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEZXBl
bmQ6CisgICAgICAgIG91dC5wcmludCgiRGVwZW5kIik7CisgICAgICAgIHJldHVybjsKICAgICBj
YXNlIFdhc21BZGRyZXNzOgogICAgICAgICBvdXQucHJpbnQoIldhc21BZGRyZXNzIik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lv
biAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVk
ZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtODIsNyArODMsNiBAQCBl
bnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIE1vZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBhcyB0
byB3aGF0IHdpbGwgaGFwcGVuIHdoZW4geW91IGV4ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEgYW5k
IHglMC4KICAgICBVTW9kLAogCi0KICAgICAvLyBQb2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90ZSB0
aGF0IHdlIG9ubHkgbmVlZCB0aGlzIGZvciBmbG9hdGluZyBwb2ludCwgc2luY2UgaW50ZWdlciBu
ZWdhdGlvbgogICAgIC8vIGlzIGV4YWN0bHkgbGlrZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mgbm90
IHRydWUgZm9yIGZsb2F0aW5nIHBvaW50LiBTdWIoMCwgMCkgaXMgMCwgd2hpbGUKICAgICAvLyBO
ZWcoMCkgaXMgLTAuIEFsc28sIHdlIGNhbm9uaWNhbGl6ZSBTdWIoMCwgeCkgaW50byBOZWcoeCkg
aW4gY2FzZSBvZiBpbnRlZ2Vycy4KQEAgLTE2Miw2ICsxNjIsMTA3IEBAIGVudW0gT3Bjb2RlIDog
aW50MTZfdCB7CiAgICAgU3RvcmUxNiwKICAgICAvLyBUaGlzIGlzIGEgcG9seW1vcnBoaWMgc3Rv
cmUgZm9yIEludDMyLCBJbnQ2NCwgRmxvYXQsIGFuZCBEb3VibGUuCiAgICAgU3RvcmUsCisgICAg
CisgICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIGEgYm9vbGVhbi4g
TWF5IGNob29zZSB0byBkbyBub3RoaW5nIGFuZCByZXR1cm4gZmFsc2UuIFlvdSBjYW4KKyAgICAv
LyB1c3VhbGx5IGFzc3VtZSB0aGF0IHRoaXMgaXMgZmFzdGVyIGFuZCByZXN1bHRzIGluIGxlc3Mg
Y29kZSB0aGFuIEF0b21pY1N0cm9uZ0NBUywgdGhvdWdoIHRoYXQncworICAgIC8vIG5vdCBuZWNl
c3NhcmlseSB0cnVlIG9uIEludGVsLCBpZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gZG9lcyBpdHMg
am9iLiBJbWFnaW5lIHRoYXQgdGhpcyBvcGNvZGUgaXMKKyAgICAvLyBhcyBpZiB5b3UgZGlkIHRo
aXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
Ly8gYm9vbCBBdG9taWNXZWFrQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRy
KQorICAgIC8vIHsKKyAgICAvLyAgICAgaWYgKCFyYW5kKCkpCisgICAgLy8gICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIFJlYWwgd29ybGQgZXhhbXBsZSBvZiB0aGlzOiBjb250ZXh0IHN3aXRjaCBv
biBBUk0gd2hpbGUgZG9pbmcgQ0FTLgorICAgIC8vICAgICBpZiAoKnB0ciAhPSBleHBlY3RlZFZh
bHVlKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vICAgICAqcHRyID0gbmV3
VmFsdWU7CisgICAgLy8gICAgIHJldHVybiB0cnVlOworICAgIC8vIH0KKyAgICAvLworICAgIC8v
IE5vdGUgdGhhdCBhbGwgYXRvbWljcyBwdXQgdGhlIHBvaW50ZXIgbGFzdCB0byBiZSBjb25zaXN0
ZW50IHdpdGggaG93IGxvYWRzIGFuZCBzdG9yZXMgd29yay4gVGhpcworICAgIC8vIGlzIGEgZ29v
ZnkgdHJhZGl0aW9uLCBidXQgaXQncyBoYXJtbGVzcywgYW5kIGJldHRlciB0aGFuIGJlaW5nIGlu
Y29uc2lzdGVudC4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCB3ZWFrIENBUyBoYXMgbm8gZmVu
Y2luZyBndWFyYW50ZWVzIHdoZW4gaXQgZmFpbHMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93
aW5nCisgICAgLy8gdHJhbnNmb3JtYXRpb24gaXMgYWx3YXlzIHZhbGlkOgorICAgIC8vCisgICAg
Ly8gQmVmb3JlOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhl
eHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nl
c3MsIEVsc2U6I2ZhaWwKKyAgICAvLworICAgIC8vIEFmdGVyOgorICAgIC8vCisgICAgLy8gICAg
ICAgICBCcmFuY2goRXF1YWwoTG9hZChwdHIpLCBleHBlY3RlZCkpCisgICAgLy8gICAgICAgU3Vj
Y2Vzc29yczogVGhlbjojYXR0ZW1wdCwgRWxzZTojZmFpbAorICAgIC8vICAgICBCQiNhdHRlbXB0
OgorICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRy
KSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisg
ICAgLy8KKyAgICAvLyBCb3RoIGtpbmRzIG9mIENBUyBmb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMg
KFdpZHRoOCBhbmQgV2lkdGgxNikgaWdub3JlIHRoZSBpcnJlbGV2YW50IGJpdHMgb2YgdGhlCisg
ICAgLy8gaW5wdXQuCisgICAgQXRvbWljV2Vha0NBUywKKyAgICAKKyAgICAvLyBBdG9taWMgY29t
cGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2ZSB0
aGUgbm9uZGV0ZXJtaW5pc20gb2YgV2Vha0NBUy4KKyAgICAvLyBUaGlzIGlzIGEgYml0IG1vcmUg
Y29kZSBhbmQgYSBiaXQgc2xvd2VyIGluIHNvbWUgY2FzZXMsIHRob3VnaCBub3QgYnkgYSBsb3Qu
IEltYWdpbmUgdGhhdCB0aGlzCisgICAgLy8gb3Bjb2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhpcyBh
dG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBU
IEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAg
ICAvLyB7CisgICAgLy8gICAgIFQgb2xkVmFsdWUgPSAqcHRyOworICAgIC8vICAgICBpZiAob2xk
VmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgICpwdHIgPSBuZXdWYWx1ZTsK
KyAgICAvLyAgICAgcmV0dXJuIG9sZFZhbHVlCisgICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90
ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5kIEF0b21pY1N0cm9uZ0NBUyBzb3J0IG9mIGhhdmUgdGhp
cyBraW5kIG9mIGVxdWl2YWxlbmNlOgorICAgIC8vCisgICAgLy8gQXRvbWljV2Vha0NBUyhAZXhw
LCBAbmV3LCBAcHRyKSA9PSBFcXVhbChBdG9taWNTdHJvbmdDQVMoQGV4cCwgQG5ldywgQHB0ciks
IEBleHApCisgICAgLy8KKyAgICAvLyBBc3N1bWluZyB0aGF0IHRoZSBXZWFrQ0FTIGRvZXMgbm90
IHNwdXJpb3VzbHkgZmFpbCwgb2YgY291cnNlLgorICAgIEF0b21pY1N0cm9uZ0NBUywKKyAgICAK
KyAgICAvLyBBdG9taWNhbGx5IF9fXyBhIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRoZSBv
bGQgdmFsdWUuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGdf
X18oQG9wZXJhbmQsIEBwdHIpCisgICAgLy8KKyAgICAvLyBGb3Igbm9uLWNhbm9uaWNhbCB3aWR0
aHMgKFdpZHRoOCBhbmQgV2lkdGgxNiksIHRoZXNlIHJldHVybiBzaWduLWV4dGVuZGVkIHJlc3Vs
dHMgYW5kIGlnbm9yZSB0aGUKKyAgICAvLyBpcnJlbGV2YW50IGJpdHMgb2YgdGhlaXIgaW5wdXRz
LgorICAgIEF0b21pY1hjaGdBZGQsCisgICAgQXRvbWljWGNoZ0FuZCwKKyAgICBBdG9taWNYY2hn
T3IsCisgICAgQXRvbWljWGNoZ1N1YiwKKyAgICBBdG9taWNYY2hnWG9yLAorICAgIAorICAgIC8v
IEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBBdG9taWNYY2hnTmVnIGFuZCBBdG9taWNYY2hn
Tm90LgorICAgIAorICAgIC8vIEF0b21pY2FsbHkgZXhjaGFuZ2UgYSB2YWx1ZSB3aXRoIGEgbWVt
b3J5IGxvY2F0aW9uLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNY
Y2hnKEBuZXdWYWx1ZSwgQHB0cikKKyAgICBBdG9taWNYY2hnLAorICAgIAorICAgIC8vIEludHJv
ZHVjZSBhbiBpbnZpc2libGUgZGVwZW5kZW5jeSBmb3IgYmxvY2tpbmcgbW90aW9uIG9mIGxvYWRz
IHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAcmVz
dWx0ID0gRGVwZW5kKEBwaGFudG9tKQorICAgIC8vCisgICAgLy8gVGhpcyBpcyBldmVudHVhbGx5
IGNvZGVnZW5lcmF0ZWQgdG8gaGF2ZSBsb2NhbCBzZW1hbnRpY3MgYXMgaWYgd2UgZGlkOgorICAg
IC8vCisgICAgLy8gQHJlc3VsdCA9ICQwCisgICAgLy8KKyAgICAvLyBCdXQgaXQgZW5zdXJlcyB0
aGF0IHRoZSB1c2VycyBvZiBAcmVzdWx0IGNhbm5vdCBleGVjdXRlIHVudGlsIEBwaGFudG9tIGlz
IGNvbXB1dGVkLgorICAgIC8vCisgICAgLy8gVGhlIGNvbXBpbGVyIGlzIG5vdCBhbGxvd2VkIHRv
IHJlYXNvbiBhYm91dCB0aGUgZmFjdCB0aGF0IERlcGVuZCBjb2RlZ2VuZXJhdGVzIHRoaXMgd2F5
LiBBbnkga2luZAorICAgIC8vIG9mIHRyYW5zZm9ybWF0aW9uIG9yIGFuYWx5c2lzIHRoYXQgcmVs
aWVzIG9uIHRoZSBpbnNpZ2h0IHRoYXQgRGVwZW5kIGlzIHJlYWxseSB6ZXJvIGlzIHVuc291bmQs
CisgICAgLy8gYmVjYXVzZSBpdCB1bmxvY2tzIHJlb3JkZXJpbmcgb2YgdXNlcnMgb2YgQHJlc3Vs
dCBhbmQgQHBoYW50b20uCisgICAgLy8KKyAgICAvLyBPbiBYODYsIHRoaXMgaXMgbG93ZXJlZCB0
byBhIGxvYWQtbG9hZCBmZW5jZSBhbmQgQHJlc3VsdCB1c2VzIEBwaGFudG9tIGRpcmVjdGx5Lgor
ICAgIC8vCisgICAgLy8gT24gQVJNLCB0aGlzIGlzIGxvd2VyZWQgYXMgaWYgbGlrZToKKyAgICAv
LworICAgIC8vIEByZXN1bHQgPSBCaXRYb3IoQHBoYW50b20sIEBwaGFudG9tKQorICAgIC8vCisg
ICAgLy8gRXhjZXB0IHRoYXQgdGhlIGNvbXBpbGVyIG5ldmVyIGdldHMgYW4gb3Bwb3J0dW5pdHkg
dG8gc2ltcGxpZnkgb3V0IHRoZSBCaXRYb3IuCisgICAgRGVwZW5kLAogCiAgICAgLy8gVGhpcyBp
cyB1c2VkIHRvIGNvbXB1dGUgdGhlIGFjdHVhbCBhZGRyZXNzIG9mIGEgV2FzbSBtZW1vcnkgb3Bl
cmF0aW9uLiBJdCB0YWtlcyBhbiBJbnRQdHIKICAgICAvLyBhbmQgYSBwaW5uZWQgcmVnaXN0ZXIg
dGhlbiBjb21wdXRlcyB0aGUgYXBwcm9wcmlhdGUgSW50UHRyIGFkZHJlc3MuIEZvciB0aGUgdXNl
LWNhc2Ugb2YKQEAgLTMwMSw2ICs0MDIsMTEyIEBAIGlubGluZSBib29sIGlzRGVmaW5pdGVseVRl
cm1pbmFsKE9wY29kZSAKICAgICB9CiB9CiAKK2lubGluZSBib29sIGlzTG9hZChPcGNvZGUgb3Bj
b2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2Fz
ZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNl
IExvYWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzU3RvcmUoT3Bjb2RlIG9wY29kZSkK
K3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3Rv
cmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0xvYWRT
dG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBM
b2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9h
ZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9yZTE2
OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljKE9w
Y29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dl
YWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2FzZSBBdG9taWNYY2hnQWRk
OgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBj
YXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRv
bWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNDQVMoT3Bjb2RlIG9w
Y29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoK
KyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNB
dG9taWNYY2hnKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBj
YXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRv
bWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdY
b3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc01l
bW9yeUFjY2VzcyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHJldHVybiBpc0F0b21pYyhvcGNvZGUp
IHx8IGlzTG9hZFN0b3JlKG9wY29kZSk7Cit9CisKK2lubGluZSBPcGNvZGUgc2lnbkV4dGVuZE9w
Y29kZShXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0
aDg6CisgICAgICAgIHJldHVybiBTRXh0ODsKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgIHJl
dHVybiBTRXh0MTY7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIE9vcHM7CisgICAgfQorfQorCitKU19FWFBPUlRfUFJJ
VkFURSBPcGNvZGUgc3RvcmVPcGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAy
LDYgKzIwMiw4IEBAIHZvaWQgUHJvY2VkdXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGMKICAg
ICAgICAgfQogICAgICAgICBkYXRhTG9nKCIgICAgIiwgZGVlcER1bXAoKnRoaXMsIHZhbHVlKSwg
IlxuIik7CiAgICAgfQorICAgIGlmIChoYXNRdWlya3MoKSkKKyAgICAgICAgb3V0LnByaW50KCJI
YXMgUXVpcmtzOiBUcnVlXG4iKTsKICAgICBpZiAodmFyaWFibGVzKCkuc2l6ZSgpKSB7CiAgICAg
ICAgIG91dC5wcmludCgiVmFyaWFibGVzOlxuIik7CiAgICAgICAgIGZvciAoVmFyaWFibGUqIHZh
cmlhYmxlIDogdmFyaWFibGVzKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9j
ZWR1cmUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAg
ICAgVmFsdWUqIGFkZEludENvbnN0YW50KE9yaWdpbiwgVHlwZSwgaW50NjRfdCB2YWx1ZSk7CiAg
ICAgVmFsdWUqIGFkZEludENvbnN0YW50KFZhbHVlKiwgaW50NjRfdCB2YWx1ZSk7CiAKKyAgICAv
LyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIFZhbHVlKiBhZGRC
b3R0b20oT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogYWRkQm90dG9tKFZhbHVlKik7CiAKQEAg
LTE5NSw2ICsxOTYsMTIgQEAgcHVibGljOgogICAgIC8vIGFsaXZlLiBHcmVhdCBmb3IgY29tcGls
ZXItZ2VuZXJhdGVkIGRhdGEgc2VjdGlvbnMsIGxpa2Ugc3dpdGNoIGp1bXAgdGFibGVzIGFuZCBj
b25zdGFudCBwb29scy4KICAgICAvLyBUaGlzIHJldHVybnMgbWVtb3J5IHRoYXQgaGFzIGJlZW4g
emVyby1pbml0aWFsaXplZC4KICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhZGREYXRhU2Vj
dGlvbihzaXplX3QpOworICAgIAorICAgIC8vIFNvbWUgb3BlcmF0aW9ucyBhcmUgc3BlY2lmaWVk
IGluIEIzIElSIHRvIGJlaGF2ZSBvbmUgd2F5IGJ1dCBvbiB0aGlzIGdpdmVuIENQVSB0aGV5IGJl
aGF2ZSBhCisgICAgLy8gZGlmZmVyZW50IHdheS4gV2hlbiB0cnVlLCB0aG9zZSBCMyBJUiBvcHMg
c3dpdGNoIHRvIGJlaGF2aW5nIHRoZSBDUFUgd2F5LCBhbmQgdGhlIG9wdGltaXplciBtYXkKKyAg
ICAvLyBzdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIGl0LgorICAgIGJvb2wgaGFzUXVpcmtzKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNRdWlya3M7IH0KKyAgICB2b2lkIHNldEhhc1F1aXJrcyhib29s
IHZhbHVlKSB7IG1faGFzUXVpcmtzID0gdmFsdWU7IH0KIAogICAgIE9wYXF1ZUJ5cHJvZHVjdHMm
IGJ5cHJvZHVjdHMoKSB7IHJldHVybiAqbV9ieXByb2R1Y3RzOyB9CiAKQEAgLTI1Miw2ICsyNTks
NyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoUHJpbnRTdHJlYW0mLCBP
cmlnaW4pPj4gbV9vcmlnaW5QcmludGVyOwogICAgIGNvbnN0IHZvaWQqIG1fZnJvbnRlbmREYXRh
OwogICAgIFBDVG9PcmlnaW5NYXAgbV9wY1RvT3JpZ2luTWFwOworICAgIGJvb2wgbV9oYXNRdWly
a3MgeyBmYWxzZSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQog
CisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGlu
ZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNDb21w
dXRlRGl2aXNpb25NYWdpYy5oIgpAQCAtNjAyLDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGJyZWFrOwotCisgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBOZWc6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IE5lZyhjb25zdGFudCkKICAgICAgICAg
ICAgIC8vIEludG8gdGhpczogLWNvbnN0YW50CkBAIC0xMjk1LDYgKzEyOTYsMTYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWlya3Mo
KSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDgoQXRvbWljWGNoZ19fXykK
KyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAg
ICAgICBpZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5v
cGVyYXRpb25XaWR0aCgpID09IFdpZHRoOCkgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNl
V2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBTRXh0MTY6CkBAIC0xMzQzLDYgKzEzNTQsMTYgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgeworICAgICAgICAg
ICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDE2KEF0b21pY1hjaGdfX18pCisgICAgICAgICAgICAg
ICAgLy8gSW50byB0aGlzOiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAgICAgaWYgKGlzQXRv
bWljWGNoZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgICAg
ICYmIG1fdmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+b3BlcmF0aW9uV2lkdGgo
KSA9PSBXaWR0aDE2KSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoSWRlbnRpdHko
bV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIFNFeHQzMjoKQEAgLTIxMDEsMjIgKzIxMjIsMjUgQEAgcHJpdmF0ZToKICAgICAgICAgQVNT
RVJUKG1fdmFsdWUtPm51bUNoaWxkcmVuKCkgPj0gMik7CiAgICAgICAgIAogICAgICAgICAvLyBM
ZWF2ZSBpdCBhbG9uZSBpZiB0aGUgcmlnaHQgY2hpbGQgaXMgYSBjb25zdGFudC4KLSAgICAgICAg
aWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkpCisgICAgICAgIGlmIChtX3ZhbHVl
LT5jaGlsZCgxKS0+aXNDb25zdGFudCgpCisgICAgICAgICAgICB8fCBtX3ZhbHVlLT5jaGlsZCgw
KS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pc0NvbnN0YW50KCkpIHsKKyAg
ICAgICAgYXV0byBzd2FwID0gWyZdICgpIHsKICAgICAgICAgICAgIHN0ZDo6c3dhcChtX3ZhbHVl
LT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgbV9jaGFuZ2VkID0g
dHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCisgICAgICAgIH07CisgICAg
ICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBzd2FwKCk7CisgICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+Y2hp
bGQoMSktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUykKKyAgICAgICAgICAgIHJldHVybiBz
d2FwKCk7CisgICAgICAgIAogICAgICAgICAvLyBTb3J0IHRoZSBvcGVyYW5kcy4gVGhpcyBpcyBh
biBpbXBvcnRhbnQgY2Fub25pY2FsaXphdGlvbi4gV2UgdXNlIHRoZSBpbmRleCBpbnN0ZWFkIG9m
CiAgICAgICAgIC8vIHRoZSBhZGRyZXNzIHRvIG1ha2UgdGhpcyBhdCBsZWFzdCBzbGlnaHRseSBk
ZXRlcm1pbmlzdGljLgotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmluZGV4KCkgPiBt
X3ZhbHVlLT5jaGlsZCgxKS0+aW5kZXgoKSkgewotICAgICAgICAgICAgc3RkOjpzd2FwKG1fdmFs
dWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAgICAgICAgICBtX2NoYW5nZWQg
PSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgwKS0+aW5kZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEpLT5pbmRleCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHN3YXAoKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgcmVhbGx5IGJlIGEgZm9yd2FyZCBhbmFseXNpcy4gSW5zdGVhZCwgd2UgdXNlcyBhIGJvdW5k
ZWQtc2VhcmNoIGJhY2t3YXJkcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
aWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlk
YXRlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUg
IkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgpAQCAtMzQ2
LDYgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVt
Q2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZh
bHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsK
ICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTG9hZDoKQEAgLTM1Myw2ICszNTUsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0g
MSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hp
bGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgIT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAg
ICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgU3RvcmU4OgpAQCAtMzYyLDYgKzM2NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQzMiwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSkt
PnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxp
ZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgU3RvcmU6CkBAIC0zNjksOCArMzczLDQ5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBv
aW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nl
c3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9t
aWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hp
bGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+
bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxk
KDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
aXNJbnQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBl
KCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFs
dWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAg
ICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09
IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5
cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlw
ZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZh
bHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAg
ICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAgICAgY2FzZSBBdG9taWNY
Y2hnQW5kOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAg
ICAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5r
aW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUo
KSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1
ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAg
ICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgRGVwZW5kOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+
a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCkt
PnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0lu
dCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgICAgICAgICAgVkFMSURB
VEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAq
dmFsdWUpKTsKQEAgLTUzNyw2ICs1ODIsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVGZW5jZShWYWx1ZSog
dmFsdWUpCisgICAgeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1l
bW9yeVZhbHVlPigpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKQorICAgICAgICAg
ICAgVkFMSURBVEUobWVtb3J5LT5hY2Nlc3NCYW5rKCkgPT0gR1AsICgiRmVuY2UgYXQgIiwgKm1l
bW9yeSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRlQXRvbWljKFZhbHVlKiB2YWx1
ZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSB2YWx1ZS0+YXM8QXRvbWlj
VmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBWQUxJREFURShiZXN0VHlwZShHUCwgYXRvbWlj
LT5vcGVyYXRpb25XaWR0aCgpKSA9PSBhdG9taWMtPm9wZXJhdGlvblR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICB9CiAKICAgICB2b2lkIHZhbGlkYXRlU3RhY2tBY2Nlc3MoVmFsdWUqIHZh
bHVlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHJldmlz
aW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5j
bHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgog
I2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0JvdHRvbVByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCkBAIC01MTAsNiArNTExLDcgQEAgYm9v
bCBWYWx1ZTo6cmV0dXJuc0Jvb2woKSBjb25zdAogICAgIGNhc2UgQWJvdmVFcXVhbDoKICAgICBj
YXNlIEJlbG93RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgIGNhc2UgQXRv
bWljV2Vha0NBUzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQaGk6CiAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC01ODksNiArNTkxLDcg
QEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBCZWxvd0VxdWFsOgog
ICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKICAgICBjYXNlIFNlbGVjdDoKKyAgICBjYXNlIERl
cGVuZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXY6CiAgICAgY2FzZSBVRGl2OgpAQCAt
NjAwLDE2ICs2MDMsNDQgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2Fz
ZSBMb2FkOFM6CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKLSAgICBjYXNl
IExvYWQ6Ci0gICAgICAgIHJlc3VsdC5yZWFkcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgp
OworICAgIGNhc2UgTG9hZDogeworICAgICAgICBjb25zdCBNZW1vcnlWYWx1ZSogbWVtb3J5ID0g
YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cmFuZ2Uo
KTsKKyAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgcmVzdWx0
LndyaXRlcyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgpOworICAgICAgICAgICAgcmVzdWx0LmZlbmNl
ID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRy
dWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFN0b3JlODoKICAgICBjYXNlIFN0
b3JlMTY6Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmVzdWx0LndyaXRlcyA9IGFzPE1lbW9y
eVZhbHVlPigpLT5yYW5nZSgpOworICAgIGNhc2UgU3RvcmU6IHsKKyAgICAgICAgY29uc3QgTWVt
b3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQud3Jp
dGVzID0gbWVtb3J5LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7
CisgICAgICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPmZlbmNlUmFuZ2UoKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmNv
bnRyb2xEZXBlbmRlbnQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBB
dG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWlj
WGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6
CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBj
YXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgY29uc3QgQXRvbWljVmFsdWUqIGF0b21pYyA9IGFz
PEF0b21pY1ZhbHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBhdG9taWMtPnJhbmdlKCkg
fCBhdG9taWMtPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IGF0b21pYy0+
cmFuZ2UoKSB8IGF0b21pYy0+ZmVuY2VSYW5nZSgpOworICAgICAgICBpZiAoYXRvbWljLT5oYXNG
ZW5jZSgpKQorICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0
LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2Fz
ZSBXYXNtQWRkcmVzczoKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAg
ICAgYnJlYWs7CkBAIC02MTcsMTggKzY0OCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBj
b25zdAogICAgICAgICBjb25zdCBGZW5jZVZhbHVlKiBmZW5jZSA9IGFzPEZlbmNlVmFsdWU+KCk7
CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IGZlbmNlLT5yZWFkOwogICAgICAgICByZXN1bHQud3Jp
dGVzID0gZmVuY2UtPndyaXRlOwotICAgICAgICAKLSAgICAgICAgLy8gUHJldmVudCBraWxsaW5n
IG9mIGZlbmNlcyB0aGF0IGNsYWltIG5vdCB0byB3cml0ZSBhbnl0aGluZy4gSXQncyBhIGJpdCB3
ZWlyZCB0aGF0IHdlIHVzZQotICAgICAgICAvLyBsb2NhbCBzdGF0ZSBhcyB0aGUgd2F5IHRvIGRv
IHRoaXMsIGJ1dCBpdCBoYXBwZW5zIHRvIHdvcms6IHdlIG11c3QgYXNzdW1lIHRoYXQgd2UgY2Fu
bm90Ci0gICAgICAgIC8vIGtpbGwgd3JpdGVzTG9jYWxTdGF0ZSB1bmxlc3Mgd2UgdW5kZXJzdGFu
ZHMgZXhhY3RseSB3aGF0IHRoZSBpbnN0cnVjdGlvbiBpcyBkb2luZyAobGlrZQotICAgICAgICAv
LyB0aGUgd2F5IHRoYXQgZml4U1NBIHVuZGVyc3RhbmRzIFNldC9HZXQgYW5kIHRoZSB3YXkgdGhh
dCByZWR1Y2VTdHJlbmd0aCBhbmQgb3RoZXJzCi0gICAgICAgIC8vIHVuZGVyc3RhbmQgVXBzaWxv
bikuIFRoaXMgd291bGQgb25seSBiZWNvbWUgYSBwcm9ibGVtIGlmIHdlIGhhZCBzb21lIGFuYWx5
c2lzIHRoYXQgd2FzCi0gICAgICAgIC8vIGxvb2tpbmcgdG8gdXNlIHRoZSB3cml0ZXNMb2NhbFN0
YXRlIGJpdCB0byBpbnZhbGlkYXRlIGEgQ1NFIG92ZXIgbG9jYWwgc3RhdGUgb3BlcmF0aW9ucy4K
LSAgICAgICAgLy8gVGhlbiBhIEZlbmNlIHdvdWxkIGxvb2sgYmxvY2ssIHNheSwgdGhlIGVsaW1p
bmF0aW9uIG9mIGEgcmVkdW5kYW50IEdldC4gQnV0IGl0IGxpa2UKLSAgICAgICAgLy8gdGhhdCdz
IG5vdCBhdCBhbGwgaG93IG91ciBvcHRpbWl6YXRpb25zIGZvciBTZXQvR2V0L1Vwc2lsb24vUGhp
IHdvcmsgLSB0aGV5IGdyb2sgdGhlaXIKLSAgICAgICAgLy8gb3BlcmF0aW9ucyBkZWVwbHkgZW5v
dWdoIHRoYXQgdGhleSBoYXZlIG5vIG5lZWQgdG8gY2hlY2sgdGhpcyBiaXQgLSBzbyB0aGlzIGNo
ZWF0IGlzCi0gICAgICAgIC8vIGZpbmUuCi0gICAgICAgIHJlc3VsdC53cml0ZXNMb2NhbFN0YXRl
ID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgQ0NhbGw6CkBAIC02OTQsNiArNzE0LDcgQEAgVmFsdWVLZXkgVmFsdWU6
OmtleSgpIGNvbnN0CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAg
IGNhc2UgTmVnOgorICAgIGNhc2UgRGVwZW5kOgogICAgICAgICByZXR1cm4gVmFsdWVLZXkoa2lu
ZCgpLCB0eXBlKCksIGNoaWxkKDApKTsKICAgICBjYXNlIEFkZDoKICAgICBjYXNlIFN1YjoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiAr
NjgsMTEgQEAgcHVibGljOgogICAgIAogICAgIE9wY29kZSBvcGNvZGUoKSBjb25zdCB7IHJldHVy
biBraW5kKCkub3Bjb2RlKCk7IH0KICAgICAKKyAgICAvLyBOb3RlIHRoYXQgdGhlIGtpbmQgaXMg
bWVhbnQgdG8gYmUgaW1tdXRhYmxlLiBEbyB0aGlzIHdoZW4geW91IGtub3cgdGhhdCB0aGlzIGlz
IHNhZmUuIEl0J3Mgbm90CisgICAgLy8gdXN1YWxseSBzYWZlLgorICAgIHZvaWQgc2V0S2luZFVu
c2FmZWx5KEtpbmQga2luZCkgeyBtX2tpbmQgPSBraW5kOyB9CisgICAgdm9pZCBzZXRPcGNvZGVV
bnNhZmVseShPcGNvZGUgb3Bjb2RlKSB7IG1fa2luZC5zZXRPcGNvZGUob3Bjb2RlKTsgfQorICAg
IAogICAgIC8vIEl0J3MgZ29vZCBwcmFjdGljZSB0byBtaXJyb3IgS2luZCBtZXRob2RzIGhlcmUs
IHNvIHlvdSBjYW4gc2F5IHZhbHVlLT5pc0JsYWgoKQogICAgIC8vIGluc3RlYWQgb2YgdmFsdWUt
PmtpbmQoKS5pc0JsYWgoKS4KICAgICBib29sIGlzQ2hpbGwoKSBjb25zdCB7IHJldHVybiBraW5k
KCkuaXNDaGlsbCgpOyB9CkBAIC0xMDcsNiArMTEyLDggQEAgcHVibGljOgogICAgIC8vIHZhbHVl
cyB3aXRoIElkZW50aXRpZXMgb24gYm90dG9tIGNvbnN0YW50cy4gRm9yIHRoaXMgcmVhc29uLCB0
aGlzIHRha2VzIGEgY2FsbGJhY2sgdGhhdCBpcwogICAgIC8vIHJlc3BvbnNpYmxlIGZvciBjcmVh
dGluZyBib3R0b21zLiBUaGVyZSdzIGEgdXRpbGl0eSBmb3IgdGhpcywgc2VlIEIzQm90dG9tUHJv
dmlkZXIuaC4gWW91CiAgICAgLy8gY2FuIGFsc28gYWNjZXNzIHRoYXQgdXRpbGl0eSB1c2luZyBy
ZXBsYWNlV2l0aEJvdHRvbShJbnNlcnRpb25TZXQmLCBzaXplX3QpLgorICAgIC8vCisgICAgLy8g
WW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBCb3R0b21Qcm92aWRlcj4KICAgICB2b2lkIHJlcGxhY2VXaXRoQm90dG9tKGNvbnN0IEJv
dHRvbVByb3ZpZGVyJik7CiAgICAgCkBAIC0zMjEsNiArMzI4LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBJVG9GOgogICAgICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAgICAgICBjYXNlIEJy
YW5jaDoKKyAgICAgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobnVt
QXJncyAhPSAxKSkKICAgICAgICAgICAgICAgICBiYWRLaW5kKGtpbmQsIG51bUFyZ3MpOwogICAg
ICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDM4IEBACiAKICNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KIAorbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK1R5cGUgYmVzdFR5
cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAg
Y2FzZSBXaWR0aDg6CisgICAgY2FzZSBXaWR0aDE2OgorICAgIGNhc2UgV2lkdGgzMjoKKyAgICAg
ICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICByZXR1cm4g
SW50MzI7CisgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICByZXR1cm4gRmxvYXQ7CisgICAg
ICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIFZvaWQ7CisgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAg
ICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJldHVybiBJbnQ2NDsKKyAgICAgICAgY2FzZSBG
UDoKKyAgICAgICAgICAgIHJldHVybiBEb3VibGU7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFZvaWQ7CisgICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFZvaWQ7Cit9CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCiBuYW1lc3BhY2UgV1RGIHsKIAogdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QjM6OldpZHRoIHdpZHRoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2MiwxOCBA
QCBpbmxpbmUgV2lkdGggd2lkdGhGb3JUeXBlKFR5cGUgdHlwZSkKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAoraW5saW5lIFdpZHRoIGNhbm9uaWNhbFdpZHRoKFdpZHRoIHdpZHRoKQor
eworICAgIHJldHVybiBzdGQ6Om1heChXaWR0aDMyLCB3aWR0aCk7Cit9CisKK2lubGluZSBib29s
IGlzQ2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgpCit7CisgICAgcmV0dXJuIHdpZHRoID49IFdp
ZHRoMzI7Cit9CisKK1R5cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIGlu
bGluZSBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0aChCYW5rIGJhbmspCiB7CiAgICAgcmV0dXJuIGJh
bmsgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6IFdpZHRoNjQ7CkBAIC05Myw2ICsxMDUsMjAgQEAg
aW5saW5lIFdpZHRoIHdpZHRoRm9yQnl0ZXModW5zaWduZWQgYnl0ZQogICAgIH0KIH0KIAoraW5s
aW5lIHVpbnQ2NF90IG1hc2soV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgewor
ICAgIGNhc2UgV2lkdGg4OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDAwMGZmbGx1Owor
ICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAwZmZmZmxsdTsK
KyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwZmZmZmZmZmZsbHU7
CisgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICByZXR1cm4gMHhmZmZmZmZmZmZmZmZmZmZmbGx1
OworICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9uIDIxMjk5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWlyVmFsaWRhdGUuaCIKICNpbmNsdWRlICJBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFs
dWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2Nr
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQ29tcGls
YXRpb24uaCIKQEAgLTQ0LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJCM01hdGhFeHRyYXMuaCIKICNp
bmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNNb3ZlQ29uc3RhbnRzLmgiCisj
aW5jbHVkZSAiQjNOYXRpdmVUcmFpdHMuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2lu
Y2x1ZGUgIkIzUmVkdWNlU3RyZW5ndGguaCIKICNpbmNsdWRlICJCM1Nsb3RCYXNlVmFsdWUuaCIK
QEAgLTI5Nyw2ICsyOTksMjQgQEAgdm9pZCB0ZXN0TG9hZDQyKCkKICAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludD4ocHJvYykgPT0gNDIpOwogfQogCit2b2lkIHRlc3RMb2FkQWNxNDIoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgaW50IHggPSA0MjsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
ICZ4KSwKKyAgICAgICAgICAgIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpKTsKKwor
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICBDSEVDSyhpbnZva2U8
aW50PigqY29kZSkgPT0gNDIpOworfQorCiB2b2lkIHRlc3RMb2FkV2l0aE9mZnNldEltcGwoaW50
MzJfdCBvZmZzZXQ2NCwgaW50MzJfdCBvZmZzZXQzMikKIHsKICAgICB7CkBAIC01NzQ4LDYgKzU3
NjgsMzUgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkMzIoaW50IGFtb3VudCkKICAgICBDSEVDSyhz
bG90ID09IDM3ICsgYW1vdW50KTsKIH0KIAordm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIo
aW50IGFtb3VudCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBzbG90ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1
ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgJnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmln
aW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAg
c2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwor
CisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7Cisg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8
aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9
CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTMyKGludCBhbW91bnQpCiB7CiAgICAgUHJvY2Vk
dXJlIHByb2M7CkBAIC01NzkyLDYgKzU4NDEsNzQgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkOChp
bnQgYW1vdW50LCBCMzo6TwogICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2
b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9w
Y29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIGludDhfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSog
c2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
JnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2Ms
IFN0b3JlOCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4o
KSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xv
dFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisg
ICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50
PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisK
K3ZvaWQgdGVzdFN0b3JlUmVsQWRkRmVuY2VMb2FkQWNxOChpbnQgYW1vdW50LCBCMzo6T3Bjb2Rl
IGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQ4X3Qgc2xvdCA9IDM3OworICAgIENvbnN0UHRy
VmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksICZzbG90KTsKKyAgICBWYWx1ZSogbG9hZGVkVmFsdWUgPSByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0
ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9p
ZCwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAg
ICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoMHhiZWVmKSwgJnNsb3QpOworICAgICAgICB9KTsKKyAgICBwYXRjaHBvaW50LT5lZmZl
Y3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMuZmVuY2UgPSB0
cnVlOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0
b3JlOCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgbG9hZGVkVmFsdWUsCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAg
ICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkp
OworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7
CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQorICAgIENIRUNLKCFpbnZv
a2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7
Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBs
b2FkT3Bjb2RlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTgzNiw2ICs1OTUzLDM1IEBA
IHZvaWQgdGVzdFN0b3JlQWRkTG9hZDE2KGludCBhbW91bnQsIEIzOjoKICAgICBDSEVDSyhzbG90
ID09IDM3ICsgYW1vdW50KTsKIH0KIAordm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYoaW50
IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50MTZfdCBzbG90
ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlMTYsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgcHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0Miks
IEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBS
YW5nZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7
CisgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29k
ZSwgImxkYSIpOworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOwor
ICAgIH0KKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNL
KHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCiB2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW0xNihp
bnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7
CkBAIC01ODc4LDYgKzYwMjQsMzMgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkNjQoaW50IGFtb3Vu
dCkKICAgICBDSEVDSyhzbG90ID09IDM3MDAwMDAwMDAwbGwgKyBhbW91bnQpOwogfQogCit2b2lk
IHRlc3RTdG9yZVJlbEFkZExvYWRBY3E2NChpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50NjRf
dCBzbG90ID0gMzcwMDAwMDAwMDBsbDsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBzbG90UHRyLCAw
LCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0Mikp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgaWYg
KGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIp
OworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOworICAgIH0KKyAg
ICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNLKHNsb3QgPT0g
MzcwMDAwMDAwMDBsbCArIGFtb3VudCk7Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTY0
KGludDY0X3QgYW1vdW50KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTM3OTEsNyArMTM5
NjQsNyBAQCB2b2lkIHRlc3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24oKQogICAgIGNvbXBpbGVB
bmRSdW48aW50Pihwcm9jKTsKICAgICB1bnNpZ25lZCBzdG9yZUNvdW50ID0gMDsKICAgICBmb3Ig
KFZhbHVlKiB2YWx1ZSA6IHByb2MudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKE1lbW9yeVZhbHVl
Ojppc1N0b3JlKHZhbHVlLT5vcGNvZGUoKSkpCisgICAgICAgIGlmIChpc1N0b3JlKHZhbHVlLT5v
cGNvZGUoKSkpCiAgICAgICAgICAgICBzdG9yZUNvdW50Kys7CiAgICAgfQogICAgIENIRUNLX0VR
KHN0b3JlQ291bnQsIDJ1KTsKQEAgLTE0Mjc3LDYgKzE0NDUwLDMyNiBAQCB2b2lkIHRlc3RPcHRp
bWl6ZU1hdGVyaWFsaXphdGlvbigpCiAgICAgQ0hFQ0soZm91bmQpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgordm9pZCB0ZXN0QXRvbWljV2Vha0NBUygpCit7CisgICAgVHlwZSB0eXBlID0g
TmF0aXZlVHJhaXRzPFQ+Ojp0eXBlOworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+
Ojp3aWR0aDsKKyAgICAKKyAgICBhdXRvIGNoZWNrRGlzYXNzZW1ibHkgPSBbJl0gKENvbXBpbGF0
aW9uJiBjb21waWxhdGlvbikgeworICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsb2NrIik7CisgICAgICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImNtcHhjaGciKTsKKyAgICAgICAgfQor
ICAgIH07CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogcmVs
b29wID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBkb25lID0gcHJvYy5h
ZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7
CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMocmVsb29wKTsKKyAgICAgICAgCisgICAgICAg
IHJlbG9vcC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3Jp
Z2luKCksCisgICAgICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAg
ICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDQyKSwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0cikpOworICAgICAgICBy
ZWxvb3AtPnNldFN1Y2Nlc3NvcnMoZG9uZSwgcmVsb29wKTsKKyAgICAgICAgCisgICAgICAgIGRv
bmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBjaGVja0Rpc2Fzc2Vt
Ymx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZSA9IDQyOworICAgICAgICBpbnZva2U8dm9pZD4o
KmNvZGUsICZ2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlLCBzdGF0aWNfY2FzdDxUPigw
eGJlZWYpKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNC
bG9jayogcmVsb29wID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBkb25l
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBP
cmlnaW4oKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMocmVsb29wKTsKKyAgICAgICAg
CisgICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJy
YW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxBdG9taWNWYWx1
ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRo
LAorICAgICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0ciwgMCwg
SGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKCkpKTsKKyAgICAgICAgcmVsb29wLT5zZXRTdWNjZXNz
b3JzKGRvbmUsIHJlbG9vcCk7CisgICAgICAgIAorICAgICAgICBkb25lLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tEaXNhc3NlbWJseSgqY29kZSk7CisgICAg
ICAgIFQgdmFsdWUgPSA0MjsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCAmdmFsdWUpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgfQor
ICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0Miks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyKSk7CisgICAgICAgIHJvb3QtPnNl
dFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7CisgICAgICAgIAorICAgICAgICBzdWNjLT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdpZHRo
KSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1Y2MtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAg
ICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAg
ICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tEaXNh
c3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWUgPSA0MjsKKyAgICAgICAgd2hpbGUgKHZh
bHVlID09IDQyKQorICAgICAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCAmdmFsdWUpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIHZhbHVl
ID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCAmdmFs
dWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAg
fQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtD
QVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50
Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisg
ICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50
Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIEludDMyLCAwKSkpOworICAgICAgICByb290LT5zZXRT
dWNjZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCks
IE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAg
ZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAg
CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNrRGlzYXNz
ZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlID0gNDI7CisgICAgICAgIHdoaWxlICh2YWx1
ZSA9PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgJnZhbHVlKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWUsIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICB2YWx1ZSA9
IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgJnZhbHVl
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWUsIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgIH0K
KyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vh
a0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUg
PSBjb21waWxlKHByb2MpOworICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAg
ICAgVCB2YWx1ZSA9IDQyOworICAgICAgICB3aGlsZSAoIWludm9rZTxib29sPigqY29kZSwgJnZh
bHVlKSkgeyB9CisgICAgICAgIENIRUNLKHZhbHVlID09IHN0YXRpY19jYXN0PFQ+KDB4YmVlZikp
OworICAgICAgICAKKyAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAg
ICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCAmdmFsdWUpKTsKKyAgICB9Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RBdG9taWNTdHJvbmdDQVMoKQoreworICAgIFR5cGUg
dHlwZSA9IE5hdGl2ZVRyYWl0czxUPjo6dHlwZTsKKyAgICBXaWR0aCB3aWR0aCA9IE5hdGl2ZVRy
YWl0czxUPjo6d2lkdGg7CisgICAgCisgICAgYXV0byBjaGVja0Rpc2Fzc2VtYmx5ID0gWyZdIChD
b21waWxhdGlvbiYgY29tcGlsYXRpb24pIHsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibG9jayIpOworICAgICAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJjbXB4Y2hnIik7CisgICAg
ICAgIH0KKyAgICB9OworICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2Ms
IEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcHRyKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAg
ICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7CisgICAgICAgIAorICAgICAgICBz
dWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNv
ZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAg
ICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAg
ICAgIAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAg
ICAgY2hlY2tEaXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWUgPSA0MjsKKyAgICAg
ICAgaW52b2tlPHZvaWQ+KCpjb2RlLCAmdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZSwg
c3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8VD4oMzAw
KTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCAmdmFsdWUpOworICAgICAgICBDSEVDS19F
USh2YWx1ZSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
ICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAg
ICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTm90RXF1YWws
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4o
CisgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRD
b25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAg
ICAgcHRyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoZmFpbCwg
c3VjYyk7CisgICAgICAgIAorICAgICAgICBzdWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAg
ICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAw
KSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBj
b2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tEaXNhc3NlbWJseSgqY29kZSk7Cisg
ICAgICAgIFQgdmFsdWUgPSA0MjsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCAmdmFsdWUp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAg
IHZhbHVlID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2Rl
LCAmdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7
CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBB
dG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgICAgICAKKyAgICAgICAg
YXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tEaXNhc3NlbWJseSgqY29k
ZSk7CisgICAgICAgIFQgdmFsdWUgPSA0MjsKKyAgICAgICAgQ0hFQ0soaW52b2tlPFQ+KCpjb2Rl
LCAmdmFsdWUpID09IDQyKTsKKyAgICAgICAgQ0hFQ0sodmFsdWUgPT0gc3RhdGljX2Nhc3Q8VD4o
MHhiZWVmKSk7CisgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAg
Q0hFQ0soaW52b2tlPFQ+KCpjb2RlLCAmdmFsdWUpID09IHN0YXRpY19jYXN0PFQ+KDMwMCkpOwor
ICAgICAgICBDSEVDSyh2YWx1ZSA9PSBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICB9CisgICAg
CisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAg
ICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywg
T3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGls
ZShwcm9jKTsKKyAgICAgICAgY2hlY2tEaXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFs
dWUgPSA0MjsKKyAgICAgICAgQ0hFQ0soaW52b2tlPGJvb2w+KCpjb2RlLCAmdmFsdWUpKTsKKyAg
ICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBDSEVDSyghaW52b2tl
PGJvb2w+KCpjb2RlLCAmdmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4o
CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigp
LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSkpOworICAgICAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7
CisgICAgICAgIGNoZWNrRGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlID0gNDI7
CisgICAgICAgIENIRUNLKGludm9rZTxib29sPigqY29kZSwgJnZhbHVlKSk7CisgICAgICAgIHZh
bHVlID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0soIWludm9rZTxib29sPigq
Y29kZSwgJnZhbHVlKSk7CisgICAgfQorfQorCiB2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5z
aWduZWQgb2Zmc2V0KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTQzNzAsNiArMTQ4NjMs
MTMgQEAgZG91YmxlIG5lZ2F0aXZlWmVybygpCiAgICAgcmV0dXJuIC16ZXJvKCk7CiB9CiAKKyNk
ZWZpbmUgUlVOX05PVyh0ZXN0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
aWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGJy
ZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVz
dCAiLi4uXG4iKTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGVzdDsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiOiBPSyFcbiIp
OyAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKICNkZWZpbmUgUlVOKHRlc3Qp
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCFzaG91bGRSdW4o
I3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKQEAgLTE0NDIxLDEyICsxNDkyMSwxMSBAQCB2b2lkIHJ1bihj
b25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgIHJldHVybiAhZmlsdGVyIHx8ICEhc3RyY2FzZXN0
cih0ZXN0TmFtZSwgZmlsdGVyKTsKICAgICB9OwogCi0gICAgLy8gV2UgcnVuIHRoaXMgdGVzdCBm
aXJzdCBiZWNhdXNlIGl0IGZpZGRsZXMgd2l0aCBzb21lCi0gICAgLy8gSlNDIG9wdGlvbnMuCi0g
ICAgdGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpOworICAgIFJV
Tl9OT1codGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpKTsKIAog
ICAgIFJVTih0ZXN0NDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkNDIoKSk7CisgICAgUlVOKHRlc3RM
b2FkQWNxNDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1heCgpKTsKICAgICBSVU4o
dGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c09uZSgpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJ
bW05TWF4UGx1c1R3bygpKTsKQEAgLTE1MDk5LDE2ICsxNTU5OCwyMyBAQCB2b2lkIHJ1bihjb25z
dCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3ROZWczMig1MikpOwogICAgIFJVTih0ZXN0TmVn
UHRyKDUzKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQzMig0NikpOworICAgIFJVTih0ZXN0
U3RvcmVSZWxBZGRMb2FkQWNxMzIoNDYpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTMy
KDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ2NCg0NjAwKSk7CisgICAgUlVOKHRlc3RT
dG9yZVJlbEFkZExvYWRBY3E2NCg0NjAwKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW02
NCg0NjAwKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4KDQsIExvYWQ4WikpOworICAgIFJV
Tih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxOCg0LCBMb2FkOFopKTsKKyAgICBSVU4odGVzdFN0b3Jl
UmVsQWRkRmVuY2VMb2FkQWNxOCg0LCBMb2FkOFopKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9h
ZEltbTgoNCwgTG9hZDhaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4KDQsIExvYWQ4Uykp
OworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxOCg0LCBMb2FkOFMpKTsKICAgICBSVU4o
dGVzdFN0b3JlQWRkTG9hZEltbTgoNCwgTG9hZDhTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExv
YWQxNig2LCBMb2FkMTZaKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBM
b2FkMTZaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZaKSk7CiAg
ICAgUlVOKHRlc3RTdG9yZUFkZExvYWQxNig2LCBMb2FkMTZTKSk7CisgICAgUlVOKHRlc3RTdG9y
ZVJlbEFkZExvYWRBY3ExNig2LCBMb2FkMTZTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJ
bW0xNig2LCBMb2FkMTZTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQzMkluZGV4KDQ2KSk7
CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0zMkluZGV4KDQ2KSk7CkBAIC0xNTgzMSw2ICsx
NjMzNywxNSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RMb2Fk
QmFzZUluZGV4U2hpZnQyKCkpOwogICAgIFJVTih0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MzIoKSk7
CiAgICAgUlVOKHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXphdGlvbigpKTsKKyAgICAKKyAgICBSVU4o
dGVzdEF0b21pY1dlYWtDQVM8aW50OF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8
aW50MTZfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDMyX3Q+KCkpOworICAg
IFJVTih0ZXN0QXRvbWljV2Vha0NBUzxpbnQ2NF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0
cm9uZ0NBUzxpbnQ4X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDE2X3Q+
KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDMyX3Q+KCkpOworICAgIFJVTih0
ZXN0QXRvbWljU3Ryb25nQ0FTPGludDY0X3Q+KCkpOwogCiAgICAgUlVOKHRlc3RXYXNtQm91bmRz
Q2hlY2soMCkpOwogICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDEwMCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsNiArMTAyLDcgQEAgdW5zaWduZWQgQXJnOjpqc0hhc2goKSBjb25zdAogICAgIGNhc2Ug
UmVsQ29uZDoKICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgY2FzZSBEb3VibGVDb25kOgorICAgIGNh
c2UgU3RhdHVzQ29uZDoKICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICByZXN1bHQgKz0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODIsNiAr
MTgzLDkgQEAgdm9pZCBBcmc6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNl
IERvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5wcmludChhc0RvdWJsZUNvbmRpdGlvbigpKTsKICAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RhdHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KGFz
U3RhdHVzQ29uZGl0aW9uKCkpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTcGVjaWFsOgog
ICAgICAgICBvdXQucHJpbnQocG9pbnRlckR1bXAoc3BlY2lhbCgpKSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTI0MSw2ICsyNDUsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgQXJnCiAgICAgY2FzZSBBcmc6OkRvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5wcmludCgiRG91
YmxlQ29uZCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlN0YXR1c0NvbmQ6Cisg
ICAgICAgIG91dC5wcmludCgiU3RhdHVzQ29uZCIpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBBcmc6OlNwZWNpYWw6CiAgICAgICAgIG91dC5wcmludCgiU3BlY2lhbCIpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yODUsNiArMjkyLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpFYXJseURlZjoKICAgICAgICAgb3V0LnByaW50KCJF
YXJseURlZiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKKyAg
ICAgICAgb3V0LnByaW50KCJFYXJseVpEZWYiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
QXJnOjpTY3JhdGNoOgogICAgICAgICBvdXQucHJpbnQoIlNjcmF0Y2giKTsKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVsQ29uZCwKICAgICAg
ICAgUmVzQ29uZCwKICAgICAgICAgRG91YmxlQ29uZCwKKyAgICAgICAgU3RhdHVzQ29uZCwKICAg
ICAgICAgU3BlY2lhbCwKICAgICAgICAgV2lkdGhBcmcKICAgICB9OwpAQCAtMTUxLDYgKzE1Miw4
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gYXMgVXNlIGhhcyB1bmRlZmluZWQgYmVoYXZpb3I6IHRo
ZSB1c2UgbWF5IGhhcHBlbiBiZWZvcmUgdGhlIGRlZiwgb3IgaXQgbWF5IGhhcHBlbiBhZnRlcgog
ICAgICAgICAvLyBpdC4KICAgICAgICAgRWFybHlEZWYsCisgICAgICAgICAgICAKKyAgICAgICAg
RWFybHlaRGVmLAogCiAgICAgICAgIC8vIFNvbWUgaW5zdHJ1Y3Rpb25zIG5lZWQgYSBzY3JhdGNo
IHJlZ2lzdGVyLiBXZSBtb2RlbCB0aGlzIGJ5IHNheWluZyB0aGF0IHRoZSB0ZW1wb3JhcnkgaXMK
ICAgICAgICAgLy8gZGVmaW5lZCBlYXJseSBhbmQgdXNlZCBsYXRlLiBUaGlzIHJvbGUgaW1wbGll
cyB0aGF0LgpAQCAtMTg2LDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgog
ICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNh
c2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjA2LDYgKzIxMCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2Ug
RWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI4LDYg
KzIzMyw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNj
cmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgog
ICAgICAgICAgICAgcmV0dXJuIHJvbGU7CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICAgICAg
cmV0dXJuIENvbGRVc2U7CkBAIC0yNTMsNiArMjU5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNl
IExhdGVDb2xkVXNlOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlE
ZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjc0LDYgKzI4MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAg
ICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjk0LDYgKzMwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAg
ICBjYXNlIFVzZVpEZWY6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFy
bHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQpAQCAtMzE1LDYgKzMyNCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRl
Q29sZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBFYXJseURl
ZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMzAsNiArMzQwLDcgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAg
Y2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2Ny
YXRjaDoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTM1OCw2ICszNjksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgorICAgICAgICBjYXNl
IEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTMzLDYgKzU0NSwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIEFyZyBzdGF0dXNDb25kKE1h
Y3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQorICAgIHsKKyAgICAgICAg
QXJnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFN0YXR1c0NvbmQ7CisgICAgICAg
IHJlc3VsdC5tX29mZnNldCA9IGNvbmRpdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKICAgICBzdGF0aWMgQXJnIHNwZWNpYWwoQWlyOjpTcGVjaWFsKiBzcGVjaWFsKQogICAg
IHsKICAgICAgICAgQXJnIHJlc3VsdDsKQEAgLTY1OCwxMiArNjc4LDE4IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGtpbmQoKSA9PSBEb3VibGVDb25kOwogICAgIH0KIAorICAgIGJvb2wgaXNT
dGF0dXNDb25kKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0gU3RhdHVz
Q29uZDsKKyAgICB9CisKICAgICBib29sIGlzQ29uZGl0aW9uKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2Fz
ZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVz
Q29uZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUxLDYgKzg3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91Ymxl
Q29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAg
ICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg3Miw2
ICs4OTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBS
ZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29u
ZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAg
ICBjYXNlIEludmFsaWQ6CkBAIC0xMDU4LDYgKzEwODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNh
c2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNv
bmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAg
ICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTc3LDYg
KzEyMDYsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZUNvbmRpdGlvbj4obV9vZmZzZXQpOwogICAgIH0KICAgICAKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uIGFzU3RhdHVzQ29uZGl0aW9uKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChpc1N0YXR1c0NvbmQoKSk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uPihtX29mZnNldCk7CisgICAg
fQorICAgIAogICAgIC8vIFRlbGxzIHlvdSBpZiB0aGUgQXJnIGlzIGludmVydGlibGUuIE9ubHkg
Y29uZGl0aW9uIGFyZ3VtZW50cyBhcmUgaW52ZXJ0aWJsZSwgYW5kIGV2ZW4gZm9yIHRob3NlLCB0
aGVyZQogICAgIC8vIGFyZSBhIGZldyBleGNlcHRpb25zIC0gbm90YWJseSBPdmVyZmxvdyBhbmQg
U2lnbmVkLgogICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3QKQEAgLTExODQsNiArMTIxOSw3
IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxD
b25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAg
ICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OmlzSW52ZXJ0aWJsZShhc1Jlc3VsdENvbmRpdGlv
bigpKTsKQEAgLTEyMDQsNiArMTI0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBy
ZXNDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNSZXN1bHRDb25kaXRpb24oKSkpOwogICAg
ICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAgICAgICByZXR1cm4gZG91YmxlQ29uZChNYWNy
b0Fzc2VtYmxlcjo6aW52ZXJ0KGFzRG91YmxlQ29uZGl0aW9uKCkpKTsKKyAgICAgICAgY2FzZSBT
dGF0dXNDb25kOgorICAgICAgICAgICAgcmV0dXJuIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6
OmludmVydChhc1N0YXR1c0NvbmRpdGlvbigpKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIEFy
ZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxv
Y2suY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckJhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDYgKzM1LDE5IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UKIAogY29uc3QgY2hhciogY29uc3QgQmFz
aWNCbG9jazo6ZHVtcFByZWZpeCA9ICIjIjsKIAordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNz
b3JzKEZyZXF1ZW50ZWRCbG9jayB0YXJnZXQpCit7CisgICAgbV9zdWNjZXNzb3JzLnJlc2l6ZSgx
KTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0gPSB0YXJnZXQ7Cit9CisKK3ZvaWQgQmFzaWNCbG9jazo6
c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sgdGFrZW4sIEZyZXF1ZW50ZWRCbG9jayBub3RU
YWtlbikKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVzaXplKDIpOworICAgIG1fc3VjY2Vzc29yc1sw
XSA9IHRha2VuOworICAgIG1fc3VjY2Vzc29yc1sxXSA9IG5vdFRha2VuOworfQorCiBib29sIEJh
c2ljQmxvY2s6OmFkZFByZWRlY2Vzc29yKEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIHJldHVy
biBCMzo6YWRkUHJlZGVjZXNzb3IodGhpcywgYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzMsNyArMzMsMTEgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwordGVtcGxh
dGU8dHlwZW5hbWU+IGNsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDsKKworbmFtZXNwYWNl
IEFpciB7CiAKIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogY2xhc3MgQ29kZTsKQEAgLTk5LDYg
KzEwMyw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAgICAgU3VjY2Vzc29yTGlzdCYgc3VjY2Vz
c29ycygpIHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQogCisgICAgdm9pZCBzZXRTdWNjZXNzb3Jz
KEZyZXF1ZW50ZWRCbG9jayk7CisgICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9j
aywgRnJlcXVlbnRlZEJsb2NrKTsKKwogICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3NvckJsb2NrKHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBzdWNjZXNzb3IoaW5kZXgpLmJsb2NrKCk7IH0K
ICAgICBCYXNpY0Jsb2NrKiYgc3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJu
IHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQogICAgIFN1Y2Nlc3NvckNvbGxlY3Rpb248QmFz
aWNCbG9jaywgU3VjY2Vzc29yTGlzdD4gc3VjY2Vzc29yQmxvY2tzKCkKQEAgLTEzMyw2ICsxNDAs
NyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKICAgICBm
cmllbmQgY2xhc3MgQ29kZTsKICAgICBmcmllbmQgY2xhc3MgSW5zZXJ0aW9uU2V0OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgQjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNl
dDsKICAgICAKICAgICBCYXNpY0Jsb2NrKHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlv
blNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJC
bG9ja0luc2VydGlvblNldC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRpb25TZXQuaCIK
KworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJCYXNpY0Jsb2NrLmgiCisjaW5j
bHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworQmxvY2tJbnNlcnRpb25T
ZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KENvZGUgJmNvZGUpCisgICAgOiBHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQoY29kZS5tX2Jsb2NrcykKK3sKK30KKworQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9j
a0luc2VydGlvblNldCgpCit7Cit9CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIK
KworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQor
CisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJBaXJD
b2RlLmgiCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCitj
bGFzcyBJbnNlcnRpb25TZXQ7CisKK3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJh
c2ljQmxvY2s+OjpCbG9ja0luc2VydGlvbiBCbG9ja0luc2VydGlvbjsKKworY2xhc3MgQmxvY2tJ
bnNlcnRpb25TZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+
IHsKK3B1YmxpYzoKKyAgICBCbG9ja0luc2VydGlvblNldChDb2RlJik7CisgICAgfkJsb2NrSW5z
ZXJ0aW9uU2V0KCk7CisgICAgCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBldmVudHVhbGx5IGlt
cGxlbWVudCBCMzo6QmxvY2tJbnNlcnRpb25TZXQncyBzcGxpdEZvcndhcmQoKS4KK307CisKK30g
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1w
QXNKUy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJBaXJEdW1wQXNKUy5oIgotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQotI2luY2x1
ZGUgIkFpckNvZGUuaCIKLSNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgotCi1uYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Ci0KLW5hbWVzcGFjZSB7Ci0KLUNT
dHJpbmcgdmFyTmFtZUZvckJsb2NrQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICByZXR1
cm4gdG9DU3RyaW5nKCJiYiIsIGluZGV4KTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKEJhc2ljQmxv
Y2sqIGJsb2NrKQotewotICAgIHJldHVybiB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KGJsb2NrLT5p
bmRleCgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lRm9yU3RhY2tTbG90QXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJzbG90IiwgaW5kZXgpOwotfQotCi1D
U3RyaW5nIHZhck5hbWUoU3RhY2tTbG90KiBzbG90KQotewotICAgIHJldHVybiB2YXJOYW1lRm9y
U3RhY2tTbG90QXRJbmRleChzbG90LT5pbmRleCgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKFJl
ZyByZWcpCi17Ci0gICAgcmV0dXJuIHRvQ1N0cmluZygiUmVnLiIsIHJlZy5kZWJ1Z05hbWUoKSk7
Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5kSW5kZXgoQmFuayBiYW5rLCB1
bnNpZ25lZCBpbmRleCkKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKGJhbmsgPT0gRlAgPyAiZiIg
OiAiIiwgInRtcCIsIGluZGV4KTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKFRtcCB0bXApCi17Ci0g
ICAgaWYgKHRtcC5pc1JlZygpKQotICAgICAgICByZXR1cm4gdmFyTmFtZSh0bXAucmVnKCkpOwot
ICAgIHJldHVybiB2YXJOYW1lRm9yVG1wV2l0aEJhbmtBbmRJbmRleChBcmcodG1wKS5iYW5rKCks
IHRtcC50bXBJbmRleCgpKTsKLX0KLQotfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLXZvaWQg
ZHVtcEFzSlMoQ29kZSYgY29kZSwgUHJpbnRTdHJlYW0mIG91dCkKLXsKLSAgICBvdXQucHJpbnRs
bigibGV0IGNvZGUgPSBuZXcgQ29kZSgpOyIpOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjb2RlLnNpemUoKTsgKytpKQotICAgICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZh
ck5hbWVGb3JCbG9ja0F0SW5kZXgoaSksICIgPSBjb2RlLmFkZEJsb2NrKCk7Iik7Ci0gICAgCi0g
ICAgb3V0LnByaW50bG4oImxldCBoYXNoOyIpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNvZGUuc3RhY2tTbG90cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFN0YWNrU2xvdCog
c2xvdCA9IGNvZGUuc3RhY2tTbG90cygpW2ldOwotICAgICAgICBpZiAoc2xvdCkgewotICAgICAg
ICAgICAgb3V0LnByaW50bG4oImxldCAiLCB2YXJOYW1lKHNsb3QpLCAiID0gY29kZS5hZGRTdGFj
a1Nsb3QoIiwgc2xvdC0+Ynl0ZVNpemUoKSwgIiwgIiwgc2xvdC0+a2luZCgpLCAiKTsiKTsKLSAg
ICAgICAgICAgIGlmIChzbG90LT5vZmZzZXRGcm9tRlAoKSkKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbih2YXJOYW1lKHNsb3QpLCAiLnNldE9mZnNldEZyb21GUCgiLCBzbG90LT5vZmZzZXRG
cm9tRlAoKSwgIik7Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiaGFzaCA9ICIsIHZhck5h
bWUoc2xvdCksICIuaGFzaCgpOyIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oImlmIChoYXNo
ICE9ICIsIHNsb3QtPmpzSGFzaCgpLCAiKSIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oIiAg
ICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgaGFzaDogXCIgKyBoYXNoKTsiKTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBvdXQucHJpbnRsbigiY29kZS5hZGRTdGFja1Nsb3QoMSwgU3BpbGwp
OyIpOwotICAgIH0KLSAgICAKLSAgICBmb3JFYWNoQmFuaygKLSAgICAgICAgWyZdIChCYW5rIGJh
bmspIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGUubnVtVG1wcyhiYW5rKTsg
aS0tOykgewotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAg
ICAibGV0ICIsIHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZEluZGV4KGJhbmssIGkpLCAiID0gY29k
ZS5uZXdUbXAoIiwgYmFuaywgIik7Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAg
IAotICAgIG91dC5wcmludGxuKCJsZXQgaW5zdDsiKTsKLSAgICBvdXQucHJpbnRsbigibGV0IGFy
ZzsiKTsKLSAgICAKLSAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogY29kZSkgewotICAgICAg
ICBmb3IgKEZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7
Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICB2YXJOYW1lKGJsb2Nr
KSwgIi5zdWNjZXNzb3JzLnB1c2gobmV3IEZyZXF1ZW50ZWRCbG9jaygiLAotICAgICAgICAgICAg
ICAgIHZhck5hbWUoc3VjY2Vzc29yLmJsb2NrKCkpLCAiLCAiLCBzdWNjZXNzb3IuZnJlcXVlbmN5
KCksICIpKTsiKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZm9yIChCYXNpY0Jsb2Nr
KiBwcmVkZWNlc3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMoKSkKLSAgICAgICAgICAgIG91dC5w
cmludGxuKHZhck5hbWUoYmxvY2spLCAiLnByZWRlY2Vzc29ycy5wdXNoKCIsIHZhck5hbWUocHJl
ZGVjZXNzb3IpLCAiKTsiKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoSW5zdCYgaW5zdCA6ICpi
bG9jaykgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGRvIHNvbWV0aGluZyBm
b3IgZmxhZ3MuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYyNzUxCi0gICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdCA9IG5ldyBJbnN0
KCIsIGluc3Qua2luZC5vcGNvZGUsICIpOyIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
bnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xl
LCBCYW5rLCBXaWR0aCkgewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFyZy5raW5kKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkludmFsaWQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBBcmc6OlRtcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxu
KCJhcmcgPSBBcmcuY3JlYXRlVG1wKCIsIHZhck5hbWUoYXJnLnRtcCgpKSwgIik7Iik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6SW1tOgotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVJbW0oIiwgYXJnLnZhbHVlKCksICIpOyIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkJpZ0ltbToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBB
cmcuY3JlYXRlQmlnSW1tKCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkpLCAiLCAiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52YWx1ZSgpID4+IDMyKSwgIik7Iik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6Qml0SW1tOgotICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVCaXRJbW0oIiwgYXJnLnZhbHVlKCksICIp
OyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkJpdEltbTY0OgotICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImFyZyA9IEFyZy5jcmVhdGVCaXRJbW02NCgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52YWx1ZSgpKSwgIiwgIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSA+PiAzMiksICIp
OyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkFkZHI6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJn
ID0gQXJnLmNyZWF0ZUFkZHIoIiwgdmFyTmFtZShhcmcuYmFzZSgpKSwgIiwgIiwgYXJnLm9mZnNl
dCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpTdGFjazoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJhcmcgPSBBcmcuY3JlYXRlU3RhY2soIiwgdmFyTmFtZShhcmcuc3RhY2tTbG90KCkpLCAi
LCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6
OkNhbGxBcmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJn
LmNyZWF0ZUNhbGxBcmcoIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQXJnOjpJbmRleDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxu
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlSW5kZXgoIiwg
dmFyTmFtZShhcmcuYmFzZSgpKSwgIiwgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXJOYW1lKGFyZy5pbmRleCgpKSwgIiwgIiwgYXJnLnNjYWxlKCksICIsICIsIGFyZy5vZmZzZXQo
KSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6UmVsQ29uZDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlUmVsQ29uZCgi
LCBhcmcuYXNSZWxhdGlvbmFsQ29uZGl0aW9uKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OlJlc0NvbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRs
bigiYXJnID0gQXJnLmNyZWF0ZVJlc0NvbmQoIiwgYXJnLmFzUmVzdWx0Q29uZGl0aW9uKCksICIp
OyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkRvdWJsZUNvbmQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZURvdWJsZUNvbmQo
IiwgYXJnLmFzRG91YmxlQ29uZGl0aW9uKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBcmc6OlNwZWNpYWw6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigi
YXJnID0gQXJnLmNyZWF0ZVNwZWNpYWwoKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
QXJnOjpXaWR0aEFyZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcg
PSBBcmcuY3JlYXRlV2lkdGhBcmcoIiwgYXJnLndpZHRoKCksICIpOyIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmFyZ3MucHVzaChh
cmcpOyIpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAoaW5zdC5raW5kLm9wY29kZSA9PSBQYXRjaCkgewotICAgICAgICAgICAgICAgIGlmIChpbnN0
Lmhhc05vbkFyZ0VmZmVjdHMoKSkKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImlu
c3QucGF0Y2hIYXNOb25BcmdFZmZlY3RzID0gdHJ1ZTsiKTsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncyA9
IG5ldyBTZXQoKTsiKTsKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUNs
b2JiZXJlZFJlZ3MgPSBuZXcgU2V0KCk7Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5leHRyYUVh
cmx5Q2xvYmJlcmVkUmVncygpLmZvckVhY2goCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoUmVn
IHJlZykgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFF
YXJseUNsb2JiZXJlZFJlZ3MuYWRkKCIsIHZhck5hbWUocmVnKSwgIik7Iik7Ci0gICAgICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGluc3QuZXh0cmFDbG9iYmVyZWRSZWdzKCku
Zm9yRWFjaCgKLSAgICAgICAgICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MuYWRkKCIs
IHZhck5hbWUocmVnKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LnBhdGNoQXJnRGF0YSA9
IFtdOyIpOwotICAgICAgICAgICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAg
ICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImluc3QucGF0Y2hBcmdEYXRhLnB1c2goe3JvbGU6IEFyZy4iLCByb2xlLCAi
LCB0eXBlOiAiLCBiYW5rLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIHdpZHRoOiAi
LCB3aWR0aCwgIn0pOyIpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gQ0NhbGwg
fHwgaW5zdC5raW5kLm9wY29kZSA9PSBDb2xkQ0NhbGwpIHsKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbigiaW5zdC5jQ2FsbFR5cGUgPSAiLCBpbnN0Lm9yaWdpbi0+dHlwZSgpKTsKLSAgICAg
ICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5jQ2FsbEFyZ1R5cGVzID0gW107Iik7Ci0gICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGluc3Qub3JpZ2luLT5udW1DaGls
ZHJlbigpOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxs
QXJnVHlwZXMucHVzaCgiLCBpbnN0Lm9yaWdpbi0+Y2hpbGQoaSktPnR5cGUoKSwgIik7Iik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJoYXNo
ID0gaW5zdC5oYXNoKCk7Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiaWYgKGhhc2ggIT0g
IiwgaW5zdC5qc0hhc2goKSwgIikiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCIgICAgdGhy
b3cgbmV3IEVycm9yKFwiQmFkIGhhc2g6IFwiICsgaGFzaCk7Iik7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoYmxvY2spLCAiLmFwcGVuZChpbnN0KTsiKTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgot
Ci0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJEdW1wQXNKUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRHVtcEFzSlMuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewot
Ci1jbGFzcyBDb2RlOwotCi0vLyBUaGlzIGlzIHVzZWQgZm9yIGJlbmNobWFya2luZy4gVmFyaW91
cyBvcGVyYXRpb25zIG9uIEFpciBhcmUgaW50ZXJlc3RpbmcgZnJvbSBhIGJlbmNobWFya2luZwot
Ly8gc3RhbmRwb2ludC4gV2UgY2FuIHdyaXRlIHNvbWUgQWlyIHBoYXNlcyBpbiBKUyBhbmQgdGhl
biB1c2UgdGhhdCB0byBiZW5jaG1hcmsgSlMuIFRoZSBiZW5jaG1hcmsKLS8vIGlzIGNhbGxlZCBK
U0FpciwgYW5kIGl0J3MgaW4gUGVyZm9ybWFuY2VUZXN0cy9KU0Fpci4KLXZvaWQgZHVtcEFzSlMo
Q29kZSYsIFByaW50U3RyZWFtJik7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIK
LQotI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckdlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDYgQEAKICNpbmNsdWRlICJBaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmlu
Zy5oIgogI2luY2x1ZGUgIkFpckFsbG9jYXRlU3RhY2suaCIKICNpbmNsdWRlICJBaXJDb2RlLmgi
Ci0jaW5jbHVkZSAiQWlyRHVtcEFzSlMuaCIKICNpbmNsdWRlICJBaXJFbGltaW5hdGVEZWFkQ29k
ZS5oIgogI2luY2x1ZGUgIkFpckZpeE9idmlvdXNTcGlsbHMuaCIKICNpbmNsdWRlICJBaXJGaXhQ
YXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKQEAgLTczLDYgKzcyLDggQEAgdm9pZCBwcmVwYXJlRm9y
R2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgICAgICBkYXRhTG9nKCJJbml0aWFsIGFpcjpcbiIp
OwogICAgICAgICBkYXRhTG9nKGNvZGUpOwogICAgIH0KKyAgICAKKyAgICBzaW1wbGlmeUNGRyhj
b2RlKTsKIAogICAgIGxvd2VyTWFjcm9zKGNvZGUpOwogCkBAIC0xMDcsMjMgKzEwOCwxMSBAQCB2
b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAgLy8gZG9lcyB0aGluZ3Mg
bGlrZSBpZGVudGlmeSB3aGljaCBjYWxsZWUtc2F2ZXMgd2UncmUgdXNpbmcgYW5kIHNhdmVzIHRo
ZW0uCiAgICAgaGFuZGxlQ2FsbGVlU2F2ZXMoY29kZSk7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6
OmR1bXBBaXJBc0pTQmVmb3JlQWxsb2NhdGVTdGFjaygpKSB7Ci0gICAgICAgIGRhdGFMb2coIkR1
bXBpbmcgQWlyIGFzIEpTIGJlZm9yZSBhbGxvY2F0ZVN0YWNrOlxuIik7Ci0gICAgICAgIGR1bXBB
c0pTKGNvZGUsIFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAgICAgIGRhdGFMb2coIkFpciBoYXNoOiAi
LCBjb2RlLmpzSGFzaCgpLCAiXG4iKTsKLSAgICB9Ci0KICAgICAvLyBUaGlzIHR1cm5zIGFsbCBT
dGFjayBhbmQgQ2FsbEFyZyBBcmdzIGludG8gQWRkciBhcmdzIHRoYXQgdXNlIHRoZSBmcmFtZSBw
b2ludGVyLiBJdCBkb2VzCiAgICAgLy8gdGhpcyBieSBmaXJzdC1maXQgYWxsb2NhdGluZyBzdGFj
ayBzbG90cy4gSXQgc2hvdWxkIGJlIHByZXR0eSBkYXJuIGNsb3NlIHRvIG9wdGltYWwsIHNvIHdl
CiAgICAgLy8gc2hvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhpcyB2ZXJ5IG11Y2guCiAg
ICAgYWxsb2NhdGVTdGFjayhjb2RlKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6ZHVtcEFpckFm
dGVyQWxsb2NhdGVTdGFjaygpKSB7Ci0gICAgICAgIGRhdGFMb2coIkR1bXBpbmcgQWlyIGFmdGVy
IGFsbG9jYXRlU3RhY2s6XG4iKTsKLSAgICAgICAgZGF0YUxvZyhjb2RlKTsKLSAgICAgICAgZGF0
YUxvZygiQWlyIGhhc2g6ICIsIGNvZGUuanNIYXNoKCksICJcbiIpOwotICAgIH0KLQogICAgIC8v
IElmIHdlIGNvYWxlc2NlZCBtb3ZlcyB0aGVuIHdlIGNhbiB1bmJyZWFrIGNyaXRpY2FsIGVkZ2Vz
LiBUaGlzIGlzIHRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcwogICAgIC8vIHBoYXNlLgogICAgIHNp
bXBsaWZ5Q0ZHKGNvZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJ
bnN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlySW5zdElubGluZXMuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3
LDY1IEBAIGlubGluZSBib29sIGlzWDg2VURpdjY0VmFsaWQoY29uc3QgSW5zdCYKICAgICByZXR1
cm4gaXNYODZEaXZIZWxwZXJWYWxpZChpbnN0KTsKIH0KIAoraW5saW5lIGJvb2wgaXNBdG9taWNT
dHJvbmdDQVNWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworI2lmIENQVShYODYpIHx8IENQVShY
ODZfNjQpCisgICAgc3dpdGNoIChpbnN0LmFyZ3Muc2l6ZSgpKSB7CisgICAgY2FzZSAzOgorICAg
ICAgICByZXR1cm4gaW5zdC5hcmdzWzBdID09IFRtcChYODZSZWdpc3RlcnM6OmVheCk7CisgICAg
Y2FzZSA1OgorICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzFdID09IFRtcChYODZSZWdpc3RlcnM6
OmVheCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRp
ZiAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0
b21pY1N0cm9uZ0NBU1ZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGluc3Qu
YXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworfQorCitpbmxpbmUgYm9vbCBpc0F0
b21pY1N0cm9uZ0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0
b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9u
Z0NBUzE2VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNBdG9taWNTdHJv
bmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVMzMlZh
bGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFs
aWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTNjRWYWxpZChjb25z
dCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3Qp
OworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzhWYWxpZChjb25zdCBJ
bnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGlu
c3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzE2VmFsaWQoY29u
c3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxp
ZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVMzMlZhbGlk
KGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FT
VmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTNjRW
YWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9u
Z0NBU1ZhbGlkKGluc3QpOworfQorCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCiAK
ICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE3LDYg
KzExNyw3IEBAIEFkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICB4ODY6IEltbSwgSW5kZXgKICAg
ICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAg
eDg2OiBUbXAsIEFkZHIKICAgICB4ODY6IFRtcCwgSW5kZXgKIApAQCAtMTM1LDkgKzEzNiwxMiBA
QCB4ODY6IEFkZDE2IFU6RzoxNiwgVUQ6RzoxNgogNjQ6IEFkZDY0IFU6Rzo2NCwgVUQ6Rzo2NAog
ICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAg
ICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAg
eDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKIAogNjQ6IEFkZDY0IFU6Rzo2NCwg
VTpHOjY0LCBEOkc6NjQKICAgICBJbW0sIFRtcCwgVG1wCkBAIC0xNjYsOSArMTcwLDEyIEBAIHg4
NjogQWRkRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiBTdWIzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAg
VG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIElt
bSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6
IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogCiBhcm02NDogU3ViMzIgVTpHOjMyLCBV
Okc6MzIsIEQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTE3Niw5ICsxODMsMTIgQEAgYXJt
NjQ6IFN1YjMyIFU6RzozMiwgVTpHOjMyLCBEOkc6MzIKIDY0OiBTdWI2NCBVOkc6NjQsIFVEOkc6
NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4
CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAog
ICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAKIGFybTY0OiBTdWI2NCBV
Okc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMjA0LDkgKzIxNCwx
MiBAQCB4ODY6IFN1YkZsb2F0IFU6RjozMiwgVUQ6RjozMgogTmVnMzIgVVpEOkc6MzIKICAgICBU
bXAKICAgICB4ODY6IEFkZHIKKyAgICB4ODY6IEluZGV4CiAKIDY0OiBOZWc2NCBVRDpHOjY0CiAg
ICAgVG1wCisgICAgeDg2OiBBZGRyCisgICAgeDg2OiBJbmRleAogCiBhcm02NDogTmVnYXRlRG91
YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAgLTMzMCw4ICszNDMsMTEgQEAgQW5k
MzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAg
IHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAK
KyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJ
bmRleAogCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBU
bXAKQEAgLTMzOSw3ICszNTUsMTMgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogCiB4ODZfNjQ6
IEFuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCi0gICAgeDg2OiBJbW0sIFRtcAor
ICAgIEltbSwgVG1wCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCiAKIEFuZERv
dWJsZSBVOkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDU5LDgg
KzQ4MSwxMSBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4Njog
SW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogICAgIHg4
NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAg
ICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IE9yNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAg
IFRtcCwgVG1wLCBUbXAKQEAgLTQ2OSw2ICs0OTQsMTIgQEAgT3IzMiBVOkc6MzIsIFVaRDpHOjMy
CiA2NDogT3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBU
bXAKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogVG1w
LCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6
IEluZGV4LCBUbXAKIAogWG9yMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRt
cCwgVG1wCkBAIC00ODAsOCArNTExLDExIEBAIFhvcjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBU
bXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4Njog
VG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAg
eDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IFhvcjY0IFU6Rzo2NCwg
VTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00OTAsNiArNTI0LDExIEBAIFhv
cjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBYb3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAs
IFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBB
ZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4
NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBUbXAKIAogYXJtNjQ6IE5vdDMyIFU6RzozMiwg
WkQ6RzozMgpAQCAtNDk4LDEzICs1MzcsMTUgQEAgYXJtNjQ6IE5vdDMyIFU6RzozMiwgWkQ6Rzoz
MgogeDg2OiBOb3QzMiBVWkQ6RzozMgogICAgIFRtcAogICAgIEFkZHIKKyAgICBJbmRleAogCiBh
cm02NDogTm90NjQgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcAogCi14ODY6IE5vdDY0IFVE
Okc6NjQKK3g4Nl82NDogTm90NjQgVUQ6Rzo2NAogICAgIFRtcAogICAgIEFkZHIKKyAgICBJbmRl
eAogCiBhcm02NDogQWJzRG91YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAgLTY2
OCwyNyArNzA5LDM4MyBAQCBMb2FkOCBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAg
IEluZGV4LCBUbXAKIAorTG9hZEFjcTggVTpHOjgsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAg
ICBJbmRleCwgVG1wCisKIFN0b3JlOCBVOkc6OCwgRDpHOjgKICAgICBUbXAsIEluZGV4CiAgICAg
VG1wLCBBZGRyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJbW0sIEFkZHIKIAorU3Rv
cmVSZWw4IFU6Rzo4LCBEOkc6OAorICAgIFRtcCwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICB4
ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorCiBMb2FkOFNpZ25lZEV4dGVuZFRv
MzIgVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRB
Y3E4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIElu
ZGV4LCBUbXAKKwogTG9hZDE2IFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIElu
ZGV4LCBUbXAKIAorTG9hZEFjcTE2IFU6RzoxNiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAg
IEluZGV4LCBUbXAKKwogTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKICAg
ICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIg
VTpHOjE2LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCiBTdG9yZTE2
IFU6RzoxNiwgRDpHOjE2CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgorICAgIHg4Njog
SW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisKK1N0b3JlUmVsMTYgVTpHOjE2LCBEOkc6
MTYKKyAgICBUbXAsIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4Cisg
ICAgeDg2OiBJbW0sIEFkZHIKKworTG9hZEFjcTMyIFU6RzozMiwgWkQ6RzozMgorICAgIEFkZHIs
IFRtcAorICAgIEluZGV4LCBUbXAKKworU3RvcmVSZWwzMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IElt
bSwgSW5kZXgKKworNjQ6IExvYWRBY3E2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAK
KyAgICBJbmRleCwgVG1wCisKKzY0OiBTdG9yZVJlbDY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1t
LCBJbmRleAorCisjIFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4KKyMgRklYTUU6IFRoaXMgZm9y
bXVsYXRpb24gbWVhbnMgdGhhdCB0aGUgYm9vbGVhbiByZXN1bHQgY2Fubm90IGJlIHB1dCBpbiBl
YXgsIGV2ZW4gdGhvdWdoIGFsbCB1c2VycworIyBvZiB0aGlzIHdvdWxkIGJlIE9LIHdpdGggdGhh
dC4KK3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIsIFVEOkc6OCwgVTpHOjgsIFVEOkc6OCwg
WkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXND
b25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVOkc6
MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1w
KiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAK
KworeDg2OiBBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6Rzoz
MiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0
dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2XzY0OiBBdG9taWNTdHJvbmdDQVM2
NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCwgWkQ6Rzo4CisgICAgU3RhdHVzQ29u
ZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4
LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVM4IFVEOkc6OCwgVTpHOjgsIFVEOkc6OAorICAg
IFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdHJv
bmdDQVMxNiBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAg
ICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMzIgVUQ6RzozMiwgVTpH
OjMyLCBVRDpHOjMyCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAor
Cit4ODZfNjQ6IEF0b21pY1N0cm9uZ0NBUzY0IFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NAorICAg
IFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9t
aWNTdHJvbmdDQVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4IC9icmFuY2gKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIElu
ZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6
MzIsIFVEOkc6MTYgL2JyYW5jaAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAg
IFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdD
QVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiAvYnJhbmNoCisgICAgU3RhdHVz
Q29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAor
Cit4ODZfNjQ6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0
LCBVRDpHOjY0IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQWRkOCBVOkc6OCwgVUQ6
Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQxNiBVOkc6MTYsIFVEOkc6MTYKKyAgICBJbW0sIEFk
ZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IEF0b21pY0FkZDMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljQWRkNjQg
VTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwg
QWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWI4IFU6Rzo4LCBVRDpHOjgKKyAg
ICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODY6IEF0b21pY1N1YjE2IFU6RzoxNiwgVUQ6RzoxNgorICAgIEltbSwgQWRkcgorICAg
IEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
U3ViMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNTdWI2NCBVOkc6NjQs
IFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDggVTpHOjgsIFVEOkc6OAorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljQW5kMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBbmQzMiBV
Okc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY0FuZDY0IFU6Rzo2NCwgVUQ6Rzo2
NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogQXRvbWljT3I4IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21p
Y09yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNPcjMyIFU6RzozMiwgVUQ6
RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljT3I2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0s
IEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODY6IEF0b21pY1hvcjggVTpHOjgsIFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9yMTYgVTpH
OjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYb3IzMiBVOkc6MzIsIFVEOkc6MzIKKyAg
ICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODZfNjQ6IEF0b21pY1hvcjY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgor
ICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRv
bWljTmVnOCBVRDpHOjgKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOZWcxNiBV
RDpHOjE2CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTmVnMzIgVUQ6RzozMgor
ICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0b21pY05lZzY0IFVEOkc6NjQKKyAgICBB
ZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3Q4IFVEOkc6OAorICAgIEFkZHIKKyAgICBJ
bmRleAorCit4ODY6IEF0b21pY05vdDE2IFVEOkc6MTYKKyAgICBBZGRyCisgICAgSW5kZXgKKwor
eDg2OiBBdG9taWNOb3QzMiBVRDpHOjMyCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Nl82NDog
QXRvbWljTm90NjQgVUQ6Rzo2NAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY1hj
aGdBZGQ4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODY6IEF0b21pY1hjaGdBZGQxNiBVRDpHOjE2LCBVRDpHOjE2CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQzMiBVRDpHOjMyLCBVRDpHOjMyCisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hjaGdBZGQ2NCBVRDpH
OjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21p
Y1hjaGc4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODY6IEF0b21pY1hjaGcxNiBVRDpHOjE2LCBVRDpHOjE2CisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODY6IEF0b21pY1hjaGczMiBVRDpHOjMyLCBVRDpHOjMyCisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hjaGc2NCBVRDpHOjY0LCBVRDpH
OjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCithcm02NDogTG9hZExpbms4IFU6
Rzo4LCBaRDpHOjgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2Fk
TGlua0FjcTggVTpHOjgsIFpEOkc6OAorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwor
IyBTdXBlciBjb25mdXNpbmcgZmFjdDogdGhpcyByZXR1cm5zIDAgdG8gbWVhbiBzdWNjZXNzLCAx
IHRvIG1lYW4gZmFpbHVyZS4KK2FybTY0OiBTdG9yZUNvbmQ4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6
OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9y
ZUNvbmRSZWw4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAg
VG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGluazE2IFU6RzoxNiwgWkQ6RzoxNgorICAg
IEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMTYgVTpHOjE2
LCBaRDpHOjE2CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVD
b25kMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRt
cCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMTYgVTpHOjE2LCBEOkc6MTYsIEVa
RDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDog
TG9hZExpbmszMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1w
CisKK2FybTY0OiBMb2FkTGlua0FjcTMyIFU6RzozMiwgWkQ6RzozMgorICAgIEFkZHIsIFRtcAor
ICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6
Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0
b3JlQ29uZFJlbDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAK
KyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rNjQgVTpHOjY0LCBaRDpHOjY0
CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02NDogTG9hZExpbmtBY3E2NCBV
Okc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBT
dG9yZUNvbmQ2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisg
ICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw2NCBVOkc6NjQsIEQ6Rzo2
NCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2Fy
bTY0OiBEZXBlbmQzMiBVOkc6MzIsIEQ6RzozMgorICAgIFRtcCwgVG1wCisKK2FybTY0OiBEZXBl
bmQ2NCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wCiAKIENvbXBhcmUzMiBVOkc6MzIsIFU6
RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAsIFRtcApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3B0aW1pemVCbG9j
a09yZGVyLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTc3LDYg
KzE3NywxMCBAQCB2b2lkIG9wdGltaXplQmxvY2tPcmRlcihDb2RlJiBjb2RlKQogICAgICAgICBj
YXNlIEJyYW5jaFN1YjY0OgogICAgICAgICBjYXNlIEJyYW5jaE5lZzMyOgogICAgICAgICBjYXNl
IEJyYW5jaE5lZzY0OgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzg6CisgICAg
ICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTY6CisgICAgICAgIGNhc2UgQnJhbmNoQXRv
bWljU3Ryb25nQ0FTMzI6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQ6CiAg
ICAgICAgICAgICBpZiAoY29kZS5maW5kTmV4dEJsb2NrKGJsb2NrKSA9PSBibG9jay0+c3VjY2Vz
c29yQmxvY2soMCkgJiYgYnJhbmNoLmFyZ3NbMF0uaXNJbnZlcnRpYmxlKCkpIHsKICAgICAgICAg
ICAgICAgICBzdGQ6OnN3YXAoYmxvY2stPnN1Y2Nlc3NvcigwKSwgYmxvY2stPnN1Y2Nlc3Nvcigx
KSk7CiAgICAgICAgICAgICAgICAgYnJhbmNoLmFyZ3NbMF0gPSBicmFuY2guYXJnc1swXS5pbnZl
cnRlZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZl
cmVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
UGFkSW50ZXJmZXJlbmNlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCw3IEBAIHZvaWQgcGFkSW50ZXJmZXJlbmNlKENvZGUmIGNvZGUpCiAgICAgICAgICAg
ICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywgV2lkdGgpIHsKICAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChyb2xlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKICAg
ICAgICAgICAgICAgICAgICAgICAgIGhhc0Vhcmx5RGVmID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6TGF0ZVVzZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZl
cnl0aGluZy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1
NSw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgQXJnOjpMYXRlQ29sZFVzZToKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6
OlNjcmF0Y2g6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseURlZjoKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcihiYW5rKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0QmVmb3JlLmdldChyZWcpICYmICFzZXRB
ZnRlci5nZXQocmVnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBZnRl
ci5zZXQocmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dl
bmVyYXRvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29w
Y29kZV9nZW5lcmF0b3IucmIJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkod29ya2luZyBjb3B5KQpAQCAtNTEsMTQg
KzUxLDQ5IEBAIGNsYXNzIEFyZwogICAgICAgICBAYmFuayA9IGJhbmsKICAgICAgICAgQHdpZHRo
ID0gd2lkdGgKICAgICBlbmQKLQotICAgIGRlZiB3aWR0aENvZGUKKyAgICAKKyAgICBkZWYgc2Vs
Zi53aWR0aENvZGUod2lkdGgpCiAgICAgICAgIGlmIHdpZHRoID09ICJQdHIiCiAgICAgICAgICAg
ICAicG9pbnRlcldpZHRoKCkiCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICJXaWR0aCN7d2lk
dGh9IgogICAgICAgICBlbmQKICAgICBlbmQKKworICAgIGRlZiB3aWR0aENvZGUKKyAgICAgICAg
QXJnLndpZHRoQ29kZSh3aWR0aCkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5yb2xlQ29k
ZShyb2xlKQorICAgICAgICBjYXNlIHJvbGUKKyAgICAgICAgd2hlbiAiVSIKKyAgICAgICAgICAg
ICJVc2UiCisgICAgICAgIHdoZW4gIkQiCisgICAgICAgICAgICAiRGVmIgorICAgICAgICB3aGVu
ICJaRCIKKyAgICAgICAgICAgICJaRGVmIgorICAgICAgICB3aGVuICJVRCIKKyAgICAgICAgICAg
ICJVc2VEZWYiCisgICAgICAgIHdoZW4gIlVaRCIKKyAgICAgICAgICAgICJVc2VaRGVmIgorICAg
ICAgICB3aGVuICJVQSIKKyAgICAgICAgICAgICJVc2VBZGRyIgorICAgICAgICB3aGVuICJTIgor
ICAgICAgICAgICAgIlNjcmF0Y2giCisgICAgICAgIHdoZW4gIkVEIgorICAgICAgICAgICAgIkVh
cmx5RGVmIgorICAgICAgICB3aGVuICJFWkQiCisgICAgICAgICAgICAiRWFybHlaRGVmIgorICAg
ICAgICB3aGVuICJMVSIKKyAgICAgICAgICAgICJMYXRlVXNlIgorICAgICAgICBlbHNlCisgICAg
ICAgICAgICByYWlzZQorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcm9sZUNv
ZGUKKyAgICAgICAgQXJnLnJvbGVDb2RlKHJvbGUpCisgICAgZW5kCiBlbmQKIAogY2xhc3MgT3Zl
cmxvYWQKQEAgLTE4Miw3ICsyMTcsNyBAQCBkZWYgbGV4KHN0ciwgZmlsZU5hbWUpCiBlbmQKIAog
ZGVmIGlzUm9sZSh0b2tlbikKLSAgICB0b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChaRCl8KFVa
RCl8KFVBKXwoUykpXFovCisgICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoWkQpfChVWkQp
fChVQSl8KFMpfChFRCl8KEVaRCl8KExVKSlcWi8KIGVuZAogCiBkZWYgaXNHRih0b2tlbikKQEAg
LTE5MCw3ICsyMjUsNyBAQCBkZWYgaXNHRih0b2tlbikKIGVuZAogCiBkZWYgaXNLaW5kKHRva2Vu
KQotICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwoQml0SW1tKXwoQml0SW1t
NjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpKVxaLwor
ICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwoQml0SW1tKXwoQml0SW1tNjQp
fChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpfChTdGF0dXND
b25kKSlcWi8KIGVuZAogCiBkZWYgaXNBcmNoKHRva2VuKQpAQCAtMjY0LDcgKzI5OSw3IEBAIGNs
YXNzIFBhcnNlcgogCiAgICAgZGVmIGNvbnN1bWVLaW5kCiAgICAgICAgIHJlc3VsdCA9IHRva2Vu
LnN0cmluZwotICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwg
Qml0SW1tLCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgb3Ig
RG91YmxlQ29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKKyAgICAgICAgcGFyc2VFcnJvcigi
RXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgQWRkciwg
SW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIERvdWJsZUNvbmQsIG9yIFN0YXR1c0NvbmQpIikgdW5s
ZXNzIGlzS2luZChyZXN1bHQpCiAgICAgICAgIGFkdmFuY2UKICAgICAgICAgcmVzdWx0CiAgICAg
ZW5kCkBAIC02MzQsMjggKzY2OSw3IEBAIHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewog
ICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUKLSAgICAg
ICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZSIKLSAg
ICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIkRlZiIK
LSAgICAgICAgICAgICAgICB3aGVuICJaRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJa
RGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlVEIgotICAgICAgICAgICAgICAgICAgICByb2xl
ID0gIlVzZURlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJVWkQiCi0gICAgICAgICAgICAgICAg
ICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJVQSIKLSAgICAgICAg
ICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAgICAgICAgIHdoZW4gIlMiCi0g
ICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2NyYXRjaCIKLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgZW5kCi0KLSAgICAg
ICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0sIEFyZzo6I3tyb2xl
fSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCisgICAgICAgICAgICAgICAgb3V0
cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7YXJnLnJvbGVDb2RlfSwgI3th
cmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCiAgICAgICAgICAgICB9CiAgICAgICAgIGVu
ZAogICAgIH0KQEAgLTgxOSw2ICs4MzMsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsK
ICAgICAgICAgICAgICAgICB3aGVuICJSZWxDb25kIgogICAgICAgICAgICAgICAgIHdoZW4gIlJl
c0NvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29uZCIKKyAgICAgICAgICAgICAg
ICB3aGVuICJTdGF0dXNDb25kIgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQga2luZDogI3traW5kLm5hbWV9IgogICAgICAgICAgICAg
ICAgIGVuZApAQCAtMTEwNSw2ICsxMTIwLDggQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7
CiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzUmVzdWx0
Q29uZGl0aW9uKCkiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29uZCIKICAgICAgICAg
ICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNEb3VibGVDb25kaXRpb24o
KSIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgorICAgICAgICAgICAgICAgICAg
ICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc1N0YXR1c0NvbmRpdGlvbigpIgogICAgICAg
ICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQogCkBAIC0xMTQ4LDI3ICsxMTY1LDcgQEAgRmls
ZS5vcGVuKCJKU0Fpcl9vcGNvZGUuanMiLCAidyIpIHsKICAgICAgICAgICAgICAgICBvdXRwLnB1
dHMgImNhc2UgI3tvdmVybG9hZC5zaWduYXR1cmUubGVuZ3RofToiIGlmIG5lZWRPdmVybG9hZFN3
aXRjaAogICAgICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXgg
ewogICAgICAgICAgICAgICAgICAgICB8IGFyZywgaW5kZXggfAotICAgICAgICAgICAgICAgICAg
ICByb2xlID0gbmlsCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUKLSAgICAgICAg
ICAgICAgICAgICAgd2hlbiAiVSIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNl
IgotICAgICAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAgICAgICAgICAg
cm9sZSA9ICJEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlpEIgotICAgICAgICAgICAg
ICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVRCIK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgotICAgICAgICAgICAgICAg
ICAgICB3aGVuICJVWkQiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZVpEZWYi
Ci0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlVBIgotICAgICAgICAgICAgICAgICAgICAgICAg
cm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJTIgotICAgICAgICAg
ICAgICAgICAgICAgICAgcm9sZSA9ICJTY3JhdGNoIgotICAgICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgICAgICBlbmQK
LSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaW5z
dC52aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7cm9sZX0sICN7YXJnLmJhbmt9UCwgI3th
cmcud2lkdGh9KTsiCisgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFy
Zygje2luZGV4fSwgZnVuYywgQXJnLiN7YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31QLCAje2Fy
Zy53aWR0aH0pOyIKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3V0cC5wdXRz
ICJicmVhazsiCiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxMyw5ICs0MTMsNiBAQCB0eXBl
ZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGR1bXBNb2R1bGVMb2Fk
aW5nU3RhdGUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGV4cG9zZUlu
dGVybmFsTW9kdWxlTG9hZGVyLCBmYWxzZSwgTm9ybWFsLCAiZXhwb3NlIHRoZSBpbnRlcm5hbCBt
b2R1bGUgbG9hZGVyIG9iamVjdCB0byB0aGUgZ2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dpbmciKSBc
CiAgICAgXAotICAgIHYoYm9vbCwgZHVtcEFpckFzSlNCZWZvcmVBbGxvY2F0ZVN0YWNrLCBmYWxz
ZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgdihib29sLCBkdW1wQWlyQWZ0ZXJBbGxvY2F0ZVN0
YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgXAogICAgIHYoYm9vbCwgdXNlU3Vw
ZXJTYW1wbGVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoYm9vbCwg
cmVwb3J0TExJbnRTdGF0cywgZmFsc2UsIENvbmZpZ3VyYWJsZSwgIlJlcG9ydHMgTExJbnQgc3Rh
dGlzdGljcyIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303150</attachid>
            <date>2017-03-01 17:40:44 -0800</date>
            <delta_ts>2017-03-01 20:52:47 -0800</delta_ts>
            <desc>x86 looks solid</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>299679</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI5OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMyBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAv
KiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87
IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQz
NDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNj
b3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5ODMyREFDMDA3RDRC
MTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDMsOCArMjI1MCw2IEBACiAJCURD
MjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIw
OTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVh
cENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRC
OEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1
QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8q
IFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREM2MDVCNUYxQ0Uy
NkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxl
clVJRC5jcHAgKi87IH07CkBAIC0yNzY0LDYgKzI3NjksMTMgQEAKIAkJMEYyQzYzQUMxRTYwQUUz
QzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4Mzkg
LyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7
IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2
M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9t
aWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQz
RTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0lu
c2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0
NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMv
YWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBh
dGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MxMUU2
NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRpdmVUcmFpdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQzNDAwN0Q0QjE5IC8q
IERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERD
MTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDc3OCw4ICs0NzkwLDYgQEAKIAkJREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8q
IElDU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUNTdGF0cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyog
SGVhcENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcENlbGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8q
IEhlYXBDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBD
ZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckR1bXBBc0pTLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJEdW1wQXNKUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJEdW1wQXNK
Uy5oOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuY3BwOyBwYXRo
ID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuaDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNUIx
Q0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyVUlELmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVy
VUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyOTIsNiArNTMwMiw4IEBA
CiAJCQkJMEZFQzg0QjMxQkRBQ0Q4ODAwODBGRjc0IC8qIGFpciAqLywKIAkJCQkwRkVDODRCNDFC
REFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRC
NTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmggKi8sCisJCQkJMEYyQzYz
QjMxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwICovLAorCQkJCTBGMkM2M0I0
MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8sCiAJCQkJMEYyQzYzQUIxRTYw
QUUzQzAwQzEzODM5IC8qIEIzQmFuay5jcHAgKi8sCiAJCQkJMEYyQzYzQUMxRTYwQUUzQzAwQzEz
ODM5IC8qIEIzQmFuay5oICovLAogCQkJCTBGRUM4NEI2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jh
c2ljQmxvY2suY3BwICovLApAQCAtNTM1NCw2ICs1MzY2LDcgQEAKIAkJCQkwRkVDODRDRDFCREFD
REFDMDA4MEZGNzQgLyogQjNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODRDRTFCREFD
REFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg0Q0YxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzR2VuZXJhdGUuaCAqLywKKwkJCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4Mzkg
LyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkVDODREMDFCREFDREFD
MDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg1QkYx
QkUxNjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmNwcCAqLywKIAkJCQkwRkVDODVDMDFCRTE2
N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLywKQEAgLTUzNzgsNiArNTM5MSw3IEBACiAJ
CQkJMEZFQzg0RDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuaCAqLywKIAkJCQkw
RjMzOEUwMzFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmNwcCAqLywKIAkJCQkw
RjMzOEUwNDFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmggKi8sCisJCQkJMEYy
QzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi8sCiAJCQkJMEYzMzhF
MDUxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0LmggKi8sCiAJCQkJMEYzMzhF
MDYxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5jcHAgKi8sCiAJCQkJMEYz
MzhFMDcxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5oICovLApAQCAtNTQ2
OSw2ICs1NDgzLDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5s
aW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2Nr
LmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5o
ICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNl
dC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0
aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29y
a2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdD
b252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC01NDgwLDggKzU0OTYsNiBAQAogCQkJCTBGMTBGMUEy
MUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAqLywKIAkJCQk3OUFCQjE3QjFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQk3OUFCQjE3QzFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmggKi8sCi0JCQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLywKLQkJCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4
QUYgLyogQWlyRHVtcEFzSlMuaCAqLywKIAkJCQkwRjQ1NzAzNjFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICovLAogCQkJCTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYy
OSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovLAogCQkJCTBGNjE4MzIzMUM0NUJGMDcwMDcy
NDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5jcHAgKi8sCkBAIC03MzI2LDYgKzczNDAsNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2
OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRjFFNjYwRUE1MDBDMTM4Mzkg
LyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAw
Rjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENE
NzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJ
ODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCkBAIC03MzU0
LDggKzczNjksOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3Nl
bWJsZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIx
IC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4
NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKQEAg
LTc5NDMsNyArNzk1OCw2IEBACiAJCQkJMEZFQzg1NzQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckND
YWxsU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzYxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTBGMUEzMUM0MjBCRjAwMDFDMDdE
MiAvKiBBaXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAotCQkJCURDNDU0QjhEMUQwMEU4MjQwMDRD
MThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NTcwMzkxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjYxODMyRDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNERFMUNGMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc5NTYsNiArNzk3MCw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckluc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3
RDcxRDlEQzQ0MjAwMUI5ODI1IC8qIEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2
M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjY4NEQ0MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUzNEMxQTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQ
cmVzc3VyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8q
IEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDQ3LDYgKzgwNjIs
NyBAQAogCQkJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQ
dHJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8q
IEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNG
NzAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjMzOEUwRTFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzM0ZDRkMxQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY2QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRl
VGFpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtODIzNyw2ICs4MjUzLDcgQEAKIAkJCQlBNzdBNDIz
RTE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNDMjFFNjY0QTVD
MDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc3
MTQzRkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQzRTQwMjFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4RDNEMDFCNTVBNkUwMDAy
QzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTgzNjYsNiArODM4Myw3IEBACiAJCQkJMEYzOTJDOEExQjQ2MTg4NDAwODQ0NzI4IC8qIERG
R09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdG
NTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYwMEM3
MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIxOUQwQkE3RDAw
QjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKQEAgLTk3OTIsNiArOTgx
MCw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTgwMiw3ICs5ODIxLDYgQEAKIAkJCQkwRkVD
ODU3MzFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTc1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0Ux
QzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMDI0OCw2ICsxMDI2Niw3IEBACiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8q
IEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVC
OEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQw
RTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMjY2LDYgKzEwMjg1LDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBB
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdB
NDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiIC8vIEhhdmUgdG8g
YnJlYWsgd2l0aCBzdHlsZSBiZWNhdXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpcyBhIHNo
YWR5IGhlYWRlci4KKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisKKyNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdURiB7CisK
K3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyQmFzZTo6U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBzd2l0Y2ggKGNvbmRp
dGlvbikgeworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN1Y2Nlc3M6Cisg
ICAgICAgIG91dC5wcmludCgiU3VjY2VzcyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6RmFpbHVyZToKKyAgICAgICAgb3V0LnByaW50KCJG
YWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0
Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUmFuZG9tLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NTAsOCArNTEsMjggQEAgbmFtZXNwYWNlIERGRyB7CiBzdHJ1Y3QgT1NSRXhpdDsKIH0KIAorY2xh
c3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgeworcHVibGljOgorICAgIGVudW0gU3RhdHVz
Q29uZGl0aW9uIHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgRmFpbHVyZQorICAgIH07Cisg
ICAgCisgICAgc3RhdGljIFN0YXR1c0NvbmRpdGlvbiBpbnZlcnQoU3RhdHVzQ29uZGl0aW9uIGNv
bmRpdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7CisgICAgICAgIGNh
c2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBGYWlsdXJlOworICAgICAgICBjYXNlIEZh
aWx1cmU6CisgICAgICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAgICAgICAgfQorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAg
ICB9Cit9OworCiB0ZW1wbGF0ZSA8Y2xhc3MgQXNzZW1ibGVyVHlwZSwgY2xhc3MgTWFjcm9Bc3Nl
bWJsZXJUeXBlPgotY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciB7CitjbGFzcyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlIHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwg
TWFjcm9Bc3NlbWJsZXJUeXBlPiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZTsKICAgICB0eXBl
ZGVmIEFzc2VtYmxlclR5cGUgQXNzZW1ibGVyVHlwZV9UOwpAQCAtMTEwOCwzICsxMTI5LDE2IEBA
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwgTWEKICNlbmRpZiAvLyBFTkFC
TEUoQVNTRU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKKworI2lmIEVOQUJMRShBU1NFTUJM
RVIpCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJh
c2U6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8g
RU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMi0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTM2LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IHR3b1RvVGhlMzI7IC8vIFRoaXMgaXMgc3VwZXIgdXNlZnVsIGZvciBzb21lIGRvdWJsZSBjb2Rl
LgogCiAgICAgLy8gVXRpbGl0aWVzIHVzZWQgYnkgdGhlIERGRyBKSVQuCisgICAgdXNpbmcgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OmludmVydDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
ckJhc2U6OmludmVydDsKICAgICAKICAgICBzdGF0aWMgRG91YmxlQ29uZGl0aW9uIGludmVydChE
b3VibGVDb25kaXRpb24gY29uZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDIx
Mjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBk
ZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFk
ZDMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CkBAIC0yNTEsMTYgKzI1
Niw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZDE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBhbmQxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmFuZGJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4
LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZz
ZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKEJhc2VJbmRleCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9
CisKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRs
X2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdf
aW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19pbShzdGF0
aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5k
OChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
bmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC00NTYsNiArNTE2LDMxIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNE
ZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgbmVnMzIoQmFzZUluZGV4IHNyY0Rlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdsX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3Qu
YmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBu
ZWcxNihBZGRyZXNzIHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20o
c3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihC
YXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3dfbShzcmNE
ZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsK
KyAgICB9CisKKyAgICB2b2lkIG5lZzgoQWRkcmVzcyBzcmNEZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubmVnYl9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgbmVnOChCYXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5lZ2JfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4
LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ycihzcmMs
IGRlc3QpOwpAQCAtNDcxLDE2ICs1NTYsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5vcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lk
IG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIub3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwg
ZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcndfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CisgICAgdm9pZCBvcjgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgb3I4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihBZGRyZXNz
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoQmFz
ZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7
CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbShpbW0ubV92YWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3
X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRp
Y19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIg
aW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9p
bShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCBvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC02NTQsMTYgKzc5NCw3MSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19p
bShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19j
YXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92YWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorCisgICAgdm9pZCBzdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50
MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9
CiAKKyAgICB2b2lkIHN1YjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5p
bmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3Jt
KHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWIxNihS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQg
c3ViOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuc3ViYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAg
IHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3Qu
aW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNjc3LDYgKzg3Miw1MCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3Js
X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZf
dD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRp
Y19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3J3X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBk
ZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0
aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5t
X3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92
YWx1ZSA9IHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1t
Lm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9y
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYg
KGltbS5tX3ZhbHVlID09IC0xKQpAQCAtNjkwLDExICs5MjksNDEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAg
fQogCisgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdp
c3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9y
d19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9y
MTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRl
c3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CiAgICAgdm9pZCB4b3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAg
ICAgfQogICAgIAorICAgIHZvaWQgeG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHhv
cjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC03NDEsNiArMTAxMCwzMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdDMyKEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbm90MTYoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgbm90MTYoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCBub3Q4KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5vdDgoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5u
b3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBzcXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcXJ0c2RfcnIoc3JjLCBkc3QpOwpA
QCAtMTA3MSw0MiArMTM2NSwyMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAgICAg
ICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNhbiBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVn
aXN0ZXJzOwotICAgICAgICAvLyBlc3AuLmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0
ZXJzIQotICAgICAgICBpZiAoc3JjID49IDQpIHsKLSAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1w
b3JhcnkgcmVnaXN0ZXIuCi0gICAgICAgICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRS
ZWdpc3RlcihhZGRyZXNzKTsKLQotICAgICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5
IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhlIHN0b3JlLgotICAgICAgICAgICAgc3dhcChzcmMsIHRl
bXApOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKLSAgICAgICAg
ICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2Vu
ZGlmCiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKICAgICB2
b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0jaWYg
Q1BVKFg4NikKLSAgICAgICAgLy8gT24gMzItYml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9t
IHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKLSAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0
byB0aGUgJ2gnIHJlZ2lzdGVycyEKLSAgICAgICAgaWYgKHNyYyA+PSA0KSB7Ci0gICAgICAgICAg
ICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLgotICAgICAgICAgICAgUmVnaXN0ZXJJRCB0
ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRkcmVzcyk7Ci0KLSAgICAgICAgICAgIC8vIFN3YXAg
dG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0byBwZXJmb3JtIHRoZSBzdG9yZS4KLSAgICAgICAg
ICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0odGVt
cCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7Ci0gICAgICAgICAgICBzd2FwKHNyYywg
dGVtcCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBt
X2Fzc2VtYmxlci5tb3Z3X3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAg
ICAgfQogCisgICAgdm9pZCBzdG9yZTE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3RvcmUxNihUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5t
b3Z3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7CisgICAgfQogCiAgICAgLy8gRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9u
OgogICAgIC8vCkBAIC0yNzQzLDc0ICszMDE4LDgzOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKDAsIDAsIFg4NlJlZ2lz
dGVyczo6ZXNwKTsKICAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsm
XSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsgfSk7CisgICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhh
dCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBv
biB4ODYuCi0gICAgdm9pZCBzdG9yZUZlbmNlKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAg
ICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAg
IH0KIAotICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9u
IG9mIG5vcm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBsb2Fk
RmVuY2UoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAgICBhdG9taWNTdHJv
bmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIu
Y21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFi
ZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNl
V2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlv
bi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4
cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsgfSk7CiAgICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSgpCisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAg
ICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHBhdGNoYWJsZUp1bXBT
aXplKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5k
ZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcykKICAgICB7Ci0gICAgICAgIGlmIChzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVj
a1N0YXRlOjpOb3RDaGVja2VkKQotICAgICAgICAgICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7Ci0g
ICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisgICAgdm9pZCBh
dG9taWNTdHJvbmdDQVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gQVZYIHN0aWxs
IGNhdXNlcyBteXN0ZXJpb3VzIHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4g
YmUgbWFzc2l2ZS4KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdG9taWNTdHJvbmdD
QVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdz
KCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAg
IGludCBmbGFncyA9IDA7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgaW50IGNwdUluZm9b
NF07Ci0gICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHgxKTsKLSAgICAgICAgZmxhZ3MgPSBjcHVJ
bmZvWzJdOwotI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQotI2lmIENQVShYODZfNjQpCi0g
ICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAg
ICAiY3B1aWQ7IgotICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDog
Ij1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlYngi
LCAiJWVjeCIsICIlZWR4IgotICAgICAgICAgICAgKTsKLSNlbHNlCi0gICAgICAgIGFzbSAoCi0g
ICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAicHVzaGwgJSVlYng7
IgotICAgICAgICAgICAgImNwdWlkOyIKLSAgICAgICAgICAgICJwb3BsICUlZWJ4OyIKLSAgICAg
ICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAg
ICAgICAgICAgOgotICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAg
ICAgICApOwotI2VuZGlmCisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2
KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5k
UmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwor
ICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0p
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBi
cmFuY2hBdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRv
bWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWlj
V2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21p
Y1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0
b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAg
IHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwg
ZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKwor
ICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihj
b25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQs
IGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBl
Y3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFkZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNB
ZGQ4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYWRkMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YWRkMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1Yjgo
aW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWI4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1
YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWIzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWIzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgYW5kOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0Fu
ZDgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihpbW0s
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
bmQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNPcjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3Iz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I4KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Iz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hvcjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJlZywgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05l
ZzgoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBuZWc4KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzgo
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG5lZzgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMTYo
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBuZWcxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbmVnMTYoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMzIo
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBuZWczMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbmVnMzIoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG5vdDgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbm90OChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QxNihBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG5vdDE2KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBub3QxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QzMihBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG5vdDMyKGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBub3QzMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkOChS
ZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIueGFkZHdfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBtX2Fzc2VtYmxlci54YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhh
ZGRsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhjaGd3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueGNoZ3dfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBsb2FkOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3E4KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IGxvYWQ4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRF
eHRlbmRUbzMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBs
b2FkOFNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbG9hZDhTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBsb2FkMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxMTYoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZDE2KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2lnbmVk
RXh0ZW5kVG8zMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbG9hZDMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgbG9hZEFjcTMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBzdG9yZVJlbDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAg
ICAgICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KGltbSwgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlMTYoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBz
dG9yZVJlbDMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBz
dG9yZTMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYywg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKGltbSwgZGVzdCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9y
bWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBzdG9yZUZlbmNl
KCkKKyAgICB7CisgICAgfQorCisgICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBw
cmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4K
KyAgICB2b2lkIGxvYWRGZW5jZSgpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9j
YXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVw
bGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGlu
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJk
aWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgfQorCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkKKyAgICB7CisgICAgICAgIGlmIChzX3Nz
ZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQorICAgICAgICAg
ICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7CisgICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3Rh
dGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydHNBVlgoKQorICAgIHsKKyAgICAgICAgLy8gQVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3Vz
IHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4gYmUgbWFzc2l2ZS4KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hG
bGFncygpCisgICAgeworICAgICAgICBpbnQgZmxhZ3MgPSAwOworI2lmIENPTVBJTEVSKE1TVkMp
CisgICAgICAgIGludCBjcHVJbmZvWzRdOworICAgICAgICBfX2NwdWlkKGNwdUluZm8sIDB4MSk7
CisgICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsKKyNlbGlmIENPTVBJTEVSKEdDQ19PUl9DTEFO
RykKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4
MSwgJSVlYXg7IgorICAgICAgICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICJtb3ZsICUlZWN4
LCAlMDsiCisgICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQorICAgICAgICAgICAgOgorICAgICAg
ICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICk7Cisj
ZWxzZQorICAgICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgorICAg
ICAgICAgICAgInB1c2hsICUlZWJ4OyIKKyAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAg
ICAicG9wbCAlJWVieDsiCisgICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAgICAgICAg
ICAgOiAiPWciIChmbGFncykKKyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVlYXgiLCAi
JWVjeCIsICIlZWR4IgorICAgICAgICAgICAgKTsKKyNlbmRpZgogI2VuZGlmIC8vIENPTVBJTEVS
KEdDQ19PUl9DTEFORykKICAgICAgICAgc19zc2U0XzFDaGVja1N0YXRlID0gKGZsYWdzICYgKDEg
PDwgMTkpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsK
ICAgICAgICAgc19hdnhDaGVja1N0YXRlID0gKGZsYWdzICYgKDEgPDwgMjgpKSA/IENQVUlEQ2hl
Y2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKQEAgLTI4MzEsNiArMzg3MCwx
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6
OkNvbmRpdGlvbj4oY29uZCk7CiAgICAgfQogCisgICAgWDg2QXNzZW1ibGVyOjpDb25kaXRpb24g
eDg2Q29uZGl0aW9uKFN0YXR1c0NvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChjb25kKSB7CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbkU7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAg
IHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbk5FOworICAgICAgICB9CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6
OkNvbmRpdGlvbkU7CisgICAgfQorCiAgICAgdm9pZCBzZXQzMihYODZBc3NlbWJsZXI6OkNvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogI2lmIENQVShYODYpCkBAIC0yOTI1
LDYgKzM5NzYsMzUgQEAgcHJvdGVjdGVkOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihzaXpl
T2ZSZWdpc3RlciksIGRzdCk7CiAgICAgICAgIHNyY0lzTm9uWmVyby5saW5rKHRoaXMpOwogICAg
IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0
LCBSZWdpc3RlcklEIHJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3
YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRS
ZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNv
bmQpLCByZXN1bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3Qg
RnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJl
Z2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5j
KCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIEp1bXAgYnJhbmNoQXRv
bWljU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFu
ZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVn
aXN0ZXJzOjplYXgpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29u
ZGl0aW9uKGNvbmQpKSk7CisgICAgfQogCiBwcml2YXRlOgogICAgIC8vIE9ubHkgTWFjcm9Bc3Nl
bWJsZXJYODYgc2hvdWxkIGJlIHVzaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kOyBTU0UyIGlzIGFs
d2F5cyBhdmFpbGFibGUgb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2NCwxMSArMjY0LDIxIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7
CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
YWRkcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQg
YWRkNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYWRkcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYWRkNjQoQWJzb2x1dGVBZGRyZXNzIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNy
Yy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKQEAgLTMwNiw2ICszMTYsMTQgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1
ZSA9PSAxKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuaW5jcV9tKGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9
CisKICAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRy
ZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBz
Y3JhdGNoUmVnaXN0ZXIoKSk7CkBAIC0zNDIsMTEgKzM2MCw0MSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLmFuZHFfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQ2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hbmRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChBZGRyZXNzIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChCYXNlSW5kZXgg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAg
fQorCiAgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2lt
KGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3Rl
cklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBpbnRwdHJfdCBpbnRWYWx1ZSA9IGltbS5hc0lu
dHB0cigpOwpAQCAtNTUyLDExICs2MDAsNTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5uZWdxX3IoZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBuZWc2NChBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBuZWc2NChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5lZ3FfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ycihzcmMsIGRlc3Qp
OwogICAgIH0KIAorICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
b3I2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2
b2lkIG9yNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5z
Y2FsZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9pbShpbW0ubV92YWx1
ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTY0IGltbSwgUmVn
aXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlIDw9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpCkBAIC02MTksMTYgKzcwNywzMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJx
X2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjY0KEFkZHJlc3Mgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNy
Yy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KEJhc2VJ
bmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1
YnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsK
KyAgICB9CisKICAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCB4b3I2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIueG9ycV9ycihzcmMsIGRlc3QpOwpAQCAtNjUxLDYgKzc1NCwzMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IHhvcjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci54b3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHhvcjY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhvcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1t
Lm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9y
NjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci54b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0
LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhv
cnFfaXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwpAQCAtNjY2LDYgKzc5NCwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vdHFfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdDY0KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubm90cV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgbG9hZDY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwpAQCAtNzI1LDYgKzg1OCwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQo
VHJ1c3RlZEltbTY0IGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzMyXzY0KGltbS5tX3ZhbHVlKSkgewpAQCAtMTI5NCw3ICsx
NDMyLDI1NSBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3Zl
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRy
ZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwgbWFzazgpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBh
dG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsm
XSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9
CiAKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FT
KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRk
cmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1Zh
bHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4g
YnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2
NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHN1YjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
U3ViNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgb3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y09yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05lZzY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTmVnNjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05vdDY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTm90NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54
YWRkcV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzY0
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzY0
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRBY3E2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCB0
cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAko
cmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5MCwxNiArMTkwLDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgIE9QX0FERF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDAxLAog
ICAgICAgICBPUF9BRERfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgwMywKICAgICAgICAg
T1BfQUREX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MDUsCisgICAgICAgIE9QX09SX0V2
R2IgICAgICAgICAgICAgICAgICAgICAgPSAweDA4LAogICAgICAgICBPUF9PUl9Fdkd2ICAgICAg
ICAgICAgICAgICAgICAgID0gMHgwOSwKICAgICAgICAgT1BfT1JfR3ZFdiAgICAgICAgICAgICAg
ICAgICAgICA9IDB4MEIsCiAgICAgICAgIE9QX09SX0VBWEl2ICAgICAgICAgICAgICAgICAgICAg
PSAweDBELAogICAgICAgICBPUF8yQllURV9FU0NBUEUgICAgICAgICAgICAgICAgID0gMHgwRiwK
KyAgICAgICAgT1BfQU5EX0V2R2IgICAgICAgICAgICAgICAgICAgICA9IDB4MjAsCiAgICAgICAg
IE9QX0FORF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDIxLAogICAgICAgICBPUF9BTkRf
R3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgyMywKKyAgICAgICAgT1BfU1VCX0V2R2IgICAg
ICAgICAgICAgICAgICAgICA9IDB4MjgsCiAgICAgICAgIE9QX1NVQl9Fdkd2ICAgICAgICAgICAg
ICAgICAgICAgPSAweDI5LAogICAgICAgICBPUF9TVUJfR3ZFdiAgICAgICAgICAgICAgICAgICAg
ID0gMHgyQiwKICAgICAgICAgT1BfU1VCX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MkQs
CiAgICAgICAgIFBSRV9QUkVESUNUX0JSQU5DSF9OT1RfVEFLRU4gICAgPSAweDJFLAorICAgICAg
ICBPUF9YT1JfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgzMCwKICAgICAgICAgT1BfWE9S
X0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MzEsCiAgICAgICAgIE9QX1hPUl9HdkV2ICAg
ICAgICAgICAgICAgICAgICAgPSAweDMzLAogICAgICAgICBPUF9YT1JfRUFYSXYgICAgICAgICAg
ICAgICAgICAgID0gMHgzNSwKQEAgLTIyMyw2ICsyMjcsNyBAQCBwcml2YXRlOgogICAgICAgICBP
UF9HUk9VUDFfRXZJYiAgICAgICAgICAgICAgICAgID0gMHg4MywKICAgICAgICAgT1BfVEVTVF9F
YkdiICAgICAgICAgICAgICAgICAgICA9IDB4ODQsCiAgICAgICAgIE9QX1RFU1RfRXZHdiAgICAg
ICAgICAgICAgICAgICAgPSAweDg1LAorICAgICAgICBPUF9YQ0hHX0V2R2IgICAgICAgICAgICAg
ICAgICAgID0gMHg4NiwKICAgICAgICAgT1BfWENIR19Fdkd2ICAgICAgICAgICAgICAgICAgICA9
IDB4ODcsCiAgICAgICAgIE9QX01PVl9FYkdiICAgICAgICAgICAgICAgICAgICAgPSAweDg4LAog
ICAgICAgICBPUF9NT1ZfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHg4OSwKQEAgLTI1Miw2
ICsyNTcsNyBAQCBwcml2YXRlOgogICAgICAgICBQUkVfU1NFX0YyICAgICAgICAgICAgICAgICAg
ICAgID0gMHhGMiwKICAgICAgICAgUFJFX1NTRV9GMyAgICAgICAgICAgICAgICAgICAgICA9IDB4
RjMsCiAgICAgICAgIE9QX0hMVCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweEY0LAorICAg
ICAgICBPUF9HUk9VUDNfRWIgICAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAgT1Bf
R1JPVVAzX0ViSWIgICAgICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9QX0dST1VQM19F
diAgICAgICAgICAgICAgICAgICAgPSAweEY3LAogICAgICAgICBPUF9HUk9VUDNfRXZJeiAgICAg
ICAgICAgICAgICAgID0gMHhGNywgLy8gT1BfR1JPVVAzX0V2IGhhcyBhbiBpbW1lZGlhdGUsIHdo
ZW4gaW5zdHJ1Y3Rpb24gaXMgYSB0ZXN0LiAKQEAgLTI5MCw2ICsyOTYsOCBAQCBwcml2YXRlOgog
ICAgICAgICBPUF9TRVRDQyAgICAgICAgICAgID0gMHg5MCwKICAgICAgICAgT1AyXzNCWVRFX0VT
Q0FQRV9BRSA9IDB4QUUsCiAgICAgICAgIE9QMl9JTVVMX0d2RXYgICAgICAgPSAweEFGLAorICAg
ICAgICBPUDJfQ01QWENIR2IgICAgICAgID0gMHhCMCwKKyAgICAgICAgT1AyX0NNUFhDSEcgICAg
ICAgICA9IDB4QjEsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkViICAgICAgPSAweEI2LAogICAgICAg
ICBPUDJfQlNGICAgICAgICAgICAgID0gMHhCQywKICAgICAgICAgT1AyX1RaQ05UICAgICAgICAg
ICA9IDB4QkMsCkBAIC0yOTgsNiArMzA2LDggQEAgcHJpdmF0ZToKICAgICAgICAgT1AyX01PVlNY
X0d2RWIgICAgICA9IDB4QkUsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkV3ICAgICAgPSAweEI3LAog
ICAgICAgICBPUDJfTU9WU1hfR3ZFdyAgICAgID0gMHhCRiwKKyAgICAgICAgT1AyX1hBRERiICAg
ICAgICAgICA9IDB4QzAsCisgICAgICAgIE9QMl9YQUREICAgICAgICAgICAgPSAweEMxLAogICAg
ICAgICBPUDJfUEVYVFJXX0dkVWRJYiAgID0gMHhDNSwKICAgICAgICAgT1AyX1BTTExRX1VkcUli
ICAgICA9IDB4NzMsCiAgICAgICAgIE9QMl9QU1JMUV9VZHFJYiAgICAgPSAweDczLApAQCAtNDQw
LDYgKzQ1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9B
RERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGFkZGxf
bXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9Cisg
ICAgCiAjaWYgIUNQVShYODZfNjQpCiAgICAgdm9pZCBhZGRsX21yKGNvbnN0IHZvaWQqIGFkZHIs
IFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTU2MiwxMSArNTc3LDIxIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgb2Zm
c2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9pcihpbnQgaW1tLCBSZWdpc3Rl
cklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CkBAIC01OTEsNiArNjE2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGFkZHFfaW0oaW50
IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQ
MV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQURELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2b2lkIGFkZGxfaW0oaW50
IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC02MTQsMTEgKzY1MCw0MyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNl
LCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgYW5kbF9tcihpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAg
ICAgfQogCisgICAgdm9pZCBhbmRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFuZGxfcm0oc3JjLCBvZmZzZXQsIGJh
c2UpOworICAgIH0KKworICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFu
ZGxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtNjQxLDYgKzcwOSw1MyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIGFuZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQp
OworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBH
Uk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kd19pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpF
KTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAg
ICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRWJJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgYW5kYl9pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwg
R1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2
b2lkIGFuZHFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTY1
Nyw2ICs3NzIsNDggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkg
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIGFuZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQ
MV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQog
I2Vsc2UKICAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7
CkBAIC03MDMsNiArODYwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CisKKyAgICB2b2lkIGluY3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KICNlbmRpZiAvLyBDUFUoWDg2XzY0KQogCiAgICAgdm9pZCBuZWds
X3IoUmVnaXN0ZXJJRCBkc3QpCkBAIC03MTUsNiArODc3LDE2IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05F
RywgZHN0KTsKICAgICB9CisKKyAgICB2b2lkIG5lZ3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNf
RXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBuZWdx
X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYs
IEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5k
aWYKIAogICAgIHZvaWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKQEAgLTcy
Miw2ICs4OTQsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZv
aWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
M19FdiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVn
bF9tKG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWd3X20oaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5lZ2xf
bShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWdiX20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIG5lZ2JfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKICAgICB2b2lkIG5vdGxfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1Qs
IGRzdCk7CkBAIC03MzIsNiArOTMxLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdGxfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIG5vdGxfbShvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90d19t
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICBub3RsX20ob2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG5v
dHFfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC03NDIsNiArOTY4LDExIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JP
VVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CisKKyAgICB2b2lkIG5vdHFfbShpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAz
X09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAg
ICAgdm9pZCBvcmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtNzU0LDEx
ICs5ODUsNDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1Jf
R3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX21yKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdp
c3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9H
dkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lk
IG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAg
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgb3JsX3JtKHNyYywgb2Zm
c2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAg
ICAgIG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtNzg0LDEyICsxMDQ3LDEwMSBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICB2b2lkIG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JP
VVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb3J3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9
CisgICAgfQorCisgICAgdm9pZCBvcmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
YkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09Q
X09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgb3JxX3Jy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lk
IG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7Cisg
ICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQ
MV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHZvaWQgb3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICB2b2lkIG9ycV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC04MzEsMTEgKzExODMs
NDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYs
IGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YmxfbXIoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9HdkV2
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
Ymxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vid19ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIHN1Yndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgc3ViYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHYiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJs
X2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTg2MSw2ICsxMjQ1LDUzIEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgIH0KIAorICAgIHZvaWQgc3VibF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgc3Vid19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2Us
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdWJ3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1Bf
U1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOworICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
MV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0
KQogICAgIHZvaWQgc3VicV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAg
ewpAQCAtODcyLDExICsxMzAzLDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2
b2lkIHN1YnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKwogICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YnFf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KwogICAgIHZvaWQgc3VicV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAg
ICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC05MDEsNiArMTM0MiwxNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAg
ICAgICB9CiAgICAgfQorCisgICAgdm9pZCBzdWJxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAg
fQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCiAgICAgewpAQCAtOTI0LDExICsxMzc2LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQog
CisgICAgdm9pZCB4b3JsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhv
cmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hPUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisKICAgICB2b2lkIHhvcmxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTk0
MCw2ICsxNDAyLDc1IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgeG9y
bF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihp
bW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIs
IEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yd19ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICB4b3JsX3JtKHNy
Yywgb2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcndfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICB4b3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgeG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2Us
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1Bf
WE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcmJfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAg
IHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfWE9SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0ViSWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcmJfaW0oaW50IGltbSwgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQ
MV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogICAgIHZvaWQgeG9ybF9pcihpbnQgaW1tLCBS
ZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihp
bW0pKSB7CkBAIC05NzQsMTEgKzE1MDUsNDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
ICAgIAorICAgIHZvaWQgeG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9P
UF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9F
dkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4b3JxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hP
Ul9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIHhvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfR3ZFdiwgZGVz
dCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcnFfbXIoaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2
LCBkZXN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAg
ICB2b2lkIGx6Y250X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTE1ODYs
MTEgKzIxNTMsMzggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX1hDSEdfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgeGNoZ2Jfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNoZ3dfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQg
eGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
WENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAg
ICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnbF9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2
XzY0KQogICAgIHZvaWQgeGNoZ3FfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKQEAgLTE2MDYsNiArMjIwMCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CisKKyAgICB2b2lkIHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG1vdmxfcnIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTczMSw2ICsyMzMwLDIwIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBtb3Z3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCisgICAgdm9pZCBtb3Z3X2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJ
WkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxMV9Fdkl6LCBHUk9V
UDExX01PViwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUxNihpbW0pOworICAgIH0KKwogICAgIHZvaWQgbW92bF9FQVhtKGNvbnN0IHZv
aWQqIGFkZHIpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX092
RUFYKTsKQEAgLTE4MDAsNiArMjQxMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTMyKGltbSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX2kzMm0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDExX0V2SXos
IEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZxX2k2NHIoaW50
NjRfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfTU9WX0VBWEl2LCBkc3QpOwpAQCAtMjc3NSw2ICszMzk0LDkwIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9MT0NLKTsKICAgICB9CiAgICAgCisg
ICAgdm9pZCBjbXB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENI
R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnYl9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4
KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BF
UkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNy
YywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNt
cHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcs
IHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGNtcHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9D
TVBYQ0hHLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQURE
Yiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCB4YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2
NChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhh
ZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5
dGVPcDY0KE9QMl9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisgICAgCiAgICAgdm9pZCBtZmVuY2UoKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudGhy
ZWVCeXRlT3AoT1AyXzNCWVRFX0VTQ0FQRV9BRSwgT1AzX01GRU5DRSk7CkBAIC0zNzUxLDYgKzQ0
NTQsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKGdyb3Vw
T3AsIHJtKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bj
b2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlciht
X2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1Jl
eChyZWcsIGJhc2UpLCByZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNl
LCBvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVP
cGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3Jp
dGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCByZWdSZXF1aXJlc1JleChp
bmRleCwgYmFzZSksIHJlZywgaW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRl
VW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBJbW1l
ZGlhdGVzOgogICAgICAgICAvLwogICAgICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFw
cGVuZGVkIHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzQXRvbWlj
VmFsdWUuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeworCitBdG9taWNWYWx1ZTo6fkF0b21pY1ZhbHVlKCkKK3sKK30KKworV2lkdGggQXRv
bWljVmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aWR0aDsKK30K
Kwordm9pZCBBdG9taWNWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoY29tbWEsICJ3aWR0aCA9ICIsIG1f
d2lkdGgpOworICAgIAorICAgIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShjb21tYSwgb3V0KTsKK30K
KworVmFsdWUqIEF0b21pY1ZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAoreworICAgIHJldHVybiBu
ZXcgQXRvbWljVmFsdWUoKnRoaXMpOworfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVu
Y2VSYW5nZSkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIG9wZXJhbmQt
PnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlLCBvcGVyYW5kLCBwb2lu
dGVyKQorICAgICwgbV93aWR0aCh3aWR0aCkKK3sKKyAgICBBU1NFUlQoYmVzdFR5cGUoR1AsIG9w
ZXJhdGlvbldpZHRoKCkpID09IG9wZXJhdGlvblR5cGUoKSk7CisgICAgCisgICAgc3dpdGNoIChr
aW5kLm9wY29kZSgpKSB7CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWlj
WGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6
CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2lu
LCBXaWR0aCB3aWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFs
dWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBm
ZW5jZVJhbmdlKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwga2luZC5v
cGNvZGUoKSA9PSBBdG9taWNXZWFrQ0FTID8gSW50MzIgOiBleHBlY3RlZFZhbHVlLT50eXBlKCks
IG9yaWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFs
dWUsIHBvaW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIEFTU0VSVChiZXN0VHlw
ZShHUCwgb3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKworICAgIHN3aXRj
aCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0
b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
KworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNBdG9taWNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5j
bHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgQXRvbWljVmFsdWUgOiBwdWJsaWMgTWVtb3J5VmFsdWUgewor
cHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGlzQXRvbWljKGtpbmQub3Bjb2RlKCkpOworICAgIH0KKyAgICAKKyAgICB+QXRv
bWljVmFsdWUoKTsKKyAgICAKKyAgICBUeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJldHVy
biBjaGlsZCgwKS0+dHlwZSgpOyB9CisgICAgCisgICAgV2lkdGggb3BlcmF0aW9uV2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgCisgICAgLy8gU3lub255bSBmb3Igb3BlcmF0
aW9uV2lkdGgoKSwgaWYgeW91J3JlIGFjY2Vzc2luZyB2aWEgTWVtb3J5VmFsdWUuCisgICAgV2lk
dGggYWNjZXNzV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2
b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgCisgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVl
KEtpbmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFw
UmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCkpOworICAgIAorICAgIEF0b21pY1Zh
bHVlKEtpbmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3
VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5n
ZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlOjp0
b3AoKSk7CisgICAgCisgICAgV2lkdGggbV93aWR0aDsKK307CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiAr
NDAsNyBAQCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKIGNsYXNzIEluc2VydGlvblNldDsKIGNs
YXNzIFByb2NlZHVyZTsKIGNsYXNzIFZhbHVlOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEdl
bmVyaWNCbG9ja0luc2VydGlvblNldDsKIAogY2xhc3MgQmFzaWNCbG9jayB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQmFzaWNCbG9jayk7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgZnJpZW5kIGNsYXNzIElu
c2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lPiBmcmllbmQgY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIAogICAg
IC8vIEluc3RhbnRpYXRlIHZpYSBQcm9jZWR1cmUuCiAgICAgQmFzaWNCbG9jayh1bnNpZ25lZCBp
bmRleCwgZG91YmxlIGZyZXF1ZW5jeSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzYsMzUgKzM2LDEzIEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogQmxv
Y2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSAmcHJvYykKLSAgICA6
IG1fcHJvYyhwcm9jKQorICAgIDogR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MubV9ibG9j
a3MpCisgICAgLCBtX3Byb2MocHJvYykKIHsKIH0KIAogQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9j
a0luc2VydGlvblNldCgpIHsgfQogCi12b2lkIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxv
Y2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCi17Ci0gICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZN
b3ZlKGluc2VydGlvbikpOwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5z
ZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHN0ZDo6dW5pcXVl
X3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgZnJlcXVlbmN5
KSk7Ci0gICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxvY2suZ2V0KCk7Ci0gICAgaW5zZXJ0KEJs
b2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRCZWZvcmUoQmFzaWNC
bG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHJldHVybiBpbnNlcnQoYmVm
b3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3Jl
LT5mcmVxdWVuY3koKSk7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNl
cnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1
cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZy
ZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7Ci19Ci0KIEJhc2ljQmxvY2sqIEJsb2NrSW5z
ZXJ0aW9uU2V0OjpzcGxpdEZvcndhcmQoCiAgICAgQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVk
JiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqIGluc2VydGlvblNldCwgZG91YmxlIGZyZXF1ZW5j
eSkKIHsKQEAgLTEwMiwzMiArODAsNiBAQCBCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6
c3BsaXRGb3J3CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBCbG9ja0luc2VydGlvblNl
dDo6ZXhlY3V0ZSgpCi17Ci0gICAgaWYgKG1faW5zZXJ0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBXZSBhbGxvdyBpbnNlcnRpb25zIHRvIGJlIGdp
dmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5lZWQgdG8gc29ydCB0aGVtIGJlZm9yZQot
ICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVy
IGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKLSAgICAvLyBmYXN0LCBzbyB3ZSB1
c2UgYnViYmxlIHNvcnQuCi0gICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9p
bnNlcnRpb25zLmVuZCgpKTsKLQotICAgIGV4ZWN1dGVJbnNlcnRpb25zKG1fcHJvYy5tX2Jsb2Nr
cywgbV9pbnNlcnRpb25zKTsKLSAgICAKLSAgICAvLyBQcnVuZSBvdXQgZW1wdHkgZW50cmllcy4g
VGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MKLSAgICAvLyBoZWFsdGh5IHRv
IGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgotICAgIG1fcHJvYy5tX2Jsb2Nrcy5y
ZW1vdmVBbGxNYXRjaGluZygKLSAgICAgICAgWyZdIChzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9j
az4mIGJsb2NrUHRyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiAhYmxvY2tQdHI7Ci0g
ICAgICAgIH0pOwotICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0
aGVpciBuZXcgaW5kaWNlcy4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9jLm1f
YmxvY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3Byb2MubV9ibG9ja3NbaV0tPm1faW5kZXgg
PSBpOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAi
QjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgog
I2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0z
NSwyNiArMzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIElu
c2VydGlvblNldDsKIAotdHlwZWRlZiBXVEY6Okluc2VydGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFz
aWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOwordHlwZWRlZiBHZW5lcmljQmxvY2tJbnNlcnRpb25T
ZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5zZXJ0aW9uOwogCi1jbGFzcyBC
bG9ja0luc2VydGlvblNldCB7CitjbGFzcyBCbG9ja0luc2VydGlvblNldCA6IHB1YmxpYyBHZW5l
cmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4gewogcHVibGljOgogICAgIEJsb2NrSW5z
ZXJ0aW9uU2V0KFByb2NlZHVyZSYpOwogICAgIH5CbG9ja0luc2VydGlvblNldCgpOwogICAgIAot
ICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYpOwotCi0gICAgLy8gSW5zZXJ0IGEgbmV3
IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0KHVuc2lnbmVk
IGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3
IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVzdWFsbHkgeW91IHdpbGwgbm90IHBhc3Mg
dGhlIGZyZXF1ZW5jeQotICAgIC8vIGFyZ3VtZW50LiBQYXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRv
IGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdiZWZvcmUnIGJsb2NrLiBUaGF0J3MKLSAg
ICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QmVmb3Jl
KEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8g
SW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxvY2suCi0gICAgQmFzaWNCbG9j
ayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFO
KTsKLQogICAgIC8vIEEgaGVscGVyIHRvIHNwbGl0IGEgYmxvY2sgd2hlbiBmb3J3YXJkIGl0ZXJh
dGluZyBvdmVyIGl0LiBJdCBjcmVhdGVzIGEgbmV3IGJsb2NrIHRvIGhvbGQKICAgICAvLyBldmVy
eXRoaW5nIGJlZm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYXQgdmFsdWVJbmRleC4gVGhlIGN1cnJlbnQg
YmxvY2sgaXMgbGVmdCB3aXRoCiAgICAgLy8gZXZlcnl0aGluZyBhdCBhbmQgYWZ0ZXIgdmFsdWVJ
bmRleC4gSWYgdGhlIG9wdGlvbmFsIEluc2VydGlvblNldCBpcyBwcm92aWRlZCwgaXQgd2lsbCBn
ZXQKQEAgLTgwLDEyICs2OCw5IEBAIHB1YmxpYzoKICAgICBCYXNpY0Jsb2NrKiBzcGxpdEZvcndh
cmQoCiAgICAgICAgIEJhc2ljQmxvY2sqLCB1bnNpZ25lZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9u
U2V0KiA9IG51bGxwdHIsCiAgICAgICAgIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLSAgICAK
LSAgICBib29sIGV4ZWN1dGUoKTsKIAogcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsK
LSAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKIH07CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZm
ZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Vm
ZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODIsNyArODIsOCBAQCBib29sIEVmZmVjdHM6
OmludGVyZmVyZXMoY29uc3QgRWZmZWN0cyYgCiAgICAgICAgIHx8IGludGVyZmVyZXNXaXRoV3Jp
dGVzUGlubmVkKG90aGVyLCAqdGhpcykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVy
LndyaXRlcykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLnJlYWRzKQotICAgICAg
ICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53cml0ZXMpOworICAgICAgICB8fCByZWFkcy5vdmVy
bGFwcyhvdGhlci53cml0ZXMpCisgICAgICAgIHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9
CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3I9PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QK
QEAgLTk1LDcgKzk2LDggQEAgYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMm
IAogICAgICAgICAmJiB3cml0ZXNQaW5uZWQgPT0gb3RoZXIud3JpdGVzUGlubmVkCiAgICAgICAg
ICYmIHJlYWRzUGlubmVkID09IG90aGVyLnJlYWRzUGlubmVkCiAgICAgICAgICYmIHdyaXRlcyA9
PSBvdGhlci53cml0ZXMKLSAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHM7CisgICAgICAg
ICYmIHJlYWRzID09IG90aGVyLnJlYWRzCisgICAgICAgICYmIGZlbmNlID09IG90aGVyLmZlbmNl
OwogfQogCiBib29sIEVmZmVjdHM6Om9wZXJhdG9yIT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNv
bnN0CkBAIC0xMjAsNiArMTIyLDggQEAgdm9pZCBFZmZlY3RzOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbgogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJXcml0ZXNQaW5uZWQiKTsKICAgICBp
ZiAocmVhZHNQaW5uZWQpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIlJlYWRzUGlubmVkIik7
CisgICAgaWYgKGZlbmNlKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJGZW5jZSIpOwogICAg
IGlmICh3cml0ZXMpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlczoiLCB3cml0ZXMp
OwogICAgIGlmIChyZWFkcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVj
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJ
KHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDYgKzcxLDEwIEBAIHN0cnVjdCBFZmZlY3RzIHsKICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTczCiAgICAg
Ym9vbCByZWFkc1Bpbm5lZCB7IGZhbHNlIH07CiAgICAgYm9vbCB3cml0ZXNQaW5uZWQgeyBmYWxz
ZSB9OworICAgIAorICAgIC8vIE1lbW9yeSBmZW5jZXMgY2Fubm90IGJlIHJlb3JkZXJlZCBhcm91
bmQgZWFjaCBvdGhlciByZWdhcmRsZXNzIG9mIHRoZWlyIGVmZmVjdHMuIFRoaXMgaXMgZmxhZ2dl
ZAorICAgIC8vIGlmIHRoZSBvcGVyYXRpb24gaXMgYSBtZW1vcnkgZmVuY2UuCisgICAgYm9vbCBm
ZW5jZSB7IGZhbHNlIH07CiAKICAgICBIZWFwUmFuZ2Ugd3JpdGVzOwogICAgIEhlYXBSYW5nZSBy
ZWFkczsKQEAgLTg5LDYgKzkzLDcgQEAgc3RydWN0IEVmZmVjdHMgewogICAgICAgICByZXN1bHQu
cmVhZHMgPSBIZWFwUmFuZ2U6OnRvcCgpOwogICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0
cnVlOwogICAgICAgICByZXN1bHQud3JpdGVzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0
LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEwMyw3
ICsxMDgsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAKICAgICBib29sIG11c3RFeGVjdXRlKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdy
aXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZDsKKyAgICAgICAgcmV0dXJu
IHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8fCB3cml0ZXMg
fHwgd3JpdGVzUGlubmVkIHx8IGZlbmNlOwogICAgIH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiByZW9yZGVyaW5nIGluc3RydWN0aW9ucyB3aXRoIHRoZXNlIHJlc3BlY3RpdmUgZWZmZWN0cyB3
b3VsZCBjaGFuZ2UgcHJvZ3JhbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxp
bWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkocmV2aXNp
b24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9u
U3ViZXhwcmVzc2lvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0Miw2ICsxNDIsNyBAQCBzdHJ1Y3Qg
SW1wdXJlQmxvY2tEYXRhIHsKIAogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gcmVhZHM7IC8vIFRo
aXMgb25seSBnZXRzIHVzZWQgZm9yIGZvcndhcmQgc3RvcmUgZWxpbWluYXRpb24uCiAgICAgUmFu
Z2VTZXQ8SGVhcFJhbmdlPiB3cml0ZXM7IC8vIFRoaXMgZ2V0cyB1c2VkIGZvciBib3RoIGxvYWQg
YW5kIHN0b3JlIGVsaW1pbmF0aW9uLgorICAgIGJvb2wgZmVuY2U7CiAKICAgICBNZW1vcnlWYWx1
ZU1hcCBzdG9yZXNBdEhlYWQ7CiAgICAgTWVtb3J5VmFsdWVNYXAgbWVtb3J5VmFsdWVzQXRUYWls
OwpAQCAtMTc0LDEyICsxNzUsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGlmIChtZW1vcnkgJiYgbWVtb3J5LT5pc1N0b3JlKCkKICAgICAgICAgICAgICAg
ICAgICAgJiYgIWRhdGEucmVhZHMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQotICAgICAgICAg
ICAgICAgICAgICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKSkKKyAg
ICAgICAgICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2Uo
KSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKCFkYXRhLmZlbmNlIHx8ICFtZW1vcnktPmhhc0Zl
bmNlKCkpKQogICAgICAgICAgICAgICAgICAgICBkYXRhLnN0b3Jlc0F0SGVhZC5hZGQobWVtb3J5
KTsKICAgICAgICAgICAgICAgICBkYXRhLnJlYWRzLmFkZChlZmZlY3RzLnJlYWRzKTsKIAogICAg
ICAgICAgICAgICAgIGlmIChIZWFwUmFuZ2Ugd3JpdGVzID0gZWZmZWN0cy53cml0ZXMpCiAgICAg
ICAgICAgICAgICAgICAgIGNsb2JiZXIoZGF0YSwgd3JpdGVzKTsKKyAgICAgICAgICAgICAgICBk
YXRhLmZlbmNlIHw9IGVmZmVjdHMuZmVuY2U7CiAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5
KQogICAgICAgICAgICAgICAgICAgICBkYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5hZGQobWVtb3J5
KTsKQEAgLTQ0NSw4ICs0NDgsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIGRhdGFMb2coIkJhZCBtZW1vcnkgdmFsdWU6ICIsIGRlZXBEdW1w
KG1fcHJvYywgbV92YWx1ZSksICJcbiIpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtNDc4
LDYgKzQ3OSw5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgogICAg
IGJvb2wgZmluZFN0b3JlQWZ0ZXJDbG9iYmVyKFZhbHVlKiBwdHIsIEhlYXBSYW5nZSByYW5nZSwg
Y29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAgeworICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVt
b3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIAogICAgICAgICAvLyBXZSBjYW4gZWxpbWluYXRlIGEgc3RvcmUgaWYgZXZlcnkgZm9yd2Fy
ZCBwYXRoIGhpdHMgYSBzdG9yZSB0byB0aGUgc2FtZSBsb2NhdGlvbiBiZWZvcmUKICAgICAgICAg
Ly8gaGl0dGluZyBhbnkgb3BlcmF0aW9uIHRoYXQgb2JzZXJ2ZXMgdGhlIHN0b3JlLiBUaGlzIHNl
YXJjaCBzZWVtcyBsaWtlIGl0IHNob3VsZCBiZQogICAgICAgICAvLyBleHBlbnNpdmUsIGJ1dCBp
biB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5IG9mIGNhc2VzIGl0IHdpbGwgYWxtb3N0IGltbWVk
aWF0ZWx5IGhpdCBhbiAKQEAgLTYxNCw2ICs2MTgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCptX3ZhbHVlLCAiOiBsb29raW5nIGJhY2t3
YXJkIGZvciAiLCAqcHRyLCAiLi4uXG4iKTsKICAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVl
LT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGZlbmNl
cy5cbiIpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICAKICAg
ICAgICAgaWYgKE1lbW9yeVZhbHVlKiBtYXRjaCA9IG1fZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwu
ZmluZChwdHIsIGZpbHRlcikpIHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBGb3VuZCAiLCAqbWF0Y2gsICIgbG9jYWxseS5cbiIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEyOTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtOTIsNiArOTIsNyBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9j
ZWR1cmUsCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTA1MDcKICAgICB9CiAKKyAgICAvLyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2Rl
LgogICAgIGxvd2VyTWFjcm9zKHByb2NlZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9u
U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiUHVyZU5hTi5o
IgorI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CisKK2NsYXNzIEluc2VydGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9j
az4KK2NsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBXVEY6Okluc2VydGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0
aW9uOworICAgIAorICAgIEdlbmVyaWNCbG9ja0luc2VydGlvblNldChWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJhc2ljQmxvY2s+PiYgYmxvY2tzKQorICAgICAgICA6IG1fYmxvY2tzKGJsb2NrcykK
KyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5z
ZXJ0aW9uKQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2Vy
dGlvbikpOworICAgIH0KKworICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGlu
ZGV4LgorICAgIEJhc2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1
ZW5jeSA9IFBOYU4pCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4g
YmxvY2sobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOworICAgICAgICBCYXNp
Y0Jsb2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsKKyAgICAgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0
aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4g
VXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5CisgICAgLy8gYXJndW1lbnQu
IFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUg
J2JlZm9yZScgYmxvY2suIFRoYXQncworICAgIC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KKyAg
ICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJl
cXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRl
eCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVu
Y3koKSk7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2
ZW4gYmxvY2suCisgICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIs
IGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChh
ZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBh
ZnRlci0+ZnJlcXVlbmN5KCkpOworICAgIH0KKworICAgIGJvb2wgZXhlY3V0ZSgpCisgICAgewor
ICAgICAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2
ZW4gdG8gdXMgaW4gYW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCisg
ICAgICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJl
ZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKKyAgICAgICAgLy8gZmFzdCwg
c28gd2UgdXNlIGJ1YmJsZSBzb3J0LgorICAgICAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5i
ZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOworICAgICAgICAKKyAgICAgICAgZXhlY3V0ZUlu
c2VydGlvbnMobV9ibG9ja3MsIG1faW5zZXJ0aW9ucyk7CisgICAgICAgIAorICAgICAgICAvLyBQ
cnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0
IGl0J3MKKyAgICAgICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jv
d2luZy4KKyAgICAgICAgbV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAgICBb
Jl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+IGJvb2wgeworICAg
ICAgICAgICAgICAgIHJldHVybiAhYmxvY2tQdHI7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5k
aWNlcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzLnNpemUoKTsg
KytpKQorICAgICAgICAgICAgbV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOworICAgICAgICAKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmxvY2tJbnNlcnRp
b24sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisj
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0hlYXBSYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hl
YXBSYW5nZS5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNIZWFwUmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdl
IG9wZXJhdG9yfChjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIEhlYXBSYW5nZSgKKyAgICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1f
YmVnaW4pLAorICAgICAgICAgICAgc3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAg
fQorICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2Jl
Z2luICE9IG1fZW5kOyB9CiAKICAgICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
YmVnaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0
LmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5z
ZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJ
bnNlcnRpb25TZXQ6Omluc2VydEJvdHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9t
KGluZGV4LCBsaWtlVmFsdWUtPm9yaWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1Zh
bHVlKiBJbnNlcnRpb25TZXQ6Omluc2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVl
KQoreworICAgIHJldHVybiBpbnNlcnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFs
dWUpKTsKK30KKwogdm9pZCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2sp
CiB7CiAgICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVu
ZCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShy
ZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25T
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogCiAgICAgVmFs
dWUqIGluc2VydEJvdHRvbShzaXplX3QgaW5kZXgsIE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUq
IGluc2VydEJvdHRvbShzaXplX3QgaW5kZXgsIFZhbHVlKik7CisgICAgCisgICAgVmFsdWUqIGlu
c2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqKTsKIAogICAgIHZvaWQgZXhlY3V0ZShCYXNp
Y0Jsb2NrKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jv
cy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDExICsyOSwxMyBAQAogI2lmIEVO
QUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Uu
aCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0ND
YWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0Nhc2VDb2xsZWN0aW9uSW5saW5lcy5oIgogI2luY2x1
ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgorI2luY2x1ZGUgIkIzRmVuY2VWYWx1ZS5oIgogI2luY2x1
ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIK
ICNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgpAQCAtNDIsNiArNDQsNyBAQAogI2luY2x1
ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCisjaW5jbHVkZSAiQjNVc2VDb3VudHMu
aCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5o
IgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTU4LDExICs2MSwxNCBAQCBwdWJsaWM6CiAg
ICAgICAgIDogbV9wcm9jKHByb2MpCiAgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChwcm9j
KQogICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KHByb2MpCisgICAgICAgICwgbV91c2VDb3VudHMo
cHJvYykKICAgICB7CiAgICAgfQogCiAgICAgYm9vbCBydW4oKQogICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIW1fcHJvYy5oYXNRdWlya3MoKSk7CisgICAgICAgIAogICAgICAgICBmb3Ig
KEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxv
Y2s7CiAgICAgICAgICAgICBwcm9jZXNzQ3VycmVudEJsb2NrKCk7CkBAIC03Miw2ICs3OCwxMCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX3Byb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAg
ICAgICAgIG1fcHJvYy5pbnZhbGlkYXRlQ0ZHKCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgd2UndmUgCisgICAgICAgIG1fcHJvYy5zZXRIYXNR
dWlya3ModHJ1ZSk7CisgICAgICAgIAogICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwogICAgIH0K
ICAgICAKQEAgLTE4NSw3ICsxOTUsMTE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9j
aGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAg
ICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1s
b2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8g
dGVsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxv
YWQgbW90aW9uLgorICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAg
ICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1
bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAg
ICBtX3ZhbHVlLT5yZXBsYWNlV2l0aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgY2FzZSBB
dG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRv
bWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAg
ICAgICAgIFdpZHRoIHdpZHRoID0gYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgVmFsdWUqIGV4cGVjdGVkVmFsdWUgPSBhdG9taWMtPmNoaWxkKDApOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIC8vIE9uIEFSTSwgdGhlIGxvYWQgcGFydCBvZiB0aGUgQ0FT
IGRvZXMgYSBsb2FkIHdpdGggemVybyBleHRlbnNpb24uIFRoZXJlZm9yZSwgd2UgbmVlZAorICAg
ICAgICAgICAgICAgIC8vIHRvIHplcm8tZXh0ZW5kIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAg
ICBWYWx1ZSogbWFza2VkRXhwZWN0ZWRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1
ZT4oCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIGV4cGVj
dGVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENv
bnN0YW50KG1faW5kZXgsIGV4cGVjdGVkVmFsdWUsIG1hc2sod2lkdGgpKSk7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgYXRvbWljLT5jaGlsZCgwKSA9IG1hc2tlZEV4cGVjdGVk
VmFsdWU7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNh
c2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAg
ICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3Vi
OgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9t
aWNYY2hnOiB7CisgICAgICAgICAgICAgICAgLy8gT24gWDg2LCB0aGVzZSBtYXkgYWN0dWFsbHkg
cmV0dXJuIGdhcmJhZ2UgaW4gdGhlIGhpZ2ggYml0cy4gT24gQVJNNjQsIHRoZXNlIHNvcnRhCisg
ICAgICAgICAgICAgICAgLy8gemVyby1leHRlbmQgdGhlaXIgaGlnaCBiaXRzLCBleGNlcHQgdGhh
dCB0aGUgaGlnaCBiaXRzIG1pZ2h0IGdldCBwb2xsdXRlZCBieSBoaWdoCisgICAgICAgICAgICAg
ICAgLy8gYml0cyBpbiB0aGUgb3BlcmFuZC4gLiBTbywgZWl0aGVyIHdheSwgd2UgbmVlZCB0byB0
aHJvdyBhIHNpZ24tZXh0ZW5kIG9uIHRoZXNlCisgICAgICAgICAgICAgICAgLy8gdGhpbmdzLgor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5vcGNvZGUoKSA9PSBBdG9taWNYY2hnU3ViICYmIG1f
dXNlQ291bnRzLm51bVVzZXMobV92YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IE9uIHg4NiwgeGNoZ2FkZCBpcyBiZXR0ZXIgdGhhbiB4Y2hnc3ViIGlmIGl0IGhhcyBhbnkgdXNl
cnMuCisgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5zZXRPcGNvZGVVbnNhZmVseShB
dG9taWNYY2hnQWRkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDAp
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luZGV4LCBOZWcsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IGJvb2wgZXhlbXB0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobV92YWx1
ZS0+b3Bjb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgor
ICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBleGVtcHQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAoZXhlbXB0KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAg
ICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNDYW5vbmljYWxXaWR0aCh3aWR0aCkpCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgICAgIG1faW5kZXgsIHNpZ25FeHRlbmRPcGNvZGUod2lkdGgpLCBtX29yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRl
eCwgYXRvbWljKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+
cmVwbGFjZVdpdGhJZGVudGl0eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2Vk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICAgICAgY2FzZSBMb2Fk
MTZaOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBpZiAo
IW1lbW9yeS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gU3ViLXdpZHRoIGxvYWQtYWNxIG9uIEFSTTY0
IGFsd2F5cyBzaWduIGV4dGVuZHMuCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld0xvYWQgPSBt
X2luc2VydGlvblNldC5pbnNlcnRDbG9uZShtX2luZGV4LCBtZW1vcnkpOworICAgICAgICAgICAg
ICAgIG5ld0xvYWQtPnNldE9wY29kZVVuc2FmZWx5KG1lbW9yeS0+b3Bjb2RlKCkgPT0gTG9hZDha
ID8gTG9hZDhTIDogTG9hZDE2Uyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
VmFsdWUqIG5ld1ZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICAgICAgbV9pbmRleCwgQml0QW5kLCBtX29yaWdpbiwgbmV3TG9hZCwKKyAgICAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4LCBtX29yaWdpbiwgSW50MzIsIG1hc2sobWVtb3J5LT5sb2Fk
U3RvcmVXaWR0aCgpKSkpOwogCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJ
ZGVudGl0eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CkBAIC00NzAsNiArNTkyLDcgQEAgcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKICAg
ICBCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIEluc2VydGlvblNl
dCBtX2luc2VydGlvblNldDsKKyAgICBVc2VDb3VudHMgbV91c2VDb3VudHM7CiAgICAgQmFzaWNC
bG9jayogbV9ibG9jazsKICAgICB1bnNpZ25lZCBtX2luZGV4OwogICAgIFZhbHVlKiBtX3ZhbHVl
OwpAQCAtNDc3LDIxICs2MDAsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hhbmdlZCB7IGZh
bHNlIH07CiB9OwogCi1ib29sIGxvd2VyTWFjcm9zSW1wbChQcm9jZWR1cmUmIHByb2MpCi17Ci0g
ICAgTG93ZXJNYWNyb3MgbG93ZXJNYWNyb3MocHJvYyk7Ci0gICAgcmV0dXJuIGxvd2VyTWFjcm9z
LnJ1bigpOwotfQotCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogYm9vbCBsb3dlck1hY3Jv
cyhQcm9jZWR1cmUmIHByb2MpCiB7Ci0gICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHByb2MsICJs
b3dlck1hY3JvcyIpOwotICAgIGJvb2wgcmVzdWx0ID0gbG93ZXJNYWNyb3NJbXBsKHByb2MpOwot
ICAgIGlmIChzaG91bGRWYWxpZGF0ZUlSKCkpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsb3dl
ck1hY3Jvc0ltcGwocHJvYykpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgTG93ZXJNYWNyb3Mg
bG93ZXJNYWNyb3MocHJvYyk7CisgICAgcmV0dXJuIGxvd2VyTWFjcm9zLnJ1bigpOwogfQogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9z
QWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1NiwxNSArMTU2LDE0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFJvdEw6IHsKICAgICAgICAgICAgICAgICAv
LyBBUk02NCBkb2Vzbid0IGhhdmUgYSByb3RhdGUgbGVmdC4KICAgICAgICAgICAgICAgICBpZiAo
aXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlmdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQo
MSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90UiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFs
dWUtPmNoaWxkKDApLCBuZXdTaGlmdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVl
LT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBWYWx1ZSog
bmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92
YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAg
VmFsdWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90
UiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLCBuZXdTaGlmdCk7CisgICAg
ICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocm90YXRlKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsMTIgKzI4LDE0IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVk
ZSAiQWlyQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJBaXJDQ2FsbFNwZWNpYWwuaCIK
ICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWlySW5zZXJ0aW9uU2V0LmgiCiAjaW5j
bHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNsdWRlICJBaXJTdGFja1Nsb3QuaCIKICNpbmNs
dWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAj
aW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tXb3JrbGlz
dC5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpAQCAtNzIsNiArNzQsMTYgQEAgbmFtZXNw
YWNlIHsKIAogY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKKy8vIEZJWE1FOiBXZSB3b3Vs
ZG4ndCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRlZCBXaWR0aCBtb2RpZmllcnMgaW4gQWlyOjpL
aW5kLgorLy8gT09QUyEhISAobmVlZCBhIGJ1ZyBVUkwpCisjZGVmaW5lIE9QQ09ERV9GT1JfV0lE
VEgob3Bjb2RlLCB3aWR0aCkgKCBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDggPyBvcGNvZGUgIyMg
OCA6IFwKKyAgICAod2lkdGgpID09IFdpZHRoMTYgPyBvcGNvZGUgIyMgMTYgOiBcCisgICAgKHdp
ZHRoKSA9PSBXaWR0aDMyID8gb3Bjb2RlICMjIDMyIDogXAorICAgIG9wY29kZSAjIyA2NCkKKyNk
ZWZpbmUgT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgob3Bjb2RlLCB3aWR0aCkgKCBcCisgICAg
KHdpZHRoKSA9PSBXaWR0aDY0ID8gb3Bjb2RlICMjIDY0IDogb3Bjb2RlICMjIDMyKQorCiBjbGFz
cyBMb3dlclRvQWlyIHsKIHB1YmxpYzoKICAgICBMb3dlclRvQWlyKFByb2NlZHVyZSYgcHJvY2Vk
dXJlKQpAQCAtODMsNiArOTUsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fZG9taW5hdG9ycyhw
cm9jZWR1cmUuZG9taW5hdG9ycygpKQogICAgICAgICAsIG1fcHJvY2VkdXJlKHByb2NlZHVyZSkK
ICAgICAgICAgLCBtX2NvZGUocHJvY2VkdXJlLmNvZGUoKSkKKyAgICAgICAgLCBtX2Jsb2NrSW5z
ZXJ0aW9uU2V0KG1fY29kZSkKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgICAgICAs
IG1fZWF4KFg4NlJlZ2lzdGVyczo6ZWF4KQorICAgICAgICAsIG1fZWN4KFg4NlJlZ2lzdGVyczo6
ZWN4KQorICAgICAgICAsIG1fZWR4KFg4NlJlZ2lzdGVyczo6ZWR4KQorI2VuZGlmCiAgICAgewog
ICAgIH0KIApAQCAtMTI0LDE0ICsxNDIsMTggQEAgcHVibGljOgogICAgICAgICAvLyBob2lzdGVk
IGFkZHJlc3MgZXhwcmVzc2lvbiBiZWZvcmUgd2UgZHVwbGljYXRlIGl0IGJhY2sgaW50byB0aGUg
bG9vcC4KICAgICAgICAgZm9yIChCMzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2NlZHVyZS5i
bG9ja3NJblByZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKLSAgICAg
ICAgICAgIC8vIFJlc2V0IHNvbWUgc3RhdGUuCi0gICAgICAgICAgICBtX2luc3RzLnJlc2l6ZSgw
KTsKIAogICAgICAgICAgICAgbV9pc1JhcmUgPSAhbV9mYXN0V29ya2xpc3Quc2F3KGJsb2NrKTsK
IAogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG93
ZXJpbmcgQmxvY2sgIiwgKmJsb2NrLCAiOlxuIik7CiAgICAgICAgICAgICAKKyAgICAgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQgdXAgY29ycmVjdGx5Lgor
ICAgICAgICAgICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5z
dWNjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPnN1
Y2Nlc3NvcnMoKS5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJs
b2NrKG1fYmxvY2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygpXSwgc3VjY2Vzc29yLmZyZXF1ZW5j
eSgpKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIFByb2Nlc3MgYmxvY2tzIGlu
IHJldmVyc2Ugb3JkZXIgc28gd2Ugc2VlIHVzZXMgYmVmb3JlIGRlZnMuIFRoYXQncyB3aGF0IGFs
bG93cyB1cwogICAgICAgICAgICAgLy8gdG8gbWF0Y2ggcGF0dGVybnMgZWZmZWN0aXZlbHkuCiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+c2l6ZSgpOyBpLS07KSB7CkBAIC0x
NDksMTkgKzE3MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICAvLyBOb3cgYXBwZW5kIHRoZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMg
Y29udGFpbnMgdGhlbSBpbiByZXZlcnNlIG9yZGVyLCBzbyB3ZSBwcm9jZXNzCi0gICAgICAgICAg
ICAvLyBpdCBpbiByZXZlcnNlLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbnN0
cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX2lu
c3RzW2ldKQotICAgICAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPmFwcGVu
ZEluc3QoV1RGTW92ZShpbnN0KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQgdXAgY29ycmVjdGx5LgotICAgICAg
ICAgICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNz
b3JzKCkpIHsKLSAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPnN1Y2Nlc3Nv
cnMoKS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrKG1f
YmxvY2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygpXSwgc3VjY2Vzc29yLmZyZXF1ZW5jeSgpKSk7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMo
bV9ibG9ja1RvQmxvY2tbYmxvY2tdKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9i
bG9ja0luc2VydGlvblNldC5leGVjdXRlKCk7CiAKICAgICAgICAgQWlyOjpJbnNlcnRpb25TZXQg
aW5zZXJ0aW9uU2V0KG1fY29kZSk7CiAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1fcHJvbG9n
dWUpCkBAIC01NjIsMTEgKzU3NSwxOSBAQCBwcml2YXRlOgogICAgIAogICAgIEFyZ1Byb21pc2Ug
bG9hZFByb21pc2VBbnlPcGNvZGUoVmFsdWUqIGxvYWRWYWx1ZSkKICAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGxvYWRWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOwogICAgICAgICBpZiAo
IWNhbkJlSW50ZXJuYWwobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKICAg
ICAgICAgaWYgKGNyb3NzZXNJbnRlcmZlcmVuY2UobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJl
dHVybiBBcmcoKTsKLSAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQoYWRkcihsb2FkVmFsdWUpLCBs
b2FkVmFsdWUpOworICAgICAgICAvLyBPbiB4ODYsIGFsbCBsb2FkcyBoYXZlIGZlbmNlcy4gRG9p
bmcgdGhpcyBraW5kIG9mIGluc3RydWN0aW9uIHNlbGVjdGlvbiB3aWxsIG1vdmUgdGhlIGxvYWQs
CisgICAgICAgIC8vIGJ1dCB0aGF0J3MgZmluZSBiZWNhdXNlIG91ciBpbnRlcmZlcmVuY2UgYW5h
bHlzaXMgc3RvcHMgdGhlIG1vdGlvbiBvZiBmZW5jZXMgYXJvdW5kIG90aGVyCisgICAgICAgIC8v
IGZlbmNlcy4gU28sIGFueSBsb2FkIG1vdGlvbiB3ZSBpbnRyb2R1Y2UgaGVyZSB3b3VsZCBub3Qg
YmUgb2JzZXJ2YWJsZS4KKyAgICAgICAgaWYgKCFpc1g4NigpICYmIGxvYWRWYWx1ZS0+YXM8TWVt
b3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnKCk7CisgICAg
ICAgIEFyZyBsb2FkQWRkciA9IGFkZHIobG9hZFZhbHVlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQobG9hZEFkZHIpOworICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChsb2FkQWRkciwgbG9hZFZh
bHVlKTsKICAgICAgICAgaWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkKICAgICAgICAgICAgIHJlc3Vs
dC5zZXRUcmFwcyh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTg5OCwxMSArOTE5
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0jaWYgQ1BV
KFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICAgICAgYXBwZW5kKE1vdmUsIHRtcCh2YWx1ZSksIHRt
cChtX3ZhbHVlKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1vdW50KSwgVG1wKFg4NlJl
Z2lzdGVyczo6ZWN4KSk7Ci0gICAgICAgIGFwcGVuZChvcGNvZGUsIFRtcChYODZSZWdpc3RlcnM6
OmVjeCksIHRtcChtX3ZhbHVlKSk7Ci0jZW5kaWYKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChh
bW91bnQpLCBtX2VjeCk7CisgICAgICAgIGFwcGVuZChvcGNvZGUsIG1fZWN4LCB0bXAobV92YWx1
ZSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9w
Y29kZSBvcGNvZGU2ND4KQEAgLTkzMSwxMCArOTUwLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIEFp
cjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQ29tbXV0YXRpdml0eSBj
b21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmU+CiAgICAgYm9vbCB0cnlBcHBlbmRTdG9yZUJp
bk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKSk7CisgICAgICAgIAogICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgbGVm
dC0+dHlwZSgpKTsKICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6Ok9vcHMpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAorICAgICAgICAvLyBPbiB4ODYsIGFsbCBzdG9yZXMg
aGF2ZSBmZW5jZXMsIGFuZCB0aGlzIGlzbid0IHJlb3JkZXJpbmcgdGhlIHN0b3JlIGl0c2VsZi4K
KyAgICAgICAgaWYgKCFpc1g4NigpICYmIG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNG
ZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICAgICAgQXJn
IHN0b3JlQWRkciA9IGFkZHIobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVChzdG9yZUFkZHIpOwog
CkBAIC05OTQsMTEgKzEwMTksNTAgQEAgcHJpdmF0ZToKIAogICAgICAgICByZXR1cm4gSW5zdCht
b3ZlLCBtX3ZhbHVlLCB0bXAodmFsdWUpLCBkZXN0KTsKICAgICB9CisgICAgCisgICAgQWlyOjpP
cGNvZGUgc3RvcmVPcGNvZGUoV2lkdGggd2lkdGgsIEJhbmsgYmFuaywgYm9vbCByZWxlYXNlKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoICh3aWR0aCkgeworICAgICAgICBjYXNlIFdpZHRoODoKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0dXJu
IHJlbGVhc2UgPyBTdG9yZVJlbDggOiBBaXI6OlN0b3JlODsKKyAgICAgICAgY2FzZSBXaWR0aDE2
OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICBy
ZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMTYgOiBBaXI6OlN0b3JlMTY7CisgICAgICAgIGNhc2Ug
V2lkdGgzMjoKKyAgICAgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBH
UDoKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMzIgOiBNb3ZlMzI7
CisgICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFy
ZWxlYXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGlzNjRCaXQoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsK
KyAgICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBT
dG9yZVJlbDY0IDogTW92ZTsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91
YmxlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpP
cGNvZGUgc3RvcmVPcGNvZGUoVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgTWVtb3J5VmFs
dWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQobWVtb3J5LT5pc1N0b3JlKCkpOworICAgICAgICByZXR1cm4gc3RvcmVPcGNvZGUobWVt
b3J5LT5sb2FkU3RvcmVXaWR0aCgpLCBtZW1vcnktPmFjY2Vzc0JhbmsoKSwgbWVtb3J5LT5oYXNG
ZW5jZSgpKTsKKyAgICB9CiAKICAgICBJbnN0IGNyZWF0ZVN0b3JlKFZhbHVlKiB2YWx1ZSwgY29u
c3QgQXJnJiBkZXN0KQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IG1v
dmVGb3JUeXBlKHZhbHVlLT50eXBlKCkpOwotICAgICAgICByZXR1cm4gY3JlYXRlU3RvcmUobW92
ZU9wY29kZSwgdmFsdWUsIGRlc3QpOworICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0g
c3RvcmVPcGNvZGUodmFsdWUpOworICAgICAgICByZXR1cm4gY3JlYXRlU3RvcmUobW92ZU9wY29k
ZSwgdmFsdWUtPmNoaWxkKDApLCBkZXN0KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmdzPgpAQCAtMTAwNiw3ICsxMDcwLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgY3JlYXRlU3RvcmUoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSkpOwogICAgIH0KLQorICAgIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVGb3JU
eXBlKFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTA3Myw3
ICsxMTM3LDQxIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBl
bmQoaW5zdCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rp
b25zKEFpcjo6QmFzaWNCbG9jayogdGFyZ2V0KQorICAgIHsKKyAgICAgICAgLy8gTm93IGFwcGVu
ZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRl
ciwgc28gd2UgcHJvY2VzcworICAgICAgICAvLyBpdCBpbiByZXZlcnNlLgorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2luc3RzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgZm9yIChJ
bnN0JiBpbnN0IDogbV9pbnN0c1tpXSkKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmFwcGVuZElu
c3QoV1RGTW92ZShpbnN0KSk7CisgICAgICAgIH0KKyAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7
CisgICAgfQorICAgIAorICAgIEFpcjo6QmFzaWNCbG9jayogbmV3QmxvY2soKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QWZ0ZXIobV9ibG9ja1RvQmxv
Y2tbbV9ibG9ja10pOworICAgIH0KIAorICAgIC8vIE5PVEU6IFRoaXMgd2lsbCBjcmVhdGUgYSBj
b250aW51YXRpb24gYmxvY2sgKGBuZXh0QmxvY2tgKSAqYWZ0ZXIqIGFueSBibG9ja3MgeW91J3Zl
IGNyZWF0ZWQgdXNpbmcKKyAgICAvLyBuZXdCbG9jaygpLiBTbywgaXQncyBwcmVmZXJhYmxlIHRv
IGNyZWF0ZSBhbGwgb2YgeW91ciBibG9ja3MgdXBmcm9udCB1c2luZyBuZXdCbG9jaygpLiBBbHNv
IG5vdGUKKyAgICAvLyB0aGF0IGFueSBjb2RlIHlvdSBlbWl0IGJlZm9yZSB0aGlzIHdpbGwgYmUg
cHJlcGVuZGVkIHRvIHRoZSBjb250aW51YXRpb24sIGFuZCBhbnkgY29kZSB5b3UgZW1pdAorICAg
IC8vIGFmdGVyIHRoaXMgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgcHJldmlvdXMgYmxvY2suCisg
ICAgdm9pZCBzcGxpdEJsb2NrKEFpcjo6QmFzaWNCbG9jayomIHByZXZpb3VzQmxvY2ssIEFpcjo6
QmFzaWNCbG9jayomIG5leHRCbG9jaykKKyAgICB7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayog
YmxvY2sgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXTsKKyAgICAgICAgCisgICAgICAgIHByZXZp
b3VzQmxvY2sgPSBibG9jazsKKyAgICAgICAgbmV4dEJsb2NrID0gbV9ibG9ja0luc2VydGlvblNl
dC5pbnNlcnRBZnRlcihibG9jayk7CisgICAgICAgIAorICAgICAgICBmaW5pc2hBcHBlbmRpbmdJ
bnN0cnVjdGlvbnMobmV4dEJsb2NrKTsKKyAgICAgICAgbmV4dEJsb2NrLT5zdWNjZXNzb3JzKCkg
PSBibG9jay0+c3VjY2Vzc29ycygpOworICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpLmNsZWFy
KCk7CisgICAgICAgIAorICAgICAgICBtX2luc3RzLmFwcGVuZChWZWN0b3I8SW5zdD4oKSk7Cisg
ICAgfQorICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50
cz4KICAgICBUKiBlbnN1cmVTcGVjaWFsKFQqJiBmaWVsZCwgQXJndW1lbnRzJiYuLi4gYXJndW1l
bnRzKQogICAgIHsKQEAgLTExMjMsNyArMTIyMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZhbHVlUmVwOjpTdGFja0FyZ3VtZW50OgogICAg
ICAgICAgICAgICAgIGFyZyA9IEFyZzo6Y2FsbEFyZyh2YWx1ZS5yZXAoKS5vZmZzZXRGcm9tU1Ao
KSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWUudmFsdWUoKSwgYXJnKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRTdG9yZShtb3ZlRm9yVHlwZSh2YWx1ZS52YWx1ZSgpLT50eXBl
KCkpLCB2YWx1ZS52YWx1ZSgpLCBhcmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTk2MSw2ICsyMDU5LDMwOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZFg4NkRpdihCMzo6T3Bjb2RlIG9wKQorICAgIHsK
KyAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKKyAgICAgICAgQWlyOjpP
cGNvZGUgZGl2OworICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgeworICAgICAgICBj
YXNlIEludDMyOgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRU
b0RvdWJsZVdvcmQzMjsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgSW50NjQ6CisgICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVX
b3JkID0gWDg2Q29udmVydFRvUXVhZFdvcmQ2NDsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjY0
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOworICAgICAgICBUbXAg
cmVzdWx0ID0gb3AgPT0gRGl2ID8gbV9lYXggOiBtX2VkeDsKKworICAgICAgICBhcHBlbmQoTW92
ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgbV9lYXgpOworICAgICAgICBhcHBlbmQoY29udmVy
dFRvRG91YmxlV29yZCwgbV9lYXgsIG1fZWR4KTsKKyAgICAgICAgYXBwZW5kKGRpdiwgbV9lYXgs
IG1fZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJl
c3VsdCwgdG1wKG1fdmFsdWUpKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFg4NlVEaXYoQjM6
Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFpcjo6T3Bjb2RlIGRpdiA9IG1fdmFsdWUtPnR5
cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsKKworICAgICAgICBBU1NFUlQo
b3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKKyAgICAgICAgVG1wIHJlc3VsdCA9IG9wID09IFVE
aXYgPyBtX2VheCA6IG1fZWR4OworCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+
Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgIGFwcGVuZChYb3I2NCwgbV9lZHgsIG1fZWR4KTsK
KyAgICAgICAgYXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkp
KTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwgdG1wKG1fdmFsdWUpKTsKKyAgICB9Cisg
ICAgCisgICAgQWlyOjpPcGNvZGUgbG9hZExpbmtPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVu
Y2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKExvYWRM
aW5rQWNxLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKExvYWRMaW5rLCB3aWR0aCk7CisgICAg
fQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlQ29uZE9wY29kZShXaWR0aCB3aWR0aCwgYm9v
bCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmZW5jZSA/IE9QQ09ERV9GT1JfV0lEVEgo
U3RvcmVDb25kUmVsLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZCwgd2lkdGgp
OworICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIGNhbiBlbWl0IGNvZGUgZm9yIHRoZSBmb2xsb3dp
bmcgcGF0dGVybnM6CisgICAgLy8gQXRvbWljV2Vha0NBUworICAgIC8vIEJpdFhvcihBdG9taWNX
ZWFrQ0FTLCAxKQorICAgIC8vIEF0b21pY1N0cm9uZ0NBUworICAgIC8vIEVxdWFsKEF0b21pY1N0
cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gTm90RXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBl
Y3RlZCkKKyAgICAvLyBCcmFuY2goQXRvbWljV2Vha0NBUykKKyAgICAvLyBCcmFuY2goRXF1YWwo
QXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAgLy8gQnJhbmNoKE5vdEVxdWFsKEF0b21p
Y1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vCisgICAgLy8gSXQgYXNzdW1lcyB0aGF0IGF0
b21pY1ZhbHVlIHBvaW50cyB0byB0aGUgQ0FTLCBhbmQgbV92YWx1ZSBwb2ludHMgdG8gdGhlIGlu
c3RydWN0aW9uIGJlaW5nCisgICAgLy8gZ2VuZXJhdGVkLiBJdCBhc3N1bWVzIHRoYXQgeW91J3Zl
IGNvbnN1bWVkIGV2ZXJ5dGhpbmcgdGhhdCBuZWVkcyB0byBiZSBjb25zdW1lZC4KKyAgICB2b2lk
IGFwcGVuZENBUyhWYWx1ZSogYXRvbWljVmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHsKKyAgICAg
ICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IGF0b21pY1ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXRvbWljKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wg
aXNCcmFuY2ggPSBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBCcmFuY2g7CisgICAgICAgIGJvb2wgaXNT
dHJvbmcgPSBhdG9taWMtPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUzsKKyAgICAgICAgYm9v
bCByZXR1cm5zT2xkVmFsdWUgPSBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVM7
CisgICAgICAgIAorICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgo
KTsKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisKKyAgICAgICAgVG1wIHZh
bHVlUmVzdWx0VG1wOworICAgICAgICBUbXAgYm9vbFJlc3VsdFRtcDsKKyAgICAgICAgaWYgKHJl
dHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWludmVydCk7Cisg
ICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgICAgIGJv
b2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0Jy
YW5jaCkgeworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsK
KyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7
CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBUbXAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXA7CisgICAgICAgIGlmIChp
c1N0cm9uZyAmJiAhaXNCcmFuY2gpCisgICAgICAgICAgICBzdWNjZXNzQm9vbFJlc3VsdFRtcCA9
IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWNjZXNzQm9v
bFJlc3VsdFRtcCA9IGJvb2xSZXN1bHRUbXA7CisKKyAgICAgICAgVG1wIGV4cGVjdGVkVmFsdWVU
bXAgPSB0bXAoYXRvbWljLT5jaGlsZCgwKSk7CisgICAgICAgIFRtcCBuZXdWYWx1ZVRtcCA9IHRt
cChhdG9taWMtPmNoaWxkKDEpKTsKKyAgICAgICAgCisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJs
b2NrIHN1Y2Nlc3M7CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIGZhaWx1cmU7CisgICAg
ICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgc3VjY2VzcyA9IG1fYmxvY2tUb0Jsb2Nr
W21fYmxvY2tdLT5zdWNjZXNzb3IoaW52ZXJ0KTsKKyAgICAgICAgICAgIGZhaWx1cmUgPSBtX2Js
b2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29yKCFpbnZlcnQpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRN
b3ZlRm9yVHlwZShhdG9taWMtPm9wZXJhdGlvblR5cGUoKSksIGltbU9yVG1wKGF0b21pYy0+Y2hp
bGQoMCkpLCBtX2VheCk7CisgICAgICAgICAgICBpZiAocmV0dXJuc09sZFZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FTLCB3aWR0
aCksIG1fZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgYXBwZW5k
KHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPm9wZXJhdGlvblR5cGUoKSksIG1fZWF4LCB2YWx1
ZVJlc3VsdFRtcCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnJhbmNoKSB7CisgICAgICAg
ICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNoQXRvbWljU3Ryb25nQ0FTLCB3
aWR0aCksIEFyZzo6c3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCBu
ZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbbV9i
bG9ja10tPnNldFN1Y2Nlc3NvcnMoc3VjY2VzcywgZmFpbHVyZSk7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdHJvbmdD
QVMsIHdpZHRoKSwgQXJnOjpzdGF0dXNDb25kKGludmVydCA/IE1hY3JvQXNzZW1ibGVyOjpGYWls
dXJlIDogTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgdG1wKGF0b21pYy0+Y2hpbGQo
MSkpLCBhZGRyZXNzLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAg
ICAgLy8gV2Ugd2lzaCB0byBlbWl0OgorICAgICAgICAvLworICAgICAgICAvLyBCbG9jayAjcmVs
b29wOgorICAgICAgICAvLyAgICAgTG9hZExpbmsKKyAgICAgICAgLy8gICAgIEJyYW5jaCBOb3RF
cXVhbAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRoZW46I2ZhaWwsIEVsc2U6ICNzdG9yZQor
ICAgICAgICAvLyBCbG9jayAjc3RvcmU6CisgICAgICAgIC8vICAgICBTdG9yZUNvbmQKKyAgICAg
ICAgLy8gICAgIFhvciAkMSwgJXJlc3VsdCAgICA8LS0tIG9ubHkgaWYgIWludmVydAorICAgICAg
ICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8v
IEJsb2NrICNmYWlsOgorICAgICAgICAvLyAgICAgTW92ZSAkaW52ZXJ0LCAlcmVzdWx0CisgICAg
ICAgIC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAgICAgICAg
Ly8gQmxvY2sgI2RvbmU6CisgICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9v
cEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdG9yZUJsb2Nr
ID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdWNjZXNzQmxvY2sgPSBu
dWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoICYmIGlzU3Ryb25nKQorICAgICAgICAgICAg
c3VjY2Vzc0Jsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBmYWls
QmxvY2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoKQorICAgICAgICAgICAgZmFp
bEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdHJvbmdGYWls
QmxvY2s7CisgICAgICAgIGlmIChpc1N0cm9uZykKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9j
ayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIGNvbXBhcmlzb25G
YWlsOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayB3ZWFrRmFpbDsKKyAgICAgICAgaWYg
KGlzU3Ryb25nKSB7CisgICAgICAgICAgICBjb21wYXJpc29uRmFpbCA9IHN0cm9uZ0ZhaWxCbG9j
azsKKyAgICAgICAgICAgIHdlYWtGYWlsID0gcmVsb29wQmxvY2s7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAoaXNCcmFuY2gpCisgICAgICAgICAgICAgICAgY29tcGFyaXNvbkZh
aWwgPSBmYWlsdXJlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbXBhcmlz
b25GYWlsID0gZmFpbEJsb2NrOworICAgICAgICAgICAgd2Vha0ZhaWwgPSBmYWlsdXJlOworICAg
ICAgICB9CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWly
OjpCYXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywg
ZG9uZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChBaXI6Okp1bXApOworICAgICAg
ICBiZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAg
ICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQobG9hZExpbmtPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFz
RmVuY2UoKSksIG1fdmFsdWUsIGFkZHJlc3MsIHZhbHVlUmVzdWx0VG1wKTsKKyAgICAgICAgcmVs
b29wQmxvY2stPmFwcGVuZChPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChCcmFuY2gsIHdpZHRo
KSwgbV92YWx1ZSwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCksIHZhbHVl
UmVzdWx0VG1wLCBleHBlY3RlZFZhbHVlVG1wKTsKKyAgICAgICAgcmVsb29wQmxvY2stPnNldFN1
Y2Nlc3NvcnMoY29tcGFyaXNvbkZhaWwsIHN0b3JlQmxvY2spOworICAgICAgICAKKyAgICAgICAg
c3RvcmVCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5j
ZSgpKSwgbV92YWx1ZSwgbmV3VmFsdWVUbXAsIGFkZHJlc3MsIHN1Y2Nlc3NCb29sUmVzdWx0VG1w
KTsKKyAgICAgICAgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBl
bmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8pLCBib29sUmVzdWx0VG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICAgICAgc3RvcmVC
bG9jay0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCB3ZWFrRmFpbCk7CisgICAgICAgICAgICBkb25l
QmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IWRvbmVCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGRvbmVCbG9jay0+YXBwZW5kKEFpcjo6
T29wcywgbV92YWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNTdHJv
bmcpIHsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBt
X3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBzdWNjZXNzQm9vbFJl
c3VsdFRtcCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5z
ZXRTdWNjZXNzb3JzKHN1Y2Nlc3NCbG9jaywgcmVsb29wQmxvY2spOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+YXBwZW5kKE1vdmUsIG1fdmFsdWUsIEFy
Zzo6aW1tKCFpbnZlcnQpLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNz
QmxvY2stPmFwcGVuZChBaXI6Okp1bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN1Y2Nl
c3NCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZiAoIWludmVydCkKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVC
bG9jay0+YXBwZW5kKFhvcjMyLCBtX3ZhbHVlLCBBcmc6OmJpdEltbSgxKSwgYm9vbFJlc3VsdFRt
cCwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3Rv
cmVCbG9jay0+YXBwZW5kKEFpcjo6SnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3Rv
cmVCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBmYWlsQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6
OmltbShpbnZlcnQpLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBw
ZW5kKEFpcjo6SnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICBmYWlsQmxvY2stPnNldFN1Y2Nl
c3NvcnMoZG9uZUJsb2NrKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzU3Ry
b25nKSB7CisgICAgICAgICAgICBUbXAgdG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAg
ICAgICBzdHJvbmdGYWlsQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21p
Yy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIHZhbHVlUmVzdWx0VG1wLCBhZGRyZXNzLCB0bXApOwor
ICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVl
LCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCB0bXAsIEFyZzo6Yml0SW1tKC0x
KSk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZmFpbEJsb2Nr
LCByZWxvb3BCbG9jayk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgYm9vbCBhcHBlbmRW
b2lkQXRvbWljKEFpcjo6T3Bjb2RlIGF0b21pY09wY29kZSkKKyAgICB7CisgICAgICAgIGlmICht
X3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKG1fdmFsdWUpOworICAgICAgICAK
KyAgICAgICAgaWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwgQXJnOjpJbW0sIGFkZHJlc3Mu
a2luZCgpKSAmJiBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICBhcHBlbmQo
YXRvbWljT3Bjb2RlLCBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRyZXNzKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNWYWxp
ZEZvcm0oYXRvbWljT3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAg
ICAgICBhcHBlbmQoYXRvbWljT3Bjb2RlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRyZXNz
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhcHBlbmRHZW5lcmFsQXRvbWlj
KEFpcjo6T3Bjb2RlIG9wY29kZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgCisgICAgICAgIEFyZyBhZGRy
ZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgVG1wIG9sZFZhbHVlID0gbV9jb2RlLm5ld1Rt
cChHUCk7CisgICAgICAgIFRtcCBuZXdWYWx1ZSA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAg
ICAKKyAgICAgICAgLy8gV2UgbmVlZCBhIENBUyBsb29wIG9yIGEgTEwvU0MgbG9vcC4gVXNpbmcg
cHJlcGFyZS9hdHRlbXB0IGphcmdvbiwgd2Ugd2FudDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8g
QmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIFByZXBhcmUKKyAgICAgICAgLy8gICAgIG9w
Y29kZQorICAgICAgICAvLyAgICAgQXR0ZW1wdAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRo
ZW46I2RvbmUsIEVsc2U6I3JlbG9vcAorICAgICAgICAvLyBCbG9jayAjZG9uZToKKyAgICAgICAg
Ly8gICAgIE1vdmUgb2xkVmFsdWUsIHJlc3VsdAorICAgICAgICAKKyAgICAgICAgYXBwZW5kKHJl
bGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG9sZFZhbHVlLCB0bXAoYXRvbWljKSk7
CisgICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9vcEJsb2NrID0gbmV3Qmxv
Y2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOworICAgICAgICBBaXI6
OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhiZWdpbkJsb2NrLCBk
b25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFpcjo6SnVtcCk7CisgICAgICAg
IGJlZ2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAgICAKKyAgICAg
ICAgQWlyOjpPcGNvZGUgcHJlcGFyZU9wY29kZTsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSB7CisgICAgICAgICAg
ICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDhTaWdu
ZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBX
aWR0aDE2OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkMTZTaWduZWRFeHRl
bmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDMy
OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlMzI7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICAgICAgcHJl
cGFyZU9wY29kZSA9IE1vdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkp
OworICAgICAgICAgICAgb3Bjb2RlID0gbG9hZExpbmtPcGNvZGUoYXRvbWljLT5vcGVyYXRpb25X
aWR0aCgpLCBhdG9taWMtPmhhc0ZlbmNlKCkpOworICAgICAgICB9CisgICAgICAgIHJlbG9vcEJs
b2NrLT5hcHBlbmQocHJlcGFyZU9wY29kZSwgbV92YWx1ZSwgYWRkcmVzcywgb2xkVmFsdWUpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKG9wY29kZSAhPSBBaXI6Ok5vcCkgeworICAgICAgICAgICAg
aWYgKGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6SW1t
LCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBl
bmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG9sZFZhbHVlLCBuZXdW
YWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBl
bmQob3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIG9sZFZhbHVlLCBuZXdW
YWx1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+
YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG1fdmFsdWUsIG9sZFZh
bHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGltbShhdG9taWMtPmNoaWxkKDAp
KSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCkpCisgICAgICAgICAg
ICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWlj
LT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWlj
LT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBjYXNPcGNvZGUgPSBP
UENPREVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9uZ0NBUywgYXRvbWljLT5vcGVyYXRpb25X
aWR0aCgpKTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQocmVsYXhlZE1vdmVGb3JU
eXBlKGF0b21pYy0+dHlwZSgpKSwgbV92YWx1ZSwgb2xkVmFsdWUsIG1fZWF4KTsKKyAgICAgICAg
ICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoY2FzT3Bjb2RlLCBtX3ZhbHVlLCBBcmc6OnN0YXR1c0Nv
bmQoTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3VmFsdWUsIGFkZHJlc3MpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsK
KyAgICAgICAgICAgIFRtcCBib29sUmVzdWx0ID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAg
ICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29kZShhdG9taWMtPm9wZXJhdGlv
bldpZHRoKCksIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIG5ld1ZhbHVlLCBhZGRyZXNz
LCBib29sUmVzdWx0KTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVz
dDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVz
dWx0LCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICB9CisgICAgICAgIHJlbG9vcEJsb2NrLT5z
ZXRTdWNjZXNzb3JzKGRvbmVCbG9jaywgcmVsb29wQmxvY2spOworICAgIH0KKyAgICAKICAgICB2
b2lkIGxvd2VyKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsK
QEAgLTE5NzEsMzAgKzIzNzEsNTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgTG9hZDogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBtb3ZlRm9yVHlwZShtX3ZhbHVlLT50eXBlKCkpLCBtX3ZhbHVlLCBhZGRyKG1fdmFs
dWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBt
X3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IEFpcjo6T29wczsKKyAgICAgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG1lbW9yeS0+dHlwZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTMyOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEludDY0OgorICAg
ICAgICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNxNjQ7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG9w
Y29kZSA9IG1vdmVGb3JUeXBlKG1lbW9yeS0+dHlwZSgpKTsKKyAgICAgICAgICAgIGFwcGVuZCh0
cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAo
bV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgTG9hZDhTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0
KG1fdmFsdWUsIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwg
dG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVl
LT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4U2lnbmVkRXh0ZW5kVG8z
MiA6IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0lu
c3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDha
OiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQ4LCBtX3Zh
bHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9h
ZEFjcTggOiBMb2FkODsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwg
b3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2UzogewotICAgICAg
ICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTZTaWduZWRFeHRlbmRUbzMy
LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFp
cjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgp
ID8gTG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiA6IExvYWQxNlNpZ25lZEV4dGVuZFRvMzI7Cisg
ICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwg
YWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIExvYWQxNlo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFw
cGluZ0luc3QobV92YWx1ZSwgTG9hZDE2LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92
YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1l
bW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcTE2IDogTG9hZDE2OworICAgICAgICAg
ICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92
YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0K
KyAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFkZDogewogICAgICAgICAgICAgaWYgKHRyeUFw
cGVuZExlYSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwOTIsNyArMjUxMiw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNDaGlsbCgpKQogICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CiAgICAgICAgICAgICBpZiAoaXNJbnQo
bV92YWx1ZS0+dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJYODZE
aXYoRGl2KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZEaXYoRGl2KTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoIWlzWDg2KCkg
fHwgaXNGbG9hdChtX3ZhbHVlLT50eXBlKCkpKTsKQEAgLTIxMDMsNyArMjUyMyw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgY2FzZSBVRGl2OiB7CiAgICAgICAgICAgICBpZiAoaXNJbnQobV92YWx1
ZS0+dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJYODZVRGl2KFVE
aXYpOworICAgICAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVURpdik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0yMTE3LDEzICsyNTM3LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgTW9kOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4
NigpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZhbHVlLT5pc0NoaWxsKCkpOwot
ICAgICAgICAgICAgbG93ZXJYODZEaXYoTW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NkRpdihN
b2QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBVTW9k
OiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4NigpKTsKLSAgICAgICAgICAgIGxv
d2VyWDg2VURpdihVTW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVU1vZCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjE2MiwxMCArMjU4MiwyOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8Tm90MzIsIE5vdDY0PihtX3ZhbHVlLT5j
aGlsZCgwKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyBUaGlzIHBhdHRlcm4gaXMgc3VwZXIgdXNlZnVsIG9uIGJv
dGggeDg2IGFuZCBBUk02NCwgc2luY2UgdGhlIGludmVyc2lvbiBvZiB0aGUgQ0FTIHJlc3VsdAor
ICAgICAgICAgICAgLy8gY2FuIGJlIGRvbmUgd2l0aCB6ZXJvIGNvc3Qgb24geDg2IChqdXN0IGZs
aXAgdGhlIHNldCBmcm9tIEUgdG8gTkUpIGFuZCBpdCdzIGEgcHJvZ3Jlc3Npb24KKyAgICAgICAg
ICAgIC8vIG9uIEFSTTY0IChzaW5jZSBTVFggcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIHNvIG9yZGlu
YXJpbHkgd2UgaGF2ZSB0byBmbGlwIGl0KS4KKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGls
ZCgxKS0+aXNJbnQoMSkKKyAgICAgICAgICAgICAgICAmJiBpc0F0b21pY0NBUyhtX3ZhbHVlLT5j
aGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3Zh
bHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtX3ZhbHVl
LT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUtPmNoaWxkKDAp
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPFhvcjMyLCBYb3I2NCwgWG9yRG91YmxlLCBY
b3JGbG9hdCwgQ29tbXV0YXRpdmU+KAogICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDAp
LCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaXNBUk02NCgpKTsKKyAgICAgICAgICAgIGFwcGVuZFVuT3A8RGVwZW5kMzIsIERlcGVu
ZDY0PihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
IAogICAgICAgICBjYXNlIFNobDogewogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEp
LT5pc0ludDMyKDEpKSB7CkBAIC0yMjY2LDcgKzI3MDQsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWVU
b1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUs
IGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIy
ODcsNyArMjcyNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcHBlbmRTdG9yZShB
aXI6OlN0b3JlOCwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFw
cGVuZFN0b3JlKG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTIzMDgsNyArMjc0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBhcHBlbmRTdG9yZShBaXI6OlN0b3JlMTYsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVl
KSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDE2LDcgKzI4NTQsMjIgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIGNhc2UgTm90
RXF1YWw6CisgICAgICAgIGNhc2UgTm90RXF1YWw6IHsKKyAgICAgICAgICAgIGlmIChtX3ZhbHVl
LT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAgICAgICAgICAgICAg
JiYgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApID09IG1fdmFsdWUtPmNoaWxkKDEpCisgICAg
ICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUtPmNoaWxkKDApLT5j
aGlsZCgxKSkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMobV92
YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjb21t
aXRJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FT
KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNyZWF0ZUNvbXBhcmUobV92YWx1ZSkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBMZXNzVGhhbjoKICAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAgICAgY2FzZSBMZXNz
RXF1YWw6CkBAIC0yNzI3LDYgKzMxODAsNDAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAg
ICAgIGNhc2UgQnJhbmNoOiB7CisgICAgICAgICAgICBpZiAoY2FuQmVJbnRlcm5hbChtX3ZhbHVl
LT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogYnJhbmNoQ2hpbGQgPSBtX3Zh
bHVlLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyYW5jaENoaWxkLT5vcGNv
ZGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAgICAgICAgICAgICAg
ICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1N0
cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICAgICAgLy8gQSBicmFuY2ggaXMgYSBjb21wYXJpc29u
IHRvIHplcm8uCisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCkt
PmlzSW50KDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFu
Y2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQs
IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBjYXNlIEVxdWFsOgorICAgICAgICAgICAgICAgIGNhc2UgTm90RXF1
YWw6CisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPm9wY29k
ZSgpID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2FuQmVJ
bnRlcm5hbChicmFuY2hDaGlsZC0+Y2hpbGQoMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAm
JiBicmFuY2hDaGlsZC0+Y2hpbGQoMCktPmNoaWxkKDApID09IGJyYW5jaENoaWxkLT5jaGlsZCgx
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQp
OworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQtPmNo
aWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZC0+
Y2hpbGQoMCksIGJyYW5jaENoaWxkLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBw
ZW5kKGNyZWF0ZUJyYW5jaChtX3ZhbHVlLT5jaGlsZCgwKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0yNzg0LDcgKzMyNzEsODEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGFwcGVuZChBaXI6OkVudHJ5U3dpdGNoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgY2Fz
ZSBBdG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLCBmYWxz
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEF0b21pY1hjaGdBZGQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lk
QXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQWRkLCBhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlID0gT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnQWRkLCBhdG9taWMtPm9wZXJhdGlvbldp
ZHRoKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIGFk
ZHJlc3Mua2luZCgpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5
cGUoYXRvbWljLT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9taWMpKTsK
KyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVzcyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhcHBl
bmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEFkZCwgYXRvbWljLT5v
cGVyYXRpb25XaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIEF0b21pY1hjaGdTdWI6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9t
aWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRW
b2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3ViLCBhdG9taWMtPm9wZXJhdGlvbldp
ZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoU3ViLCBh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDogeworICAgICAgICAg
ICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAg
ICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNBbmQs
IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NB
Tk9OSUNBTF9XSURUSChBbmQsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNY
Y2hnT3I6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxB
dG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9G
T1JfV0lEVEgoQXRvbWljT3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0
b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChPciwgYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEF0b21pY1hjaGdYb3I6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9t
aWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRW
b2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWG9yLCBhdG9taWMtPm9wZXJhdGlvbldp
ZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoWG9yLCBh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAg
QXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAgICAgICAg
ICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZywgYXRv
bWljLT5vcGVyYXRpb25XaWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQo
cmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkp
LCB0bXAoYXRvbWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21p
YyksIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NB
Tk9OSUNBTF9XSURUSChYb3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNzkyLDY0ICszMzUzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgZGF0YUxvZygiRkFUQUw6IGNvdWxkIG5vdCBsb3dlciAiLCBkZWVwRHVtcCht
X3Byb2NlZHVyZSwgbV92YWx1ZSksICJcbiIpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KLQotICAgIHZvaWQgbG93ZXJYODZEaXYoQjM6Ok9wY29kZSBvcCkK
LSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICAgICAgVG1wIGVheCA9IFRt
cChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBlZHggPSBUbXAoWDg2UmVnaXN0ZXJz
OjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7Ci0gICAg
ICAgIEFpcjo6T3Bjb2RlIGRpdjsKLSAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsK
LSAgICAgICAgY2FzZSBJbnQzMjoKLSAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBY
ODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7Ci0gICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDY0OgotICAgICAgICAgICAgY29udmVy
dFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7Ci0gICAgICAgICAgICBkaXYg
PSBYODZEaXY2NDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKLSAg
ICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09IERpdiA/IFg4NlJl
Z2lzdGVyczo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUs
IHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChjb252ZXJ0VG9E
b3VibGVXb3JkLCBlYXgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAo
bV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0
bXAobV92YWx1ZSkpOwotCi0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0ob3ApOwotICAgICAg
ICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQg
bG93ZXJYODZVRGl2KEIzOjpPcGNvZGUgb3ApCi0gICAgewotI2lmIENQVShYODYpIHx8IENQVShY
ODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAg
ICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29k
ZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7
Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7Ci0gICAgICAgIFg4
NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gWDg2UmVnaXN0ZXJz
OjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1f
dmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKFhvcjY0LCBlZHgsIGVkeCk7
Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsK
LSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOwotI2Vsc2UK
LSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRG
T1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KKyAgICAKICAgICBJbmRleFNldDxWYWx1ZT4gbV9sb2Nr
ZWQ7IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCB3aWxsIGhhdmUgbm8gVG1wIGluIEFpci4KICAg
ICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3ZhbHVlVG9UbXA7IC8vIFRoZXNlIGFyZSB2YWx1ZXMg
dGhhdCBtdXN0IGhhdmUgYSBUbXAgaW4gQWlyLiBXZSBzYXkgdGhhdCBhIFZhbHVlKiB3aXRoIGEg
bm9uLW51bGwgVG1wIGlzICJwaW5uZWQiLgogICAgIEluZGV4TWFwPFZhbHVlLCBUbXA+IG1fcGhp
VG9UbXA7IC8vIEVhY2ggUGhpIGdldHMgaXRzIG93biBUbXAuCkBAIC0yODY0LDcgKzMzNjgsNyBA
QCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFZlY3RvcjxJbnN0LCA0Pj4gbV9pbnN0czsKICAgICBW
ZWN0b3I8SW5zdD4gbV9wcm9sb2d1ZTsKLQorICAgIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBtX2Js
b2NrOwogICAgIGJvb2wgbV9pc1JhcmU7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKQEAgLTI4NzUs
NiArMzM3OSwxMiBAQCBwcml2YXRlOgogCiAgICAgUHJvY2VkdXJlJiBtX3Byb2NlZHVyZTsKICAg
ICBDb2RlJiBtX2NvZGU7CisKKyAgICBBaXI6OkJsb2NrSW5zZXJ0aW9uU2V0IG1fYmxvY2tJbnNl
cnRpb25TZXQ7CisKKyAgICBUbXAgbV9lYXg7CisgICAgVG1wIG1fZWN4OworICAgIFRtcCBtX2Vk
eDsKIH07CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIGNsYXNzIFByb2NlZHVyZTsKIG5h
bWVzcGFjZSBBaXIgeyBjbGFzcyBDb2RlOyB9CiAKLS8vIFRoaXMgbG93ZXJzIHRoZSBjdXJyZW50
IEIzIHByb2NlZHVyZSB0byBhbiBBaXIgY29kZS4KKy8vIFRoaXMgbG93ZXJzIHRoZSBjdXJyZW50
IEIzIHByb2NlZHVyZSB0byBhbiBBaXIgY29kZS4gTm90ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGF0
IHRoZSBwcm9jZWR1cmUgaXMgaW4KKy8vIHF1aXJrcyBtb2RlLCBidXQgaXQgZG9lcyBub3QgYXNz
ZXJ0IHRoaXMsIHRvIHNpbXBsaWZ5IGhvdyB3ZSB3cml0ZSB0ZXN0cy4KIAogSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBsb3dlclRvQWlyKFByb2NlZHVyZSYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDMwICszNCw0OCBAQCBNZW1vcnlWYWx1ZTo6fk1lbW9yeVZhbHVlKCkKIHsKIH0KIAorVHlw
ZSBNZW1vcnlWYWx1ZTo6YWNjZXNzVHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzTG9hZCgpKQor
ICAgICAgICByZXR1cm4gdHlwZSgpOworICAgIC8vIFRoaXMgaGFwcGVucyB0byB3b3JrIGZvciBh
dG9taWNzLCB0b28uIFRoYXQncyB3aHkgQXRvbWljVmFsdWUgZG9lcyBub3QgbmVlZCB0byBvdmVy
cmlkZSB0aGlzLgorICAgIHJldHVybiBjaGlsZCgwKS0+dHlwZSgpOworfQorCitCYW5rIE1lbW9y
eVZhbHVlOjphY2Nlc3NCYW5rKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYmFua0ZvclR5cGUoYWNj
ZXNzVHlwZSgpKTsKK30KKwogc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNv
bnN0CiB7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkpOworfQorCitXaWR0aCBNZW1v
cnlWYWx1ZTo6bG9hZFN0b3JlV2lkdGgoKSBjb25zdAorewogICAgIHN3aXRjaCAob3Bjb2RlKCkp
IHsKICAgICBjYXNlIExvYWQ4WjoKICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIFN0b3JlODoK
LSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBXaWR0aDg7CiAgICAgY2FzZSBMb2Fk
MTZaOgogICAgIGNhc2UgTG9hZDE2UzoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIHJldHVy
biAyOworICAgICAgICByZXR1cm4gV2lkdGgxNjsKICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJl
dHVybiBzaXplb2ZUeXBlKHR5cGUoKSk7CisgICAgICAgIHJldHVybiB3aWR0aEZvclR5cGUodHlw
ZSgpKTsKICAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZShjaGlsZCgw
KS0+dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZShjaGlsZCgwKS0+dHlwZSgp
KTsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICB9CiB9CiAKIFdp
ZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdpZHRo
Rm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJuIGxvYWRTdG9yZVdpZHRoKCk7
CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02NSw4ICs4MywxMSBAQCB2b2lkIE1lbW9yeVZhbHVl
OjpkdW1wTWV0YShDb21tYVByaW50ZXImCiAgICAgaWYgKG1fb2Zmc2V0KQogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJvZmZzZXQgPSAiLCBtX29mZnNldCk7CiAgICAgaWYgKChpc0xvYWQoKSAm
JiBlZmZlY3RzKCkucmVhZHMgIT0gcmFuZ2UoKSkKLSAgICAgICAgfHwgKGlzU3RvcmUoKSAmJiBl
ZmZlY3RzKCkud3JpdGVzICE9IHJhbmdlKCkpKQorICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVm
ZmVjdHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkKKyAgICAgICAgfHwgZmVuY2VSYW5nZSgpKQogICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJyYW5nZSA9ICIsIHJhbmdlKCkpOworICAgIGlmIChmZW5j
ZVJhbmdlKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgImZlbmNlUmFuZ2UgPSAiLCBmZW5j
ZVJhbmdlKCkpOwogfQogCiBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CkBA
IC03NCw2ICs5NSw2MiBAQCBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG5ldyBNZW1vcnlWYWx1ZSgqdGhpcyk7CiB9CiAKKy8vIFVzZSB0aGlzIGZvcm0g
Zm9yIExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhh
dCBoYXZlIGEgc3VmZml4IHRoYXQKKy8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCitN
ZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmln
aW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFw
UmFuZ2UgZmVuY2VSYW5nZSkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUs
IG9yaWdpbiwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1fcmFuZ2Uo
cmFuZ2UpCisgICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKK3sKKyAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAg
Y2FzZSBMb2FkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAg
ICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExv
YWQxNlM6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3RvcmUxNjoKKyAgICAg
ICAgY2FzZSBTdG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9h
ZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlWYWx1ZTo6TWVtb3J5
VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1v
cnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5j
ZVJhbmdlKQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAo
a2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2Fk
OFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3Rv
cmVzLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwg
VmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSBy
YW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBr
aW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0
KQorICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQor
eworICAgIEFTU0VSVChCMzo6aXNTdG9yZShraW5kLm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMjEyOTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNDggKzI3LDE3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNC
YW5rLmgiCiAjaW5jbHVkZSAiQjNIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBh
bGxvdyBmZW5jZWQgbWVtb3J5IGFjY2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
TWVtb3J5VmFsdWUgOiBwdWJsaWMgVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFj
Y2VwdHMoS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7
Ci0gICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2Fz
ZSBMb2FkMTZaOgotICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAg
ICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBT
dG9yZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wg
aXNTdG9yZShLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkp
IHsKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAg
Y2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGlj
IGJvb2wgaXNMb2FkKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtp
bmQpICYmICFpc1N0b3JlKGtpbmQpOworICAgICAgICByZXR1cm4gaXNNZW1vcnlBY2Nlc3Moa2lu
ZC5vcGNvZGUoKSk7CiAgICAgfQogCiAgICAgfk1lbW9yeVZhbHVlKCk7CkBAIC03OCw3NiArNDcs
NTggQEAgcHVibGljOgogCiAgICAgY29uc3QgSGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFuZ2U7IH0KICAgICB2b2lkIHNldFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2Up
IHsgbV9yYW5nZSA9IHJhbmdlOyB9CisgICAgCisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3Ig
cmFuZ2UuCisgICAgY29uc3QgSGVhcFJhbmdlJiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IHJhbmdlKCk7IH0KKyAgICB2b2lkIHNldEFjY2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFu
Z2UpIHsgc2V0UmFuZ2UocmFuZ2UpOyB9CisgICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBmZW5j
ZVJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9mZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRGZW5j
ZVJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0K
KworICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc1N0b3JlKG9wY29kZSgp
KTsgfQorICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1cm4gQjM6OmlzTG9hZChvcGNvZGUo
KSk7IH0KIAotICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBWb2lk
OyB9Ci0gICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgIT0gVm9pZDsgfQor
ICAgIGJvb2wgaGFzRmVuY2UoKSBjb25zdCB7IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsgfQogCisg
ICAgVHlwZSBhY2Nlc3NUeXBlKCkgY29uc3Q7CisgICAgQmFuayBhY2Nlc3NCYW5rKCkgY29uc3Q7
CiAgICAgc2l6ZV90IGFjY2Vzc0J5dGVTaXplKCkgY29uc3Q7Ci0gICAgV2lkdGggYWNjZXNzV2lk
dGgoKSBjb25zdDsKKyAgICAKKyAgICAvLyBTbGlnaHRseSBmYXN0ZXIgdmVyc2lvbiBvZiBhY2Nl
c3NXaWR0aCwgaWYgeW91IGtub3cgdGhhdCB5b3UncmUgd29ya2luZyB3aXRoIGEgbG9hZCBvciBz
dG9yZS4KKyAgICBXaWR0aCBsb2FkU3RvcmVXaWR0aCgpIGNvbnN0OworICAgIAorICAgIHZpcnR1
YWwgV2lkdGggYWNjZXNzV2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVt
cE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9w
Y29kZVRhZywgS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zm
c2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlLCBBcmd1bWVudHMuLi4g
YXJndW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9y
aWdpbiwgYXJndW1lbnRzLi4uKQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAg
LCBtX3JhbmdlKHJhbmdlKQorICAgICAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQorICAg
IHsKKyAgICB9CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0K
KyAgICAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9h
ZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CiAgICAgLy8g
ZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQs
IFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0
ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4s
IHBvaW50ZXIpCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2Uo
SGVhcFJhbmdlOjp0b3AoKSkKLSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7
Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2Ug
TG9hZDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZDhaOgot
ICAgICAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAg
ICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50
MzIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0g
ICAgICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAg
ICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5k
LCBUeXBlLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBS
YW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVh
cFJhbmdlKCkpOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJl
dHVybiB0eXBlIGlzIGltcGxpZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4g
b3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IE1l
bW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKLSAgICB7Ci0g
ICAgfQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMy
X3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJh
bmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZv
ciBzdG9yZXMuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1
ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDog
VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikK
LSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6
OnRvcCgpKQotICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAg
ICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0g
ICAgICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFs
dWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2Ug
cmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5n
ZSgpKTsKKyAgICAKICAgICBpbnQzMl90IG1fb2Zmc2V0IHsgMCB9OwotICAgIEhlYXBSYW5nZSBt
X3JhbmdlOworICAgIEhlYXBSYW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAg
IEhlYXBSYW5nZSBtX2ZlbmNlUmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVU
cmFpdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVU
cmFpdHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRp
dmVUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM0JhbmsuaCIKKyNpbmNsdWRlICJCM1R5cGUuaCIK
KyNpbmNsdWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewor
Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IE5hdGl2ZVRyYWl0czsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgTmF0aXZlVHJhaXRzPGludDhfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsg
PSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDg7CisgICAgc3RhdGlj
IGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZl
VHJhaXRzPHVpbnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAg
c3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg4OworICAgIHN0YXRpYyBjb25zdCBUeXBl
IHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxpbnQx
Nl90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25z
dCBXaWR0aCB3aWR0aCA9IFdpZHRoMTY7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IElu
dDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQxNl90PiB7Cisg
ICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3
aWR0aCA9IFdpZHRoMTY7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGludDMyX3Q+IHsKKyAgICBzdGF0aWMg
Y29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lk
dGgzMjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDMyX3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFu
ayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAg
ICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBOYXRpdmVUcmFpdHM8aW50NjRfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBH
UDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBj
b25zdCBUeXBlIHR5cGUgPSBJbnQ2NDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRy
YWl0czx1aW50NjRfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBz
dGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBl
IHR5cGUgPSBJbnQ2NDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxmbG9h
dD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBGUDsKKyAgICBzdGF0aWMgY29uc3Qg
V2lkdGggd2lkdGggPSBXaWR0aDMyOworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBGbG9h
dDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxkb3VibGU+IHsKKyAgICBz
dGF0aWMgY29uc3QgQmFuayBiYW5rID0gRlA7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRo
ID0gV2lkdGg2NDsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gRG91YmxlOworfTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHJldmlzaW9uIDIxMjk5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC02OCw2ICs2OCwyMyBAQCBzdGQ6Om9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJl
KE9wCiAgICAgfQogfQogCitPcGNvZGUgc3RvcmVPcGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0
aCkKK3sKKyAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICBjYXNlIEdQOgorICAgICAgICBzd2l0Y2gg
KHdpZHRoKSB7CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgcmV0dXJuIFN0b3Jl
ODsKKyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlMTY7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgICAgIH0KKyAg
ICBjYXNlIEZQOgorICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgfQorfQorCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0yNjMsNiArMjgwLDMzIEBAIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGMKICAgICBjYXNlIFN0b3JlOgog
ICAgICAgICBvdXQucHJpbnQoIlN0b3JlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0
b21pY1dlYWtDQVM6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljV2Vha0NBUyIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIG91dC5wcmludCgi
QXRvbWljU3Ryb25nQ0FTIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdB
ZGQ6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ0FkZCIpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdB
bmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICBv
dXQucHJpbnQoIkF0b21pY1hjaGdPciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9t
aWNYY2hnU3ViOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdTdWIiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9t
aWNYY2hnWG9yIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAg
ICAgIG91dC5wcmludCgiQXRvbWljWGNoZyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBE
ZXBlbmQ6CisgICAgICAgIG91dC5wcmludCgiRGVwZW5kIik7CisgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAgICBvdXQucHJpbnQoIldhc21BZGRyZXNzIik7CiAg
ICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5j
bHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtODIsNyArODMsNiBA
QCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIE1vZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBh
cyB0byB3aGF0IHdpbGwgaGFwcGVuIHdoZW4geW91IGV4ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEg
YW5kIHglMC4KICAgICBVTW9kLAogCi0KICAgICAvLyBQb2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90
ZSB0aGF0IHdlIG9ubHkgbmVlZCB0aGlzIGZvciBmbG9hdGluZyBwb2ludCwgc2luY2UgaW50ZWdl
ciBuZWdhdGlvbgogICAgIC8vIGlzIGV4YWN0bHkgbGlrZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mg
bm90IHRydWUgZm9yIGZsb2F0aW5nIHBvaW50LiBTdWIoMCwgMCkgaXMgMCwgd2hpbGUKICAgICAv
LyBOZWcoMCkgaXMgLTAuIEFsc28sIHdlIGNhbm9uaWNhbGl6ZSBTdWIoMCwgeCkgaW50byBOZWco
eCkgaW4gY2FzZSBvZiBpbnRlZ2Vycy4KQEAgLTE2Miw2ICsxNjIsMTA3IEBAIGVudW0gT3Bjb2Rl
IDogaW50MTZfdCB7CiAgICAgU3RvcmUxNiwKICAgICAvLyBUaGlzIGlzIGEgcG9seW1vcnBoaWMg
c3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgRmxvYXQsIGFuZCBEb3VibGUuCiAgICAgU3RvcmUsCisg
ICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIGEgYm9vbGVh
bi4gTWF5IGNob29zZSB0byBkbyBub3RoaW5nIGFuZCByZXR1cm4gZmFsc2UuIFlvdSBjYW4KKyAg
ICAvLyB1c3VhbGx5IGFzc3VtZSB0aGF0IHRoaXMgaXMgZmFzdGVyIGFuZCByZXN1bHRzIGluIGxl
c3MgY29kZSB0aGFuIEF0b21pY1N0cm9uZ0NBUywgdGhvdWdoIHRoYXQncworICAgIC8vIG5vdCBu
ZWNlc3NhcmlseSB0cnVlIG9uIEludGVsLCBpZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gZG9lcyBp
dHMgam9iLiBJbWFnaW5lIHRoYXQgdGhpcyBvcGNvZGUgaXMKKyAgICAvLyBhcyBpZiB5b3UgZGlk
IHRoaXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgLy8gYm9vbCBBdG9taWNXZWFrQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCog
cHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgaWYgKCFyYW5kKCkpCisgICAgLy8gICAgICAgICBy
ZXR1cm4gZmFsc2U7IC8vIFJlYWwgd29ybGQgZXhhbXBsZSBvZiB0aGlzOiBjb250ZXh0IHN3aXRj
aCBvbiBBUk0gd2hpbGUgZG9pbmcgQ0FTLgorICAgIC8vICAgICBpZiAoKnB0ciAhPSBleHBlY3Rl
ZFZhbHVlKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vICAgICAqcHRyID0g
bmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVybiB0cnVlOworICAgIC8vIH0KKyAgICAvLworICAg
IC8vIE5vdGUgdGhhdCBhbGwgYXRvbWljcyBwdXQgdGhlIHBvaW50ZXIgbGFzdCB0byBiZSBjb25z
aXN0ZW50IHdpdGggaG93IGxvYWRzIGFuZCBzdG9yZXMgd29yay4gVGhpcworICAgIC8vIGlzIGEg
Z29vZnkgdHJhZGl0aW9uLCBidXQgaXQncyBoYXJtbGVzcywgYW5kIGJldHRlciB0aGFuIGJlaW5n
IGluY29uc2lzdGVudC4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCB3ZWFrIENBUyBoYXMgbm8g
ZmVuY2luZyBndWFyYW50ZWVzIHdoZW4gaXQgZmFpbHMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9s
bG93aW5nCisgICAgLy8gdHJhbnNmb3JtYXRpb24gaXMgYWx3YXlzIHZhbGlkOgorICAgIC8vCisg
ICAgLy8gQmVmb3JlOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NB
UyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1
Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICAvLworICAgIC8vIEFmdGVyOgorICAgIC8vCisgICAgLy8g
ICAgICAgICBCcmFuY2goRXF1YWwoTG9hZChwdHIpLCBleHBlY3RlZCkpCisgICAgLy8gICAgICAg
U3VjY2Vzc29yczogVGhlbjojYXR0ZW1wdCwgRWxzZTojZmFpbAorICAgIC8vICAgICBCQiNhdHRl
bXB0OgorICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywg
cHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWls
CisgICAgLy8KKyAgICAvLyBCb3RoIGtpbmRzIG9mIENBUyBmb3Igbm9uLWNhbm9uaWNhbCB3aWR0
aHMgKFdpZHRoOCBhbmQgV2lkdGgxNikgaWdub3JlIHRoZSBpcnJlbGV2YW50IGJpdHMgb2YgdGhl
CisgICAgLy8gaW5wdXQuCisgICAgQXRvbWljV2Vha0NBUywKKyAgICAKKyAgICAvLyBBdG9taWMg
Y29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2
ZSB0aGUgbm9uZGV0ZXJtaW5pc20gb2YgV2Vha0NBUy4KKyAgICAvLyBUaGlzIGlzIGEgYml0IG1v
cmUgY29kZSBhbmQgYSBiaXQgc2xvd2VyIGluIHNvbWUgY2FzZXMsIHRob3VnaCBub3QgYnkgYSBs
b3QuIEltYWdpbmUgdGhhdCB0aGlzCisgICAgLy8gb3Bjb2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhp
cyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAv
LyBUIEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikK
KyAgICAvLyB7CisgICAgLy8gICAgIFQgb2xkVmFsdWUgPSAqcHRyOworICAgIC8vICAgICBpZiAo
b2xkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgICpwdHIgPSBuZXdWYWx1
ZTsKKyAgICAvLyAgICAgcmV0dXJuIG9sZFZhbHVlCisgICAgLy8gfQorICAgIC8vCisgICAgLy8g
Tm90ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5kIEF0b21pY1N0cm9uZ0NBUyBzb3J0IG9mIGhhdmUg
dGhpcyBraW5kIG9mIGVxdWl2YWxlbmNlOgorICAgIC8vCisgICAgLy8gQXRvbWljV2Vha0NBUyhA
ZXhwLCBAbmV3LCBAcHRyKSA9PSBFcXVhbChBdG9taWNTdHJvbmdDQVMoQGV4cCwgQG5ldywgQHB0
ciksIEBleHApCisgICAgLy8KKyAgICAvLyBBc3N1bWluZyB0aGF0IHRoZSBXZWFrQ0FTIGRvZXMg
bm90IHNwdXJpb3VzbHkgZmFpbCwgb2YgY291cnNlLgorICAgIEF0b21pY1N0cm9uZ0NBUywKKyAg
ICAKKyAgICAvLyBBdG9taWNhbGx5IF9fXyBhIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRo
ZSBvbGQgdmFsdWUuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hj
aGdfX18oQG9wZXJhbmQsIEBwdHIpCisgICAgLy8KKyAgICAvLyBGb3Igbm9uLWNhbm9uaWNhbCB3
aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNiksIHRoZXNlIHJldHVybiBzaWduLWV4dGVuZGVkIHJl
c3VsdHMgYW5kIGlnbm9yZSB0aGUKKyAgICAvLyBpcnJlbGV2YW50IGJpdHMgb2YgdGhlaXIgaW5w
dXRzLgorICAgIEF0b21pY1hjaGdBZGQsCisgICAgQXRvbWljWGNoZ0FuZCwKKyAgICBBdG9taWNY
Y2hnT3IsCisgICAgQXRvbWljWGNoZ1N1YiwKKyAgICBBdG9taWNYY2hnWG9yLAorICAgIAorICAg
IC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBBdG9taWNYY2hnTmVnIGFuZCBBdG9taWNY
Y2hnTm90LgorICAgIAorICAgIC8vIEF0b21pY2FsbHkgZXhjaGFuZ2UgYSB2YWx1ZSB3aXRoIGEg
bWVtb3J5IGxvY2F0aW9uLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9t
aWNYY2hnKEBuZXdWYWx1ZSwgQHB0cikKKyAgICBBdG9taWNYY2hnLAorICAgIAorICAgIC8vIElu
dHJvZHVjZSBhbiBpbnZpc2libGUgZGVwZW5kZW5jeSBmb3IgYmxvY2tpbmcgbW90aW9uIG9mIGxv
YWRzIHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBA
cmVzdWx0ID0gRGVwZW5kKEBwaGFudG9tKQorICAgIC8vCisgICAgLy8gVGhpcyBpcyBldmVudHVh
bGx5IGNvZGVnZW5lcmF0ZWQgdG8gaGF2ZSBsb2NhbCBzZW1hbnRpY3MgYXMgaWYgd2UgZGlkOgor
ICAgIC8vCisgICAgLy8gQHJlc3VsdCA9ICQwCisgICAgLy8KKyAgICAvLyBCdXQgaXQgZW5zdXJl
cyB0aGF0IHRoZSB1c2VycyBvZiBAcmVzdWx0IGNhbm5vdCBleGVjdXRlIHVudGlsIEBwaGFudG9t
IGlzIGNvbXB1dGVkLgorICAgIC8vCisgICAgLy8gVGhlIGNvbXBpbGVyIGlzIG5vdCBhbGxvd2Vk
IHRvIHJlYXNvbiBhYm91dCB0aGUgZmFjdCB0aGF0IERlcGVuZCBjb2RlZ2VuZXJhdGVzIHRoaXMg
d2F5LiBBbnkga2luZAorICAgIC8vIG9mIHRyYW5zZm9ybWF0aW9uIG9yIGFuYWx5c2lzIHRoYXQg
cmVsaWVzIG9uIHRoZSBpbnNpZ2h0IHRoYXQgRGVwZW5kIGlzIHJlYWxseSB6ZXJvIGlzIHVuc291
bmQsCisgICAgLy8gYmVjYXVzZSBpdCB1bmxvY2tzIHJlb3JkZXJpbmcgb2YgdXNlcnMgb2YgQHJl
c3VsdCBhbmQgQHBoYW50b20uCisgICAgLy8KKyAgICAvLyBPbiBYODYsIHRoaXMgaXMgbG93ZXJl
ZCB0byBhIGxvYWQtbG9hZCBmZW5jZSBhbmQgQHJlc3VsdCB1c2VzIEBwaGFudG9tIGRpcmVjdGx5
LgorICAgIC8vCisgICAgLy8gT24gQVJNLCB0aGlzIGlzIGxvd2VyZWQgYXMgaWYgbGlrZToKKyAg
ICAvLworICAgIC8vIEByZXN1bHQgPSBCaXRYb3IoQHBoYW50b20sIEBwaGFudG9tKQorICAgIC8v
CisgICAgLy8gRXhjZXB0IHRoYXQgdGhlIGNvbXBpbGVyIG5ldmVyIGdldHMgYW4gb3Bwb3J0dW5p
dHkgdG8gc2ltcGxpZnkgb3V0IHRoZSBCaXRYb3IuCisgICAgRGVwZW5kLAogCiAgICAgLy8gVGhp
cyBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIGFjdHVhbCBhZGRyZXNzIG9mIGEgV2FzbSBtZW1vcnkg
b3BlcmF0aW9uLiBJdCB0YWtlcyBhbiBJbnRQdHIKICAgICAvLyBhbmQgYSBwaW5uZWQgcmVnaXN0
ZXIgdGhlbiBjb21wdXRlcyB0aGUgYXBwcm9wcmlhdGUgSW50UHRyIGFkZHJlc3MuIEZvciB0aGUg
dXNlLWNhc2Ugb2YKQEAgLTMwMSw2ICs0MDIsMTEyIEBAIGlubGluZSBib29sIGlzRGVmaW5pdGVs
eVRlcm1pbmFsKE9wY29kZSAKICAgICB9CiB9CiAKK2lubGluZSBib29sIGlzTG9hZChPcGNvZGUg
b3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAg
Y2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBj
YXNlIExvYWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzU3RvcmUoT3Bjb2RlIG9wY29k
ZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2Ug
U3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0xv
YWRTdG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2Fz
ZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2Ug
TG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9y
ZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWlj
KE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21p
Y1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2FzZSBBdG9taWNYY2hn
QWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAg
ICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2Ug
QXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNDQVMoT3Bjb2Rl
IG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NB
UzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wg
aXNBdG9taWNYY2hnKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAg
ICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2Ug
QXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBp
c01lbW9yeUFjY2VzcyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHJldHVybiBpc0F0b21pYyhvcGNv
ZGUpIHx8IGlzTG9hZFN0b3JlKG9wY29kZSk7Cit9CisKK2lubGluZSBPcGNvZGUgc2lnbkV4dGVu
ZE9wY29kZShXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBX
aWR0aDg6CisgICAgICAgIHJldHVybiBTRXh0ODsKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgICAg
IHJldHVybiBTRXh0MTY7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIE9vcHM7CisgICAgfQorfQorCitKU19FWFBPUlRf
UFJJVkFURSBPcGNvZGUgc3RvcmVPcGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjAyLDYgKzIwMiw4IEBAIHZvaWQgUHJvY2VkdXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGMK
ICAgICAgICAgfQogICAgICAgICBkYXRhTG9nKCIgICAgIiwgZGVlcER1bXAoKnRoaXMsIHZhbHVl
KSwgIlxuIik7CiAgICAgfQorICAgIGlmIChoYXNRdWlya3MoKSkKKyAgICAgICAgb3V0LnByaW50
KCJIYXMgUXVpcmtzOiBUcnVlXG4iKTsKICAgICBpZiAodmFyaWFibGVzKCkuc2l6ZSgpKSB7CiAg
ICAgICAgIG91dC5wcmludCgiVmFyaWFibGVzOlxuIik7CiAgICAgICAgIGZvciAoVmFyaWFibGUq
IHZhcmlhYmxlIDogdmFyaWFibGVzKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmUuaAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGlj
OgogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChPcmlnaW4sIFR5cGUsIGludDY0X3QgdmFsdWUp
OwogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChWYWx1ZSosIGludDY0X3QgdmFsdWUpOwogCisg
ICAgLy8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAgICBWYWx1ZSog
YWRkQm90dG9tKE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGFkZEJvdHRvbShWYWx1ZSopOwog
CkBAIC0xOTUsNiArMTk2LDE3IEBAIHB1YmxpYzoKICAgICAvLyBhbGl2ZS4gR3JlYXQgZm9yIGNv
bXBpbGVyLWdlbmVyYXRlZCBkYXRhIHNlY3Rpb25zLCBsaWtlIHN3aXRjaCBqdW1wIHRhYmxlcyBh
bmQgY29uc3RhbnQgcG9vbHMuCiAgICAgLy8gVGhpcyByZXR1cm5zIG1lbW9yeSB0aGF0IGhhcyBi
ZWVuIHplcm8taW5pdGlhbGl6ZWQuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWRkRGF0
YVNlY3Rpb24oc2l6ZV90KTsKKyAgICAKKyAgICAvLyBTb21lIG9wZXJhdGlvbnMgYXJlIHNwZWNp
ZmllZCBpbiBCMyBJUiB0byBiZWhhdmUgb25lIHdheSBidXQgb24gdGhpcyBnaXZlbiBDUFUgdGhl
eSBiZWhhdmUgYQorICAgIC8vIGRpZmZlcmVudCB3YXkuIFdoZW4gdHJ1ZSwgdGhvc2UgQjMgSVIg
b3BzIHN3aXRjaCB0byBiZWhhdmluZyB0aGUgQ1BVIHdheSwgYW5kIHRoZSBvcHRpbWl6ZXIgbWF5
CisgICAgLy8gc3RhcnQgdGFraW5nIGFkdmFudGFnZSBvZiBpdC4KKyAgICAvLworICAgIC8vIE9u
ZSB3YXkgdG8gdGhpbmsgb2YgaXQgaXMgbGlrZSB0aGlzLiBJbWFnaW5lIHRoYXQgeW91IGZpbmQg
dGhhdCB0aGUgY2xlYW5lc3Qgd2F5IG9mIGxvd2VyaW5nCisgICAgLy8gc29tZXRoaW5nIGluIGxv
d2VyTWFjcm9zIGlzIHRvIHVuY29uZGl0aW9uYWxseSByZXBsYWNlIG9uZSBvcGNvZGUgd2l0aCBh
bm90aGVyLiBUaGlzIGlzIGEgc2hvcnRjdXQKKyAgICAvLyB3aGVyZSB5b3UgaW5zdGVhZCBrZWVw
IHRoZSBzYW1lIG9wY29kZSwgYnV0IHJlbHkgb24gdGhlIG9wY29kZSdzIG1lYW5pbmcgY2hhbmdl
cyBvbmNlIGxvd2VyTWFjcm9zCisgICAgLy8gc2V0cyBoYXNRdWlya3MuCisgICAgYm9vbCBoYXNR
dWlya3MoKSBjb25zdCB7IHJldHVybiBtX2hhc1F1aXJrczsgfQorICAgIHZvaWQgc2V0SGFzUXVp
cmtzKGJvb2wgdmFsdWUpIHsgbV9oYXNRdWlya3MgPSB2YWx1ZTsgfQogCiAgICAgT3BhcXVlQnlw
cm9kdWN0cyYgYnlwcm9kdWN0cygpIHsgcmV0dXJuICptX2J5cHJvZHVjdHM7IH0KIApAQCAtMjUy
LDYgKzI2NCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChQcmludFN0
cmVhbSYsIE9yaWdpbik+PiBtX29yaWdpblByaW50ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9mcm9u
dGVuZERhdGE7CiAgICAgUENUb09yaWdpbk1hcCBtX3BjVG9PcmlnaW5NYXA7CisgICAgYm9vbCBt
X2hhc1F1aXJrcyB7IGZhbHNlIH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJl
dmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVu
Z3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShC
M19KSVQpCiAKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Js
b2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRl
ICJCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgiCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnJlYWs7Ci0KKyAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIE5lZzoKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogTmVnKGNvbnN0YW50KQog
ICAgICAgICAgICAgLy8gSW50byB0aGlzOiAtY29uc3RhbnQKQEAgLTEyOTUsNiArMTI5NiwxNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhh
c1F1aXJrcygpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0OChBdG9taWNY
Y2hnX19fKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXworICAg
ICAgICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgp
KQorICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFs
dWU+KCktPm9wZXJhdGlvbldpZHRoKCkgPT0gV2lkdGg4KSB7CisgICAgICAgICAgICAgICAgICAg
IHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIFNFeHQxNjoKQEAgLTEzNDMsNiArMTM1NCwxNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhhc1F1aXJrcygpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0MTYoQXRvbWljWGNoZ19fXykKKyAgICAg
ICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBp
ZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5vcGVyYXRp
b25XaWR0aCgpID09IFdpZHRoMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJ
ZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgU0V4dDMyOgpAQCAtMjEwMSwyMiArMjEyMiwyNSBAQCBwcml2YXRlOgogICAg
ICAgICBBU1NFUlQobV92YWx1ZS0+bnVtQ2hpbGRyZW4oKSA+PSAyKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIExlYXZlIGl0IGFsb25lIGlmIHRoZSByaWdodCBjaGlsZCBpcyBhIGNvbnN0YW50Lgot
ICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKSkKKyAgICAgICAgaWYg
KG1fdmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkKKyAgICAgICAgICAgIHx8IG1fdmFsdWUt
PmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIAotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQo
KSkgeworICAgICAgICBhdXRvIHN3YXAgPSBbJl0gKCkgewogICAgICAgICAgICAgc3RkOjpzd2Fw
KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICAgICAg
fTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNDb25zdGFudCgp
KQorICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQorICAgICAgICAgICAg
cmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCiAgICAgICAgIC8vIFNvcnQgdGhlIG9wZXJhbmRzLiBU
aGlzIGlzIGFuIGltcG9ydGFudCBjYW5vbmljYWxpemF0aW9uLiBXZSB1c2UgdGhlIGluZGV4IGlu
c3RlYWQgb2YKICAgICAgICAgLy8gdGhlIGFkZHJlc3MgdG8gbWFrZSB0aGlzIGF0IGxlYXN0IHNs
aWdodGx5IGRldGVybWluaXN0aWMuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5k
ZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEpLT5pbmRleCgpKSB7Ci0gICAgICAgICAgICBzdGQ6OnN3
YXAobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgIG1f
Y2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4
KCkpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCByZWFsbHkgYmUgYSBmb3J3YXJkIGFuYWx5c2lzLiBJbnN0ZWFkLCB3ZSB1c2Vz
IGEgYm91bmRlZC1zZWFyY2ggYmFja3dhcmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisj
aW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMu
aCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgi
CkBAIC0zNDYsNiArMzQ3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09
IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2Uo
dmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBMb2FkOgpAQCAtMzUzLDYgKzM1
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRy
ZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAg
ICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBTdG9yZTg6CkBAIC0zNjIsNiArMzY1LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IElu
dDMyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5j
aGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAg
ICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBTdG9yZToKQEAgLTM2OSw4ICszNzMsNDkgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwg
KnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBl
KCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVT
dGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5k
KCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5udW1DaGlsZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSB2YWx1
ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9p
bnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0
b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NB
UzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxk
cmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxk
KDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
aXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoK
KyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgw
KS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlz
SW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAg
ICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
IXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5j
aGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgICAgICAg
ICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAo
IkF0ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYgKzU4MiwyMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUZlbmNl
KFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisg
ICAgICAgICAgICBWQUxJREFURShtZW1vcnktPmFjY2Vzc0JhbmsoKSA9PSBHUCwgKCJGZW5jZSBh
dCAiLCAqbWVtb3J5KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVBdG9taWMoVmFs
dWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IHZhbHVlLT5h
czxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgCisgICAgICAgIFZBTElEQVRFKGJlc3RUeXBlKEdQ
LCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpID09IGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVTdGFja0FjY2VzcyhW
YWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQp
CiAKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1Zh
bHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQm90
dG9tUHJvdmlkZXIuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTUxMCw2ICs1MTEs
NyBAQCBib29sIFZhbHVlOjpyZXR1cm5zQm9vbCgpIGNvbnN0CiAgICAgY2FzZSBBYm92ZUVxdWFs
OgogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CisgICAg
Y2FzZSBBdG9taWNXZWFrQ0FTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFBoaToK
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgc3RvcnkgaGVyZS4KQEAgLTU4OSw2
ICs1OTEsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIEJlbG93
RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgogICAgIGNhc2UgU2VsZWN0OgorICAg
IGNhc2UgRGVwZW5kOgogICAgICAgICBicmVhazsKICAgICBjYXNlIERpdjoKICAgICBjYXNlIFVE
aXY6CkBAIC02MDAsMTYgKzYwMyw0NCBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QK
ICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIExvYWQxNlo6CiAgICAgY2FzZSBMb2FkMTZTOgot
ICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmVzdWx0LnJlYWRzID0gYXM8TWVtb3J5VmFsdWU+KCkt
PnJhbmdlKCk7CisgICAgY2FzZSBMb2FkOiB7CisgICAgICAgIGNvbnN0IE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5
LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAg
ICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5mZW5jZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1
bHQuZmVuY2UgPSB0cnVlOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5k
ZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgU3RvcmU4OgogICAg
IGNhc2UgU3RvcmUxNjoKLSAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXN1bHQud3JpdGVzID0g
YXM8TWVtb3J5VmFsdWU+KCktPnJhbmdlKCk7CisgICAgY2FzZSBTdG9yZTogeworICAgICAgICBj
b25zdCBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJl
c3VsdC53cml0ZXMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0Zl
bmNlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgp
OworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2Fz
ZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21p
Y1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9y
OgorICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICBjb25zdCBBdG9taWNWYWx1ZSogYXRv
bWljID0gYXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IGF0b21pYy0+
cmFuZ2UoKSB8IGF0b21pYy0+ZmVuY2VSYW5nZSgpOworICAgICAgICByZXN1bHQud3JpdGVzID0g
YXRvbWljLT5yYW5nZSgpIHwgYXRvbWljLT5mZW5jZVJhbmdlKCk7CisgICAgICAgIGlmIChhdG9t
aWMtPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAg
ICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVl
OwogICAgICAgICBicmVhazsKQEAgLTYxNywxOCArNjQ4LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZm
ZWN0cygpIGNvbnN0CiAgICAgICAgIGNvbnN0IEZlbmNlVmFsdWUqIGZlbmNlID0gYXM8RmVuY2VW
YWx1ZT4oKTsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gZmVuY2UtPnJlYWQ7CiAgICAgICAgIHJl
c3VsdC53cml0ZXMgPSBmZW5jZS0+d3JpdGU7Ci0gICAgICAgIAotICAgICAgICAvLyBQcmV2ZW50
IGtpbGxpbmcgb2YgZmVuY2VzIHRoYXQgY2xhaW0gbm90IHRvIHdyaXRlIGFueXRoaW5nLiBJdCdz
IGEgYml0IHdlaXJkIHRoYXQgd2UgdXNlCi0gICAgICAgIC8vIGxvY2FsIHN0YXRlIGFzIHRoZSB3
YXkgdG8gZG8gdGhpcywgYnV0IGl0IGhhcHBlbnMgdG8gd29yazogd2UgbXVzdCBhc3N1bWUgdGhh
dCB3ZSBjYW5ub3QKLSAgICAgICAgLy8ga2lsbCB3cml0ZXNMb2NhbFN0YXRlIHVubGVzcyB3ZSB1
bmRlcnN0YW5kcyBleGFjdGx5IHdoYXQgdGhlIGluc3RydWN0aW9uIGlzIGRvaW5nIChsaWtlCi0g
ICAgICAgIC8vIHRoZSB3YXkgdGhhdCBmaXhTU0EgdW5kZXJzdGFuZHMgU2V0L0dldCBhbmQgdGhl
IHdheSB0aGF0IHJlZHVjZVN0cmVuZ3RoIGFuZCBvdGhlcnMKLSAgICAgICAgLy8gdW5kZXJzdGFu
ZCBVcHNpbG9uKS4gVGhpcyB3b3VsZCBvbmx5IGJlY29tZSBhIHByb2JsZW0gaWYgd2UgaGFkIHNv
bWUgYW5hbHlzaXMgdGhhdCB3YXMKLSAgICAgICAgLy8gbG9va2luZyB0byB1c2UgdGhlIHdyaXRl
c0xvY2FsU3RhdGUgYml0IHRvIGludmFsaWRhdGUgYSBDU0Ugb3ZlciBsb2NhbCBzdGF0ZSBvcGVy
YXRpb25zLgotICAgICAgICAvLyBUaGVuIGEgRmVuY2Ugd291bGQgbG9vayBibG9jaywgc2F5LCB0
aGUgZWxpbWluYXRpb24gb2YgYSByZWR1bmRhbnQgR2V0LiBCdXQgaXQgbGlrZQotICAgICAgICAv
LyB0aGF0J3Mgbm90IGF0IGFsbCBob3cgb3VyIG9wdGltaXphdGlvbnMgZm9yIFNldC9HZXQvVXBz
aWxvbi9QaGkgd29yayAtIHRoZXkgZ3JvayB0aGVpcgotICAgICAgICAvLyBvcGVyYXRpb25zIGRl
ZXBseSBlbm91Z2ggdGhhdCB0aGV5IGhhdmUgbm8gbmVlZCB0byBjaGVjayB0aGlzIGJpdCAtIHNv
IHRoaXMgY2hlYXQgaXMKLSAgICAgICAgLy8gZmluZS4KLSAgICAgICAgcmVzdWx0LndyaXRlc0xv
Y2FsU3RhdGUgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBDQ2FsbDoKQEAgLTY5NCw2ICs3MTQsNyBAQCBWYWx1ZUtl
eSBWYWx1ZTo6a2V5KCkgY29uc3QKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQml0d2lzZUNh
c3Q6CiAgICAgY2FzZSBOZWc6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIHJldHVybiBWYWx1
ZUtleShraW5kKCksIHR5cGUoKSwgY2hpbGQoMCkpOwogICAgIGNhc2UgQWRkOgogICAgIGNhc2Ug
U3ViOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw2ICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKS5vcGNvZGUoKTsgfQogICAgIAorICAgIC8vIE5vdGUgdGhhdCB0aGUg
a2luZCBpcyBtZWFudCB0byBiZSBpbW11dGFibGUuIERvIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0
IHRoaXMgaXMgc2FmZS4gSXQncyBub3QKKyAgICAvLyB1c3VhbGx5IHNhZmUuCisgICAgdm9pZCBz
ZXRLaW5kVW5zYWZlbHkoS2luZCBraW5kKSB7IG1fa2luZCA9IGtpbmQ7IH0KKyAgICB2b2lkIHNl
dE9wY29kZVVuc2FmZWx5KE9wY29kZSBvcGNvZGUpIHsgbV9raW5kLnNldE9wY29kZShvcGNvZGUp
OyB9CisgICAgCiAgICAgLy8gSXQncyBnb29kIHByYWN0aWNlIHRvIG1pcnJvciBLaW5kIG1ldGhv
ZHMgaGVyZSwgc28geW91IGNhbiBzYXkgdmFsdWUtPmlzQmxhaCgpCiAgICAgLy8gaW5zdGVhZCBv
ZiB2YWx1ZS0+a2luZCgpLmlzQmxhaCgpLgogICAgIGJvb2wgaXNDaGlsbCgpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKS5pc0NoaWxsKCk7IH0KQEAgLTEwNyw2ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gdmFsdWVzIHdpdGggSWRlbnRpdGllcyBvbiBib3R0b20gY29uc3RhbnRzLiBGb3IgdGhpcyBy
ZWFzb24sIHRoaXMgdGFrZXMgYSBjYWxsYmFjayB0aGF0IGlzCiAgICAgLy8gcmVzcG9uc2libGUg
Zm9yIGNyZWF0aW5nIGJvdHRvbXMuIFRoZXJlJ3MgYSB1dGlsaXR5IGZvciB0aGlzLCBzZWUgQjNC
b3R0b21Qcm92aWRlci5oLiBZb3UKICAgICAvLyBjYW4gYWxzbyBhY2Nlc3MgdGhhdCB1dGlsaXR5
IHVzaW5nIHJlcGxhY2VXaXRoQm90dG9tKEluc2VydGlvblNldCYsIHNpemVfdCkuCisgICAgLy8K
KyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEJvdHRvbVByb3ZpZGVyPgogICAgIHZvaWQgcmVwbGFjZVdpdGhCb3R0b20o
Y29uc3QgQm90dG9tUHJvdmlkZXImKTsKICAgICAKQEAgLTMyMSw2ICszMjgsNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIElUb0Y6CiAgICAgICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAg
IGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIERlcGVuZDoKICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShudW1BcmdzICE9IDEpKQogICAgICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJn
cyk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1dpZHRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0
aC5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dp
ZHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMzggQEAKIAogI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworVHlw
ZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgp
IHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgY2FzZSBXaWR0aDMy
OgorICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAg
IHJldHVybiBJbnQzMjsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBGbG9h
dDsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gVm9pZDsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHN3aXRjaCAoYmFu
aykgeworICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDY0OworICAgICAg
ICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIERvdWJsZTsKKyAgICAgICAgfQorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAg
ICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVm9pZDsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKIG5hbWVzcGFjZSBXVEYgewogCiB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6V2lkdGggd2lkdGgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYg
KzYyLDE4IEBAIGlubGluZSBXaWR0aCB3aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCitpbmxpbmUgV2lkdGggY2Fub25pY2FsV2lkdGgoV2lkdGgg
d2lkdGgpCit7CisgICAgcmV0dXJuIHN0ZDo6bWF4KFdpZHRoMzIsIHdpZHRoKTsKK30KKworaW5s
aW5lIGJvb2wgaXNDYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gd2lk
dGggPj0gV2lkdGgzMjsKK30KKworVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRo
KTsKKwogaW5saW5lIFdpZHRoIGNvbnNlcnZhdGl2ZVdpZHRoKEJhbmsgYmFuaykKIHsKICAgICBy
ZXR1cm4gYmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2NDsKQEAgLTkzLDYgKzEw
NSwyMCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JCeXRlcyh1bnNpZ25lZCBieXRlCiAgICAgfQog
fQogCitpbmxpbmUgdWludDY0X3QgbWFzayhXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdp
ZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMDAw
ZmZsbHU7CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDBm
ZmZmbGx1OworICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDBmZmZm
ZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHJldHVybiAweGZmZmZmZmZmZmZm
ZmZmZmZsbHU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNw
YWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24g
MjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBaXJWYWxpZGF0ZS5oIgogI2luY2x1
ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkIzQXJndW1l
bnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jh
c2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAi
QjNDb21waWxhdGlvbi5oIgpAQCAtNDQsNiArNDUsNyBAQAogI2luY2x1ZGUgIkIzTWF0aEV4dHJh
cy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKICNpbmNsdWRlICJCM01vdmVDb25zdGFu
dHMuaCIKKyNpbmNsdWRlICJCM05hdGl2ZVRyYWl0cy5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJl
LmgiCiAjaW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgogI2luY2x1ZGUgIkIzU2xvdEJhc2VW
YWx1ZS5oIgpAQCAtMjk3LDYgKzI5OSwyNCBAQCB2b2lkIHRlc3RMb2FkNDIoKQogICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSA0Mik7CiB9CiAKK3ZvaWQgdGVzdExvYWRBY3E0
MigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBpbnQgeCA9IDQyOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJngpLAorICAgICAgICAgICAgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQy
KSkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgp
KQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgIENIRUNL
KGludm9rZTxpbnQ+KCpjb2RlKSA9PSA0Mik7Cit9CisKIHZvaWQgdGVzdExvYWRXaXRoT2Zmc2V0
SW1wbChpbnQzMl90IG9mZnNldDY0LCBpbnQzMl90IG9mZnNldDMyKQogewogICAgIHsKQEAgLTU3
NDgsNiArNTc2OCwzNSBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQzMihpbnQgYW1vdW50KQogICAg
IENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExv
YWRBY3EzMihpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAgICBDb25z
dFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAg
ICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50
MzIsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAor
ICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0
KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0so
IWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1v
dW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tMzIoaW50IGFtb3VudCkKIHsKICAg
ICBQcm9jZWR1cmUgcHJvYzsKQEAgLTU3OTIsNiArNTg0MSw3NCBAQCB2b2lkIHRlc3RTdG9yZUFk
ZExvYWQ4KGludCBhbW91bnQsIEIzOjpPCiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7
CiB9CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9wY29k
ZSBsb2FkT3Bjb2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50OF90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0
clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgcHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUs
IE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAg
ICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkp
IHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWlu
dm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50
KTsKK30KKwordm9pZCB0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4KGludCBhbW91bnQsIEIz
OjpPcGNvZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDhfdCBzbG90ID0gMzc7CisgICAg
Q29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIFZhbHVlKiBsb2FkZWRWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigp
LCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICBQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigweGJlZWYpLCAmc2xvdCk7CisgICAgICAgIH0pOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5m
ZW5jZSA9IHRydWU7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAg
cHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICBsb2FkZWRWYWx1
ZSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkp
LAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FS
TTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hF
Q0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsg
YW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tOChpbnQgYW1vdW50LCBCMzo6
T3Bjb2RlIGxvYWRPcGNvZGUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01ODM2LDYgKzU5
NTMsMzUgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkMTYoaW50IGFtb3VudCwgQjM6OgogICAgIENI
RUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRB
Y3ExNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQx
Nl90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUxNiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJh
bmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQy
KSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGls
ZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAi
c3RsIik7CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7Cisg
ICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9h
ZEltbTE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKIHsKICAgICBQcm9jZWR1
cmUgcHJvYzsKQEAgLTU4NzgsNiArNjAyNCwzMyBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQ2NChp
bnQgYW1vdW50KQogICAgIENIRUNLKHNsb3QgPT0gMzcwMDAwMDAwMDBsbCArIGFtb3VudCk7CiB9
CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KGludCBhbW91bnQpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBpbnQ2NF90IHNsb3QgPSAzNzAwMDAwMDAwMGxsOworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQ
dHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90
KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9y
ZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNs
b3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJh
bmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsK
KyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2Rl
LCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7Cisg
ICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0so
c2xvdCA9PSAzNzAwMDAwMDAwMGxsICsgYW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRM
b2FkSW1tNjQoaW50NjRfdCBhbW91bnQpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzc5
MSw3ICsxMzk2NCw3IEBAIHZvaWQgdGVzdFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCiAgICAg
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpOwogICAgIHVuc2lnbmVkIHN0b3JlQ291bnQgPSAwOwog
ICAgIGZvciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoTWVt
b3J5VmFsdWU6OmlzU3RvcmUodmFsdWUtPm9wY29kZSgpKSkKKyAgICAgICAgaWYgKGlzU3RvcmUo
dmFsdWUtPm9wY29kZSgpKSkKICAgICAgICAgICAgIHN0b3JlQ291bnQrKzsKICAgICB9CiAgICAg
Q0hFQ0tfRVEoc3RvcmVDb3VudCwgMnUpOwpAQCAtMTQyNzcsNiArMTQ0NTAsNDgxIEBAIHZvaWQg
dGVzdE9wdGltaXplTWF0ZXJpYWxpemF0aW9uKCkKICAgICBDSEVDSyhmb3VuZCk7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RBdG9taWNXZWFrQ0FTKCkKK3sKKyAgICBUeXBl
IHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVU
cmFpdHM8VD46OndpZHRoOworICAgIAorICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZd
IChDb21waWxhdGlvbiYgY29tcGlsYXRpb24pIHsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAg
ICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibG9jayIpOworICAg
ICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJjbXB4Y2hnIik7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KAorICAgICAgICAg
ICAgICAgIGNvbXBpbGF0aW9uLAorICAgICAgICAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlz
YXNzZW1ibHkpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnN0cihk
aXNhc3NlbWJseSwgImxkeCIpIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgImxkYXgiKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICYmIChzdHJzdHIoZGlzYXNzZW1ibHksICJzdHgiKSB8fCBzdHJz
dHIoZGlzYXNzZW1ibHksICJzdGx4IikpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgIkV4cGVjdGVkIHRvIGZpbmQgbGR4L2xkYXggYW5kIHN0eC9zdGx4IGJ1dCBkaWRuJ3Qh
Iik7CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJlbG9vcCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9j
ayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
SnVtcCwgT3JpZ2luKCkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHJlbG9vcCk7Cisg
ICAgICAgIAorICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8QXRv
bWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigp
LCB3aWR0aCwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRD
b25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBw
dHIpKTsKKyAgICAgICAgcmVsb29wLT5zZXRTdWNjZXNzb3JzKGRvbmUsIHJlbG9vcCk7CisgICAg
ICAgIAorICAgICAgICBkb25lLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAg
ICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAg
ICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tl
PHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNf
Y2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICB9
CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogcmVsb29wID0g
cHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBkb25lID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7CisgICAg
ICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMocmVsb29wKTsKKyAgICAgICAgCisgICAgICAgIHJlbG9v
cC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCks
CisgICAgICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAg
ICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwK
KyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0ciwgMCwgSGVhcFJhbmdlKDQyKSwg
SGVhcFJhbmdlKCkpKTsKKyAgICAgICAgcmVsb29wLT5zZXRTdWNjZXNzb3JzKGRvbmUsIHJlbG9v
cCk7CisgICAgICAgIAorICAgICAgICBkb25lLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9j
KTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsy
XTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAg
ICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEz
KTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayog
c3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBC
cmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgs
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBwdHIpKTsKKyAgICAg
ICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhzdWNjLCBmYWlsKTsKKyAgICAgICAgCisgICAgICAgIHN1
Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29k
ZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAg
ICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAg
ICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAg
ICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAg
ICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAo
dmFsdWVbMF0gPT0gNDIpCisgICAgICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0
PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzFdLCAxMyk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sq
IGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAg
ICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwK
KyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIEludDMyLCAwKSkp
OworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgICAgICAKKyAg
ICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0
b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIp
OworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkp
OworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7
CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07
CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAg
IHdoaWxlICh2YWx1ZVswXSA9PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwg
dmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7
CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3Rh
dGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAor
ICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkp
OworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAg
Y2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAg
dmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hpbGUgKCFp
bnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEz
KTsKKyAgICAgICAgCisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAg
ICAgICAgQ0hFQ0soIWludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVsxXSwgMTMpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0
b21pY1N0cm9uZ0NBUygpCit7CisgICAgVHlwZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBl
OworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBh
dXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRpb24mIGNvbXBpbGF0aW9uKSB7
CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bihjb21waWxhdGlvbiwgImxvY2siKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9u
KGNvbXBpbGF0aW9uLCAiY21weGNoZyIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Y2hlY2tEaXNhc3NlbWJseSgKKyAgICAgICAgICAgICAgICBjb21waWxhdGlvbiwKKyAgICAgICAg
ICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5KSAtPiBib29sIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIChzdHJzdHIoZGlzYXNzZW1ibHksICJsZHgiKSB8fCBzdHJzdHIo
ZGlzYXNzZW1ibHksICJsZGF4IikpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3Ryc3Ry
KGRpc2Fzc2VtYmx5LCAic3R4IikgfHwgc3Ryc3RyKGRpc2Fzc2VtYmx5LCAic3RseCIpKTsKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJFeHBlY3RlZCB0byBmaW5kIGxkeC9s
ZGF4IGFuZCBzdHgvc3RseCBidXQgZGlkbid0ISIpOworICAgICAgICB9CisgICAgfTsKKyAgICAK
KyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRC
bG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRv
bWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9y
aWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3Rh
bnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAg
ICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3Rh
bnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICByb290LT5zZXRTdWNjZXNz
b3JzKHN1Y2MsIGZhaWwpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdp
bigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJs
eSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7Cisg
ICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nh
c3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMV0sIDEzKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAg
ICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9j
ayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAg
ICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICBwdHIpLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCA0MikpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhmYWlsLCBzdWNjKTsKKyAgICAg
ICAgCisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2Mt
PmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAg
ICAgcHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxl
KHByb2MpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZh
bHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOwor
ICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwg
MTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGlu
dm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
fQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNT
dHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJ
bnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgICAgICAKKyAgICAgICAgYXV0byBj
b2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsK
KyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFs
dWVbMV0gPSAxMzsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIDQy
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRp
Y19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFsdWUp
LCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRp
Y19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgIH0K
KyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwg
dHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlKHByb2MpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAg
ICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9
IDEzOworICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigz
MDApOworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzFdLCAxMyk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkp
KTsKKyAgICAgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAg
ICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlWzJdOworICAg
ICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBDSEVD
SyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEz
KTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBDSEVD
SyghaW52b2tlPGJvb2w+KCpjb2RlLCAmdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1hjaGco
QjM6Ok9wY29kZSBvcGNvZGUpCit7CisgICAgVHlwZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0
eXBlOworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAg
ICBhdXRvIGRvVGhlTWF0aCA9IFsmXSAoVCYgbWVtb3J5LCBUIG9wZXJhbmQpIC0+IFQgeworICAg
ICAgICBUIG9sZFZhbHVlID0gbWVtb3J5OworICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAg
ICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBtZW1vcnkgKz0gb3BlcmFuZDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAg
ICAgICBtZW1vcnkgJj0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIG1lbW9yeSB8PSBvcGVyYW5kOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIG1lbW9y
eSAtPSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNo
Z1hvcjoKKyAgICAgICAgICAgIG1lbW9yeSBePSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgIG1lbW9yeSA9IG9wZXJhbmQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9sZFZh
bHVlOworICAgIH07CisgICAgCisgICAgYXV0byBvbGRWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQg
b3BlcmFuZCkgLT4gVCB7CisgICAgICAgIHJldHVybiBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5k
KTsKKyAgICB9OworICAgIAorICAgIGF1dG8gbmV3VmFsdWUgPSBbJl0gKFQgbWVtb3J5LCBUIG9w
ZXJhbmQpIC0+IFQgeworICAgICAgICBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5kKTsKKyAgICAg
ICAgcmV0dXJuIG1lbW9yeTsKKyAgICB9OworICAgIAorICAgIGF1dG8gY2hlY2tNeURpc2Fzc2Vt
Ymx5ID0gWyZdIChDb21waWxhdGlvbiYgY29tcGlsYXRpb24pIHsKKyAgICAgICAgaWYgKGlzWDg2
KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2si
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KAorICAgICAg
ICAgICAgICAgIGNvbXBpbGF0aW9uLAorICAgICAgICAgICAgICAgIFsmXSAoY29uc3QgY2hhciog
ZGlzYXNzZW1ibHkpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnN0
cihkaXNhc3NlbWJseSwgImxkeCIpIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgImxkYXgiKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICYmIChzdHJzdHIoZGlzYXNzZW1ibHksICJzdHgiKSB8fCBz
dHJzdHIoZGlzYXNzZW1ibHksICJzdGx4IikpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgIkV4cGVjdGVkIHRvIGZpbmQgbGR4L2xkYXggYW5kIHN0eC9zdGx4IGJ1dCBkaWRu
J3QhIik7IAorICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAg
ICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsx
XSA9IDEwMDsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIG9sZFZh
bHVlKDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0Mikp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTAwKTsKKyAgICB9CisgICAgCisgICAgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJv
Yyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVb
Ml07CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAgICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAg
ICAgIGludm9rZTxUPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwg
bmV3VmFsdWUoNSwgNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAg
fQorfQorCiB2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQogewogICAg
IFByb2NlZHVyZSBwcm9jOwpAQCAtMTQzNzAsNiArMTUwMTgsMTMgQEAgZG91YmxlIG5lZ2F0aXZl
WmVybygpCiAgICAgcmV0dXJuIC16ZXJvKCk7CiB9CiAKKyNkZWZpbmUgUlVOX05PVyh0ZXN0KSBk
byB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3Qp
KSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiLi4uXG4iKTsgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgdGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiOiBPSyFcbiIpOyAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKICNkZWZpbmUgUlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTE0NDIxLDEyICsxNTA3NiwxMSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAg
ICAgICAgIHJldHVybiAhZmlsdGVyIHx8ICEhc3RyY2FzZXN0cih0ZXN0TmFtZSwgZmlsdGVyKTsK
ICAgICB9OwogCi0gICAgLy8gV2UgcnVuIHRoaXMgdGVzdCBmaXJzdCBiZWNhdXNlIGl0IGZpZGRs
ZXMgd2l0aCBzb21lCi0gICAgLy8gSlNDIG9wdGlvbnMuCi0gICAgdGVzdFRlcm1pbmFsUGF0Y2hw
b2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpOworICAgIFJVTl9OT1codGVzdFRlcm1pbmFsUGF0
Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpKTsKIAogICAgIFJVTih0ZXN0NDIoKSk7CiAg
ICAgUlVOKHRlc3RMb2FkNDIoKSk7CisgICAgUlVOKHRlc3RMb2FkQWNxNDIoKSk7CiAgICAgUlVO
KHRlc3RMb2FkT2Zmc2V0SW1tOU1heCgpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4
UGx1c09uZSgpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3bygpKTsKQEAg
LTE1MDk5LDE2ICsxNTc1MywyMyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAg
UlVOKHRlc3ROZWczMig1MikpOwogICAgIFJVTih0ZXN0TmVnUHRyKDUzKSk7CiAgICAgUlVOKHRl
c3RTdG9yZUFkZExvYWQzMig0NikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIo
NDYpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTMyKDQ2KSk7CiAgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWQ2NCg0NjAwKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E2NCg0
NjAwKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW02NCg0NjAwKSk7CiAgICAgUlVOKHRl
c3RTdG9yZUFkZExvYWQ4KDQsIExvYWQ4WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2Fk
QWNxOCg0LCBMb2FkOFopKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkRmVuY2VMb2FkQWNxOCg0
LCBMb2FkOFopKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgoNCwgTG9hZDhaKSk7CiAg
ICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4KDQsIExvYWQ4UykpOworICAgIFJVTih0ZXN0U3RvcmVS
ZWxBZGRMb2FkQWNxOCg0LCBMb2FkOFMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgo
NCwgTG9hZDhTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQxNig2LCBMb2FkMTZaKSk7Cisg
ICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRl
c3RTdG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExv
YWQxNig2LCBMb2FkMTZTKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBM
b2FkMTZTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZTKSk7CiAg
ICAgUlVOKHRlc3RTdG9yZUFkZExvYWQzMkluZGV4KDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFk
ZExvYWRJbW0zMkluZGV4KDQ2KSk7CkBAIC0xNTgzMSw2ICsxNjQ5MiwzOSBAQCB2b2lkIHJ1bihj
b25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQyKCkpOwog
ICAgIFJVTih0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RPcHRpbWl6
ZU1hdGVyaWFsaXphdGlvbigpKTsKKyAgICAKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50
OF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50MTZfdD4oKSk7CisgICAgUlVO
KHRlc3RBdG9taWNXZWFrQ0FTPGludDMyX3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NB
UzxpbnQ2NF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ4X3Q+KCkpOwor
ICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDE2X3Q+KCkpOworICAgIFJVTih0ZXN0QXRv
bWljU3Ryb25nQ0FTPGludDMyX3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGlu
dDY0X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdBZGQp
KTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ0FkZCkpOworICAg
IFJVTih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRl
c3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50OF90PihBdG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGlu
dDE2X3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4o
QXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNY
Y2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ09yKSk7
CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0
b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hn
PGludDhfdD4oQXRvbWljWGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90
PihBdG9taWNYY2hnU3ViKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21p
Y1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ1N1
YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAg
ICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0
ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9t
aWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8
aW50OF90PihBdG9taWNYY2hnKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0
b21pY1hjaGcpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZykp
OworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnKSk7CiAKICAgICBS
VU4odGVzdFdhc21Cb3VuZHNDaGVjaygwKSk7CiAgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2so
MTAwKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCShyZXZp
c2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCB1bnNpZ25lZCBBcmc6OmpzSGFzaCgp
IGNvbnN0CiAgICAgY2FzZSBSZWxDb25kOgogICAgIGNhc2UgUmVzQ29uZDoKICAgICBjYXNlIERv
dWJsZUNvbmQ6CisgICAgY2FzZSBTdGF0dXNDb25kOgogICAgIGNhc2UgV2lkdGhBcmc6CiAgICAg
ICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpOwogICAgICAgICBi
cmVhazsKQEAgLTE4Miw2ICsxODMsOSBAQCB2b2lkIEFyZzo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgb3V0LnByaW50KGFzRG91Ymxl
Q29uZGl0aW9uKCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0dXNDb25kOgorICAg
ICAgICBvdXQucHJpbnQoYXNTdGF0dXNDb25kaXRpb24oKSk7CisgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIG91dC5wcmludChwb2ludGVyRHVtcChzcGVjaWFsKCkp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQxLDYgKzI0NSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6RG91YmxlQ29uZDoKICAgICAg
ICAgb3V0LnByaW50KCJEb3VibGVDb25kIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFy
Zzo6U3RhdHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KCJTdGF0dXNDb25kIik7CisgICAgICAg
IHJldHVybjsKICAgICBjYXNlIEFyZzo6U3BlY2lhbDoKICAgICAgICAgb3V0LnByaW50KCJTcGVj
aWFsIik7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NSw2ICsyOTIsOSBAQCB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgogICAg
ICAgICBvdXQucHJpbnQoIkVhcmx5RGVmIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFy
Zzo6RWFybHlaRGVmOgorICAgICAgICBvdXQucHJpbnQoIkVhcmx5WkRlZiIpOworICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgIG91dC5wcmludCgiU2NyYXRj
aCIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QXJnLmgJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQXJnLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgICAg
ICBSZWxDb25kLAogICAgICAgICBSZXNDb25kLAogICAgICAgICBEb3VibGVDb25kLAorICAgICAg
ICBTdGF0dXNDb25kLAogICAgICAgICBTcGVjaWFsLAogICAgICAgICBXaWR0aEFyZwogICAgIH07
CkBAIC0xNTEsNiArMTUyLDggQEAgcHVibGljOgogICAgICAgICAvLyBhcyBVc2UgaGFzIHVuZGVm
aW5lZCBiZWhhdmlvcjogdGhlIHVzZSBtYXkgaGFwcGVuIGJlZm9yZSB0aGUgZGVmLCBvciBpdCBt
YXkgaGFwcGVuIGFmdGVyCiAgICAgICAgIC8vIGl0LgogICAgICAgICBFYXJseURlZiwKKyAgICAg
ICAgICAgIAorICAgICAgICBFYXJseVpEZWYsCiAKICAgICAgICAgLy8gU29tZSBpbnN0cnVjdGlv
bnMgbmVlZCBhIHNjcmF0Y2ggcmVnaXN0ZXIuIFdlIG1vZGVsIHRoaXMgYnkgc2F5aW5nIHRoYXQg
dGhlIHRlbXBvcmFyeSBpcwogICAgICAgICAvLyBkZWZpbmVkIGVhcmx5IGFuZCB1c2VkIGxhdGUu
IFRoaXMgcm9sZSBpbXBsaWVzIHRoYXQuCkBAIC0xODYsNiArMTg5LDcgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBFYXJs
eURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMDYsNiArMjEw
LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgU2NyYXRj
aDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0yMjgsNiArMjMzLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6
CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAg
Y2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gcm9sZTsKICAgICAgICAgY2FzZSBV
c2U6CiAgICAgICAgICAgICByZXR1cm4gQ29sZFVzZTsKQEAgLTI1Myw2ICsyNTksNyBAQCBwdWJs
aWM6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAg
ICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0yNzQsNiArMjgxLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAg
IGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJs
eVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTQsNiArMzAyLDcgQEAgcHVibGljOgogICAgICAgICBj
YXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlWkRlZjoKICAgICAgICAgY2FzZSBFYXJseURlZjoK
KyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMTUsNiArMzI0LDcgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgY2Fz
ZSBTY3JhdGNoOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMzMCw2
ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBM
YXRlVXNlOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoK
ICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU4LDYgKzM2OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZVpE
ZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MzMsNiArNTQ1LDE0
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMg
QXJnIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24p
CisgICAgeworICAgICAgICBBcmcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gU3Rh
dHVzQ29uZDsKKyAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY29uZGl0aW9uOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHN0YXRpYyBBcmcgc3BlY2lhbChBaXI6OlNwZWNp
YWwqIHNwZWNpYWwpCiAgICAgewogICAgICAgICBBcmcgcmVzdWx0OwpAQCAtNjU4LDEyICs2Nzgs
MTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4ga2luZCgpID09IERvdWJsZUNvbmQ7CiAgICAg
fQogCisgICAgYm9vbCBpc1N0YXR1c0NvbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGtpbmQoKSA9PSBTdGF0dXNDb25kOworICAgIH0KKwogICAgIGJvb2wgaXNDb25kaXRpb24oKSBj
b25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxD
b25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAg
ICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NTEsNiArODc3LDcgQEAg
cHVibGljOgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAg
ICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAg
IGNhc2UgU3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtODcyLDYgKzg5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25k
OgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAg
ICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2Ug
V2lkdGhBcmc6CiAgICAgICAgIGNhc2UgSW52YWxpZDoKQEAgLTEwNTgsNiArMTA4Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAg
ICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBj
YXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTExNzcsNiArMTIwNiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uPihtX29mZnNldCk7CiAgICAg
fQogICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gYXNTdGF0dXNDb25k
aXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU3RhdHVzQ29uZCgpKTsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24+
KG1fb2Zmc2V0KTsKKyAgICB9CisgICAgCiAgICAgLy8gVGVsbHMgeW91IGlmIHRoZSBBcmcgaXMg
aW52ZXJ0aWJsZS4gT25seSBjb25kaXRpb24gYXJndW1lbnRzIGFyZSBpbnZlcnRpYmxlLCBhbmQg
ZXZlbiBmb3IgdGhvc2UsIHRoZXJlCiAgICAgLy8gYXJlIGEgZmV3IGV4Y2VwdGlvbnMgLSBub3Rh
Ymx5IE92ZXJmbG93IGFuZCBTaWduZWQuCiAgICAgYm9vbCBpc0ludmVydGlibGUoKSBjb25zdApA
QCAtMTE4NCw2ICsxMjE5LDcgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgewog
ICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAg
Y2FzZSBTdGF0dXNDb25kOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2Ug
UmVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6aXNJbnZlcnRpYmxl
KGFzUmVzdWx0Q29uZGl0aW9uKCkpOwpAQCAtMTIwNCw2ICsxMjQwLDggQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuIHJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1Jlc3VsdENv
bmRpdGlvbigpKSk7CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgICAgIHJldHVy
biBkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNEb3VibGVDb25kaXRpb24oKSkp
OworICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CisgICAgICAgICAgICByZXR1cm4gc3RhdHVzQ29u
ZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzU3RhdHVzQ29uZGl0aW9uKCkpKTsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICByZXR1cm4gQXJnKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckJhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNiAr
MzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogCiBjb25z
dCBjaGFyKiBjb25zdCBCYXNpY0Jsb2NrOjpkdW1wUHJlZml4ID0gIiMiOwogCit2b2lkIEJhc2lj
QmxvY2s6OnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrIHRhcmdldCkKK3sKKyAgICBtX3N1
Y2Nlc3NvcnMucmVzaXplKDEpOworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRhcmdldDsKK30KKwor
dm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YWtlbiwgRnJl
cXVlbnRlZEJsb2NrIG5vdFRha2VuKQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMik7Cisg
ICAgbV9zdWNjZXNzb3JzWzBdID0gdGFrZW47CisgICAgbV9zdWNjZXNzb3JzWzFdID0gbm90VGFr
ZW47Cit9CisKIGJvb2wgQmFzaWNCbG9jazo6YWRkUHJlZGVjZXNzb3IoQmFzaWNCbG9jayogYmxv
Y2spCiB7CiAgICAgcmV0dXJuIEIzOjphZGRQcmVkZWNlc3Nvcih0aGlzLCBibG9jayk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkocmV2aXNp
b24gMjEyOTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMywxMSBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9u
U2V0OworCituYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiBjbGFz
cyBDb2RlOwpAQCAtOTksNiArMTAzLDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN1Y2Nlc3Nvckxp
c3QmIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KICAgICBTdWNj
ZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAKKyAgICB2
b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKTsKKyAgICB2b2lkIHNldFN1Y2Nlc3Nv
cnMoRnJlcXVlbnRlZEJsb2NrLCBGcmVxdWVudGVkQmxvY2spOworCiAgICAgQmFzaWNCbG9jayog
c3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3Nvcihp
bmRleCkuYmxvY2soKTsgfQogICAgIEJhc2ljQmxvY2sqJiBzdWNjZXNzb3JCbG9jayh1bnNpZ25l
ZCBpbmRleCkgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAgU3VjY2Vz
c29yQ29sbGVjdGlvbjxCYXNpY0Jsb2NrLCBTdWNjZXNzb3JMaXN0PiBzdWNjZXNzb3JCbG9ja3Mo
KQpAQCAtMTMzLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrSW5z
ZXJ0aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBDb2RlOwogICAgIGZyaWVuZCBjbGFzcyBJbnNl
cnRpb25TZXQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBCMzo6R2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIAogICAgIEJhc2ljQmxvY2sodW5zaWduZWQgaW5kZXgs
IGRvdWJsZSBmcmVxdWVuY3kpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBaXJCbG9j
a0luc2VydGlvblNldC5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckJh
c2ljQmxvY2suaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNv
cnQuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewor
CitCbG9ja0luc2VydGlvblNldDo6QmxvY2tJbnNlcnRpb25TZXQoQ29kZSAmY29kZSkKKyAgICA6
IEdlbmVyaWNCbG9ja0luc2VydGlvblNldChjb2RlLm1fYmxvY2tzKQoreworfQorCitCbG9ja0lu
c2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KCkKK3sKK30KKworfSB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2Nr
SW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5o
IgorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFt
ZXNwYWNlIEFpciB7CisKK2NsYXNzIEluc2VydGlvblNldDsKKwordHlwZWRlZiBHZW5lcmljQmxv
Y2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5zZXJ0aW9u
OworCitjbGFzcyBCbG9ja0luc2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNlcnRp
b25TZXQ8QmFzaWNCbG9jaz4geworcHVibGljOgorICAgIEJsb2NrSW5zZXJ0aW9uU2V0KENvZGUm
KTsKKyAgICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGV2ZW50dWFsbHkgaW1wbGVtZW50IEIzOjpCbG9ja0luc2VydGlvblNldCdzIHNwbGl0Rm9y
d2FyZCgpLgorfTsKKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYg
Ly8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
RHVtcEFzSlMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRHVtcEFzSlMuY3BwCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI0NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFpckR1bXBBc0pTLmgiCi0KLSNpZiBFTkFCTEUo
QjNfSklUKQotCi0jaW5jbHVkZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFpckluc3RJbmxpbmVz
LmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKLQot
bmFtZXNwYWNlIHsKLQotQ1N0cmluZyB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KHVuc2lnbmVkIGlu
ZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoImJiIiwgaW5kZXgpOwotfQotCi1DU3RyaW5n
IHZhck5hbWUoQmFzaWNCbG9jayogYmxvY2spCi17Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JCbG9j
a0F0SW5kZXgoYmxvY2stPmluZGV4KCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWVGb3JTdGFja1Ns
b3RBdEluZGV4KHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoInNsb3Qi
LCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShTdGFja1Nsb3QqIHNsb3QpCi17Ci0gICAg
cmV0dXJuIHZhck5hbWVGb3JTdGFja1Nsb3RBdEluZGV4KHNsb3QtPmluZGV4KCkpOwotfQotCi1D
U3RyaW5nIHZhck5hbWUoUmVnIHJlZykKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJSZWcuIiwg
cmVnLmRlYnVnTmFtZSgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lRm9yVG1wV2l0aEJhbmtBbmRJ
bmRleChCYW5rIGJhbmssIHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmco
YmFuayA9PSBGUCA/ICJmIiA6ICIiLCAidG1wIiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZhck5h
bWUoVG1wIHRtcCkKLXsKLSAgICBpZiAodG1wLmlzUmVnKCkpCi0gICAgICAgIHJldHVybiB2YXJO
YW1lKHRtcC5yZWcoKSk7Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZEluZGV4
KEFyZyh0bXApLmJhbmsoKSwgdG1wLnRtcEluZGV4KCkpOwotfQotCi19IC8vIGFub255bW91cyBu
YW1lc3BhY2UKLQotdm9pZCBkdW1wQXNKUyhDb2RlJiBjb2RlLCBQcmludFN0cmVhbSYgb3V0KQot
ewotICAgIG91dC5wcmludGxuKCJsZXQgY29kZSA9IG5ldyBDb2RlKCk7Iik7Ci0gICAgCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGUuc2l6ZSgpOyArK2kpCi0gICAgICAgIG91dC5w
cmludGxuKCJsZXQgIiwgdmFyTmFtZUZvckJsb2NrQXRJbmRleChpKSwgIiA9IGNvZGUuYWRkQmxv
Y2soKTsiKTsKLSAgICAKLSAgICBvdXQucHJpbnRsbigibGV0IGhhc2g7Iik7Ci0KLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZS5zdGFja1Nsb3RzKCkuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgU3RhY2tTbG90KiBzbG90ID0gY29kZS5zdGFja1Nsb3RzKClbaV07Ci0gICAgICAgIGlm
IChzbG90KSB7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZhck5hbWUoc2xvdCks
ICIgPSBjb2RlLmFkZFN0YWNrU2xvdCgiLCBzbG90LT5ieXRlU2l6ZSgpLCAiLCAiLCBzbG90LT5r
aW5kKCksICIpOyIpOwotICAgICAgICAgICAgaWYgKHNsb3QtPm9mZnNldEZyb21GUCgpKQotICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoc2xvdCksICIuc2V0T2Zmc2V0RnJvbUZQ
KCIsIHNsb3QtPm9mZnNldEZyb21GUCgpLCAiKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxu
KCJoYXNoID0gIiwgdmFyTmFtZShzbG90KSwgIi5oYXNoKCk7Iik7Ci0gICAgICAgICAgICBvdXQu
cHJpbnRsbigiaWYgKGhhc2ggIT0gIiwgc2xvdC0+anNIYXNoKCksICIpIik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRsbigiICAgIHRocm93IG5ldyBFcnJvcihcIkJhZCBoYXNoOiBcIiArIGhhc2gp
OyIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJjb2RlLmFkZFN0
YWNrU2xvdCgxLCBTcGlsbCk7Iik7Ci0gICAgfQotICAgIAotICAgIGZvckVhY2hCYW5rKAotICAg
ICAgICBbJl0gKEJhbmsgYmFuaykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29k
ZS5udW1UbXBzKGJhbmspOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0g
ICAgICAgICAgICAgICAgICAgICJsZXQgIiwgdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5kSW5kZXgo
YmFuaywgaSksICIgPSBjb2RlLm5ld1RtcCgiLCBiYW5rLCAiKTsiKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSk7Ci0gICAgCi0gICAgb3V0LnByaW50bG4oImxldCBpbnN0OyIpOwotICAgIG91
dC5wcmludGxuKCJsZXQgYXJnOyIpOwotICAgIAotICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sg
OiBjb2RlKSB7Ci0gICAgICAgIGZvciAoRnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2Nr
LT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAg
ICAgIHZhck5hbWUoYmxvY2spLCAiLnN1Y2Nlc3NvcnMucHVzaChuZXcgRnJlcXVlbnRlZEJsb2Nr
KCIsCi0gICAgICAgICAgICAgICAgdmFyTmFtZShzdWNjZXNzb3IuYmxvY2soKSksICIsICIsIHN1
Y2Nlc3Nvci5mcmVxdWVuY3koKSwgIikpOyIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycygpKQot
ICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayksICIucHJlZGVjZXNzb3JzLnB1
c2goIiwgdmFyTmFtZShwcmVkZWNlc3NvciksICIpOyIpOwotICAgICAgICAKLSAgICAgICAgZm9y
IChJbnN0JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgZG8gc29tZXRoaW5nIGZvciBmbGFncy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3NTEKLSAgICAgICAgICAgIG91dC5wcmludGxu
KCJpbnN0ID0gbmV3IEluc3QoIiwgaW5zdC5raW5kLm9wY29kZSwgIik7Iik7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAgICBbJl0gKEFy
ZyYgYXJnLCBBcmc6OlJvbGUsIEJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAoYXJnLmtpbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6SW52YWxp
ZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VG1wOgotICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVUbXAoIiwgdmFyTmFtZShhcmcudG1w
KCkpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbW06Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUltbSgiLCBhcmcu
dmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6QmlnSW1tOgot
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVCaWdJbW0oIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSksICIsICIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkgPj4g
MzIpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaXRJbW06Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUJpdEltbSgi
LCBhcmcudmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6Qml0
SW1tNjQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUJpdEltbTY0KCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkpLCAiLCAi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52
YWx1ZSgpID4+IDMyKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6QWRk
cjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlQWRkcigiLCB2YXJOYW1lKGFyZy5iYXNlKCkp
LCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OlN0YWNrOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVTdGFjaygiLCB2YXJOYW1lKGFy
Zy5zdGFja1Nsb3QoKSksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFyZzo6Q2FsbEFyZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKCJhcmcgPSBBcmcuY3JlYXRlQ2FsbEFyZygiLCBhcmcub2Zmc2V0KCksICIpOyIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkluZGV4OgotICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFy
Zy5jcmVhdGVJbmRleCgiLCB2YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhck5hbWUoYXJnLmluZGV4KCkpLCAiLCAiLCBhcmcuc2NhbGUoKSwg
IiwgIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpSZWxDb25kOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFy
Zy5jcmVhdGVSZWxDb25kKCIsIGFyZy5hc1JlbGF0aW9uYWxDb25kaXRpb24oKSwgIik7Iik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6UmVzQ29uZDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlUmVzQ29uZCgiLCBhcmcuYXNSZXN1
bHRDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RG91
YmxlQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcu
Y3JlYXRlRG91YmxlQ29uZCgiLCBhcmcuYXNEb3VibGVDb25kaXRpb24oKSwgIik7Iik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U3BlY2lhbDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlU3BlY2lhbCgpOyIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBcmc6OldpZHRoQXJnOgotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVXaWR0aEFyZygiLCBhcmcud2lkdGgoKSwgIik7
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Imluc3QuYXJncy5wdXNoKGFyZyk7Iik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGluc3QuaGFzTm9uQXJnRWZmZWN0cygpKQotICAgICAgICAgICAgICAgICAg
ICBvdXQucHJpbnRsbigiaW5zdC5wYXRjaEhhc05vbkFyZ0VmZmVjdHMgPSB0cnVlOyIpOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhRWFy
bHlDbG9iYmVyZWRSZWdzID0gbmV3IFNldCgpOyIpOwotICAgICAgICAgICAgICAgIG91dC5wcmlu
dGxuKCJpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncyA9IG5ldyBTZXQoKTsiKTsKLSAgICAgICAgICAg
ICAgICBpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkuZm9yRWFjaCgKLSAgICAgICAgICAg
ICAgICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnRsbigiaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAi
KTsiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgaW5zdC5leHRy
YUNsb2JiZXJlZFJlZ3MoKS5mb3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZyBy
ZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhQ2xv
YmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImlu
c3QucGF0Y2hBcmdEYXRhID0gW107Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoQXJn
KAotICAgICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5rIGJh
bmssIFdpZHRoIHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdC5wYXRjaEFyZ0RhdGEucHVzaCh7cm9s
ZTogQXJnLiIsIHJvbGUsICIsIHR5cGU6ICIsIGJhbmssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiwgd2lkdGg6ICIsIHdpZHRoLCAifSk7Iik7Ci0gICAgICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5zdC5raW5k
Lm9wY29kZSA9PSBDQ2FsbCB8fCBpbnN0LmtpbmQub3Bjb2RlID09IENvbGRDQ2FsbCkgewotICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsVHlwZSA9ICIsIGluc3Qub3JpZ2lu
LT50eXBlKCkpOwotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsQXJnVHlw
ZXMgPSBbXTsiKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgaW5z
dC5vcmlnaW4tPm51bUNoaWxkcmVuKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgb3V0LnBy
aW50bG4oImluc3QuY0NhbGxBcmdUeXBlcy5wdXNoKCIsIGluc3Qub3JpZ2luLT5jaGlsZChpKS0+
dHlwZSgpLCAiKTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAg
b3V0LnByaW50bG4oImhhc2ggPSBpbnN0Lmhhc2goKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmlu
dGxuKCJpZiAoaGFzaCAhPSAiLCBpbnN0LmpzSGFzaCgpLCAiKSIpOwotICAgICAgICAgICAgb3V0
LnByaW50bG4oIiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgaGFzaDogXCIgKyBoYXNoKTsiKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayksICIu
YXBwZW5kKGluc3QpOyIpOwotICAgICAgICB9Ci0gICAgfQotfQotCi19IH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMzo6QWlyCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5oCShyZXZpc2lvbiAyMTI5OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQotI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7Ci0KLWNsYXNzIENvZGU7Ci0KLS8vIFRoaXMgaXMgdXNlZCBmb3IgYmVu
Y2htYXJraW5nLiBWYXJpb3VzIG9wZXJhdGlvbnMgb24gQWlyIGFyZSBpbnRlcmVzdGluZyBmcm9t
IGEgYmVuY2htYXJraW5nCi0vLyBzdGFuZHBvaW50LiBXZSBjYW4gd3JpdGUgc29tZSBBaXIgcGhh
c2VzIGluIEpTIGFuZCB0aGVuIHVzZSB0aGF0IHRvIGJlbmNobWFyayBKUy4gVGhlIGJlbmNobWFy
awotLy8gaXMgY2FsbGVkIEpTQWlyLCBhbmQgaXQncyBpbiBQZXJmb3JtYW5jZVRlc3RzL0pTQWly
Lgotdm9pZCBkdW1wQXNKUyhDb2RlJiwgUHJpbnRTdHJlYW0mKTsKLQotfSB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTI5
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBaXJBbGxvY2F0ZVJlZ2lz
dGVyc0J5R3JhcGhDb2xvcmluZy5oIgogI2luY2x1ZGUgIkFpckFsbG9jYXRlU3RhY2suaCIKICNp
bmNsdWRlICJBaXJDb2RlLmgiCi0jaW5jbHVkZSAiQWlyRHVtcEFzSlMuaCIKICNpbmNsdWRlICJB
aXJFbGltaW5hdGVEZWFkQ29kZS5oIgogI2luY2x1ZGUgIkFpckZpeE9idmlvdXNTcGlsbHMuaCIK
ICNpbmNsdWRlICJBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKQEAgLTczLDYgKzcyLDgg
QEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgICAgICBkYXRhTG9n
KCJJbml0aWFsIGFpcjpcbiIpOwogICAgICAgICBkYXRhTG9nKGNvZGUpOwogICAgIH0KKyAgICAK
KyAgICBzaW1wbGlmeUNGRyhjb2RlKTsKIAogICAgIGxvd2VyTWFjcm9zKGNvZGUpOwogCkBAIC0x
MDcsMjMgKzEwOCwxMSBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAg
ICAgLy8gZG9lcyB0aGluZ3MgbGlrZSBpZGVudGlmeSB3aGljaCBjYWxsZWUtc2F2ZXMgd2UncmUg
dXNpbmcgYW5kIHNhdmVzIHRoZW0uCiAgICAgaGFuZGxlQ2FsbGVlU2F2ZXMoY29kZSk7CiAgICAg
Ci0gICAgaWYgKE9wdGlvbnM6OmR1bXBBaXJBc0pTQmVmb3JlQWxsb2NhdGVTdGFjaygpKSB7Ci0g
ICAgICAgIGRhdGFMb2coIkR1bXBpbmcgQWlyIGFzIEpTIGJlZm9yZSBhbGxvY2F0ZVN0YWNrOlxu
Iik7Ci0gICAgICAgIGR1bXBBc0pTKGNvZGUsIFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAgICAgIGRh
dGFMb2coIkFpciBoYXNoOiAiLCBjb2RlLmpzSGFzaCgpLCAiXG4iKTsKLSAgICB9Ci0KICAgICAv
LyBUaGlzIHR1cm5zIGFsbCBTdGFjayBhbmQgQ2FsbEFyZyBBcmdzIGludG8gQWRkciBhcmdzIHRo
YXQgdXNlIHRoZSBmcmFtZSBwb2ludGVyLiBJdCBkb2VzCiAgICAgLy8gdGhpcyBieSBmaXJzdC1m
aXQgYWxsb2NhdGluZyBzdGFjayBzbG90cy4gSXQgc2hvdWxkIGJlIHByZXR0eSBkYXJuIGNsb3Nl
IHRvIG9wdGltYWwsIHNvIHdlCiAgICAgLy8gc2hvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQg
dGhpcyB2ZXJ5IG11Y2guCiAgICAgYWxsb2NhdGVTdGFjayhjb2RlKTsKICAgICAKLSAgICBpZiAo
T3B0aW9uczo6ZHVtcEFpckFmdGVyQWxsb2NhdGVTdGFjaygpKSB7Ci0gICAgICAgIGRhdGFMb2co
IkR1bXBpbmcgQWlyIGFmdGVyIGFsbG9jYXRlU3RhY2s6XG4iKTsKLSAgICAgICAgZGF0YUxvZyhj
b2RlKTsKLSAgICAgICAgZGF0YUxvZygiQWlyIGhhc2g6ICIsIGNvZGUuanNIYXNoKCksICJcbiIp
OwotICAgIH0KLQogICAgIC8vIElmIHdlIGNvYWxlc2NlZCBtb3ZlcyB0aGVuIHdlIGNhbiB1bmJy
ZWFrIGNyaXRpY2FsIGVkZ2VzLiBUaGlzIGlzIHRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcwogICAg
IC8vIHBoYXNlLgogICAgIHNpbXBsaWZ5Q0ZHKGNvZGUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAkocmV2aXNpb24gMjEyOTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzcsNiArMjc3LDY1IEBAIGlubGluZSBib29sIGlzWDg2VURpdjY0VmFsaWQoY29u
c3QgSW5zdCYKICAgICByZXR1cm4gaXNYODZEaXZIZWxwZXJWYWxpZChpbnN0KTsKIH0KIAoraW5s
aW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVNWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworI2lm
IENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgc3dpdGNoIChpbnN0LmFyZ3Muc2l6ZSgpKSB7
CisgICAgY2FzZSAzOgorICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdID09IFRtcChYODZSZWdp
c3RlcnM6OmVheCk7CisgICAgY2FzZSA1OgorICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzFdID09
IFRtcChYODZSZWdpc3RlcnM6OmVheCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyNlbmRpZiAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorfQorCitpbmxp
bmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7
CisgICAgcmV0dXJuIGluc3QuYXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworfQor
CitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0KQor
eworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUg
Ym9vbCBpc0F0b21pY1N0cm9uZ0NBUzE2VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICBy
ZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNB
dG9taWNTdHJvbmdDQVMzMlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlz
QXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ry
b25nQ0FTNjRWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0
cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9u
Z0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21p
Y1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0
cm9uZ0NBUzE2VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNCcmFuY2hB
dG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9t
aWNTdHJvbmdDQVMzMlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJh
bmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNo
QXRvbWljU3Ryb25nQ0FTNjRWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBp
c0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCiB9IH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAy
MTI5OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVz
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTE3LDYgKzExNyw3IEBAIEFkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICB4
ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2
OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKICAgICB4ODY6IFRtcCwgSW5kZXgKIApA
QCAtMTM1LDkgKzEzNiwxMiBAQCB4ODY6IEFkZDE2IFU6RzoxNiwgVUQ6RzoxNgogNjQ6IEFkZDY0
IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4
ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2
OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKIAog
NjQ6IEFkZDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBJbW0sIFRtcCwgVG1wCkBAIC0x
NjYsOSArMTcwLDEyIEBAIHg4NjogQWRkRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiBTdWIzMiBVOkc6
MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4Njog
SW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IElu
ZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogCiBhcm02
NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIsIEQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTE3
Niw5ICsxODMsMTIgQEAgYXJtNjQ6IFN1YjMyIFU6RzozMiwgVTpHOjMyLCBEOkc6MzIKIDY0OiBT
dWI2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisg
ICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAg
IHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4
CiAKIGFybTY0OiBTdWI2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRt
cApAQCAtMjA0LDkgKzIxNCwxMiBAQCB4ODY6IFN1YkZsb2F0IFU6RjozMiwgVUQ6RjozMgogTmVn
MzIgVVpEOkc6MzIKICAgICBUbXAKICAgICB4ODY6IEFkZHIKKyAgICB4ODY6IEluZGV4CiAKIDY0
OiBOZWc2NCBVRDpHOjY0CiAgICAgVG1wCisgICAgeDg2OiBBZGRyCisgICAgeDg2OiBJbmRleAog
CiBhcm02NDogTmVnYXRlRG91YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAgLTMz
MCw4ICszNDMsMTEgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAg
eDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAg
ICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRk
cgorICAgIHg4NjogSW1tLCBJbmRleAogCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2
NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTMzOSw3ICszNTUsMTMgQEAgQW5kMzIgVTpHOjMyLCBV
WkQ6RzozMgogCiB4ODZfNjQ6IEFuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCi0g
ICAgeDg2OiBJbW0sIFRtcAorICAgIEltbSwgVG1wCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICBBZGRyLCBUbXAKKyAgICBJ
bmRleCwgVG1wCiAKIEFuZERvdWJsZSBVOkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBU
bXAsIFRtcApAQCAtNDU5LDggKzQ4MSwxMSBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBU
bXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4Njog
VG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAg
eDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IE9yNjQgVTpHOjY0LCBV
Okc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ2OSw2ICs0OTQsMTIgQEAgT3Iz
MiBVOkc6MzIsIFVaRDpHOjMyCiA2NDogT3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRt
cAogICAgIHg4NjogSW1tLCBUbXAKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJ
bmRleAorICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBB
ZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKIAogWG9yMzIgVTpHOjMyLCBVOkc6MzIsIFpE
Okc6MzIKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00ODAsOCArNTExLDExIEBAIFhvcjMyIFU6Rzoz
MiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6IFRt
cCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2
OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKIAog
NjQ6IFhvcjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00
OTAsNiArNTI0LDExIEBAIFhvcjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBYb3I2NCBVOkc6NjQs
IFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAs
IEluZGV4CisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICB4ODY6
IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBUbXAKIAogYXJt
NjQ6IE5vdDMyIFU6RzozMiwgWkQ6RzozMgpAQCAtNDk4LDEzICs1MzcsMTUgQEAgYXJtNjQ6IE5v
dDMyIFU6RzozMiwgWkQ6RzozMgogeDg2OiBOb3QzMiBVWkQ6RzozMgogICAgIFRtcAogICAgIEFk
ZHIKKyAgICBJbmRleAogCiBhcm02NDogTm90NjQgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRt
cAogCi14ODY6IE5vdDY0IFVEOkc6NjQKK3g4Nl82NDogTm90NjQgVUQ6Rzo2NAogICAgIFRtcAog
ICAgIEFkZHIKKyAgICBJbmRleAogCiBhcm02NDogQWJzRG91YmxlIFU6Rjo2NCwgRDpGOjY0CiAg
ICAgVG1wLCBUbXAKQEAgLTY2OCwyNyArNzA5LDM4MyBAQCBMb2FkOCBVOkc6OCwgWkQ6RzozMgog
ICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTggVTpHOjgsIFpEOkc6MzIK
KyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIFN0b3JlOCBVOkc6OCwgRDpHOjgKICAg
ICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgeDg2
OiBJbW0sIEFkZHIKIAorU3RvcmVSZWw4IFU6Rzo4LCBEOkc6OAorICAgIFRtcCwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorCiBM
b2FkOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJ
bmRleCwgVG1wCiAKK0xvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgorICAg
IEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogTG9hZDE2IFU6RzoxNiwgWkQ6RzozMgogICAg
IEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTE2IFU6RzoxNiwgWkQ6RzozMgor
ICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiBV
Okc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3Ex
NlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5k
ZXgsIFRtcAorCiBTdG9yZTE2IFU6RzoxNiwgRDpHOjE2CiAgICAgVG1wLCBJbmRleAogICAgIFRt
cCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisKK1N0b3Jl
UmVsMTYgVTpHOjE2LCBEOkc6MTYKKyAgICBUbXAsIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
eDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKworTG9hZEFjcTMyIFU6RzozMiwg
WkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworU3RvcmVSZWwzMiBVOkc6
MzIsIFpEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0s
IEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKworNjQ6IExvYWRBY3E2NCBVOkc6NjQsIFpEOkc6
NjQKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKKzY0OiBTdG9yZVJlbDY0IFU6Rzo2
NCwgWkQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwg
QWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorCisjIFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4K
KyMgRklYTUU6IFRoaXMgZm9ybXVsYXRpb24gbWVhbnMgdGhhdCB0aGUgYm9vbGVhbiByZXN1bHQg
Y2Fubm90IGJlIHB1dCBpbiBlYXgsIGV2ZW4gdGhvdWdoIGFsbCB1c2VycworIyBvZiB0aGlzIHdv
dWxkIGJlIE9LIHdpdGggdGhhdC4KK3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIsIFVEOkc6
OCwgVTpHOjgsIFVEOkc6OCwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRy
LCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9t
aWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiwgWkQ6Rzo4Cisg
ICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAq
LCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6
MzIsIFU6RzozMiwgVUQ6RzozMiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBB
ZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2XzY0
OiBBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCwgWkQ6
Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVM4IFVEOkc6OCwg
VTpHOjgsIFVEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgK
KworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYKKyAgICBU
bXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3Ryb25n
Q0FTMzIgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAg
VG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1N0cm9uZ0NBUzY0IFVEOkc6NjQsIFU6
Rzo2NCwgVUQ6Rzo2NAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgK
KworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6
Rzo4IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXND
b25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYgVTpH
OjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYgL2JyYW5jaAorICAgIFN0YXR1c0NvbmQsIFRt
cCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBC
cmFuY2hBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiAv
YnJhbmNoCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwg
VG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0IFU6Rzoz
MiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAq
LCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRv
bWljQWRkOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQxNiBVOkc6MTYsIFVE
Okc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
Nl82NDogQXRvbWljQWRkNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1t
LCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWI4
IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjE2IFU6RzoxNiwgVUQ6RzoxNgor
ICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisKK3g4NjogQXRvbWljU3ViMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBB
dG9taWNTdWI2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDggVTpHOjgs
IFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1t
LCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwor
eDg2OiBBdG9taWNBbmQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY0Fu
ZDY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3I4IFU6Rzo4LCBVRDpHOjgK
KyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY09yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNPcjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljT3I2NCBVOkc6NjQs
IFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjggVTpHOjgsIFVEOkc6OAorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljWG9yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYb3IzMiBV
Okc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hvcjY0IFU6Rzo2NCwgVUQ6Rzo2
NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogQXRvbWljTmVnOCBVRDpHOjgKKyAgICBBZGRyCisgICAgSW5kZXgKKwor
eDg2OiBBdG9taWNOZWcxNiBVRDpHOjE2CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRv
bWljTmVnMzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0b21pY05l
ZzY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3Q4IFVEOkc6
OAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDE2IFVEOkc6MTYKKyAgICBB
ZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QzMiBVRDpHOjMyCisgICAgQWRkcgorICAg
IEluZGV4CisKK3g4Nl82NDogQXRvbWljTm90NjQgVUQ6Rzo2NAorICAgIEFkZHIKKyAgICBJbmRl
eAorCit4ODY6IEF0b21pY1hjaGdBZGQ4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQxNiBVRDpHOjE2LCBVRDpHOjE2Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQzMiBVRDpH
OjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0
b21pY1hjaGdBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY1hjaGc4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGcxNiBVRDpHOjE2LCBVRDpHOjE2CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGczMiBVRDpHOjMyLCBV
RDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hj
aGc2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCith
cm02NDogTG9hZExpbms4IFU6Rzo4LCBaRDpHOjgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwg
VG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTggVTpHOjgsIFpEOkc6OAorICAgIEFkZHIsIFRtcAor
ICAgIEluZGV4LCBUbXAKKworIyBTdXBlciBjb25mdXNpbmcgZmFjdDogdGhpcyByZXR1cm5zIDAg
dG8gbWVhbiBzdWNjZXNzLCAxIHRvIG1lYW4gZmFpbHVyZS4KK2FybTY0OiBTdG9yZUNvbmQ4IFU6
Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwg
VG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRt
cCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGluazE2IFU6
RzoxNiwgWkQ6RzoxNgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExv
YWRMaW5rQWNxMTYgVTpHOjE2LCBaRDpHOjE2CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRt
cAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAs
IEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMTYg
VTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5k
ZXgsIFRtcAorCithcm02NDogTG9hZExpbmszMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBBZGRyLCBU
bXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTMyIFU6RzozMiwgWkQ6Rzoz
MgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDMyIFU6
RzozMiwgRDpHOjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4
LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4Cisg
ICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5r
NjQgVTpHOjY0LCBaRDpHOjY0CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02
NDogTG9hZExpbmtBY3E2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRl
eCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQ2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAg
IFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRS
ZWw2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1w
LCBJbmRleCwgVG1wCisKK2FybTY0OiBEZXBlbmQzMiBVOkc6MzIsIEQ6RzozMgorICAgIFRtcCwg
VG1wCisKK2FybTY0OiBEZXBlbmQ2NCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wCiAKIENv
bXBhcmUzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29uZCwgVG1w
LCBUbXAsIFRtcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6
ZUJsb2NrT3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAkocmV2aXNpb24gMjEyOTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTc3LDYgKzE3NywxMCBAQCB2b2lkIG9wdGltaXplQmxvY2tPcmRlcihDb2Rl
JiBjb2RlKQogICAgICAgICBjYXNlIEJyYW5jaFN1YjY0OgogICAgICAgICBjYXNlIEJyYW5jaE5l
ZzMyOgogICAgICAgICBjYXNlIEJyYW5jaE5lZzY0OgorICAgICAgICBjYXNlIEJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzg6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTY6CisgICAg
ICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzI6CisgICAgICAgIGNhc2UgQnJhbmNoQXRv
bWljU3Ryb25nQ0FTNjQ6CiAgICAgICAgICAgICBpZiAoY29kZS5maW5kTmV4dEJsb2NrKGJsb2Nr
KSA9PSBibG9jay0+c3VjY2Vzc29yQmxvY2soMCkgJiYgYnJhbmNoLmFyZ3NbMF0uaXNJbnZlcnRp
YmxlKCkpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnN3YXAoYmxvY2stPnN1Y2Nlc3NvcigwKSwg
YmxvY2stPnN1Y2Nlc3NvcigxKSk7CiAgICAgICAgICAgICAgICAgYnJhbmNoLmFyZ3NbMF0gPSBi
cmFuY2guYXJnc1swXS5pbnZlcnRlZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkocmV2aXNpb24gMjEyOTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHZvaWQgcGFkSW50ZXJmZXJlbmNlKENvZGUm
IGNvZGUpCiAgICAgICAgICAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywg
V2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyb2xlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OkVhcmx5WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vhcmx5RGVmID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6TGF0ZVVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
U3BpbGxFdmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDIxMjk5MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUp
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlQ29sZFVzZToKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3JpdHlP
cmRlcihiYW5rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0QmVmb3Jl
LmdldChyZWcpICYmICFzZXRBZnRlci5nZXQocmVnKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRBZnRlci5zZXQocmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHJldmlzaW9uIDIxMjk5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsMTQgKzUxLDQ5IEBAIGNsYXNzIEFyZwogICAgICAgICBAYmFuayA9IGJh
bmsKICAgICAgICAgQHdpZHRoID0gd2lkdGgKICAgICBlbmQKLQotICAgIGRlZiB3aWR0aENvZGUK
KyAgICAKKyAgICBkZWYgc2VsZi53aWR0aENvZGUod2lkdGgpCiAgICAgICAgIGlmIHdpZHRoID09
ICJQdHIiCiAgICAgICAgICAgICAicG9pbnRlcldpZHRoKCkiCiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICJXaWR0aCN7d2lkdGh9IgogICAgICAgICBlbmQKICAgICBlbmQKKworICAgIGRlZiB3
aWR0aENvZGUKKyAgICAgICAgQXJnLndpZHRoQ29kZSh3aWR0aCkKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgc2VsZi5yb2xlQ29kZShyb2xlKQorICAgICAgICBjYXNlIHJvbGUKKyAgICAgICAgd2hl
biAiVSIKKyAgICAgICAgICAgICJVc2UiCisgICAgICAgIHdoZW4gIkQiCisgICAgICAgICAgICAi
RGVmIgorICAgICAgICB3aGVuICJaRCIKKyAgICAgICAgICAgICJaRGVmIgorICAgICAgICB3aGVu
ICJVRCIKKyAgICAgICAgICAgICJVc2VEZWYiCisgICAgICAgIHdoZW4gIlVaRCIKKyAgICAgICAg
ICAgICJVc2VaRGVmIgorICAgICAgICB3aGVuICJVQSIKKyAgICAgICAgICAgICJVc2VBZGRyIgor
ICAgICAgICB3aGVuICJTIgorICAgICAgICAgICAgIlNjcmF0Y2giCisgICAgICAgIHdoZW4gIkVE
IgorICAgICAgICAgICAgIkVhcmx5RGVmIgorICAgICAgICB3aGVuICJFWkQiCisgICAgICAgICAg
ICAiRWFybHlaRGVmIgorICAgICAgICB3aGVuICJMVSIKKyAgICAgICAgICAgICJMYXRlVXNlIgor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbmQKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgcm9sZUNvZGUKKyAgICAgICAgQXJnLnJvbGVDb2RlKHJvbGUpCisgICAgZW5k
CiBlbmQKIAogY2xhc3MgT3ZlcmxvYWQKQEAgLTE4Miw3ICsyMTcsNyBAQCBkZWYgbGV4KHN0ciwg
ZmlsZU5hbWUpCiBlbmQKIAogZGVmIGlzUm9sZSh0b2tlbikKLSAgICB0b2tlbiA9fiAvXEEoKFUp
fChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUykpXFovCisgICAgdG9rZW4gPX4gL1xBKChVKXwo
RCl8KFVEKXwoWkQpfChVWkQpfChVQSl8KFMpfChFRCl8KEVaRCl8KExVKSlcWi8KIGVuZAogCiBk
ZWYgaXNHRih0b2tlbikKQEAgLTE5MCw3ICsyMjUsNyBAQCBkZWYgaXNHRih0b2tlbikKIGVuZAog
CiBkZWYgaXNLaW5kKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1t
KXwoQml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8
KERvdWJsZUNvbmQpKVxaLworICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwo
Qml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERv
dWJsZUNvbmQpfChTdGF0dXNDb25kKSlcWi8KIGVuZAogCiBkZWYgaXNBcmNoKHRva2VuKQpAQCAt
MjY0LDcgKzI5OSw3IEBAIGNsYXNzIFBhcnNlcgogCiAgICAgZGVmIGNvbnN1bWVLaW5kCiAgICAg
ICAgIHJlc3VsdCA9IHRva2VuLnN0cmluZwotICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBr
aW5kIChJbW0sIEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVs
Q29uZCwgUmVzQ29uZCwgb3IgRG91YmxlQ29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKKyAg
ICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0
SW1tNjQsIFRtcCwgQWRkciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIERvdWJsZUNvbmQsIG9y
IFN0YXR1c0NvbmQpIikgdW5sZXNzIGlzS2luZChyZXN1bHQpCiAgICAgICAgIGFkdmFuY2UKICAg
ICAgICAgcmVzdWx0CiAgICAgZW5kCkBAIC02MzQsMjggKzY2OSw3IEBAIHdyaXRlSCgiT3Bjb2Rl
VXRpbHMiKSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5l
YWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAgICAgIGNh
c2UgYXJnLnJvbGUKLSAgICAgICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAgICAgICAg
ICByb2xlID0gIlVzZSIKLSAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAg
ICAgICByb2xlID0gIkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJaRCIKLSAgICAgICAgICAg
ICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlVEIgotICAgICAg
ICAgICAgICAgICAgICByb2xlID0gIlVzZURlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJVWkQi
Ci0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAgICAgICAgICAgICAgICB3
aGVuICJVQSIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAg
ICAgICAgIHdoZW4gIlMiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2NyYXRjaCIKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAg
ICAgICAgZW5kCi0KLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2lu
ZGV4fV0sIEFyZzo6I3tyb2xlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCisg
ICAgICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7
YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCiAgICAgICAg
ICAgICB9CiAgICAgICAgIGVuZAogICAgIH0KQEAgLTgxOSw2ICs4MzMsNyBAQCB3cml0ZUgoIk9w
Y29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJSZWxDb25kIgogICAgICAg
ICAgICAgICAgIHdoZW4gIlJlc0NvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29u
ZCIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQga2luZDogI3traW5kLm5h
bWV9IgogICAgICAgICAgICAgICAgIGVuZApAQCAtMTEwNSw2ICsxMTIwLDggQEAgd3JpdGVIKCJP
cGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3Nb
I3tpbmRleH1dLmFzUmVzdWx0Q29uZGl0aW9uKCkiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91
YmxlQ29uZCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0u
YXNEb3VibGVDb25kaXRpb24oKSIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgor
ICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc1N0YXR1c0Nv
bmRpdGlvbigpIgogICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQogCkBAIC0xMTQ4
LDI3ICsxMTY1LDcgQEAgRmlsZS5vcGVuKCJKU0Fpcl9vcGNvZGUuanMiLCAidyIpIHsKICAgICAg
ICAgICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tvdmVybG9hZC5zaWduYXR1cmUubGVuZ3RofToi
IGlmIG5lZWRPdmVybG9hZFN3aXRjaAogICAgICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVy
ZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAgICAgICB8IGFyZywgaW5kZXggfAot
ICAgICAgICAgICAgICAgICAgICByb2xlID0gbmlsCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
YXJnLnJvbGUKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVSIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4g
IlpEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAgICAgICAg
ICAgICAgICB3aGVuICJVRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVm
IgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVWkQiCi0gICAgICAgICAgICAgICAgICAgICAg
ICByb2xlID0gIlVzZVpEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlVBIgotICAgICAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAgICAgICAgICAgICB3
aGVuICJTIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3JhdGNoIgotICAgICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAg
ICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7cm9sZX0s
ICN7YXJnLmJhbmt9UCwgI3thcmcud2lkdGh9KTsiCisgICAgICAgICAgICAgICAgICAgIG91dHAu
cHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7YXJnLnJvbGVDb2RlfSwg
I3thcmcuYmFua31QLCAje2FyZy53aWR0aH0pOyIKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgb3V0cC5wdXRzICJicmVhazsiCiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyMTI5OTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
Myw5ICs0MTMsNiBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJv
b2wsIGR1bXBNb2R1bGVMb2FkaW5nU3RhdGUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAg
ICB2KGJvb2wsIGV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyLCBmYWxzZSwgTm9ybWFsLCAiZXhw
b3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUgbG9hZGVyIG9iamVjdCB0byB0aGUgZ2xvYmFsIHNwYWNl
IGZvciBkZWJ1Z2dpbmciKSBcCiAgICAgXAotICAgIHYoYm9vbCwgZHVtcEFpckFzSlNCZWZvcmVB
bGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgdihib29sLCBkdW1w
QWlyQWZ0ZXJBbGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgXAog
ICAgIHYoYm9vbCwgdXNlU3VwZXJTYW1wbGVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgXAogICAgIHYoYm9vbCwgcmVwb3J0TExJbnRTdGF0cywgZmFsc2UsIENvbmZpZ3VyYWJsZSwg
IlJlcG9ydHMgTExJbnQgc3RhdGlzdGljcyIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303170</attachid>
            <date>2017-03-01 20:52:47 -0800</date>
            <delta_ts>2017-03-02 14:06:53 -0800</delta_ts>
            <desc>rebased</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>299679</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTMyNjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMyBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAv
KiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87
IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQz
NDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNj
b3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5ODMyREFDMDA3RDRC
MTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDUsOCArMjI1Miw2IEBACiAJCURD
MjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIw
OTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVh
cENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRC
OEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1
QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8q
IFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREM2MDVCNUYxQ0Uy
NkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxl
clVJRC5jcHAgKi87IH07CkBAIC0yNzcxLDYgKzI3NzYsMTMgQEAKIAkJMEYyQzYzQUMxRTYwQUUz
QzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4Mzkg
LyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7
IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2
M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9t
aWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQz
RTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0lu
c2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0
NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMv
YWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBh
dGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MxMUU2
NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRpdmVUcmFpdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQzNDAwN0Q0QjE5IC8q
IERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERD
MTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDc4Nyw4ICs0Nzk5LDYgQEAKIAkJREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8q
IElDU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUNTdGF0cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyog
SGVhcENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcENlbGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8q
IEhlYXBDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBD
ZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckR1bXBBc0pTLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJEdW1wQXNKUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJEdW1wQXNK
Uy5oOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuY3BwOyBwYXRo
ID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuaDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNUIx
Q0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyVUlELmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVy
VUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMDYsNiArNTMxNiw4IEBA
CiAJCQkJMEZFQzg0QjMxQkRBQ0Q4ODAwODBGRjc0IC8qIGFpciAqLywKIAkJCQkwRkVDODRCNDFC
REFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRC
NTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmggKi8sCisJCQkJMEYyQzYz
QjMxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwICovLAorCQkJCTBGMkM2M0I0
MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8sCiAJCQkJMEYyQzYzQUIxRTYw
QUUzQzAwQzEzODM5IC8qIEIzQmFuay5jcHAgKi8sCiAJCQkJMEYyQzYzQUMxRTYwQUUzQzAwQzEz
ODM5IC8qIEIzQmFuay5oICovLAogCQkJCTBGRUM4NEI2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jh
c2ljQmxvY2suY3BwICovLApAQCAtNTM2OCw2ICs1MzgwLDcgQEAKIAkJCQkwRkVDODRDRDFCREFD
REFDMDA4MEZGNzQgLyogQjNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODRDRTFCREFD
REFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg0Q0YxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzR2VuZXJhdGUuaCAqLywKKwkJCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4Mzkg
LyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkVDODREMDFCREFDREFD
MDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg1QkYx
QkUxNjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmNwcCAqLywKIAkJCQkwRkVDODVDMDFCRTE2
N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLywKQEAgLTUzOTIsNiArNTQwNSw3IEBACiAJ
CQkJMEZFQzg0RDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuaCAqLywKIAkJCQkw
RjMzOEUwMzFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmNwcCAqLywKIAkJCQkw
RjMzOEUwNDFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmggKi8sCisJCQkJMEYy
QzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi8sCiAJCQkJMEYzMzhF
MDUxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0LmggKi8sCiAJCQkJMEYzMzhF
MDYxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5jcHAgKi8sCiAJCQkJMEYz
MzhFMDcxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5oICovLApAQCAtNTQ4
Myw2ICs1NDk3LDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5s
aW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2Nr
LmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5o
ICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNl
dC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0
aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29y
a2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdD
b252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC01NDk0LDggKzU1MTAsNiBAQAogCQkJCTBGMTBGMUEy
MUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAqLywKIAkJCQk3OUFCQjE3QjFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQk3OUFCQjE3QzFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmggKi8sCi0JCQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLywKLQkJCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4
QUYgLyogQWlyRHVtcEFzSlMuaCAqLywKIAkJCQkwRjQ1NzAzNjFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICovLAogCQkJCTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYy
OSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovLAogCQkJCTBGNjE4MzIzMUM0NUJGMDcwMDcy
NDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5jcHAgKi8sCkBAIC03MzQ1LDYgKzczNTksNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2
OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRjFFNjYwRUE1MDBDMTM4Mzkg
LyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAw
Rjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENE
NzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJ
ODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCkBAIC03Mzcz
LDggKzczODgsOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3Nl
bWJsZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIx
IC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4
NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKQEAg
LTc5NjQsNyArNzk3OSw2IEBACiAJCQkJMEZFQzg1NzQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckND
YWxsU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzYxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTBGMUEzMUM0MjBCRjAwMDFDMDdE
MiAvKiBBaXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAotCQkJCURDNDU0QjhEMUQwMEU4MjQwMDRD
MThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NTcwMzkxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjYxODMyRDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNERFMUNGMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc5NzcsNiArNzk5MSw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckluc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3
RDcxRDlEQzQ0MjAwMUI5ODI1IC8qIEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2
M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjY4NEQ0MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUzNEMxQTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQ
cmVzc3VyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8q
IEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDY4LDYgKzgwODMs
NyBAQAogCQkJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQ
dHJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8q
IEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNG
NzAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjMzOEUwRTFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzM0ZDRkMxQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY2QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRl
VGFpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtODI1OCw2ICs4Mjc0LDcgQEAKIAkJCQlBNzdBNDIz
RTE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNDMjFFNjY0QTVD
MDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc3
MTQzRkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQzRTQwMjFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4RDNEMDFCNTVBNkUwMDAy
QzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTgzODgsNiArODQwNSw3IEBACiAJCQkJMEYzOTJDOEExQjQ2MTg4NDAwODQ0NzI4IC8qIERG
R09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdG
NTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYwMEM3
MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIxOUQwQkE3RDAw
QjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKQEAgLTk4MTcsNiArOTgz
NSw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTgyNyw3ICs5ODQ2LDYgQEAKIAkJCQkwRkVD
ODU3MzFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTc1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0Ux
QzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMDI3NCw2ICsxMDI5Miw3IEBACiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8q
IEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVC
OEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQw
RTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMjkyLDYgKzEwMzExLDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBB
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdB
NDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiIC8vIEhhdmUgdG8g
YnJlYWsgd2l0aCBzdHlsZSBiZWNhdXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpcyBhIHNo
YWR5IGhlYWRlci4KKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisKKyNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdURiB7CisK
K3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyQmFzZTo6U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBzd2l0Y2ggKGNvbmRp
dGlvbikgeworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN1Y2Nlc3M6Cisg
ICAgICAgIG91dC5wcmludCgiU3VjY2VzcyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6RmFpbHVyZToKKyAgICAgICAgb3V0LnByaW50KCJG
YWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0
Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUmFuZG9tLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NTAsOCArNTEsMjggQEAgbmFtZXNwYWNlIERGRyB7CiBzdHJ1Y3QgT1NSRXhpdDsKIH0KIAorY2xh
c3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgeworcHVibGljOgorICAgIGVudW0gU3RhdHVz
Q29uZGl0aW9uIHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgRmFpbHVyZQorICAgIH07Cisg
ICAgCisgICAgc3RhdGljIFN0YXR1c0NvbmRpdGlvbiBpbnZlcnQoU3RhdHVzQ29uZGl0aW9uIGNv
bmRpdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7CisgICAgICAgIGNh
c2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBGYWlsdXJlOworICAgICAgICBjYXNlIEZh
aWx1cmU6CisgICAgICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAgICAgICAgfQorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAg
ICB9Cit9OworCiB0ZW1wbGF0ZSA8Y2xhc3MgQXNzZW1ibGVyVHlwZSwgY2xhc3MgTWFjcm9Bc3Nl
bWJsZXJUeXBlPgotY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciB7CitjbGFzcyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlIHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwg
TWFjcm9Bc3NlbWJsZXJUeXBlPiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZTsKICAgICB0eXBl
ZGVmIEFzc2VtYmxlclR5cGUgQXNzZW1ibGVyVHlwZV9UOwpAQCAtMTEwOCwzICsxMTI5LDE2IEBA
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwgTWEKICNlbmRpZiAvLyBFTkFC
TEUoQVNTRU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKKworI2lmIEVOQUJMRShBU1NFTUJM
RVIpCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJh
c2U6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8g
RU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMi0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTM2LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IHR3b1RvVGhlMzI7IC8vIFRoaXMgaXMgc3VwZXIgdXNlZnVsIGZvciBzb21lIGRvdWJsZSBjb2Rl
LgogCiAgICAgLy8gVXRpbGl0aWVzIHVzZWQgYnkgdGhlIERGRyBKSVQuCisgICAgdXNpbmcgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OmludmVydDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
ckJhc2U6OmludmVydDsKICAgICAKICAgICBzdGF0aWMgRG91YmxlQ29uZGl0aW9uIGludmVydChE
b3VibGVDb25kaXRpb24gY29uZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDIx
MzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBk
ZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFk
ZDMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CkBAIC0yNTEsMTYgKzI1
Niw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZDE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBhbmQxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmFuZGJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4
LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZz
ZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKEJhc2VJbmRleCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9
CisKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRs
X2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdf
aW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19pbShzdGF0
aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5k
OChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
bmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC00NTYsNiArNTE2LDMxIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNE
ZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgbmVnMzIoQmFzZUluZGV4IHNyY0Rlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdsX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3Qu
YmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBu
ZWcxNihBZGRyZXNzIHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20o
c3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihC
YXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3dfbShzcmNE
ZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsK
KyAgICB9CisKKyAgICB2b2lkIG5lZzgoQWRkcmVzcyBzcmNEZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubmVnYl9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgbmVnOChCYXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5lZ2JfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4
LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ycihzcmMs
IGRlc3QpOwpAQCAtNDcxLDE2ICs1NTYsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5vcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lk
IG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIub3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwg
ZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcndfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CisgICAgdm9pZCBvcjgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgb3I4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihBZGRyZXNz
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoQmFz
ZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7
CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbShpbW0ubV92YWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3
X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRp
Y19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIg
aW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9p
bShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCBvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC02NTQsMTYgKzc5NCw3MSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19p
bShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19j
YXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92YWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorCisgICAgdm9pZCBzdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50
MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9
CiAKKyAgICB2b2lkIHN1YjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5p
bmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3Jt
KHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWIxNihS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQg
c3ViOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuc3ViYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAg
IHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3Qu
aW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNjc3LDYgKzg3Miw1MCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3Js
X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZf
dD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRp
Y19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3J3X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBk
ZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0
aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5t
X3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92
YWx1ZSA9IHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1t
Lm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9y
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYg
KGltbS5tX3ZhbHVlID09IC0xKQpAQCAtNjkwLDExICs5MjksNDEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAg
fQogCisgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdp
c3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9y
d19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9y
MTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRl
c3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CiAgICAgdm9pZCB4b3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAg
ICAgfQogICAgIAorICAgIHZvaWQgeG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHhv
cjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC03NDEsNiArMTAxMCwzMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdDMyKEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbm90MTYoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgbm90MTYoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCBub3Q4KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5vdDgoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5u
b3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBzcXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcXJ0c2RfcnIoc3JjLCBkc3QpOwpA
QCAtMTA3MSw0MiArMTM2NSwyMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAgICAg
ICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNhbiBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVn
aXN0ZXJzOwotICAgICAgICAvLyBlc3AuLmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0
ZXJzIQotICAgICAgICBpZiAoc3JjID49IDQpIHsKLSAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1w
b3JhcnkgcmVnaXN0ZXIuCi0gICAgICAgICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRS
ZWdpc3RlcihhZGRyZXNzKTsKLQotICAgICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5
IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhlIHN0b3JlLgotICAgICAgICAgICAgc3dhcChzcmMsIHRl
bXApOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKLSAgICAgICAg
ICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2Vu
ZGlmCiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKICAgICB2
b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0jaWYg
Q1BVKFg4NikKLSAgICAgICAgLy8gT24gMzItYml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9t
IHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKLSAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0
byB0aGUgJ2gnIHJlZ2lzdGVycyEKLSAgICAgICAgaWYgKHNyYyA+PSA0KSB7Ci0gICAgICAgICAg
ICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLgotICAgICAgICAgICAgUmVnaXN0ZXJJRCB0
ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRkcmVzcyk7Ci0KLSAgICAgICAgICAgIC8vIFN3YXAg
dG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0byBwZXJmb3JtIHRoZSBzdG9yZS4KLSAgICAgICAg
ICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0odGVt
cCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7Ci0gICAgICAgICAgICBzd2FwKHNyYywg
dGVtcCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBt
X2Fzc2VtYmxlci5tb3Z3X3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAg
ICAgfQogCisgICAgdm9pZCBzdG9yZTE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3RvcmUxNihUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5t
b3Z3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7CisgICAgfQogCiAgICAgLy8gRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9u
OgogICAgIC8vCkBAIC0yNzQzLDc0ICszMDE4LDgzOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKDAsIDAsIFg4NlJlZ2lz
dGVyczo6ZXNwKTsKICAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsm
XSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsgfSk7CisgICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhh
dCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBv
biB4ODYuCi0gICAgdm9pZCBzdG9yZUZlbmNlKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAg
ICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAg
IH0KIAotICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9u
IG9mIG5vcm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBsb2Fk
RmVuY2UoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAgICBhdG9taWNTdHJv
bmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIu
Y21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFi
ZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNl
V2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlv
bi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4
cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsgfSk7CiAgICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSgpCisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAg
ICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHBhdGNoYWJsZUp1bXBT
aXplKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5k
ZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcykKICAgICB7Ci0gICAgICAgIGlmIChzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVj
a1N0YXRlOjpOb3RDaGVja2VkKQotICAgICAgICAgICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7Ci0g
ICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisgICAgdm9pZCBh
dG9taWNTdHJvbmdDQVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gQVZYIHN0aWxs
IGNhdXNlcyBteXN0ZXJpb3VzIHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4g
YmUgbWFzc2l2ZS4KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdG9taWNTdHJvbmdD
QVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdz
KCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAg
IGludCBmbGFncyA9IDA7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgaW50IGNwdUluZm9b
NF07Ci0gICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHgxKTsKLSAgICAgICAgZmxhZ3MgPSBjcHVJ
bmZvWzJdOwotI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQotI2lmIENQVShYODZfNjQpCi0g
ICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAg
ICAiY3B1aWQ7IgotICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDog
Ij1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlYngi
LCAiJWVjeCIsICIlZWR4IgotICAgICAgICAgICAgKTsKLSNlbHNlCi0gICAgICAgIGFzbSAoCi0g
ICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAicHVzaGwgJSVlYng7
IgotICAgICAgICAgICAgImNwdWlkOyIKLSAgICAgICAgICAgICJwb3BsICUlZWJ4OyIKLSAgICAg
ICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAg
ICAgICAgICAgOgotICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAg
ICAgICApOwotI2VuZGlmCisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2
KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5k
UmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwor
ICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0p
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBi
cmFuY2hBdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRv
bWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWlj
V2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21p
Y1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0
b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAg
IHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwg
ZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKwor
ICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihj
b25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQs
IGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBl
Y3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFkZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNB
ZGQ4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYWRkMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YWRkMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1Yjgo
aW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWI4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1
YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWIzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWIzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgYW5kOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0Fu
ZDgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihpbW0s
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
bmQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNPcjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3Iz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I4KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Iz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hvcjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJlZywgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05l
ZzgoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBuZWc4KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzgo
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG5lZzgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMTYo
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBuZWcxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbmVnMTYoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMzIo
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBuZWczMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbmVnMzIoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG5vdDgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbm90OChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QxNihBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG5vdDE2KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBub3QxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QzMihBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG5vdDMyKGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBub3QzMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkOChS
ZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIueGFkZHdfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBtX2Fzc2VtYmxlci54YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhh
ZGRsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhjaGd3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueGNoZ3dfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBsb2FkOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3E4KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IGxvYWQ4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRF
eHRlbmRUbzMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBs
b2FkOFNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbG9hZDhTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBsb2FkMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxMTYoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZDE2KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2lnbmVk
RXh0ZW5kVG8zMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbG9hZDMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgbG9hZEFjcTMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBzdG9yZVJlbDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAg
ICAgICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KGltbSwgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlMTYoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBz
dG9yZVJlbDMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBz
dG9yZTMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYywg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKGltbSwgZGVzdCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9y
bWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBzdG9yZUZlbmNl
KCkKKyAgICB7CisgICAgfQorCisgICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBw
cmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4K
KyAgICB2b2lkIGxvYWRGZW5jZSgpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9j
YXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVw
bGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGlu
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJk
aWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgfQorCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2
QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkKKyAgICB7CisgICAgICAgIGlmIChzX3Nz
ZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQorICAgICAgICAg
ICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7CisgICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3Rh
dGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydHNBVlgoKQorICAgIHsKKyAgICAgICAgLy8gQVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3Vz
IHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4gYmUgbWFzc2l2ZS4KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hG
bGFncygpCisgICAgeworICAgICAgICBpbnQgZmxhZ3MgPSAwOworI2lmIENPTVBJTEVSKE1TVkMp
CisgICAgICAgIGludCBjcHVJbmZvWzRdOworICAgICAgICBfX2NwdWlkKGNwdUluZm8sIDB4MSk7
CisgICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsKKyNlbGlmIENPTVBJTEVSKEdDQ19PUl9DTEFO
RykKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4
MSwgJSVlYXg7IgorICAgICAgICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICJtb3ZsICUlZWN4
LCAlMDsiCisgICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQorICAgICAgICAgICAgOgorICAgICAg
ICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICk7Cisj
ZWxzZQorICAgICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgorICAg
ICAgICAgICAgInB1c2hsICUlZWJ4OyIKKyAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAg
ICAicG9wbCAlJWVieDsiCisgICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAgICAgICAg
ICAgOiAiPWciIChmbGFncykKKyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVlYXgiLCAi
JWVjeCIsICIlZWR4IgorICAgICAgICAgICAgKTsKKyNlbmRpZgogI2VuZGlmIC8vIENPTVBJTEVS
KEdDQ19PUl9DTEFORykKICAgICAgICAgc19zc2U0XzFDaGVja1N0YXRlID0gKGZsYWdzICYgKDEg
PDwgMTkpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsK
ICAgICAgICAgc19hdnhDaGVja1N0YXRlID0gKGZsYWdzICYgKDEgPDwgMjgpKSA/IENQVUlEQ2hl
Y2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKQEAgLTI4MzEsNiArMzg3MCwx
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6
OkNvbmRpdGlvbj4oY29uZCk7CiAgICAgfQogCisgICAgWDg2QXNzZW1ibGVyOjpDb25kaXRpb24g
eDg2Q29uZGl0aW9uKFN0YXR1c0NvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChjb25kKSB7CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbkU7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAg
IHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbk5FOworICAgICAgICB9CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6
OkNvbmRpdGlvbkU7CisgICAgfQorCiAgICAgdm9pZCBzZXQzMihYODZBc3NlbWJsZXI6OkNvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogI2lmIENQVShYODYpCkBAIC0yOTI1
LDYgKzM5NzYsMzUgQEAgcHJvdGVjdGVkOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihzaXpl
T2ZSZWdpc3RlciksIGRzdCk7CiAgICAgICAgIHNyY0lzTm9uWmVyby5saW5rKHRoaXMpOwogICAg
IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0
LCBSZWdpc3RlcklEIHJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3
YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRS
ZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNv
bmQpLCByZXN1bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3Qg
RnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJl
Z2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5j
KCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIEp1bXAgYnJhbmNoQXRv
bWljU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFu
ZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVn
aXN0ZXJzOjplYXgpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29u
ZGl0aW9uKGNvbmQpKSk7CisgICAgfQogCiBwcml2YXRlOgogICAgIC8vIE9ubHkgTWFjcm9Bc3Nl
bWJsZXJYODYgc2hvdWxkIGJlIHVzaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kOyBTU0UyIGlzIGFs
d2F5cyBhdmFpbGFibGUgb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIxMzI2MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2NCwxMSArMjY0LDIxIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7
CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
YWRkcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQg
YWRkNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYWRkcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYWRkNjQoQWJzb2x1dGVBZGRyZXNzIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNy
Yy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKQEAgLTMwNiw2ICszMTYsMTQgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1
ZSA9PSAxKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuaW5jcV9tKGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9
CisKICAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRy
ZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBz
Y3JhdGNoUmVnaXN0ZXIoKSk7CkBAIC0zNDIsMTEgKzM2MCw0MSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLmFuZHFfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQ2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hbmRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChBZGRyZXNzIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChCYXNlSW5kZXgg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAg
fQorCiAgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2lt
KGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3Rl
cklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBpbnRwdHJfdCBpbnRWYWx1ZSA9IGltbS5hc0lu
dHB0cigpOwpAQCAtNTUyLDExICs2MDAsNTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5uZWdxX3IoZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBuZWc2NChBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBuZWc2NChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5lZ3FfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ycihzcmMsIGRlc3Qp
OwogICAgIH0KIAorICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
b3I2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2
b2lkIG9yNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5z
Y2FsZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9pbShpbW0ubV92YWx1
ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTY0IGltbSwgUmVn
aXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlIDw9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpCkBAIC02MTksMTYgKzcwNywzMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJx
X2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjY0KEFkZHJlc3Mgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNy
Yy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KEJhc2VJ
bmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1
YnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsK
KyAgICB9CisKICAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCB4b3I2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIueG9ycV9ycihzcmMsIGRlc3QpOwpAQCAtNjUxLDYgKzc1NCwzMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IHhvcjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci54b3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHhvcjY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhvcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1t
Lm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9y
NjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci54b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0
LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhv
cnFfaXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwpAQCAtNjY2LDYgKzc5NCwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vdHFfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdDY0KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubm90cV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgbG9hZDY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwpAQCAtNzI1LDYgKzg1OCwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQo
VHJ1c3RlZEltbTY0IGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzMyXzY0KGltbS5tX3ZhbHVlKSkgewpAQCAtMTI5NCw3ICsx
NDMyLDI1NSBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3Zl
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRy
ZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwgbWFzazgpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBh
dG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsm
XSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9
CiAKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FT
KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRk
cmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1Zh
bHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4g
YnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2
NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHN1YjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
U3ViNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgb3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y09yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhv
cjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05lZzY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTmVnNjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05vdDY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTm90NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54
YWRkcV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzY0
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzY0
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRBY3E2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCB0
cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAko
cmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5MCwxNiArMTkwLDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgIE9QX0FERF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDAxLAog
ICAgICAgICBPUF9BRERfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgwMywKICAgICAgICAg
T1BfQUREX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MDUsCisgICAgICAgIE9QX09SX0V2
R2IgICAgICAgICAgICAgICAgICAgICAgPSAweDA4LAogICAgICAgICBPUF9PUl9Fdkd2ICAgICAg
ICAgICAgICAgICAgICAgID0gMHgwOSwKICAgICAgICAgT1BfT1JfR3ZFdiAgICAgICAgICAgICAg
ICAgICAgICA9IDB4MEIsCiAgICAgICAgIE9QX09SX0VBWEl2ICAgICAgICAgICAgICAgICAgICAg
PSAweDBELAogICAgICAgICBPUF8yQllURV9FU0NBUEUgICAgICAgICAgICAgICAgID0gMHgwRiwK
KyAgICAgICAgT1BfQU5EX0V2R2IgICAgICAgICAgICAgICAgICAgICA9IDB4MjAsCiAgICAgICAg
IE9QX0FORF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDIxLAogICAgICAgICBPUF9BTkRf
R3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgyMywKKyAgICAgICAgT1BfU1VCX0V2R2IgICAg
ICAgICAgICAgICAgICAgICA9IDB4MjgsCiAgICAgICAgIE9QX1NVQl9Fdkd2ICAgICAgICAgICAg
ICAgICAgICAgPSAweDI5LAogICAgICAgICBPUF9TVUJfR3ZFdiAgICAgICAgICAgICAgICAgICAg
ID0gMHgyQiwKICAgICAgICAgT1BfU1VCX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MkQs
CiAgICAgICAgIFBSRV9QUkVESUNUX0JSQU5DSF9OT1RfVEFLRU4gICAgPSAweDJFLAorICAgICAg
ICBPUF9YT1JfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgzMCwKICAgICAgICAgT1BfWE9S
X0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MzEsCiAgICAgICAgIE9QX1hPUl9HdkV2ICAg
ICAgICAgICAgICAgICAgICAgPSAweDMzLAogICAgICAgICBPUF9YT1JfRUFYSXYgICAgICAgICAg
ICAgICAgICAgID0gMHgzNSwKQEAgLTIyMyw2ICsyMjcsNyBAQCBwcml2YXRlOgogICAgICAgICBP
UF9HUk9VUDFfRXZJYiAgICAgICAgICAgICAgICAgID0gMHg4MywKICAgICAgICAgT1BfVEVTVF9F
YkdiICAgICAgICAgICAgICAgICAgICA9IDB4ODQsCiAgICAgICAgIE9QX1RFU1RfRXZHdiAgICAg
ICAgICAgICAgICAgICAgPSAweDg1LAorICAgICAgICBPUF9YQ0hHX0V2R2IgICAgICAgICAgICAg
ICAgICAgID0gMHg4NiwKICAgICAgICAgT1BfWENIR19Fdkd2ICAgICAgICAgICAgICAgICAgICA9
IDB4ODcsCiAgICAgICAgIE9QX01PVl9FYkdiICAgICAgICAgICAgICAgICAgICAgPSAweDg4LAog
ICAgICAgICBPUF9NT1ZfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHg4OSwKQEAgLTI1Miw2
ICsyNTcsNyBAQCBwcml2YXRlOgogICAgICAgICBQUkVfU1NFX0YyICAgICAgICAgICAgICAgICAg
ICAgID0gMHhGMiwKICAgICAgICAgUFJFX1NTRV9GMyAgICAgICAgICAgICAgICAgICAgICA9IDB4
RjMsCiAgICAgICAgIE9QX0hMVCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweEY0LAorICAg
ICAgICBPUF9HUk9VUDNfRWIgICAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAgT1Bf
R1JPVVAzX0ViSWIgICAgICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9QX0dST1VQM19F
diAgICAgICAgICAgICAgICAgICAgPSAweEY3LAogICAgICAgICBPUF9HUk9VUDNfRXZJeiAgICAg
ICAgICAgICAgICAgID0gMHhGNywgLy8gT1BfR1JPVVAzX0V2IGhhcyBhbiBpbW1lZGlhdGUsIHdo
ZW4gaW5zdHJ1Y3Rpb24gaXMgYSB0ZXN0LiAKQEAgLTI5MCw2ICsyOTYsOCBAQCBwcml2YXRlOgog
ICAgICAgICBPUF9TRVRDQyAgICAgICAgICAgID0gMHg5MCwKICAgICAgICAgT1AyXzNCWVRFX0VT
Q0FQRV9BRSA9IDB4QUUsCiAgICAgICAgIE9QMl9JTVVMX0d2RXYgICAgICAgPSAweEFGLAorICAg
ICAgICBPUDJfQ01QWENIR2IgICAgICAgID0gMHhCMCwKKyAgICAgICAgT1AyX0NNUFhDSEcgICAg
ICAgICA9IDB4QjEsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkViICAgICAgPSAweEI2LAogICAgICAg
ICBPUDJfQlNGICAgICAgICAgICAgID0gMHhCQywKICAgICAgICAgT1AyX1RaQ05UICAgICAgICAg
ICA9IDB4QkMsCkBAIC0yOTgsNiArMzA2LDggQEAgcHJpdmF0ZToKICAgICAgICAgT1AyX01PVlNY
X0d2RWIgICAgICA9IDB4QkUsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkV3ICAgICAgPSAweEI3LAog
ICAgICAgICBPUDJfTU9WU1hfR3ZFdyAgICAgID0gMHhCRiwKKyAgICAgICAgT1AyX1hBRERiICAg
ICAgICAgICA9IDB4QzAsCisgICAgICAgIE9QMl9YQUREICAgICAgICAgICAgPSAweEMxLAogICAg
ICAgICBPUDJfUEVYVFJXX0dkVWRJYiAgID0gMHhDNSwKICAgICAgICAgT1AyX1BTTExRX1VkcUli
ICAgICA9IDB4NzMsCiAgICAgICAgIE9QMl9QU1JMUV9VZHFJYiAgICAgPSAweDczLApAQCAtNDQw
LDYgKzQ1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9B
RERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGFkZGxf
bXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9Cisg
ICAgCiAjaWYgIUNQVShYODZfNjQpCiAgICAgdm9pZCBhZGRsX21yKGNvbnN0IHZvaWQqIGFkZHIs
IFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTU2MiwxMSArNTc3LDIxIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgb2Zm
c2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9pcihpbnQgaW1tLCBSZWdpc3Rl
cklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CkBAIC01OTEsNiArNjE2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGFkZHFfaW0oaW50
IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQ
MV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQURELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2b2lkIGFkZGxfaW0oaW50
IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC02MTQsMTEgKzY1MCw0MyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNl
LCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgYW5kbF9tcihpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAg
ICAgfQogCisgICAgdm9pZCBhbmRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFuZGxfcm0oc3JjLCBvZmZzZXQsIGJh
c2UpOworICAgIH0KKworICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFu
ZGxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtNjQxLDYgKzcwOSw1MyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIGFuZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQp
OworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBH
Uk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kd19pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpF
KTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAg
ICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRWJJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgYW5kYl9pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwg
R1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2
b2lkIGFuZHFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTY1
Nyw2ICs3NzIsNDggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkg
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIGFuZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQ
MV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQog
I2Vsc2UKICAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7
CkBAIC03MDMsNiArODYwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CisKKyAgICB2b2lkIGluY3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KICNlbmRpZiAvLyBDUFUoWDg2XzY0KQogCiAgICAgdm9pZCBuZWds
X3IoUmVnaXN0ZXJJRCBkc3QpCkBAIC03MTUsNiArODc3LDE2IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05F
RywgZHN0KTsKICAgICB9CisKKyAgICB2b2lkIG5lZ3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNf
RXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBuZWdx
X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYs
IEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5k
aWYKIAogICAgIHZvaWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKQEAgLTcy
Miw2ICs4OTQsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZv
aWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
M19FdiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVn
bF9tKG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWd3X20oaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5lZ2xf
bShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWdiX20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIG5lZ2JfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKICAgICB2b2lkIG5vdGxfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1Qs
IGRzdCk7CkBAIC03MzIsNiArOTMxLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIG5vdGxfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIG5vdGxfbShvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90d19t
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICBub3RsX20ob2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG5v
dHFfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC03NDIsNiArOTY4LDExIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JP
VVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CisKKyAgICB2b2lkIG5vdHFfbShpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAz
X09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAg
ICAgdm9pZCBvcmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtNzU0LDEx
ICs5ODUsNDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1Jf
R3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX21yKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdp
c3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9H
dkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lk
IG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAg
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgb3JsX3JtKHNyYywgb2Zm
c2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAg
ICAgIG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtNzg0LDEyICsxMDQ3LDEwMSBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICB2b2lkIG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JP
VVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb3J3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9
CisgICAgfQorCisgICAgdm9pZCBvcmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
YkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09Q
X09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgb3JxX3Jy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lk
IG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7Cisg
ICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQ
MV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHZvaWQgb3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICB2b2lkIG9ycV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC04MzEsMTEgKzExODMs
NDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYs
IGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YmxfbXIoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9HdkV2
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
Ymxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vid19ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIHN1Yndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgc3ViYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHYiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJs
X2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTg2MSw2ICsxMjQ1LDUzIEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgIH0KIAorICAgIHZvaWQgc3VibF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgc3Vid19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2Us
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdWJ3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1Bf
U1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOworICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
MV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0
KQogICAgIHZvaWQgc3VicV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAg
ewpAQCAtODcyLDExICsxMzAzLDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2
b2lkIHN1YnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKwogICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YnFf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KwogICAgIHZvaWQgc3VicV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAg
ICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC05MDEsNiArMTM0MiwxNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAg
ICAgICB9CiAgICAgfQorCisgICAgdm9pZCBzdWJxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAg
fQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCiAgICAgewpAQCAtOTI0LDExICsxMzc2LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQog
CisgICAgdm9pZCB4b3JsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhv
cmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hPUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisKICAgICB2b2lkIHhvcmxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTk0
MCw2ICsxNDAyLDc1IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgeG9y
bF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihp
bW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIs
IEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yd19ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICB4b3JsX3JtKHNy
Yywgb2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcndfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICB4b3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgeG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2Us
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1Bf
WE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcmJfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAg
IHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfWE9SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0ViSWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcmJfaW0oaW50IGltbSwgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQ
MV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogICAgIHZvaWQgeG9ybF9pcihpbnQgaW1tLCBS
ZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihp
bW0pKSB7CkBAIC05NzQsMTEgKzE1MDUsNDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
ICAgIAorICAgIHZvaWQgeG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9P
UF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKICAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9F
dkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4b3JxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hP
Ul9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIHhvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfR3ZFdiwgZGVz
dCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcnFfbXIoaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2
LCBkZXN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAg
ICB2b2lkIGx6Y250X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTE1ODYs
MTEgKzIxNTMsMzggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX1hDSEdfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgeGNoZ2Jfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNoZ3dfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQg
eGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
WENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAg
ICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnbF9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2
XzY0KQogICAgIHZvaWQgeGNoZ3FfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKQEAgLTE2MDYsNiArMjIwMCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CisKKyAgICB2b2lkIHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG1vdmxfcnIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTczMSw2ICsyMzMwLDIwIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBtb3Z3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCisgICAgdm9pZCBtb3Z3X2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJ
WkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxMV9Fdkl6LCBHUk9V
UDExX01PViwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUxNihpbW0pOworICAgIH0KKwogICAgIHZvaWQgbW92bF9FQVhtKGNvbnN0IHZv
aWQqIGFkZHIpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX092
RUFYKTsKQEAgLTE4MDAsNiArMjQxMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTMyKGltbSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX2kzMm0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDExX0V2SXos
IEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZxX2k2NHIoaW50
NjRfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfTU9WX0VBWEl2LCBkc3QpOwpAQCAtMjc3NSw2ICszMzk0LDkwIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9MT0NLKTsKICAgICB9CiAgICAgCisg
ICAgdm9pZCBjbXB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENI
R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnYl9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4
KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BF
UkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNy
YywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNt
cHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcs
IHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGNtcHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdxX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9D
TVBYQ0hHLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQURE
Yiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCB4YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2
NChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhh
ZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5
dGVPcDY0KE9QMl9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisgICAgCiAgICAgdm9pZCBtZmVuY2UoKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudGhy
ZWVCeXRlT3AoT1AyXzNCWVRFX0VTQ0FQRV9BRSwgT1AzX01GRU5DRSk7CkBAIC0zNzUxLDYgKzQ0
NTQsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKGdyb3Vw
T3AsIHJtKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bj
b2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlciht
X2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1Jl
eChyZWcsIGJhc2UpLCByZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNl
LCBvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVP
cGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3Jp
dGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCByZWdSZXF1aXJlc1JleChp
bmRleCwgYmFzZSksIHJlZywgaW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRl
VW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBJbW1l
ZGlhdGVzOgogICAgICAgICAvLwogICAgICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFw
cGVuZGVkIHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzQXRvbWlj
VmFsdWUuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeworCitBdG9taWNWYWx1ZTo6fkF0b21pY1ZhbHVlKCkKK3sKK30KKworV2lkdGggQXRv
bWljVmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aWR0aDsKK30K
Kwordm9pZCBBdG9taWNWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoY29tbWEsICJ3aWR0aCA9ICIsIG1f
d2lkdGgpOworICAgIAorICAgIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShjb21tYSwgb3V0KTsKK30K
KworVmFsdWUqIEF0b21pY1ZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAoreworICAgIHJldHVybiBu
ZXcgQXRvbWljVmFsdWUoKnRoaXMpOworfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVu
Y2VSYW5nZSkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIG9wZXJhbmQt
PnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlLCBvcGVyYW5kLCBwb2lu
dGVyKQorICAgICwgbV93aWR0aCh3aWR0aCkKK3sKKyAgICBBU1NFUlQoYmVzdFR5cGUoR1AsIG9w
ZXJhdGlvbldpZHRoKCkpID09IG9wZXJhdGlvblR5cGUoKSk7CisgICAgCisgICAgc3dpdGNoIChr
aW5kLm9wY29kZSgpKSB7CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWlj
WGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6
CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2lu
LCBXaWR0aCB3aWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFs
dWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBm
ZW5jZVJhbmdlKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwga2luZC5v
cGNvZGUoKSA9PSBBdG9taWNXZWFrQ0FTID8gSW50MzIgOiBleHBlY3RlZFZhbHVlLT50eXBlKCks
IG9yaWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFs
dWUsIHBvaW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIEFTU0VSVChiZXN0VHlw
ZShHUCwgb3BlcmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKworICAgIHN3aXRj
aCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0
b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
KworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNBdG9taWNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5j
bHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgQXRvbWljVmFsdWUgOiBwdWJsaWMgTWVtb3J5VmFsdWUgewor
cHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGlzQXRvbWljKGtpbmQub3Bjb2RlKCkpOworICAgIH0KKyAgICAKKyAgICB+QXRv
bWljVmFsdWUoKTsKKyAgICAKKyAgICBUeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJldHVy
biBjaGlsZCgwKS0+dHlwZSgpOyB9CisgICAgCisgICAgV2lkdGggb3BlcmF0aW9uV2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgCisgICAgLy8gU3lub255bSBmb3Igb3BlcmF0
aW9uV2lkdGgoKSwgaWYgeW91J3JlIGFjY2Vzc2luZyB2aWEgTWVtb3J5VmFsdWUuCisgICAgV2lk
dGggYWNjZXNzV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2
b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgCisgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVl
KEtpbmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFw
UmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCkpOworICAgIAorICAgIEF0b21pY1Zh
bHVlKEtpbmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3
VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5n
ZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlOjp0
b3AoKSk7CisgICAgCisgICAgV2lkdGggbV93aWR0aDsKK307CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiAr
NDAsNyBAQCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKIGNsYXNzIEluc2VydGlvblNldDsKIGNs
YXNzIFByb2NlZHVyZTsKIGNsYXNzIFZhbHVlOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEdl
bmVyaWNCbG9ja0luc2VydGlvblNldDsKIAogY2xhc3MgQmFzaWNCbG9jayB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQmFzaWNCbG9jayk7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgZnJpZW5kIGNsYXNzIElu
c2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lPiBmcmllbmQgY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIAogICAg
IC8vIEluc3RhbnRpYXRlIHZpYSBQcm9jZWR1cmUuCiAgICAgQmFzaWNCbG9jayh1bnNpZ25lZCBp
bmRleCwgZG91YmxlIGZyZXF1ZW5jeSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzYsMzUgKzM2LDEzIEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogQmxv
Y2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSAmcHJvYykKLSAgICA6
IG1fcHJvYyhwcm9jKQorICAgIDogR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MubV9ibG9j
a3MpCisgICAgLCBtX3Byb2MocHJvYykKIHsKIH0KIAogQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9j
a0luc2VydGlvblNldCgpIHsgfQogCi12b2lkIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxv
Y2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCi17Ci0gICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZN
b3ZlKGluc2VydGlvbikpOwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5z
ZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHN0ZDo6dW5pcXVl
X3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgZnJlcXVlbmN5
KSk7Ci0gICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxvY2suZ2V0KCk7Ci0gICAgaW5zZXJ0KEJs
b2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRCZWZvcmUoQmFzaWNC
bG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHJldHVybiBpbnNlcnQoYmVm
b3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3Jl
LT5mcmVxdWVuY3koKSk7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNl
cnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1
cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZy
ZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7Ci19Ci0KIEJhc2ljQmxvY2sqIEJsb2NrSW5z
ZXJ0aW9uU2V0OjpzcGxpdEZvcndhcmQoCiAgICAgQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVk
JiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqIGluc2VydGlvblNldCwgZG91YmxlIGZyZXF1ZW5j
eSkKIHsKQEAgLTEwMiwzMiArODAsNiBAQCBCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6
c3BsaXRGb3J3CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBCbG9ja0luc2VydGlvblNl
dDo6ZXhlY3V0ZSgpCi17Ci0gICAgaWYgKG1faW5zZXJ0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBXZSBhbGxvdyBpbnNlcnRpb25zIHRvIGJlIGdp
dmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5lZWQgdG8gc29ydCB0aGVtIGJlZm9yZQot
ICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVy
IGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKLSAgICAvLyBmYXN0LCBzbyB3ZSB1
c2UgYnViYmxlIHNvcnQuCi0gICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9p
bnNlcnRpb25zLmVuZCgpKTsKLQotICAgIGV4ZWN1dGVJbnNlcnRpb25zKG1fcHJvYy5tX2Jsb2Nr
cywgbV9pbnNlcnRpb25zKTsKLSAgICAKLSAgICAvLyBQcnVuZSBvdXQgZW1wdHkgZW50cmllcy4g
VGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MKLSAgICAvLyBoZWFsdGh5IHRv
IGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgotICAgIG1fcHJvYy5tX2Jsb2Nrcy5y
ZW1vdmVBbGxNYXRjaGluZygKLSAgICAgICAgWyZdIChzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9j
az4mIGJsb2NrUHRyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiAhYmxvY2tQdHI7Ci0g
ICAgICAgIH0pOwotICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0
aGVpciBuZXcgaW5kaWNlcy4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9jLm1f
YmxvY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3Byb2MubV9ibG9ja3NbaV0tPm1faW5kZXgg
PSBpOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAi
QjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgog
I2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0z
NSwyNiArMzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIElu
c2VydGlvblNldDsKIAotdHlwZWRlZiBXVEY6Okluc2VydGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFz
aWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOwordHlwZWRlZiBHZW5lcmljQmxvY2tJbnNlcnRpb25T
ZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5zZXJ0aW9uOwogCi1jbGFzcyBC
bG9ja0luc2VydGlvblNldCB7CitjbGFzcyBCbG9ja0luc2VydGlvblNldCA6IHB1YmxpYyBHZW5l
cmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4gewogcHVibGljOgogICAgIEJsb2NrSW5z
ZXJ0aW9uU2V0KFByb2NlZHVyZSYpOwogICAgIH5CbG9ja0luc2VydGlvblNldCgpOwogICAgIAot
ICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYpOwotCi0gICAgLy8gSW5zZXJ0IGEgbmV3
IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0KHVuc2lnbmVk
IGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3
IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVzdWFsbHkgeW91IHdpbGwgbm90IHBhc3Mg
dGhlIGZyZXF1ZW5jeQotICAgIC8vIGFyZ3VtZW50LiBQYXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRv
IGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdiZWZvcmUnIGJsb2NrLiBUaGF0J3MKLSAg
ICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QmVmb3Jl
KEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8g
SW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxvY2suCi0gICAgQmFzaWNCbG9j
ayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFO
KTsKLQogICAgIC8vIEEgaGVscGVyIHRvIHNwbGl0IGEgYmxvY2sgd2hlbiBmb3J3YXJkIGl0ZXJh
dGluZyBvdmVyIGl0LiBJdCBjcmVhdGVzIGEgbmV3IGJsb2NrIHRvIGhvbGQKICAgICAvLyBldmVy
eXRoaW5nIGJlZm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYXQgdmFsdWVJbmRleC4gVGhlIGN1cnJlbnQg
YmxvY2sgaXMgbGVmdCB3aXRoCiAgICAgLy8gZXZlcnl0aGluZyBhdCBhbmQgYWZ0ZXIgdmFsdWVJ
bmRleC4gSWYgdGhlIG9wdGlvbmFsIEluc2VydGlvblNldCBpcyBwcm92aWRlZCwgaXQgd2lsbCBn
ZXQKQEAgLTgwLDEyICs2OCw5IEBAIHB1YmxpYzoKICAgICBCYXNpY0Jsb2NrKiBzcGxpdEZvcndh
cmQoCiAgICAgICAgIEJhc2ljQmxvY2sqLCB1bnNpZ25lZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9u
U2V0KiA9IG51bGxwdHIsCiAgICAgICAgIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLSAgICAK
LSAgICBib29sIGV4ZWN1dGUoKTsKIAogcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsK
LSAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKIH07CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZm
ZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Vm
ZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODIsNyArODIsOCBAQCBib29sIEVmZmVjdHM6
OmludGVyZmVyZXMoY29uc3QgRWZmZWN0cyYgCiAgICAgICAgIHx8IGludGVyZmVyZXNXaXRoV3Jp
dGVzUGlubmVkKG90aGVyLCAqdGhpcykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVy
LndyaXRlcykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLnJlYWRzKQotICAgICAg
ICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53cml0ZXMpOworICAgICAgICB8fCByZWFkcy5vdmVy
bGFwcyhvdGhlci53cml0ZXMpCisgICAgICAgIHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9
CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3I9PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QK
QEAgLTk1LDcgKzk2LDggQEAgYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMm
IAogICAgICAgICAmJiB3cml0ZXNQaW5uZWQgPT0gb3RoZXIud3JpdGVzUGlubmVkCiAgICAgICAg
ICYmIHJlYWRzUGlubmVkID09IG90aGVyLnJlYWRzUGlubmVkCiAgICAgICAgICYmIHdyaXRlcyA9
PSBvdGhlci53cml0ZXMKLSAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHM7CisgICAgICAg
ICYmIHJlYWRzID09IG90aGVyLnJlYWRzCisgICAgICAgICYmIGZlbmNlID09IG90aGVyLmZlbmNl
OwogfQogCiBib29sIEVmZmVjdHM6Om9wZXJhdG9yIT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNv
bnN0CkBAIC0xMjAsNiArMTIyLDggQEAgdm9pZCBFZmZlY3RzOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbgogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJXcml0ZXNQaW5uZWQiKTsKICAgICBp
ZiAocmVhZHNQaW5uZWQpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIlJlYWRzUGlubmVkIik7
CisgICAgaWYgKGZlbmNlKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJGZW5jZSIpOwogICAg
IGlmICh3cml0ZXMpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlczoiLCB3cml0ZXMp
OwogICAgIGlmIChyZWFkcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVj
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJ
KHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDYgKzcxLDEwIEBAIHN0cnVjdCBFZmZlY3RzIHsKICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTczCiAgICAg
Ym9vbCByZWFkc1Bpbm5lZCB7IGZhbHNlIH07CiAgICAgYm9vbCB3cml0ZXNQaW5uZWQgeyBmYWxz
ZSB9OworICAgIAorICAgIC8vIE1lbW9yeSBmZW5jZXMgY2Fubm90IGJlIHJlb3JkZXJlZCBhcm91
bmQgZWFjaCBvdGhlciByZWdhcmRsZXNzIG9mIHRoZWlyIGVmZmVjdHMuIFRoaXMgaXMgZmxhZ2dl
ZAorICAgIC8vIGlmIHRoZSBvcGVyYXRpb24gaXMgYSBtZW1vcnkgZmVuY2UuCisgICAgYm9vbCBm
ZW5jZSB7IGZhbHNlIH07CiAKICAgICBIZWFwUmFuZ2Ugd3JpdGVzOwogICAgIEhlYXBSYW5nZSBy
ZWFkczsKQEAgLTg5LDYgKzkzLDcgQEAgc3RydWN0IEVmZmVjdHMgewogICAgICAgICByZXN1bHQu
cmVhZHMgPSBIZWFwUmFuZ2U6OnRvcCgpOwogICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0
cnVlOwogICAgICAgICByZXN1bHQud3JpdGVzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0
LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEwMyw3
ICsxMDgsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAKICAgICBib29sIG11c3RFeGVjdXRlKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdy
aXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZDsKKyAgICAgICAgcmV0dXJu
IHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8fCB3cml0ZXMg
fHwgd3JpdGVzUGlubmVkIHx8IGZlbmNlOwogICAgIH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiByZW9yZGVyaW5nIGluc3RydWN0aW9ucyB3aXRoIHRoZXNlIHJlc3BlY3RpdmUgZWZmZWN0cyB3
b3VsZCBjaGFuZ2UgcHJvZ3JhbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxp
bWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkocmV2aXNp
b24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9u
U3ViZXhwcmVzc2lvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0Miw2ICsxNDIsNyBAQCBzdHJ1Y3Qg
SW1wdXJlQmxvY2tEYXRhIHsKIAogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gcmVhZHM7IC8vIFRo
aXMgb25seSBnZXRzIHVzZWQgZm9yIGZvcndhcmQgc3RvcmUgZWxpbWluYXRpb24uCiAgICAgUmFu
Z2VTZXQ8SGVhcFJhbmdlPiB3cml0ZXM7IC8vIFRoaXMgZ2V0cyB1c2VkIGZvciBib3RoIGxvYWQg
YW5kIHN0b3JlIGVsaW1pbmF0aW9uLgorICAgIGJvb2wgZmVuY2U7CiAKICAgICBNZW1vcnlWYWx1
ZU1hcCBzdG9yZXNBdEhlYWQ7CiAgICAgTWVtb3J5VmFsdWVNYXAgbWVtb3J5VmFsdWVzQXRUYWls
OwpAQCAtMTc0LDEyICsxNzUsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGlmIChtZW1vcnkgJiYgbWVtb3J5LT5pc1N0b3JlKCkKICAgICAgICAgICAgICAg
ICAgICAgJiYgIWRhdGEucmVhZHMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQotICAgICAgICAg
ICAgICAgICAgICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKSkKKyAg
ICAgICAgICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2Uo
KSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKCFkYXRhLmZlbmNlIHx8ICFtZW1vcnktPmhhc0Zl
bmNlKCkpKQogICAgICAgICAgICAgICAgICAgICBkYXRhLnN0b3Jlc0F0SGVhZC5hZGQobWVtb3J5
KTsKICAgICAgICAgICAgICAgICBkYXRhLnJlYWRzLmFkZChlZmZlY3RzLnJlYWRzKTsKIAogICAg
ICAgICAgICAgICAgIGlmIChIZWFwUmFuZ2Ugd3JpdGVzID0gZWZmZWN0cy53cml0ZXMpCiAgICAg
ICAgICAgICAgICAgICAgIGNsb2JiZXIoZGF0YSwgd3JpdGVzKTsKKyAgICAgICAgICAgICAgICBk
YXRhLmZlbmNlIHw9IGVmZmVjdHMuZmVuY2U7CiAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5
KQogICAgICAgICAgICAgICAgICAgICBkYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5hZGQobWVtb3J5
KTsKQEAgLTQ0NSw4ICs0NDgsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIGRhdGFMb2coIkJhZCBtZW1vcnkgdmFsdWU6ICIsIGRlZXBEdW1w
KG1fcHJvYywgbV92YWx1ZSksICJcbiIpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtNDc4
LDYgKzQ3OSw5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgogICAg
IGJvb2wgZmluZFN0b3JlQWZ0ZXJDbG9iYmVyKFZhbHVlKiBwdHIsIEhlYXBSYW5nZSByYW5nZSwg
Y29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAgeworICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVt
b3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIAogICAgICAgICAvLyBXZSBjYW4gZWxpbWluYXRlIGEgc3RvcmUgaWYgZXZlcnkgZm9yd2Fy
ZCBwYXRoIGhpdHMgYSBzdG9yZSB0byB0aGUgc2FtZSBsb2NhdGlvbiBiZWZvcmUKICAgICAgICAg
Ly8gaGl0dGluZyBhbnkgb3BlcmF0aW9uIHRoYXQgb2JzZXJ2ZXMgdGhlIHN0b3JlLiBUaGlzIHNl
YXJjaCBzZWVtcyBsaWtlIGl0IHNob3VsZCBiZQogICAgICAgICAvLyBleHBlbnNpdmUsIGJ1dCBp
biB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5IG9mIGNhc2VzIGl0IHdpbGwgYWxtb3N0IGltbWVk
aWF0ZWx5IGhpdCBhbiAKQEAgLTYxNCw2ICs2MTgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCptX3ZhbHVlLCAiOiBsb29raW5nIGJhY2t3
YXJkIGZvciAiLCAqcHRyLCAiLi4uXG4iKTsKICAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVl
LT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGZlbmNl
cy5cbiIpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICAKICAg
ICAgICAgaWYgKE1lbW9yeVZhbHVlKiBtYXRjaCA9IG1fZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwu
ZmluZChwdHIsIGZpbHRlcikpIHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBGb3VuZCAiLCAqbWF0Y2gsICIgbG9jYWxseS5cbiIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEzMjYx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtOTIsNiArOTIsNyBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9j
ZWR1cmUsCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTA1MDcKICAgICB9CiAKKyAgICAvLyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2Rl
LgogICAgIGxvd2VyTWFjcm9zKHByb2NlZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9u
U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiUHVyZU5hTi5o
IgorI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CisKK2NsYXNzIEluc2VydGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9j
az4KK2NsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBXVEY6Okluc2VydGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0
aW9uOworICAgIAorICAgIEdlbmVyaWNCbG9ja0luc2VydGlvblNldChWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJhc2ljQmxvY2s+PiYgYmxvY2tzKQorICAgICAgICA6IG1fYmxvY2tzKGJsb2NrcykK
KyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5z
ZXJ0aW9uKQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2Vy
dGlvbikpOworICAgIH0KKworICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGlu
ZGV4LgorICAgIEJhc2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1
ZW5jeSA9IFBOYU4pCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4g
YmxvY2sobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOworICAgICAgICBCYXNp
Y0Jsb2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsKKyAgICAgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0
aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4g
VXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5CisgICAgLy8gYXJndW1lbnQu
IFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUg
J2JlZm9yZScgYmxvY2suIFRoYXQncworICAgIC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KKyAg
ICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJl
cXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRl
eCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVu
Y3koKSk7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2
ZW4gYmxvY2suCisgICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIs
IGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChh
ZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBh
ZnRlci0+ZnJlcXVlbmN5KCkpOworICAgIH0KKworICAgIGJvb2wgZXhlY3V0ZSgpCisgICAgewor
ICAgICAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2
ZW4gdG8gdXMgaW4gYW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCisg
ICAgICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJl
ZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKKyAgICAgICAgLy8gZmFzdCwg
c28gd2UgdXNlIGJ1YmJsZSBzb3J0LgorICAgICAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5i
ZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOworICAgICAgICAKKyAgICAgICAgZXhlY3V0ZUlu
c2VydGlvbnMobV9ibG9ja3MsIG1faW5zZXJ0aW9ucyk7CisgICAgICAgIAorICAgICAgICAvLyBQ
cnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0
IGl0J3MKKyAgICAgICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jv
d2luZy4KKyAgICAgICAgbV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAgICBb
Jl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+IGJvb2wgeworICAg
ICAgICAgICAgICAgIHJldHVybiAhYmxvY2tQdHI7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5k
aWNlcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzLnNpemUoKTsg
KytpKQorICAgICAgICAgICAgbV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOworICAgICAgICAKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmxvY2tJbnNlcnRp
b24sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisj
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0hlYXBSYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hl
YXBSYW5nZS5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNIZWFwUmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdl
IG9wZXJhdG9yfChjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIEhlYXBSYW5nZSgKKyAgICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1f
YmVnaW4pLAorICAgICAgICAgICAgc3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAg
fQorICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2Jl
Z2luICE9IG1fZW5kOyB9CiAKICAgICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
YmVnaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0
LmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5z
ZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJ
bnNlcnRpb25TZXQ6Omluc2VydEJvdHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9t
KGluZGV4LCBsaWtlVmFsdWUtPm9yaWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1Zh
bHVlKiBJbnNlcnRpb25TZXQ6Omluc2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVl
KQoreworICAgIHJldHVybiBpbnNlcnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFs
dWUpKTsKK30KKwogdm9pZCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2sp
CiB7CiAgICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVu
ZCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShy
ZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25T
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogCiAgICAgVmFs
dWUqIGluc2VydEJvdHRvbShzaXplX3QgaW5kZXgsIE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUq
IGluc2VydEJvdHRvbShzaXplX3QgaW5kZXgsIFZhbHVlKik7CisgICAgCisgICAgVmFsdWUqIGlu
c2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqKTsKIAogICAgIHZvaWQgZXhlY3V0ZShCYXNp
Y0Jsb2NrKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jv
cy5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDExICsyOSwxMyBAQAogI2lmIEVO
QUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Uu
aCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0ND
YWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0Nhc2VDb2xsZWN0aW9uSW5saW5lcy5oIgogI2luY2x1
ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgorI2luY2x1ZGUgIkIzRmVuY2VWYWx1ZS5oIgogI2luY2x1
ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIK
ICNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgpAQCAtNDIsNiArNDQsNyBAQAogI2luY2x1
ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCisjaW5jbHVkZSAiQjNVc2VDb3VudHMu
aCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5o
IgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTU4LDExICs2MSwxNCBAQCBwdWJsaWM6CiAg
ICAgICAgIDogbV9wcm9jKHByb2MpCiAgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChwcm9j
KQogICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KHByb2MpCisgICAgICAgICwgbV91c2VDb3VudHMo
cHJvYykKICAgICB7CiAgICAgfQogCiAgICAgYm9vbCBydW4oKQogICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIW1fcHJvYy5oYXNRdWlya3MoKSk7CisgICAgICAgIAogICAgICAgICBmb3Ig
KEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxv
Y2s7CiAgICAgICAgICAgICBwcm9jZXNzQ3VycmVudEJsb2NrKCk7CkBAIC03Miw2ICs3OCwxMCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX3Byb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAg
ICAgICAgIG1fcHJvYy5pbnZhbGlkYXRlQ0ZHKCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgd2UndmUgCisgICAgICAgIG1fcHJvYy5zZXRIYXNR
dWlya3ModHJ1ZSk7CisgICAgICAgIAogICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwogICAgIH0K
ICAgICAKQEAgLTE4NSw3ICsxOTUsMTE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9j
aGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAg
ICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1s
b2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8g
dGVsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxv
YWQgbW90aW9uLgorICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAg
ICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1
bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAg
ICBtX3ZhbHVlLT5yZXBsYWNlV2l0aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgY2FzZSBB
dG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRv
bWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAg
ICAgICAgIFdpZHRoIHdpZHRoID0gYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgVmFsdWUqIGV4cGVjdGVkVmFsdWUgPSBhdG9taWMtPmNoaWxkKDApOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIC8vIE9uIEFSTSwgdGhlIGxvYWQgcGFydCBvZiB0aGUgQ0FT
IGRvZXMgYSBsb2FkIHdpdGggemVybyBleHRlbnNpb24uIFRoZXJlZm9yZSwgd2UgbmVlZAorICAg
ICAgICAgICAgICAgIC8vIHRvIHplcm8tZXh0ZW5kIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAg
ICBWYWx1ZSogbWFza2VkRXhwZWN0ZWRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1
ZT4oCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIGV4cGVj
dGVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENv
bnN0YW50KG1faW5kZXgsIGV4cGVjdGVkVmFsdWUsIG1hc2sod2lkdGgpKSk7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgYXRvbWljLT5jaGlsZCgwKSA9IG1hc2tlZEV4cGVjdGVk
VmFsdWU7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNh
c2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAg
ICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3Vi
OgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9t
aWNYY2hnOiB7CisgICAgICAgICAgICAgICAgLy8gT24gWDg2LCB0aGVzZSBtYXkgYWN0dWFsbHkg
cmV0dXJuIGdhcmJhZ2UgaW4gdGhlIGhpZ2ggYml0cy4gT24gQVJNNjQsIHRoZXNlIHNvcnRhCisg
ICAgICAgICAgICAgICAgLy8gemVyby1leHRlbmQgdGhlaXIgaGlnaCBiaXRzLCBleGNlcHQgdGhh
dCB0aGUgaGlnaCBiaXRzIG1pZ2h0IGdldCBwb2xsdXRlZCBieSBoaWdoCisgICAgICAgICAgICAg
ICAgLy8gYml0cyBpbiB0aGUgb3BlcmFuZC4gLiBTbywgZWl0aGVyIHdheSwgd2UgbmVlZCB0byB0
aHJvdyBhIHNpZ24tZXh0ZW5kIG9uIHRoZXNlCisgICAgICAgICAgICAgICAgLy8gdGhpbmdzLgor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5vcGNvZGUoKSA9PSBBdG9taWNYY2hnU3ViICYmIG1f
dXNlQ291bnRzLm51bVVzZXMobV92YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IE9uIHg4NiwgeGNoZ2FkZCBpcyBiZXR0ZXIgdGhhbiB4Y2hnc3ViIGlmIGl0IGhhcyBhbnkgdXNl
cnMuCisgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5zZXRPcGNvZGVVbnNhZmVseShB
dG9taWNYY2hnQWRkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDAp
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luZGV4LCBOZWcsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IGJvb2wgZXhlbXB0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobV92YWx1
ZS0+b3Bjb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgor
ICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBleGVtcHQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAoZXhlbXB0KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAg
ICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNDYW5vbmljYWxXaWR0aCh3aWR0aCkpCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgICAgIG1faW5kZXgsIHNpZ25FeHRlbmRPcGNvZGUod2lkdGgpLCBtX29yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRl
eCwgYXRvbWljKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+
cmVwbGFjZVdpdGhJZGVudGl0eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2Vk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICAgICAgY2FzZSBMb2Fk
MTZaOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBpZiAo
IW1lbW9yeS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gU3ViLXdpZHRoIGxvYWQtYWNxIG9uIEFSTTY0
IGFsd2F5cyBzaWduIGV4dGVuZHMuCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld0xvYWQgPSBt
X2luc2VydGlvblNldC5pbnNlcnRDbG9uZShtX2luZGV4LCBtZW1vcnkpOworICAgICAgICAgICAg
ICAgIG5ld0xvYWQtPnNldE9wY29kZVVuc2FmZWx5KG1lbW9yeS0+b3Bjb2RlKCkgPT0gTG9hZDha
ID8gTG9hZDhTIDogTG9hZDE2Uyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
VmFsdWUqIG5ld1ZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICAgICAgbV9pbmRleCwgQml0QW5kLCBtX29yaWdpbiwgbmV3TG9hZCwKKyAgICAgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4LCBtX29yaWdpbiwgSW50MzIsIG1hc2sobWVtb3J5LT5sb2Fk
U3RvcmVXaWR0aCgpKSkpOwogCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJ
ZGVudGl0eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CkBAIC00NzAsNiArNTkyLDcgQEAgcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKICAg
ICBCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIEluc2VydGlvblNl
dCBtX2luc2VydGlvblNldDsKKyAgICBVc2VDb3VudHMgbV91c2VDb3VudHM7CiAgICAgQmFzaWNC
bG9jayogbV9ibG9jazsKICAgICB1bnNpZ25lZCBtX2luZGV4OwogICAgIFZhbHVlKiBtX3ZhbHVl
OwpAQCAtNDc3LDIxICs2MDAsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hhbmdlZCB7IGZh
bHNlIH07CiB9OwogCi1ib29sIGxvd2VyTWFjcm9zSW1wbChQcm9jZWR1cmUmIHByb2MpCi17Ci0g
ICAgTG93ZXJNYWNyb3MgbG93ZXJNYWNyb3MocHJvYyk7Ci0gICAgcmV0dXJuIGxvd2VyTWFjcm9z
LnJ1bigpOwotfQotCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogYm9vbCBsb3dlck1hY3Jv
cyhQcm9jZWR1cmUmIHByb2MpCiB7Ci0gICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHByb2MsICJs
b3dlck1hY3JvcyIpOwotICAgIGJvb2wgcmVzdWx0ID0gbG93ZXJNYWNyb3NJbXBsKHByb2MpOwot
ICAgIGlmIChzaG91bGRWYWxpZGF0ZUlSKCkpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsb3dl
ck1hY3Jvc0ltcGwocHJvYykpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgTG93ZXJNYWNyb3Mg
bG93ZXJNYWNyb3MocHJvYyk7CisgICAgcmV0dXJuIGxvd2VyTWFjcm9zLnJ1bigpOwogfQogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHJl
dmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9z
QWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1NiwxNSArMTU2LDE0
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFJvdEw6IHsKICAgICAgICAgICAgICAgICAv
LyBBUk02NCBkb2Vzbid0IGhhdmUgYSByb3RhdGUgbGVmdC4KICAgICAgICAgICAgICAgICBpZiAo
aXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlmdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQo
MSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90UiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFs
dWUtPmNoaWxkKDApLCBuZXdTaGlmdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVl
LT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBWYWx1ZSog
bmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92
YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAg
VmFsdWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90
UiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLCBuZXdTaGlmdCk7CisgICAg
ICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocm90YXRlKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCShyZXZpc2lvbiAyMTMyNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsMTIgKzI4LDE0IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVk
ZSAiQWlyQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJBaXJDQ2FsbFNwZWNpYWwuaCIK
ICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWlySW5zZXJ0aW9uU2V0LmgiCiAjaW5j
bHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNsdWRlICJBaXJTdGFja1Nsb3QuaCIKICNpbmNs
dWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAj
aW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tXb3JrbGlz
dC5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpAQCAtNzIsNiArNzQsMTYgQEAgbmFtZXNw
YWNlIHsKIAogY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKKy8vIEZJWE1FOiBXZSB3b3Vs
ZG4ndCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRlZCBXaWR0aCBtb2RpZmllcnMgaW4gQWlyOjpL
aW5kLgorLy8gT09QUyEhISAobmVlZCBhIGJ1ZyBVUkwpCisjZGVmaW5lIE9QQ09ERV9GT1JfV0lE
VEgob3Bjb2RlLCB3aWR0aCkgKCBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDggPyBvcGNvZGUgIyMg
OCA6IFwKKyAgICAod2lkdGgpID09IFdpZHRoMTYgPyBvcGNvZGUgIyMgMTYgOiBcCisgICAgKHdp
ZHRoKSA9PSBXaWR0aDMyID8gb3Bjb2RlICMjIDMyIDogXAorICAgIG9wY29kZSAjIyA2NCkKKyNk
ZWZpbmUgT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgob3Bjb2RlLCB3aWR0aCkgKCBcCisgICAg
KHdpZHRoKSA9PSBXaWR0aDY0ID8gb3Bjb2RlICMjIDY0IDogb3Bjb2RlICMjIDMyKQorCiBjbGFz
cyBMb3dlclRvQWlyIHsKIHB1YmxpYzoKICAgICBMb3dlclRvQWlyKFByb2NlZHVyZSYgcHJvY2Vk
dXJlKQpAQCAtODMsNiArOTUsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fZG9taW5hdG9ycyhw
cm9jZWR1cmUuZG9taW5hdG9ycygpKQogICAgICAgICAsIG1fcHJvY2VkdXJlKHByb2NlZHVyZSkK
ICAgICAgICAgLCBtX2NvZGUocHJvY2VkdXJlLmNvZGUoKSkKKyAgICAgICAgLCBtX2Jsb2NrSW5z
ZXJ0aW9uU2V0KG1fY29kZSkKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgICAgICAs
IG1fZWF4KFg4NlJlZ2lzdGVyczo6ZWF4KQorICAgICAgICAsIG1fZWN4KFg4NlJlZ2lzdGVyczo6
ZWN4KQorICAgICAgICAsIG1fZWR4KFg4NlJlZ2lzdGVyczo6ZWR4KQorI2VuZGlmCiAgICAgewog
ICAgIH0KIApAQCAtMTI0LDE0ICsxNDIsMTggQEAgcHVibGljOgogICAgICAgICAvLyBob2lzdGVk
IGFkZHJlc3MgZXhwcmVzc2lvbiBiZWZvcmUgd2UgZHVwbGljYXRlIGl0IGJhY2sgaW50byB0aGUg
bG9vcC4KICAgICAgICAgZm9yIChCMzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2NlZHVyZS5i
bG9ja3NJblByZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKLSAgICAg
ICAgICAgIC8vIFJlc2V0IHNvbWUgc3RhdGUuCi0gICAgICAgICAgICBtX2luc3RzLnJlc2l6ZSgw
KTsKIAogICAgICAgICAgICAgbV9pc1JhcmUgPSAhbV9mYXN0V29ya2xpc3Quc2F3KGJsb2NrKTsK
IAogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG93
ZXJpbmcgQmxvY2sgIiwgKmJsb2NrLCAiOlxuIik7CiAgICAgICAgICAgICAKKyAgICAgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQgdXAgY29ycmVjdGx5Lgor
ICAgICAgICAgICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5z
dWNjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPnN1
Y2Nlc3NvcnMoKS5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJs
b2NrKG1fYmxvY2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygpXSwgc3VjY2Vzc29yLmZyZXF1ZW5j
eSgpKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIFByb2Nlc3MgYmxvY2tzIGlu
IHJldmVyc2Ugb3JkZXIgc28gd2Ugc2VlIHVzZXMgYmVmb3JlIGRlZnMuIFRoYXQncyB3aGF0IGFs
bG93cyB1cwogICAgICAgICAgICAgLy8gdG8gbWF0Y2ggcGF0dGVybnMgZWZmZWN0aXZlbHkuCiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+c2l6ZSgpOyBpLS07KSB7CkBAIC0x
NDksMTkgKzE3MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICAvLyBOb3cgYXBwZW5kIHRoZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMg
Y29udGFpbnMgdGhlbSBpbiByZXZlcnNlIG9yZGVyLCBzbyB3ZSBwcm9jZXNzCi0gICAgICAgICAg
ICAvLyBpdCBpbiByZXZlcnNlLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbnN0
cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX2lu
c3RzW2ldKQotICAgICAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPmFwcGVu
ZEluc3QoV1RGTW92ZShpbnN0KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQgdXAgY29ycmVjdGx5LgotICAgICAg
ICAgICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNz
b3JzKCkpIHsKLSAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPnN1Y2Nlc3Nv
cnMoKS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrKG1f
YmxvY2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygpXSwgc3VjY2Vzc29yLmZyZXF1ZW5jeSgpKSk7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMo
bV9ibG9ja1RvQmxvY2tbYmxvY2tdKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9i
bG9ja0luc2VydGlvblNldC5leGVjdXRlKCk7CiAKICAgICAgICAgQWlyOjpJbnNlcnRpb25TZXQg
aW5zZXJ0aW9uU2V0KG1fY29kZSk7CiAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1fcHJvbG9n
dWUpCkBAIC01NjIsMTEgKzU3NSwxOSBAQCBwcml2YXRlOgogICAgIAogICAgIEFyZ1Byb21pc2Ug
bG9hZFByb21pc2VBbnlPcGNvZGUoVmFsdWUqIGxvYWRWYWx1ZSkKICAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGxvYWRWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOwogICAgICAgICBpZiAo
IWNhbkJlSW50ZXJuYWwobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKICAg
ICAgICAgaWYgKGNyb3NzZXNJbnRlcmZlcmVuY2UobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJl
dHVybiBBcmcoKTsKLSAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQoYWRkcihsb2FkVmFsdWUpLCBs
b2FkVmFsdWUpOworICAgICAgICAvLyBPbiB4ODYsIGFsbCBsb2FkcyBoYXZlIGZlbmNlcy4gRG9p
bmcgdGhpcyBraW5kIG9mIGluc3RydWN0aW9uIHNlbGVjdGlvbiB3aWxsIG1vdmUgdGhlIGxvYWQs
CisgICAgICAgIC8vIGJ1dCB0aGF0J3MgZmluZSBiZWNhdXNlIG91ciBpbnRlcmZlcmVuY2UgYW5h
bHlzaXMgc3RvcHMgdGhlIG1vdGlvbiBvZiBmZW5jZXMgYXJvdW5kIG90aGVyCisgICAgICAgIC8v
IGZlbmNlcy4gU28sIGFueSBsb2FkIG1vdGlvbiB3ZSBpbnRyb2R1Y2UgaGVyZSB3b3VsZCBub3Qg
YmUgb2JzZXJ2YWJsZS4KKyAgICAgICAgaWYgKCFpc1g4NigpICYmIGxvYWRWYWx1ZS0+YXM8TWVt
b3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnKCk7CisgICAg
ICAgIEFyZyBsb2FkQWRkciA9IGFkZHIobG9hZFZhbHVlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQobG9hZEFkZHIpOworICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChsb2FkQWRkciwgbG9hZFZh
bHVlKTsKICAgICAgICAgaWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkKICAgICAgICAgICAgIHJlc3Vs
dC5zZXRUcmFwcyh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTg5OCwxMSArOTE5
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0jaWYgQ1BV
KFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICAgICAgYXBwZW5kKE1vdmUsIHRtcCh2YWx1ZSksIHRt
cChtX3ZhbHVlKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1vdW50KSwgVG1wKFg4NlJl
Z2lzdGVyczo6ZWN4KSk7Ci0gICAgICAgIGFwcGVuZChvcGNvZGUsIFRtcChYODZSZWdpc3RlcnM6
OmVjeCksIHRtcChtX3ZhbHVlKSk7Ci0jZW5kaWYKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChh
bW91bnQpLCBtX2VjeCk7CisgICAgICAgIGFwcGVuZChvcGNvZGUsIG1fZWN4LCB0bXAobV92YWx1
ZSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9w
Y29kZSBvcGNvZGU2ND4KQEAgLTkzMSwxMCArOTUwLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIEFp
cjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQ29tbXV0YXRpdml0eSBj
b21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmU+CiAgICAgYm9vbCB0cnlBcHBlbmRTdG9yZUJp
bk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKSk7CisgICAgICAgIAogICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgbGVm
dC0+dHlwZSgpKTsKICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6Ok9vcHMpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAorICAgICAgICAvLyBPbiB4ODYsIGFsbCBzdG9yZXMg
aGF2ZSBmZW5jZXMsIGFuZCB0aGlzIGlzbid0IHJlb3JkZXJpbmcgdGhlIHN0b3JlIGl0c2VsZi4K
KyAgICAgICAgaWYgKCFpc1g4NigpICYmIG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNG
ZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICAgICAgQXJn
IHN0b3JlQWRkciA9IGFkZHIobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVChzdG9yZUFkZHIpOwog
CkBAIC05OTQsMTEgKzEwMTksNTAgQEAgcHJpdmF0ZToKIAogICAgICAgICByZXR1cm4gSW5zdCht
b3ZlLCBtX3ZhbHVlLCB0bXAodmFsdWUpLCBkZXN0KTsKICAgICB9CisgICAgCisgICAgQWlyOjpP
cGNvZGUgc3RvcmVPcGNvZGUoV2lkdGggd2lkdGgsIEJhbmsgYmFuaywgYm9vbCByZWxlYXNlKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoICh3aWR0aCkgeworICAgICAgICBjYXNlIFdpZHRoODoKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0dXJu
IHJlbGVhc2UgPyBTdG9yZVJlbDggOiBBaXI6OlN0b3JlODsKKyAgICAgICAgY2FzZSBXaWR0aDE2
OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICBy
ZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMTYgOiBBaXI6OlN0b3JlMTY7CisgICAgICAgIGNhc2Ug
V2lkdGgzMjoKKyAgICAgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBH
UDoKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMzIgOiBNb3ZlMzI7
CisgICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFy
ZWxlYXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGlzNjRCaXQoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsK
KyAgICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBT
dG9yZVJlbDY0IDogTW92ZTsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91
YmxlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpP
cGNvZGUgc3RvcmVPcGNvZGUoVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgTWVtb3J5VmFs
dWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQobWVtb3J5LT5pc1N0b3JlKCkpOworICAgICAgICByZXR1cm4gc3RvcmVPcGNvZGUobWVt
b3J5LT5sb2FkU3RvcmVXaWR0aCgpLCBtZW1vcnktPmFjY2Vzc0JhbmsoKSwgbWVtb3J5LT5oYXNG
ZW5jZSgpKTsKKyAgICB9CiAKICAgICBJbnN0IGNyZWF0ZVN0b3JlKFZhbHVlKiB2YWx1ZSwgY29u
c3QgQXJnJiBkZXN0KQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IG1v
dmVGb3JUeXBlKHZhbHVlLT50eXBlKCkpOwotICAgICAgICByZXR1cm4gY3JlYXRlU3RvcmUobW92
ZU9wY29kZSwgdmFsdWUsIGRlc3QpOworICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0g
c3RvcmVPcGNvZGUodmFsdWUpOworICAgICAgICByZXR1cm4gY3JlYXRlU3RvcmUobW92ZU9wY29k
ZSwgdmFsdWUtPmNoaWxkKDApLCBkZXN0KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmdzPgpAQCAtMTAwNiw3ICsxMDcwLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgY3JlYXRlU3RvcmUoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSkpOwogICAgIH0KLQorICAgIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVGb3JU
eXBlKFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTA3Myw3
ICsxMTM3LDQxIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBl
bmQoaW5zdCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rp
b25zKEFpcjo6QmFzaWNCbG9jayogdGFyZ2V0KQorICAgIHsKKyAgICAgICAgLy8gTm93IGFwcGVu
ZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRl
ciwgc28gd2UgcHJvY2VzcworICAgICAgICAvLyBpdCBpbiByZXZlcnNlLgorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2luc3RzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgZm9yIChJ
bnN0JiBpbnN0IDogbV9pbnN0c1tpXSkKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmFwcGVuZElu
c3QoV1RGTW92ZShpbnN0KSk7CisgICAgICAgIH0KKyAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7
CisgICAgfQorICAgIAorICAgIEFpcjo6QmFzaWNCbG9jayogbmV3QmxvY2soKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QWZ0ZXIobV9ibG9ja1RvQmxv
Y2tbbV9ibG9ja10pOworICAgIH0KIAorICAgIC8vIE5PVEU6IFRoaXMgd2lsbCBjcmVhdGUgYSBj
b250aW51YXRpb24gYmxvY2sgKGBuZXh0QmxvY2tgKSAqYWZ0ZXIqIGFueSBibG9ja3MgeW91J3Zl
IGNyZWF0ZWQgdXNpbmcKKyAgICAvLyBuZXdCbG9jaygpLiBTbywgaXQncyBwcmVmZXJhYmxlIHRv
IGNyZWF0ZSBhbGwgb2YgeW91ciBibG9ja3MgdXBmcm9udCB1c2luZyBuZXdCbG9jaygpLiBBbHNv
IG5vdGUKKyAgICAvLyB0aGF0IGFueSBjb2RlIHlvdSBlbWl0IGJlZm9yZSB0aGlzIHdpbGwgYmUg
cHJlcGVuZGVkIHRvIHRoZSBjb250aW51YXRpb24sIGFuZCBhbnkgY29kZSB5b3UgZW1pdAorICAg
IC8vIGFmdGVyIHRoaXMgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgcHJldmlvdXMgYmxvY2suCisg
ICAgdm9pZCBzcGxpdEJsb2NrKEFpcjo6QmFzaWNCbG9jayomIHByZXZpb3VzQmxvY2ssIEFpcjo6
QmFzaWNCbG9jayomIG5leHRCbG9jaykKKyAgICB7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayog
YmxvY2sgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXTsKKyAgICAgICAgCisgICAgICAgIHByZXZp
b3VzQmxvY2sgPSBibG9jazsKKyAgICAgICAgbmV4dEJsb2NrID0gbV9ibG9ja0luc2VydGlvblNl
dC5pbnNlcnRBZnRlcihibG9jayk7CisgICAgICAgIAorICAgICAgICBmaW5pc2hBcHBlbmRpbmdJ
bnN0cnVjdGlvbnMobmV4dEJsb2NrKTsKKyAgICAgICAgbmV4dEJsb2NrLT5zdWNjZXNzb3JzKCkg
PSBibG9jay0+c3VjY2Vzc29ycygpOworICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpLmNsZWFy
KCk7CisgICAgICAgIAorICAgICAgICBtX2luc3RzLmFwcGVuZChWZWN0b3I8SW5zdD4oKSk7Cisg
ICAgfQorICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50
cz4KICAgICBUKiBlbnN1cmVTcGVjaWFsKFQqJiBmaWVsZCwgQXJndW1lbnRzJiYuLi4gYXJndW1l
bnRzKQogICAgIHsKQEAgLTExMjMsNyArMTIyMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZhbHVlUmVwOjpTdGFja0FyZ3VtZW50OgogICAg
ICAgICAgICAgICAgIGFyZyA9IEFyZzo6Y2FsbEFyZyh2YWx1ZS5yZXAoKS5vZmZzZXRGcm9tU1Ao
KSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWUudmFsdWUoKSwgYXJnKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRTdG9yZShtb3ZlRm9yVHlwZSh2YWx1ZS52YWx1ZSgpLT50eXBl
KCkpLCB2YWx1ZS52YWx1ZSgpLCBhcmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTk2MSw2ICsyMDU5LDMwOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZFg4NkRpdihCMzo6T3Bjb2RlIG9wKQorICAgIHsK
KyAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKKyAgICAgICAgQWlyOjpP
cGNvZGUgZGl2OworICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgeworICAgICAgICBj
YXNlIEludDMyOgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRU
b0RvdWJsZVdvcmQzMjsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgSW50NjQ6CisgICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVX
b3JkID0gWDg2Q29udmVydFRvUXVhZFdvcmQ2NDsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjY0
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOworICAgICAgICBUbXAg
cmVzdWx0ID0gb3AgPT0gRGl2ID8gbV9lYXggOiBtX2VkeDsKKworICAgICAgICBhcHBlbmQoTW92
ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgbV9lYXgpOworICAgICAgICBhcHBlbmQoY29udmVy
dFRvRG91YmxlV29yZCwgbV9lYXgsIG1fZWR4KTsKKyAgICAgICAgYXBwZW5kKGRpdiwgbV9lYXgs
IG1fZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJl
c3VsdCwgdG1wKG1fdmFsdWUpKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFg4NlVEaXYoQjM6
Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFpcjo6T3Bjb2RlIGRpdiA9IG1fdmFsdWUtPnR5
cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsKKworICAgICAgICBBU1NFUlQo
b3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKKyAgICAgICAgVG1wIHJlc3VsdCA9IG9wID09IFVE
aXYgPyBtX2VheCA6IG1fZWR4OworCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+
Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgIGFwcGVuZChYb3I2NCwgbV9lZHgsIG1fZWR4KTsK
KyAgICAgICAgYXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkp
KTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwgdG1wKG1fdmFsdWUpKTsKKyAgICB9Cisg
ICAgCisgICAgQWlyOjpPcGNvZGUgbG9hZExpbmtPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVu
Y2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKExvYWRM
aW5rQWNxLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKExvYWRMaW5rLCB3aWR0aCk7CisgICAg
fQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlQ29uZE9wY29kZShXaWR0aCB3aWR0aCwgYm9v
bCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmZW5jZSA/IE9QQ09ERV9GT1JfV0lEVEgo
U3RvcmVDb25kUmVsLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZCwgd2lkdGgp
OworICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIGNhbiBlbWl0IGNvZGUgZm9yIHRoZSBmb2xsb3dp
bmcgcGF0dGVybnM6CisgICAgLy8gQXRvbWljV2Vha0NBUworICAgIC8vIEJpdFhvcihBdG9taWNX
ZWFrQ0FTLCAxKQorICAgIC8vIEF0b21pY1N0cm9uZ0NBUworICAgIC8vIEVxdWFsKEF0b21pY1N0
cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gTm90RXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBl
Y3RlZCkKKyAgICAvLyBCcmFuY2goQXRvbWljV2Vha0NBUykKKyAgICAvLyBCcmFuY2goRXF1YWwo
QXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAgLy8gQnJhbmNoKE5vdEVxdWFsKEF0b21p
Y1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vCisgICAgLy8gSXQgYXNzdW1lcyB0aGF0IGF0
b21pY1ZhbHVlIHBvaW50cyB0byB0aGUgQ0FTLCBhbmQgbV92YWx1ZSBwb2ludHMgdG8gdGhlIGlu
c3RydWN0aW9uIGJlaW5nCisgICAgLy8gZ2VuZXJhdGVkLiBJdCBhc3N1bWVzIHRoYXQgeW91J3Zl
IGNvbnN1bWVkIGV2ZXJ5dGhpbmcgdGhhdCBuZWVkcyB0byBiZSBjb25zdW1lZC4KKyAgICB2b2lk
IGFwcGVuZENBUyhWYWx1ZSogYXRvbWljVmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHsKKyAgICAg
ICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IGF0b21pY1ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXRvbWljKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wg
aXNCcmFuY2ggPSBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBCcmFuY2g7CisgICAgICAgIGJvb2wgaXNT
dHJvbmcgPSBhdG9taWMtPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUzsKKyAgICAgICAgYm9v
bCByZXR1cm5zT2xkVmFsdWUgPSBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVM7
CisgICAgICAgIAorICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgo
KTsKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisKKyAgICAgICAgVG1wIHZh
bHVlUmVzdWx0VG1wOworICAgICAgICBUbXAgYm9vbFJlc3VsdFRtcDsKKyAgICAgICAgaWYgKHJl
dHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWludmVydCk7Cisg
ICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgICAgIGJv
b2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0Jy
YW5jaCkgeworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsK
KyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7
CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBUbXAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXA7CisgICAgICAgIGlmIChp
c1N0cm9uZyAmJiAhaXNCcmFuY2gpCisgICAgICAgICAgICBzdWNjZXNzQm9vbFJlc3VsdFRtcCA9
IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWNjZXNzQm9v
bFJlc3VsdFRtcCA9IGJvb2xSZXN1bHRUbXA7CisKKyAgICAgICAgVG1wIGV4cGVjdGVkVmFsdWVU
bXAgPSB0bXAoYXRvbWljLT5jaGlsZCgwKSk7CisgICAgICAgIFRtcCBuZXdWYWx1ZVRtcCA9IHRt
cChhdG9taWMtPmNoaWxkKDEpKTsKKyAgICAgICAgCisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJs
b2NrIHN1Y2Nlc3M7CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIGZhaWx1cmU7CisgICAg
ICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgc3VjY2VzcyA9IG1fYmxvY2tUb0Jsb2Nr
W21fYmxvY2tdLT5zdWNjZXNzb3IoaW52ZXJ0KTsKKyAgICAgICAgICAgIGZhaWx1cmUgPSBtX2Js
b2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29yKCFpbnZlcnQpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRN
b3ZlRm9yVHlwZShhdG9taWMtPm9wZXJhdGlvblR5cGUoKSksIGltbU9yVG1wKGF0b21pYy0+Y2hp
bGQoMCkpLCBtX2VheCk7CisgICAgICAgICAgICBpZiAocmV0dXJuc09sZFZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FTLCB3aWR0
aCksIG1fZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgYXBwZW5k
KHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPm9wZXJhdGlvblR5cGUoKSksIG1fZWF4LCB2YWx1
ZVJlc3VsdFRtcCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnJhbmNoKSB7CisgICAgICAg
ICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNoQXRvbWljU3Ryb25nQ0FTLCB3
aWR0aCksIEFyZzo6c3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCBu
ZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbbV9i
bG9ja10tPnNldFN1Y2Nlc3NvcnMoc3VjY2VzcywgZmFpbHVyZSk7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdHJvbmdD
QVMsIHdpZHRoKSwgQXJnOjpzdGF0dXNDb25kKGludmVydCA/IE1hY3JvQXNzZW1ibGVyOjpGYWls
dXJlIDogTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgdG1wKGF0b21pYy0+Y2hpbGQo
MSkpLCBhZGRyZXNzLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAg
ICAgLy8gV2Ugd2lzaCB0byBlbWl0OgorICAgICAgICAvLworICAgICAgICAvLyBCbG9jayAjcmVs
b29wOgorICAgICAgICAvLyAgICAgTG9hZExpbmsKKyAgICAgICAgLy8gICAgIEJyYW5jaCBOb3RF
cXVhbAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRoZW46I2ZhaWwsIEVsc2U6ICNzdG9yZQor
ICAgICAgICAvLyBCbG9jayAjc3RvcmU6CisgICAgICAgIC8vICAgICBTdG9yZUNvbmQKKyAgICAg
ICAgLy8gICAgIFhvciAkMSwgJXJlc3VsdCAgICA8LS0tIG9ubHkgaWYgIWludmVydAorICAgICAg
ICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8v
IEJsb2NrICNmYWlsOgorICAgICAgICAvLyAgICAgTW92ZSAkaW52ZXJ0LCAlcmVzdWx0CisgICAg
ICAgIC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAgICAgICAg
Ly8gQmxvY2sgI2RvbmU6CisgICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9v
cEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdG9yZUJsb2Nr
ID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdWNjZXNzQmxvY2sgPSBu
dWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoICYmIGlzU3Ryb25nKQorICAgICAgICAgICAg
c3VjY2Vzc0Jsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBmYWls
QmxvY2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoKQorICAgICAgICAgICAgZmFp
bEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdHJvbmdGYWls
QmxvY2s7CisgICAgICAgIGlmIChpc1N0cm9uZykKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9j
ayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIGNvbXBhcmlzb25G
YWlsOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayB3ZWFrRmFpbDsKKyAgICAgICAgaWYg
KGlzU3Ryb25nKSB7CisgICAgICAgICAgICBjb21wYXJpc29uRmFpbCA9IHN0cm9uZ0ZhaWxCbG9j
azsKKyAgICAgICAgICAgIHdlYWtGYWlsID0gcmVsb29wQmxvY2s7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAoaXNCcmFuY2gpCisgICAgICAgICAgICAgICAgY29tcGFyaXNvbkZh
aWwgPSBmYWlsdXJlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbXBhcmlz
b25GYWlsID0gZmFpbEJsb2NrOworICAgICAgICAgICAgd2Vha0ZhaWwgPSBmYWlsdXJlOworICAg
ICAgICB9CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWly
OjpCYXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywg
ZG9uZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChBaXI6Okp1bXApOworICAgICAg
ICBiZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAg
ICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQobG9hZExpbmtPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFz
RmVuY2UoKSksIG1fdmFsdWUsIGFkZHJlc3MsIHZhbHVlUmVzdWx0VG1wKTsKKyAgICAgICAgcmVs
b29wQmxvY2stPmFwcGVuZChPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChCcmFuY2gsIHdpZHRo
KSwgbV92YWx1ZSwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCksIHZhbHVl
UmVzdWx0VG1wLCBleHBlY3RlZFZhbHVlVG1wKTsKKyAgICAgICAgcmVsb29wQmxvY2stPnNldFN1
Y2Nlc3NvcnMoY29tcGFyaXNvbkZhaWwsIHN0b3JlQmxvY2spOworICAgICAgICAKKyAgICAgICAg
c3RvcmVCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5j
ZSgpKSwgbV92YWx1ZSwgbmV3VmFsdWVUbXAsIGFkZHJlc3MsIHN1Y2Nlc3NCb29sUmVzdWx0VG1w
KTsKKyAgICAgICAgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBl
bmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8pLCBib29sUmVzdWx0VG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICAgICAgc3RvcmVC
bG9jay0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCB3ZWFrRmFpbCk7CisgICAgICAgICAgICBkb25l
QmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IWRvbmVCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGRvbmVCbG9jay0+YXBwZW5kKEFpcjo6
T29wcywgbV92YWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNTdHJv
bmcpIHsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBt
X3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBzdWNjZXNzQm9vbFJl
c3VsdFRtcCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5z
ZXRTdWNjZXNzb3JzKHN1Y2Nlc3NCbG9jaywgcmVsb29wQmxvY2spOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+YXBwZW5kKE1vdmUsIG1fdmFsdWUsIEFy
Zzo6aW1tKCFpbnZlcnQpLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNz
QmxvY2stPmFwcGVuZChBaXI6Okp1bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN1Y2Nl
c3NCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZiAoIWludmVydCkKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVC
bG9jay0+YXBwZW5kKFhvcjMyLCBtX3ZhbHVlLCBBcmc6OmJpdEltbSgxKSwgYm9vbFJlc3VsdFRt
cCwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3Rv
cmVCbG9jay0+YXBwZW5kKEFpcjo6SnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3Rv
cmVCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBmYWlsQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6
OmltbShpbnZlcnQpLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBw
ZW5kKEFpcjo6SnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICBmYWlsQmxvY2stPnNldFN1Y2Nl
c3NvcnMoZG9uZUJsb2NrKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzU3Ry
b25nKSB7CisgICAgICAgICAgICBUbXAgdG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAg
ICAgICBzdHJvbmdGYWlsQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21p
Yy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIHZhbHVlUmVzdWx0VG1wLCBhZGRyZXNzLCB0bXApOwor
ICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVl
LCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCB0bXAsIEFyZzo6Yml0SW1tKC0x
KSk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZmFpbEJsb2Nr
LCByZWxvb3BCbG9jayk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgYm9vbCBhcHBlbmRW
b2lkQXRvbWljKEFpcjo6T3Bjb2RlIGF0b21pY09wY29kZSkKKyAgICB7CisgICAgICAgIGlmICht
X3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKG1fdmFsdWUpOworICAgICAgICAK
KyAgICAgICAgaWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwgQXJnOjpJbW0sIGFkZHJlc3Mu
a2luZCgpKSAmJiBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICBhcHBlbmQo
YXRvbWljT3Bjb2RlLCBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRyZXNzKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNWYWxp
ZEZvcm0oYXRvbWljT3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAg
ICAgICBhcHBlbmQoYXRvbWljT3Bjb2RlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRyZXNz
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhcHBlbmRHZW5lcmFsQXRvbWlj
KEFpcjo6T3Bjb2RlIG9wY29kZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgCisgICAgICAgIEFyZyBhZGRy
ZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgVG1wIG9sZFZhbHVlID0gbV9jb2RlLm5ld1Rt
cChHUCk7CisgICAgICAgIFRtcCBuZXdWYWx1ZSA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAg
ICAKKyAgICAgICAgLy8gV2UgbmVlZCBhIENBUyBsb29wIG9yIGEgTEwvU0MgbG9vcC4gVXNpbmcg
cHJlcGFyZS9hdHRlbXB0IGphcmdvbiwgd2Ugd2FudDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8g
QmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIFByZXBhcmUKKyAgICAgICAgLy8gICAgIG9w
Y29kZQorICAgICAgICAvLyAgICAgQXR0ZW1wdAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRo
ZW46I2RvbmUsIEVsc2U6I3JlbG9vcAorICAgICAgICAvLyBCbG9jayAjZG9uZToKKyAgICAgICAg
Ly8gICAgIE1vdmUgb2xkVmFsdWUsIHJlc3VsdAorICAgICAgICAKKyAgICAgICAgYXBwZW5kKHJl
bGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG9sZFZhbHVlLCB0bXAoYXRvbWljKSk7
CisgICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9vcEJsb2NrID0gbmV3Qmxv
Y2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOworICAgICAgICBBaXI6
OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhiZWdpbkJsb2NrLCBk
b25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFpcjo6SnVtcCk7CisgICAgICAg
IGJlZ2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAgICAKKyAgICAg
ICAgQWlyOjpPcGNvZGUgcHJlcGFyZU9wY29kZTsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSB7CisgICAgICAgICAg
ICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDhTaWdu
ZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBX
aWR0aDE2OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkMTZTaWduZWRFeHRl
bmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDMy
OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlMzI7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICAgICAgcHJl
cGFyZU9wY29kZSA9IE1vdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkp
OworICAgICAgICAgICAgb3Bjb2RlID0gbG9hZExpbmtPcGNvZGUoYXRvbWljLT5vcGVyYXRpb25X
aWR0aCgpLCBhdG9taWMtPmhhc0ZlbmNlKCkpOworICAgICAgICB9CisgICAgICAgIHJlbG9vcEJs
b2NrLT5hcHBlbmQocHJlcGFyZU9wY29kZSwgbV92YWx1ZSwgYWRkcmVzcywgb2xkVmFsdWUpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKG9wY29kZSAhPSBBaXI6Ok5vcCkgeworICAgICAgICAgICAg
aWYgKGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6SW1t
LCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBl
bmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG9sZFZhbHVlLCBuZXdW
YWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1w
LCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBl
bmQob3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIG9sZFZhbHVlLCBuZXdW
YWx1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+
YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG1fdmFsdWUsIG9sZFZh
bHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGltbShhdG9taWMtPmNoaWxkKDAp
KSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCkpCisgICAgICAgICAg
ICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWlj
LT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWlj
LT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBjYXNPcGNvZGUgPSBP
UENPREVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9uZ0NBUywgYXRvbWljLT5vcGVyYXRpb25X
aWR0aCgpKTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQocmVsYXhlZE1vdmVGb3JU
eXBlKGF0b21pYy0+dHlwZSgpKSwgbV92YWx1ZSwgb2xkVmFsdWUsIG1fZWF4KTsKKyAgICAgICAg
ICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoY2FzT3Bjb2RlLCBtX3ZhbHVlLCBBcmc6OnN0YXR1c0Nv
bmQoTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3VmFsdWUsIGFkZHJlc3MpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsK
KyAgICAgICAgICAgIFRtcCBib29sUmVzdWx0ID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAg
ICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29kZShhdG9taWMtPm9wZXJhdGlv
bldpZHRoKCksIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIG5ld1ZhbHVlLCBhZGRyZXNz
LCBib29sUmVzdWx0KTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVz
dDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVz
dWx0LCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICB9CisgICAgICAgIHJlbG9vcEJsb2NrLT5z
ZXRTdWNjZXNzb3JzKGRvbmVCbG9jaywgcmVsb29wQmxvY2spOworICAgIH0KKyAgICAKICAgICB2
b2lkIGxvd2VyKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsK
QEAgLTE5NzEsMzAgKzIzNzEsNTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgTG9hZDogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBtb3ZlRm9yVHlwZShtX3ZhbHVlLT50eXBlKCkpLCBtX3ZhbHVlLCBhZGRyKG1fdmFs
dWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBt
X3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IEFpcjo6T29wczsKKyAgICAgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG1lbW9yeS0+dHlwZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTMyOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEludDY0OgorICAg
ICAgICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNxNjQ7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG9w
Y29kZSA9IG1vdmVGb3JUeXBlKG1lbW9yeS0+dHlwZSgpKTsKKyAgICAgICAgICAgIGFwcGVuZCh0
cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAo
bV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgTG9hZDhTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0
KG1fdmFsdWUsIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwg
dG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVl
LT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4U2lnbmVkRXh0ZW5kVG8z
MiA6IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0lu
c3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDha
OiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQ4LCBtX3Zh
bHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9h
ZEFjcTggOiBMb2FkODsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwg
b3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2UzogewotICAgICAg
ICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTZTaWduZWRFeHRlbmRUbzMy
LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFp
cjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgp
ID8gTG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiA6IExvYWQxNlNpZ25lZEV4dGVuZFRvMzI7Cisg
ICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwg
YWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIExvYWQxNlo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFw
cGluZ0luc3QobV92YWx1ZSwgTG9hZDE2LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92
YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1l
bW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcTE2IDogTG9hZDE2OworICAgICAgICAg
ICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92
YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0K
KyAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFkZDogewogICAgICAgICAgICAgaWYgKHRyeUFw
cGVuZExlYSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwOTIsNyArMjUxMiw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNDaGlsbCgpKQogICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CiAgICAgICAgICAgICBpZiAoaXNJbnQo
bV92YWx1ZS0+dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJYODZE
aXYoRGl2KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZEaXYoRGl2KTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoIWlzWDg2KCkg
fHwgaXNGbG9hdChtX3ZhbHVlLT50eXBlKCkpKTsKQEAgLTIxMDMsNyArMjUyMyw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgY2FzZSBVRGl2OiB7CiAgICAgICAgICAgICBpZiAoaXNJbnQobV92YWx1
ZS0+dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJYODZVRGl2KFVE
aXYpOworICAgICAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVURpdik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0yMTE3LDEzICsyNTM3LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgTW9kOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4
NigpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZhbHVlLT5pc0NoaWxsKCkpOwot
ICAgICAgICAgICAgbG93ZXJYODZEaXYoTW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NkRpdihN
b2QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBVTW9k
OiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4NigpKTsKLSAgICAgICAgICAgIGxv
d2VyWDg2VURpdihVTW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVU1vZCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjE2MiwxMCArMjU4MiwyOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8Tm90MzIsIE5vdDY0PihtX3ZhbHVlLT5j
aGlsZCgwKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyBUaGlzIHBhdHRlcm4gaXMgc3VwZXIgdXNlZnVsIG9uIGJv
dGggeDg2IGFuZCBBUk02NCwgc2luY2UgdGhlIGludmVyc2lvbiBvZiB0aGUgQ0FTIHJlc3VsdAor
ICAgICAgICAgICAgLy8gY2FuIGJlIGRvbmUgd2l0aCB6ZXJvIGNvc3Qgb24geDg2IChqdXN0IGZs
aXAgdGhlIHNldCBmcm9tIEUgdG8gTkUpIGFuZCBpdCdzIGEgcHJvZ3Jlc3Npb24KKyAgICAgICAg
ICAgIC8vIG9uIEFSTTY0IChzaW5jZSBTVFggcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIHNvIG9yZGlu
YXJpbHkgd2UgaGF2ZSB0byBmbGlwIGl0KS4KKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGls
ZCgxKS0+aXNJbnQoMSkKKyAgICAgICAgICAgICAgICAmJiBpc0F0b21pY0NBUyhtX3ZhbHVlLT5j
aGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3Zh
bHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtX3ZhbHVl
LT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUtPmNoaWxkKDAp
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPFhvcjMyLCBYb3I2NCwgWG9yRG91YmxlLCBY
b3JGbG9hdCwgQ29tbXV0YXRpdmU+KAogICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDAp
LCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaXNBUk02NCgpKTsKKyAgICAgICAgICAgIGFwcGVuZFVuT3A8RGVwZW5kMzIsIERlcGVu
ZDY0PihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
IAogICAgICAgICBjYXNlIFNobDogewogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEp
LT5pc0ludDMyKDEpKSB7CkBAIC0yMjY2LDcgKzI3MDQsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWVU
b1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUs
IGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIy
ODcsNyArMjcyNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcHBlbmRTdG9yZShB
aXI6OlN0b3JlOCwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFw
cGVuZFN0b3JlKG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTIzMDgsNyArMjc0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBhcHBlbmRTdG9yZShBaXI6OlN0b3JlMTYsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVl
KSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDE2LDcgKzI4NTQsMjIgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIGNhc2UgTm90
RXF1YWw6CisgICAgICAgIGNhc2UgTm90RXF1YWw6IHsKKyAgICAgICAgICAgIGlmIChtX3ZhbHVl
LT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAgICAgICAgICAgICAg
JiYgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApID09IG1fdmFsdWUtPmNoaWxkKDEpCisgICAg
ICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUtPmNoaWxkKDApLT5j
aGlsZCgxKSkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMobV92
YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjb21t
aXRJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FT
KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNyZWF0ZUNvbXBhcmUobV92YWx1ZSkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBMZXNzVGhhbjoKICAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAgICAgY2FzZSBMZXNz
RXF1YWw6CkBAIC0yNzI3LDYgKzMxODAsNDAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAg
ICAgIGNhc2UgQnJhbmNoOiB7CisgICAgICAgICAgICBpZiAoY2FuQmVJbnRlcm5hbChtX3ZhbHVl
LT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogYnJhbmNoQ2hpbGQgPSBtX3Zh
bHVlLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyYW5jaENoaWxkLT5vcGNv
ZGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAgICAgICAgICAgICAg
ICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1N0
cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICAgICAgLy8gQSBicmFuY2ggaXMgYSBjb21wYXJpc29u
IHRvIHplcm8uCisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCkt
PmlzSW50KDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFu
Y2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQs
IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBjYXNlIEVxdWFsOgorICAgICAgICAgICAgICAgIGNhc2UgTm90RXF1
YWw6CisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPm9wY29k
ZSgpID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2FuQmVJ
bnRlcm5hbChicmFuY2hDaGlsZC0+Y2hpbGQoMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAm
JiBicmFuY2hDaGlsZC0+Y2hpbGQoMCktPmNoaWxkKDApID09IGJyYW5jaENoaWxkLT5jaGlsZCgx
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQp
OworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQtPmNo
aWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZC0+
Y2hpbGQoMCksIGJyYW5jaENoaWxkLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBw
ZW5kKGNyZWF0ZUJyYW5jaChtX3ZhbHVlLT5jaGlsZCgwKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0yNzg0LDcgKzMyNzEsODEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGFwcGVuZChBaXI6OkVudHJ5U3dpdGNoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgY2Fz
ZSBBdG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLCBmYWxz
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEF0b21pY1hjaGdBZGQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lk
QXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQWRkLCBhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlID0gT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnQWRkLCBhdG9taWMtPm9wZXJhdGlvbldp
ZHRoKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIGFk
ZHJlc3Mua2luZCgpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5
cGUoYXRvbWljLT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9taWMpKTsK
KyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVzcyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhcHBl
bmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEFkZCwgYXRvbWljLT5v
cGVyYXRpb25XaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIEF0b21pY1hjaGdTdWI6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9t
aWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRW
b2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3ViLCBhdG9taWMtPm9wZXJhdGlvbldp
ZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoU3ViLCBh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDogeworICAgICAgICAg
ICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAg
ICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNBbmQs
IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NB
Tk9OSUNBTF9XSURUSChBbmQsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNY
Y2hnT3I6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxB
dG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9G
T1JfV0lEVEgoQXRvbWljT3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0
b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChPciwgYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEF0b21pY1hjaGdYb3I6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9t
aWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRW
b2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWG9yLCBhdG9taWMtPm9wZXJhdGlvbldp
ZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoWG9yLCBh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAg
QXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAgICAgICAg
ICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZywgYXRv
bWljLT5vcGVyYXRpb25XaWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQo
cmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkp
LCB0bXAoYXRvbWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21p
YyksIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NB
Tk9OSUNBTF9XSURUSChYb3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNzkyLDY0ICszMzUzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgZGF0YUxvZygiRkFUQUw6IGNvdWxkIG5vdCBsb3dlciAiLCBkZWVwRHVtcCht
X3Byb2NlZHVyZSwgbV92YWx1ZSksICJcbiIpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KLQotICAgIHZvaWQgbG93ZXJYODZEaXYoQjM6Ok9wY29kZSBvcCkK
LSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICAgICAgVG1wIGVheCA9IFRt
cChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBlZHggPSBUbXAoWDg2UmVnaXN0ZXJz
OjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7Ci0gICAg
ICAgIEFpcjo6T3Bjb2RlIGRpdjsKLSAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsK
LSAgICAgICAgY2FzZSBJbnQzMjoKLSAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBY
ODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7Ci0gICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDY0OgotICAgICAgICAgICAgY29udmVy
dFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7Ci0gICAgICAgICAgICBkaXYg
PSBYODZEaXY2NDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKLSAg
ICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09IERpdiA/IFg4NlJl
Z2lzdGVyczo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUs
IHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChjb252ZXJ0VG9E
b3VibGVXb3JkLCBlYXgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAo
bV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0
bXAobV92YWx1ZSkpOwotCi0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0ob3ApOwotICAgICAg
ICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQg
bG93ZXJYODZVRGl2KEIzOjpPcGNvZGUgb3ApCi0gICAgewotI2lmIENQVShYODYpIHx8IENQVShY
ODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAg
ICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29k
ZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7
Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7Ci0gICAgICAgIFg4
NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gWDg2UmVnaXN0ZXJz
OjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1f
dmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKFhvcjY0LCBlZHgsIGVkeCk7
Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsK
LSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOwotI2Vsc2UK
LSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRG
T1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KKyAgICAKICAgICBJbmRleFNldDxWYWx1ZT4gbV9sb2Nr
ZWQ7IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCB3aWxsIGhhdmUgbm8gVG1wIGluIEFpci4KICAg
ICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3ZhbHVlVG9UbXA7IC8vIFRoZXNlIGFyZSB2YWx1ZXMg
dGhhdCBtdXN0IGhhdmUgYSBUbXAgaW4gQWlyLiBXZSBzYXkgdGhhdCBhIFZhbHVlKiB3aXRoIGEg
bm9uLW51bGwgVG1wIGlzICJwaW5uZWQiLgogICAgIEluZGV4TWFwPFZhbHVlLCBUbXA+IG1fcGhp
VG9UbXA7IC8vIEVhY2ggUGhpIGdldHMgaXRzIG93biBUbXAuCkBAIC0yODY0LDcgKzMzNjgsNyBA
QCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFZlY3RvcjxJbnN0LCA0Pj4gbV9pbnN0czsKICAgICBW
ZWN0b3I8SW5zdD4gbV9wcm9sb2d1ZTsKLQorICAgIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBtX2Js
b2NrOwogICAgIGJvb2wgbV9pc1JhcmU7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKQEAgLTI4NzUs
NiArMzM3OSwxMiBAQCBwcml2YXRlOgogCiAgICAgUHJvY2VkdXJlJiBtX3Byb2NlZHVyZTsKICAg
ICBDb2RlJiBtX2NvZGU7CisKKyAgICBBaXI6OkJsb2NrSW5zZXJ0aW9uU2V0IG1fYmxvY2tJbnNl
cnRpb25TZXQ7CisKKyAgICBUbXAgbV9lYXg7CisgICAgVG1wIG1fZWN4OworICAgIFRtcCBtX2Vk
eDsKIH07CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIGNsYXNzIFByb2NlZHVyZTsKIG5h
bWVzcGFjZSBBaXIgeyBjbGFzcyBDb2RlOyB9CiAKLS8vIFRoaXMgbG93ZXJzIHRoZSBjdXJyZW50
IEIzIHByb2NlZHVyZSB0byBhbiBBaXIgY29kZS4KKy8vIFRoaXMgbG93ZXJzIHRoZSBjdXJyZW50
IEIzIHByb2NlZHVyZSB0byBhbiBBaXIgY29kZS4gTm90ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGF0
IHRoZSBwcm9jZWR1cmUgaXMgaW4KKy8vIHF1aXJrcyBtb2RlLCBidXQgaXQgZG9lcyBub3QgYXNz
ZXJ0IHRoaXMsIHRvIHNpbXBsaWZ5IGhvdyB3ZSB3cml0ZSB0ZXN0cy4KIAogSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBsb3dlclRvQWlyKFByb2NlZHVyZSYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDMwICszNCw0OCBAQCBNZW1vcnlWYWx1ZTo6fk1lbW9yeVZhbHVlKCkKIHsKIH0KIAorVHlw
ZSBNZW1vcnlWYWx1ZTo6YWNjZXNzVHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzTG9hZCgpKQor
ICAgICAgICByZXR1cm4gdHlwZSgpOworICAgIC8vIFRoaXMgaGFwcGVucyB0byB3b3JrIGZvciBh
dG9taWNzLCB0b28uIFRoYXQncyB3aHkgQXRvbWljVmFsdWUgZG9lcyBub3QgbmVlZCB0byBvdmVy
cmlkZSB0aGlzLgorICAgIHJldHVybiBjaGlsZCgwKS0+dHlwZSgpOworfQorCitCYW5rIE1lbW9y
eVZhbHVlOjphY2Nlc3NCYW5rKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYmFua0ZvclR5cGUoYWNj
ZXNzVHlwZSgpKTsKK30KKwogc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNv
bnN0CiB7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkpOworfQorCitXaWR0aCBNZW1v
cnlWYWx1ZTo6bG9hZFN0b3JlV2lkdGgoKSBjb25zdAorewogICAgIHN3aXRjaCAob3Bjb2RlKCkp
IHsKICAgICBjYXNlIExvYWQ4WjoKICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIFN0b3JlODoK
LSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBXaWR0aDg7CiAgICAgY2FzZSBMb2Fk
MTZaOgogICAgIGNhc2UgTG9hZDE2UzoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIHJldHVy
biAyOworICAgICAgICByZXR1cm4gV2lkdGgxNjsKICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJl
dHVybiBzaXplb2ZUeXBlKHR5cGUoKSk7CisgICAgICAgIHJldHVybiB3aWR0aEZvclR5cGUodHlw
ZSgpKTsKICAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZShjaGlsZCgw
KS0+dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZShjaGlsZCgwKS0+dHlwZSgp
KTsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICB9CiB9CiAKIFdp
ZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdpZHRo
Rm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJuIGxvYWRTdG9yZVdpZHRoKCk7
CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02NSw4ICs4MywxMSBAQCB2b2lkIE1lbW9yeVZhbHVl
OjpkdW1wTWV0YShDb21tYVByaW50ZXImCiAgICAgaWYgKG1fb2Zmc2V0KQogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJvZmZzZXQgPSAiLCBtX29mZnNldCk7CiAgICAgaWYgKChpc0xvYWQoKSAm
JiBlZmZlY3RzKCkucmVhZHMgIT0gcmFuZ2UoKSkKLSAgICAgICAgfHwgKGlzU3RvcmUoKSAmJiBl
ZmZlY3RzKCkud3JpdGVzICE9IHJhbmdlKCkpKQorICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVm
ZmVjdHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkKKyAgICAgICAgfHwgZmVuY2VSYW5nZSgpKQogICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJyYW5nZSA9ICIsIHJhbmdlKCkpOworICAgIGlmIChmZW5j
ZVJhbmdlKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgImZlbmNlUmFuZ2UgPSAiLCBmZW5j
ZVJhbmdlKCkpOwogfQogCiBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CkBA
IC03NCw2ICs5NSw2MiBAQCBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG5ldyBNZW1vcnlWYWx1ZSgqdGhpcyk7CiB9CiAKKy8vIFVzZSB0aGlzIGZvcm0g
Zm9yIExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhh
dCBoYXZlIGEgc3VmZml4IHRoYXQKKy8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCitN
ZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmln
aW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFw
UmFuZ2UgZmVuY2VSYW5nZSkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUs
IG9yaWdpbiwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1fcmFuZ2Uo
cmFuZ2UpCisgICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKK3sKKyAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAg
Y2FzZSBMb2FkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAg
ICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExv
YWQxNlM6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3RvcmUxNjoKKyAgICAg
ICAgY2FzZSBTdG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9h
ZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlWYWx1ZTo6TWVtb3J5
VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1v
cnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5j
ZVJhbmdlKQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAo
a2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2Fk
OFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3Rv
cmVzLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwg
VmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSBy
YW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBr
aW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0
KQorICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQor
eworICAgIEFTU0VSVChCMzo6aXNTdG9yZShraW5kLm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMjEzMjYxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNDggKzI3LDE3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNC
YW5rLmgiCiAjaW5jbHVkZSAiQjNIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBh
bGxvdyBmZW5jZWQgbWVtb3J5IGFjY2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
TWVtb3J5VmFsdWUgOiBwdWJsaWMgVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFj
Y2VwdHMoS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7
Ci0gICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2Fz
ZSBMb2FkMTZaOgotICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAg
ICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBT
dG9yZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wg
aXNTdG9yZShLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkp
IHsKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAg
Y2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGlj
IGJvb2wgaXNMb2FkKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtp
bmQpICYmICFpc1N0b3JlKGtpbmQpOworICAgICAgICByZXR1cm4gaXNNZW1vcnlBY2Nlc3Moa2lu
ZC5vcGNvZGUoKSk7CiAgICAgfQogCiAgICAgfk1lbW9yeVZhbHVlKCk7CkBAIC03OCw3NiArNDcs
NTggQEAgcHVibGljOgogCiAgICAgY29uc3QgSGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFuZ2U7IH0KICAgICB2b2lkIHNldFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2Up
IHsgbV9yYW5nZSA9IHJhbmdlOyB9CisgICAgCisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3Ig
cmFuZ2UuCisgICAgY29uc3QgSGVhcFJhbmdlJiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IHJhbmdlKCk7IH0KKyAgICB2b2lkIHNldEFjY2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFu
Z2UpIHsgc2V0UmFuZ2UocmFuZ2UpOyB9CisgICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBmZW5j
ZVJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9mZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRGZW5j
ZVJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0K
KworICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc1N0b3JlKG9wY29kZSgp
KTsgfQorICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1cm4gQjM6OmlzTG9hZChvcGNvZGUo
KSk7IH0KIAotICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBWb2lk
OyB9Ci0gICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgIT0gVm9pZDsgfQor
ICAgIGJvb2wgaGFzRmVuY2UoKSBjb25zdCB7IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsgfQogCisg
ICAgVHlwZSBhY2Nlc3NUeXBlKCkgY29uc3Q7CisgICAgQmFuayBhY2Nlc3NCYW5rKCkgY29uc3Q7
CiAgICAgc2l6ZV90IGFjY2Vzc0J5dGVTaXplKCkgY29uc3Q7Ci0gICAgV2lkdGggYWNjZXNzV2lk
dGgoKSBjb25zdDsKKyAgICAKKyAgICAvLyBTbGlnaHRseSBmYXN0ZXIgdmVyc2lvbiBvZiBhY2Nl
c3NXaWR0aCwgaWYgeW91IGtub3cgdGhhdCB5b3UncmUgd29ya2luZyB3aXRoIGEgbG9hZCBvciBz
dG9yZS4KKyAgICBXaWR0aCBsb2FkU3RvcmVXaWR0aCgpIGNvbnN0OworICAgIAorICAgIHZpcnR1
YWwgV2lkdGggYWNjZXNzV2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVt
cE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9w
Y29kZVRhZywgS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zm
c2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlLCBBcmd1bWVudHMuLi4g
YXJndW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9y
aWdpbiwgYXJndW1lbnRzLi4uKQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAg
LCBtX3JhbmdlKHJhbmdlKQorICAgICAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQorICAg
IHsKKyAgICB9CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0K
KyAgICAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9h
ZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CiAgICAgLy8g
ZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQs
IFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0
ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4s
IHBvaW50ZXIpCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2Uo
SGVhcFJhbmdlOjp0b3AoKSkKLSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7
Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2Ug
TG9hZDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZDhaOgot
ICAgICAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAg
ICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50
MzIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0g
ICAgICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAg
ICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5k
LCBUeXBlLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBS
YW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVh
cFJhbmdlKCkpOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJl
dHVybiB0eXBlIGlzIGltcGxpZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4g
b3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IE1l
bW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKLSAgICB7Ci0g
ICAgfQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMy
X3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJh
bmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZv
ciBzdG9yZXMuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1
ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDog
VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikK
LSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6
OnRvcCgpKQotICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAg
ICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0g
ICAgICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFs
dWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2Ug
cmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5n
ZSgpKTsKKyAgICAKICAgICBpbnQzMl90IG1fb2Zmc2V0IHsgMCB9OwotICAgIEhlYXBSYW5nZSBt
X3JhbmdlOworICAgIEhlYXBSYW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAg
IEhlYXBSYW5nZSBtX2ZlbmNlUmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVU
cmFpdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVU
cmFpdHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRp
dmVUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM0JhbmsuaCIKKyNpbmNsdWRlICJCM1R5cGUuaCIK
KyNpbmNsdWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewor
Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IE5hdGl2ZVRyYWl0czsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgTmF0aXZlVHJhaXRzPGludDhfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsg
PSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDg7CisgICAgc3RhdGlj
IGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZl
VHJhaXRzPHVpbnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAg
c3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg4OworICAgIHN0YXRpYyBjb25zdCBUeXBl
IHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxpbnQx
Nl90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25z
dCBXaWR0aCB3aWR0aCA9IFdpZHRoMTY7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IElu
dDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQxNl90PiB7Cisg
ICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3
aWR0aCA9IFdpZHRoMTY7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGludDMyX3Q+IHsKKyAgICBzdGF0aWMg
Y29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lk
dGgzMjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDMyX3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFu
ayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAg
ICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBOYXRpdmVUcmFpdHM8aW50NjRfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBH
UDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBj
b25zdCBUeXBlIHR5cGUgPSBJbnQ2NDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRy
YWl0czx1aW50NjRfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBz
dGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBl
IHR5cGUgPSBJbnQ2NDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxmbG9h
dD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBGUDsKKyAgICBzdGF0aWMgY29uc3Qg
V2lkdGggd2lkdGggPSBXaWR0aDMyOworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBGbG9h
dDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxkb3VibGU+IHsKKyAgICBz
dGF0aWMgY29uc3QgQmFuayBiYW5rID0gRlA7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRo
ID0gV2lkdGg2NDsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gRG91YmxlOworfTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHJldmlzaW9uIDIxMzI2MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC02OCw2ICs2OCwyMyBAQCBzdGQ6Om9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJl
KE9wCiAgICAgfQogfQogCitPcGNvZGUgc3RvcmVPcGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0
aCkKK3sKKyAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICBjYXNlIEdQOgorICAgICAgICBzd2l0Y2gg
KHdpZHRoKSB7CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgcmV0dXJuIFN0b3Jl
ODsKKyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlMTY7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgICAgIH0KKyAg
ICBjYXNlIEZQOgorICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgfQorfQorCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0yNjMsNiArMjgwLDMzIEBAIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGMKICAgICBjYXNlIFN0b3JlOgog
ICAgICAgICBvdXQucHJpbnQoIlN0b3JlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0
b21pY1dlYWtDQVM6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljV2Vha0NBUyIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIG91dC5wcmludCgi
QXRvbWljU3Ryb25nQ0FTIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdB
ZGQ6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ0FkZCIpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdB
bmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICBv
dXQucHJpbnQoIkF0b21pY1hjaGdPciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9t
aWNYY2hnU3ViOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdTdWIiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9t
aWNYY2hnWG9yIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAg
ICAgIG91dC5wcmludCgiQXRvbWljWGNoZyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBE
ZXBlbmQ6CisgICAgICAgIG91dC5wcmludCgiRGVwZW5kIik7CisgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAgICBvdXQucHJpbnQoIldhc21BZGRyZXNzIik7CiAg
ICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZp
c2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5j
bHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtODIsNyArODMsNiBA
QCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIE1vZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBh
cyB0byB3aGF0IHdpbGwgaGFwcGVuIHdoZW4geW91IGV4ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEg
YW5kIHglMC4KICAgICBVTW9kLAogCi0KICAgICAvLyBQb2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90
ZSB0aGF0IHdlIG9ubHkgbmVlZCB0aGlzIGZvciBmbG9hdGluZyBwb2ludCwgc2luY2UgaW50ZWdl
ciBuZWdhdGlvbgogICAgIC8vIGlzIGV4YWN0bHkgbGlrZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mg
bm90IHRydWUgZm9yIGZsb2F0aW5nIHBvaW50LiBTdWIoMCwgMCkgaXMgMCwgd2hpbGUKICAgICAv
LyBOZWcoMCkgaXMgLTAuIEFsc28sIHdlIGNhbm9uaWNhbGl6ZSBTdWIoMCwgeCkgaW50byBOZWco
eCkgaW4gY2FzZSBvZiBpbnRlZ2Vycy4KQEAgLTE2Miw2ICsxNjIsMTA3IEBAIGVudW0gT3Bjb2Rl
IDogaW50MTZfdCB7CiAgICAgU3RvcmUxNiwKICAgICAvLyBUaGlzIGlzIGEgcG9seW1vcnBoaWMg
c3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgRmxvYXQsIGFuZCBEb3VibGUuCiAgICAgU3RvcmUsCisg
ICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIGEgYm9vbGVh
bi4gTWF5IGNob29zZSB0byBkbyBub3RoaW5nIGFuZCByZXR1cm4gZmFsc2UuIFlvdSBjYW4KKyAg
ICAvLyB1c3VhbGx5IGFzc3VtZSB0aGF0IHRoaXMgaXMgZmFzdGVyIGFuZCByZXN1bHRzIGluIGxl
c3MgY29kZSB0aGFuIEF0b21pY1N0cm9uZ0NBUywgdGhvdWdoIHRoYXQncworICAgIC8vIG5vdCBu
ZWNlc3NhcmlseSB0cnVlIG9uIEludGVsLCBpZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gZG9lcyBp
dHMgam9iLiBJbWFnaW5lIHRoYXQgdGhpcyBvcGNvZGUgaXMKKyAgICAvLyBhcyBpZiB5b3UgZGlk
IHRoaXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgLy8gYm9vbCBBdG9taWNXZWFrQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCog
cHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgaWYgKCFyYW5kKCkpCisgICAgLy8gICAgICAgICBy
ZXR1cm4gZmFsc2U7IC8vIFJlYWwgd29ybGQgZXhhbXBsZSBvZiB0aGlzOiBjb250ZXh0IHN3aXRj
aCBvbiBBUk0gd2hpbGUgZG9pbmcgQ0FTLgorICAgIC8vICAgICBpZiAoKnB0ciAhPSBleHBlY3Rl
ZFZhbHVlKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vICAgICAqcHRyID0g
bmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVybiB0cnVlOworICAgIC8vIH0KKyAgICAvLworICAg
IC8vIE5vdGUgdGhhdCBhbGwgYXRvbWljcyBwdXQgdGhlIHBvaW50ZXIgbGFzdCB0byBiZSBjb25z
aXN0ZW50IHdpdGggaG93IGxvYWRzIGFuZCBzdG9yZXMgd29yay4gVGhpcworICAgIC8vIGlzIGEg
Z29vZnkgdHJhZGl0aW9uLCBidXQgaXQncyBoYXJtbGVzcywgYW5kIGJldHRlciB0aGFuIGJlaW5n
IGluY29uc2lzdGVudC4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCB3ZWFrIENBUyBoYXMgbm8g
ZmVuY2luZyBndWFyYW50ZWVzIHdoZW4gaXQgZmFpbHMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9s
bG93aW5nCisgICAgLy8gdHJhbnNmb3JtYXRpb24gaXMgYWx3YXlzIHZhbGlkOgorICAgIC8vCisg
ICAgLy8gQmVmb3JlOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NB
UyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1
Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICAvLworICAgIC8vIEFmdGVyOgorICAgIC8vCisgICAgLy8g
ICAgICAgICBCcmFuY2goRXF1YWwoTG9hZChwdHIpLCBleHBlY3RlZCkpCisgICAgLy8gICAgICAg
U3VjY2Vzc29yczogVGhlbjojYXR0ZW1wdCwgRWxzZTojZmFpbAorICAgIC8vICAgICBCQiNhdHRl
bXB0OgorICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywg
cHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWls
CisgICAgLy8KKyAgICAvLyBCb3RoIGtpbmRzIG9mIENBUyBmb3Igbm9uLWNhbm9uaWNhbCB3aWR0
aHMgKFdpZHRoOCBhbmQgV2lkdGgxNikgaWdub3JlIHRoZSBpcnJlbGV2YW50IGJpdHMgb2YgdGhl
CisgICAgLy8gaW5wdXQuCisgICAgQXRvbWljV2Vha0NBUywKKyAgICAKKyAgICAvLyBBdG9taWMg
Y29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2
ZSB0aGUgbm9uZGV0ZXJtaW5pc20gb2YgV2Vha0NBUy4KKyAgICAvLyBUaGlzIGlzIGEgYml0IG1v
cmUgY29kZSBhbmQgYSBiaXQgc2xvd2VyIGluIHNvbWUgY2FzZXMsIHRob3VnaCBub3QgYnkgYSBs
b3QuIEltYWdpbmUgdGhhdCB0aGlzCisgICAgLy8gb3Bjb2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhp
cyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAv
LyBUIEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikK
KyAgICAvLyB7CisgICAgLy8gICAgIFQgb2xkVmFsdWUgPSAqcHRyOworICAgIC8vICAgICBpZiAo
b2xkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgICpwdHIgPSBuZXdWYWx1
ZTsKKyAgICAvLyAgICAgcmV0dXJuIG9sZFZhbHVlCisgICAgLy8gfQorICAgIC8vCisgICAgLy8g
Tm90ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5kIEF0b21pY1N0cm9uZ0NBUyBzb3J0IG9mIGhhdmUg
dGhpcyBraW5kIG9mIGVxdWl2YWxlbmNlOgorICAgIC8vCisgICAgLy8gQXRvbWljV2Vha0NBUyhA
ZXhwLCBAbmV3LCBAcHRyKSA9PSBFcXVhbChBdG9taWNTdHJvbmdDQVMoQGV4cCwgQG5ldywgQHB0
ciksIEBleHApCisgICAgLy8KKyAgICAvLyBBc3N1bWluZyB0aGF0IHRoZSBXZWFrQ0FTIGRvZXMg
bm90IHNwdXJpb3VzbHkgZmFpbCwgb2YgY291cnNlLgorICAgIEF0b21pY1N0cm9uZ0NBUywKKyAg
ICAKKyAgICAvLyBBdG9taWNhbGx5IF9fXyBhIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRo
ZSBvbGQgdmFsdWUuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hj
aGdfX18oQG9wZXJhbmQsIEBwdHIpCisgICAgLy8KKyAgICAvLyBGb3Igbm9uLWNhbm9uaWNhbCB3
aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNiksIHRoZXNlIHJldHVybiBzaWduLWV4dGVuZGVkIHJl
c3VsdHMgYW5kIGlnbm9yZSB0aGUKKyAgICAvLyBpcnJlbGV2YW50IGJpdHMgb2YgdGhlaXIgaW5w
dXRzLgorICAgIEF0b21pY1hjaGdBZGQsCisgICAgQXRvbWljWGNoZ0FuZCwKKyAgICBBdG9taWNY
Y2hnT3IsCisgICAgQXRvbWljWGNoZ1N1YiwKKyAgICBBdG9taWNYY2hnWG9yLAorICAgIAorICAg
IC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBBdG9taWNYY2hnTmVnIGFuZCBBdG9taWNY
Y2hnTm90LgorICAgIAorICAgIC8vIEF0b21pY2FsbHkgZXhjaGFuZ2UgYSB2YWx1ZSB3aXRoIGEg
bWVtb3J5IGxvY2F0aW9uLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9t
aWNYY2hnKEBuZXdWYWx1ZSwgQHB0cikKKyAgICBBdG9taWNYY2hnLAorICAgIAorICAgIC8vIElu
dHJvZHVjZSBhbiBpbnZpc2libGUgZGVwZW5kZW5jeSBmb3IgYmxvY2tpbmcgbW90aW9uIG9mIGxv
YWRzIHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBA
cmVzdWx0ID0gRGVwZW5kKEBwaGFudG9tKQorICAgIC8vCisgICAgLy8gVGhpcyBpcyBldmVudHVh
bGx5IGNvZGVnZW5lcmF0ZWQgdG8gaGF2ZSBsb2NhbCBzZW1hbnRpY3MgYXMgaWYgd2UgZGlkOgor
ICAgIC8vCisgICAgLy8gQHJlc3VsdCA9ICQwCisgICAgLy8KKyAgICAvLyBCdXQgaXQgZW5zdXJl
cyB0aGF0IHRoZSB1c2VycyBvZiBAcmVzdWx0IGNhbm5vdCBleGVjdXRlIHVudGlsIEBwaGFudG9t
IGlzIGNvbXB1dGVkLgorICAgIC8vCisgICAgLy8gVGhlIGNvbXBpbGVyIGlzIG5vdCBhbGxvd2Vk
IHRvIHJlYXNvbiBhYm91dCB0aGUgZmFjdCB0aGF0IERlcGVuZCBjb2RlZ2VuZXJhdGVzIHRoaXMg
d2F5LiBBbnkga2luZAorICAgIC8vIG9mIHRyYW5zZm9ybWF0aW9uIG9yIGFuYWx5c2lzIHRoYXQg
cmVsaWVzIG9uIHRoZSBpbnNpZ2h0IHRoYXQgRGVwZW5kIGlzIHJlYWxseSB6ZXJvIGlzIHVuc291
bmQsCisgICAgLy8gYmVjYXVzZSBpdCB1bmxvY2tzIHJlb3JkZXJpbmcgb2YgdXNlcnMgb2YgQHJl
c3VsdCBhbmQgQHBoYW50b20uCisgICAgLy8KKyAgICAvLyBPbiBYODYsIHRoaXMgaXMgbG93ZXJl
ZCB0byBhIGxvYWQtbG9hZCBmZW5jZSBhbmQgQHJlc3VsdCB1c2VzIEBwaGFudG9tIGRpcmVjdGx5
LgorICAgIC8vCisgICAgLy8gT24gQVJNLCB0aGlzIGlzIGxvd2VyZWQgYXMgaWYgbGlrZToKKyAg
ICAvLworICAgIC8vIEByZXN1bHQgPSBCaXRYb3IoQHBoYW50b20sIEBwaGFudG9tKQorICAgIC8v
CisgICAgLy8gRXhjZXB0IHRoYXQgdGhlIGNvbXBpbGVyIG5ldmVyIGdldHMgYW4gb3Bwb3J0dW5p
dHkgdG8gc2ltcGxpZnkgb3V0IHRoZSBCaXRYb3IuCisgICAgRGVwZW5kLAogCiAgICAgLy8gVGhp
cyBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIGFjdHVhbCBhZGRyZXNzIG9mIGEgV2FzbSBtZW1vcnkg
b3BlcmF0aW9uLiBJdCB0YWtlcyBhbiBJbnRQdHIKICAgICAvLyBhbmQgYSBwaW5uZWQgcmVnaXN0
ZXIgdGhlbiBjb21wdXRlcyB0aGUgYXBwcm9wcmlhdGUgSW50UHRyIGFkZHJlc3MuIEZvciB0aGUg
dXNlLWNhc2Ugb2YKQEAgLTMwMSw2ICs0MDIsMTEyIEBAIGlubGluZSBib29sIGlzRGVmaW5pdGVs
eVRlcm1pbmFsKE9wY29kZSAKICAgICB9CiB9CiAKK2lubGluZSBib29sIGlzTG9hZChPcGNvZGUg
b3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAg
Y2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBj
YXNlIExvYWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzU3RvcmUoT3Bjb2RlIG9wY29k
ZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2Ug
U3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0xv
YWRTdG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2Fz
ZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2Ug
TG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9y
ZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWlj
KE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21p
Y1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2FzZSBBdG9taWNYY2hn
QWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAg
ICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2Ug
QXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNDQVMoT3Bjb2Rl
IG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NB
UzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wg
aXNBdG9taWNYY2hnKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAg
ICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2Ug
QXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBp
c01lbW9yeUFjY2VzcyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHJldHVybiBpc0F0b21pYyhvcGNv
ZGUpIHx8IGlzTG9hZFN0b3JlKG9wY29kZSk7Cit9CisKK2lubGluZSBPcGNvZGUgc2lnbkV4dGVu
ZE9wY29kZShXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBX
aWR0aDg6CisgICAgICAgIHJldHVybiBTRXh0ODsKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgICAg
IHJldHVybiBTRXh0MTY7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIE9vcHM7CisgICAgfQorfQorCitKU19FWFBPUlRf
UFJJVkFURSBPcGNvZGUgc3RvcmVPcGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjAyLDYgKzIwMiw4IEBAIHZvaWQgUHJvY2VkdXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGMK
ICAgICAgICAgfQogICAgICAgICBkYXRhTG9nKCIgICAgIiwgZGVlcER1bXAoKnRoaXMsIHZhbHVl
KSwgIlxuIik7CiAgICAgfQorICAgIGlmIChoYXNRdWlya3MoKSkKKyAgICAgICAgb3V0LnByaW50
KCJIYXMgUXVpcmtzOiBUcnVlXG4iKTsKICAgICBpZiAodmFyaWFibGVzKCkuc2l6ZSgpKSB7CiAg
ICAgICAgIG91dC5wcmludCgiVmFyaWFibGVzOlxuIik7CiAgICAgICAgIGZvciAoVmFyaWFibGUq
IHZhcmlhYmxlIDogdmFyaWFibGVzKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmUuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGlj
OgogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChPcmlnaW4sIFR5cGUsIGludDY0X3QgdmFsdWUp
OwogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChWYWx1ZSosIGludDY0X3QgdmFsdWUpOwogCisg
ICAgLy8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAgICBWYWx1ZSog
YWRkQm90dG9tKE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGFkZEJvdHRvbShWYWx1ZSopOwog
CkBAIC0xOTUsNiArMTk2LDE3IEBAIHB1YmxpYzoKICAgICAvLyBhbGl2ZS4gR3JlYXQgZm9yIGNv
bXBpbGVyLWdlbmVyYXRlZCBkYXRhIHNlY3Rpb25zLCBsaWtlIHN3aXRjaCBqdW1wIHRhYmxlcyBh
bmQgY29uc3RhbnQgcG9vbHMuCiAgICAgLy8gVGhpcyByZXR1cm5zIG1lbW9yeSB0aGF0IGhhcyBi
ZWVuIHplcm8taW5pdGlhbGl6ZWQuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWRkRGF0
YVNlY3Rpb24oc2l6ZV90KTsKKyAgICAKKyAgICAvLyBTb21lIG9wZXJhdGlvbnMgYXJlIHNwZWNp
ZmllZCBpbiBCMyBJUiB0byBiZWhhdmUgb25lIHdheSBidXQgb24gdGhpcyBnaXZlbiBDUFUgdGhl
eSBiZWhhdmUgYQorICAgIC8vIGRpZmZlcmVudCB3YXkuIFdoZW4gdHJ1ZSwgdGhvc2UgQjMgSVIg
b3BzIHN3aXRjaCB0byBiZWhhdmluZyB0aGUgQ1BVIHdheSwgYW5kIHRoZSBvcHRpbWl6ZXIgbWF5
CisgICAgLy8gc3RhcnQgdGFraW5nIGFkdmFudGFnZSBvZiBpdC4KKyAgICAvLworICAgIC8vIE9u
ZSB3YXkgdG8gdGhpbmsgb2YgaXQgaXMgbGlrZSB0aGlzLiBJbWFnaW5lIHRoYXQgeW91IGZpbmQg
dGhhdCB0aGUgY2xlYW5lc3Qgd2F5IG9mIGxvd2VyaW5nCisgICAgLy8gc29tZXRoaW5nIGluIGxv
d2VyTWFjcm9zIGlzIHRvIHVuY29uZGl0aW9uYWxseSByZXBsYWNlIG9uZSBvcGNvZGUgd2l0aCBh
bm90aGVyLiBUaGlzIGlzIGEgc2hvcnRjdXQKKyAgICAvLyB3aGVyZSB5b3UgaW5zdGVhZCBrZWVw
IHRoZSBzYW1lIG9wY29kZSwgYnV0IHJlbHkgb24gdGhlIG9wY29kZSdzIG1lYW5pbmcgY2hhbmdl
cyBvbmNlIGxvd2VyTWFjcm9zCisgICAgLy8gc2V0cyBoYXNRdWlya3MuCisgICAgYm9vbCBoYXNR
dWlya3MoKSBjb25zdCB7IHJldHVybiBtX2hhc1F1aXJrczsgfQorICAgIHZvaWQgc2V0SGFzUXVp
cmtzKGJvb2wgdmFsdWUpIHsgbV9oYXNRdWlya3MgPSB2YWx1ZTsgfQogCiAgICAgT3BhcXVlQnlw
cm9kdWN0cyYgYnlwcm9kdWN0cygpIHsgcmV0dXJuICptX2J5cHJvZHVjdHM7IH0KIApAQCAtMjUy
LDYgKzI2NCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChQcmludFN0
cmVhbSYsIE9yaWdpbik+PiBtX29yaWdpblByaW50ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9mcm9u
dGVuZERhdGE7CiAgICAgUENUb09yaWdpbk1hcCBtX3BjVG9PcmlnaW5NYXA7CisgICAgYm9vbCBt
X2hhc1F1aXJrcyB7IGZhbHNlIH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJl
dmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVu
Z3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShC
M19KSVQpCiAKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Js
b2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRl
ICJCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgiCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnJlYWs7Ci0KKyAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIE5lZzoKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogTmVnKGNvbnN0YW50KQog
ICAgICAgICAgICAgLy8gSW50byB0aGlzOiAtY29uc3RhbnQKQEAgLTEyOTUsNiArMTI5NiwxNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhh
c1F1aXJrcygpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0OChBdG9taWNY
Y2hnX19fKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXworICAg
ICAgICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgp
KQorICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFs
dWU+KCktPm9wZXJhdGlvbldpZHRoKCkgPT0gV2lkdGg4KSB7CisgICAgICAgICAgICAgICAgICAg
IHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIFNFeHQxNjoKQEAgLTEzNDMsNiArMTM1NCwxNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhhc1F1aXJrcygpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0MTYoQXRvbWljWGNoZ19fXykKKyAgICAg
ICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBp
ZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5vcGVyYXRp
b25XaWR0aCgpID09IFdpZHRoMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJ
ZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgU0V4dDMyOgpAQCAtMjEwMSwyMiArMjEyMiwyNSBAQCBwcml2YXRlOgogICAg
ICAgICBBU1NFUlQobV92YWx1ZS0+bnVtQ2hpbGRyZW4oKSA+PSAyKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIExlYXZlIGl0IGFsb25lIGlmIHRoZSByaWdodCBjaGlsZCBpcyBhIGNvbnN0YW50Lgot
ICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKSkKKyAgICAgICAgaWYg
KG1fdmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkKKyAgICAgICAgICAgIHx8IG1fdmFsdWUt
PmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIAotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQo
KSkgeworICAgICAgICBhdXRvIHN3YXAgPSBbJl0gKCkgewogICAgICAgICAgICAgc3RkOjpzd2Fw
KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICAgICAg
fTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNDb25zdGFudCgp
KQorICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQorICAgICAgICAgICAg
cmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCiAgICAgICAgIC8vIFNvcnQgdGhlIG9wZXJhbmRzLiBU
aGlzIGlzIGFuIGltcG9ydGFudCBjYW5vbmljYWxpemF0aW9uLiBXZSB1c2UgdGhlIGluZGV4IGlu
c3RlYWQgb2YKICAgICAgICAgLy8gdGhlIGFkZHJlc3MgdG8gbWFrZSB0aGlzIGF0IGxlYXN0IHNs
aWdodGx5IGRldGVybWluaXN0aWMuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5k
ZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEpLT5pbmRleCgpKSB7Ci0gICAgICAgICAgICBzdGQ6OnN3
YXAobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgIG1f
Y2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4
KCkpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCByZWFsbHkgYmUgYSBmb3J3YXJkIGFuYWx5c2lzLiBJbnN0ZWFkLCB3ZSB1c2Vz
IGEgYm91bmRlZC1zZWFyY2ggYmFja3dhcmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisj
aW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMu
aCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgi
CkBAIC0zNDYsNiArMzQ3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09
IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2Uo
dmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBMb2FkOgpAQCAtMzUzLDYgKzM1
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRy
ZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAg
ICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBTdG9yZTg6CkBAIC0zNjIsNiArMzY1LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IElu
dDMyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5j
aGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAg
ICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBTdG9yZToKQEAgLTM2OSw4ICszNzMsNDkgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwg
KnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBl
KCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVT
dGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5k
KCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5udW1DaGlsZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSB2YWx1
ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9p
bnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0
b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NB
UzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxk
cmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxk
KDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
aXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoK
KyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgw
KS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlz
SW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAg
ICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
IXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5j
aGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgICAgICAg
ICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAo
IkF0ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYgKzU4MiwyMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUZlbmNl
KFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisg
ICAgICAgICAgICBWQUxJREFURShtZW1vcnktPmFjY2Vzc0JhbmsoKSA9PSBHUCwgKCJGZW5jZSBh
dCAiLCAqbWVtb3J5KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVBdG9taWMoVmFs
dWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IHZhbHVlLT5h
czxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgCisgICAgICAgIFZBTElEQVRFKGJlc3RUeXBlKEdQ
LCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpID09IGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVTdGFja0FjY2VzcyhW
YWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQp
CiAKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1Zh
bHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQm90
dG9tUHJvdmlkZXIuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTUxMCw2ICs1MTEs
NyBAQCBib29sIFZhbHVlOjpyZXR1cm5zQm9vbCgpIGNvbnN0CiAgICAgY2FzZSBBYm92ZUVxdWFs
OgogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CisgICAg
Y2FzZSBBdG9taWNXZWFrQ0FTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFBoaToK
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgc3RvcnkgaGVyZS4KQEAgLTU4OSw2
ICs1OTEsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIEJlbG93
RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgogICAgIGNhc2UgU2VsZWN0OgorICAg
IGNhc2UgRGVwZW5kOgogICAgICAgICBicmVhazsKICAgICBjYXNlIERpdjoKICAgICBjYXNlIFVE
aXY6CkBAIC02MDAsMTYgKzYwMyw0NCBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QK
ICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIExvYWQxNlo6CiAgICAgY2FzZSBMb2FkMTZTOgot
ICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmVzdWx0LnJlYWRzID0gYXM8TWVtb3J5VmFsdWU+KCkt
PnJhbmdlKCk7CisgICAgY2FzZSBMb2FkOiB7CisgICAgICAgIGNvbnN0IE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5
LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAg
ICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5mZW5jZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1
bHQuZmVuY2UgPSB0cnVlOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5k
ZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgU3RvcmU4OgogICAg
IGNhc2UgU3RvcmUxNjoKLSAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXN1bHQud3JpdGVzID0g
YXM8TWVtb3J5VmFsdWU+KCktPnJhbmdlKCk7CisgICAgY2FzZSBTdG9yZTogeworICAgICAgICBj
b25zdCBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJl
c3VsdC53cml0ZXMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0Zl
bmNlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgp
OworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2Fz
ZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21p
Y1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9y
OgorICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICBjb25zdCBBdG9taWNWYWx1ZSogYXRv
bWljID0gYXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IGF0b21pYy0+
cmFuZ2UoKSB8IGF0b21pYy0+ZmVuY2VSYW5nZSgpOworICAgICAgICByZXN1bHQud3JpdGVzID0g
YXRvbWljLT5yYW5nZSgpIHwgYXRvbWljLT5mZW5jZVJhbmdlKCk7CisgICAgICAgIGlmIChhdG9t
aWMtPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAg
ICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVl
OwogICAgICAgICBicmVhazsKQEAgLTYxNywxOCArNjQ4LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZm
ZWN0cygpIGNvbnN0CiAgICAgICAgIGNvbnN0IEZlbmNlVmFsdWUqIGZlbmNlID0gYXM8RmVuY2VW
YWx1ZT4oKTsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gZmVuY2UtPnJlYWQ7CiAgICAgICAgIHJl
c3VsdC53cml0ZXMgPSBmZW5jZS0+d3JpdGU7Ci0gICAgICAgIAotICAgICAgICAvLyBQcmV2ZW50
IGtpbGxpbmcgb2YgZmVuY2VzIHRoYXQgY2xhaW0gbm90IHRvIHdyaXRlIGFueXRoaW5nLiBJdCdz
IGEgYml0IHdlaXJkIHRoYXQgd2UgdXNlCi0gICAgICAgIC8vIGxvY2FsIHN0YXRlIGFzIHRoZSB3
YXkgdG8gZG8gdGhpcywgYnV0IGl0IGhhcHBlbnMgdG8gd29yazogd2UgbXVzdCBhc3N1bWUgdGhh
dCB3ZSBjYW5ub3QKLSAgICAgICAgLy8ga2lsbCB3cml0ZXNMb2NhbFN0YXRlIHVubGVzcyB3ZSB1
bmRlcnN0YW5kcyBleGFjdGx5IHdoYXQgdGhlIGluc3RydWN0aW9uIGlzIGRvaW5nIChsaWtlCi0g
ICAgICAgIC8vIHRoZSB3YXkgdGhhdCBmaXhTU0EgdW5kZXJzdGFuZHMgU2V0L0dldCBhbmQgdGhl
IHdheSB0aGF0IHJlZHVjZVN0cmVuZ3RoIGFuZCBvdGhlcnMKLSAgICAgICAgLy8gdW5kZXJzdGFu
ZCBVcHNpbG9uKS4gVGhpcyB3b3VsZCBvbmx5IGJlY29tZSBhIHByb2JsZW0gaWYgd2UgaGFkIHNv
bWUgYW5hbHlzaXMgdGhhdCB3YXMKLSAgICAgICAgLy8gbG9va2luZyB0byB1c2UgdGhlIHdyaXRl
c0xvY2FsU3RhdGUgYml0IHRvIGludmFsaWRhdGUgYSBDU0Ugb3ZlciBsb2NhbCBzdGF0ZSBvcGVy
YXRpb25zLgotICAgICAgICAvLyBUaGVuIGEgRmVuY2Ugd291bGQgbG9vayBibG9jaywgc2F5LCB0
aGUgZWxpbWluYXRpb24gb2YgYSByZWR1bmRhbnQgR2V0LiBCdXQgaXQgbGlrZQotICAgICAgICAv
LyB0aGF0J3Mgbm90IGF0IGFsbCBob3cgb3VyIG9wdGltaXphdGlvbnMgZm9yIFNldC9HZXQvVXBz
aWxvbi9QaGkgd29yayAtIHRoZXkgZ3JvayB0aGVpcgotICAgICAgICAvLyBvcGVyYXRpb25zIGRl
ZXBseSBlbm91Z2ggdGhhdCB0aGV5IGhhdmUgbm8gbmVlZCB0byBjaGVjayB0aGlzIGJpdCAtIHNv
IHRoaXMgY2hlYXQgaXMKLSAgICAgICAgLy8gZmluZS4KLSAgICAgICAgcmVzdWx0LndyaXRlc0xv
Y2FsU3RhdGUgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBDQ2FsbDoKQEAgLTY5NCw2ICs3MTQsNyBAQCBWYWx1ZUtl
eSBWYWx1ZTo6a2V5KCkgY29uc3QKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQml0d2lzZUNh
c3Q6CiAgICAgY2FzZSBOZWc6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIHJldHVybiBWYWx1
ZUtleShraW5kKCksIHR5cGUoKSwgY2hpbGQoMCkpOwogICAgIGNhc2UgQWRkOgogICAgIGNhc2Ug
U3ViOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAyMTMyNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw2ICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0
IHsgcmV0dXJuIGtpbmQoKS5vcGNvZGUoKTsgfQogICAgIAorICAgIC8vIE5vdGUgdGhhdCB0aGUg
a2luZCBpcyBtZWFudCB0byBiZSBpbW11dGFibGUuIERvIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0
IHRoaXMgaXMgc2FmZS4gSXQncyBub3QKKyAgICAvLyB1c3VhbGx5IHNhZmUuCisgICAgdm9pZCBz
ZXRLaW5kVW5zYWZlbHkoS2luZCBraW5kKSB7IG1fa2luZCA9IGtpbmQ7IH0KKyAgICB2b2lkIHNl
dE9wY29kZVVuc2FmZWx5KE9wY29kZSBvcGNvZGUpIHsgbV9raW5kLnNldE9wY29kZShvcGNvZGUp
OyB9CisgICAgCiAgICAgLy8gSXQncyBnb29kIHByYWN0aWNlIHRvIG1pcnJvciBLaW5kIG1ldGhv
ZHMgaGVyZSwgc28geW91IGNhbiBzYXkgdmFsdWUtPmlzQmxhaCgpCiAgICAgLy8gaW5zdGVhZCBv
ZiB2YWx1ZS0+a2luZCgpLmlzQmxhaCgpLgogICAgIGJvb2wgaXNDaGlsbCgpIGNvbnN0IHsgcmV0
dXJuIGtpbmQoKS5pc0NoaWxsKCk7IH0KQEAgLTEwNyw2ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gdmFsdWVzIHdpdGggSWRlbnRpdGllcyBvbiBib3R0b20gY29uc3RhbnRzLiBGb3IgdGhpcyBy
ZWFzb24sIHRoaXMgdGFrZXMgYSBjYWxsYmFjayB0aGF0IGlzCiAgICAgLy8gcmVzcG9uc2libGUg
Zm9yIGNyZWF0aW5nIGJvdHRvbXMuIFRoZXJlJ3MgYSB1dGlsaXR5IGZvciB0aGlzLCBzZWUgQjNC
b3R0b21Qcm92aWRlci5oLiBZb3UKICAgICAvLyBjYW4gYWxzbyBhY2Nlc3MgdGhhdCB1dGlsaXR5
IHVzaW5nIHJlcGxhY2VXaXRoQm90dG9tKEluc2VydGlvblNldCYsIHNpemVfdCkuCisgICAgLy8K
KyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEJvdHRvbVByb3ZpZGVyPgogICAgIHZvaWQgcmVwbGFjZVdpdGhCb3R0b20o
Y29uc3QgQm90dG9tUHJvdmlkZXImKTsKICAgICAKQEAgLTMyMSw2ICszMjgsNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIElUb0Y6CiAgICAgICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAg
IGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIERlcGVuZDoKICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShudW1BcmdzICE9IDEpKQogICAgICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJn
cyk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1dpZHRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0
aC5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dp
ZHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMzggQEAKIAogI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworVHlw
ZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgp
IHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgY2FzZSBXaWR0aDMy
OgorICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAg
IHJldHVybiBJbnQzMjsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBGbG9h
dDsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gVm9pZDsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHN3aXRjaCAoYmFu
aykgeworICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDY0OworICAgICAg
ICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIERvdWJsZTsKKyAgICAgICAgfQorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAg
ICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVm9pZDsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKIG5hbWVzcGFjZSBXVEYgewogCiB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6V2lkdGggd2lkdGgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYg
KzYyLDE4IEBAIGlubGluZSBXaWR0aCB3aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCitpbmxpbmUgV2lkdGggY2Fub25pY2FsV2lkdGgoV2lkdGgg
d2lkdGgpCit7CisgICAgcmV0dXJuIHN0ZDo6bWF4KFdpZHRoMzIsIHdpZHRoKTsKK30KKworaW5s
aW5lIGJvb2wgaXNDYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gd2lk
dGggPj0gV2lkdGgzMjsKK30KKworVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRo
KTsKKwogaW5saW5lIFdpZHRoIGNvbnNlcnZhdGl2ZVdpZHRoKEJhbmsgYmFuaykKIHsKICAgICBy
ZXR1cm4gYmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2NDsKQEAgLTkzLDYgKzEw
NSwyMCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JCeXRlcyh1bnNpZ25lZCBieXRlCiAgICAgfQog
fQogCitpbmxpbmUgdWludDY0X3QgbWFzayhXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdp
ZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMDAw
ZmZsbHU7CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDBm
ZmZmbGx1OworICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDBmZmZm
ZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHJldHVybiAweGZmZmZmZmZmZmZm
ZmZmZmZsbHU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNw
YWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24g
MjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBaXJWYWxpZGF0ZS5oIgogI2luY2x1
ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkIzQXJndW1l
bnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jh
c2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAi
QjNDb21waWxhdGlvbi5oIgpAQCAtNDQsNiArNDUsNyBAQAogI2luY2x1ZGUgIkIzTWF0aEV4dHJh
cy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKICNpbmNsdWRlICJCM01vdmVDb25zdGFu
dHMuaCIKKyNpbmNsdWRlICJCM05hdGl2ZVRyYWl0cy5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJl
LmgiCiAjaW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgogI2luY2x1ZGUgIkIzU2xvdEJhc2VW
YWx1ZS5oIgpAQCAtMjk3LDYgKzI5OSwyNCBAQCB2b2lkIHRlc3RMb2FkNDIoKQogICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSA0Mik7CiB9CiAKK3ZvaWQgdGVzdExvYWRBY3E0
MigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBpbnQgeCA9IDQyOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJngpLAorICAgICAgICAgICAgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQy
KSkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgp
KQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgIENIRUNL
KGludm9rZTxpbnQ+KCpjb2RlKSA9PSA0Mik7Cit9CisKIHZvaWQgdGVzdExvYWRXaXRoT2Zmc2V0
SW1wbChpbnQzMl90IG9mZnNldDY0LCBpbnQzMl90IG9mZnNldDMyKQogewogICAgIHsKQEAgLTU3
NDgsNiArNTc2OCwzNSBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQzMihpbnQgYW1vdW50KQogICAg
IENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExv
YWRBY3EzMihpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAgICBDb25z
dFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAg
ICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50
MzIsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAor
ICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0
KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0so
IWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1v
dW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tMzIoaW50IGFtb3VudCkKIHsKICAg
ICBQcm9jZWR1cmUgcHJvYzsKQEAgLTU3OTIsNiArNTg0MSw3NCBAQCB2b2lkIHRlc3RTdG9yZUFk
ZExvYWQ4KGludCBhbW91bnQsIEIzOjpPCiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7
CiB9CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9wY29k
ZSBsb2FkT3Bjb2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50OF90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0
clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgcHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUs
IE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAg
ICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkp
IHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWlu
dm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50
KTsKK30KKwordm9pZCB0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4KGludCBhbW91bnQsIEIz
OjpPcGNvZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDhfdCBzbG90ID0gMzc7CisgICAg
Q29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIFZhbHVlKiBsb2FkZWRWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigp
LCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICBQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigweGJlZWYpLCAmc2xvdCk7CisgICAgICAgIH0pOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5m
ZW5jZSA9IHRydWU7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAg
cHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICBsb2FkZWRWYWx1
ZSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkp
LAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FS
TTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hF
Q0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsg
YW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tOChpbnQgYW1vdW50LCBCMzo6
T3Bjb2RlIGxvYWRPcGNvZGUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01ODM2LDYgKzU5
NTMsMzUgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkMTYoaW50IGFtb3VudCwgQjM6OgogICAgIENI
RUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRB
Y3ExNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQx
Nl90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUxNiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJh
bmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQy
KSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGls
ZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAi
c3RsIik7CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7Cisg
ICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9h
ZEltbTE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKIHsKICAgICBQcm9jZWR1
cmUgcHJvYzsKQEAgLTU4NzgsNiArNjAyNCwzMyBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQ2NChp
bnQgYW1vdW50KQogICAgIENIRUNLKHNsb3QgPT0gMzcwMDAwMDAwMDBsbCArIGFtb3VudCk7CiB9
CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KGludCBhbW91bnQpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBpbnQ2NF90IHNsb3QgPSAzNzAwMDAwMDAwMGxsOworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQ
dHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90
KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9y
ZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNs
b3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJh
bmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsK
KyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2Rl
LCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7Cisg
ICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0so
c2xvdCA9PSAzNzAwMDAwMDAwMGxsICsgYW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRM
b2FkSW1tNjQoaW50NjRfdCBhbW91bnQpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzc5
MSw3ICsxMzk2NCw3IEBAIHZvaWQgdGVzdFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCiAgICAg
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpOwogICAgIHVuc2lnbmVkIHN0b3JlQ291bnQgPSAwOwog
ICAgIGZvciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoTWVt
b3J5VmFsdWU6OmlzU3RvcmUodmFsdWUtPm9wY29kZSgpKSkKKyAgICAgICAgaWYgKGlzU3RvcmUo
dmFsdWUtPm9wY29kZSgpKSkKICAgICAgICAgICAgIHN0b3JlQ291bnQrKzsKICAgICB9CiAgICAg
Q0hFQ0tfRVEoc3RvcmVDb3VudCwgMnUpOwpAQCAtMTQyNzcsNiArMTQ0NTAsNDgxIEBAIHZvaWQg
dGVzdE9wdGltaXplTWF0ZXJpYWxpemF0aW9uKCkKICAgICBDSEVDSyhmb3VuZCk7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RBdG9taWNXZWFrQ0FTKCkKK3sKKyAgICBUeXBl
IHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVU
cmFpdHM8VD46OndpZHRoOworICAgIAorICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZd
IChDb21waWxhdGlvbiYgY29tcGlsYXRpb24pIHsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAg
ICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibG9jayIpOworICAg
ICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJjbXB4Y2hnIik7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KAorICAgICAgICAg
ICAgICAgIGNvbXBpbGF0aW9uLAorICAgICAgICAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlz
YXNzZW1ibHkpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnN0cihk
aXNhc3NlbWJseSwgImxkeCIpIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgImxkYXgiKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICYmIChzdHJzdHIoZGlzYXNzZW1ibHksICJzdHgiKSB8fCBzdHJz
dHIoZGlzYXNzZW1ibHksICJzdGx4IikpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgIkV4cGVjdGVkIHRvIGZpbmQgbGR4L2xkYXggYW5kIHN0eC9zdGx4IGJ1dCBkaWRuJ3Qh
Iik7CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJlbG9vcCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9j
ayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
SnVtcCwgT3JpZ2luKCkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHJlbG9vcCk7Cisg
ICAgICAgIAorICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8QXRv
bWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigp
LCB3aWR0aCwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRD
b25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBw
dHIpKTsKKyAgICAgICAgcmVsb29wLT5zZXRTdWNjZXNzb3JzKGRvbmUsIHJlbG9vcCk7CisgICAg
ICAgIAorICAgICAgICBkb25lLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAg
ICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAg
ICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tl
PHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNf
Y2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICB9
CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogcmVsb29wID0g
cHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBkb25lID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7CisgICAg
ICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMocmVsb29wKTsKKyAgICAgICAgCisgICAgICAgIHJlbG9v
cC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCks
CisgICAgICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAg
ICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwK
KyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0ciwgMCwgSGVhcFJhbmdlKDQyKSwg
SGVhcFJhbmdlKCkpKTsKKyAgICAgICAgcmVsb29wLT5zZXRTdWNjZXNzb3JzKGRvbmUsIHJlbG9v
cCk7CisgICAgICAgIAorICAgICAgICBkb25lLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9j
KTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsy
XTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAg
ICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEz
KTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayog
c3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBC
cmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgs
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBwdHIpKTsKKyAgICAg
ICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhzdWNjLCBmYWlsKTsKKyAgICAgICAgCisgICAgICAgIHN1
Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29k
ZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAg
ICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAg
ICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAg
ICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAg
ICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAo
dmFsdWVbMF0gPT0gNDIpCisgICAgICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0
PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzFdLCAxMyk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sq
IGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAg
ICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwK
KyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIEludDMyLCAwKSkp
OworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgICAgICAKKyAg
ICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0
b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIp
OworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkp
OworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7
CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07
CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAg
IHdoaWxlICh2YWx1ZVswXSA9PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwg
dmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7
CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3Rh
dGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAor
ICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkp
OworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAg
Y2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAg
dmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hpbGUgKCFp
bnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEz
KTsKKyAgICAgICAgCisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAg
ICAgICAgQ0hFQ0soIWludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVsxXSwgMTMpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0
b21pY1N0cm9uZ0NBUygpCit7CisgICAgVHlwZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBl
OworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBh
dXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRpb24mIGNvbXBpbGF0aW9uKSB7
CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bihjb21waWxhdGlvbiwgImxvY2siKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9u
KGNvbXBpbGF0aW9uLCAiY21weGNoZyIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Y2hlY2tEaXNhc3NlbWJseSgKKyAgICAgICAgICAgICAgICBjb21waWxhdGlvbiwKKyAgICAgICAg
ICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5KSAtPiBib29sIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIChzdHJzdHIoZGlzYXNzZW1ibHksICJsZHgiKSB8fCBzdHJzdHIo
ZGlzYXNzZW1ibHksICJsZGF4IikpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3Ryc3Ry
KGRpc2Fzc2VtYmx5LCAic3R4IikgfHwgc3Ryc3RyKGRpc2Fzc2VtYmx5LCAic3RseCIpKTsKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJFeHBlY3RlZCB0byBmaW5kIGxkeC9s
ZGF4IGFuZCBzdHgvc3RseCBidXQgZGlkbid0ISIpOworICAgICAgICB9CisgICAgfTsKKyAgICAK
KyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRC
bG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRv
bWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9y
aWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3Rh
bnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAg
ICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3Rh
bnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICByb290LT5zZXRTdWNjZXNz
b3JzKHN1Y2MsIGZhaWwpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdp
bigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJs
eSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7Cisg
ICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nh
c3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMV0sIDEzKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAg
ICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9j
ayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAg
ICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICBwdHIpLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCA0MikpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhmYWlsLCBzdWNjKTsKKyAgICAg
ICAgCisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2Mt
PmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAg
ICAgcHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxl
KHByb2MpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZh
bHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOwor
ICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwg
MTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGlu
dm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
fQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNT
dHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJ
bnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgICAgICAKKyAgICAgICAgYXV0byBj
b2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsK
KyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFs
dWVbMV0gPSAxMzsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIDQy
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRp
Y19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFsdWUp
LCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRp
Y19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgIH0K
KyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwg
dHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlKHByb2MpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAg
ICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9
IDEzOworICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigz
MDApOworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzFdLCAxMyk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkp
KTsKKyAgICAgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAg
ICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlWzJdOworICAg
ICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBDSEVD
SyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEz
KTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBDSEVD
SyghaW52b2tlPGJvb2w+KCpjb2RlLCAmdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1hjaGco
QjM6Ok9wY29kZSBvcGNvZGUpCit7CisgICAgVHlwZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0
eXBlOworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAg
ICBhdXRvIGRvVGhlTWF0aCA9IFsmXSAoVCYgbWVtb3J5LCBUIG9wZXJhbmQpIC0+IFQgeworICAg
ICAgICBUIG9sZFZhbHVlID0gbWVtb3J5OworICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAg
ICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBtZW1vcnkgKz0gb3BlcmFuZDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAg
ICAgICBtZW1vcnkgJj0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIG1lbW9yeSB8PSBvcGVyYW5kOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIG1lbW9y
eSAtPSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNo
Z1hvcjoKKyAgICAgICAgICAgIG1lbW9yeSBePSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgIG1lbW9yeSA9IG9wZXJhbmQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9sZFZh
bHVlOworICAgIH07CisgICAgCisgICAgYXV0byBvbGRWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQg
b3BlcmFuZCkgLT4gVCB7CisgICAgICAgIHJldHVybiBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5k
KTsKKyAgICB9OworICAgIAorICAgIGF1dG8gbmV3VmFsdWUgPSBbJl0gKFQgbWVtb3J5LCBUIG9w
ZXJhbmQpIC0+IFQgeworICAgICAgICBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5kKTsKKyAgICAg
ICAgcmV0dXJuIG1lbW9yeTsKKyAgICB9OworICAgIAorICAgIGF1dG8gY2hlY2tNeURpc2Fzc2Vt
Ymx5ID0gWyZdIChDb21waWxhdGlvbiYgY29tcGlsYXRpb24pIHsKKyAgICAgICAgaWYgKGlzWDg2
KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2si
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KAorICAgICAg
ICAgICAgICAgIGNvbXBpbGF0aW9uLAorICAgICAgICAgICAgICAgIFsmXSAoY29uc3QgY2hhciog
ZGlzYXNzZW1ibHkpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnN0
cihkaXNhc3NlbWJseSwgImxkeCIpIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgImxkYXgiKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICYmIChzdHJzdHIoZGlzYXNzZW1ibHksICJzdHgiKSB8fCBz
dHJzdHIoZGlzYXNzZW1ibHksICJzdGx4IikpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgIkV4cGVjdGVkIHRvIGZpbmQgbGR4L2xkYXggYW5kIHN0eC9zdGx4IGJ1dCBkaWRu
J3QhIik7IAorICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAg
ICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsx
XSA9IDEwMDsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIG9sZFZh
bHVlKDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0Mikp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTAwKTsKKyAgICB9CisgICAgCisgICAgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJv
Yyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVb
Ml07CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAgICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAg
ICAgIGludm9rZTxUPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwg
bmV3VmFsdWUoNSwgNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAg
fQorfQorCiB2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQogewogICAg
IFByb2NlZHVyZSBwcm9jOwpAQCAtMTQzNzAsNiArMTUwMTgsMTMgQEAgZG91YmxlIG5lZ2F0aXZl
WmVybygpCiAgICAgcmV0dXJuIC16ZXJvKCk7CiB9CiAKKyNkZWZpbmUgUlVOX05PVyh0ZXN0KSBk
byB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3Qp
KSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiLi4uXG4iKTsgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgdGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiOiBPSyFcbiIpOyAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKICNkZWZpbmUgUlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTE0NDIxLDEyICsxNTA3NiwxMSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAg
ICAgICAgIHJldHVybiAhZmlsdGVyIHx8ICEhc3RyY2FzZXN0cih0ZXN0TmFtZSwgZmlsdGVyKTsK
ICAgICB9OwogCi0gICAgLy8gV2UgcnVuIHRoaXMgdGVzdCBmaXJzdCBiZWNhdXNlIGl0IGZpZGRs
ZXMgd2l0aCBzb21lCi0gICAgLy8gSlNDIG9wdGlvbnMuCi0gICAgdGVzdFRlcm1pbmFsUGF0Y2hw
b2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpOworICAgIFJVTl9OT1codGVzdFRlcm1pbmFsUGF0
Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpKTsKIAogICAgIFJVTih0ZXN0NDIoKSk7CiAg
ICAgUlVOKHRlc3RMb2FkNDIoKSk7CisgICAgUlVOKHRlc3RMb2FkQWNxNDIoKSk7CiAgICAgUlVO
KHRlc3RMb2FkT2Zmc2V0SW1tOU1heCgpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4
UGx1c09uZSgpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3bygpKTsKQEAg
LTE1MDk5LDE2ICsxNTc1MywyMyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAg
UlVOKHRlc3ROZWczMig1MikpOwogICAgIFJVTih0ZXN0TmVnUHRyKDUzKSk7CiAgICAgUlVOKHRl
c3RTdG9yZUFkZExvYWQzMig0NikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIo
NDYpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTMyKDQ2KSk7CiAgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWQ2NCg0NjAwKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E2NCg0
NjAwKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW02NCg0NjAwKSk7CiAgICAgUlVOKHRl
c3RTdG9yZUFkZExvYWQ4KDQsIExvYWQ4WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2Fk
QWNxOCg0LCBMb2FkOFopKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkRmVuY2VMb2FkQWNxOCg0
LCBMb2FkOFopKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgoNCwgTG9hZDhaKSk7CiAg
ICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4KDQsIExvYWQ4UykpOworICAgIFJVTih0ZXN0U3RvcmVS
ZWxBZGRMb2FkQWNxOCg0LCBMb2FkOFMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgo
NCwgTG9hZDhTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQxNig2LCBMb2FkMTZaKSk7Cisg
ICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRl
c3RTdG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExv
YWQxNig2LCBMb2FkMTZTKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBM
b2FkMTZTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZTKSk7CiAg
ICAgUlVOKHRlc3RTdG9yZUFkZExvYWQzMkluZGV4KDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFk
ZExvYWRJbW0zMkluZGV4KDQ2KSk7CkBAIC0xNTgzMSw2ICsxNjQ5MiwzOSBAQCB2b2lkIHJ1bihj
b25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQyKCkpOwog
ICAgIFJVTih0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RPcHRpbWl6
ZU1hdGVyaWFsaXphdGlvbigpKTsKKyAgICAKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50
OF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50MTZfdD4oKSk7CisgICAgUlVO
KHRlc3RBdG9taWNXZWFrQ0FTPGludDMyX3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NB
UzxpbnQ2NF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ4X3Q+KCkpOwor
ICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDE2X3Q+KCkpOworICAgIFJVTih0ZXN0QXRv
bWljU3Ryb25nQ0FTPGludDMyX3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGlu
dDY0X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdBZGQp
KTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ0FkZCkpOworICAg
IFJVTih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRl
c3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50OF90PihBdG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGlu
dDE2X3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4o
QXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNY
Y2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ09yKSk7
CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0
b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hn
PGludDhfdD4oQXRvbWljWGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90
PihBdG9taWNYY2hnU3ViKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21p
Y1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ1N1
YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAg
ICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0
ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9t
aWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8
aW50OF90PihBdG9taWNYY2hnKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0
b21pY1hjaGcpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZykp
OworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnKSk7CiAKICAgICBS
VU4odGVzdFdhc21Cb3VuZHNDaGVjaygwKSk7CiAgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2so
MTAwKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCShyZXZp
c2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCB1bnNpZ25lZCBBcmc6OmpzSGFzaCgp
IGNvbnN0CiAgICAgY2FzZSBSZWxDb25kOgogICAgIGNhc2UgUmVzQ29uZDoKICAgICBjYXNlIERv
dWJsZUNvbmQ6CisgICAgY2FzZSBTdGF0dXNDb25kOgogICAgIGNhc2UgV2lkdGhBcmc6CiAgICAg
ICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpOwogICAgICAgICBi
cmVhazsKQEAgLTE4Miw2ICsxODMsOSBAQCB2b2lkIEFyZzo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgb3V0LnByaW50KGFzRG91Ymxl
Q29uZGl0aW9uKCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0dXNDb25kOgorICAg
ICAgICBvdXQucHJpbnQoYXNTdGF0dXNDb25kaXRpb24oKSk7CisgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIG91dC5wcmludChwb2ludGVyRHVtcChzcGVjaWFsKCkp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQxLDYgKzI0NSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6RG91YmxlQ29uZDoKICAgICAg
ICAgb3V0LnByaW50KCJEb3VibGVDb25kIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFy
Zzo6U3RhdHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KCJTdGF0dXNDb25kIik7CisgICAgICAg
IHJldHVybjsKICAgICBjYXNlIEFyZzo6U3BlY2lhbDoKICAgICAgICAgb3V0LnByaW50KCJTcGVj
aWFsIik7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NSw2ICsyOTIsOSBAQCB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgogICAg
ICAgICBvdXQucHJpbnQoIkVhcmx5RGVmIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFy
Zzo6RWFybHlaRGVmOgorICAgICAgICBvdXQucHJpbnQoIkVhcmx5WkRlZiIpOworICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgIG91dC5wcmludCgiU2NyYXRj
aCIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QXJnLmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQXJnLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgICAg
ICBSZWxDb25kLAogICAgICAgICBSZXNDb25kLAogICAgICAgICBEb3VibGVDb25kLAorICAgICAg
ICBTdGF0dXNDb25kLAogICAgICAgICBTcGVjaWFsLAogICAgICAgICBXaWR0aEFyZwogICAgIH07
CkBAIC0xNTEsNiArMTUyLDggQEAgcHVibGljOgogICAgICAgICAvLyBhcyBVc2UgaGFzIHVuZGVm
aW5lZCBiZWhhdmlvcjogdGhlIHVzZSBtYXkgaGFwcGVuIGJlZm9yZSB0aGUgZGVmLCBvciBpdCBt
YXkgaGFwcGVuIGFmdGVyCiAgICAgICAgIC8vIGl0LgogICAgICAgICBFYXJseURlZiwKKyAgICAg
ICAgICAgIAorICAgICAgICBFYXJseVpEZWYsCiAKICAgICAgICAgLy8gU29tZSBpbnN0cnVjdGlv
bnMgbmVlZCBhIHNjcmF0Y2ggcmVnaXN0ZXIuIFdlIG1vZGVsIHRoaXMgYnkgc2F5aW5nIHRoYXQg
dGhlIHRlbXBvcmFyeSBpcwogICAgICAgICAvLyBkZWZpbmVkIGVhcmx5IGFuZCB1c2VkIGxhdGUu
IFRoaXMgcm9sZSBpbXBsaWVzIHRoYXQuCkBAIC0xODYsNiArMTg5LDcgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBFYXJs
eURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMDYsNiArMjEw
LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgU2NyYXRj
aDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0yMjgsNiArMjMzLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6
CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAg
Y2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gcm9sZTsKICAgICAgICAgY2FzZSBV
c2U6CiAgICAgICAgICAgICByZXR1cm4gQ29sZFVzZTsKQEAgLTI1Myw2ICsyNTksNyBAQCBwdWJs
aWM6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAg
ICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0yNzQsNiArMjgxLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAg
IGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJs
eVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTQsNiArMzAyLDcgQEAgcHVibGljOgogICAgICAgICBj
YXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlWkRlZjoKICAgICAgICAgY2FzZSBFYXJseURlZjoK
KyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMTUsNiArMzI0LDcgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgY2Fz
ZSBTY3JhdGNoOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMzMCw2
ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBM
YXRlVXNlOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoK
ICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU4LDYgKzM2OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZVpE
ZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MzMsNiArNTQ1LDE0
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMg
QXJnIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24p
CisgICAgeworICAgICAgICBBcmcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gU3Rh
dHVzQ29uZDsKKyAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY29uZGl0aW9uOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHN0YXRpYyBBcmcgc3BlY2lhbChBaXI6OlNwZWNp
YWwqIHNwZWNpYWwpCiAgICAgewogICAgICAgICBBcmcgcmVzdWx0OwpAQCAtNjU4LDEyICs2Nzgs
MTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4ga2luZCgpID09IERvdWJsZUNvbmQ7CiAgICAg
fQogCisgICAgYm9vbCBpc1N0YXR1c0NvbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGtpbmQoKSA9PSBTdGF0dXNDb25kOworICAgIH0KKwogICAgIGJvb2wgaXNDb25kaXRpb24oKSBj
b25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxD
b25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAg
ICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NTEsNiArODc3LDcgQEAg
cHVibGljOgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAg
ICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAg
IGNhc2UgU3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtODcyLDYgKzg5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25k
OgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAg
ICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2Ug
V2lkdGhBcmc6CiAgICAgICAgIGNhc2UgSW52YWxpZDoKQEAgLTEwNTgsNiArMTA4Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAg
ICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBj
YXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTExNzcsNiArMTIwNiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uPihtX29mZnNldCk7CiAgICAg
fQogICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gYXNTdGF0dXNDb25k
aXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU3RhdHVzQ29uZCgpKTsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24+
KG1fb2Zmc2V0KTsKKyAgICB9CisgICAgCiAgICAgLy8gVGVsbHMgeW91IGlmIHRoZSBBcmcgaXMg
aW52ZXJ0aWJsZS4gT25seSBjb25kaXRpb24gYXJndW1lbnRzIGFyZSBpbnZlcnRpYmxlLCBhbmQg
ZXZlbiBmb3IgdGhvc2UsIHRoZXJlCiAgICAgLy8gYXJlIGEgZmV3IGV4Y2VwdGlvbnMgLSBub3Rh
Ymx5IE92ZXJmbG93IGFuZCBTaWduZWQuCiAgICAgYm9vbCBpc0ludmVydGlibGUoKSBjb25zdApA
QCAtMTE4NCw2ICsxMjE5LDcgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgewog
ICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAg
Y2FzZSBTdGF0dXNDb25kOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2Ug
UmVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6aXNJbnZlcnRpYmxl
KGFzUmVzdWx0Q29uZGl0aW9uKCkpOwpAQCAtMTIwNCw2ICsxMjQwLDggQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuIHJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1Jlc3VsdENv
bmRpdGlvbigpKSk7CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgICAgIHJldHVy
biBkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNEb3VibGVDb25kaXRpb24oKSkp
OworICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CisgICAgICAgICAgICByZXR1cm4gc3RhdHVzQ29u
ZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzU3RhdHVzQ29uZGl0aW9uKCkpKTsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICByZXR1cm4gQXJnKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckJhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNiAr
MzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogCiBjb25z
dCBjaGFyKiBjb25zdCBCYXNpY0Jsb2NrOjpkdW1wUHJlZml4ID0gIiMiOwogCit2b2lkIEJhc2lj
QmxvY2s6OnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrIHRhcmdldCkKK3sKKyAgICBtX3N1
Y2Nlc3NvcnMucmVzaXplKDEpOworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRhcmdldDsKK30KKwor
dm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YWtlbiwgRnJl
cXVlbnRlZEJsb2NrIG5vdFRha2VuKQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMik7Cisg
ICAgbV9zdWNjZXNzb3JzWzBdID0gdGFrZW47CisgICAgbV9zdWNjZXNzb3JzWzFdID0gbm90VGFr
ZW47Cit9CisKIGJvb2wgQmFzaWNCbG9jazo6YWRkUHJlZGVjZXNzb3IoQmFzaWNCbG9jayogYmxv
Y2spCiB7CiAgICAgcmV0dXJuIEIzOjphZGRQcmVkZWNlc3Nvcih0aGlzLCBibG9jayk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkocmV2aXNp
b24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMywxMSBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9u
U2V0OworCituYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiBjbGFz
cyBDb2RlOwpAQCAtOTksNiArMTAzLDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN1Y2Nlc3Nvckxp
c3QmIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KICAgICBTdWNj
ZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAKKyAgICB2
b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKTsKKyAgICB2b2lkIHNldFN1Y2Nlc3Nv
cnMoRnJlcXVlbnRlZEJsb2NrLCBGcmVxdWVudGVkQmxvY2spOworCiAgICAgQmFzaWNCbG9jayog
c3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3Nvcihp
bmRleCkuYmxvY2soKTsgfQogICAgIEJhc2ljQmxvY2sqJiBzdWNjZXNzb3JCbG9jayh1bnNpZ25l
ZCBpbmRleCkgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAgU3VjY2Vz
c29yQ29sbGVjdGlvbjxCYXNpY0Jsb2NrLCBTdWNjZXNzb3JMaXN0PiBzdWNjZXNzb3JCbG9ja3Mo
KQpAQCAtMTMzLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrSW5z
ZXJ0aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBDb2RlOwogICAgIGZyaWVuZCBjbGFzcyBJbnNl
cnRpb25TZXQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBCMzo6R2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIAogICAgIEJhc2ljQmxvY2sodW5zaWduZWQgaW5kZXgs
IGRvdWJsZSBmcmVxdWVuY3kpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBaXJCbG9j
a0luc2VydGlvblNldC5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckJh
c2ljQmxvY2suaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNv
cnQuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewor
CitCbG9ja0luc2VydGlvblNldDo6QmxvY2tJbnNlcnRpb25TZXQoQ29kZSAmY29kZSkKKyAgICA6
IEdlbmVyaWNCbG9ja0luc2VydGlvblNldChjb2RlLm1fYmxvY2tzKQoreworfQorCitCbG9ja0lu
c2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KCkKK3sKK30KKworfSB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2Nr
SW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5o
IgorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFt
ZXNwYWNlIEFpciB7CisKK2NsYXNzIEluc2VydGlvblNldDsKKwordHlwZWRlZiBHZW5lcmljQmxv
Y2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5zZXJ0aW9u
OworCitjbGFzcyBCbG9ja0luc2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNlcnRp
b25TZXQ8QmFzaWNCbG9jaz4geworcHVibGljOgorICAgIEJsb2NrSW5zZXJ0aW9uU2V0KENvZGUm
KTsKKyAgICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGV2ZW50dWFsbHkgaW1wbGVtZW50IEIzOjpCbG9ja0luc2VydGlvblNldCdzIHNwbGl0Rm9y
d2FyZCgpLgorfTsKKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYg
Ly8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
RHVtcEFzSlMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRHVtcEFzSlMuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI0NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFpckR1bXBBc0pTLmgiCi0KLSNpZiBFTkFCTEUo
QjNfSklUKQotCi0jaW5jbHVkZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFpckluc3RJbmxpbmVz
LmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKLQot
bmFtZXNwYWNlIHsKLQotQ1N0cmluZyB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KHVuc2lnbmVkIGlu
ZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoImJiIiwgaW5kZXgpOwotfQotCi1DU3RyaW5n
IHZhck5hbWUoQmFzaWNCbG9jayogYmxvY2spCi17Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JCbG9j
a0F0SW5kZXgoYmxvY2stPmluZGV4KCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWVGb3JTdGFja1Ns
b3RBdEluZGV4KHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoInNsb3Qi
LCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShTdGFja1Nsb3QqIHNsb3QpCi17Ci0gICAg
cmV0dXJuIHZhck5hbWVGb3JTdGFja1Nsb3RBdEluZGV4KHNsb3QtPmluZGV4KCkpOwotfQotCi1D
U3RyaW5nIHZhck5hbWUoUmVnIHJlZykKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJSZWcuIiwg
cmVnLmRlYnVnTmFtZSgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lRm9yVG1wV2l0aEJhbmtBbmRJ
bmRleChCYW5rIGJhbmssIHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmco
YmFuayA9PSBGUCA/ICJmIiA6ICIiLCAidG1wIiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZhck5h
bWUoVG1wIHRtcCkKLXsKLSAgICBpZiAodG1wLmlzUmVnKCkpCi0gICAgICAgIHJldHVybiB2YXJO
YW1lKHRtcC5yZWcoKSk7Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZEluZGV4
KEFyZyh0bXApLmJhbmsoKSwgdG1wLnRtcEluZGV4KCkpOwotfQotCi19IC8vIGFub255bW91cyBu
YW1lc3BhY2UKLQotdm9pZCBkdW1wQXNKUyhDb2RlJiBjb2RlLCBQcmludFN0cmVhbSYgb3V0KQot
ewotICAgIG91dC5wcmludGxuKCJsZXQgY29kZSA9IG5ldyBDb2RlKCk7Iik7Ci0gICAgCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGUuc2l6ZSgpOyArK2kpCi0gICAgICAgIG91dC5w
cmludGxuKCJsZXQgIiwgdmFyTmFtZUZvckJsb2NrQXRJbmRleChpKSwgIiA9IGNvZGUuYWRkQmxv
Y2soKTsiKTsKLSAgICAKLSAgICBvdXQucHJpbnRsbigibGV0IGhhc2g7Iik7Ci0KLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZS5zdGFja1Nsb3RzKCkuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgU3RhY2tTbG90KiBzbG90ID0gY29kZS5zdGFja1Nsb3RzKClbaV07Ci0gICAgICAgIGlm
IChzbG90KSB7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZhck5hbWUoc2xvdCks
ICIgPSBjb2RlLmFkZFN0YWNrU2xvdCgiLCBzbG90LT5ieXRlU2l6ZSgpLCAiLCAiLCBzbG90LT5r
aW5kKCksICIpOyIpOwotICAgICAgICAgICAgaWYgKHNsb3QtPm9mZnNldEZyb21GUCgpKQotICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoc2xvdCksICIuc2V0T2Zmc2V0RnJvbUZQ
KCIsIHNsb3QtPm9mZnNldEZyb21GUCgpLCAiKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxu
KCJoYXNoID0gIiwgdmFyTmFtZShzbG90KSwgIi5oYXNoKCk7Iik7Ci0gICAgICAgICAgICBvdXQu
cHJpbnRsbigiaWYgKGhhc2ggIT0gIiwgc2xvdC0+anNIYXNoKCksICIpIik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRsbigiICAgIHRocm93IG5ldyBFcnJvcihcIkJhZCBoYXNoOiBcIiArIGhhc2gp
OyIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJjb2RlLmFkZFN0
YWNrU2xvdCgxLCBTcGlsbCk7Iik7Ci0gICAgfQotICAgIAotICAgIGZvckVhY2hCYW5rKAotICAg
ICAgICBbJl0gKEJhbmsgYmFuaykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29k
ZS5udW1UbXBzKGJhbmspOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0g
ICAgICAgICAgICAgICAgICAgICJsZXQgIiwgdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5kSW5kZXgo
YmFuaywgaSksICIgPSBjb2RlLm5ld1RtcCgiLCBiYW5rLCAiKTsiKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSk7Ci0gICAgCi0gICAgb3V0LnByaW50bG4oImxldCBpbnN0OyIpOwotICAgIG91
dC5wcmludGxuKCJsZXQgYXJnOyIpOwotICAgIAotICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sg
OiBjb2RlKSB7Ci0gICAgICAgIGZvciAoRnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2Nr
LT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAg
ICAgIHZhck5hbWUoYmxvY2spLCAiLnN1Y2Nlc3NvcnMucHVzaChuZXcgRnJlcXVlbnRlZEJsb2Nr
KCIsCi0gICAgICAgICAgICAgICAgdmFyTmFtZShzdWNjZXNzb3IuYmxvY2soKSksICIsICIsIHN1
Y2Nlc3Nvci5mcmVxdWVuY3koKSwgIikpOyIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycygpKQot
ICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayksICIucHJlZGVjZXNzb3JzLnB1
c2goIiwgdmFyTmFtZShwcmVkZWNlc3NvciksICIpOyIpOwotICAgICAgICAKLSAgICAgICAgZm9y
IChJbnN0JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgZG8gc29tZXRoaW5nIGZvciBmbGFncy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3NTEKLSAgICAgICAgICAgIG91dC5wcmludGxu
KCJpbnN0ID0gbmV3IEluc3QoIiwgaW5zdC5raW5kLm9wY29kZSwgIik7Iik7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAgICBbJl0gKEFy
ZyYgYXJnLCBBcmc6OlJvbGUsIEJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAoYXJnLmtpbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6SW52YWxp
ZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VG1wOgotICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVUbXAoIiwgdmFyTmFtZShhcmcudG1w
KCkpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbW06Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUltbSgiLCBhcmcu
dmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6QmlnSW1tOgot
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVCaWdJbW0oIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSksICIsICIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkgPj4g
MzIpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaXRJbW06Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUJpdEltbSgi
LCBhcmcudmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6Qml0
SW1tNjQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUJpdEltbTY0KCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkpLCAiLCAi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52
YWx1ZSgpID4+IDMyKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6QWRk
cjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlQWRkcigiLCB2YXJOYW1lKGFyZy5iYXNlKCkp
LCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OlN0YWNrOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVTdGFjaygiLCB2YXJOYW1lKGFy
Zy5zdGFja1Nsb3QoKSksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFyZzo6Q2FsbEFyZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKCJhcmcgPSBBcmcuY3JlYXRlQ2FsbEFyZygiLCBhcmcub2Zmc2V0KCksICIpOyIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkluZGV4OgotICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFy
Zy5jcmVhdGVJbmRleCgiLCB2YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhck5hbWUoYXJnLmluZGV4KCkpLCAiLCAiLCBhcmcuc2NhbGUoKSwg
IiwgIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpSZWxDb25kOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFy
Zy5jcmVhdGVSZWxDb25kKCIsIGFyZy5hc1JlbGF0aW9uYWxDb25kaXRpb24oKSwgIik7Iik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6UmVzQ29uZDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlUmVzQ29uZCgiLCBhcmcuYXNSZXN1
bHRDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RG91
YmxlQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcu
Y3JlYXRlRG91YmxlQ29uZCgiLCBhcmcuYXNEb3VibGVDb25kaXRpb24oKSwgIik7Iik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U3BlY2lhbDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlU3BlY2lhbCgpOyIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBcmc6OldpZHRoQXJnOgotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVXaWR0aEFyZygiLCBhcmcud2lkdGgoKSwgIik7
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Imluc3QuYXJncy5wdXNoKGFyZyk7Iik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGluc3QuaGFzTm9uQXJnRWZmZWN0cygpKQotICAgICAgICAgICAgICAgICAg
ICBvdXQucHJpbnRsbigiaW5zdC5wYXRjaEhhc05vbkFyZ0VmZmVjdHMgPSB0cnVlOyIpOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhRWFy
bHlDbG9iYmVyZWRSZWdzID0gbmV3IFNldCgpOyIpOwotICAgICAgICAgICAgICAgIG91dC5wcmlu
dGxuKCJpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncyA9IG5ldyBTZXQoKTsiKTsKLSAgICAgICAgICAg
ICAgICBpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkuZm9yRWFjaCgKLSAgICAgICAgICAg
ICAgICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnRsbigiaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAi
KTsiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgaW5zdC5leHRy
YUNsb2JiZXJlZFJlZ3MoKS5mb3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZyBy
ZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhQ2xv
YmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImlu
c3QucGF0Y2hBcmdEYXRhID0gW107Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoQXJn
KAotICAgICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5rIGJh
bmssIFdpZHRoIHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdC5wYXRjaEFyZ0RhdGEucHVzaCh7cm9s
ZTogQXJnLiIsIHJvbGUsICIsIHR5cGU6ICIsIGJhbmssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiwgd2lkdGg6ICIsIHdpZHRoLCAifSk7Iik7Ci0gICAgICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5zdC5raW5k
Lm9wY29kZSA9PSBDQ2FsbCB8fCBpbnN0LmtpbmQub3Bjb2RlID09IENvbGRDQ2FsbCkgewotICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsVHlwZSA9ICIsIGluc3Qub3JpZ2lu
LT50eXBlKCkpOwotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsQXJnVHlw
ZXMgPSBbXTsiKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgaW5z
dC5vcmlnaW4tPm51bUNoaWxkcmVuKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgb3V0LnBy
aW50bG4oImluc3QuY0NhbGxBcmdUeXBlcy5wdXNoKCIsIGluc3Qub3JpZ2luLT5jaGlsZChpKS0+
dHlwZSgpLCAiKTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAg
b3V0LnByaW50bG4oImhhc2ggPSBpbnN0Lmhhc2goKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmlu
dGxuKCJpZiAoaGFzaCAhPSAiLCBpbnN0LmpzSGFzaCgpLCAiKSIpOwotICAgICAgICAgICAgb3V0
LnByaW50bG4oIiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgaGFzaDogXCIgKyBoYXNoKTsiKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayksICIu
YXBwZW5kKGluc3QpOyIpOwotICAgICAgICB9Ci0gICAgfQotfQotCi19IH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMzo6QWlyCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5oCShyZXZpc2lvbiAyMTMyNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQotI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7Ci0KLWNsYXNzIENvZGU7Ci0KLS8vIFRoaXMgaXMgdXNlZCBmb3IgYmVu
Y2htYXJraW5nLiBWYXJpb3VzIG9wZXJhdGlvbnMgb24gQWlyIGFyZSBpbnRlcmVzdGluZyBmcm9t
IGEgYmVuY2htYXJraW5nCi0vLyBzdGFuZHBvaW50LiBXZSBjYW4gd3JpdGUgc29tZSBBaXIgcGhh
c2VzIGluIEpTIGFuZCB0aGVuIHVzZSB0aGF0IHRvIGJlbmNobWFyayBKUy4gVGhlIGJlbmNobWFy
awotLy8gaXMgY2FsbGVkIEpTQWlyLCBhbmQgaXQncyBpbiBQZXJmb3JtYW5jZVRlc3RzL0pTQWly
Lgotdm9pZCBkdW1wQXNKUyhDb2RlJiwgUHJpbnRTdHJlYW0mKTsKLQotfSB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTMy
NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBaXJBbGxvY2F0ZVJlZ2lz
dGVyc0J5R3JhcGhDb2xvcmluZy5oIgogI2luY2x1ZGUgIkFpckFsbG9jYXRlU3RhY2suaCIKICNp
bmNsdWRlICJBaXJDb2RlLmgiCi0jaW5jbHVkZSAiQWlyRHVtcEFzSlMuaCIKICNpbmNsdWRlICJB
aXJFbGltaW5hdGVEZWFkQ29kZS5oIgogI2luY2x1ZGUgIkFpckZpeE9idmlvdXNTcGlsbHMuaCIK
ICNpbmNsdWRlICJBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKQEAgLTczLDYgKzcyLDgg
QEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgICAgICBkYXRhTG9n
KCJJbml0aWFsIGFpcjpcbiIpOwogICAgICAgICBkYXRhTG9nKGNvZGUpOwogICAgIH0KKyAgICAK
KyAgICBzaW1wbGlmeUNGRyhjb2RlKTsKIAogICAgIGxvd2VyTWFjcm9zKGNvZGUpOwogCkBAIC0x
MDcsMjMgKzEwOCwxMSBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAg
ICAgLy8gZG9lcyB0aGluZ3MgbGlrZSBpZGVudGlmeSB3aGljaCBjYWxsZWUtc2F2ZXMgd2UncmUg
dXNpbmcgYW5kIHNhdmVzIHRoZW0uCiAgICAgaGFuZGxlQ2FsbGVlU2F2ZXMoY29kZSk7CiAgICAg
Ci0gICAgaWYgKE9wdGlvbnM6OmR1bXBBaXJBc0pTQmVmb3JlQWxsb2NhdGVTdGFjaygpKSB7Ci0g
ICAgICAgIGRhdGFMb2coIkR1bXBpbmcgQWlyIGFzIEpTIGJlZm9yZSBhbGxvY2F0ZVN0YWNrOlxu
Iik7Ci0gICAgICAgIGR1bXBBc0pTKGNvZGUsIFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAgICAgIGRh
dGFMb2coIkFpciBoYXNoOiAiLCBjb2RlLmpzSGFzaCgpLCAiXG4iKTsKLSAgICB9Ci0KICAgICAv
LyBUaGlzIHR1cm5zIGFsbCBTdGFjayBhbmQgQ2FsbEFyZyBBcmdzIGludG8gQWRkciBhcmdzIHRo
YXQgdXNlIHRoZSBmcmFtZSBwb2ludGVyLiBJdCBkb2VzCiAgICAgLy8gdGhpcyBieSBmaXJzdC1m
aXQgYWxsb2NhdGluZyBzdGFjayBzbG90cy4gSXQgc2hvdWxkIGJlIHByZXR0eSBkYXJuIGNsb3Nl
IHRvIG9wdGltYWwsIHNvIHdlCiAgICAgLy8gc2hvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQg
dGhpcyB2ZXJ5IG11Y2guCiAgICAgYWxsb2NhdGVTdGFjayhjb2RlKTsKICAgICAKLSAgICBpZiAo
T3B0aW9uczo6ZHVtcEFpckFmdGVyQWxsb2NhdGVTdGFjaygpKSB7Ci0gICAgICAgIGRhdGFMb2co
IkR1bXBpbmcgQWlyIGFmdGVyIGFsbG9jYXRlU3RhY2s6XG4iKTsKLSAgICAgICAgZGF0YUxvZyhj
b2RlKTsKLSAgICAgICAgZGF0YUxvZygiQWlyIGhhc2g6ICIsIGNvZGUuanNIYXNoKCksICJcbiIp
OwotICAgIH0KLQogICAgIC8vIElmIHdlIGNvYWxlc2NlZCBtb3ZlcyB0aGVuIHdlIGNhbiB1bmJy
ZWFrIGNyaXRpY2FsIGVkZ2VzLiBUaGlzIGlzIHRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcwogICAg
IC8vIHBoYXNlLgogICAgIHNpbXBsaWZ5Q0ZHKGNvZGUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAkocmV2aXNpb24gMjEzMjYxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzcsNiArMjc3LDY1IEBAIGlubGluZSBib29sIGlzWDg2VURpdjY0VmFsaWQoY29u
c3QgSW5zdCYKICAgICByZXR1cm4gaXNYODZEaXZIZWxwZXJWYWxpZChpbnN0KTsKIH0KIAoraW5s
aW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVNWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworI2lm
IENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgc3dpdGNoIChpbnN0LmFyZ3Muc2l6ZSgpKSB7
CisgICAgY2FzZSAzOgorICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdID09IFRtcChYODZSZWdp
c3RlcnM6OmVheCk7CisgICAgY2FzZSA1OgorICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzFdID09
IFRtcChYODZSZWdpc3RlcnM6OmVheCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyNlbmRpZiAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorfQorCitpbmxp
bmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7
CisgICAgcmV0dXJuIGluc3QuYXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworfQor
CitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0KQor
eworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUg
Ym9vbCBpc0F0b21pY1N0cm9uZ0NBUzE2VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICBy
ZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNB
dG9taWNTdHJvbmdDQVMzMlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlz
QXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ry
b25nQ0FTNjRWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0
cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9u
Z0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21p
Y1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0
cm9uZ0NBUzE2VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNCcmFuY2hB
dG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9t
aWNTdHJvbmdDQVMzMlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJh
bmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNo
QXRvbWljU3Ryb25nQ0FTNjRWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBp
c0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCiB9IH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAy
MTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVz
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTE3LDYgKzExNyw3IEBAIEFkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICB4
ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2
OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKICAgICB4ODY6IFRtcCwgSW5kZXgKIApA
QCAtMTM1LDkgKzEzNiwxMiBAQCB4ODY6IEFkZDE2IFU6RzoxNiwgVUQ6RzoxNgogNjQ6IEFkZDY0
IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4
ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2
OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKIAog
NjQ6IEFkZDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBJbW0sIFRtcCwgVG1wCkBAIC0x
NjYsOSArMTcwLDEyIEBAIHg4NjogQWRkRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiBTdWIzMiBVOkc6
MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4Njog
SW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IElu
ZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogCiBhcm02
NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIsIEQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTE3
Niw5ICsxODMsMTIgQEAgYXJtNjQ6IFN1YjMyIFU6RzozMiwgVTpHOjMyLCBEOkc6MzIKIDY0OiBT
dWI2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisg
ICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAg
IHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4
CiAKIGFybTY0OiBTdWI2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRt
cApAQCAtMjA0LDkgKzIxNCwxMiBAQCB4ODY6IFN1YkZsb2F0IFU6RjozMiwgVUQ6RjozMgogTmVn
MzIgVVpEOkc6MzIKICAgICBUbXAKICAgICB4ODY6IEFkZHIKKyAgICB4ODY6IEluZGV4CiAKIDY0
OiBOZWc2NCBVRDpHOjY0CiAgICAgVG1wCisgICAgeDg2OiBBZGRyCisgICAgeDg2OiBJbmRleAog
CiBhcm02NDogTmVnYXRlRG91YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAgLTMz
MCw4ICszNDMsMTEgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAg
eDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAg
ICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRk
cgorICAgIHg4NjogSW1tLCBJbmRleAogCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2
NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTMzOSw3ICszNTUsMTMgQEAgQW5kMzIgVTpHOjMyLCBV
WkQ6RzozMgogCiB4ODZfNjQ6IEFuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCi0g
ICAgeDg2OiBJbW0sIFRtcAorICAgIEltbSwgVG1wCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICBBZGRyLCBUbXAKKyAgICBJ
bmRleCwgVG1wCiAKIEFuZERvdWJsZSBVOkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBU
bXAsIFRtcApAQCAtNDU5LDggKzQ4MSwxMSBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBU
bXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4Njog
VG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAg
eDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IE9yNjQgVTpHOjY0LCBV
Okc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ2OSw2ICs0OTQsMTIgQEAgT3Iz
MiBVOkc6MzIsIFVaRDpHOjMyCiA2NDogT3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRt
cAogICAgIHg4NjogSW1tLCBUbXAKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJ
bmRleAorICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBB
ZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKIAogWG9yMzIgVTpHOjMyLCBVOkc6MzIsIFpE
Okc6MzIKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00ODAsOCArNTExLDExIEBAIFhvcjMyIFU6Rzoz
MiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6IFRt
cCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2
OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKIAog
NjQ6IFhvcjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00
OTAsNiArNTI0LDExIEBAIFhvcjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBYb3I2NCBVOkc6NjQs
IFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAs
IEluZGV4CisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICB4ODY6
IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBUbXAKIAogYXJt
NjQ6IE5vdDMyIFU6RzozMiwgWkQ6RzozMgpAQCAtNDk4LDEzICs1MzcsMTUgQEAgYXJtNjQ6IE5v
dDMyIFU6RzozMiwgWkQ6RzozMgogeDg2OiBOb3QzMiBVWkQ6RzozMgogICAgIFRtcAogICAgIEFk
ZHIKKyAgICBJbmRleAogCiBhcm02NDogTm90NjQgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRt
cAogCi14ODY6IE5vdDY0IFVEOkc6NjQKK3g4Nl82NDogTm90NjQgVUQ6Rzo2NAogICAgIFRtcAog
ICAgIEFkZHIKKyAgICBJbmRleAogCiBhcm02NDogQWJzRG91YmxlIFU6Rjo2NCwgRDpGOjY0CiAg
ICAgVG1wLCBUbXAKQEAgLTY2OCwyNyArNzA5LDM4MyBAQCBMb2FkOCBVOkc6OCwgWkQ6RzozMgog
ICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTggVTpHOjgsIFpEOkc6MzIK
KyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKIFN0b3JlOCBVOkc6OCwgRDpHOjgKICAg
ICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgeDg2
OiBJbW0sIEFkZHIKIAorU3RvcmVSZWw4IFU6Rzo4LCBEOkc6OAorICAgIFRtcCwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorCiBM
b2FkOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJ
bmRleCwgVG1wCiAKK0xvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgorICAg
IEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogTG9hZDE2IFU6RzoxNiwgWkQ6RzozMgogICAg
IEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTE2IFU6RzoxNiwgWkQ6RzozMgor
ICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKwogTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiBV
Okc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3Ex
NlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCisgICAgQWRkciwgVG1wCisgICAgSW5k
ZXgsIFRtcAorCiBTdG9yZTE2IFU6RzoxNiwgRDpHOjE2CiAgICAgVG1wLCBJbmRleAogICAgIFRt
cCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisKK1N0b3Jl
UmVsMTYgVTpHOjE2LCBEOkc6MTYKKyAgICBUbXAsIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
eDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKworTG9hZEFjcTMyIFU6RzozMiwg
WkQ6RzozMgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworU3RvcmVSZWwzMiBVOkc6
MzIsIFpEOkc6MzIKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0s
IEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKworNjQ6IExvYWRBY3E2NCBVOkc6NjQsIFpEOkc6
NjQKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCisKKzY0OiBTdG9yZVJlbDY0IFU6Rzo2
NCwgWkQ6Rzo2NAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwg
QWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorCisjIFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4K
KyMgRklYTUU6IFRoaXMgZm9ybXVsYXRpb24gbWVhbnMgdGhhdCB0aGUgYm9vbGVhbiByZXN1bHQg
Y2Fubm90IGJlIHB1dCBpbiBlYXgsIGV2ZW4gdGhvdWdoIGFsbCB1c2VycworIyBvZiB0aGlzIHdv
dWxkIGJlIE9LIHdpdGggdGhhdC4KK3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIsIFVEOkc6
OCwgVTpHOjgsIFVEOkc6OCwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRy
LCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9t
aWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiwgWkQ6Rzo4Cisg
ICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAq
LCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6
MzIsIFU6RzozMiwgVUQ6RzozMiwgWkQ6Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBB
ZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2XzY0
OiBBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCwgWkQ6
Rzo4CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVM4IFVEOkc6OCwg
VTpHOjgsIFVEOkc6OAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgK
KworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYKKyAgICBU
bXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3Ryb25n
Q0FTMzIgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAg
VG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1N0cm9uZ0NBUzY0IFVEOkc6NjQsIFU6
Rzo2NCwgVUQ6Rzo2NAorICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgK
KworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6
Rzo4IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXND
b25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYgVTpH
OjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYgL2JyYW5jaAorICAgIFN0YXR1c0NvbmQsIFRt
cCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBC
cmFuY2hBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiAv
YnJhbmNoCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwg
VG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0IFU6Rzoz
MiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2gKKyAgICBTdGF0dXNDb25kLCBUbXAq
LCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRv
bWljQWRkOCBVOkc6OCwgVUQ6Rzo4CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQxNiBVOkc6MTYsIFVE
Okc6MTYKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
Nl82NDogQXRvbWljQWRkNjQgVTpHOjY0LCBVRDpHOjY0CisgICAgSW1tLCBBZGRyCisgICAgSW1t
LCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWI4
IFU6Rzo4LCBVRDpHOjgKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjE2IFU6RzoxNiwgVUQ6RzoxNgor
ICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisKK3g4NjogQXRvbWljU3ViMzIgVTpHOjMyLCBVRDpHOjMyCisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBB
dG9taWNTdWI2NCBVOkc6NjQsIFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDggVTpHOjgs
IFVEOkc6OAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1t
LCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwor
eDg2OiBBdG9taWNBbmQzMiBVOkc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY0Fu
ZDY0IFU6Rzo2NCwgVUQ6Rzo2NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3I4IFU6Rzo4LCBVRDpHOjgK
KyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY09yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNPcjMyIFU6RzozMiwgVUQ6RzozMgorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljT3I2NCBVOkc6NjQs
IFVEOkc6NjQKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjggVTpHOjgsIFVEOkc6OAorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljWG9yMTYgVTpHOjE2LCBVRDpHOjE2CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYb3IzMiBV
Okc6MzIsIFVEOkc6MzIKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hvcjY0IFU6Rzo2NCwgVUQ6Rzo2
NAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogQXRvbWljTmVnOCBVRDpHOjgKKyAgICBBZGRyCisgICAgSW5kZXgKKwor
eDg2OiBBdG9taWNOZWcxNiBVRDpHOjE2CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRv
bWljTmVnMzIgVUQ6RzozMgorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0b21pY05l
ZzY0IFVEOkc6NjQKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3Q4IFVEOkc6
OAorICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDE2IFVEOkc6MTYKKyAgICBB
ZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QzMiBVRDpHOjMyCisgICAgQWRkcgorICAg
IEluZGV4CisKK3g4Nl82NDogQXRvbWljTm90NjQgVUQ6Rzo2NAorICAgIEFkZHIKKyAgICBJbmRl
eAorCit4ODY6IEF0b21pY1hjaGdBZGQ4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQxNiBVRDpHOjE2LCBVRDpHOjE2Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQzMiBVRDpH
OjMyLCBVRDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0
b21pY1hjaGdBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY1hjaGc4IFVEOkc6OCwgVUQ6Rzo4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGcxNiBVRDpHOjE2LCBVRDpHOjE2CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGczMiBVRDpHOjMyLCBV
RDpHOjMyCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hj
aGc2NCBVRDpHOjY0LCBVRDpHOjY0CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCith
cm02NDogTG9hZExpbms4IFU6Rzo4LCBaRDpHOjgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwg
VG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTggVTpHOjgsIFpEOkc6OAorICAgIEFkZHIsIFRtcAor
ICAgIEluZGV4LCBUbXAKKworIyBTdXBlciBjb25mdXNpbmcgZmFjdDogdGhpcyByZXR1cm5zIDAg
dG8gbWVhbiBzdWNjZXNzLCAxIHRvIG1lYW4gZmFpbHVyZS4KK2FybTY0OiBTdG9yZUNvbmQ4IFU6
Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwg
VG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OAorICAgIFRt
cCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGluazE2IFU6
RzoxNiwgWkQ6RzoxNgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IExv
YWRMaW5rQWNxMTYgVTpHOjE2LCBaRDpHOjE2CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRt
cAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAs
IEFkZHIsIFRtcAorICAgIFRtcCwgSW5kZXgsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMTYg
VTpHOjE2LCBEOkc6MTYsIEVaRDpHOjgKKyAgICBUbXAsIEFkZHIsIFRtcAorICAgIFRtcCwgSW5k
ZXgsIFRtcAorCithcm02NDogTG9hZExpbmszMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBBZGRyLCBU
bXAKKyAgICBJbmRleCwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTMyIFU6RzozMiwgWkQ6Rzoz
MgorICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDMyIFU6
RzozMiwgRDpHOjMyLCBFWkQ6Rzo4CisgICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4
LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4Cisg
ICAgVG1wLCBBZGRyLCBUbXAKKyAgICBUbXAsIEluZGV4LCBUbXAKKworYXJtNjQ6IExvYWRMaW5r
NjQgVTpHOjY0LCBaRDpHOjY0CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAorCithcm02
NDogTG9hZExpbmtBY3E2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRl
eCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQ2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAg
IFRtcCwgQWRkciwgVG1wCisgICAgVG1wLCBJbmRleCwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRS
ZWw2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OAorICAgIFRtcCwgQWRkciwgVG1wCisgICAgVG1w
LCBJbmRleCwgVG1wCisKK2FybTY0OiBEZXBlbmQzMiBVOkc6MzIsIEQ6RzozMgorICAgIFRtcCwg
VG1wCisKK2FybTY0OiBEZXBlbmQ2NCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wCiAKIENv
bXBhcmUzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29uZCwgVG1w
LCBUbXAsIFRtcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6
ZUJsb2NrT3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTc3LDYgKzE3NywxMCBAQCB2b2lkIG9wdGltaXplQmxvY2tPcmRlcihDb2Rl
JiBjb2RlKQogICAgICAgICBjYXNlIEJyYW5jaFN1YjY0OgogICAgICAgICBjYXNlIEJyYW5jaE5l
ZzMyOgogICAgICAgICBjYXNlIEJyYW5jaE5lZzY0OgorICAgICAgICBjYXNlIEJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzg6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTY6CisgICAg
ICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzI6CisgICAgICAgIGNhc2UgQnJhbmNoQXRv
bWljU3Ryb25nQ0FTNjQ6CiAgICAgICAgICAgICBpZiAoY29kZS5maW5kTmV4dEJsb2NrKGJsb2Nr
KSA9PSBibG9jay0+c3VjY2Vzc29yQmxvY2soMCkgJiYgYnJhbmNoLmFyZ3NbMF0uaXNJbnZlcnRp
YmxlKCkpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnN3YXAoYmxvY2stPnN1Y2Nlc3NvcigwKSwg
YmxvY2stPnN1Y2Nlc3NvcigxKSk7CiAgICAgICAgICAgICAgICAgYnJhbmNoLmFyZ3NbMF0gPSBi
cmFuY2guYXJnc1swXS5pbnZlcnRlZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkocmV2aXNpb24gMjEzMjYxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHZvaWQgcGFkSW50ZXJmZXJlbmNlKENvZGUm
IGNvZGUpCiAgICAgICAgICAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywg
V2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyb2xlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OkVhcmx5WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vhcmx5RGVmID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6TGF0ZVVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
U3BpbGxFdmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUp
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlQ29sZFVzZToKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3JpdHlP
cmRlcihiYW5rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0QmVmb3Jl
LmdldChyZWcpICYmICFzZXRBZnRlci5nZXQocmVnKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRBZnRlci5zZXQocmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHJldmlzaW9uIDIxMzI2MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsMTQgKzUxLDQ5IEBAIGNsYXNzIEFyZwogICAgICAgICBAYmFuayA9IGJh
bmsKICAgICAgICAgQHdpZHRoID0gd2lkdGgKICAgICBlbmQKLQotICAgIGRlZiB3aWR0aENvZGUK
KyAgICAKKyAgICBkZWYgc2VsZi53aWR0aENvZGUod2lkdGgpCiAgICAgICAgIGlmIHdpZHRoID09
ICJQdHIiCiAgICAgICAgICAgICAicG9pbnRlcldpZHRoKCkiCiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICJXaWR0aCN7d2lkdGh9IgogICAgICAgICBlbmQKICAgICBlbmQKKworICAgIGRlZiB3
aWR0aENvZGUKKyAgICAgICAgQXJnLndpZHRoQ29kZSh3aWR0aCkKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgc2VsZi5yb2xlQ29kZShyb2xlKQorICAgICAgICBjYXNlIHJvbGUKKyAgICAgICAgd2hl
biAiVSIKKyAgICAgICAgICAgICJVc2UiCisgICAgICAgIHdoZW4gIkQiCisgICAgICAgICAgICAi
RGVmIgorICAgICAgICB3aGVuICJaRCIKKyAgICAgICAgICAgICJaRGVmIgorICAgICAgICB3aGVu
ICJVRCIKKyAgICAgICAgICAgICJVc2VEZWYiCisgICAgICAgIHdoZW4gIlVaRCIKKyAgICAgICAg
ICAgICJVc2VaRGVmIgorICAgICAgICB3aGVuICJVQSIKKyAgICAgICAgICAgICJVc2VBZGRyIgor
ICAgICAgICB3aGVuICJTIgorICAgICAgICAgICAgIlNjcmF0Y2giCisgICAgICAgIHdoZW4gIkVE
IgorICAgICAgICAgICAgIkVhcmx5RGVmIgorICAgICAgICB3aGVuICJFWkQiCisgICAgICAgICAg
ICAiRWFybHlaRGVmIgorICAgICAgICB3aGVuICJMVSIKKyAgICAgICAgICAgICJMYXRlVXNlIgor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbmQKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgcm9sZUNvZGUKKyAgICAgICAgQXJnLnJvbGVDb2RlKHJvbGUpCisgICAgZW5k
CiBlbmQKIAogY2xhc3MgT3ZlcmxvYWQKQEAgLTE4Miw3ICsyMTcsNyBAQCBkZWYgbGV4KHN0ciwg
ZmlsZU5hbWUpCiBlbmQKIAogZGVmIGlzUm9sZSh0b2tlbikKLSAgICB0b2tlbiA9fiAvXEEoKFUp
fChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUykpXFovCisgICAgdG9rZW4gPX4gL1xBKChVKXwo
RCl8KFVEKXwoWkQpfChVWkQpfChVQSl8KFMpfChFRCl8KEVaRCl8KExVKSlcWi8KIGVuZAogCiBk
ZWYgaXNHRih0b2tlbikKQEAgLTE5MCw3ICsyMjUsNyBAQCBkZWYgaXNHRih0b2tlbikKIGVuZAog
CiBkZWYgaXNLaW5kKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1t
KXwoQml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8
KERvdWJsZUNvbmQpKVxaLworICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwo
Qml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERv
dWJsZUNvbmQpfChTdGF0dXNDb25kKSlcWi8KIGVuZAogCiBkZWYgaXNBcmNoKHRva2VuKQpAQCAt
MjY0LDcgKzI5OSw3IEBAIGNsYXNzIFBhcnNlcgogCiAgICAgZGVmIGNvbnN1bWVLaW5kCiAgICAg
ICAgIHJlc3VsdCA9IHRva2VuLnN0cmluZwotICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBr
aW5kIChJbW0sIEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVs
Q29uZCwgUmVzQ29uZCwgb3IgRG91YmxlQ29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKKyAg
ICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0
SW1tNjQsIFRtcCwgQWRkciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIERvdWJsZUNvbmQsIG9y
IFN0YXR1c0NvbmQpIikgdW5sZXNzIGlzS2luZChyZXN1bHQpCiAgICAgICAgIGFkdmFuY2UKICAg
ICAgICAgcmVzdWx0CiAgICAgZW5kCkBAIC02MzQsMjggKzY2OSw3IEBAIHdyaXRlSCgiT3Bjb2Rl
VXRpbHMiKSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5l
YWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAgICAgIGNh
c2UgYXJnLnJvbGUKLSAgICAgICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAgICAgICAg
ICByb2xlID0gIlVzZSIKLSAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAg
ICAgICByb2xlID0gIkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJaRCIKLSAgICAgICAgICAg
ICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlVEIgotICAgICAg
ICAgICAgICAgICAgICByb2xlID0gIlVzZURlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJVWkQi
Ci0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAgICAgICAgICAgICAgICB3
aGVuICJVQSIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAg
ICAgICAgIHdoZW4gIlMiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2NyYXRjaCIKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAg
ICAgICAgZW5kCi0KLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2lu
ZGV4fV0sIEFyZzo6I3tyb2xlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCisg
ICAgICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7
YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCiAgICAgICAg
ICAgICB9CiAgICAgICAgIGVuZAogICAgIH0KQEAgLTgxOSw2ICs4MzMsNyBAQCB3cml0ZUgoIk9w
Y29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJSZWxDb25kIgogICAgICAg
ICAgICAgICAgIHdoZW4gIlJlc0NvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29u
ZCIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQga2luZDogI3traW5kLm5h
bWV9IgogICAgICAgICAgICAgICAgIGVuZApAQCAtMTEwNSw2ICsxMTIwLDggQEAgd3JpdGVIKCJP
cGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3Nb
I3tpbmRleH1dLmFzUmVzdWx0Q29uZGl0aW9uKCkiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91
YmxlQ29uZCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0u
YXNEb3VibGVDb25kaXRpb24oKSIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgor
ICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc1N0YXR1c0Nv
bmRpdGlvbigpIgogICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQogCkBAIC0xMTQ4
LDI3ICsxMTY1LDcgQEAgRmlsZS5vcGVuKCJKU0Fpcl9vcGNvZGUuanMiLCAidyIpIHsKICAgICAg
ICAgICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tvdmVybG9hZC5zaWduYXR1cmUubGVuZ3RofToi
IGlmIG5lZWRPdmVybG9hZFN3aXRjaAogICAgICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVy
ZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAgICAgICB8IGFyZywgaW5kZXggfAot
ICAgICAgICAgICAgICAgICAgICByb2xlID0gbmlsCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
YXJnLnJvbGUKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVSIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4g
IlpEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAgICAgICAg
ICAgICAgICB3aGVuICJVRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVm
IgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVWkQiCi0gICAgICAgICAgICAgICAgICAgICAg
ICByb2xlID0gIlVzZVpEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlVBIgotICAgICAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAgICAgICAgICAgICB3
aGVuICJTIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3JhdGNoIgotICAgICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAg
ICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7cm9sZX0s
ICN7YXJnLmJhbmt9UCwgI3thcmcud2lkdGh9KTsiCisgICAgICAgICAgICAgICAgICAgIG91dHAu
cHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7YXJnLnJvbGVDb2RlfSwg
I3thcmcuYmFua31QLCAje2FyZy53aWR0aH0pOyIKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgb3V0cC5wdXRzICJicmVhazsiCiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
NSw5ICs0MTUsNiBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJv
b2wsIGR1bXBNb2R1bGVMb2FkaW5nU3RhdGUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAg
ICB2KGJvb2wsIGV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyLCBmYWxzZSwgTm9ybWFsLCAiZXhw
b3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUgbG9hZGVyIG9iamVjdCB0byB0aGUgZ2xvYmFsIHNwYWNl
IGZvciBkZWJ1Z2dpbmciKSBcCiAgICAgXAotICAgIHYoYm9vbCwgZHVtcEFpckFzSlNCZWZvcmVB
bGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgdihib29sLCBkdW1w
QWlyQWZ0ZXJBbGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgXAog
ICAgIHYoYm9vbCwgdXNlU3VwZXJTYW1wbGVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgXAogICAgIHYoYm9vbCwgcmVwb3J0TExJbnRTdGF0cywgZmFsc2UsIENvbmZpZ3VyYWJsZSwg
IlJlcG9ydHMgTExJbnQgc3RhdGlzdGljcyIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303237</attachid>
            <date>2017-03-02 14:06:53 -0800</date>
            <delta_ts>2017-03-02 18:03:34 -0800</delta_ts>
            <desc>more ARM64</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>326001</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTMyNjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMyBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAv
KiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87
IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQz
NDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNj
b3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5ODMyREFDMDA3RDRC
MTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDUsOCArMjI1Miw2IEBACiAJCURD
MjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIw
OTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVh
cENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRC
OEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1
QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8q
IFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREM2MDVCNUYxQ0Uy
NkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxl
clVJRC5jcHAgKi87IH07CkBAIC0yNzcxLDYgKzI3NzYsMTMgQEAKIAkJMEYyQzYzQUMxRTYwQUUz
QzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4Mzkg
LyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7
IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2
M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9t
aWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQz
RTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0lu
c2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0
NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMv
YWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBh
dGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MxMUU2
NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRpdmVUcmFpdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQzNDAwN0Q0QjE5IC8q
IERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERD
MTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDc4Nyw4ICs0Nzk5LDYgQEAKIAkJREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8q
IElDU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUNTdGF0cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyog
SGVhcENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcENlbGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8q
IEhlYXBDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBD
ZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckR1bXBBc0pTLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJEdW1wQXNKUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJEdW1wQXNK
Uy5oOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuY3BwOyBwYXRo
ID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuaDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNUIx
Q0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyVUlELmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVy
VUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMDYsNiArNTMxNiw4IEBA
CiAJCQkJMEZFQzg0QjMxQkRBQ0Q4ODAwODBGRjc0IC8qIGFpciAqLywKIAkJCQkwRkVDODRCNDFC
REFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRC
NTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmggKi8sCisJCQkJMEYyQzYz
QjMxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwICovLAorCQkJCTBGMkM2M0I0
MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8sCiAJCQkJMEYyQzYzQUIxRTYw
QUUzQzAwQzEzODM5IC8qIEIzQmFuay5jcHAgKi8sCiAJCQkJMEYyQzYzQUMxRTYwQUUzQzAwQzEz
ODM5IC8qIEIzQmFuay5oICovLAogCQkJCTBGRUM4NEI2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jh
c2ljQmxvY2suY3BwICovLApAQCAtNTM2OCw2ICs1MzgwLDcgQEAKIAkJCQkwRkVDODRDRDFCREFD
REFDMDA4MEZGNzQgLyogQjNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODRDRTFCREFD
REFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg0Q0YxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzR2VuZXJhdGUuaCAqLywKKwkJCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4Mzkg
LyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkVDODREMDFCREFDREFD
MDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg1QkYx
QkUxNjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmNwcCAqLywKIAkJCQkwRkVDODVDMDFCRTE2
N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLywKQEAgLTUzOTIsNiArNTQwNSw3IEBACiAJ
CQkJMEZFQzg0RDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuaCAqLywKIAkJCQkw
RjMzOEUwMzFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmNwcCAqLywKIAkJCQkw
RjMzOEUwNDFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmggKi8sCisJCQkJMEYy
QzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi8sCiAJCQkJMEYzMzhF
MDUxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0LmggKi8sCiAJCQkJMEYzMzhF
MDYxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5jcHAgKi8sCiAJCQkJMEYz
MzhFMDcxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5oICovLApAQCAtNTQ4
Myw2ICs1NDk3LDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5s
aW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2Nr
LmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5o
ICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNl
dC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0
aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29y
a2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdD
b252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC01NDk0LDggKzU1MTAsNiBAQAogCQkJCTBGMTBGMUEy
MUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAqLywKIAkJCQk3OUFCQjE3QjFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQk3OUFCQjE3QzFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmggKi8sCi0JCQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLywKLQkJCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4
QUYgLyogQWlyRHVtcEFzSlMuaCAqLywKIAkJCQkwRjQ1NzAzNjFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICovLAogCQkJCTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYy
OSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovLAogCQkJCTBGNjE4MzIzMUM0NUJGMDcwMDcy
NDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5jcHAgKi8sCkBAIC03MzQ1LDYgKzczNTksNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2
OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRjFFNjYwRUE1MDBDMTM4Mzkg
LyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAw
Rjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENE
NzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJ
ODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCkBAIC03Mzcz
LDggKzczODgsOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3Nl
bWJsZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIx
IC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4
NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKQEAg
LTc5NjQsNyArNzk3OSw2IEBACiAJCQkJMEZFQzg1NzQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckND
YWxsU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzYxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTBGMUEzMUM0MjBCRjAwMDFDMDdE
MiAvKiBBaXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAotCQkJCURDNDU0QjhEMUQwMEU4MjQwMDRD
MThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NTcwMzkxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjYxODMyRDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNERFMUNGMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc5NzcsNiArNzk5MSw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckluc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3
RDcxRDlEQzQ0MjAwMUI5ODI1IC8qIEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2
M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjY4NEQ0MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUzNEMxQTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQ
cmVzc3VyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8q
IEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDY4LDYgKzgwODMs
NyBAQAogCQkJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQ
dHJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8q
IEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNG
NzAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjMzOEUwRTFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzM0ZDRkMxQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY2QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRl
VGFpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtODI1OCw2ICs4Mjc0LDcgQEAKIAkJCQlBNzdBNDIz
RTE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNDMjFFNjY0QTVD
MDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc3
MTQzRkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQzRTQwMjFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4RDNEMDFCNTVBNkUwMDAy
QzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTgzODgsNiArODQwNSw3IEBACiAJCQkJMEYzOTJDOEExQjQ2MTg4NDAwODQ0NzI4IC8qIERG
R09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdG
NTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYwMEM3
MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIxOUQwQkE3RDAw
QjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKQEAgLTk4MTcsNiArOTgz
NSw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTgyNyw3ICs5ODQ2LDYgQEAKIAkJCQkwRkVD
ODU3MzFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTc1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0Ux
QzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMDI3NCw2ICsxMDI5Miw3IEBACiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8q
IEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVC
OEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQw
RTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMjkyLDYgKzEwMzExLDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBB
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdB
NDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiIC8vIEhhdmUgdG8g
YnJlYWsgd2l0aCBzdHlsZSBiZWNhdXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpcyBhIHNo
YWR5IGhlYWRlci4KKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisKKyNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdURiB7CisK
K3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyQmFzZTo6U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBzd2l0Y2ggKGNvbmRp
dGlvbikgeworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN1Y2Nlc3M6Cisg
ICAgICAgIG91dC5wcmludCgiU3VjY2VzcyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6RmFpbHVyZToKKyAgICAgICAgb3V0LnByaW50KCJG
YWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0
Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUmFuZG9tLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NTAsOCArNTEsMjggQEAgbmFtZXNwYWNlIERGRyB7CiBzdHJ1Y3QgT1NSRXhpdDsKIH0KIAorY2xh
c3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgeworcHVibGljOgorICAgIGVudW0gU3RhdHVz
Q29uZGl0aW9uIHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgRmFpbHVyZQorICAgIH07Cisg
ICAgCisgICAgc3RhdGljIFN0YXR1c0NvbmRpdGlvbiBpbnZlcnQoU3RhdHVzQ29uZGl0aW9uIGNv
bmRpdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7CisgICAgICAgIGNh
c2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBGYWlsdXJlOworICAgICAgICBjYXNlIEZh
aWx1cmU6CisgICAgICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAgICAgICAgfQorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAg
ICB9Cit9OworCiB0ZW1wbGF0ZSA8Y2xhc3MgQXNzZW1ibGVyVHlwZSwgY2xhc3MgTWFjcm9Bc3Nl
bWJsZXJUeXBlPgotY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciB7CitjbGFzcyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlIHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwg
TWFjcm9Bc3NlbWJsZXJUeXBlPiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZTsKICAgICB0eXBl
ZGVmIEFzc2VtYmxlclR5cGUgQXNzZW1ibGVyVHlwZV9UOwpAQCAtMTEwOCwzICsxMTI5LDE2IEBA
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwgTWEKICNlbmRpZiAvLyBFTkFC
TEUoQVNTRU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKKworI2lmIEVOQUJMRShBU1NFTUJM
RVIpCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJh
c2U6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8g
RU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMi0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTM2LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IHR3b1RvVGhlMzI7IC8vIFRoaXMgaXMgc3VwZXIgdXNlZnVsIGZvciBzb21lIGRvdWJsZSBjb2Rl
LgogCiAgICAgLy8gVXRpbGl0aWVzIHVzZWQgYnkgdGhlIERGRyBKSVQuCisgICAgdXNpbmcgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OmludmVydDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
ckJhc2U6OmludmVydDsKICAgICAKICAgICBzdGF0aWMgRG91YmxlQ29uZGl0aW9uIGludmVydChE
b3VibGVDb25kaXRpb24gY29uZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShyZXZpc2lvbiAyMTMyNjEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzM3Myw3ICszMzczLDIyOSBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5kbWJJU0goKTsKICAgICB9Ci0KKyAgICAKKyAgICB2b2lkIGxvYWRB
Y3E4U2lnbmVkRXh0ZW50VG8zMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRhcmIoZGVzdCwgZXh0cmFjdFNpbXBs
ZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEltcGxp
Y2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2Fk
QWNxOFNpZ25lZEV4dGVuZFRvMzIoYWRkcmVzcywgZGVzdCk7CisgICAgICAgIGFuZDMyKFRydXN0
ZWRJbW0zMigweGZmKSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJl
Z2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnN0bHJiKHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoSW1wbGljaXRBZGRy
ZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxkYXJoKGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBsb2FkQWNxMTYoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoYWRkcmVzcywg
ZGVzdCk7CisgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMigweGZmZmYpLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHJoKHNyYywgZXh0cmFj
dFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3Ez
MihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubGRhcjwzMj4oYWRkcmVzcywgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGFyPDY0PihhZGRyZXNzLCBkZXN0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFJlZ2lzdGVySUQgZGVzdCwgSW1wbGljaXRB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdGxyPDMyPihkZXN0
LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
c3RvcmVSZWw2NChSZWdpc3RlcklEIGRlc3QsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Rscjw2ND4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJl
c3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rOChJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubGR4cmIoZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcyksIGRlc3QpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGxvYWRMaW5rQWNxOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRheHJiKGV4dHJhY3RTaW1w
bGVBZGRyZXNzKGFkZHJlc3MpLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNv
bmQ4KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdHhyYihzcmMsIGV4dHJhY3RTaW1w
bGVBZGRyZXNzKGFkZHJlc3MpLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3Jl
Q29uZFJlbDgoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyYihzcmMsIGV4dHJh
Y3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRMaW5rMTYoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHJoKGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJl
c3MpLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGlua0FjcTE2KEltcGxpY2l0
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sZGF4cmgoZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcyksIGRlc3QpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zdHhyaChzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpLCByZXN1bHQpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNp
dEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdGx4cmgoc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSwgcmVzdWx0
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGluazMyKEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhyPDMy
PihleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSwgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZExpbmtBY3EzMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8MzI+KGV4dHJhY3RTaW1wbGVB
ZGRyZXNzKGFkZHJlc3MpLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmQz
MihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVz
dWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4cjwzMj4oc3JjLCBleHRyYWN0U2lt
cGxlQWRkcmVzcyhhZGRyZXNzKSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZUNvbmRSZWwzMihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RseHI8MzI+KHNyYywg
ZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcyksIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZExpbms2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGR4cjw2ND4oZXh0cmFjdFNpbXBsZUFkZHJl
c3MoYWRkcmVzcyksIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rQWNxNjQo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxkYXhyPDY0PihleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSwgZGVz
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kNjQoUmVnaXN0ZXJJRCBzcmMsIElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN0eHI8NjQ+KHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcyks
IHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kUmVsNjQoUmVnaXN0ZXJJ
RCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPDY0PihzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNz
KGFkZHJlc3MpLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRv
bWljU3Ryb25nQ0FTPDg+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgcmVzdWx0
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM8MTY+
KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgcmVzdWx0KTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM8MzI+KGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBuZXdWYWx1ZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgewor
ICAgICAgICBhdG9taWNTdHJvbmdDQVM8NjQ+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdW
YWx1ZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVkU3Ryb25n
Q0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBh
dG9taWNSZWxheGVkU3Ryb25nQ0FTPDg+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1
ZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVkU3Ryb25nQ0FT
MTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRv
bWljUmVsYXhlZFN0cm9uZ0NBUzwxNj4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVMz
MihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9t
aWNSZWxheGVkU3Ryb25nQ0FTPDMyPihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUs
IHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzY0
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21p
Y1JlbGF4ZWRTdHJvbmdDQVM8NjQ+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwg
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljV2Vha0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVy
biBicmFuY2hBdG9taWNXZWFrQ0FTPDg+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdW
YWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1dl
YWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY1dlYWtDQVM8MTY+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5j
aEF0b21pY1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1dlYWtDQVM8MzI+KGNvbmQsIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBM
aXN0IGJyYW5jaEF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1dlYWtDQVM8NjQ+KGNvbmQs
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1Jl
bGF4ZWRXZWFrQ0FTPDg+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFr
Q0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzwxNj4oY29uZCwgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3Qg
YnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FT
PDMyPihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJh
bmNoQXRvbWljUmVsYXhlZFdlYWtDQVM8NjQ+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBu
ZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZGVwZW5kMzIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmVv
cjwzMj4oZGVzdCwgc3JjLCBzcmMpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGRlcGVuZDY0KFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5lb3I8NjQ+KGRlc3QsIHNyYywgc3JjKTsKKyAgICB9CisgICAgCiAgICAgLy8gTWlzYyBoZWxw
ZXIgZnVuY3Rpb25zLgogCiAgICAgLy8gSW52ZXJ0IGEgcmVsYXRpb25hbCBjb25kaXRpb24sIGUu
Zy4gPT0gYmVjb21lcyAhPSwgPCBiZWNvbWVzID49LCBldGMuCkBAIC0zODc1LDYgKzQwOTcsMTU4
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAg
ICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBsb2FkTGluayhSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGR4
cjxkYXRhc2l6ZT4oZGVzdCwgc3JjKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRh
dGFzaXplPgorICAgIHZvaWQgbG9hZExpbmtBY3EoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXhyPGRhdGFzaXplPihkZXN0LCBz
cmMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBz
dG9yZUNvbmQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdHhyPGRhdGFzaXplPihzcmMsIGRlc3Qs
IHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2
b2lkIHN0b3JlQ29uZFJlbChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3Rl
cklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPGRhdGFzaXplPihz
cmMsIGRlc3QsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6
ZT4KKyAgICB2b2lkIHNpZ25FeHRlbmQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdGVtcGxh
dGU8aW50IGRhdGFzaXplPgorICAgIEp1bXAgYnJhbmNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0KTsKKyAgICB9CisgICAgCisgICAgdGVtcGxh
dGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgc2ln
bkV4dGVuZDxkYXRhc2l6ZT4oZXhwZWN0ZWRBbmRSZXN1bHQsIGV4cGVjdGVkQW5kUmVzdWx0KTsK
KyAgICAgICAgCisgICAgICAgIFJlZ2lzdGVySUQgYWRkcmVzcyA9IGV4dHJhY3RTaW1wbGVBZGRy
ZXNzKGFkZHJlc3MpOworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgCisgICAgICAgIExhYmVsIHJlbG9v
cCA9IGxhYmVsKCk7CisgICAgICAgIGxvYWRMaW5rQWNxPGRhdGFzaXplPihhZGRyZXNzLCB0bXAp
OworICAgICAgICBKdW1wIGZhaWx1cmUgPSBicmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBl
Y3RlZEFuZFJlc3VsdCwgdG1wKTsKKyAgICAgICAgCisgICAgICAgIHN0b3JlQ29uZFJlbDxkYXRh
c2l6ZT4obmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgICAgIGJyYW5jaFRlc3QzMihO
b25aZXJvLCByZXN1bHQpLmxpbmtUbyhyZWxvb3AsIHRoaXMpOworICAgICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihjb25kID09IFN1Y2Nlc3MpLCByZXN1bHQpOworICAgICAgICBKdW1wIGRvbmUgPSBq
dW1wKCk7CisgICAgICAgIAorICAgICAgICBmYWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAgIG1v
dmUodG1wLCBleHBlY3RlZEFuZFJlc3VsdCk7CisgICAgICAgIHN0b3JlQ29uZFJlbDxkYXRhc2l6
ZT4odG1wLCBhZGRyZXNzLCByZXN1bHQpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9uWmVybywg
cmVzdWx0KS5saW5rVG8ocmVsb29wLCB0aGlzKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIo
Y29uZCA9PSBGYWlsdXJlKSwgcmVzdWx0KTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluayh0
aGlzKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQg
YXRvbWljUmVsYXhlZFN0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4
cGVjdGVkQW5kUmVzdWx0LCBleHBlY3RlZEFuZFJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBS
ZWdpc3RlcklEIGFkZHJlc3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCk7CisgICAgICAgIAorICAgICAgICBMYWJlbCByZWxvb3AgPSBsYWJlbCgpOworICAgICAg
ICBsb2FkTGluazxkYXRhc2l6ZT4oYWRkcmVzcywgdG1wKTsKKyAgICAgICAgSnVtcCBmYWlsdXJl
ID0gYnJhbmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHRtcCk7Cisg
ICAgICAgIAorICAgICAgICBzdG9yZUNvbmQ8ZGF0YXNpemU+KG5ld1ZhbHVlLCBhZGRyZXNzLCBy
ZXN1bHQpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9uWmVybywgcmVzdWx0KS5saW5rVG8ocmVs
b29wLCB0aGlzKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoY29uZCA9PSBTdWNjZXNzKSwg
cmVzdWx0KTsKKyAgICAgICAgSnVtcCBkb25lID0ganVtcCgpOworICAgICAgICAKKyAgICAgICAg
ZmFpbHVyZS5saW5rKHRoaXMpOworICAgICAgICBtb3ZlKHRtcCwgZXhwZWN0ZWRBbmRSZXN1bHQp
OworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjb25kID09IEZhaWx1cmUpLCByZXN1bHQpOwor
ICAgICAgICAKKyAgICAgICAgZG9uZS5saW5rKHRoaXMpOworICAgIH0KKyAgICAKKyAgICB0ZW1w
bGF0ZTxpbnQgZGF0YXNpemU+CisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljV2Vha0NBUyhTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgc2lnbkV4dGVu
ZDxkYXRhc2l6ZT4oZXhwZWN0ZWRBbmRSZXN1bHQsIGV4cGVjdGVkQW5kUmVzdWx0KTsKKyAgICAg
ICAgCisgICAgICAgIFJlZ2lzdGVySUQgYWRkcmVzcyA9IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFk
ZHJlc3MpOworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgCisgICAgICAgIEp1bXBMaXN0IHN1Y2Nlc3M7
CisgICAgICAgIEp1bXBMaXN0IGZhaWx1cmU7CisKKyAgICAgICAgbG9hZExpbmtBY3E8ZGF0YXNp
emU+KGFkZHJlc3MsIHRtcCk7CisgICAgICAgIGZhaWx1cmUuYXBwZW5kKGJyYW5jaDxkYXRhc2l6
ZT4oTm90RXF1YWwsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCB0bXApKTsKKyAgICAgICAgc3RvcmVD
b25kUmVsPGRhdGFzaXplPihuZXdWYWx1ZSwgYWRkcmVzcywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQp
OworICAgICAgICAKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAgIGNhc2UgU3VjY2Vz
czoKKyAgICAgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCkpOworICAgICAgICAgICAgZmFpbHVyZS5saW5rKHRoaXMpOworICAgICAg
ICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAg
IGZhaWx1cmUuYXBwZW5kKGJyYW5jaFRlc3QzMihOb25aZXJvLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCkpOworICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmU7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHRl
bXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNSZWxheGVkV2Vh
a0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
c2lnbkV4dGVuZDxkYXRhc2l6ZT4oZXhwZWN0ZWRBbmRSZXN1bHQsIGV4cGVjdGVkQW5kUmVzdWx0
KTsKKyAgICAgICAgCisgICAgICAgIFJlZ2lzdGVySUQgYWRkcmVzcyA9IGV4dHJhY3RTaW1wbGVB
ZGRyZXNzKGFkZHJlc3MpOworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgCisgICAgICAgIEp1bXBMaXN0
IHN1Y2Nlc3M7CisgICAgICAgIEp1bXBMaXN0IGZhaWx1cmU7CisKKyAgICAgICAgbG9hZExpbms8
ZGF0YXNpemU+KGFkZHJlc3MsIHRtcCk7CisgICAgICAgIGZhaWx1cmUuYXBwZW5kKGJyYW5jaDxk
YXRhc2l6ZT4oTm90RXF1YWwsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCB0bXApKTsKKyAgICAgICAg
c3RvcmVDb25kPGRhdGFzaXplPihuZXdWYWx1ZSwgYWRkcmVzcywgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQpOworICAgICAgICAKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAgIGNhc2UgU3Vj
Y2VzczoKKyAgICAgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBleHBl
Y3RlZEFuZENsb2JiZXJlZCkpOworICAgICAgICAgICAgZmFpbHVyZS5saW5rKHRoaXMpOworICAg
ICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAg
ICAgIGZhaWx1cmUuYXBwZW5kKGJyYW5jaFRlc3QzMihOb25aZXJvLCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCkpOworICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmU7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAg
IFJlZ2lzdGVySUQgZXh0cmFjdFNpbXBsZUFkZHJlc3MoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJu
IGFkZHJlc3MuYmFzZTsKKyAgICAgICAgCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0
ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgYWRkUHRyKGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJl
Z2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIG1lbW9yeVRlbXBSZWdpc3RlcjsKKyAgICB9CiAKICAg
ICBKdW1wIGp1bXBBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKERvdWJsZUNvbmRpdGlvbiBjb25k
KQogICAgIHsKQEAgLTM5ODcsNiArNDM2MSw3MiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTWFjcm9B
c3NlbWJsZXJBUk02NDo6CiAgICAgbV9hc3NlbWJsZXIuc3R1cmgocnQsIHJuLCBzaW1tKTsKIH0K
IAordGVtcGxhdGU8PgoraW5saW5lIHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbms8
OD4oUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKK3sKKyAgICBtX2Fzc2VtYmxlci5s
ZHhyYihkZXN0LCBzcmMpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZCBNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpsb2FkTGluazwxNj4oUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
K3sKKyAgICBtX2Fzc2VtYmxlci5sZHhyaChkZXN0LCBzcmMpOworfQorCit0ZW1wbGF0ZTw+Citp
bmxpbmUgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkTGlua0FjcTw4PihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQoreworICAgIG1fYXNzZW1ibGVyLmxkYXhyYihkZXN0LCBz
cmMpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0Ojps
b2FkTGlua0FjcTwxNj4oUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKK3sKKyAgICBt
X2Fzc2VtYmxlci5sZGF4cmgoZGVzdCwgc3JjKTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIHZv
aWQgTWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVDb25kPDg+KFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCit7CisgICAgbV9hc3NlbWJsZXIuc3R4cmIoc3JjLCBkZXN0KTsKK30KKwor
dGVtcGxhdGU8PgoraW5saW5lIHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVDb25kPDE2
PihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQoreworICAgIG1fYXNzZW1ibGVyLnN0
eHJoKHNyYywgZGVzdCk7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkIE1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDw4PihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQoreworICAgIG1fYXNzZW1ibGVyLnN0bHhyYihzcmMsIGRlc3QpOworfQorCit0ZW1wbGF0ZTw+
CitpbmxpbmUgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmRSZWw8MTY+KFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCit7CisgICAgbV9hc3NlbWJsZXIuc3RseHJoKHNy
YywgZGVzdCk7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkIE1hY3JvQXNzZW1ibGVyQVJN
NjQ6OnNpZ25FeHRlbmQ8OD4oUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKK3sKKyAg
ICBzaWduRXh0ZW5kOFRvMzIoc3JjLCBkZXN0KTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIHZv
aWQgTWFjcm9Bc3NlbWJsZXJBUk02NDo6c2lnbkV4dGVuZDwxNj4oUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKK3sKKyAgICBzaWduRXh0ZW5kMTZUbzMyKHNyYywgZGVzdCk7Cit9CisK
K3RlbXBsYXRlPD4KK2lubGluZSBKdW1wIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJyYW5jaChSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkK
K3sKKyAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNzEsNiArMTcxLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbF9tcihz
cmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhZGQzMihCYXNl
SW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
ZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7
CisgICAgfQorCiAgICAgdm9pZCBhZGQzMihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0
LmJhc2UpOwpAQCAtMjUxLDE2ICsyNTYsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9p
ZCBhbmQzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hbmRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQxNihSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19ybShzcmMsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kMTYoUmVnaXN0ZXJJ
RCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19y
bShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKworICAgIHZvaWQgYW5kOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgIH0KKworICAgIHZvaWQgYW5kOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBh
bmQzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAg
dm9pZCBhbmQzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNy
Yy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX2ltKGlt
bS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2
b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kbF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBhbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5hbmR3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVl
KSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQx
NihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsK
KyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+
KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisg
ICAgdm9pZCBhbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3Zh
bHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0
ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChvcDEgPT0gb3Ay
KQpAQCAtNDU2LDYgKzUxNiwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2xf
bShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG5lZzMy
KEJhc2VJbmRleCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnbF9tKHNy
Y0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UsIHNyY0Rlc3QuaW5kZXgsIHNyY0Rlc3Quc2NhbGUp
OworICAgIH0KKworICAgIHZvaWQgbmVnMTYoQWRkcmVzcyBzcmNEZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubmVnd19tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgbmVnMTYoQmFzZUluZGV4IHNyY0Rlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5p
bmRleCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWc4KEFkZHJlc3Mgc3Jj
RGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2JfbShzcmNEZXN0Lm9mZnNldCwg
c3JjRGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZzgoQmFzZUluZGV4IHNyY0Rlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdiX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rl
c3QuYmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9p
ZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5vcmxfcnIoc3JjLCBkZXN0KTsKQEAgLTQ3MSwxNiArNTU2LDcxIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3Ix
NihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIub3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLm9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3I4KFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmJfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChSZWdpc3RlcklEIHNyYywg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmJfcm0oc3JjLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisK
ICAgICB2b2lkIG9yMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLm9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAg
fQogCisgICAgdm9pZCBvcjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmlu
ZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vcmxf
aW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAor
ICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisg
ICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm9yd19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1
ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3Ix
NihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLm9yd19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwor
ICAgIH0KKworICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGlt
bS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAg
dm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5vcmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSks
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBv
cDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChvcDEgPT0gb3AyKQpAQCAt
NjU0LDE2ICs3OTQsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX2ltKGlt
bS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2
b2lkIHN1YjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUp
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1Yjgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuc3ViYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1
YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3ViMTYoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dWJ3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisg
ICAgdm9pZCBzdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3Zh
bHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9tcihzcmMub2Zmc2V0LCBz
cmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBzdWIzMihCYXNlSW5kZXggc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX21yKHNyYy5v
ZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAg
ICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAg
IH0KIAorICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5k
ZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Ymxfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIHN1YjE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN1Yndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0Lmlu
ZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KwogICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfcnIoc3JjLCBkZXN0KTsKQEAgLTY3Nyw2ICs4NzIs
NTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9pbShpbW0ubV92YWx1
ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihUcnVz
dGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChpbW0ubV92
YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vdGxfbShkZXN0Lm9mZnNldCwg
ZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIueG9ybF9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1
ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5t
X3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3J3
X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2
b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAg
ICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSk7CisgICAg
ICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vdHdf
bShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yd19pbShpbW0ubV92YWx1ZSwgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisg
ICAgdm9pZCB4b3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSk7CisgICAg
ICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vdGJf
bShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9h
c3NlbWJsZXIueG9yYl9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7Cisg
ICAgfQorCisgICAgdm9pZCB4b3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3Zh
bHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2Nh
bGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5t
X3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsK
KyAgICB9CisKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKQEAgLTY5MCwxMSArOTI5
LDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnhvcndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgo
UmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhvcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IHhvcjgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoQWRkcmVzcyBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfbXIoc3JjLm9mZnNl
dCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHhvcjMyKEJhc2VJbmRl
eCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxf
bXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAg
ICB9CisgICAgCiAgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChvcDEgPT0gb3AyKQpAQCAtNzQx
LDYgKzEwMTAsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5ub3RsX20oZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBub3QzMihCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDE2KEFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDE2KEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbm90OChBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3Q4KEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3Qu
aW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgc3FydERvdWJsZShGUFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
c3FydHNkX3JyKHNyYywgZHN0KTsKQEAgLTEwNzEsNDIgKzEzNjUsMjMgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7
Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAgLy8gT24gMzItYml0IHg4NiB3ZSBjYW4gb25seSBzdG9y
ZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKLSAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1h
cHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEKLSAgICAgICAgaWYgKHNyYyA+PSA0KSB7Ci0gICAg
ICAgICAgICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLgotICAgICAgICAgICAgUmVnaXN0
ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRkcmVzcyk7Ci0KLSAgICAgICAgICAgIC8v
IFN3YXAgdG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0byBwZXJmb3JtIHRoZSBzdG9yZS4KLSAg
ICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndf
cm0odGVtcCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSk7Ci0gICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3JtKHNy
YywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5z
Y2FsZSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNz
IGFkZHJlc3MpCiAgICAgewotI2lmIENQVShYODYpCi0gICAgICAgIC8vIE9uIDMyLWJpdCB4ODYg
d2UgY2FuIG9ubHkgc3RvcmUgZnJvbSB0aGUgZmlyc3QgNCByZWdpc3RlcnM7Ci0gICAgICAgIC8v
IGVzcC4uZWRpIGFyZSBtYXBwZWQgdG8gdGhlICdoJyByZWdpc3RlcnMhCi0gICAgICAgIGlmIChz
cmMgPj0gNCkgewotICAgICAgICAgICAgLy8gUGljayBhIHRlbXBvcmFyeSByZWdpc3Rlci4KLSAg
ICAgICAgICAgIFJlZ2lzdGVySUQgdGVtcCA9IGdldFVudXNlZFJlZ2lzdGVyKGFkZHJlc3MpOwot
Ci0gICAgICAgICAgICAvLyBTd2FwIHRvIHRoZSB0ZW1wb3JhcnkgcmVnaXN0ZXIgdG8gcGVyZm9y
bSB0aGUgc3RvcmUuCi0gICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7Ci0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5tb3Z3X3JtKHRlbXAsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwot
ICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0jZW5kaWYKICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybShzcmMsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3RvcmUxNihUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIHN0b3JlMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92
YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KIAogICAgIC8vIEZs
b2F0aW5nLXBvaW50IG9wZXJhdGlvbjoKICAgICAvLwpAQCAtMjc0Myw3NCArMzAxOCw5MDEgQEAg
cHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm9ybF9pbSgwLCAwLCBYODZSZWdpc3RlcnM6OmVzcCk7CiAgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KIAotICAgIC8vIFdl
IHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBzdG9y
ZXMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgotICAgIHZvaWQgc3RvcmVGZW5jZSgpCisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywg
UmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwg
ZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0o
bmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFk
ZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICAvLyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0
aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwgbG9hZHMuIFNvLCBpdCdzIGEgbm8tb3Ag
b24geDg2LgotICAgIHZvaWQgbG9hZEZlbmNlKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1
bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdp
dGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxh
YmVsIGRlc3RpbmF0aW9uKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7Ci0gICAgICAg
IFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIGF0
b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fz
c2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAgIH0KLSAgICAKLSAgICBz
dGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorCisgICAgdm9pZCBhdG9t
aWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBs
YWNlbWVudFNpemUoKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIHB0
cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6cGF0Y2hhYmxlSnVtcFNpemUoKTsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsm
XSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKQorICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTOChSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAgICBpZiAoc19zc2U0XzFD
aGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkKLSAgICAgICAgICAgIHVw
ZGF0ZUVheDFFY3hGbGFncygpOwotICAgICAgICByZXR1cm4gc19zc2U0XzFDaGVja1N0YXRlID09
IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRB
bmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc3Vw
cG9ydHNBVlgoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7
Ci0gICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlzdGVyaW91cyByZWdyZXNzaW9ucyBhbmQg
dGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUuCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyB2
b2lkIHVwZGF0ZUVheDFFY3hGbGFncygpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MpCiAgICAgewotICAgICAgICBpbnQgZmxhZ3MgPSAwOwotI2lmIENPTVBJTEVSKE1TVkMp
Ci0gICAgICAgIGludCBjcHVJbmZvWzRdOwotICAgICAgICBfX2NwdWlkKGNwdUluZm8sIDB4MSk7
Ci0gICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsKLSNlbGlmIENPTVBJTEVSKEdDQ19PUl9DTEFO
RykKLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICBhc20gKAotICAgICAgICAgICAgIm1vdmwgJDB4
MSwgJSVlYXg7IgotICAgICAgICAgICAgImNwdWlkOyIKLSAgICAgICAgICAgICJtb3ZsICUlZWN4
LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAgICAgICAgICAgOgotICAgICAg
ICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3giLCAiJWVkeCIKLSAgICAgICAgICAgICk7Ci0j
ZWxzZQotICAgICAgICBhc20gKAotICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgotICAg
ICAgICAgICAgInB1c2hsICUlZWJ4OyIKLSAgICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAg
ICAicG9wbCAlJWVieDsiCi0gICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgotICAgICAgICAg
ICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIDogIiVlYXgiLCAi
JWVjeCIsICIlZWR4IgotICAgICAgICAgICAgKTsKLSNlbmRpZgorICAgICAgICBhdG9taWNTdHJv
bmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMxNihSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3df
cm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMy
KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVk
QW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0p
OworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9
CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NB
Uyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0o
bmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFk
ZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NB
UzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBt
X2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJy
YW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJy
YW5jaEF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRv
bWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAg
ICB9CisKKyAgICAvLyBJZiB5b3UgdXNlIHdlYWsgQ0FTLCB5b3UgY2Fubm90IHJlbHkgb24gZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQgdG8gaGF2ZSBhbnkgcGFydGljdWxhciB2YWx1ZSBhZnRlcgorICAg
IC8vIHRoaXMgY29tcGxldGVzLiBPbiB4ODYsIGl0IHdpbGwgY29udGFpbiB0aGUgcmVzdWx0IG9m
IHRoZSBzdHJvbmcgQ0FTLiBPbiBBUk0sIGl0IHdpbGwgc3RpbGwgaGF2ZQorICAgIC8vIHRoZSBl
eHBlY3RlZCB2YWx1ZS4KKyAgICB2b2lkIGF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRv
bWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJl
c3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTOChTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTMTYo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNX
ZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2
b2lkIGF0b21pY1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQs
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9
CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25n
Q0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1
bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVz
cyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRv
bWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJl
c3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRv
bWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRy
ZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVMzMihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMzIoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJy
YW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1
ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVM4
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNS
ZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdp
c3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKwor
ICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9u
Z0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVz
dWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTMTYoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdW
YWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRX
ZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9p
ZCBhdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMz
Mihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hB
dG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRk
cmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzgoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1Zh
bHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFr
Q0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVs
YXhlZFdlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5j
aEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihjb25kLCBl
eHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1
bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FT
MzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIGFkZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQ4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRk
OChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0
ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNBZGQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihSZWdpc3RlcklEIHJlZywg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBhZGQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0Fk
ZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFkZDMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHN1YjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBzdWI4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Vi
OChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1
YjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBzdWIzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHN1YjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
U3ViMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihyZWcsIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYW5kOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBhbmQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY0FuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFJlZ2lzdGVySUQgcmVnLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIGFuZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5k
MTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YW5kMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBvcjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yOChSZWdpc3RlcklEIHJlZywgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBv
cjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoUmVnaXN0
ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJl
Z2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY09yMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IzMihyZWcsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBvcjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9y
OChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WG9yOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IHhvcjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICB4b3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IzMihpbW0s
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFJlZ2lzdGVySUQg
cmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIHhvcjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljWG9yMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzgoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc4KGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY05lZzgoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzgoYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljTmVnMTYoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWcxNihhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMTYoYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljTmVnMzIoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWczMihhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNOZWczMihCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMzIoYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljTm90OChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDgoYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljTm90OChCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90OChhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNOb3QxNihBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDE2KGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY05vdDE2KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QxNihhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNOb3QzMihBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDMyKGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY05vdDMyKEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QzMihhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYY2hnQWRkOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxl
ci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hn
QWRkMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZHdfcm0ocmVnLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNY
Y2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkd19ybShyZWcs
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNo
Z2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhj
aGdiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGd3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3dfcm0ocmVnLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2Vt
Ymxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEFk
ZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkOChzcmMsIGRl
c3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEJhc2VJbmRleCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4KHNyYywgZGVzdCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKEFkZHJlc3Mgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoQmFzZUlu
ZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDhTaWduZWRFeHRl
bmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEFkZHJl
c3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTYoc3JjLCBkZXN0
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTYoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDE2KHNyYywgZGVzdCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihBZGRyZXNzIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRl
c3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoQmFz
ZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDE2U2lnbmVk
RXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihB
ZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDMyKHNyYywg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTMyKEJhc2VJbmRleCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQzMihzcmMsIGRlc3QpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
c3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IHN0b3JlOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTgoaW1tLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDgoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBzdG9yZTE2KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAg
ICAgICBzdG9yZTE2KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwx
NihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2
KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMTYoaW1tLCBkZXN0
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYywgZGVzdCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBzdG9yZTMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
c3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAg
ICBzdG9yZTMyKGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIo
aW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhh
dCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBv
biB4ODYuCisgICAgdm9pZCBzdG9yZUZlbmNlKCkKKyAgICB7CisgICAgfQorCisgICAgLy8gV2Ug
dGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIGxvYWRz
LiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KKyAgICB2b2lkIGxvYWRGZW5jZSgpCisgICAgewor
ICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJl
bCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB7
CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQu
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cisg
ICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
CisgICAgeworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRT
aXplKCk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgp
CisgICAgeworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgp
OworICAgIH0KKworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5n
KCkKKyAgICB7CisgICAgICAgIGlmIChzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0
YXRlOjpOb3RDaGVja2VkKQorICAgICAgICAgICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7CisgICAg
ICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7Cisg
ICAgfQorCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNBVlgoKQorICAgIHsKKyAgICAgICAgLy8g
QVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3VzIHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNz
aW9ucyBjYW4gYmUgbWFzc2l2ZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hGbGFncygpCisgICAgeworICAgICAgICBpbnQgZmxh
Z3MgPSAwOworI2lmIENPTVBJTEVSKE1TVkMpCisgICAgICAgIGludCBjcHVJbmZvWzRdOworICAg
ICAgICBfX2NwdWlkKGNwdUluZm8sIDB4MSk7CisgICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsK
KyNlbGlmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBh
c20gKAorICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgorICAgICAgICAgICAgImNwdWlk
OyIKKyAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCisgICAgICAgICAgICA6ICI9ZyIgKGZs
YWdzKQorICAgICAgICAgICAgOgorICAgICAgICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3gi
LCAiJWVkeCIKKyAgICAgICAgICAgICk7CisjZWxzZQorICAgICAgICBhc20gKAorICAgICAgICAg
ICAgIm1vdmwgJDB4MSwgJSVlYXg7IgorICAgICAgICAgICAgInB1c2hsICUlZWJ4OyIKKyAgICAg
ICAgICAgICJjcHVpZDsiCisgICAgICAgICAgICAicG9wbCAlJWVieDsiCisgICAgICAgICAgICAi
bW92bCAlJWVjeCwgJTA7IgorICAgICAgICAgICAgOiAiPWciIChmbGFncykKKyAgICAgICAgICAg
IDoKKyAgICAgICAgICAgIDogIiVlYXgiLCAiJWVjeCIsICIlZWR4IgorICAgICAgICAgICAgKTsK
KyNlbmRpZgogI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19PUl9DTEFORykKICAgICAgICAgc19zc2U0
XzFDaGVja1N0YXRlID0gKGZsYWdzICYgKDEgPDwgMTkpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0
IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKICAgICAgICAgc19hdnhDaGVja1N0YXRlID0gKGZs
YWdzICYgKDEgPDwgMjgpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRl
OjpDbGVhcjsKQEAgLTI4MzEsNiArMzkzMywxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCk7CiAgICAgfQogCisg
ICAgWDg2QXNzZW1ibGVyOjpDb25kaXRpb24geDg2Q29uZGl0aW9uKFN0YXR1c0NvbmRpdGlvbiBj
b25kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAgIGNhc2UgU3VjY2Vz
czoKKyAgICAgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkU7CisgICAgICAg
IGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlv
bk5FOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkU7CisgICAgfQorCiAgICAgdm9p
ZCBzZXQzMihYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogI2lmIENQVShYODYpCkBAIC0yOTI1LDYgKzQwMzksMzUgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihzaXplT2ZSZWdpc3RlciksIGRzdCk7CiAgICAgICAgIHNy
Y0lzTm9uWmVyby5saW5rKHRoaXMpOwogICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIHJlc3VsdCwgY29uc3QgRnVu
YyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lz
dGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7
CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAg
ICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNvbmQpLCByZXN1bHQpOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMoUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3
YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRS
ZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgorICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAg
IHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dh
cChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQogCiBwcml2
YXRlOgogICAgIC8vIE9ubHkgTWFjcm9Bc3NlbWJsZXJYODYgc2hvdWxkIGJlIHVzaW5nIHRoZSBm
b2xsb3dpbmcgbWV0aG9kOyBTU0UyIGlzIGFsd2F5cyBhdmFpbGFibGUgb24KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0LmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2NCwxMSArMjY0LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9tcihz
cmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChCYXNl
SW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
ZGRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7
CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0
LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYWRkNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZv
aWQgYWRkNjQoQWJzb2x1dGVBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNyYy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsK
QEAgLTMwNiw2ICszMTYsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
cV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQog
CisgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQorICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuaW5jcV9tKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFk
ZHJlc3Muc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRx
X2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0z
MiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CkBAIC0zNDIsMTEg
KzM2MCw0MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfcnIoc3JjLCBkZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYywgQmFzZUlu
ZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX3JtKHNyYywgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBhbmQ2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQor
CisgICAgdm9pZCBhbmQ2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5k
ZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5h
bmRxX2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0KFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmFuZHFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKwor
ICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDY0
KFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBp
bnRwdHJfdCBpbnRWYWx1ZSA9IGltbS5hc0ludHB0cigpOwpAQCAtNTUyLDExICs2MDAsNTEgQEAg
cHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX3IoZGVzdCk7CiAgICAgfQogCisgICAg
dm9pZCBuZWc2NChBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdx
X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWc2NChCYXNl
SW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfbShkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lk
IG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLm9ycV9ycihzcmMsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgb3I2NChSZWdp
c3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3Jx
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLm9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3I2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5i
YXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9p
ZCBvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLm9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7Cisg
ICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lk
IG9yNjQoVHJ1c3RlZEltbTY0IGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAg
ICAgaWYgKGltbS5tX3ZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
CkBAIC02MTksMTYgKzcwNywzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFf
aW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAor
ICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisK
ICAgICB2b2lkIHN1YjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAg
ICB9CiAKKyAgICB2b2lkIHN1YjY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNy
Yy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjY0KFJlZ2lz
dGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJx
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2
NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3I2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9ycihzcmMsIGRlc3Qp
OwpAQCAtNjUxLDYgKzc1NCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFf
cm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjY0
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX21yKHNyYy5vZmZzZXQsIHNy
Yy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KEJhc2VJbmRleCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfbXIoc3JjLm9m
ZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX2ltKGltbS5tX3ZhbHVlLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisK
ICAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwpA
QCAtNjY2LDYgKzc5NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vdHFfbShk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG5vdDY0KEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90cV9tKGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgbG9h
ZDY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRl
c3QpOwpAQCAtNzI1LDYgKzg1OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1v
dnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAg
fQogCisgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsK
KyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0IGltbSwgSW1wbGljaXRBZGRy
ZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzMyXzY0KGlt
bS5tX3ZhbHVlKSkgewpAQCAtMTI5NCw3ICsxNDMyLDI3NSBAQCBwdWJsaWM6CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciks
IHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwgbWFzazgp
OwogICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRv
bWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsgfSk7CisgICAgfQogCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
YXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1f
YXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9p
ZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJv
bmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ff
cm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9u
Z0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBy
ZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0g
eyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9h
c3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
NjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQp
OworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNz
KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRv
bWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRy
ZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAg
ICAgICBhdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vh
a0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQo
Y29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisK
KyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNBZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFk
ZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkNjQoVHJ1
c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQocmVnLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFkZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
U3ViNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2NChpbW0sIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2
NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIHN1YjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljU3ViNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2NChyZWcsIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgYW5kNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2
NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgYW5kNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNPcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9y
NjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNPcjY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
eG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYb3I2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVn
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNOZWc2NChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y05lZzY0KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBuZWc2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNOb3Q2NChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y05vdDY0KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBub3Q2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYY2hnQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZHFfcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkcV9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJl
c3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc2NChSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc2NChSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgbG9hZEFjcTY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNx
NjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDY0
KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU2NChzcmMsIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHN0b3JlUmVsNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgc3RvcmU2NChpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0
b3JlUmVsNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAg
ICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQorICAgIAogICAgIHZvaWQgdHJ1bmNhdGVEb3Vi
bGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5jdnR0c2Qyc2lxX3JyKHNyYywgZGVzdCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIx
MzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTAsMTYgKzE5MCwyMCBAQCBwcml2YXRlOgogICAg
ICAgICBPUF9BRERfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgwMSwKICAgICAgICAgT1Bf
QUREX0d2RXYgICAgICAgICAgICAgICAgICAgICA9IDB4MDMsCiAgICAgICAgIE9QX0FERF9FQVhJ
diAgICAgICAgICAgICAgICAgICAgPSAweDA1LAorICAgICAgICBPUF9PUl9FdkdiICAgICAgICAg
ICAgICAgICAgICAgID0gMHgwOCwKICAgICAgICAgT1BfT1JfRXZHdiAgICAgICAgICAgICAgICAg
ICAgICA9IDB4MDksCiAgICAgICAgIE9QX09SX0d2RXYgICAgICAgICAgICAgICAgICAgICAgPSAw
eDBCLAogICAgICAgICBPUF9PUl9FQVhJdiAgICAgICAgICAgICAgICAgICAgID0gMHgwRCwKICAg
ICAgICAgT1BfMkJZVEVfRVNDQVBFICAgICAgICAgICAgICAgICA9IDB4MEYsCisgICAgICAgIE9Q
X0FORF9FdkdiICAgICAgICAgICAgICAgICAgICAgPSAweDIwLAogICAgICAgICBPUF9BTkRfRXZH
diAgICAgICAgICAgICAgICAgICAgID0gMHgyMSwKICAgICAgICAgT1BfQU5EX0d2RXYgICAgICAg
ICAgICAgICAgICAgICA9IDB4MjMsCisgICAgICAgIE9QX1NVQl9FdkdiICAgICAgICAgICAgICAg
ICAgICAgPSAweDI4LAogICAgICAgICBPUF9TVUJfRXZHdiAgICAgICAgICAgICAgICAgICAgID0g
MHgyOSwKICAgICAgICAgT1BfU1VCX0d2RXYgICAgICAgICAgICAgICAgICAgICA9IDB4MkIsCiAg
ICAgICAgIE9QX1NVQl9FQVhJdiAgICAgICAgICAgICAgICAgICAgPSAweDJELAogICAgICAgICBQ
UkVfUFJFRElDVF9CUkFOQ0hfTk9UX1RBS0VOICAgID0gMHgyRSwKKyAgICAgICAgT1BfWE9SX0V2
R2IgICAgICAgICAgICAgICAgICAgICA9IDB4MzAsCiAgICAgICAgIE9QX1hPUl9Fdkd2ICAgICAg
ICAgICAgICAgICAgICAgPSAweDMxLAogICAgICAgICBPUF9YT1JfR3ZFdiAgICAgICAgICAgICAg
ICAgICAgID0gMHgzMywKICAgICAgICAgT1BfWE9SX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9
IDB4MzUsCkBAIC0yMjMsNiArMjI3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfR1JPVVAxX0V2
SWIgICAgICAgICAgICAgICAgICA9IDB4ODMsCiAgICAgICAgIE9QX1RFU1RfRWJHYiAgICAgICAg
ICAgICAgICAgICAgPSAweDg0LAogICAgICAgICBPUF9URVNUX0V2R3YgICAgICAgICAgICAgICAg
ICAgID0gMHg4NSwKKyAgICAgICAgT1BfWENIR19FdkdiICAgICAgICAgICAgICAgICAgICA9IDB4
ODYsCiAgICAgICAgIE9QX1hDSEdfRXZHdiAgICAgICAgICAgICAgICAgICAgPSAweDg3LAogICAg
ICAgICBPUF9NT1ZfRWJHYiAgICAgICAgICAgICAgICAgICAgID0gMHg4OCwKICAgICAgICAgT1Bf
TU9WX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4ODksCkBAIC0yNTIsNiArMjU3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgUFJFX1NTRV9GMiAgICAgICAgICAgICAgICAgICAgICA9IDB4RjIs
CiAgICAgICAgIFBSRV9TU0VfRjMgICAgICAgICAgICAgICAgICAgICAgPSAweEYzLAogICAgICAg
ICBPUF9ITFQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHhGNCwKKyAgICAgICAgT1BfR1JP
VVAzX0ViICAgICAgICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9QX0dST1VQM19FYkli
ICAgICAgICAgICAgICAgICAgPSAweEY2LAogICAgICAgICBPUF9HUk9VUDNfRXYgICAgICAgICAg
ICAgICAgICAgID0gMHhGNywKICAgICAgICAgT1BfR1JPVVAzX0V2SXogICAgICAgICAgICAgICAg
ICA9IDB4RjcsIC8vIE9QX0dST1VQM19FdiBoYXMgYW4gaW1tZWRpYXRlLCB3aGVuIGluc3RydWN0
aW9uIGlzIGEgdGVzdC4gCkBAIC0yOTAsNiArMjk2LDggQEAgcHJpdmF0ZToKICAgICAgICAgT1Bf
U0VUQ0MgICAgICAgICAgICA9IDB4OTAsCiAgICAgICAgIE9QMl8zQllURV9FU0NBUEVfQUUgPSAw
eEFFLAogICAgICAgICBPUDJfSU1VTF9HdkV2ICAgICAgID0gMHhBRiwKKyAgICAgICAgT1AyX0NN
UFhDSEdiICAgICAgICA9IDB4QjAsCisgICAgICAgIE9QMl9DTVBYQ0hHICAgICAgICAgPSAweEIx
LAogICAgICAgICBPUDJfTU9WWlhfR3ZFYiAgICAgID0gMHhCNiwKICAgICAgICAgT1AyX0JTRiAg
ICAgICAgICAgICA9IDB4QkMsCiAgICAgICAgIE9QMl9UWkNOVCAgICAgICAgICAgPSAweEJDLApA
QCAtMjk4LDYgKzMwNiw4IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9NT1ZTWF9HdkViICAgICAg
PSAweEJFLAogICAgICAgICBPUDJfTU9WWlhfR3ZFdyAgICAgID0gMHhCNywKICAgICAgICAgT1Ay
X01PVlNYX0d2RXcgICAgICA9IDB4QkYsCisgICAgICAgIE9QMl9YQUREYiAgICAgICAgICAgPSAw
eEMwLAorICAgICAgICBPUDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAgT1AyX1BF
WFRSV19HZFVkSWIgICA9IDB4QzUsCiAgICAgICAgIE9QMl9QU0xMUV9VZHFJYiAgICAgPSAweDcz
LAogICAgICAgICBPUDJfUFNSTFFfVWRxSWIgICAgID0gMHg3MywKQEAgLTQ0MCw2ICs0NTAsMTEg
QEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQUREX0d2RXYsIGRz
dCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCBhZGRsX21yKGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BRERfR3ZF
diwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAogI2lmICFD
UFUoWDg2XzY0KQogICAgIHZvaWQgYWRkbF9tcihjb25zdCB2b2lkKiBhZGRyLCBSZWdpc3RlcklE
IGRzdCkKICAgICB7CkBAIC01NjIsMTEgKzU3NywyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAg
fQogCisgICAgdm9pZCBhZGRxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0FERF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAg
dm9pZCBhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0FERF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CisKICAgICB2b2lkIGFkZHFfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtNTkxLDYg
KzYxNiwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihp
bW0pOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBhZGRxX2ltKGludCBpbW0sIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQURELCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBhZGRsX2ltKGludCBpbW0sIGNvbnN0
IHZvaWQqIGFkZHIpCiAgICAgewpAQCAtNjE0LDExICs2NTAsNDMgQEAgcHVibGljOgogICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CiAKKyAgICB2b2lkIGFuZGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAg
IHZvaWQgYW5kbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9P
UEVSQU5EX1NJWkUpOworICAgICAgICBhbmRsX3JtKHNyYywgb2Zmc2V0LCBiYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBhbmRsX3JtKHNyYywg
b2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kYl9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhbmRsX2lyKGludCBpbW0sIFJlZ2lz
dGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkp
IHsKQEAgLTY0MSw2ICs3MDksNTMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAg
dm9pZCBhbmRsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVO
RF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFf
T1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmR3
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FO
RCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFuZHdfaW0oaW50IGltbSwgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgYW5kYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIs
IEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9B
TkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBhbmRxX3Jy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC02NTcsNiArNzcyLDQ4
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAg
ICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDY0KE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9p
ZCBhbmRxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0FORF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
KyAgICB2b2lkIGFuZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQor
ICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5E
LCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0p
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAg
dm9pZCBhbmRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVO
RF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dS
T1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JP
VVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KICNlbHNlCiAgICAg
dm9pZCBhbmRsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewpAQCAtNzAzLDYg
Kzg2MCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9HUk9VUDVfRXYsIEdST1VQMV9PUF9BREQsIGJhc2UsIG9mZnNldCk7CiAgICAgfQorCisg
ICAgdm9pZCBpbmNxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9HUk9VUDVfRXYsIEdST1VQMV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICB9CiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogICAgIHZvaWQgbmVnbF9yKFJlZ2lzdGVy
SUQgZHN0KQpAQCAtNzE1LDYgKzg3NywxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9ORUcsIGRzdCk7CiAg
ICAgfQorCisgICAgdm9pZCBuZWdxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNf
T1BfTkVHLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgbmVncV9tKGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1Bf
TkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2
b2lkIG5lZ2xfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCkBAIC03MjIsNiArODk0LDMz
IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19Fdiwg
R1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG5lZ2xfbShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQ
M19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lk
IG5lZ3dfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5lZ2xfbShvZmZzZXQs
IGJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWdsX20ob2Zmc2V0LCBi
YXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnYl9tKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDNfRWIsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAg
dm9pZCBuZWdiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAzX0ViLCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
fQorCiAgICAgdm9pZCBub3RsX3IoUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBkc3QpOwpAQCAt
NzMyLDYgKzkzMSwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAg
dm9pZCBub3RsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
fQorCisgICAgdm9pZCBub3R3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBu
b3RsX20ob2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbm90
bF9tKG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGJf
bShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBub3RxX3IoUmVnaXN0
ZXJJRCBkc3QpCiAgICAgewpAQCAtNzQyLDYgKzk2OCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1Qs
IGJhc2UsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBub3RxX20oaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgb3Js
X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTc1NCwxMSArOTg1LDQzIEBA
IHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2RXYsIGRzdCwg
YmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9tcihpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfR3ZFdiwgZHN0LCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAg
ICAgfQogCisgICAgdm9pZCBvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBvcmxfcm0o
c3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcmJf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJhc2UsIG9mZnNl
dCk7CisgICAgfQorCisgICAgdm9pZCBvcmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgb3JsX2lyKGludCBpbW0sIFJlZ2lz
dGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkp
IHsKQEAgLTc4NCwxMiArMTA0NywxMDEgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisg
ICAgdm9pZCBvcmxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhU
RU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAx
X09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBvcndf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwg
YmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHZvaWQgb3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAx
X09QX09SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgfQorCisgICAgdm9pZCBvcmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9PUiwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG9ycV9ycihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9PUl9Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQogCisgICAgdm9pZCBvcnFfbXIoaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAg
IHZvaWQgb3JxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKworICAgIHZvaWQgb3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JP
VVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB2b2lkIG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lH
Tl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJ
eiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCiAgICAg
dm9pZCBvcnFfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAo
Q0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtODMxLDExICsxMTgzLDQzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9HdkV2LCBkc3QsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJsX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIHN1Ymxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN1Yndfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnBy
ZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVf
T1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN1
YmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHYiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3ViYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNyYywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3VibF9pcihpbnQgaW1t
LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbW0pKSB7CkBAIC04NjEsNiArMTI0NSw1MyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9
CiAKKyAgICB2b2lkIHN1YmxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXos
IEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2
b2lkIHN1YndfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9V
UDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc3Vid19pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBzdWJiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDFfRWJJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgc3ViYl9pbShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JP
VVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lk
IHN1YnFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTg3Miwx
MSArMTMwMywyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X1NVQl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJxX21y
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
LCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX1NVQl9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
ICAgICB2b2lkIHN1YnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9Fdkd2
LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9F
dkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lk
IHN1YnFfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTAxLDYgKzEzNDIsMTcgQEAgcHVibGljOgog
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAg
IH0KKworICAgIHZvaWQgc3VicV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAj
ZWxzZQogICAgIHZvaWQgc3VibF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsK
QEAgLTkyNCwxMSArMTM3NiwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9YT1JfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQg
eG9ybF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfWE9SX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
IH0KKwogICAgIHZvaWQgeG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9F
dkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4b3JsX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1Jf
RXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9p
ZCB4b3JsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC05NDAsNiArMTQwMiw3
NSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHhvcmxfaW0oaW50IGlt
bSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1Bf
WE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGlt
bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcndfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgeG9ybF9ybShzcmMsIG9mZnNldCwg
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAg
eG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIHhvcndfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9V
UDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yd19pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfWE9SX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcmJf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX1hPUl9FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
KyAgICB2b2lkIHhvcmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9V
UDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KGltbSk7CisgICAgfQorCisgICAgdm9pZCB4b3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTgoaW1tKTsKKyAgICB9CisKICAgICB2b2lkIHhvcmxfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBk
c3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAt
OTc0LDExICsxNTA1LDQ3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICB2
b2lkIHhvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNl
LCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JP
VVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZv
aWQgeG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9V
UDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgdm9p
ZCB4b3JxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAg
ICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfRXZHdiwgc3JjLCBi
YXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9ycV9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfRXZHdiwgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JxX21y
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYsIGRlc3QsIGJhc2UsIG9m
ZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfR3ZFdiwgZGVzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBsemNu
dF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNTg2LDExICsyMTUzLDM4
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2
R3YsIHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lkIHhjaGdiX3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfWENIR19FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfWENIR19FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhjaGd3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgo
UFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hH
X0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhjaGd3X3JtKFJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BF
UkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHdiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4Y2hn
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2
b2lkIHhjaGdxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC0x
NjA2LDYgKzIyMDAsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQorCisgICAg
dm9pZCB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBtb3ZsX3JyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRzdCkKQEAgLTE3MzEsNiArMjMzMCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDgoT1BfTU9WX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgbW92d19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJF
X09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDEx
X0V2SXosIEdST1VQMTFfTU9WLCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGlhdGUxNihpbW0pOworICAgIH0KKworICAgIHZvaWQgbW92d19pbShpbnQgaW1tLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MTYoaW1tKTsKKyAgICB9CisKICAgICB2b2lkIG1vdmxfRUFYbShjb25zdCB2b2lkKiBhZGRyKQog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX01PVl9PdkVBWCk7CkBAIC0x
ODAwLDYgKzI0MTMsMTIgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUz
MihpbW0pOwogICAgIH0KIAorICAgIHZvaWQgbW92cV9pMzJtKGludCBpbW0sIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxMV9Fdkl6LCBHUk9VUDExX01P
ViwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUzMihpbW0pOworICAgIH0KKwogICAgIHZvaWQgbW92cV9pNjRyKGludDY0X3QgaW1tLCBS
ZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X01PVl9FQVhJdiwgZHN0KTsKQEAgLTI3NzUsNiArMzM5NCw5MCBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfTE9DSyk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY21w
eGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX0NNUFhDSEdiLCBzcmMsIGJh
c2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ2Jfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENI
R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGNtcHhjaGd3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBv
ZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGd3X3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hncV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zm
c2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFk
ZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX1hBRERiLCBzcmMsIGJhc2UsIG9m
ZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGR3X3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHhhZGR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCB4YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9Q
Ml9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGxf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9w
KE9QMl9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAg
CisgICAgdm9pZCB4YWRkcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1hBREQs
IHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkcV9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJf
WEFERCwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAogICAg
IHZvaWQgbWZlbmNlKCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wKE9Q
Ml8zQllURV9FU0NBUEVfQUUsIE9QM19NRkVOQ0UpOwpAQCAtMzc1MSw2ICs0NDU0LDI0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShncm91cE9wLCBybSk7CiAg
ICAgICAgIH0KIAorICAgICAgICB2b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29k
ZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAg
ICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOwor
ICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBiYXNl
KSwgcmVnLCAwLCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9Q
XzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNv
ZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgfQorCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bjb2RlSUQgb3Bj
b2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSwgaW50IG9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25C
dWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4
SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJlZykgfHwgcmVnUmVxdWlyZXNSZXgoaW5kZXgsIGJhc2Up
LCByZWcsIGluZGV4LCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2Vk
KE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChv
cGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICB9CisKICAgICAgICAgLy8gSW1tZWRpYXRlczoKICAg
ICAgICAgLy8KICAgICAgICAgLy8gQW4gaW1tZWRhaXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVy
ZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBoYXMgYmVlbiBlbWl0dGVkLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisK
KyNpZiBFTkFCTEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwor
QXRvbWljVmFsdWU6On5BdG9taWNWYWx1ZSgpCit7Cit9CisKK1dpZHRoIEF0b21pY1ZhbHVlOjph
Y2Nlc3NXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2lkdGg7Cit9CisKK3ZvaWQgQXRv
bWljVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisgICAgb3V0LnByaW50KGNvbW1hLCAid2lkdGggPSAiLCBtX3dpZHRoKTsKKyAg
ICAKKyAgICBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoY29tbWEsIG91dCk7Cit9CisKK1ZhbHVlKiBB
dG9taWNWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbmV3IEF0b21pY1Zh
bHVlKCp0aGlzKTsKK30KKworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3Jp
Z2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwg
aW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisg
ICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBvcGVyYW5kLT50eXBlKCksIG9y
aWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSwgb3BlcmFuZCwgcG9pbnRlcikKKyAgICAs
IG1fd2lkdGgod2lkdGgpCit7CisgICAgQVNTRVJUKGJlc3RUeXBlKEdQLCBvcGVyYXRpb25XaWR0
aCgpKSA9PSBvcGVyYXRpb25UeXBlKCkpOworICAgIAorICAgIHN3aXRjaCAoa2luZC5vcGNvZGUo
KSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6Cisg
ICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2Ug
QXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworQXRv
bWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lk
dGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVy
LCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkK
KyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIGtpbmQub3Bjb2RlKCkgPT0g
QXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRWYWx1ZS0+dHlwZSgpLCBvcmlnaW4sIG9m
ZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UsIGV4cGVjdGVkVmFsdWUsIG5ld1ZhbHVlLCBwb2ludGVy
KQorICAgICwgbV93aWR0aCh3aWR0aCkKK3sKKyAgICBBU1NFUlQoYmVzdFR5cGUoR1AsIG9wZXJh
dGlvbldpZHRoKCkpID09IG9wZXJhdGlvblR5cGUoKSk7CisKKyAgICBzd2l0Y2ggKGtpbmQub3Bj
b2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdD
QVM6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAv
LyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9t
aWNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21p
Y1ZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRv
bWljVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2lk
dGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIEF0b21pY1ZhbHVlIDogcHVibGljIE1lbW9yeVZhbHVlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHJldHVybiBp
c0F0b21pYyhraW5kLm9wY29kZSgpKTsKKyAgICB9CisgICAgCisgICAgfkF0b21pY1ZhbHVlKCk7
CisgICAgCisgICAgVHlwZSBvcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gY2hpbGQoMCkt
PnR5cGUoKTsgfQorICAgIAorICAgIFdpZHRoIG9wZXJhdGlvbldpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV93aWR0aDsgfQorICAgIAorICAgIC8vIFN5bm9ueW0gZm9yIG9wZXJhdGlvbldpZHRoKCks
IGlmIHlvdSdyZSBhY2Nlc3NpbmcgdmlhIE1lbW9yeVZhbHVlLgorICAgIFdpZHRoIGFjY2Vzc1dp
ZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBkdW1wTWV0
YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIAorICAg
IFZhbHVlKiBjbG9uZUltcGwoKSBjb25zdCBvdmVycmlkZTsKKyAgICAKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKKyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmln
aW4sIFdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0
ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNl
UmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBP
cmlnaW4sIFdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1
ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFu
Z2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCkpOworICAg
IAorICAgIFdpZHRoIG1fd2lkdGg7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKwor
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDcgQEAgY2xh
c3MgQmxvY2tJbnNlcnRpb25TZXQ7CiBjbGFzcyBJbnNlcnRpb25TZXQ7CiBjbGFzcyBQcm9jZWR1
cmU7CiBjbGFzcyBWYWx1ZTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBHZW5lcmljQmxvY2tJ
bnNlcnRpb25TZXQ7CiAKIGNsYXNzIEJhc2ljQmxvY2sgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEJhc2ljQmxvY2spOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBJbnNlcnRpb25TZXQ7
CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJp
ZW5kIGNsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDsKICAgICAKICAgICAvLyBJbnN0YW50
aWF0ZSB2aWEgUHJvY2VkdXJlLgogICAgIEJhc2ljQmxvY2sodW5zaWduZWQgaW5kZXgsIGRvdWJs
ZSBmcmVxdWVuY3kpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNl
cnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDM1ICsz
NiwxMyBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIEJsb2NrSW5zZXJ0aW9u
U2V0OjpCbG9ja0luc2VydGlvblNldChQcm9jZWR1cmUgJnByb2MpCi0gICAgOiBtX3Byb2MocHJv
YykKKyAgICA6IEdlbmVyaWNCbG9ja0luc2VydGlvblNldChwcm9jLm1fYmxvY2tzKQorICAgICwg
bV9wcm9jKHByb2MpCiB7CiB9CiAKIEJsb2NrSW5zZXJ0aW9uU2V0Ojp+QmxvY2tJbnNlcnRpb25T
ZXQoKSB7IH0KIAotdm9pZCBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KEJsb2NrSW5zZXJ0aW9u
JiYgaW5zZXJ0aW9uKQotewotICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRp
b24pKTsKLX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydCh1bnNpZ25l
ZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNC
bG9jaz4gYmxvY2sobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOwotICAgIEJh
c2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdldCgpOwotICAgIGluc2VydChCbG9ja0luc2VydGlv
bihpbmRleCwgV1RGTW92ZShibG9jaykpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1CYXNp
Y0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9y
ZSwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgo
KSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5
KCkpOwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIoQmFz
aWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChh
ZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBh
ZnRlci0+ZnJlcXVlbmN5KCkpOwotfQotCiBCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6
c3BsaXRGb3J3YXJkKAogICAgIEJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCYgdmFsdWVJbmRl
eCwgSW5zZXJ0aW9uU2V0KiBpbnNlcnRpb25TZXQsIGRvdWJsZSBmcmVxdWVuY3kpCiB7CkBAIC0x
MDIsMzIgKzgwLDYgQEAgQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6OnNwbGl0Rm9ydwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgQmxvY2tJbnNlcnRpb25TZXQ6OmV4ZWN1dGUo
KQotewotICAgIGlmIChtX2luc2VydGlvbnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCi0gICAgLy8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBp
biBhbnkgb3JkZXIuIFNvLCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKLSAgICAvLyBydW5u
aW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMuIFdlIHN0cm9uZ2x5IHByZWZlciBhIHN0YWJsZSBz
b3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCi0gICAgLy8gZmFzdCwgc28gd2UgdXNlIGJ1YmJsZSBz
b3J0LgotICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5l
bmQoKSk7Ci0KLSAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX3Byb2MubV9ibG9ja3MsIG1faW5zZXJ0
aW9ucyk7Ci0gICAgCi0gICAgLy8gUHJ1bmUgb3V0IGVtcHR5IGVudHJpZXMuIFRoaXMgaXNuJ3Qg
c3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzCi0gICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBi
bG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KLSAgICBtX3Byb2MubV9ibG9ja3MucmVtb3ZlQWxsTWF0
Y2hpbmcoCi0gICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+JiBibG9ja1B0
cikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gIWJsb2NrUHRyOwotICAgICAgICB9KTsK
LSAgICAKLSAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGlu
ZGljZXMuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvYy5tX2Jsb2Nrcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgbV9wcm9jLm1fYmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKLSAgICAK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxv
Y2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCbG9ja0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlIDx3
dGYvSW5zZXJ0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzUsMjYgKzM2LDEz
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBJbnNlcnRpb25TZXQ7
CiAKLXR5cGVkZWYgV1RGOjpJbnNlcnRpb248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBC
bG9ja0luc2VydGlvbjsKK3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxv
Y2s+OjpCbG9ja0luc2VydGlvbiBCbG9ja0luc2VydGlvbjsKIAotY2xhc3MgQmxvY2tJbnNlcnRp
b25TZXQgeworY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0PEJhc2ljQmxvY2s+IHsKIHB1YmxpYzoKICAgICBCbG9ja0luc2VydGlvblNldChQ
cm9jZWR1cmUmKTsKICAgICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKICAgICAKLSAgICB2b2lkIGlu
c2VydChCbG9ja0luc2VydGlvbiYmKTsKLQotICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBh
IGdpdmVuIGluZGV4LgotICAgIEJhc2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91
YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBiZWZv
cmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNzIHRoZSBmcmVxdWVu
Y3kKLSAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0byBqdXN0IHVzZSB0
aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCi0gICAgLy8gdXN1YWxs
eSB3aGF0IHlvdSB3YW50LgotICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9yZShCYXNpY0Jsb2Nr
KiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBu
ZXcgYmxvY2sgYWZ0ZXIgdGhlIGdpdmVuIGJsb2NrLgotICAgIEJhc2ljQmxvY2sqIGluc2VydEFm
dGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KICAgICAv
LyBBIGhlbHBlciB0byBzcGxpdCBhIGJsb2NrIHdoZW4gZm9yd2FyZCBpdGVyYXRpbmcgb3ZlciBp
dC4gSXQgY3JlYXRlcyBhIG5ldyBibG9jayB0byBob2xkCiAgICAgLy8gZXZlcnl0aGluZyBiZWZv
cmUgdGhlIGluc3RydWN0aW9uIGF0IHZhbHVlSW5kZXguIFRoZSBjdXJyZW50IGJsb2NrIGlzIGxl
ZnQgd2l0aAogICAgIC8vIGV2ZXJ5dGhpbmcgYXQgYW5kIGFmdGVyIHZhbHVlSW5kZXguIElmIHRo
ZSBvcHRpb25hbCBJbnNlcnRpb25TZXQgaXMgcHJvdmlkZWQsIGl0IHdpbGwgZ2V0CkBAIC04MCwx
MiArNjgsOSBAQCBwdWJsaWM6CiAgICAgQmFzaWNCbG9jayogc3BsaXRGb3J3YXJkKAogICAgICAg
ICBCYXNpY0Jsb2NrKiwgdW5zaWduZWQmIHZhbHVlSW5kZXgsIEluc2VydGlvblNldCogPSBudWxs
cHRyLAogICAgICAgICBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0gICAgCi0gICAgYm9vbCBl
eGVjdXRlKCk7CiAKIHByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7Ci0gICAgVmVjdG9y
PEJsb2NrSW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCShyZXZp
c2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTgyLDcgKzgyLDggQEAgYm9vbCBFZmZlY3RzOjppbnRlcmZlcmVz
KGNvbnN0IEVmZmVjdHMmIAogICAgICAgICB8fCBpbnRlcmZlcmVzV2l0aFdyaXRlc1Bpbm5lZChv
dGhlciwgKnRoaXMpCiAgICAgICAgIHx8IHdyaXRlcy5vdmVybGFwcyhvdGhlci53cml0ZXMpCiAg
ICAgICAgIHx8IHdyaXRlcy5vdmVybGFwcyhvdGhlci5yZWFkcykKLSAgICAgICAgfHwgcmVhZHMu
b3ZlcmxhcHMob3RoZXIud3JpdGVzKTsKKyAgICAgICAgfHwgcmVhZHMub3ZlcmxhcHMob3RoZXIu
d3JpdGVzKQorICAgICAgICB8fCAoZmVuY2UgJiYgb3RoZXIuZmVuY2UpOwogfQogCiBib29sIEVm
ZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0CkBAIC05NSw3ICs5
Niw4IEBAIGJvb2wgRWZmZWN0czo6b3BlcmF0b3I9PShjb25zdCBFZmZlY3RzJiAKICAgICAgICAg
JiYgd3JpdGVzUGlubmVkID09IG90aGVyLndyaXRlc1Bpbm5lZAogICAgICAgICAmJiByZWFkc1Bp
bm5lZCA9PSBvdGhlci5yZWFkc1Bpbm5lZAogICAgICAgICAmJiB3cml0ZXMgPT0gb3RoZXIud3Jp
dGVzCi0gICAgICAgICYmIHJlYWRzID09IG90aGVyLnJlYWRzOworICAgICAgICAmJiByZWFkcyA9
PSBvdGhlci5yZWFkcworICAgICAgICAmJiBmZW5jZSA9PSBvdGhlci5mZW5jZTsKIH0KIAogYm9v
bCBFZmZlY3RzOjpvcGVyYXRvciE9KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtMTIw
LDYgKzEyMiw4IEBAIHZvaWQgRWZmZWN0czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb24KICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzUGlubmVkIik7CiAgICAgaWYgKHJlYWRzUGlu
bmVkKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJSZWFkc1Bpbm5lZCIpOworICAgIGlmIChm
ZW5jZSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRmVuY2UiKTsKICAgICBpZiAod3JpdGVz
KQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJXcml0ZXM6Iiwgd3JpdGVzKTsKICAgICBpZiAo
cmVhZHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCShyZXZpc2lvbiAy
MTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC03MSw2ICs3MSwxMCBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzE3MwogICAgIGJvb2wgcmVhZHNQ
aW5uZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgd3JpdGVzUGlubmVkIHsgZmFsc2UgfTsKKyAgICAK
KyAgICAvLyBNZW1vcnkgZmVuY2VzIGNhbm5vdCBiZSByZW9yZGVyZWQgYXJvdW5kIGVhY2ggb3Ro
ZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBlZmZlY3RzLiBUaGlzIGlzIGZsYWdnZWQKKyAgICAvLyBp
ZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVtb3J5IGZlbmNlLgorICAgIGJvb2wgZmVuY2UgeyBmYWxz
ZSB9OwogCiAgICAgSGVhcFJhbmdlIHdyaXRlczsKICAgICBIZWFwUmFuZ2UgcmVhZHM7CkBAIC04
OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZlY3RzIHsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVh
cFJhbmdlOjp0b3AoKTsKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAg
ICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRy
dWU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMDMsNyArMTA4LDcgQEAg
c3RydWN0IEVmZmVjdHMgewogCiAgICAgYm9vbCBtdXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0
YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQ7CisgICAgICAgIHJldHVybiB0ZXJtaW5hbCB8
fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bp
bm5lZCB8fCBmZW5jZTsKICAgICB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgcmVvcmRlcmlu
ZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVzZSByZXNwZWN0aXZlIGVmZmVjdHMgd291bGQgY2hhbmdl
IHByb2dyYW0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1v
blN1YmV4cHJlc3Npb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAJKHJldmlzaW9uIDIxMzI2MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Np
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDIsNiArMTQyLDcgQEAgc3RydWN0IEltcHVyZUJsb2Nr
RGF0YSB7CiAKICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+IHJlYWRzOyAvLyBUaGlzIG9ubHkgZ2V0
cyB1c2VkIGZvciBmb3J3YXJkIHN0b3JlIGVsaW1pbmF0aW9uLgogICAgIFJhbmdlU2V0PEhlYXBS
YW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdldHMgdXNlZCBmb3IgYm90aCBsb2FkIGFuZCBzdG9yZSBl
bGltaW5hdGlvbi4KKyAgICBib29sIGZlbmNlOwogCiAgICAgTWVtb3J5VmFsdWVNYXAgc3RvcmVz
QXRIZWFkOwogICAgIE1lbW9yeVZhbHVlTWFwIG1lbW9yeVZhbHVlc0F0VGFpbDsKQEAgLTE3NCwx
MiArMTc1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBp
ZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNTdG9yZSgpCiAgICAgICAgICAgICAgICAgICAgICYmICFk
YXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAg
JiYgIWRhdGEud3JpdGVzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkpCisgICAgICAgICAgICAg
ICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCisgICAgICAg
ICAgICAgICAgICAgICYmICghZGF0YS5mZW5jZSB8fCAhbWVtb3J5LT5oYXNGZW5jZSgpKSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YS5zdG9yZXNBdEhlYWQuYWRkKG1lbW9yeSk7CiAgICAgICAg
ICAgICAgICAgZGF0YS5yZWFkcy5hZGQoZWZmZWN0cy5yZWFkcyk7CiAKICAgICAgICAgICAgICAg
ICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9IGVmZmVjdHMud3JpdGVzKQogICAgICAgICAgICAgICAg
ICAgICBjbG9iYmVyKGRhdGEsIHdyaXRlcyk7CisgICAgICAgICAgICAgICAgZGF0YS5mZW5jZSB8
PSBlZmZlY3RzLmZlbmNlOwogCiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7CkBAIC00NDUs
OCArNDQ4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBkYXRhTG9nKCJCYWQgbWVtb3J5IHZhbHVlOiAiLCBkZWVwRHVtcChtX3Byb2MsIG1f
dmFsdWUpLCAiXG4iKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTQ3OCw2ICs0NzksOSBA
QCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KICAgICBib29sIGZpbmRT
dG9yZUFmdGVyQ2xvYmJlcihWYWx1ZSogcHRyLCBIZWFwUmFuZ2UgcmFuZ2UsIGNvbnN0IEZpbHRl
ciYgZmlsdGVyKQogICAgIHsKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigp
LT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICAg
ICAgLy8gV2UgY2FuIGVsaW1pbmF0ZSBhIHN0b3JlIGlmIGV2ZXJ5IGZvcndhcmQgcGF0aCBoaXRz
IGEgc3RvcmUgdG8gdGhlIHNhbWUgbG9jYXRpb24gYmVmb3JlCiAgICAgICAgIC8vIGhpdHRpbmcg
YW55IG9wZXJhdGlvbiB0aGF0IG9ic2VydmVzIHRoZSBzdG9yZS4gVGhpcyBzZWFyY2ggc2VlbXMg
bGlrZSBpdCBzaG91bGQgYmUKICAgICAgICAgLy8gZXhwZW5zaXZlLCBidXQgaW4gdGhlIG92ZXJ3
aGVsbWluZyBtYWpvcml0eSBvZiBjYXNlcyBpdCB3aWxsIGFsbW9zdCBpbW1lZGlhdGVseSBoaXQg
YW4gCkBAIC02MTQsNiArNjE4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygqbV92YWx1ZSwgIjogbG9va2luZyBiYWNrd2FyZCBmb3IgIiwg
KnB0ciwgIi4uLlxuIik7CiAgICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5
VmFsdWU+KCktPmhhc0ZlbmNlKCkpIHsKKyAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBHaXZpbmcgdXAgYmVjYXVzZSBmZW5jZXMuXG4iKTsKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChN
ZW1vcnlWYWx1ZSogbWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBm
aWx0ZXIpKSB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgRm91bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTky
LDYgKzkyLDcgQEAgdm9pZCBnZW5lcmF0ZVRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlLAogICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTA3CiAg
ICAgfQogCisgICAgLy8gVGhpcyBwdXRzIHRoZSBJUiBpbiBxdWlya3MgbW9kZS4KICAgICBsb3dl
ck1hY3Jvcyhwcm9jZWR1cmUpOwogCiAgICAgaWYgKG9wdExldmVsID49IDEpIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlv
blNldC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIlB1cmVOYU4uaCIKKyNpbmNsdWRl
IDx3dGYvQnViYmxlU29ydC5oPgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFz
cyBJbnNlcnRpb25TZXQ7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJhc2ljQmxvY2s+CitjbGFzcyBH
ZW5lcmljQmxvY2tJbnNlcnRpb25TZXQgeworcHVibGljOgorICAgIHR5cGVkZWYgV1RGOjpJbnNl
cnRpb248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBCbG9ja0luc2VydGlvbjsKKyAgICAK
KyAgICBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNp
Y0Jsb2NrPj4mIGJsb2NrcykKKyAgICAgICAgOiBtX2Jsb2NrcyhibG9ja3MpCisgICAgeworICAg
IH0KKyAgICAKKyAgICB2b2lkIGluc2VydChCbG9ja0luc2VydGlvbiYmIGluc2VydGlvbikKKyAg
ICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRpb24pKTsKKyAg
ICB9CisKKyAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQgYSBnaXZlbiBpbmRleC4KKyAgICBC
YXNpY0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFO
KQorICAgIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+IGJsb2NrKG5ldyBC
YXNpY0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKKyAgICAgICAgQmFzaWNCbG9jayogcmVz
dWx0ID0gYmxvY2suZ2V0KCk7CisgICAgICAgIGluc2VydChCbG9ja0luc2VydGlvbihpbmRleCwg
V1RGTW92ZShibG9jaykpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAv
LyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVzdWFsbHkgeW91
IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQorICAgIC8vIGFyZ3VtZW50LiBQYXNzaW5nIFBO
YU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdiZWZvcmUnIGJs
b2NrLiBUaGF0J3MKKyAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCisgICAgQmFzaWNCbG9j
ayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSA9IFBO
YU4pCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgoKSwgZnJlcXVl
bmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5KCkpOworICAg
IH0KKworICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYWZ0ZXIgdGhlIGdpdmVuIGJsb2NrLgor
ICAgIEJhc2ljQmxvY2sqIGluc2VydEFmdGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJl
cXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYWZ0ZXItPmluZGV4
KCkgKyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYWZ0ZXItPmZyZXF1
ZW5jeSgpKTsKKyAgICB9CisKKyAgICBib29sIGV4ZWN1dGUoKQorICAgIHsKKyAgICAgICAgaWYg
KG1faW5zZXJ0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIAorICAgICAgICAvLyBXZSBhbGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGlu
IGFueSBvcmRlci4gU28sIHdlIG5lZWQgdG8gc29ydCB0aGVtIGJlZm9yZQorICAgICAgICAvLyBy
dW5uaW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMuIFdlIHN0cm9uZ2x5IHByZWZlciBhIHN0YWJs
ZSBzb3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCisgICAgICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBi
dWJibGUgc29ydC4KKyAgICAgICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9p
bnNlcnRpb25zLmVuZCgpKTsKKyAgICAgICAgCisgICAgICAgIGV4ZWN1dGVJbnNlcnRpb25zKG1f
YmxvY2tzLCBtX2luc2VydGlvbnMpOworICAgICAgICAKKyAgICAgICAgLy8gUHJ1bmUgb3V0IGVt
cHR5IGVudHJpZXMuIFRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzCisgICAg
ICAgIC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxvY2sgbGlzdCBmcm9tIGdyb3dpbmcuCisgICAg
ICAgIG1fYmxvY2tzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICAgICAgWyZdIChzdGQ6OnVu
aXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gIWJsb2NrUHRyOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICAv
LyBNYWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGluZGljZXMuCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrcy5zaXplKCk7ICsraSkKKyAgICAg
ICAgICAgIG1fYmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKKyAgICAgICAgCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJh
c2ljQmxvY2s+PiYgbV9ibG9ja3M7CisgICAgVmVjdG9yPEJsb2NrSW5zZXJ0aW9uLCA4PiBtX2lu
c2VydGlvbnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAko
cmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtODgsNiArODgsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAorICAgIEhlYXBSYW5nZSBvcGVyYXRvcnwo
Y29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBIZWFw
UmFuZ2UoCisgICAgICAgICAgICBzdGQ6Om1pbihtX2JlZ2luLCBvdGhlci5tX2JlZ2luKSwKKyAg
ICAgICAgICAgIHN0ZDo6bWF4KG1fZW5kLCBvdGhlci5tX2VuZCkpOworICAgIH0KKyAgICAKICAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbiAhPSBtX2Vu
ZDsgfQogCiAgICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAJKHJldmlz
aW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCwxMSBAQCBWYWx1ZSogSW5zZXJ0aW9uU2V0
OjppbnNlcnRCb3R0b20oc2l6ZV90CiAgICAgcmV0dXJuIGluc2VydEJvdHRvbShpbmRleCwgbGlr
ZVZhbHVlLT5vcmlnaW4oKSwgbGlrZVZhbHVlLT50eXBlKCkpOwogfQogCitWYWx1ZSogSW5zZXJ0
aW9uU2V0OjppbnNlcnRDbG9uZShzaXplX3QgaW5kZXgsIFZhbHVlKiB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gaW5zZXJ0VmFsdWUoaW5kZXgsIG1fcHJvY2VkdXJlLmNsb25lKHZhbHVlKSk7Cit9CisK
IHZvaWQgSW5zZXJ0aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIGJ1
YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMjEz
MjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKIAogICAgIFZhbHVlKiBpbnNlcnRC
b3R0b20oc2l6ZV90IGluZGV4LCBPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBpbnNlcnRCb3R0
b20oc2l6ZV90IGluZGV4LCBWYWx1ZSopOworICAgIAorICAgIFZhbHVlKiBpbnNlcnRDbG9uZShz
aXplX3QgaW5kZXgsIFZhbHVlKik7CiAKICAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayopOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZp
c2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMSArMjksMTMgQEAKICNpZiBFTkFCTEUoQjNfSklU
KQogCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCisjaW5jbHVk
ZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNp
bmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgi
CiAjaW5jbHVkZSAiQjNDYXNlQ29sbGVjdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJCM0NvbnN0
UHRyVmFsdWUuaCIKKyNpbmNsdWRlICJCM0ZlbmNlVmFsdWUuaCIKICNpbmNsdWRlICJCM0luc2Vy
dGlvblNldElubGluZXMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCiAjaW5jbHVkZSAi
QjNQYXRjaHBvaW50VmFsdWUuaCIKQEAgLTQyLDYgKzQ0LDcgQEAKICNpbmNsdWRlICJCM1N0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzU3dpdGNoVmFsdWUuaCIKICNpbmNs
dWRlICJCM1Vwc2lsb25WYWx1ZS5oIgorI2luY2x1ZGUgIkIzVXNlQ291bnRzLmgiCiAjaW5jbHVk
ZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRl
ICJMaW5rQnVmZmVyLmgiCkBAIC01OCwxMSArNjEsMTQgQEAgcHVibGljOgogICAgICAgICA6IG1f
cHJvYyhwcm9jKQogICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAgICAg
LCBtX2luc2VydGlvblNldChwcm9jKQorICAgICAgICAsIG1fdXNlQ291bnRzKHByb2MpCiAgICAg
ewogICAgIH0KIAogICAgIGJvb2wgcnVuKCkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFtX3Byb2MuaGFzUXVpcmtzKCkpOworICAgICAgICAKICAgICAgICAgZm9yIChCYXNpY0Jsb2Nr
KiBibG9jayA6IG1fcHJvYykgewogICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwogICAgICAg
ICAgICAgcHJvY2Vzc0N1cnJlbnRCbG9jaygpOwpAQCAtNzIsNiArNzgsMTAgQEAgcHVibGljOgog
ICAgICAgICAgICAgbV9wcm9jLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgICAgICAgICBtX3By
b2MuaW52YWxpZGF0ZUNGRygpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGlz
IGluZGljYXRlcyB0aGF0IHdlJ3ZlIAorICAgICAgICBtX3Byb2Muc2V0SGFzUXVpcmtzKHRydWUp
OworICAgICAgICAKICAgICAgICAgcmV0dXJuIG1fY2hhbmdlZDsKICAgICB9CiAgICAgCkBAIC0x
ODUsNyArMTk1LDExOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAgICAgIGlmIChpc1g4
NigpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGxvYWQtbG9hZCBmZW5jZS4g
VGhpcyBjb2RlZ2VucyB0byBub3RoaW5nIG9uIFg4Ni4gV2UgdXNlIGl0IHRvIHRlbGwgdGhlCisg
ICAgICAgICAgICAgICAgICAgIC8vIGNvbXBpbGVyIG5vdCB0byBibG9jayBsb2FkIG1vdGlvbi4K
KyAgICAgICAgICAgICAgICAgICAgRmVuY2VWYWx1ZSogZmVuY2UgPSBtX2luc2VydGlvblNldC5p
bnNlcnQ8RmVuY2VWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4pOworICAgICAgICAgICAgICAgICAg
ICBmZW5jZS0+cmVhZCA9IEhlYXBSYW5nZSgpOworICAgICAgICAgICAgICAgICAgICBmZW5jZS0+
d3JpdGUgPSBIZWFwUmFuZ2U6OnRvcCgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgLy8gS2lsbCB0aGUgRGVwZW5kLCB3aGljaCBzaG91bGQgdW5sb2NrIGEgYnVu
Y2ggb2YgY29kZSBzaW1wbGlmaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+
cmVwbGFjZVdpdGhCb3R0b20obV9pbnNlcnRpb25TZXQsIG1faW5kZXgpOworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25n
Q0FTOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBh
dG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBXaWR0
aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBpZiAoaXNDYW5vbmljYWxXaWR0aCh3aWR0aCkpCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFZhbHVlKiBl
eHBlY3RlZFZhbHVlID0gYXRvbWljLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAvLyBPbiBBUk0sIHRoZSBsb2FkIHBhcnQgb2YgdGhlIENBUyBkb2VzIGEgbG9h
ZCB3aXRoIHplcm8gZXh0ZW5zaW9uLiBUaGVyZWZvcmUsIHdlIG5lZWQKKyAgICAgICAgICAgICAg
ICAvLyB0byB6ZXJvLWV4dGVuZCB0aGUgaW5wdXQuCisgICAgICAgICAgICAgICAgVmFsdWUqIG1h
c2tlZEV4cGVjdGVkVmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4LCBCaXRBbmQsIG1fb3JpZ2luLCBleHBlY3RlZFZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChtX2lu
ZGV4LCBleHBlY3RlZFZhbHVlLCBtYXNrKHdpZHRoKSkpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGF0b21pYy0+Y2hpbGQoMCkgPSBtYXNrZWRFeHBlY3RlZFZhbHVlOworICAg
ICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzogewor
ICAgICAgICAgICAgICAgIC8vIE9uIFg4NiwgdGhlc2UgbWF5IGFjdHVhbGx5IHJldHVybiBnYXJi
YWdlIGluIHRoZSBoaWdoIGJpdHMuIE9uIEFSTTY0LCB0aGVzZSBzb3J0YQorICAgICAgICAgICAg
ICAgIC8vIHplcm8tZXh0ZW5kIHRoZWlyIGhpZ2ggYml0cywgZXhjZXB0IHRoYXQgdGhlIGhpZ2gg
Yml0cyBtaWdodCBnZXQgcG9sbHV0ZWQgYnkgaGlnaAorICAgICAgICAgICAgICAgIC8vIGJpdHMg
aW4gdGhlIG9wZXJhbmQuIC4gU28sIGVpdGhlciB3YXksIHdlIG5lZWQgdG8gdGhyb3cgYSBzaWdu
LWV4dGVuZCBvbiB0aGVzZQorICAgICAgICAgICAgICAgIC8vIHRoaW5ncy4KKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAobV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljWGNoZ1N1YiAmJiBtX3VzZUNvdW50cy5u
dW1Vc2VzKG1fdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbiB4ODYsIHhj
aGdhZGQgaXMgYmV0dGVyIHRoYW4geGNoZ3N1YiBpZiBpdCBoYXMgYW55IHVzZXJzLgorICAgICAg
ICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+c2V0T3Bjb2RlVW5zYWZlbHkoQXRvbWljWGNoZ0Fk
ZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRl
eCwgTmVnLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBib29sIGV4ZW1w
dCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRv
bWljWGNoZ1N1YjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAg
ICAgICAgICAgICAgICAgICAgICAgZXhlbXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGV4ZW1wdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSog
YXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lk
dGggd2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSog
bmV3VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAg
ICAgICBtX2luZGV4LCBzaWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwgbV9vcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENsb25lKG1faW5kZXgsIGF0b21pYykp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRo
SWRlbnRpdHkobmV3VmFsdWUpOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgICAgIGNhc2UgTG9hZDE2WjogeworICAg
ICAgICAgICAgICAgIGlmIChpc1g4NigpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92
YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAgICAgICAgaWYgKCFtZW1vcnktPmhh
c0ZlbmNlKCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIC8vIFN1Yi13aWR0aCBsb2FkLWFjcSBvbiBBUk02NCBhbHdheXMgc2ln
biBleHRlbmRzLgorICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdMb2FkID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Q2xvbmUobV9pbmRleCwgbWVtb3J5KTsKKyAgICAgICAgICAgICAgICBuZXdMb2Fk
LT5zZXRPcGNvZGVVbnNhZmVseShtZW1vcnktPm9wY29kZSgpID09IExvYWQ4WiA/IExvYWQ4UyA6
IExvYWQxNlMpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdW
YWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAg
IG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIG5ld0xvYWQsCisgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbmRleCwgbV9vcmlnaW4sIEludDMyLCBtYXNrKG1lbW9yeS0+bG9hZFN0b3JlV2lkdGgo
KSkpKTsKIAorICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3
VmFsdWUpOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNDcwLDYg
KzU5Miw3IEBAIHByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CiAgICAgQmxvY2tJbnNl
cnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRp
b25TZXQ7CisgICAgVXNlQ291bnRzIG1fdXNlQ291bnRzOwogICAgIEJhc2ljQmxvY2sqIG1fYmxv
Y2s7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKICAgICBWYWx1ZSogbV92YWx1ZTsKQEAgLTQ3Nywy
MSArNjAwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NoYW5nZWQgeyBmYWxzZSB9OwogfTsK
IAotYm9vbCBsb3dlck1hY3Jvc0ltcGwoUHJvY2VkdXJlJiBwcm9jKQotewotICAgIExvd2VyTWFj
cm9zIGxvd2VyTWFjcm9zKHByb2MpOwotICAgIHJldHVybiBsb3dlck1hY3Jvcy5ydW4oKTsKLX0K
LQogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIGJvb2wgbG93ZXJNYWNyb3MoUHJvY2VkdXJl
JiBwcm9jKQogewotICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jLCAibG93ZXJNYWNyb3Mi
KTsKLSAgICBib29sIHJlc3VsdCA9IGxvd2VyTWFjcm9zSW1wbChwcm9jKTsKLSAgICBpZiAoc2hv
dWxkVmFsaWRhdGVJUigpKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbG93ZXJNYWNyb3NJbXBs
KHByb2MpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIExvd2VyTWFjcm9zIGxvd2VyTWFjcm9z
KHByb2MpOworICAgIHJldHVybiBsb3dlck1hY3Jvcy5ydW4oKTsKIH0KIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jv
c0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCShyZXZpc2lvbiAyMTMy
NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1p
emF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTYsMTUgKzE1NiwxNCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgY2FzZSBSb3RMOiB7CiAgICAgICAgICAgICAgICAgLy8gQVJNNjQgZG9l
c24ndCBoYXZlIGEgcm90YXRlIGxlZnQuCiAgICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1f
aW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgw
KSwgbmV3U2hpZnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdp
dGhJZGVudGl0eShyb3RhdGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdp
bigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3Rh
dGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUt
Pm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOworICAgICAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDEyICsyOCwxNCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckJsb2Nr
SW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWlyQ0NhbGxTcGVjaWFsLmgiCiAjaW5jbHVkZSAi
QWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpckluc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkFpcklu
c3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tTbG90LmgiCiAjaW5jbHVkZSAiQjNBcmd1
bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIz
QmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrV29ya2xpc3QuaCIKICNpbmNs
dWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTcyLDYgKzc0LDE2IEBAIG5hbWVzcGFjZSB7CiAKIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCisvLyBGSVhNRTogV2Ugd291bGRuJ3QgbmVlZCB0
aGlzIGlmIEFpciBzdXBwb3J0ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFpcjo6S2luZC4KKy8vIE9P
UFMhISEgKG5lZWQgYSBidWcgVVJMKQorI2RlZmluZSBPUENPREVfRk9SX1dJRFRIKG9wY29kZSwg
d2lkdGgpICggXAorICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDggOiBcCisgICAg
KHdpZHRoKSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAorICAgICh3aWR0aCkgPT0gV2lk
dGgzMiA/IG9wY29kZSAjIyAzMiA6IFwKKyAgICBvcGNvZGUgIyMgNjQpCisjZGVmaW5lIE9QQ09E
RV9GT1JfQ0FOT05JQ0FMX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAorICAgICh3aWR0aCkgPT0g
V2lkdGg2NCA/IG9wY29kZSAjIyA2NCA6IG9wY29kZSAjIyAzMikKKwogY2xhc3MgTG93ZXJUb0Fp
ciB7CiBwdWJsaWM6CiAgICAgTG93ZXJUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSkKQEAgLTgz
LDYgKzk1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RvbWluYXRvcnMocHJvY2VkdXJlLmRv
bWluYXRvcnMoKSkKICAgICAgICAgLCBtX3Byb2NlZHVyZShwcm9jZWR1cmUpCiAgICAgICAgICwg
bV9jb2RlKHByb2NlZHVyZS5jb2RlKCkpCisgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldCht
X2NvZGUpCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICAgICAgLCBtX2VheChYODZS
ZWdpc3RlcnM6OmVheCkKKyAgICAgICAgLCBtX2VjeChYODZSZWdpc3RlcnM6OmVjeCkKKyAgICAg
ICAgLCBtX2VkeChYODZSZWdpc3RlcnM6OmVkeCkKKyNlbmRpZgogICAgIHsKICAgICB9CiAKQEAg
LTEyNCwxNCArMTQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3RlZCBhZGRyZXNzIGV4
cHJlc3Npb24gYmVmb3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhlIGxvb3AuCiAgICAg
ICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUuYmxvY2tzSW5QcmVP
cmRlcigpKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAgICAgICAgICAvLyBS
ZXNldCBzb21lIHN0YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CiAKICAgICAg
ICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAKICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nIEJsb2Nr
ICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBNYWtlIHN1
cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KKyAgICAgICAgICAg
IGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygp
KSB7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCku
YXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2Nr
VG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOworICAg
ICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBpbiByZXZlcnNlIG9y
ZGVyIHNvIHdlIHNlZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBhbGxvd3MgdXMKICAg
ICAgICAgICAgIC8vIHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5LgogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAtMTQ5LDE5ICsxNzEs
MTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRhaW5zIHRo
ZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAgICAgICAgLy8gaXQgaW4g
cmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBp
LS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0c1tpXSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBlbmRJbnN0KFdURk1v
dmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhh
dCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAgICAgICAgIGZvciAo
QjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0g
ICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCkuYXBwZW5k
KAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrVG9CbG9j
a1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG1fYmxvY2tUb0Js
b2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fYmxvY2tJbnNlcnRp
b25TZXQuZXhlY3V0ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0IGluc2VydGlvblNl
dChtX2NvZGUpOwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xvZ3VlKQpAQCAtNTYy
LDExICs1NzUsMTkgQEAgcHJpdmF0ZToKICAgICAKICAgICBBcmdQcm9taXNlIGxvYWRQcm9taXNl
QW55T3Bjb2RlKFZhbHVlKiBsb2FkVmFsdWUpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VS
VChsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKICAgICAgICAgaWYgKCFjYW5CZUludGVy
bmFsKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAgIGlmIChj
cm9zc2VzSW50ZXJmZXJlbmNlKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7
Ci0gICAgICAgIEFyZ1Byb21pc2UgcmVzdWx0KGFkZHIobG9hZFZhbHVlKSwgbG9hZFZhbHVlKTsK
KyAgICAgICAgLy8gT24geDg2LCBhbGwgbG9hZHMgaGF2ZSBmZW5jZXMuIERvaW5nIHRoaXMga2lu
ZCBvZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gd2lsbCBtb3ZlIHRoZSBsb2FkLAorICAgICAgICAv
LyBidXQgdGhhdCdzIGZpbmUgYmVjYXVzZSBvdXIgaW50ZXJmZXJlbmNlIGFuYWx5c2lzIHN0b3Bz
IHRoZSBtb3Rpb24gb2YgZmVuY2VzIGFyb3VuZCBvdGhlcgorICAgICAgICAvLyBmZW5jZXMuIFNv
LCBhbnkgbG9hZCBtb3Rpb24gd2UgaW50cm9kdWNlIGhlcmUgd291bGQgbm90IGJlIG9ic2VydmFi
bGUuCisgICAgICAgIGlmICghaXNYODYoKSAmJiBsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigp
LT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIEFyZygpOworICAgICAgICBBcmcgbG9h
ZEFkZHIgPSBhZGRyKGxvYWRWYWx1ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxvYWRBZGRy
KTsKKyAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQobG9hZEFkZHIsIGxvYWRWYWx1ZSk7CiAgICAg
ICAgIGlmIChsb2FkVmFsdWUtPnRyYXBzKCkpCiAgICAgICAgICAgICByZXN1bHQuc2V0VHJhcHMo
dHJ1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04OTgsMTEgKzkxOSw5IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotI2lmIENQVShYODYpIHx8IENQ
VShYODZfNjQpCiAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAodmFsdWUpLCB0bXAobV92YWx1ZSkp
OwotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKGFtb3VudCksIFRtcChYODZSZWdpc3RlcnM6OmVj
eCkpOwotICAgICAgICBhcHBlbmQob3Bjb2RlLCBUbXAoWDg2UmVnaXN0ZXJzOjplY3gpLCB0bXAo
bV92YWx1ZSkpOwotI2VuZGlmCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1vdW50KSwgbV9l
Y3gpOworICAgICAgICBhcHBlbmQob3Bjb2RlLCBtX2VjeCwgdG1wKG1fdmFsdWUpKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2Rl
NjQ+CkBAIC05MzEsMTAgKzk1MCwxNiBAQCBwcml2YXRlOgogICAgICAgICBBaXI6Ok9wY29kZSBv
cGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0
eSA9IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVCaW5PcChWYWx1ZSog
bGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV92YWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOworICAgICAgICAKICAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIGxlZnQtPnR5cGUoKSk7
CiAgICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAKKyAgICAgICAgLy8gT24geDg2LCBhbGwgc3RvcmVzIGhhdmUgZmVuY2Vz
LCBhbmQgdGhpcyBpc24ndCByZW9yZGVyaW5nIHRoZSBzdG9yZSBpdHNlbGYuCisgICAgICAgIGlm
ICghaXNYODYoKSAmJiBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIEFyZyBzdG9yZUFkZHIg
PSBhZGRyKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlQoc3RvcmVBZGRyKTsKIApAQCAtOTk0LDEx
ICsxMDE5LDUwIEBAIHByaXZhdGU6CiAKICAgICAgICAgcmV0dXJuIEluc3QobW92ZSwgbV92YWx1
ZSwgdG1wKHZhbHVlKSwgZGVzdCk7CiAgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3Jl
T3Bjb2RlKFdpZHRoIHdpZHRoLCBCYW5rIGJhbmssIGJvb2wgcmVsZWFzZSkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8g
U3RvcmVSZWw4IDogQWlyOjpTdG9yZTg7CisgICAgICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0dXJuIHJlbGVh
c2UgPyBTdG9yZVJlbDE2IDogQWlyOjpTdG9yZTE2OworICAgICAgICBjYXNlIFdpZHRoMzI6Cisg
ICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDMyIDogTW92ZTMyOworICAgICAgICAg
ICAgY2FzZSBGUDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpczY0Qml0KCkpOworICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgICAg
ICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWw2NCA6
IE1vdmU7CisgICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFyZWxlYXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3Jl
T3Bjb2RlKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkg
PSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lbW9y
eS0+aXNTdG9yZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0b3JlT3Bjb2RlKG1lbW9yeS0+bG9hZFN0
b3JlV2lkdGgoKSwgbWVtb3J5LT5hY2Nlc3NCYW5rKCksIG1lbW9yeS0+aGFzRmVuY2UoKSk7Cisg
ICAgfQogCiAgICAgSW5zdCBjcmVhdGVTdG9yZShWYWx1ZSogdmFsdWUsIGNvbnN0IEFyZyYgZGVz
dCkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBtb3ZlRm9yVHlwZSh2
YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUsIHZh
bHVlLCBkZXN0KTsKKyAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IHN0b3JlT3Bjb2Rl
KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUsIHZhbHVlLT5j
aGlsZCgwKSwgZGVzdCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4K
QEAgLTEwMDYsNyArMTA3MCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBhcHBlbmQodHJh
cHBpbmdJbnN0KG1fdmFsdWUsIGNyZWF0ZVN0b3JlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpKTsKICAgICB9Ci0KKyAgICAKICAgICBBaXI6Ok9wY29kZSBtb3ZlRm9yVHlwZShUeXBlIHR5
cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEwNzMsNyArMTEzNyw0MSBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGluc3QpOwog
ICAgIH0KKyAgICAKKyAgICB2b2lkIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyhBaXI6OkJh
c2ljQmxvY2sqIHRhcmdldCkKKyAgICB7CisgICAgICAgIC8vIE5vdyBhcHBlbmQgdGhlIGluc3Ry
dWN0aW9ucy4gbV9pbnN0cyBjb250YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIsIHNvIHdlIHBy
b2Nlc3MKKyAgICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9pbnN0cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6
IG1faW5zdHNbaV0pCisgICAgICAgICAgICAgICAgdGFyZ2V0LT5hcHBlbmRJbnN0KFdURk1vdmUo
aW5zdCkpOworICAgICAgICB9CisgICAgICAgIG1faW5zdHMucmVzaXplKDApOworICAgIH0KKyAg
ICAKKyAgICBBaXI6OkJhc2ljQmxvY2sqIG5ld0Jsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKG1fYmxvY2tUb0Jsb2NrW21fYmxvY2td
KTsKKyAgICB9CiAKKyAgICAvLyBOT1RFOiBUaGlzIHdpbGwgY3JlYXRlIGEgY29udGludWF0aW9u
IGJsb2NrIChgbmV4dEJsb2NrYCkgKmFmdGVyKiBhbnkgYmxvY2tzIHlvdSd2ZSBjcmVhdGVkIHVz
aW5nCisgICAgLy8gbmV3QmxvY2soKS4gU28sIGl0J3MgcHJlZmVyYWJsZSB0byBjcmVhdGUgYWxs
IG9mIHlvdXIgYmxvY2tzIHVwZnJvbnQgdXNpbmcgbmV3QmxvY2soKS4gQWxzbyBub3RlCisgICAg
Ly8gdGhhdCBhbnkgY29kZSB5b3UgZW1pdCBiZWZvcmUgdGhpcyB3aWxsIGJlIHByZXBlbmRlZCB0
byB0aGUgY29udGludWF0aW9uLCBhbmQgYW55IGNvZGUgeW91IGVtaXQKKyAgICAvLyBhZnRlciB0
aGlzIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHByZXZpb3VzIGJsb2NrLgorICAgIHZvaWQgc3Bs
aXRCbG9jayhBaXI6OkJhc2ljQmxvY2sqJiBwcmV2aW91c0Jsb2NrLCBBaXI6OkJhc2ljQmxvY2sq
JiBuZXh0QmxvY2spCisgICAgeworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJsb2NrID0gbV9i
bG9ja1RvQmxvY2tbbV9ibG9ja107CisgICAgICAgIAorICAgICAgICBwcmV2aW91c0Jsb2NrID0g
YmxvY2s7CisgICAgICAgIG5leHRCbG9jayA9IG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QWZ0
ZXIoYmxvY2spOworICAgICAgICAKKyAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25z
KG5leHRCbG9jayk7CisgICAgICAgIG5leHRCbG9jay0+c3VjY2Vzc29ycygpID0gYmxvY2stPnN1
Y2Nlc3NvcnMoKTsKKyAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigpOworICAgICAg
ICAKKyAgICAgICAgbV9pbnN0cy5hcHBlbmQoVmVjdG9yPEluc3Q+KCkpOworICAgIH0KKyAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgVCog
ZW5zdXJlU3BlY2lhbChUKiYgZmllbGQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7
CkBAIC0xMTIzLDcgKzEyMjEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoKICAgICAgICAgICAgICAg
ICBhcmcgPSBBcmc6OmNhbGxBcmcodmFsdWUucmVwKCkub2Zmc2V0RnJvbVNQKCkpOwotICAgICAg
ICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlLnZhbHVlKCksIGFyZyk7CisgICAgICAgICAgICAg
ICAgYXBwZW5kU3RvcmUobW92ZUZvclR5cGUodmFsdWUudmFsdWUoKS0+dHlwZSgpKSwgdmFsdWUu
dmFsdWUoKSwgYXJnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE5
NjEsNiArMjA1OSwzMTAgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CisgICAgdm9pZCBhcHBlbmRYODZEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFp
cjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7CisgICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsK
KyAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMjoK
KyAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3Jk
MzI7CisgICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEludDY0OgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNv
bnZlcnRUb1F1YWRXb3JkNjQ7CisgICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKKyAgICAgICAgVG1wIHJlc3VsdCA9IG9w
ID09IERpdiA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3Zh
bHVlLT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdv
cmQsIG1fZWF4LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1w
KG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcCht
X3ZhbHVlKSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpPcGNvZGUgb3Ap
CisgICAgeworICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50
MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CisKKyAgICAgICAgQVNTRVJUKG9wID09IFVEaXYg
fHwgb3AgPT0gVU1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gbV9lYXgg
OiBtX2VkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwg
bV9lYXgpOworICAgICAgICBhcHBlbmQoWG9yNjQsIG1fZWR4LCBtX2VkeCk7CisgICAgICAgIGFw
cGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAg
IGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorICAgIAorICAgIEFp
cjo6T3Bjb2RlIGxvYWRMaW5rT3Bjb2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZlbmNlID8gT1BDT0RFX0ZPUl9XSURUSChMb2FkTGlua0FjcSwgd2lk
dGgpIDogT1BDT0RFX0ZPUl9XSURUSChMb2FkTGluaywgd2lkdGgpOworICAgIH0KKyAgICAKKyAg
ICBBaXI6Ok9wY29kZSBzdG9yZUNvbmRPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVuY2UpCisg
ICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZFJl
bCwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmQsIHdpZHRoKTsKKyAgICB9Cisg
ICAgCisgICAgLy8gVGhpcyBjYW4gZW1pdCBjb2RlIGZvciB0aGUgZm9sbG93aW5nIHBhdHRlcm5z
OgorICAgIC8vIEF0b21pY1dlYWtDQVMKKyAgICAvLyBCaXRYb3IoQXRvbWljV2Vha0NBUywgMSkK
KyAgICAvLyBBdG9taWNTdHJvbmdDQVMKKyAgICAvLyBFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4
cGVjdGVkKQorICAgIC8vIE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAg
Ly8gQnJhbmNoKEF0b21pY1dlYWtDQVMpCisgICAgLy8gQnJhbmNoKEVxdWFsKEF0b21pY1N0cm9u
Z0NBUywgZXhwZWN0ZWQpKQorICAgIC8vIEJyYW5jaChOb3RFcXVhbChBdG9taWNTdHJvbmdDQVMs
IGV4cGVjdGVkKSkKKyAgICAvLworICAgIC8vIEl0IGFzc3VtZXMgdGhhdCBhdG9taWNWYWx1ZSBw
b2ludHMgdG8gdGhlIENBUywgYW5kIG1fdmFsdWUgcG9pbnRzIHRvIHRoZSBpbnN0cnVjdGlvbiBi
ZWluZworICAgIC8vIGdlbmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBjb25zdW1lZCBl
dmVyeXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc3VtZWQuCisgICAgdm9pZCBhcHBlbmRDQVMo
VmFsdWUqIGF0b21pY1ZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAgIEF0b21pY1Zh
bHVlKiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGF0b21pYyk7CisgICAgICAgIAorICAgICAgICBib29sIGlzQnJhbmNoID0g
bV92YWx1ZS0+b3Bjb2RlKCkgPT0gQnJhbmNoOworICAgICAgICBib29sIGlzU3Ryb25nID0gYXRv
bWljLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wgcmV0dXJuc09s
ZFZhbHVlID0gbV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTOworICAgICAgICBi
b29sIGhhc0ZlbmNlID0gYXRvbWljLT5oYXNGZW5jZSgpOworICAgICAgICAKKyAgICAgICAgV2lk
dGggd2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAgICAgIEFyZyBhZGRyZXNz
ID0gYWRkcihhdG9taWMpOworCisgICAgICAgIFRtcCB2YWx1ZVJlc3VsdFRtcDsKKyAgICAgICAg
VG1wIGJvb2xSZXN1bHRUbXA7CisgICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUpIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbnZlcnQpOworICAgICAgICAgICAgdmFsdWVSZXN1bHRU
bXAgPSB0bXAobV92YWx1ZSk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gbV9jb2RlLm5l
d1RtcChHUCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHZh
bHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBib29sUmVzdWx0
VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2
YWx1ZVJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgYm9vbFJlc3Vs
dFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVG1wIHN1
Y2Nlc3NCb29sUmVzdWx0VG1wOworICAgICAgICBpZiAoaXNTdHJvbmcgJiYgIWlzQnJhbmNoKQor
ICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBib29sUmVzdWx0
VG1wOworCisgICAgICAgIFRtcCBleHBlY3RlZFZhbHVlVG1wID0gdG1wKGF0b21pYy0+Y2hpbGQo
MCkpOworICAgICAgICBUbXAgbmV3VmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGlsZCgxKSk7Cisg
ICAgICAgIAorICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzOworICAgICAgICBB
aXI6OkZyZXF1ZW50ZWRCbG9jayBmYWlsdXJlOworICAgICAgICBpZiAoaXNCcmFuY2gpIHsKKyAg
ICAgICAgICAgIHN1Y2Nlc3MgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29yKGlu
dmVydCk7CisgICAgICAgICAgICBmYWlsdXJlID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9ja10tPnN1
Y2Nlc3NvcighaW52ZXJ0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzWDg2
KCkpIHsKKyAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5vcGVy
YXRpb25UeXBlKCkpLCBpbW1PclRtcChhdG9taWMtPmNoaWxkKDApKSwgbV9lYXgpOworICAgICAg
ICAgICAgaWYgKHJldHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChPUENP
REVfRk9SX1dJRFRIKEF0b21pY1N0cm9uZ0NBUywgd2lkdGgpLCBtX2VheCwgbmV3VmFsdWVUbXAs
IGFkZHJlc3MpOworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRv
bWljLT5vcGVyYXRpb25UeXBlKCkpLCBtX2VheCwgdmFsdWVSZXN1bHRUbXApOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVf
Rk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9uZ0NBUywgd2lkdGgpLCBBcmc6OnN0YXR1c0NvbmQo
TWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3MpOwor
ICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zZXRTdWNjZXNzb3JzKHN1
Y2Nlc3MsIGZhaWx1cmUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYXBw
ZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FTLCB3aWR0aCksIEFyZzo6c3RhdHVz
Q29uZChpbnZlcnQgPyBNYWNyb0Fzc2VtYmxlcjo6RmFpbHVyZSA6IE1hY3JvQXNzZW1ibGVyOjpT
dWNjZXNzKSwgbV9lYXgsIHRtcChhdG9taWMtPmNoaWxkKDEpKSwgYWRkcmVzcywgYm9vbFJlc3Vs
dFRtcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgIC8vIFdlIHdpc2ggdG8gZW1pdDoK
KyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIExv
YWRMaW5rCisgICAgICAgIC8vICAgICBCcmFuY2ggTm90RXF1YWwKKyAgICAgICAgLy8gICBTdWNj
ZXNzb3JzOiBUaGVuOiNmYWlsLCBFbHNlOiAjc3RvcmUKKyAgICAgICAgLy8gQmxvY2sgI3N0b3Jl
OgorICAgICAgICAvLyAgICAgU3RvcmVDb25kCisgICAgICAgIC8vICAgICBYb3IgJDEsICVyZXN1
bHQgICAgPC0tLSBvbmx5IGlmICFpbnZlcnQKKyAgICAgICAgLy8gICAgIEp1bXAKKyAgICAgICAg
Ly8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAgICAvLyBCbG9jayAjZmFpbDoKKyAgICAgICAg
Ly8gICAgIE1vdmUgJGludmVydCwgJXJlc3VsdAorICAgICAgICAvLyAgICAgSnVtcAorICAgICAg
ICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAg
ICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2NrKCk7Cisg
ICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3RvcmVCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAg
IEFpcjo6QmFzaWNCbG9jayogc3VjY2Vzc0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFp
c0JyYW5jaCAmJiBpc1N0cm9uZykKKyAgICAgICAgICAgIHN1Y2Nlc3NCbG9jayA9IG5ld0Jsb2Nr
KCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogZmFpbEJsb2NrID0gbnVsbHB0cjsKKyAgICAg
ICAgaWYgKCFpc0JyYW5jaCkgeworICAgICAgICAgICAgZmFpbEJsb2NrID0gbmV3QmxvY2soKTsK
KyAgICAgICAgICAgIGZhaWx1cmUgPSBmYWlsQmxvY2s7CisgICAgICAgIH0KKyAgICAgICAgQWly
OjpCYXNpY0Jsb2NrKiBzdHJvbmdGYWlsQmxvY2s7CisgICAgICAgIGlmIChpc1N0cm9uZyAmJiBo
YXNGZW5jZSkKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAg
ICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIGNvbXBhcmlzb25GYWlsOworICAgICAgICBBaXI6OkZy
ZXF1ZW50ZWRCbG9jayB3ZWFrRmFpbDsKKyAgICAgICAgaWYgKGlzU3Ryb25nKSB7CisgICAgICAg
ICAgICBpZiAoaGFzRmVuY2UpCisgICAgICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBzdHJv
bmdGYWlsQmxvY2s7CisgICAgICAgICAgICB3ZWFrRmFpbCA9IHJlbG9vcEJsb2NrOworICAgICAg
ICB9IGVsc2UgCisgICAgICAgICAgICB3ZWFrRmFpbCA9IGZhaWx1cmU7CisgICAgICAgIEFpcjo6
QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBkb25lQmxv
Y2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9uZUJsb2NrKTsKKyAgICAgICAg
CisgICAgICAgIGFwcGVuZChBaXI6Okp1bXApOworICAgICAgICBiZWdpbkJsb2NrLT5zZXRTdWNj
ZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBl
bmQobG9hZExpbmtPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIGFk
ZHJlc3MsIHZhbHVlUmVzdWx0VG1wKTsKKyAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChPUENP
REVfRk9SX0NBTk9OSUNBTF9XSURUSChCcmFuY2gsIHdpZHRoKSwgbV92YWx1ZSwgQXJnOjpyZWxD
b25kKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCksIHZhbHVlUmVzdWx0VG1wLCBleHBlY3RlZFZh
bHVlVG1wKTsKKyAgICAgICAgcmVsb29wQmxvY2stPnNldFN1Y2Nlc3NvcnMoY29tcGFyaXNvbkZh
aWwsIHN0b3JlQmxvY2spOworICAgICAgICAKKyAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKHN0
b3JlQ29uZE9wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgbmV3VmFs
dWVUbXAsIGFkZHJlc3MsIHN1Y2Nlc3NCb29sUmVzdWx0VG1wKTsKKyAgICAgICAgaWYgKGlzQnJh
bmNoKSB7CisgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3Zh
bHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVzdWx0VG1wLCBB
cmc6OmJpdEltbSgtMSkpOworICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhz
dWNjZXNzLCB3ZWFrRmFpbCk7CisgICAgICAgICAgICBkb25lQmxvY2stPnN1Y2Nlc3NvcnMoKS5j
bGVhcigpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRvbmVCbG9jay0+c2l6ZSgpKTsK
KyAgICAgICAgICAgIGRvbmVCbG9jay0+YXBwZW5kKEFpcjo6T29wcywgbV92YWx1ZSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgICAg
ICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQo
TWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCwgQXJnOjpiaXRJbW0o
LTEpKTsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3NC
bG9jaywgcmVsb29wQmxvY2spOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN1
Y2Nlc3NCbG9jay0+YXBwZW5kKE1vdmUsIG1fdmFsdWUsIEFyZzo6aW1tKCFpbnZlcnQpLCBib29s
UmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChBaXI6Okp1
bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+c2V0U3VjY2Vzc29y
cyhkb25lQmxvY2spOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAo
IWludmVydCkKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKFhvcjMyLCBt
X3ZhbHVlLCBBcmc6OmJpdEltbSgxKSwgYm9vbFJlc3VsdFRtcCwgYm9vbFJlc3VsdFRtcCk7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEFpcjo6
SnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29y
cyhkb25lQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBm
YWlsQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6OmltbShpbnZlcnQpLCBib29sUmVz
dWx0VG1wKTsKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKEFpcjo6SnVtcCwgbV92YWx1
ZSk7CisgICAgICAgICAgICBmYWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzU3Ryb25nICYmIGhhc0ZlbmNlKSB7Cisg
ICAgICAgICAgICBUbXAgdG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBzdHJv
bmdGYWlsQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVu
Y2UoKSksIG1fdmFsdWUsIHZhbHVlUmVzdWx0VG1wLCBhZGRyZXNzLCB0bXApOworICAgICAgICAg
ICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJl
c0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCB0bXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAg
ICAgICAgICBpZiAoaXNCcmFuY2gpCisgICAgICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5z
ZXRTdWNjZXNzb3JzKGZhaWx1cmUsIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZmFpbEJsb2NrLCBy
ZWxvb3BCbG9jayk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgYm9vbCBhcHBlbmRWb2lk
QXRvbWljKEFpcjo6T3Bjb2RlIGF0b21pY09wY29kZSkKKyAgICB7CisgICAgICAgIGlmIChtX3Vz
ZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKG1fdmFsdWUpOworICAgICAgICAKKyAg
ICAgICAgaWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwgQXJnOjpJbW0sIGFkZHJlc3Mua2lu
ZCgpKSAmJiBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICBhcHBlbmQoYXRv
bWljT3Bjb2RlLCBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRyZXNzKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNWYWxpZEZv
cm0oYXRvbWljT3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAgICAg
ICBhcHBlbmQoYXRvbWljT3Bjb2RlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRyZXNzKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhcHBlbmRHZW5lcmFsQXRvbWljKEFp
cjo6T3Bjb2RlIG9wY29kZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBt
X3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgCisgICAgICAgIEFyZyBhZGRyZXNz
ID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgVG1wIG9sZFZhbHVlID0gbV9jb2RlLm5ld1RtcChH
UCk7CisgICAgICAgIFRtcCBuZXdWYWx1ZSA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAK
KyAgICAgICAgLy8gV2UgbmVlZCBhIENBUyBsb29wIG9yIGEgTEwvU0MgbG9vcC4gVXNpbmcgcHJl
cGFyZS9hdHRlbXB0IGphcmdvbiwgd2Ugd2FudDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxv
Y2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIFByZXBhcmUKKyAgICAgICAgLy8gICAgIG9wY29k
ZQorICAgICAgICAvLyAgICAgQXR0ZW1wdAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRoZW46
I2RvbmUsIEVsc2U6I3JlbG9vcAorICAgICAgICAvLyBCbG9jayAjZG9uZToKKyAgICAgICAgLy8g
ICAgIE1vdmUgb2xkVmFsdWUsIHJlc3VsdAorICAgICAgICAKKyAgICAgICAgYXBwZW5kKHJlbGF4
ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG9sZFZhbHVlLCB0bXAoYXRvbWljKSk7Cisg
ICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9vcEJsb2NrID0gbmV3QmxvY2so
KTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOworICAgICAgICBBaXI6OkJh
c2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhiZWdpbkJsb2NrLCBkb25l
QmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFpcjo6SnVtcCk7CisgICAgICAgIGJl
Z2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAgICAKKyAgICAgICAg
QWlyOjpPcGNvZGUgcHJlcGFyZU9wY29kZTsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSB7CisgICAgICAgICAgICBj
YXNlIFdpZHRoODoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDhTaWduZWRF
eHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0
aDE2OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkMTZTaWduZWRFeHRlbmRU
bzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDMyOgor
ICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlMzI7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICAgICAgcHJlcGFy
ZU9wY29kZSA9IE1vdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwor
ICAgICAgICAgICAgb3Bjb2RlID0gbG9hZExpbmtPcGNvZGUoYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpLCBhdG9taWMtPmhhc0ZlbmNlKCkpOworICAgICAgICB9CisgICAgICAgIHJlbG9vcEJsb2Nr
LT5hcHBlbmQocHJlcGFyZU9wY29kZSwgbV92YWx1ZSwgYWRkcmVzcywgb2xkVmFsdWUpOworICAg
ICAgICAKKyAgICAgICAgaWYgKG9wY29kZSAhPSBBaXI6Ok5vcCkgeworICAgICAgICAgICAgaWYg
KGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6SW1tLCBB
cmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQo
b3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG9sZFZhbHVlLCBuZXdWYWx1
ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBB
cmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQo
b3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIG9sZFZhbHVlLCBuZXdWYWx1
ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBw
ZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG1fdmFsdWUsIG9sZFZhbHVl
LCBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGltbShhdG9taWMtPmNoaWxkKDApKSAm
JiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAg
ICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5j
aGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWljLT5j
aGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBjYXNPcGNvZGUgPSBPUENP
REVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9uZ0NBUywgYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBl
KGF0b21pYy0+dHlwZSgpKSwgbV92YWx1ZSwgb2xkVmFsdWUsIG1fZWF4KTsKKyAgICAgICAgICAg
IHJlbG9vcEJsb2NrLT5hcHBlbmQoY2FzT3Bjb2RlLCBtX3ZhbHVlLCBBcmc6OnN0YXR1c0NvbmQo
TWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAg
ICAgICAgICAgIFRtcCBib29sUmVzdWx0ID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29kZShhdG9taWMtPm9wZXJhdGlvbldp
ZHRoKCksIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIG5ld1ZhbHVlLCBhZGRyZXNzLCBi
b29sUmVzdWx0KTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMy
LCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVzdWx0
LCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICB9CisgICAgICAgIHJlbG9vcEJsb2NrLT5zZXRT
dWNjZXNzb3JzKGRvbmVCbG9jaywgcmVsb29wQmxvY2spOworICAgIH0KKyAgICAKICAgICB2b2lk
IGxvd2VyKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsKQEAg
LTE5NzEsMzAgKzIzNzMsNTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgTG9hZDogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3Zh
bHVlLCBtb3ZlRm9yVHlwZShtX3ZhbHVlLT50eXBlKCkpLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUp
LCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBtX3Zh
bHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9
IEFpcjo6T29wczsKKyAgICAgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKG1lbW9yeS0+dHlwZSgpKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTMyOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEludDY0OgorICAgICAg
ICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNxNjQ7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG9wY29k
ZSA9IG1vdmVGb3JUeXBlKG1lbW9yeS0+dHlwZSgpKTsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFw
cGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92
YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgTG9hZDhTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1f
dmFsdWUsIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1w
KG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5h
czxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMiA6
IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3Qo
bV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDhaOiB7
Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQ4LCBtX3ZhbHVl
LCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2Rl
IG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFj
cTggOiBMb2FkODsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bj
b2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2UzogewotICAgICAgICAg
ICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTZTaWduZWRFeHRlbmRUbzMyLCBt
X3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6
T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8g
TG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiA6IExvYWQxNlNpZ25lZEV4dGVuZFRvMzI7CisgICAg
ICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRk
cihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBjYXNlIExvYWQxNlo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGlu
Z0luc3QobV92YWx1ZSwgTG9hZDE2LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1
ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9y
eVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcTE2IDogTG9hZDE2OworICAgICAgICAgICAg
YXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1
ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KKyAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIEFkZDogewogICAgICAgICAgICAgaWYgKHRyeUFwcGVu
ZExlYSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwOTIsNyArMjUxNCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNDaGlsbCgpKQogICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CiAgICAgICAgICAgICBpZiAoaXNJbnQobV92
YWx1ZS0+dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJYODZEaXYo
RGl2KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZEaXYoRGl2KTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoIWlzWDg2KCkgfHwg
aXNGbG9hdChtX3ZhbHVlLT50eXBlKCkpKTsKQEAgLTIxMDMsNyArMjUyNSw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgY2FzZSBVRGl2OiB7CiAgICAgICAgICAgICBpZiAoaXNJbnQobV92YWx1ZS0+
dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJYODZVRGl2KFVEaXYp
OworICAgICAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVURpdik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0yMTE3LDEzICsyNTM5LDEzIEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgTW9kOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4Nigp
KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZhbHVlLT5pc0NoaWxsKCkpOwotICAg
ICAgICAgICAgbG93ZXJYODZEaXYoTW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NkRpdihNb2Qp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBVTW9kOiB7
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4NigpKTsKLSAgICAgICAgICAgIGxvd2Vy
WDg2VURpdihVTW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVU1vZCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjE2MiwxMCArMjU4NCwyOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8Tm90MzIsIE5vdDY0PihtX3ZhbHVlLT5jaGls
ZCgwKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyBUaGlzIHBhdHRlcm4gaXMgc3VwZXIgdXNlZnVsIG9uIGJvdGgg
eDg2IGFuZCBBUk02NCwgc2luY2UgdGhlIGludmVyc2lvbiBvZiB0aGUgQ0FTIHJlc3VsdAorICAg
ICAgICAgICAgLy8gY2FuIGJlIGRvbmUgd2l0aCB6ZXJvIGNvc3Qgb24geDg2IChqdXN0IGZsaXAg
dGhlIHNldCBmcm9tIEUgdG8gTkUpIGFuZCBpdCdzIGEgcHJvZ3Jlc3Npb24KKyAgICAgICAgICAg
IC8vIG9uIEFSTTY0IChzaW5jZSBTVFggcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIHNvIG9yZGluYXJp
bHkgd2UgaGF2ZSB0byBmbGlwIGl0KS4KKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgx
KS0+aXNJbnQoMSkKKyAgICAgICAgICAgICAgICAmJiBpc0F0b21pY0NBUyhtX3ZhbHVlLT5jaGls
ZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVl
LT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtX3ZhbHVlLT5j
aGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUtPmNoaWxkKDApLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPFhvcjMyLCBYb3I2NCwgWG9yRG91YmxlLCBYb3JG
bG9hdCwgQ29tbXV0YXRpdmU+KAogICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBt
X3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNBUk02NCgpKTsKKyAgICAgICAgICAgIGFwcGVuZFVuT3A8RGVwZW5kMzIsIERlcGVuZDY0
PihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIFNobDogewogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5p
c0ludDMyKDEpKSB7CkBAIC0yMjY2LDcgKzI3MDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWVUb1N0
b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIyODcs
NyArMjcyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcHBlbmRTdG9yZShBaXI6
OlN0b3JlOCwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVu
ZFN0b3JlKG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTIzMDgsNyArMjc0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBhcHBlbmRTdG9yZShBaXI6OlN0b3JlMTYsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7
CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDE2LDcgKzI4NTYsMjIgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIGNhc2UgTm90RXF1
YWw6CisgICAgICAgIGNhc2UgTm90RXF1YWw6IHsKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5j
aGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAgICAgICAgICAgICAgJiYg
bV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApID09IG1fdmFsdWUtPmNoaWxkKDEpCisgICAgICAg
ICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUtPmNoaWxkKDApLT5jaGls
ZCgxKSkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMobV92YWx1
ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjb21taXRJ
bnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1f
dmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNyZWF0ZUNvbXBhcmUobV92YWx1ZSkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBM
ZXNzVGhhbjoKICAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAgICAgY2FzZSBMZXNzRXF1
YWw6CkBAIC0yNzI3LDYgKzMxODIsNDAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAg
IGNhc2UgQnJhbmNoOiB7CisgICAgICAgICAgICBpZiAoY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5j
aGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogYnJhbmNoQ2hpbGQgPSBtX3ZhbHVl
LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyYW5jaENoaWxkLT5vcGNvZGUo
KSkgeworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgICAg
ICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAgICAgICAgICAgICAgICBh
cHBlbmRDQVMoYnJhbmNoQ2hpbGQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9u
Z0NBUzoKKyAgICAgICAgICAgICAgICAgICAgLy8gQSBicmFuY2ggaXMgYSBjb21wYXJpc29uIHRv
IHplcm8uCisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPmlz
SW50KDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFuY2hD
aGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQsIHRy
dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBjYXNlIEVxdWFsOgorICAgICAgICAgICAgICAgIGNhc2UgTm90RXF1YWw6
CisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPm9wY29kZSgp
ID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRl
cm5hbChicmFuY2hDaGlsZC0+Y2hpbGQoMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBi
cmFuY2hDaGlsZC0+Y2hpbGQoMCktPmNoaWxkKDApID09IGJyYW5jaENoaWxkLT5jaGlsZCgxKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQtPmNoaWxk
KDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZC0+Y2hp
bGQoMCksIGJyYW5jaENoaWxkLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5k
KGNyZWF0ZUJyYW5jaChtX3ZhbHVlLT5jaGlsZCgwKSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0yNzg0LDcgKzMyNzMsODEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGFw
cGVuZChBaXI6OkVudHJ5U3dpdGNoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgY2FzZSBB
dG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLCBmYWxzZSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIEF0b21pY1hjaGdBZGQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBt
X3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRv
bWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQWRkLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkp
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFy
ZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2Rl
ID0gT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnQWRkLCBhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIGFkZHJl
c3Mua2luZCgpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUo
YXRvbWljLT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9taWMpKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVzcyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogCisgICAgICAgICAgICBhcHBlbmRH
ZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEFkZCwgYXRvbWljLT5vcGVy
YXRpb25XaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBjYXNlIEF0b21pY1hjaGdTdWI6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lk
QXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3ViLCBhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoU3ViLCBhdG9t
aWMtPm9wZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDogeworICAgICAgICAgICAg
QXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAg
ICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNBbmQsIGF0
b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9O
SUNBTF9XSURUSChBbmQsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hn
T3I6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9t
aWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1Jf
V0lEVEgoQXRvbWljT3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21p
YyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChPciwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgp
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEF0b21pY1hjaGdYb3I6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lk
QXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWG9yLCBhdG9taWMtPm9wZXJhdGlvbldpZHRo
KCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoWG9yLCBhdG9t
aWMtPm9wZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAgQXRv
bWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAgICAgICAgICAg
IEFpcjo6T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZywgYXRvbWlj
LT5vcGVyYXRpb25XaWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUs
IEFyZzo6VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVs
YXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0
bXAoYXRvbWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyks
IGFkZHJlc3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9O
SUNBTF9XSURUSChYb3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNzkyLDY0ICszMzU1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgZGF0YUxvZygiRkFUQUw6IGNvdWxkIG5vdCBsb3dlciAiLCBkZWVwRHVtcChtX3By
b2NlZHVyZSwgbV92YWx1ZSksICJcbiIpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KLQotICAgIHZvaWQgbG93ZXJYODZEaXYoQjM6Ok9wY29kZSBvcCkKLSAg
ICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICAgICAgVG1wIGVheCA9IFRtcChY
ODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBlZHggPSBUbXAoWDg2UmVnaXN0ZXJzOjpl
ZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7Ci0gICAgICAg
IEFpcjo6T3Bjb2RlIGRpdjsKLSAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKLSAg
ICAgICAgY2FzZSBJbnQzMjoKLSAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZD
b252ZXJ0VG9Eb3VibGVXb3JkMzI7Ci0gICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDY0OgotICAgICAgICAgICAgY29udmVydFRv
RG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7Ci0gICAgICAgICAgICBkaXYgPSBY
ODZEaXY2NDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKLSAgICAg
ICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09IERpdiA/IFg4NlJlZ2lz
dGVyczo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUsIHRt
cChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChjb252ZXJ0VG9Eb3Vi
bGVXb3JkLCBlYXgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAobV92
YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0bXAo
bV92YWx1ZSkpOwotCi0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0ob3ApOwotICAgICAgICBV
TlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgbG93
ZXJYODZVRGl2KEIzOjpPcGNvZGUgb3ApCi0gICAgewotI2lmIENQVShYODYpIHx8IENQVShYODZf
NjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBU
bXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBk
aXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7Ci0K
LSAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7Ci0gICAgICAgIFg4NlJl
Z2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gWDg2UmVnaXN0ZXJzOjpl
YXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFs
dWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKFhvcjY0LCBlZHgsIGVkeCk7Ci0g
ICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAg
ICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOwotI2Vsc2UKLSAg
ICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7Ci0jZW5kaWYKLSAgICB9Ci0KKyAgICAKICAgICBJbmRleFNldDxWYWx1ZT4gbV9sb2NrZWQ7
IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCB3aWxsIGhhdmUgbm8gVG1wIGluIEFpci4KICAgICBJ
bmRleE1hcDxWYWx1ZSwgVG1wPiBtX3ZhbHVlVG9UbXA7IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhh
dCBtdXN0IGhhdmUgYSBUbXAgaW4gQWlyLiBXZSBzYXkgdGhhdCBhIFZhbHVlKiB3aXRoIGEgbm9u
LW51bGwgVG1wIGlzICJwaW5uZWQiLgogICAgIEluZGV4TWFwPFZhbHVlLCBUbXA+IG1fcGhpVG9U
bXA7IC8vIEVhY2ggUGhpIGdldHMgaXRzIG93biBUbXAuCkBAIC0yODY0LDcgKzMzNzAsNyBAQCBw
cml2YXRlOgogCiAgICAgVmVjdG9yPFZlY3RvcjxJbnN0LCA0Pj4gbV9pbnN0czsKICAgICBWZWN0
b3I8SW5zdD4gbV9wcm9sb2d1ZTsKLQorICAgIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBtX2Jsb2Nr
OwogICAgIGJvb2wgbV9pc1JhcmU7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKQEAgLTI4NzUsNiAr
MzM4MSwxMiBAQCBwcml2YXRlOgogCiAgICAgUHJvY2VkdXJlJiBtX3Byb2NlZHVyZTsKICAgICBD
b2RlJiBtX2NvZGU7CisKKyAgICBBaXI6OkJsb2NrSW5zZXJ0aW9uU2V0IG1fYmxvY2tJbnNlcnRp
b25TZXQ7CisKKyAgICBUbXAgbV9lYXg7CisgICAgVG1wIG1fZWN4OworICAgIFRtcCBtX2VkeDsK
IH07CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsOCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIGNsYXNzIFByb2NlZHVyZTsKIG5hbWVz
cGFjZSBBaXIgeyBjbGFzcyBDb2RlOyB9CiAKLS8vIFRoaXMgbG93ZXJzIHRoZSBjdXJyZW50IEIz
IHByb2NlZHVyZSB0byBhbiBBaXIgY29kZS4KKy8vIFRoaXMgbG93ZXJzIHRoZSBjdXJyZW50IEIz
IHByb2NlZHVyZSB0byBhbiBBaXIgY29kZS4gTm90ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGF0IHRo
ZSBwcm9jZWR1cmUgaXMgaW4KKy8vIHF1aXJrcyBtb2RlLCBidXQgaXQgZG9lcyBub3QgYXNzZXJ0
IHRoaXMsIHRvIHNpbXBsaWZ5IGhvdyB3ZSB3cml0ZSB0ZXN0cy4KIAogSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBsb3dlclRvQWlyKFByb2NlZHVyZSYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDMwICszNCw0OCBAQCBNZW1vcnlWYWx1ZTo6fk1lbW9yeVZhbHVlKCkKIHsKIH0KIAorVHlwZSBN
ZW1vcnlWYWx1ZTo6YWNjZXNzVHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzTG9hZCgpKQorICAg
ICAgICByZXR1cm4gdHlwZSgpOworICAgIC8vIFRoaXMgaGFwcGVucyB0byB3b3JrIGZvciBhdG9t
aWNzLCB0b28uIFRoYXQncyB3aHkgQXRvbWljVmFsdWUgZG9lcyBub3QgbmVlZCB0byBvdmVycmlk
ZSB0aGlzLgorICAgIHJldHVybiBjaGlsZCgwKS0+dHlwZSgpOworfQorCitCYW5rIE1lbW9yeVZh
bHVlOjphY2Nlc3NCYW5rKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYmFua0ZvclR5cGUoYWNjZXNz
VHlwZSgpKTsKK30KKwogc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0
CiB7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkpOworfQorCitXaWR0aCBNZW1vcnlW
YWx1ZTo6bG9hZFN0b3JlV2lkdGgoKSBjb25zdAorewogICAgIHN3aXRjaCAob3Bjb2RlKCkpIHsK
ICAgICBjYXNlIExvYWQ4WjoKICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIFN0b3JlODoKLSAg
ICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBXaWR0aDg7CiAgICAgY2FzZSBMb2FkMTZa
OgogICAgIGNhc2UgTG9hZDE2UzoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIHJldHVybiAy
OworICAgICAgICByZXR1cm4gV2lkdGgxNjsKICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJldHVy
biBzaXplb2ZUeXBlKHR5cGUoKSk7CisgICAgICAgIHJldHVybiB3aWR0aEZvclR5cGUodHlwZSgp
KTsKICAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZShjaGlsZCgwKS0+
dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZShjaGlsZCgwKS0+dHlwZSgpKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICB9CiB9CiAKIFdpZHRo
IE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdpZHRoRm9y
Qnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJuIGxvYWRTdG9yZVdpZHRoKCk7CiB9
CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02NSw4ICs4MywxMSBAQCB2b2lkIE1lbW9yeVZhbHVlOjpk
dW1wTWV0YShDb21tYVByaW50ZXImCiAgICAgaWYgKG1fb2Zmc2V0KQogICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJvZmZzZXQgPSAiLCBtX29mZnNldCk7CiAgICAgaWYgKChpc0xvYWQoKSAmJiBl
ZmZlY3RzKCkucmVhZHMgIT0gcmFuZ2UoKSkKLSAgICAgICAgfHwgKGlzU3RvcmUoKSAmJiBlZmZl
Y3RzKCkud3JpdGVzICE9IHJhbmdlKCkpKQorICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVmZmVj
dHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkKKyAgICAgICAgfHwgZmVuY2VSYW5nZSgpKQogICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJyYW5nZSA9ICIsIHJhbmdlKCkpOworICAgIGlmIChmZW5jZVJh
bmdlKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgImZlbmNlUmFuZ2UgPSAiLCBmZW5jZVJh
bmdlKCkpOwogfQogCiBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CkBAIC03
NCw2ICs5NSw2MiBAQCBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAgICAg
cmV0dXJuIG5ldyBNZW1vcnlWYWx1ZSgqdGhpcyk7CiB9CiAKKy8vIFVzZSB0aGlzIGZvcm0gZm9y
IExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBo
YXZlIGEgc3VmZml4IHRoYXQKKy8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCitNZW1v
cnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4s
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFu
Z2UgZmVuY2VSYW5nZSkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9y
aWdpbiwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1fcmFuZ2UocmFu
Z2UpCisgICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKK3sKKyAgICBpZiAoIUFTU0VSVF9E
SVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2Fz
ZSBMb2FkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAg
ICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExvYWQx
NlM6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3RvcmUxNjoKKyAgICAgICAg
Y2FzZSBTdG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMg
d2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFs
dWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZz
ZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1vcnlW
YWx1ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJh
bmdlKQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2lu
ZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6
CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVz
LgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFs
dWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5n
ZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5k
LCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQor
ICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQorewor
ICAgIEFTU0VSVChCMzo6aXNTdG9yZShraW5kLm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNDggKzI3LDE3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNCYW5r
LmgiCiAjaW5jbHVkZSAiQjNIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxv
dyBmZW5jZWQgbWVtb3J5IGFjY2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVt
b3J5VmFsdWUgOiBwdWJsaWMgVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2Vw
dHMoS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0g
ICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBM
b2FkMTZaOgotICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAg
ICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9y
ZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNT
dG9yZShLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsK
LSAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2Fz
ZSBTdG9yZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJv
b2wgaXNMb2FkKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQp
ICYmICFpc1N0b3JlKGtpbmQpOworICAgICAgICByZXR1cm4gaXNNZW1vcnlBY2Nlc3Moa2luZC5v
cGNvZGUoKSk7CiAgICAgfQogCiAgICAgfk1lbW9yeVZhbHVlKCk7CkBAIC03OCw3NiArNDcsNTgg
QEAgcHVibGljOgogCiAgICAgY29uc3QgSGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFuZ2U7IH0KICAgICB2b2lkIHNldFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsg
bV9yYW5nZSA9IHJhbmdlOyB9CisgICAgCisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgcmFu
Z2UuCisgICAgY29uc3QgSGVhcFJhbmdlJiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJh
bmdlKCk7IH0KKyAgICB2b2lkIHNldEFjY2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2Up
IHsgc2V0UmFuZ2UocmFuZ2UpOyB9CisgICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBmZW5jZVJh
bmdlKCkgY29uc3QgeyByZXR1cm4gbV9mZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRGZW5jZVJh
bmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0KKwor
ICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc1N0b3JlKG9wY29kZSgpKTsg
fQorICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1cm4gQjM6OmlzTG9hZChvcGNvZGUoKSk7
IH0KIAotICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBWb2lkOyB9
Ci0gICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgIT0gVm9pZDsgfQorICAg
IGJvb2wgaGFzRmVuY2UoKSBjb25zdCB7IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsgfQogCisgICAg
VHlwZSBhY2Nlc3NUeXBlKCkgY29uc3Q7CisgICAgQmFuayBhY2Nlc3NCYW5rKCkgY29uc3Q7CiAg
ICAgc2l6ZV90IGFjY2Vzc0J5dGVTaXplKCkgY29uc3Q7Ci0gICAgV2lkdGggYWNjZXNzV2lkdGgo
KSBjb25zdDsKKyAgICAKKyAgICAvLyBTbGlnaHRseSBmYXN0ZXIgdmVyc2lvbiBvZiBhY2Nlc3NX
aWR0aCwgaWYgeW91IGtub3cgdGhhdCB5b3UncmUgd29ya2luZyB3aXRoIGEgbG9hZCBvciBzdG9y
ZS4KKyAgICBXaWR0aCBsb2FkU3RvcmVXaWR0aCgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwg
V2lkdGggYWNjZXNzV2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1l
dGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29k
ZVRhZywgS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zmc2V0
LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlLCBBcmd1bWVudHMuLi4gYXJn
dW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdp
biwgYXJndW1lbnRzLi4uKQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBt
X3JhbmdlKHJhbmdlKQorICAgICAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQorICAgIHsK
KyAgICB9CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0KKyAg
ICAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhT
LCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CiAgICAgLy8gZGVz
Y3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5
cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0g
MCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBv
aW50ZXIpCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVh
cFJhbmdlOjp0b3AoKSkKLSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTG9h
ZDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZDhaOgotICAg
ICAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAg
ICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAg
ICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAg
ICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBU
eXBlLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5n
ZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJh
bmdlKCkpOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVy
biB0eXBlIGlzIGltcGxpZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3Jp
Z2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IE1lbW9y
eVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKLSAgICB7Ci0gICAg
fQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qg
b2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdl
IGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBz
dG9yZXMuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSog
dmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFs
dWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKLSAg
ICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRv
cCgpKQotICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAg
IHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAg
ICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUq
IHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFu
Z2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgp
KTsKKyAgICAKICAgICBpbnQzMl90IG1fb2Zmc2V0IHsgMCB9OwotICAgIEhlYXBSYW5nZSBtX3Jh
bmdlOworICAgIEhlYXBSYW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhl
YXBSYW5nZSBtX2ZlbmNlUmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFp
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFp
dHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVU
cmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShCM19KSVQpCisKKyNpbmNsdWRlICJCM0JhbmsuaCIKKyNpbmNsdWRlICJCM1R5cGUuaCIKKyNp
bmNsdWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IE5hdGl2ZVRyYWl0czsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgTmF0aXZlVHJhaXRzPGludDhfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBH
UDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDg7CisgICAgc3RhdGljIGNv
bnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJh
aXRzPHVpbnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3Rh
dGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg4OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5
cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxpbnQxNl90
PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBX
aWR0aCB3aWR0aCA9IFdpZHRoMTY7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMy
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQxNl90PiB7CisgICAg
c3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0
aCA9IFdpZHRoMTY7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGludDMyX3Q+IHsKKyAgICBzdGF0aWMgY29u
c3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgz
MjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDMyX3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBi
YW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAgICBz
dGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBO
YXRpdmVUcmFpdHM8aW50NjRfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsK
KyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25z
dCBUeXBlIHR5cGUgPSBJbnQ2NDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0
czx1aW50NjRfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0
aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5
cGUgPSBJbnQ2NDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxmbG9hdD4g
eworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBGUDsKKyAgICBzdGF0aWMgY29uc3QgV2lk
dGggd2lkdGggPSBXaWR0aDMyOworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBGbG9hdDsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxkb3VibGU+IHsKKyAgICBzdGF0
aWMgY29uc3QgQmFuayBiYW5rID0gRlA7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0g
V2lkdGg2NDsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gRG91YmxlOworfTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02OCw2ICs2OCwyMyBAQCBzdGQ6Om9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJlKE9w
CiAgICAgfQogfQogCitPcGNvZGUgc3RvcmVPcGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkK
K3sKKyAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICBjYXNlIEdQOgorICAgICAgICBzd2l0Y2ggKHdp
ZHRoKSB7CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlODsK
KyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlMTY7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgICAgIH0KKyAgICBj
YXNlIEZQOgorICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0yNjMsNiArMjgwLDMzIEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGMKICAgICBjYXNlIFN0b3JlOgogICAg
ICAgICBvdXQucHJpbnQoIlN0b3JlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21p
Y1dlYWtDQVM6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljV2Vha0NBUyIpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIG91dC5wcmludCgiQXRv
bWljU3Ryb25nQ0FTIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6
CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ0FkZCIpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdBbmQi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICBvdXQu
cHJpbnQoIkF0b21pY1hjaGdPciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNY
Y2hnU3ViOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdTdWIiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNY
Y2hnWG9yIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAg
IG91dC5wcmludCgiQXRvbWljWGNoZyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEZXBl
bmQ6CisgICAgICAgIG91dC5wcmludCgiRGVwZW5kIik7CisgICAgICAgIHJldHVybjsKICAgICBj
YXNlIFdhc21BZGRyZXNzOgogICAgICAgICBvdXQucHJpbnQoIldhc21BZGRyZXNzIik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lv
biAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVk
ZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtODIsNyArODMsNiBAQCBl
bnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIE1vZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBhcyB0
byB3aGF0IHdpbGwgaGFwcGVuIHdoZW4geW91IGV4ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEgYW5k
IHglMC4KICAgICBVTW9kLAogCi0KICAgICAvLyBQb2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90ZSB0
aGF0IHdlIG9ubHkgbmVlZCB0aGlzIGZvciBmbG9hdGluZyBwb2ludCwgc2luY2UgaW50ZWdlciBu
ZWdhdGlvbgogICAgIC8vIGlzIGV4YWN0bHkgbGlrZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mgbm90
IHRydWUgZm9yIGZsb2F0aW5nIHBvaW50LiBTdWIoMCwgMCkgaXMgMCwgd2hpbGUKICAgICAvLyBO
ZWcoMCkgaXMgLTAuIEFsc28sIHdlIGNhbm9uaWNhbGl6ZSBTdWIoMCwgeCkgaW50byBOZWcoeCkg
aW4gY2FzZSBvZiBpbnRlZ2Vycy4KQEAgLTE2Miw2ICsxNjIsMTA3IEBAIGVudW0gT3Bjb2RlIDog
aW50MTZfdCB7CiAgICAgU3RvcmUxNiwKICAgICAvLyBUaGlzIGlzIGEgcG9seW1vcnBoaWMgc3Rv
cmUgZm9yIEludDMyLCBJbnQ2NCwgRmxvYXQsIGFuZCBEb3VibGUuCiAgICAgU3RvcmUsCisgICAg
CisgICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIGEgYm9vbGVhbi4g
TWF5IGNob29zZSB0byBkbyBub3RoaW5nIGFuZCByZXR1cm4gZmFsc2UuIFlvdSBjYW4KKyAgICAv
LyB1c3VhbGx5IGFzc3VtZSB0aGF0IHRoaXMgaXMgZmFzdGVyIGFuZCByZXN1bHRzIGluIGxlc3Mg
Y29kZSB0aGFuIEF0b21pY1N0cm9uZ0NBUywgdGhvdWdoIHRoYXQncworICAgIC8vIG5vdCBuZWNl
c3NhcmlseSB0cnVlIG9uIEludGVsLCBpZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gZG9lcyBpdHMg
am9iLiBJbWFnaW5lIHRoYXQgdGhpcyBvcGNvZGUgaXMKKyAgICAvLyBhcyBpZiB5b3UgZGlkIHRo
aXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
Ly8gYm9vbCBBdG9taWNXZWFrQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRy
KQorICAgIC8vIHsKKyAgICAvLyAgICAgaWYgKCFyYW5kKCkpCisgICAgLy8gICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIFJlYWwgd29ybGQgZXhhbXBsZSBvZiB0aGlzOiBjb250ZXh0IHN3aXRjaCBv
biBBUk0gd2hpbGUgZG9pbmcgQ0FTLgorICAgIC8vICAgICBpZiAoKnB0ciAhPSBleHBlY3RlZFZh
bHVlKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vICAgICAqcHRyID0gbmV3
VmFsdWU7CisgICAgLy8gICAgIHJldHVybiB0cnVlOworICAgIC8vIH0KKyAgICAvLworICAgIC8v
IE5vdGUgdGhhdCBhbGwgYXRvbWljcyBwdXQgdGhlIHBvaW50ZXIgbGFzdCB0byBiZSBjb25zaXN0
ZW50IHdpdGggaG93IGxvYWRzIGFuZCBzdG9yZXMgd29yay4gVGhpcworICAgIC8vIGlzIGEgZ29v
ZnkgdHJhZGl0aW9uLCBidXQgaXQncyBoYXJtbGVzcywgYW5kIGJldHRlciB0aGFuIGJlaW5nIGlu
Y29uc2lzdGVudC4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCB3ZWFrIENBUyBoYXMgbm8gZmVu
Y2luZyBndWFyYW50ZWVzIHdoZW4gaXQgZmFpbHMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93
aW5nCisgICAgLy8gdHJhbnNmb3JtYXRpb24gaXMgYWx3YXlzIHZhbGlkOgorICAgIC8vCisgICAg
Ly8gQmVmb3JlOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhl
eHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nl
c3MsIEVsc2U6I2ZhaWwKKyAgICAvLworICAgIC8vIEFmdGVyOgorICAgIC8vCisgICAgLy8gICAg
ICAgICBCcmFuY2goRXF1YWwoTG9hZChwdHIpLCBleHBlY3RlZCkpCisgICAgLy8gICAgICAgU3Vj
Y2Vzc29yczogVGhlbjojYXR0ZW1wdCwgRWxzZTojZmFpbAorICAgIC8vICAgICBCQiNhdHRlbXB0
OgorICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRy
KSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisg
ICAgLy8KKyAgICAvLyBCb3RoIGtpbmRzIG9mIENBUyBmb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMg
KFdpZHRoOCBhbmQgV2lkdGgxNikgaWdub3JlIHRoZSBpcnJlbGV2YW50IGJpdHMgb2YgdGhlCisg
ICAgLy8gaW5wdXQuCisgICAgQXRvbWljV2Vha0NBUywKKyAgICAKKyAgICAvLyBBdG9taWMgY29t
cGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2ZSB0
aGUgbm9uZGV0ZXJtaW5pc20gb2YgV2Vha0NBUy4KKyAgICAvLyBUaGlzIGlzIGEgYml0IG1vcmUg
Y29kZSBhbmQgYSBiaXQgc2xvd2VyIGluIHNvbWUgY2FzZXMsIHRob3VnaCBub3QgYnkgYSBsb3Qu
IEltYWdpbmUgdGhhdCB0aGlzCisgICAgLy8gb3Bjb2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhpcyBh
dG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBU
IEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAg
ICAvLyB7CisgICAgLy8gICAgIFQgb2xkVmFsdWUgPSAqcHRyOworICAgIC8vICAgICBpZiAob2xk
VmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgICpwdHIgPSBuZXdWYWx1ZTsK
KyAgICAvLyAgICAgcmV0dXJuIG9sZFZhbHVlCisgICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90
ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5kIEF0b21pY1N0cm9uZ0NBUyBzb3J0IG9mIGhhdmUgdGhp
cyBraW5kIG9mIGVxdWl2YWxlbmNlOgorICAgIC8vCisgICAgLy8gQXRvbWljV2Vha0NBUyhAZXhw
LCBAbmV3LCBAcHRyKSA9PSBFcXVhbChBdG9taWNTdHJvbmdDQVMoQGV4cCwgQG5ldywgQHB0ciks
IEBleHApCisgICAgLy8KKyAgICAvLyBBc3N1bWluZyB0aGF0IHRoZSBXZWFrQ0FTIGRvZXMgbm90
IHNwdXJpb3VzbHkgZmFpbCwgb2YgY291cnNlLgorICAgIEF0b21pY1N0cm9uZ0NBUywKKyAgICAK
KyAgICAvLyBBdG9taWNhbGx5IF9fXyBhIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRoZSBv
bGQgdmFsdWUuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGdf
X18oQG9wZXJhbmQsIEBwdHIpCisgICAgLy8KKyAgICAvLyBGb3Igbm9uLWNhbm9uaWNhbCB3aWR0
aHMgKFdpZHRoOCBhbmQgV2lkdGgxNiksIHRoZXNlIHJldHVybiBzaWduLWV4dGVuZGVkIHJlc3Vs
dHMgYW5kIGlnbm9yZSB0aGUKKyAgICAvLyBpcnJlbGV2YW50IGJpdHMgb2YgdGhlaXIgaW5wdXRz
LgorICAgIEF0b21pY1hjaGdBZGQsCisgICAgQXRvbWljWGNoZ0FuZCwKKyAgICBBdG9taWNYY2hn
T3IsCisgICAgQXRvbWljWGNoZ1N1YiwKKyAgICBBdG9taWNYY2hnWG9yLAorICAgIAorICAgIC8v
IEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBBdG9taWNYY2hnTmVnIGFuZCBBdG9taWNYY2hn
Tm90LgorICAgIAorICAgIC8vIEF0b21pY2FsbHkgZXhjaGFuZ2UgYSB2YWx1ZSB3aXRoIGEgbWVt
b3J5IGxvY2F0aW9uLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNY
Y2hnKEBuZXdWYWx1ZSwgQHB0cikKKyAgICBBdG9taWNYY2hnLAorICAgIAorICAgIC8vIEludHJv
ZHVjZSBhbiBpbnZpc2libGUgZGVwZW5kZW5jeSBmb3IgYmxvY2tpbmcgbW90aW9uIG9mIGxvYWRz
IHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAcmVz
dWx0ID0gRGVwZW5kKEBwaGFudG9tKQorICAgIC8vCisgICAgLy8gVGhpcyBpcyBldmVudHVhbGx5
IGNvZGVnZW5lcmF0ZWQgdG8gaGF2ZSBsb2NhbCBzZW1hbnRpY3MgYXMgaWYgd2UgZGlkOgorICAg
IC8vCisgICAgLy8gQHJlc3VsdCA9ICQwCisgICAgLy8KKyAgICAvLyBCdXQgaXQgZW5zdXJlcyB0
aGF0IHRoZSB1c2VycyBvZiBAcmVzdWx0IGNhbm5vdCBleGVjdXRlIHVudGlsIEBwaGFudG9tIGlz
IGNvbXB1dGVkLgorICAgIC8vCisgICAgLy8gVGhlIGNvbXBpbGVyIGlzIG5vdCBhbGxvd2VkIHRv
IHJlYXNvbiBhYm91dCB0aGUgZmFjdCB0aGF0IERlcGVuZCBjb2RlZ2VuZXJhdGVzIHRoaXMgd2F5
LiBBbnkga2luZAorICAgIC8vIG9mIHRyYW5zZm9ybWF0aW9uIG9yIGFuYWx5c2lzIHRoYXQgcmVs
aWVzIG9uIHRoZSBpbnNpZ2h0IHRoYXQgRGVwZW5kIGlzIHJlYWxseSB6ZXJvIGlzIHVuc291bmQs
CisgICAgLy8gYmVjYXVzZSBpdCB1bmxvY2tzIHJlb3JkZXJpbmcgb2YgdXNlcnMgb2YgQHJlc3Vs
dCBhbmQgQHBoYW50b20uCisgICAgLy8KKyAgICAvLyBPbiBYODYsIHRoaXMgaXMgbG93ZXJlZCB0
byBhIGxvYWQtbG9hZCBmZW5jZSBhbmQgQHJlc3VsdCB1c2VzIEBwaGFudG9tIGRpcmVjdGx5Lgor
ICAgIC8vCisgICAgLy8gT24gQVJNLCB0aGlzIGlzIGxvd2VyZWQgYXMgaWYgbGlrZToKKyAgICAv
LworICAgIC8vIEByZXN1bHQgPSBCaXRYb3IoQHBoYW50b20sIEBwaGFudG9tKQorICAgIC8vCisg
ICAgLy8gRXhjZXB0IHRoYXQgdGhlIGNvbXBpbGVyIG5ldmVyIGdldHMgYW4gb3Bwb3J0dW5pdHkg
dG8gc2ltcGxpZnkgb3V0IHRoZSBCaXRYb3IuCisgICAgRGVwZW5kLAogCiAgICAgLy8gVGhpcyBp
cyB1c2VkIHRvIGNvbXB1dGUgdGhlIGFjdHVhbCBhZGRyZXNzIG9mIGEgV2FzbSBtZW1vcnkgb3Bl
cmF0aW9uLiBJdCB0YWtlcyBhbiBJbnRQdHIKICAgICAvLyBhbmQgYSBwaW5uZWQgcmVnaXN0ZXIg
dGhlbiBjb21wdXRlcyB0aGUgYXBwcm9wcmlhdGUgSW50UHRyIGFkZHJlc3MuIEZvciB0aGUgdXNl
LWNhc2Ugb2YKQEAgLTMwMSw2ICs0MDIsMTEyIEBAIGlubGluZSBib29sIGlzRGVmaW5pdGVseVRl
cm1pbmFsKE9wY29kZSAKICAgICB9CiB9CiAKK2lubGluZSBib29sIGlzTG9hZChPcGNvZGUgb3Bj
b2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2Fz
ZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNl
IExvYWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzU3RvcmUoT3Bjb2RlIG9wY29kZSkK
K3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3Rv
cmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0xvYWRT
dG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBM
b2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9h
ZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9yZTE2
OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljKE9w
Y29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dl
YWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2FzZSBBdG9taWNYY2hnQWRk
OgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBj
YXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRv
bWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNDQVMoT3Bjb2RlIG9w
Y29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoK
KyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNB
dG9taWNYY2hnKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBj
YXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRv
bWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdY
b3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc01l
bW9yeUFjY2VzcyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHJldHVybiBpc0F0b21pYyhvcGNvZGUp
IHx8IGlzTG9hZFN0b3JlKG9wY29kZSk7Cit9CisKK2lubGluZSBPcGNvZGUgc2lnbkV4dGVuZE9w
Y29kZShXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0
aDg6CisgICAgICAgIHJldHVybiBTRXh0ODsKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgIHJl
dHVybiBTRXh0MTY7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIE9vcHM7CisgICAgfQorfQorCitKU19FWFBPUlRfUFJJ
VkFURSBPcGNvZGUgc3RvcmVPcGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAy
LDYgKzIwMiw4IEBAIHZvaWQgUHJvY2VkdXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGMKICAg
ICAgICAgfQogICAgICAgICBkYXRhTG9nKCIgICAgIiwgZGVlcER1bXAoKnRoaXMsIHZhbHVlKSwg
IlxuIik7CiAgICAgfQorICAgIGlmIChoYXNRdWlya3MoKSkKKyAgICAgICAgb3V0LnByaW50KCJI
YXMgUXVpcmtzOiBUcnVlXG4iKTsKICAgICBpZiAodmFyaWFibGVzKCkuc2l6ZSgpKSB7CiAgICAg
ICAgIG91dC5wcmludCgiVmFyaWFibGVzOlxuIik7CiAgICAgICAgIGZvciAoVmFyaWFibGUqIHZh
cmlhYmxlIDogdmFyaWFibGVzKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9j
ZWR1cmUuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGljOgog
ICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChPcmlnaW4sIFR5cGUsIGludDY0X3QgdmFsdWUpOwog
ICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChWYWx1ZSosIGludDY0X3QgdmFsdWUpOwogCisgICAg
Ly8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAgICBWYWx1ZSogYWRk
Qm90dG9tKE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGFkZEJvdHRvbShWYWx1ZSopOwogCkBA
IC0xOTUsNiArMTk2LDE3IEBAIHB1YmxpYzoKICAgICAvLyBhbGl2ZS4gR3JlYXQgZm9yIGNvbXBp
bGVyLWdlbmVyYXRlZCBkYXRhIHNlY3Rpb25zLCBsaWtlIHN3aXRjaCBqdW1wIHRhYmxlcyBhbmQg
Y29uc3RhbnQgcG9vbHMuCiAgICAgLy8gVGhpcyByZXR1cm5zIG1lbW9yeSB0aGF0IGhhcyBiZWVu
IHplcm8taW5pdGlhbGl6ZWQuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWRkRGF0YVNl
Y3Rpb24oc2l6ZV90KTsKKyAgICAKKyAgICAvLyBTb21lIG9wZXJhdGlvbnMgYXJlIHNwZWNpZmll
ZCBpbiBCMyBJUiB0byBiZWhhdmUgb25lIHdheSBidXQgb24gdGhpcyBnaXZlbiBDUFUgdGhleSBi
ZWhhdmUgYQorICAgIC8vIGRpZmZlcmVudCB3YXkuIFdoZW4gdHJ1ZSwgdGhvc2UgQjMgSVIgb3Bz
IHN3aXRjaCB0byBiZWhhdmluZyB0aGUgQ1BVIHdheSwgYW5kIHRoZSBvcHRpbWl6ZXIgbWF5Cisg
ICAgLy8gc3RhcnQgdGFraW5nIGFkdmFudGFnZSBvZiBpdC4KKyAgICAvLworICAgIC8vIE9uZSB3
YXkgdG8gdGhpbmsgb2YgaXQgaXMgbGlrZSB0aGlzLiBJbWFnaW5lIHRoYXQgeW91IGZpbmQgdGhh
dCB0aGUgY2xlYW5lc3Qgd2F5IG9mIGxvd2VyaW5nCisgICAgLy8gc29tZXRoaW5nIGluIGxvd2Vy
TWFjcm9zIGlzIHRvIHVuY29uZGl0aW9uYWxseSByZXBsYWNlIG9uZSBvcGNvZGUgd2l0aCBhbm90
aGVyLiBUaGlzIGlzIGEgc2hvcnRjdXQKKyAgICAvLyB3aGVyZSB5b3UgaW5zdGVhZCBrZWVwIHRo
ZSBzYW1lIG9wY29kZSwgYnV0IHJlbHkgb24gdGhlIG9wY29kZSdzIG1lYW5pbmcgY2hhbmdlcyBv
bmNlIGxvd2VyTWFjcm9zCisgICAgLy8gc2V0cyBoYXNRdWlya3MuCisgICAgYm9vbCBoYXNRdWly
a3MoKSBjb25zdCB7IHJldHVybiBtX2hhc1F1aXJrczsgfQorICAgIHZvaWQgc2V0SGFzUXVpcmtz
KGJvb2wgdmFsdWUpIHsgbV9oYXNRdWlya3MgPSB2YWx1ZTsgfQogCiAgICAgT3BhcXVlQnlwcm9k
dWN0cyYgYnlwcm9kdWN0cygpIHsgcmV0dXJuICptX2J5cHJvZHVjdHM7IH0KIApAQCAtMjUyLDYg
KzI2NCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChQcmludFN0cmVh
bSYsIE9yaWdpbik+PiBtX29yaWdpblByaW50ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9mcm9udGVu
ZERhdGE7CiAgICAgUENUb09yaWdpbk1hcCBtX3BjVG9PcmlnaW5NYXA7CisgICAgYm9vbCBtX2hh
c1F1aXJrcyB7IGZhbHNlIH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJldmlz
aW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3Ro
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShCM19K
SVQpCiAKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2Nr
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJC
M0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgiCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnJlYWs7Ci0KKyAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIE5lZzoKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogTmVnKGNvbnN0YW50KQogICAg
ICAgICAgICAgLy8gSW50byB0aGlzOiAtY29uc3RhbnQKQEAgLTEyOTUsNiArMTI5NiwxNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhhc1F1
aXJrcygpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0OChBdG9taWNYY2hn
X19fKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXworICAgICAg
ICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQor
ICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFsdWU+
KCktPm9wZXJhdGlvbldpZHRoKCkgPT0gV2lkdGg4KSB7CisgICAgICAgICAgICAgICAgICAgIHJl
cGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIFNFeHQxNjoKQEAgLTEzNDMsNiArMTM1NCwxNiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhhc1F1aXJrcygpKSB7CisgICAg
ICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0MTYoQXRvbWljWGNoZ19fXykKKyAgICAgICAg
ICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBpZiAo
aXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAg
ICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5vcGVyYXRpb25X
aWR0aCgpID09IFdpZHRoMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJZGVu
dGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgU0V4dDMyOgpAQCAtMjEwMSwyMiArMjEyMiwyNSBAQCBwcml2YXRlOgogICAgICAg
ICBBU1NFUlQobV92YWx1ZS0+bnVtQ2hpbGRyZW4oKSA+PSAyKTsKICAgICAgICAgCiAgICAgICAg
IC8vIExlYXZlIGl0IGFsb25lIGlmIHRoZSByaWdodCBjaGlsZCBpcyBhIGNvbnN0YW50LgotICAg
ICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKSkKKyAgICAgICAgaWYgKG1f
dmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkKKyAgICAgICAgICAgIHx8IG1fdmFsdWUtPmNo
aWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIAotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQoKSkg
eworICAgICAgICBhdXRvIHN3YXAgPSBbJl0gKCkgewogICAgICAgICAgICAgc3RkOjpzd2FwKG1f
dmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICBtX2NoYW5n
ZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICAgICAgfTsK
KyAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNDb25zdGFudCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVl
LT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQorICAgICAgICAgICAgcmV0
dXJuIHN3YXAoKTsKKyAgICAgICAgCiAgICAgICAgIC8vIFNvcnQgdGhlIG9wZXJhbmRzLiBUaGlz
IGlzIGFuIGltcG9ydGFudCBjYW5vbmljYWxpemF0aW9uLiBXZSB1c2UgdGhlIGluZGV4IGluc3Rl
YWQgb2YKICAgICAgICAgLy8gdGhlIGFkZHJlc3MgdG8gbWFrZSB0aGlzIGF0IGxlYXN0IHNsaWdo
dGx5IGRldGVybWluaXN0aWMuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5kZXgo
KSA+IG1fdmFsdWUtPmNoaWxkKDEpLT5pbmRleCgpKSB7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAo
bV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgIG1fY2hh
bmdlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KG1fdmFsdWUtPmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4KCkp
CisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCByZWFsbHkgYmUgYSBmb3J3YXJkIGFuYWx5c2lzLiBJbnN0ZWFkLCB3ZSB1c2VzIGEg
Ym91bmRlZC1zZWFyY2ggYmFja3dhcmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5j
bHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIK
ICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCkBA
IC0zNDYsNiArMzQ3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IElu
dDMyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFs
dWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBMb2FkOgpAQCAtMzUzLDYgKzM1NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4o
KSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAg
ICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBTdG9yZTg6CkBAIC0zNjIsNiArMzY1LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMy
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGls
ZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAg
IHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBTdG9yZToKQEAgLTM2OSw4ICszNzMsNDkgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZh
bHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkg
PT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFj
a0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCku
aXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSB2YWx1ZS0+
Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURShpc0ludCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRl
clR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21p
Yyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoK
KyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVu
KCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEp
LT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJ
bnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0
b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAg
IGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAg
ICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFs
dWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+
dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50
KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAg
ICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZh
bHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGls
ZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgICAgICAgICBW
QUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0
ICIsICp2YWx1ZSkpOwpAQCAtNTM3LDYgKzU4MiwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUZlbmNlKFZh
bHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAg
ICAgICAgICBWQUxJREFURShtZW1vcnktPmFjY2Vzc0JhbmsoKSA9PSBHUCwgKCJGZW5jZSBhdCAi
LCAqbWVtb3J5KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVBdG9taWMoVmFsdWUq
IHZhbHVlKQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IHZhbHVlLT5hczxB
dG9taWNWYWx1ZT4oKTsKKyAgICAgICAgCisgICAgICAgIFZBTElEQVRFKGJlc3RUeXBlKEdQLCBh
dG9taWMtPm9wZXJhdGlvbldpZHRoKCkpID09IGF0b21pYy0+b3BlcmF0aW9uVHlwZSgpLCAoIkF0
ICIsICp2YWx1ZSkpOworICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVTdGFja0FjY2VzcyhWYWx1
ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAko
cmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAK
ICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVl
LmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQm90dG9t
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTUxMCw2ICs1MTEsNyBA
QCBib29sIFZhbHVlOjpyZXR1cm5zQm9vbCgpIGNvbnN0CiAgICAgY2FzZSBBYm92ZUVxdWFsOgog
ICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CisgICAgY2Fz
ZSBBdG9taWNXZWFrQ0FTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFBoaToKICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGEgc3RvcnkgaGVyZS4KQEAgLTU4OSw2ICs1
OTEsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIEJlbG93RXF1
YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgogICAgIGNhc2UgU2VsZWN0OgorICAgIGNh
c2UgRGVwZW5kOgogICAgICAgICBicmVhazsKICAgICBjYXNlIERpdjoKICAgICBjYXNlIFVEaXY6
CkBAIC02MDAsMTYgKzYwMyw0NCBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAg
ICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIExvYWQxNlo6CiAgICAgY2FzZSBMb2FkMTZTOgotICAg
IGNhc2UgTG9hZDoKLSAgICAgICAgcmVzdWx0LnJlYWRzID0gYXM8TWVtb3J5VmFsdWU+KCktPnJh
bmdlKCk7CisgICAgY2FzZSBMb2FkOiB7CisgICAgICAgIGNvbnN0IE1lbW9yeVZhbHVlKiBtZW1v
cnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5y
YW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBy
ZXN1bHQud3JpdGVzID0gbWVtb3J5LT5mZW5jZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQu
ZmVuY2UgPSB0cnVlOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgU3RvcmU4OgogICAgIGNh
c2UgU3RvcmUxNjoKLSAgICBjYXNlIFN0b3JlOgotICAgICAgICByZXN1bHQud3JpdGVzID0gYXM8
TWVtb3J5VmFsdWU+KCktPnJhbmdlKCk7CisgICAgY2FzZSBTdG9yZTogeworICAgICAgICBjb25z
dCBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJlc3Vs
dC53cml0ZXMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNl
KCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgpOwor
ICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXN1
bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2FzZSBB
dG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hj
aGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgor
ICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICBjb25zdCBBdG9taWNWYWx1ZSogYXRvbWlj
ID0gYXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IGF0b21pYy0+cmFu
Z2UoKSB8IGF0b21pYy0+ZmVuY2VSYW5nZSgpOworICAgICAgICByZXN1bHQud3JpdGVzID0gYXRv
bWljLT5yYW5nZSgpIHwgYXRvbWljLT5mZW5jZVJhbmdlKCk7CisgICAgICAgIGlmIChhdG9taWMt
Pmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICBy
ZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVlOwog
ICAgICAgICBicmVhazsKQEAgLTYxNywxOCArNjQ4LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0
cygpIGNvbnN0CiAgICAgICAgIGNvbnN0IEZlbmNlVmFsdWUqIGZlbmNlID0gYXM8RmVuY2VWYWx1
ZT4oKTsKICAgICAgICAgcmVzdWx0LnJlYWRzID0gZmVuY2UtPnJlYWQ7CiAgICAgICAgIHJlc3Vs
dC53cml0ZXMgPSBmZW5jZS0+d3JpdGU7Ci0gICAgICAgIAotICAgICAgICAvLyBQcmV2ZW50IGtp
bGxpbmcgb2YgZmVuY2VzIHRoYXQgY2xhaW0gbm90IHRvIHdyaXRlIGFueXRoaW5nLiBJdCdzIGEg
Yml0IHdlaXJkIHRoYXQgd2UgdXNlCi0gICAgICAgIC8vIGxvY2FsIHN0YXRlIGFzIHRoZSB3YXkg
dG8gZG8gdGhpcywgYnV0IGl0IGhhcHBlbnMgdG8gd29yazogd2UgbXVzdCBhc3N1bWUgdGhhdCB3
ZSBjYW5ub3QKLSAgICAgICAgLy8ga2lsbCB3cml0ZXNMb2NhbFN0YXRlIHVubGVzcyB3ZSB1bmRl
cnN0YW5kcyBleGFjdGx5IHdoYXQgdGhlIGluc3RydWN0aW9uIGlzIGRvaW5nIChsaWtlCi0gICAg
ICAgIC8vIHRoZSB3YXkgdGhhdCBmaXhTU0EgdW5kZXJzdGFuZHMgU2V0L0dldCBhbmQgdGhlIHdh
eSB0aGF0IHJlZHVjZVN0cmVuZ3RoIGFuZCBvdGhlcnMKLSAgICAgICAgLy8gdW5kZXJzdGFuZCBV
cHNpbG9uKS4gVGhpcyB3b3VsZCBvbmx5IGJlY29tZSBhIHByb2JsZW0gaWYgd2UgaGFkIHNvbWUg
YW5hbHlzaXMgdGhhdCB3YXMKLSAgICAgICAgLy8gbG9va2luZyB0byB1c2UgdGhlIHdyaXRlc0xv
Y2FsU3RhdGUgYml0IHRvIGludmFsaWRhdGUgYSBDU0Ugb3ZlciBsb2NhbCBzdGF0ZSBvcGVyYXRp
b25zLgotICAgICAgICAvLyBUaGVuIGEgRmVuY2Ugd291bGQgbG9vayBibG9jaywgc2F5LCB0aGUg
ZWxpbWluYXRpb24gb2YgYSByZWR1bmRhbnQgR2V0LiBCdXQgaXQgbGlrZQotICAgICAgICAvLyB0
aGF0J3Mgbm90IGF0IGFsbCBob3cgb3VyIG9wdGltaXphdGlvbnMgZm9yIFNldC9HZXQvVXBzaWxv
bi9QaGkgd29yayAtIHRoZXkgZ3JvayB0aGVpcgotICAgICAgICAvLyBvcGVyYXRpb25zIGRlZXBs
eSBlbm91Z2ggdGhhdCB0aGV5IGhhdmUgbm8gbmVlZCB0byBjaGVjayB0aGlzIGJpdCAtIHNvIHRo
aXMgY2hlYXQgaXMKLSAgICAgICAgLy8gZmluZS4KLSAgICAgICAgcmVzdWx0LndyaXRlc0xvY2Fs
U3RhdGUgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBDQ2FsbDoKQEAgLTY5NCw2ICs3MTQsNyBAQCBWYWx1ZUtleSBW
YWx1ZTo6a2V5KCkgY29uc3QKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQml0d2lzZUNhc3Q6
CiAgICAgY2FzZSBOZWc6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIHJldHVybiBWYWx1ZUtl
eShraW5kKCksIHR5cGUoKSwgY2hpbGQoMCkpOwogICAgIGNhc2UgQWRkOgogICAgIGNhc2UgU3Vi
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAyMTMyNjEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw2ICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKS5vcGNvZGUoKTsgfQogICAgIAorICAgIC8vIE5vdGUgdGhhdCB0aGUga2lu
ZCBpcyBtZWFudCB0byBiZSBpbW11dGFibGUuIERvIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHRo
aXMgaXMgc2FmZS4gSXQncyBub3QKKyAgICAvLyB1c3VhbGx5IHNhZmUuCisgICAgdm9pZCBzZXRL
aW5kVW5zYWZlbHkoS2luZCBraW5kKSB7IG1fa2luZCA9IGtpbmQ7IH0KKyAgICB2b2lkIHNldE9w
Y29kZVVuc2FmZWx5KE9wY29kZSBvcGNvZGUpIHsgbV9raW5kLnNldE9wY29kZShvcGNvZGUpOyB9
CisgICAgCiAgICAgLy8gSXQncyBnb29kIHByYWN0aWNlIHRvIG1pcnJvciBLaW5kIG1ldGhvZHMg
aGVyZSwgc28geW91IGNhbiBzYXkgdmFsdWUtPmlzQmxhaCgpCiAgICAgLy8gaW5zdGVhZCBvZiB2
YWx1ZS0+a2luZCgpLmlzQmxhaCgpLgogICAgIGJvb2wgaXNDaGlsbCgpIGNvbnN0IHsgcmV0dXJu
IGtpbmQoKS5pc0NoaWxsKCk7IH0KQEAgLTEwNyw2ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAgLy8g
dmFsdWVzIHdpdGggSWRlbnRpdGllcyBvbiBib3R0b20gY29uc3RhbnRzLiBGb3IgdGhpcyByZWFz
b24sIHRoaXMgdGFrZXMgYSBjYWxsYmFjayB0aGF0IGlzCiAgICAgLy8gcmVzcG9uc2libGUgZm9y
IGNyZWF0aW5nIGJvdHRvbXMuIFRoZXJlJ3MgYSB1dGlsaXR5IGZvciB0aGlzLCBzZWUgQjNCb3R0
b21Qcm92aWRlci5oLiBZb3UKICAgICAvLyBjYW4gYWxzbyBhY2Nlc3MgdGhhdCB1dGlsaXR5IHVz
aW5nIHJlcGxhY2VXaXRoQm90dG9tKEluc2VydGlvblNldCYsIHNpemVfdCkuCisgICAgLy8KKyAg
ICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEJvdHRvbVByb3ZpZGVyPgogICAgIHZvaWQgcmVwbGFjZVdpdGhCb3R0b20oY29u
c3QgQm90dG9tUHJvdmlkZXImKTsKICAgICAKQEAgLTMyMSw2ICszMjgsNyBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIElUb0Y6CiAgICAgICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAgIGNh
c2UgQnJhbmNoOgorICAgICAgICBjYXNlIERlcGVuZDoKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShudW1BcmdzICE9IDEpKQogICAgICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJncyk7
CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dp
ZHRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5j
cHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMzggQEAKIAogI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgogCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworVHlwZSBi
ZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsK
KyAgICBjYXNlIFdpZHRoODoKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgY2FzZSBXaWR0aDMyOgor
ICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJl
dHVybiBJbnQzMjsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBGbG9hdDsK
KyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gVm9pZDsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHN3aXRjaCAoYmFuaykg
eworICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDY0OworICAgICAgICBj
YXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIERvdWJsZTsKKyAgICAgICAgfQorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICB9
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVm9pZDsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKIG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6V2lkdGggd2lkdGgpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYy
LDE4IEBAIGlubGluZSBXaWR0aCB3aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCitpbmxpbmUgV2lkdGggY2Fub25pY2FsV2lkdGgoV2lkdGggd2lk
dGgpCit7CisgICAgcmV0dXJuIHN0ZDo6bWF4KFdpZHRoMzIsIHdpZHRoKTsKK30KKworaW5saW5l
IGJvb2wgaXNDYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gd2lkdGgg
Pj0gV2lkdGgzMjsKK30KKworVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKTsK
KwogaW5saW5lIFdpZHRoIGNvbnNlcnZhdGl2ZVdpZHRoKEJhbmsgYmFuaykKIHsKICAgICByZXR1
cm4gYmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2NDsKQEAgLTkzLDYgKzEwNSwy
MCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JCeXRlcyh1bnNpZ25lZCBieXRlCiAgICAgfQogfQog
CitpbmxpbmUgdWludDY0X3QgbWFzayhXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRo
KSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMDAwZmZs
bHU7CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDBmZmZm
bGx1OworICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDBmZmZmZmZm
ZmxsdTsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHJldHVybiAweGZmZmZmZmZmZmZmZmZm
ZmZsbHU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNl
IFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24gMjEz
MjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBaXJWYWxpZGF0ZS5oIgogI2luY2x1ZGUg
IkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRS
ZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2lj
QmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAiQjND
b21waWxhdGlvbi5oIgpAQCAtNDQsNiArNDUsNyBAQAogI2luY2x1ZGUgIkIzTWF0aEV4dHJhcy5o
IgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKICNpbmNsdWRlICJCM01vdmVDb25zdGFudHMu
aCIKKyNpbmNsdWRlICJCM05hdGl2ZVRyYWl0cy5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgi
CiAjaW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgogI2luY2x1ZGUgIkIzU2xvdEJhc2VWYWx1
ZS5oIgpAQCAtMjk3LDYgKzI5OSwyNCBAQCB2b2lkIHRlc3RMb2FkNDIoKQogICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSA0Mik7CiB9CiAKK3ZvaWQgdGVzdExvYWRBY3E0Migp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBpbnQgeCA9IDQyOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgJngpLAorICAgICAgICAgICAgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSkp
OworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQor
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgIENIRUNLKGlu
dm9rZTxpbnQ+KCpjb2RlKSA9PSA0Mik7Cit9CisKIHZvaWQgdGVzdExvYWRXaXRoT2Zmc2V0SW1w
bChpbnQzMl90IG9mZnNldDY0LCBpbnQzMl90IG9mZnNldDMyKQogewogICAgIHsKQEAgLTU3NDgs
NiArNTc2OCwzNSBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQzMihpbnQgYW1vdW50KQogICAgIENI
RUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRB
Y3EzMihpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0
clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIs
IE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAg
ICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkp
IHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWlu
dm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50
KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tMzIoaW50IGFtb3VudCkKIHsKICAgICBQ
cm9jZWR1cmUgcHJvYzsKQEAgLTU3OTIsNiArNTg0MSw3NCBAQCB2b2lkIHRlc3RTdG9yZUFkZExv
YWQ4KGludCBhbW91bnQsIEIzOjpPCiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7CiB9
CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBs
b2FkT3Bjb2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50OF90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZh
bHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAg
cHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9y
aWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAgICAg
ICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7
CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsK
KyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hl
Y2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9r
ZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsK
K30KKwordm9pZCB0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4KGludCBhbW91bnQsIEIzOjpP
cGNvZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDhfdCBzbG90ID0gMzc7CisgICAgQ29u
c3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgJnNsb3QpOworICAgIFZhbHVlKiBsb2FkZWRWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBz
bG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigK
KyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigweGJlZWYpLCAmc2xvdCk7CisgICAgICAgIH0pOworICAgIHBhdGNocG9pbnQt
PmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5mZW5j
ZSA9IHRydWU7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJv
YywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICBsb2FkZWRWYWx1ZSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAor
ICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0
KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0so
IWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1v
dW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tOChpbnQgYW1vdW50LCBCMzo6T3Bj
b2RlIGxvYWRPcGNvZGUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01ODM2LDYgKzU5NTMs
MzUgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkMTYoaW50IGFtb3VudCwgQjM6OgogICAgIENIRUNL
KHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3Ex
NihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQxNl90
IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUxNiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdl
KDQyKSwgSGVhcFJhbmdlKDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwg
SGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShw
cm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9u
KCpjb2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3Rs
Iik7CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAg
Q0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9hZElt
bTE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKIHsKICAgICBQcm9jZWR1cmUg
cHJvYzsKQEAgLTU4NzgsNiArNjAyNCwzMyBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQ2NChpbnQg
YW1vdW50KQogICAgIENIRUNLKHNsb3QgPT0gMzcwMDAwMDAwMDBsbCArIGFtb3VudCk7CiB9CiAK
K3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KGludCBhbW91bnQpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBp
bnQ2NF90IHNsb3QgPSAzNzAwMDAwMDAwMGxsOworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIg
PSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsK
KyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNsb3RQ
dHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdl
KDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAg
ICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAi
bGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAg
fQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xv
dCA9PSAzNzAwMDAwMDAwMGxsICsgYW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2Fk
SW1tNjQoaW50NjRfdCBhbW91bnQpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzc5MSw3
ICsxMzk2NCw3IEBAIHZvaWQgdGVzdFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCiAgICAgY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MpOwogICAgIHVuc2lnbmVkIHN0b3JlQ291bnQgPSAwOwogICAg
IGZvciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoTWVtb3J5
VmFsdWU6OmlzU3RvcmUodmFsdWUtPm9wY29kZSgpKSkKKyAgICAgICAgaWYgKGlzU3RvcmUodmFs
dWUtPm9wY29kZSgpKSkKICAgICAgICAgICAgIHN0b3JlQ291bnQrKzsKICAgICB9CiAgICAgQ0hF
Q0tfRVEoc3RvcmVDb3VudCwgMnUpOwpAQCAtMTQyNzcsNiArMTQ0NTAsNDgxIEBAIHZvaWQgdGVz
dE9wdGltaXplTWF0ZXJpYWxpemF0aW9uKCkKICAgICBDSEVDSyhmb3VuZCk7CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RBdG9taWNXZWFrQ0FTKCkKK3sKKyAgICBUeXBlIHR5
cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFp
dHM8VD46OndpZHRoOworICAgIAorICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChD
b21waWxhdGlvbiYgY29tcGlsYXRpb24pIHsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibG9jayIpOworICAgICAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJjbXB4Y2hnIik7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KAorICAgICAgICAgICAg
ICAgIGNvbXBpbGF0aW9uLAorICAgICAgICAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlzYXNz
ZW1ibHkpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnN0cihkaXNh
c3NlbWJseSwgImxkeCIpIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgImxkYXgiKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICYmIChzdHJzdHIoZGlzYXNzZW1ibHksICJzdHgiKSB8fCBzdHJzdHIo
ZGlzYXNzZW1ibHksICJzdGx4IikpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgIkV4cGVjdGVkIHRvIGZpbmQgbGR4L2xkYXggYW5kIHN0eC9zdGx4IGJ1dCBkaWRuJ3QhIik7
CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJh
c2ljQmxvY2sqIHJlbG9vcCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayog
ZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVt
cCwgT3JpZ2luKCkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHJlbG9vcCk7CisgICAg
ICAgIAorICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8QXRvbWlj
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3
aWR0aCwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBwdHIp
KTsKKyAgICAgICAgcmVsb29wLT5zZXRTdWNjZXNzb3JzKGRvbmUsIHJlbG9vcCk7CisgICAgICAg
IAorICAgICAgICBkb25lLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkp
OworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAg
Y2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAg
dmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZv
aWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2Fz
dDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICB9Cisg
ICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogcmVsb29wID0gcHJv
Yy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBkb25lID0gcHJvYy5hZGRCbG9jaygp
OworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7CisgICAgICAg
IHJvb3QtPnNldFN1Y2Nlc3NvcnMocmVsb29wKTsKKyAgICAgICAgCisgICAgICAgIHJlbG9vcC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisg
ICAgICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAg
IHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAg
ICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVh
cFJhbmdlKCkpKTsKKyAgICAgICAgcmVsb29wLT5zZXRTdWNjZXNzb3JzKGRvbmUsIHJlbG9vcCk7
CisgICAgICAgIAorICAgICAgICBkb25lLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwg
T3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsK
KyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsK
KyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAg
aW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBz
dGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsK
KyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3Vj
YyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFu
Y2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBwdHIpKTsKKyAgICAgICAg
cm9vdC0+c2V0U3VjY2Vzc29ycyhzdWNjLCBmYWlsKTsKKyAgICAgICAgCisgICAgICAgIHN1Y2Mt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShH
UCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAg
c3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAg
CisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7
CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBj
aGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2
YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAodmFs
dWVbMF0gPT0gNDIpCisgICAgICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAg
ICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+
KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVD
S19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzFdLCAxMyk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJh
c2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZh
aWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAg
IHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAg
ICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIEludDMyLCAwKSkpOwor
ICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgICAgICAKKyAgICAg
ICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3Jl
T3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50
Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOwor
ICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwor
ICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7Cisg
ICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07Cisg
ICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdo
aWxlICh2YWx1ZVswXSA9PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFs
dWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGlj
X2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwg
NDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdp
bigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOwor
ICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hl
Y2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFs
dWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hpbGUgKCFpbnZv
a2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBz
dGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsK
KyAgICAgICAgCisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAg
ICAgQ0hFQ0soIWludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEo
dmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsx
XSwgMTMpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21p
Y1N0cm9uZ0NBUygpCit7CisgICAgVHlwZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBlOwor
ICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBhdXRv
IGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRpb24mIGNvbXBpbGF0aW9uKSB7Cisg
ICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihj
b21waWxhdGlvbiwgImxvY2siKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNv
bXBpbGF0aW9uLCAiY21weGNoZyIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2hl
Y2tEaXNhc3NlbWJseSgKKyAgICAgICAgICAgICAgICBjb21waWxhdGlvbiwKKyAgICAgICAgICAg
ICAgICBbJl0gKGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5KSAtPiBib29sIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIChzdHJzdHIoZGlzYXNzZW1ibHksICJsZHgiKSB8fCBzdHJzdHIoZGlz
YXNzZW1ibHksICJsZGF4IikpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3Ryc3RyKGRp
c2Fzc2VtYmx5LCAic3R4IikgfHwgc3Ryc3RyKGRpc2Fzc2VtYmx5LCAic3RseCIpKTsKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJFeHBlY3RlZCB0byBmaW5kIGxkeC9sZGF4
IGFuZCBzdHgvc3RseCBidXQgZGlkbid0ISIpOworICAgICAgICB9CisgICAgfTsKKyAgICAKKyAg
ICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWlj
VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdp
bigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQo
cHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAg
ICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQo
cHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3Jz
KHN1Y2MsIGZhaWwpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigp
LAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgq
Y29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAg
ICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8
VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENI
RUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEo
dmFsdWVbMV0sIDEzKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAg
QmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayog
ZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAg
ICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0
MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICBwdHIpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0
MikpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhmYWlsLCBzdWNjKTsKKyAgICAgICAg
CisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFw
cGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAg
cHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdp
bigpKTsKKyAgICAgICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHBy
b2MpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVl
WzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAg
ICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9r
ZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGlj
X2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgfQor
ICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJv
bmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRD
b25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAg
ICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVb
MV0gPSAxMzsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIDQyKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19j
YXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFsdWUpLCBz
dGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19j
YXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgIH0KKyAg
ICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21w
aWxlKHByb2MpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBU
IHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEz
OworICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENI
RUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDAp
OworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzFdLCAxMyk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAg
ICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpKTsK
KyAgICAgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAg
ICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAg
ICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBDSEVDSyhp
bnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBz
dGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsK
KyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBDSEVDSygh
aW52b2tlPGJvb2w+KCpjb2RlLCAmdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0s
IHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwor
ICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1hjaGcoQjM6
Ok9wY29kZSBvcGNvZGUpCit7CisgICAgVHlwZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBl
OworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBh
dXRvIGRvVGhlTWF0aCA9IFsmXSAoVCYgbWVtb3J5LCBUIG9wZXJhbmQpIC0+IFQgeworICAgICAg
ICBUIG9sZFZhbHVlID0gbWVtb3J5OworICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAg
ICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBtZW1vcnkgKz0gb3BlcmFuZDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAg
ICBtZW1vcnkgJj0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0
b21pY1hjaGdPcjoKKyAgICAgICAgICAgIG1lbW9yeSB8PSBvcGVyYW5kOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIG1lbW9yeSAt
PSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hv
cjoKKyAgICAgICAgICAgIG1lbW9yeSBePSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgIG1lbW9yeSA9IG9wZXJhbmQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9sZFZhbHVl
OworICAgIH07CisgICAgCisgICAgYXV0byBvbGRWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3Bl
cmFuZCkgLT4gVCB7CisgICAgICAgIHJldHVybiBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5kKTsK
KyAgICB9OworICAgIAorICAgIGF1dG8gbmV3VmFsdWUgPSBbJl0gKFQgbWVtb3J5LCBUIG9wZXJh
bmQpIC0+IFQgeworICAgICAgICBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5kKTsKKyAgICAgICAg
cmV0dXJuIG1lbW9yeTsKKyAgICB9OworICAgIAorICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5
ID0gWyZdIChDb21waWxhdGlvbiYgY29tcGlsYXRpb24pIHsKKyAgICAgICAgaWYgKGlzWDg2KCkp
CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KAorICAgICAgICAg
ICAgICAgIGNvbXBpbGF0aW9uLAorICAgICAgICAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlz
YXNzZW1ibHkpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnN0cihk
aXNhc3NlbWJseSwgImxkeCIpIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgImxkYXgiKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICYmIChzdHJzdHIoZGlzYXNzZW1ibHksICJzdHgiKSB8fCBzdHJz
dHIoZGlzYXNzZW1ibHksICJzdGx4IikpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgIkV4cGVjdGVkIHRvIGZpbmQgbGR4L2xkYXggYW5kIHN0eC9zdGx4IGJ1dCBkaWRuJ3Qh
Iik7IAorICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0g
Y29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAg
ICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsxXSA9
IDEwMDsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIG9sZFZhbHVl
KDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0MikpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTAwKTsKKyAgICB9CisgICAgCisgICAgeworICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7
CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07
CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAgICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAg
IGludm9rZTxUPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3
VmFsdWUoNSwgNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAgfQor
fQorCiB2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQogewogICAgIFBy
b2NlZHVyZSBwcm9jOwpAQCAtMTQzNzAsNiArMTUwMTgsMTMgQEAgZG91YmxlIG5lZ2F0aXZlWmVy
bygpCiAgICAgcmV0dXJuIC16ZXJvKCk7CiB9CiAKKyNkZWZpbmUgUlVOX05PVyh0ZXN0KSBkbyB7
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiLi4uXG4iKTsgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgdGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgZGF0YUxvZygjdGVzdCAiOiBPSyFcbiIpOyAgICAgICAgICAgICAgIFwKKyAgICB9
IHdoaWxlIChmYWxzZSkKICNkZWZpbmUgUlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAg
LTE0NDIxLDEyICsxNTA3NiwxMSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAg
ICAgIHJldHVybiAhZmlsdGVyIHx8ICEhc3RyY2FzZXN0cih0ZXN0TmFtZSwgZmlsdGVyKTsKICAg
ICB9OwogCi0gICAgLy8gV2UgcnVuIHRoaXMgdGVzdCBmaXJzdCBiZWNhdXNlIGl0IGZpZGRsZXMg
d2l0aCBzb21lCi0gICAgLy8gSlNDIG9wdGlvbnMuCi0gICAgdGVzdFRlcm1pbmFsUGF0Y2hwb2lu
dFRoYXROZWVkc1RvQmVTcGlsbGVkMigpOworICAgIFJVTl9OT1codGVzdFRlcm1pbmFsUGF0Y2hw
b2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpKTsKIAogICAgIFJVTih0ZXN0NDIoKSk7CiAgICAg
UlVOKHRlc3RMb2FkNDIoKSk7CisgICAgUlVOKHRlc3RMb2FkQWNxNDIoKSk7CiAgICAgUlVOKHRl
c3RMb2FkT2Zmc2V0SW1tOU1heCgpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1
c09uZSgpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3bygpKTsKQEAgLTE1
MDk5LDE2ICsxNTc1MywyMyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVO
KHRlc3ROZWczMig1MikpOwogICAgIFJVTih0ZXN0TmVnUHRyKDUzKSk7CiAgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWQzMig0NikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIoNDYp
KTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTMyKDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9y
ZUFkZExvYWQ2NCg0NjAwKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E2NCg0NjAw
KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW02NCg0NjAwKSk7CiAgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWQ4KDQsIExvYWQ4WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNx
OCg0LCBMb2FkOFopKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkRmVuY2VMb2FkQWNxOCg0LCBM
b2FkOFopKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgoNCwgTG9hZDhaKSk7CiAgICAg
UlVOKHRlc3RTdG9yZUFkZExvYWQ4KDQsIExvYWQ4UykpOworICAgIFJVTih0ZXN0U3RvcmVSZWxB
ZGRMb2FkQWNxOCg0LCBMb2FkOFMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgoNCwg
TG9hZDhTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQxNig2LCBMb2FkMTZaKSk7CisgICAg
UlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQx
Nig2LCBMb2FkMTZTKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBMb2Fk
MTZTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZTKSk7CiAgICAg
UlVOKHRlc3RTdG9yZUFkZExvYWQzMkluZGV4KDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExv
YWRJbW0zMkluZGV4KDQ2KSk7CkBAIC0xNTgzMSw2ICsxNjQ5MiwzOSBAQCB2b2lkIHJ1bihjb25z
dCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQyKCkpOwogICAg
IFJVTih0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RPcHRpbWl6ZU1h
dGVyaWFsaXphdGlvbigpKTsKKyAgICAKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50OF90
PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50MTZfdD4oKSk7CisgICAgUlVOKHRl
c3RBdG9taWNXZWFrQ0FTPGludDMyX3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxp
bnQ2NF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ4X3Q+KCkpOworICAg
IFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDE2X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWlj
U3Ryb25nQ0FTPGludDMyX3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDY0
X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdBZGQpKTsK
KyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ0FkZCkpOworICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RB
dG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hj
aGc8aW50OF90PihBdG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2
X3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRv
bWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hn
QW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ09yKSk7Cisg
ICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJVTih0
ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGlu
dDhfdD4oQXRvbWljWGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihB
dG9taWNYY2hnU3ViKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hj
aGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ1N1Yikp
OworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBS
VU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0ZXN0
QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNY
Y2hnPGludDY0X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50
OF90PihBdG9taWNYY2hnKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21p
Y1hjaGcpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZykpOwor
ICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnKSk7CiAKICAgICBSVU4o
dGVzdFdhc21Cb3VuZHNDaGVjaygwKSk7CiAgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soMTAw
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCShyZXZpc2lv
biAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCB1bnNpZ25lZCBBcmc6OmpzSGFzaCgpIGNv
bnN0CiAgICAgY2FzZSBSZWxDb25kOgogICAgIGNhc2UgUmVzQ29uZDoKICAgICBjYXNlIERvdWJs
ZUNvbmQ6CisgICAgY2FzZSBTdGF0dXNDb25kOgogICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAg
IHJlc3VsdCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpOwogICAgICAgICBicmVh
azsKQEAgLTExMCw2ICsxMTEsOSBAQCB1bnNpZ25lZCBBcmc6OmpzSGFzaCgpIGNvbnN0CiAgICAg
ICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpOwogICAgICAgICBy
ZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0ID4+IDMyKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTaW1wbGVBZGRyOgorICAgICAgICByZXN1bHQgKz0gbV9iYXNlLmlu
dGVybmFsVmFsdWUoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBZGRyOgogICAgICAgICBy
ZXN1bHQgKz0gbV9vZmZzZXQ7CiAgICAgICAgIHJlc3VsdCArPSBtX2Jhc2UuaW50ZXJuYWxWYWx1
ZSgpOwpAQCAtMTUwLDYgKzE1NCw5IEBAIHZvaWQgQXJnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiAgICAgY2FzZSBCaXRJbW02NDoKICAgICAgICAgb3V0LnByaW50ZigiJDB4JWxseCIs
IHN0YXRpY19jYXN0PGxvbmcgbG9uZyB1bnNpZ25lZD4obV9vZmZzZXQpKTsKICAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgU2ltcGxlQWRkcjoKKyAgICAgICAgb3V0LnByaW50KCIoIiwgYmFzZSgp
LCAiKSIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBZGRyOgogICAgICAgICBpZiAob2Zm
c2V0KCkpCiAgICAgICAgICAgICBvdXQucHJpbnQob2Zmc2V0KCkpOwpAQCAtMTgyLDYgKzE4OSw5
IEBAIHZvaWQgQXJnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgY2FzZSBEb3Vi
bGVDb25kOgogICAgICAgICBvdXQucHJpbnQoYXNEb3VibGVDb25kaXRpb24oKSk7CiAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIFN0YXR1c0NvbmQ6CisgICAgICAgIG91dC5wcmludChhc1N0YXR1
c0NvbmRpdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgU3BlY2lhbDoKICAgICAg
ICAgb3V0LnByaW50KHBvaW50ZXJEdW1wKHNwZWNpYWwoKSkpOwogICAgICAgICByZXR1cm47CkBA
IC0yMjAsNiArMjMwLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFy
ZwogICAgIGNhc2UgQXJnOjpCaXRJbW02NDoKICAgICAgICAgb3V0LnByaW50KCJCaXRJbW02NCIp
OwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlNpbXBsZUFkZHI6CisgICAgICAgIG91
dC5wcmludCgiU2ltcGxlQWRkciIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OkFk
ZHI6CiAgICAgICAgIG91dC5wcmludCgiQWRkciIpOwogICAgICAgICByZXR1cm47CkBAIC0yNDEs
NiArMjU0LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAg
IGNhc2UgQXJnOjpEb3VibGVDb25kOgogICAgICAgICBvdXQucHJpbnQoIkRvdWJsZUNvbmQiKTsK
ICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJnOjpTdGF0dXNDb25kOgorICAgICAgICBvdXQu
cHJpbnQoIlN0YXR1c0NvbmQiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpTcGVj
aWFsOgogICAgICAgICBvdXQucHJpbnQoIlNwZWNpYWwiKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
Mjg1LDYgKzMwMSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmcK
ICAgICBjYXNlIEFyZzo6RWFybHlEZWY6CiAgICAgICAgIG91dC5wcmludCgiRWFybHlEZWYiKTsK
ICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CisgICAgICAgIG91dC5w
cmludCgiRWFybHlaRGVmIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFyZzo6U2NyYXRj
aDoKICAgICAgICAgb3V0LnByaW50KCJTY3JhdGNoIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAkocmV2aXNpb24gMjEzMjYxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAkod29ya2luZyBjb3B5KQpAQCAt
NzIsNiArNzIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gVGhlc2UgYXJlIHRoZSBhZGRyZXNz
ZXMuIEluc3RydWN0aW9ucyBtYXkgbG9hZCBmcm9tIChVc2UpLCBzdG9yZSB0byAoRGVmKSwgb3Ig
ZXZhbHVhdGUKICAgICAgICAgLy8gKFVzZUFkZHIpIGFkZHJlc3Nlcy4KKyAgICAgICAgU2ltcGxl
QWRkciwKICAgICAgICAgQWRkciwKICAgICAgICAgU3RhY2ssCiAgICAgICAgIENhbGxBcmcsCkBA
IC04Miw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVsQ29uZCwKICAgICAgICAgUmVzQ29u
ZCwKICAgICAgICAgRG91YmxlQ29uZCwKKyAgICAgICAgU3RhdHVzQ29uZCwKICAgICAgICAgU3Bl
Y2lhbCwKICAgICAgICAgV2lkdGhBcmcKICAgICB9OwpAQCAtMTUxLDYgKzE1Myw4IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gYXMgVXNlIGhhcyB1bmRlZmluZWQgYmVoYXZpb3I6IHRoZSB1c2UgbWF5
IGhhcHBlbiBiZWZvcmUgdGhlIGRlZiwgb3IgaXQgbWF5IGhhcHBlbiBhZnRlcgogICAgICAgICAv
LyBpdC4KICAgICAgICAgRWFybHlEZWYsCisgICAgICAgICAgICAKKyAgICAgICAgRWFybHlaRGVm
LAogCiAgICAgICAgIC8vIFNvbWUgaW5zdHJ1Y3Rpb25zIG5lZWQgYSBzY3JhdGNoIHJlZ2lzdGVy
LiBXZSBtb2RlbCB0aGlzIGJ5IHNheWluZyB0aGF0IHRoZSB0ZW1wb3JhcnkgaXMKICAgICAgICAg
Ly8gZGVmaW5lZCBlYXJseSBhbmQgdXNlZCBsYXRlLiBUaGlzIHJvbGUgaW1wbGllcyB0aGF0LgpA
QCAtMTg2LDYgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBj
YXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHla
RGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjA2LDYgKzIxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2Fz
ZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6
CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI4LDYgKzIzNCw3IEBA
IHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAg
ICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAg
ICAgcmV0dXJuIHJvbGU7CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICAgICAgcmV0dXJuIENv
bGRVc2U7CkBAIC0yNTMsNiArMjYwLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIExhdGVDb2xk
VXNlOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAg
ICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjc0LDYgKzI4Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNh
c2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk0
LDYgKzMwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVz
ZVpEZWY6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgog
ICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMzE1LDYgKzMyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAg
ICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMzAsNiArMzQxLDcgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAgY2FzZSBFYXJs
eURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAg
ICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1
OCw2ICszNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRl
ZjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtNDE2LDYgKzQyOSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBiaWdJbW0oYml0d2lzZV9jYXN0PGludHB0cl90PihhZGRyZXNzKSk7CiAgICAgfQogCisgICAg
c3RhdGljIEFyZyBzaW1wbGVBZGRyKEFpcjo6VG1wIHB0cikKKyAgICB7CisgICAgICAgIEFTU0VS
VChwdHIuaXNHUCgpKTsKKyAgICAgICAgQXJnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2lu
ZCA9IFNpbXBsZUFkZHI7CisgICAgICAgIHJlc3VsdC5tX2Jhc2UgPSBwdHI7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgc3RhdGljIEFyZyBhZGRyKEFpcjo6VG1wIGJhc2Us
IGludDMyX3Qgb2Zmc2V0ID0gMCkKICAgICB7CiAgICAgICAgIEFTU0VSVChiYXNlLmlzR1AoKSk7
CkBAIC01MzMsNiArNTU1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKKyAgICBzdGF0aWMgQXJnIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0Nv
bmRpdGlvbiBjb25kaXRpb24pCisgICAgeworICAgICAgICBBcmcgcmVzdWx0OworICAgICAgICBy
ZXN1bHQubV9raW5kID0gU3RhdHVzQ29uZDsKKyAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY29u
ZGl0aW9uOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHN0YXRpYyBBcmcg
c3BlY2lhbChBaXI6OlNwZWNpYWwqIHNwZWNpYWwpCiAgICAgewogICAgICAgICBBcmcgcmVzdWx0
OwpAQCAtNjA4LDYgKzYzOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBi
b29sIGlzU2ltcGxlQWRkcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ga2luZCgpID09
IFNpbXBsZUFkZHI7CisgICAgfQorCiAgICAgYm9vbCBpc0FkZHIoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIGtpbmQoKSA9PSBBZGRyOwpAQCAtNjMxLDYgKzY2Niw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzTWVtb3J5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCgp
KSB7CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgogICAgICAg
ICBjYXNlIFN0YWNrOgogICAgICAgICBjYXNlIENhbGxBcmc6CkBAIC02NDEsNiArNjc3LDEzIEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlz
IGlzIGFuIGlkaW9tYXRpYyBzdGFjayByZWZlcmVuY2UuIEl0IG1heSByZXR1cm4gZmFsc2UgZm9y
IHNvbWUga2luZHMgb2YKKyAgICAvLyBzdGFjayByZWZlcmVuY2VzLiBUaGUgZm9sbG93aW5nIGlk
aW9tcyBhcmUgcmVjb2duaXplZDoKKyAgICAvLyAtIHRoZSBTdGFjayBraW5kCisgICAgLy8gLSB0
aGUgQ2FsbEFyZyBraW5kCisgICAgLy8gLSB0aGUgQWRkciBraW5kIHdpdGggdGhlIGJhc2UgYmVp
bmcgZWl0aGVyIFNQIG9yIEZQCisgICAgLy8gQ2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uIGFyZSBh
bGxvd2VkIHRvIGV4cGVjdCB0aGF0IGlmIGl0IHJldHVybnMgdHJ1ZSwgdGhlbiBpdCBtdXN0IGJl
IG9uZSBvZgorICAgIC8vIHRoZXNlIGVhc3ktdG8tcmVjb2duaXplIGtpbmRzLiBTbywgbWFraW5n
IHRoaXMgZnVuY3Rpb24gcmVjb2duaXplIG1vcmUga2luZHMgY291bGQgYnJlYWsgdGhpbmdzLgog
ICAgIGJvb2wgaXNTdGFja01lbW9yeSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc1JlbENvbmQoKSBj
b25zdApAQCAtNjU4LDEyICs3MDEsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4ga2luZCgp
ID09IERvdWJsZUNvbmQ7CiAgICAgfQogCisgICAgYm9vbCBpc1N0YXR1c0NvbmQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBTdGF0dXNDb25kOworICAgIH0KKwogICAg
IGJvb2wgaXNDb25kaXRpb24oKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChraW5kKCkp
IHsKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAg
IGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC03NzQsMTAgKzgyMywxNiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChraW5kKCkgPT0g
QmlnSW1tKTsKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KG1fb2Zmc2V0KSk7CiAgICAgfQorICAgIAorICAgIEFpcjo6VG1wIHB0cigpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQoa2luZCgpID09IFNpbXBsZUFkZHIpOworICAgICAg
ICByZXR1cm4gbV9iYXNlOworICAgIH0KIAogICAgIEFpcjo6VG1wIGJhc2UoKSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBBZGRyIHx8IGtpbmQoKSA9PSBJbmRleCk7Cisg
ICAgICAgIEFTU0VSVChraW5kKCkgPT0gU2ltcGxlQWRkciB8fCBraW5kKCkgPT0gQWRkciB8fCBr
aW5kKCkgPT0gSW5kZXgpOwogICAgICAgICByZXR1cm4gbV9iYXNlOwogICAgIH0KIApAQCAtODQ0
LDYgKzg5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBCaWdJbW06CiAgICAgICAgIGNhc2Ug
Qml0SW1tOgogICAgICAgICBjYXNlIEJpdEltbTY0OgorICAgICAgICBjYXNlIFNpbXBsZUFkZHI6
CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgY2FzZSBJbmRleDoKICAgICAgICAgY2FzZSBT
dGFjazoKQEAgLTg1MSw2ICs5MDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoK
ICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAg
IGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdp
ZHRoQXJnOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04NzIsMTAgKzkyOSwxMiBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAg
ICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAg
Y2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICBjYXNlIEludmFs
aWQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoK
ICAgICAgICAgY2FzZSBBZGRyOgogICAgICAgICBjYXNlIEluZGV4OgogICAgICAgICBjYXNlIFN0
YWNrOgpAQCAtMTA0OSw2ICsxMTA4LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGlz
VmFsaWRCaXRJbW1Gb3JtKHZhbHVlKCkpOwogICAgICAgICBjYXNlIEJpdEltbTY0OgogICAgICAg
ICAgICAgcmV0dXJuIGlzVmFsaWRCaXRJbW02NEZvcm0odmFsdWUoKSk7CisgICAgICAgIGNhc2Ug
U2ltcGxlQWRkcjoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIEFkZHI6
CiAgICAgICAgIGNhc2UgU3RhY2s6CiAgICAgICAgIGNhc2UgQ2FsbEFyZzoKQEAgLTEwNTgsNiAr
MTExOSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJl
c0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25k
OgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNzAsNiArMTEzMiw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgICAgIGNhc2UgVG1wOgorICAgICAgICBjYXNl
IFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgICAgIGZ1bmN0b3IobV9i
YXNlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTExMCw2ICsxMTczLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgQVNTRVJUKGlzQW55VXNlKGFyZ1JvbGUpIHx8IGlzQW55RGVmKGFyZ1JvbGUp
KTsKICAgICAgICAgICAgIGZ1bmN0b3IobV9iYXNlLCBhcmdSb2xlLCBhcmdCYW5rLCBhcmdXaWR0
aCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAg
ICBjYXNlIEFkZHI6CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwgVXNlLCBHUCwgYXJnUm9s
ZSA9PSBVc2VBZGRyID8gYXJnV2lkdGggOiBwb2ludGVyV2lkdGgoKSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTExNDQsOSArMTIwOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQo
aXNJbW0oKSk7CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihw
b2ludGVyVmFsdWUoKSk7CiAgICAgfQotCisgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MgYXNBZGRyZXNzKCkgY29uc3QKICAgICB7CisgICAgICAgIGlmIChpc1NpbXBsZUFkZHIoKSkK
KyAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UuZ3ByKCkp
OwogICAgICAgICBBU1NFUlQoaXNBZGRyKCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MobV9iYXNlLmdwcigpLCBzdGF0aWNfY2FzdDxpbnQzMl90PihtX29mZnNldCkp
OwogICAgIH0KQEAgLTExNzcsNiArMTI0MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uPihtX29mZnNldCk7CiAg
ICAgfQogICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gYXNTdGF0dXND
b25kaXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU3RhdHVzQ29uZCgpKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRp
b24+KG1fb2Zmc2V0KTsKKyAgICB9CisgICAgCiAgICAgLy8gVGVsbHMgeW91IGlmIHRoZSBBcmcg
aXMgaW52ZXJ0aWJsZS4gT25seSBjb25kaXRpb24gYXJndW1lbnRzIGFyZSBpbnZlcnRpYmxlLCBh
bmQgZXZlbiBmb3IgdGhvc2UsIHRoZXJlCiAgICAgLy8gYXJlIGEgZmV3IGV4Y2VwdGlvbnMgLSBu
b3RhYmx5IE92ZXJmbG93IGFuZCBTaWduZWQuCiAgICAgYm9vbCBpc0ludmVydGlibGUoKSBjb25z
dApAQCAtMTE4NCw2ICsxMjU2LDcgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkg
ewogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAg
ICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNh
c2UgUmVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6aXNJbnZlcnRp
YmxlKGFzUmVzdWx0Q29uZGl0aW9uKCkpOwpAQCAtMTIwNCw2ICsxMjc3LDggQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIHJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1Jlc3Vs
dENvbmRpdGlvbigpKSk7CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgICAgIHJl
dHVybiBkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNEb3VibGVDb25kaXRpb24o
KSkpOworICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CisgICAgICAgICAgICByZXR1cm4gc3RhdHVz
Q29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzU3RhdHVzQ29uZGl0aW9uKCkpKTsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICByZXR1cm4gQXJnKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckJhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUs
NiArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogCiBj
b25zdCBjaGFyKiBjb25zdCBCYXNpY0Jsb2NrOjpkdW1wUHJlZml4ID0gIiMiOwogCit2b2lkIEJh
c2ljQmxvY2s6OnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrIHRhcmdldCkKK3sKKyAgICBt
X3N1Y2Nlc3NvcnMucmVzaXplKDEpOworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRhcmdldDsKK30K
Kwordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YWtlbiwg
RnJlcXVlbnRlZEJsb2NrIG5vdFRha2VuKQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMik7
CisgICAgbV9zdWNjZXNzb3JzWzBdID0gdGFrZW47CisgICAgbV9zdWNjZXNzb3JzWzFdID0gbm90
VGFrZW47Cit9CisKIGJvb2wgQmFzaWNCbG9jazo6YWRkUHJlZGVjZXNzb3IoQmFzaWNCbG9jayog
YmxvY2spCiB7CiAgICAgcmV0dXJuIEIzOjphZGRQcmVkZWNlc3Nvcih0aGlzLCBibG9jayk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkocmV2
aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Js
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMywxMSBAQAogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKLW5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0OworCituYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiBj
bGFzcyBDb2RlOwpAQCAtOTksNiArMTAzLDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN1Y2Nlc3Nv
ckxpc3QmIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KICAgICBT
dWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAKKyAg
ICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKTsKKyAgICB2b2lkIHNldFN1Y2Nl
c3NvcnMoRnJlcXVlbnRlZEJsb2NrLCBGcmVxdWVudGVkQmxvY2spOworCiAgICAgQmFzaWNCbG9j
ayogc3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3Nv
cihpbmRleCkuYmxvY2soKTsgfQogICAgIEJhc2ljQmxvY2sqJiBzdWNjZXNzb3JCbG9jayh1bnNp
Z25lZCBpbmRleCkgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAgU3Vj
Y2Vzc29yQ29sbGVjdGlvbjxCYXNpY0Jsb2NrLCBTdWNjZXNzb3JMaXN0PiBzdWNjZXNzb3JCbG9j
a3MoKQpAQCAtMTMzLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2Nr
SW5zZXJ0aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBDb2RlOwogICAgIGZyaWVuZCBjbGFzcyBJ
bnNlcnRpb25TZXQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBCMzo6R2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIAogICAgIEJhc2ljQmxvY2sodW5zaWduZWQgaW5k
ZXgsIGRvdWJsZSBmcmVxdWVuY3kpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBaXJC
bG9ja0luc2VydGlvblNldC5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFp
ckJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0J1YmJs
ZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIg
eworCitCbG9ja0luc2VydGlvblNldDo6QmxvY2tJbnNlcnRpb25TZXQoQ29kZSAmY29kZSkKKyAg
ICA6IEdlbmVyaWNCbG9ja0luc2VydGlvblNldChjb2RlLm1fYmxvY2tzKQoreworfQorCitCbG9j
a0luc2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KCkKK3sKK30KKworfSB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25T
ZXQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJs
b2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0luc2VydGlvblNl
dC5oIgorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CisKK2NsYXNzIEluc2VydGlvblNldDsKKwordHlwZWRlZiBHZW5lcmlj
QmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5zZXJ0
aW9uOworCitjbGFzcyBCbG9ja0luc2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQ8QmFzaWNCbG9jaz4geworcHVibGljOgorICAgIEJsb2NrSW5zZXJ0aW9uU2V0KENv
ZGUmKTsKKyAgICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGV2ZW50dWFsbHkgaW1wbGVtZW50IEIzOjpCbG9ja0luc2VydGlvblNldCdzIHNwbGl0
Rm9yd2FyZCgpLgorfTsKKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRHVtcEFzSlMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRHVtcEFzSlMuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI0NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFpckR1bXBBc0pTLmgiCi0KLSNpZiBFTkFC
TEUoQjNfSklUKQotCi0jaW5jbHVkZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFpckluc3RJbmxp
bmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsK
LQotbmFtZXNwYWNlIHsKLQotQ1N0cmluZyB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KHVuc2lnbmVk
IGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoImJiIiwgaW5kZXgpOwotfQotCi1DU3Ry
aW5nIHZhck5hbWUoQmFzaWNCbG9jayogYmxvY2spCi17Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JC
bG9ja0F0SW5kZXgoYmxvY2stPmluZGV4KCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWVGb3JTdGFj
a1Nsb3RBdEluZGV4KHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoInNs
b3QiLCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShTdGFja1Nsb3QqIHNsb3QpCi17Ci0g
ICAgcmV0dXJuIHZhck5hbWVGb3JTdGFja1Nsb3RBdEluZGV4KHNsb3QtPmluZGV4KCkpOwotfQot
Ci1DU3RyaW5nIHZhck5hbWUoUmVnIHJlZykKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJSZWcu
IiwgcmVnLmRlYnVnTmFtZSgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lRm9yVG1wV2l0aEJhbmtB
bmRJbmRleChCYW5rIGJhbmssIHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJp
bmcoYmFuayA9PSBGUCA/ICJmIiA6ICIiLCAidG1wIiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZh
ck5hbWUoVG1wIHRtcCkKLXsKLSAgICBpZiAodG1wLmlzUmVnKCkpCi0gICAgICAgIHJldHVybiB2
YXJOYW1lKHRtcC5yZWcoKSk7Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZElu
ZGV4KEFyZyh0bXApLmJhbmsoKSwgdG1wLnRtcEluZGV4KCkpOwotfQotCi19IC8vIGFub255bW91
cyBuYW1lc3BhY2UKLQotdm9pZCBkdW1wQXNKUyhDb2RlJiBjb2RlLCBQcmludFN0cmVhbSYgb3V0
KQotewotICAgIG91dC5wcmludGxuKCJsZXQgY29kZSA9IG5ldyBDb2RlKCk7Iik7Ci0gICAgCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGUuc2l6ZSgpOyArK2kpCi0gICAgICAgIG91
dC5wcmludGxuKCJsZXQgIiwgdmFyTmFtZUZvckJsb2NrQXRJbmRleChpKSwgIiA9IGNvZGUuYWRk
QmxvY2soKTsiKTsKLSAgICAKLSAgICBvdXQucHJpbnRsbigibGV0IGhhc2g7Iik7Ci0KLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZS5zdGFja1Nsb3RzKCkuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgU3RhY2tTbG90KiBzbG90ID0gY29kZS5zdGFja1Nsb3RzKClbaV07Ci0gICAgICAg
IGlmIChzbG90KSB7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZhck5hbWUoc2xv
dCksICIgPSBjb2RlLmFkZFN0YWNrU2xvdCgiLCBzbG90LT5ieXRlU2l6ZSgpLCAiLCAiLCBzbG90
LT5raW5kKCksICIpOyIpOwotICAgICAgICAgICAgaWYgKHNsb3QtPm9mZnNldEZyb21GUCgpKQot
ICAgICAgICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoc2xvdCksICIuc2V0T2Zmc2V0RnJv
bUZQKCIsIHNsb3QtPm9mZnNldEZyb21GUCgpLCAiKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmlu
dGxuKCJoYXNoID0gIiwgdmFyTmFtZShzbG90KSwgIi5oYXNoKCk7Iik7Ci0gICAgICAgICAgICBv
dXQucHJpbnRsbigiaWYgKGhhc2ggIT0gIiwgc2xvdC0+anNIYXNoKCksICIpIik7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRsbigiICAgIHRocm93IG5ldyBFcnJvcihcIkJhZCBoYXNoOiBcIiArIGhh
c2gpOyIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJjb2RlLmFk
ZFN0YWNrU2xvdCgxLCBTcGlsbCk7Iik7Ci0gICAgfQotICAgIAotICAgIGZvckVhY2hCYW5rKAot
ICAgICAgICBbJl0gKEJhbmsgYmFuaykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
Y29kZS5udW1UbXBzKGJhbmspOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Ci0gICAgICAgICAgICAgICAgICAgICJsZXQgIiwgdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5kSW5k
ZXgoYmFuaywgaSksICIgPSBjb2RlLm5ld1RtcCgiLCBiYW5rLCAiKTsiKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSk7Ci0gICAgCi0gICAgb3V0LnByaW50bG4oImxldCBpbnN0OyIpOwotICAg
IG91dC5wcmludGxuKCJsZXQgYXJnOyIpOwotICAgIAotICAgIGZvciAoQmFzaWNCbG9jayogYmxv
Y2sgOiBjb2RlKSB7Ci0gICAgICAgIGZvciAoRnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJs
b2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAg
ICAgICAgIHZhck5hbWUoYmxvY2spLCAiLnN1Y2Nlc3NvcnMucHVzaChuZXcgRnJlcXVlbnRlZEJs
b2NrKCIsCi0gICAgICAgICAgICAgICAgdmFyTmFtZShzdWNjZXNzb3IuYmxvY2soKSksICIsICIs
IHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSwgIikpOyIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycygp
KQotICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayksICIucHJlZGVjZXNzb3Jz
LnB1c2goIiwgdmFyTmFtZShwcmVkZWNlc3NvciksICIpOyIpOwotICAgICAgICAKLSAgICAgICAg
Zm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgZG8gc29tZXRoaW5nIGZvciBmbGFncy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3NTEKLSAgICAgICAgICAgIG91dC5wcmlu
dGxuKCJpbnN0ID0gbmV3IEluc3QoIiwgaW5zdC5raW5kLm9wY29kZSwgIik7Iik7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAgICBbJl0g
KEFyZyYgYXJnLCBBcmc6OlJvbGUsIEJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAoYXJnLmtpbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6SW52
YWxpZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VG1wOgotICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVUbXAoIiwgdmFyTmFtZShhcmcu
dG1wKCkpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbW06Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUltbSgiLCBh
cmcudmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6QmlnSW1t
OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVCaWdJbW0oIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSksICIsICIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkg
Pj4gMzIpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaXRJbW06Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUJpdElt
bSgiLCBhcmcudmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
Qml0SW1tNjQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUJpdEltbTY0KCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkpLCAi
LCAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFy
Zy52YWx1ZSgpID4+IDMyKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
QWRkcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlQWRkcigiLCB2YXJOYW1lKGFyZy5iYXNl
KCkpLCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBcmc6OlN0YWNrOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVTdGFjaygiLCB2YXJOYW1l
KGFyZy5zdGFja1Nsb3QoKSksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFyZzo6Q2FsbEFyZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlQ2FsbEFyZygiLCBhcmcub2Zmc2V0KCksICIpOyIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkluZGV4OgotICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9
IEFyZy5jcmVhdGVJbmRleCgiLCB2YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhck5hbWUoYXJnLmluZGV4KCkpLCAiLCAiLCBhcmcuc2NhbGUo
KSwgIiwgIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
QXJnOjpSZWxDb25kOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9
IEFyZy5jcmVhdGVSZWxDb25kKCIsIGFyZy5hc1JlbGF0aW9uYWxDb25kaXRpb24oKSwgIik7Iik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6UmVzQ29uZDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlUmVzQ29uZCgiLCBhcmcuYXNS
ZXN1bHRDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
RG91YmxlQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBB
cmcuY3JlYXRlRG91YmxlQ29uZCgiLCBhcmcuYXNEb3VibGVDb25kaXRpb24oKSwgIik7Iik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U3BlY2lhbDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlU3BlY2lhbCgpOyIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OldpZHRoQXJnOgotICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVXaWR0aEFyZygiLCBhcmcud2lkdGgoKSwg
Iik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50
bG4oImluc3QuYXJncy5wdXNoKGFyZyk7Iik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGluc3QuaGFzTm9uQXJnRWZmZWN0cygpKQotICAgICAgICAgICAgICAg
ICAgICBvdXQucHJpbnRsbigiaW5zdC5wYXRjaEhhc05vbkFyZ0VmZmVjdHMgPSB0cnVlOyIpOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJh
RWFybHlDbG9iYmVyZWRSZWdzID0gbmV3IFNldCgpOyIpOwotICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKCJpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncyA9IG5ldyBTZXQoKTsiKTsKLSAgICAgICAg
ICAgICAgICBpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkuZm9yRWFjaCgKLSAgICAgICAg
ICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbigiaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcp
LCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgaW5zdC5l
eHRyYUNsb2JiZXJlZFJlZ3MoKS5mb3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0gKFJl
ZyByZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJh
Q2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAiKTsiKTsKLSAgICAgICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Imluc3QucGF0Y2hBcmdEYXRhID0gW107Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNo
QXJnKAotICAgICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5r
IGJhbmssIFdpZHRoIHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRs
bigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdC5wYXRjaEFyZ0RhdGEucHVzaCh7
cm9sZTogQXJnLiIsIHJvbGUsICIsIHR5cGU6ICIsIGJhbmssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiwgd2lkdGg6ICIsIHdpZHRoLCAifSk7Iik7Ci0gICAgICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5zdC5r
aW5kLm9wY29kZSA9PSBDQ2FsbCB8fCBpbnN0LmtpbmQub3Bjb2RlID09IENvbGRDQ2FsbCkgewot
ICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsVHlwZSA9ICIsIGluc3Qub3Jp
Z2luLT50eXBlKCkpOwotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsQXJn
VHlwZXMgPSBbXTsiKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwg
aW5zdC5vcmlnaW4tPm51bUNoaWxkcmVuKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50bG4oImluc3QuY0NhbGxBcmdUeXBlcy5wdXNoKCIsIGluc3Qub3JpZ2luLT5jaGlsZChp
KS0+dHlwZSgpLCAiKTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgb3V0LnByaW50bG4oImhhc2ggPSBpbnN0Lmhhc2goKTsiKTsKLSAgICAgICAgICAgIG91dC5w
cmludGxuKCJpZiAoaGFzaCAhPSAiLCBpbnN0LmpzSGFzaCgpLCAiKSIpOwotICAgICAgICAgICAg
b3V0LnByaW50bG4oIiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgaGFzaDogXCIgKyBoYXNoKTsi
KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayks
ICIuYXBwZW5kKGluc3QpOyIpOwotICAgICAgICB9Ci0gICAgfQotfQotCi19IH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMzo6QWlyCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5oCShyZXZpc2lvbiAyMTMy
NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQotI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsgbmFtZXNwYWNlIEFpciB7Ci0KLWNsYXNzIENvZGU7Ci0KLS8vIFRoaXMgaXMgdXNlZCBmb3Ig
YmVuY2htYXJraW5nLiBWYXJpb3VzIG9wZXJhdGlvbnMgb24gQWlyIGFyZSBpbnRlcmVzdGluZyBm
cm9tIGEgYmVuY2htYXJraW5nCi0vLyBzdGFuZHBvaW50LiBXZSBjYW4gd3JpdGUgc29tZSBBaXIg
cGhhc2VzIGluIEpTIGFuZCB0aGVuIHVzZSB0aGF0IHRvIGJlbmNobWFyayBKUy4gVGhlIGJlbmNo
bWFyawotLy8gaXMgY2FsbGVkIEpTQWlyLCBhbmQgaXQncyBpbiBQZXJmb3JtYW5jZVRlc3RzL0pT
QWlyLgotdm9pZCBkdW1wQXNKUyhDb2RlJiwgUHJpbnRTdHJlYW0mKTsKLQotfSB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAy
MTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBaXJBbGxvY2F0ZVJl
Z2lzdGVyc0J5R3JhcGhDb2xvcmluZy5oIgogI2luY2x1ZGUgIkFpckFsbG9jYXRlU3RhY2suaCIK
ICNpbmNsdWRlICJBaXJDb2RlLmgiCi0jaW5jbHVkZSAiQWlyRHVtcEFzSlMuaCIKICNpbmNsdWRl
ICJBaXJFbGltaW5hdGVEZWFkQ29kZS5oIgogI2luY2x1ZGUgIkFpckZpeE9idmlvdXNTcGlsbHMu
aCIKICNpbmNsdWRlICJBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKQEAgLTczLDYgKzcy
LDggQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgICAgICBkYXRh
TG9nKCJJbml0aWFsIGFpcjpcbiIpOwogICAgICAgICBkYXRhTG9nKGNvZGUpOwogICAgIH0KKyAg
ICAKKyAgICBzaW1wbGlmeUNGRyhjb2RlKTsKIAogICAgIGxvd2VyTWFjcm9zKGNvZGUpOwogCkBA
IC0xMDcsMjMgKzEwOCwxMSBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUp
CiAgICAgLy8gZG9lcyB0aGluZ3MgbGlrZSBpZGVudGlmeSB3aGljaCBjYWxsZWUtc2F2ZXMgd2Un
cmUgdXNpbmcgYW5kIHNhdmVzIHRoZW0uCiAgICAgaGFuZGxlQ2FsbGVlU2F2ZXMoY29kZSk7CiAg
ICAgCi0gICAgaWYgKE9wdGlvbnM6OmR1bXBBaXJBc0pTQmVmb3JlQWxsb2NhdGVTdGFjaygpKSB7
Ci0gICAgICAgIGRhdGFMb2coIkR1bXBpbmcgQWlyIGFzIEpTIGJlZm9yZSBhbGxvY2F0ZVN0YWNr
OlxuIik7Ci0gICAgICAgIGR1bXBBc0pTKGNvZGUsIFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAgICAg
IGRhdGFMb2coIkFpciBoYXNoOiAiLCBjb2RlLmpzSGFzaCgpLCAiXG4iKTsKLSAgICB9Ci0KICAg
ICAvLyBUaGlzIHR1cm5zIGFsbCBTdGFjayBhbmQgQ2FsbEFyZyBBcmdzIGludG8gQWRkciBhcmdz
IHRoYXQgdXNlIHRoZSBmcmFtZSBwb2ludGVyLiBJdCBkb2VzCiAgICAgLy8gdGhpcyBieSBmaXJz
dC1maXQgYWxsb2NhdGluZyBzdGFjayBzbG90cy4gSXQgc2hvdWxkIGJlIHByZXR0eSBkYXJuIGNs
b3NlIHRvIG9wdGltYWwsIHNvIHdlCiAgICAgLy8gc2hvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJv
dXQgdGhpcyB2ZXJ5IG11Y2guCiAgICAgYWxsb2NhdGVTdGFjayhjb2RlKTsKICAgICAKLSAgICBp
ZiAoT3B0aW9uczo6ZHVtcEFpckFmdGVyQWxsb2NhdGVTdGFjaygpKSB7Ci0gICAgICAgIGRhdGFM
b2coIkR1bXBpbmcgQWlyIGFmdGVyIGFsbG9jYXRlU3RhY2s6XG4iKTsKLSAgICAgICAgZGF0YUxv
Zyhjb2RlKTsKLSAgICAgICAgZGF0YUxvZygiQWlyIGhhc2g6ICIsIGNvZGUuanNIYXNoKCksICJc
biIpOwotICAgIH0KLQogICAgIC8vIElmIHdlIGNvYWxlc2NlZCBtb3ZlcyB0aGVuIHdlIGNhbiB1
bmJyZWFrIGNyaXRpY2FsIGVkZ2VzLiBUaGlzIGlzIHRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcwog
ICAgIC8vIHBoYXNlLgogICAgIHNpbXBsaWZ5Q0ZHKGNvZGUpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAkocmV2aXNpb24gMjEzMjYxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzcsNiArMjc3LDY1IEBAIGlubGluZSBib29sIGlzWDg2VURpdjY0VmFsaWQo
Y29uc3QgSW5zdCYKICAgICByZXR1cm4gaXNYODZEaXZIZWxwZXJWYWxpZChpbnN0KTsKIH0KIAor
aW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVNWYWxpZChjb25zdCBJbnN0JiBpbnN0KQorewor
I2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgc3dpdGNoIChpbnN0LmFyZ3Muc2l6ZSgp
KSB7CisgICAgY2FzZSAzOgorICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdID09IFRtcChYODZS
ZWdpc3RlcnM6OmVheCk7CisgICAgY2FzZSA1OgorICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzFd
ID09IFRtcChYODZSZWdpc3RlcnM6OmVheCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyNlbmRpZiAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorfQorCitp
bmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGNvbnN0IEluc3QmIGluc3Qp
Cit7CisgICAgcmV0dXJuIGluc3QuYXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOwor
fQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0
KQoreworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxp
bmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzE2VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAg
ICByZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wg
aXNBdG9taWNTdHJvbmdDQVMzMlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJu
IGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQXRvbWlj
U3Ryb25nQ0FTNjRWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21p
Y1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0
cm9uZ0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0
b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21p
Y1N0cm9uZ0NBUzE2VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNCcmFu
Y2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hB
dG9taWNTdHJvbmdDQVMzMlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlz
QnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJh
bmNoQXRvbWljU3Ryb25nQ0FTNjRWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVy
biBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCiB9IH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lv
biAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNv
ZGVzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTE3LDYgKzExNyw3IEBAIEFkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAg
ICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAg
eDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKICAgICB4ODY6IFRtcCwgSW5kZXgK
IApAQCAtMTM1LDkgKzEzNiwxMiBAQCB4ODY6IEFkZDE2IFU6RzoxNiwgVUQ6RzoxNgogNjQ6IEFk
ZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAg
ICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAg
eDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgK
IAogNjQ6IEFkZDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBJbW0sIFRtcCwgVG1wCkBA
IC0xNjYsOSArMTcwLDEyIEBAIHg4NjogQWRkRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiBTdWIzMiBV
Okc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4
NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6
IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogCiBh
cm02NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIsIEQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAg
LTE3Niw5ICsxODMsMTIgQEAgYXJtNjQ6IFN1YjMyIFU6RzozMiwgVTpHOjMyLCBEOkc6MzIKIDY0
OiBTdWI2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRy
CisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAor
ICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIElu
ZGV4CiAKIGFybTY0OiBTdWI2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAs
IFRtcApAQCAtMjA0LDkgKzIxNCwxMiBAQCB4ODY6IFN1YkZsb2F0IFU6RjozMiwgVUQ6RjozMgog
TmVnMzIgVVpEOkc6MzIKICAgICBUbXAKICAgICB4ODY6IEFkZHIKKyAgICB4ODY6IEluZGV4CiAK
IDY0OiBOZWc2NCBVRDpHOjY0CiAgICAgVG1wCisgICAgeDg2OiBBZGRyCisgICAgeDg2OiBJbmRl
eAogCiBhcm02NDogTmVnYXRlRG91YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAg
LTMzMCw4ICszNDMsMTEgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAg
ICAgeDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4
CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwg
QWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6
Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTMzOSw3ICszNTUsMTMgQEAgQW5kMzIgVTpHOjMy
LCBVWkQ6RzozMgogCiB4ODZfNjQ6IEFuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1w
Ci0gICAgeDg2OiBJbW0sIFRtcAorICAgIEltbSwgVG1wCisgICAgSW1tLCBBZGRyCisgICAgSW1t
LCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICBBZGRyLCBUbXAKKyAg
ICBJbmRleCwgVG1wCiAKIEFuZERvdWJsZSBVOkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1w
LCBUbXAsIFRtcApAQCAtNDU5LDggKzQ4MSwxMSBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKICAg
ICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4
NjogVG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAg
ICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IE9yNjQgVTpHOjY0
LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ2OSw2ICs0OTQsMTIgQEAg
T3IzMiBVOkc6MzIsIFVaRDpHOjMyCiA2NDogT3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAs
IFRtcAogICAgIHg4NjogSW1tLCBUbXAKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1t
LCBJbmRleAorICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2
OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKIAogWG9yMzIgVTpHOjMyLCBVOkc6MzIs
IFpEOkc6MzIKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00ODAsOCArNTExLDExIEBAIFhvcjMyIFU6
RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6
IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAg
eDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgK
IAogNjQ6IFhvcjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBA
IC00OTAsNiArNTI0LDExIEBAIFhvcjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBYb3I2NCBVOkc6
NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBU
bXAsIEluZGV4CisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICB4
ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBUbXAKIAog
YXJtNjQ6IE5vdDMyIFU6RzozMiwgWkQ6RzozMgpAQCAtNDk4LDEzICs1MzcsMTUgQEAgYXJtNjQ6
IE5vdDMyIFU6RzozMiwgWkQ6RzozMgogeDg2OiBOb3QzMiBVWkQ6RzozMgogICAgIFRtcAogICAg
IEFkZHIKKyAgICBJbmRleAogCiBhcm02NDogTm90NjQgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAs
IFRtcAogCi14ODY6IE5vdDY0IFVEOkc6NjQKK3g4Nl82NDogTm90NjQgVUQ6Rzo2NAogICAgIFRt
cAogICAgIEFkZHIKKyAgICBJbmRleAogCiBhcm02NDogQWJzRG91YmxlIFU6Rjo2NCwgRDpGOjY0
CiAgICAgVG1wLCBUbXAKQEAgLTY2OCwyNyArNzA5LDM3NyBAQCBMb2FkOCBVOkc6OCwgWkQ6Rzoz
MgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTggVTpHOjgsIFpEOkc6
MzIgL2VmZmVjdHMKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAg
IFNpbXBsZUFkZHIsIFRtcAorCiBTdG9yZTggVTpHOjgsIEQ6Rzo4CiAgICAgVG1wLCBJbmRleAog
ICAgIFRtcCwgQWRkcgogICAgIHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBBZGRyCiAK
K1N0b3JlUmVsOCBVOkc6OCwgRDpHOjggL2VmZmVjdHMKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAg
ICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRy
CisgICAgVG1wLCBTaW1wbGVBZGRyCisKIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6
RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcThTaWduZWRFeHRl
bmRUbzMyIFU6Rzo4LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4
ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwogTG9hZDE2IFU6RzoxNiwgWkQ6
RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTE2IFU6RzoxNiwg
WkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1w
CisgICAgU2ltcGxlQWRkciwgVG1wCisKIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBa
RDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTZTaWduZWRF
eHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisg
ICAgeDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisKIFN0b3JlMTYgVTpHOjE2
LCBEOkc6MTYKICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIElu
ZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKworU3RvcmVSZWwxNiBVOkc6MTYsIEQ6RzoxNiAvZWZm
ZWN0cworICAgIHg4NjogVG1wLCBJbmRleAorICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBJ
bW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICBUbXAsIFNpbXBsZUFkZHIKKworTG9h
ZEFjcTMyIFU6RzozMiwgWkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAg
eDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisKK1N0b3JlUmVsMzIgVTpHOjMy
LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5k
ZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIFRtcCwgU2lt
cGxlQWRkcgorCis2NDogTG9hZEFjcTY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIHg4
NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisK
KzY0OiBTdG9yZVJlbDY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIHg4NjogVG1wLCBB
ZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IElt
bSwgSW5kZXgKKyAgICBUbXAsIFNpbXBsZUFkZHIKKworIyBUaGUgZmlyc3Qgb3BlcmFuZCBpcyBy
YXguCisjIEZJWE1FOiBUaGlzIGZvcm11bGF0aW9uIG1lYW5zIHRoYXQgdGhlIGJvb2xlYW4gcmVz
dWx0IGNhbm5vdCBiZSBwdXQgaW4gZWF4LCBldmVuIHRob3VnaCBhbGwgdXNlcnMKKyMgb2YgdGhp
cyB3b3VsZCBiZSBPSyB3aXRoIHRoYXQuCit4ODY6IEF0b21pY1N0cm9uZ0NBUzggVTpHOjMyLCBV
RDpHOjgsIFU6Rzo4LCBVRDpHOjgsIFpEOkc6OCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRt
cCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1w
CisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6
MTYsIFpEOkc6OCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1w
CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogQXRvbWljU3Ry
b25nQ0FTMzIgVTpHOjMyLCBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIsIFpEOkc6OCAvZWZmZWN0
cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwg
VG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4Nl82NDogQXRvbWljU3Ryb25nQ0FTNjQgVTpHOjMy
LCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQsIFpEOkc6OCAvZWZmZWN0cworICAgIFN0YXR1c0Nv
bmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRl
eCwgVG1wCisKK3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjggL2Vm
ZmVjdHMKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4Njog
QXRvbWljU3Ryb25nQ0FTMTYgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2IC9lZmZlY3RzCisgICAg
VG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N0cm9u
Z0NBUzMyIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIFRtcCosIFRtcCwg
QWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNTdHJvbmdDQVM2NCBV
RDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAg
ICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIs
IFVEOkc6OCwgVTpHOjgsIFVEOkc6OCAvYnJhbmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwg
VG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6
IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2IFU6RzozMiwgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2
IC9icmFuY2ggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FT
MzIgVTpHOjMyLCBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIgL2JyYW5jaCAvZWZmZWN0cworICAg
IFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwg
SW5kZXgKKworeDg2XzY0OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQs
IFU6Rzo2NCwgVUQ6Rzo2NCAvYnJhbmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwg
VG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21p
Y0FkZDggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQWRkMTYgVTpH
OjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQzMiBVOkc6MzIsIFVE
Okc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY0FkZDY0IFU6Rzo2NCwgVUQ6Rzo2
NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3Rz
CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNTdWIxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJ
bW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IEF0b21pY1N1YjMyIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRk
cgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82
NDogQXRvbWljU3ViNjQgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNBbmQ4IFU6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDE2IFU6
RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMzIgVTpHOjMyLCBV
RDpHOjMyIC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwg
QWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNBbmQ2NCBVOkc6NjQsIFVEOkc6
NjQgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3Rz
CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNPcjE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIElt
bSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisK
K3g4NjogQXRvbWljT3IzMiBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIK
KyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6
IEF0b21pY09yNjQgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNY
b3I4IFU6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjE2IFU6Rzox
NiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9yMzIgVTpHOjMyLCBVRDpH
OjMyIC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYb3I2NCBVOkc6NjQsIFVEOkc6NjQg
L2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY05lZzggVUQ6Rzo4IC9lZmZlY3RzCisgICAgQWRk
cgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTmVnMTYgVUQ6RzoxNiAvZWZmZWN0cworICAgIEFk
ZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05lZzMyIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBB
ZGRyCisgICAgSW5kZXgKKworeDg2XzY0OiBBdG9taWNOZWc2NCBVRDpHOjY0IC9lZmZlY3RzCisg
ICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTm90OCBVRDpHOjggL2VmZmVjdHMKKyAg
ICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QxNiBVRDpHOjE2IC9lZmZlY3RzCisg
ICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTm90MzIgVUQ6RzozMiAvZWZmZWN0cwor
ICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0b21pY05vdDY0IFVEOkc6NjQgL2VmZmVj
dHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnQWRkOCBVRDpHOjgsIFVE
Okc6OCAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNYY2hnQWRkMTYgVUQ6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnQWRkMzIgVUQ6RzozMiwgVUQ6RzozMiAvZWZm
ZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYY2hn
QWRkNjQgVUQ6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNYY2hnOCBVRDpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnMTYgVUQ6RzoxNiwgVUQ6
RzoxNiAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNYY2hnMzIgVUQ6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYY2hnNjQgVUQ6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0
cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworYXJtNjQ6IExvYWRMaW5rOCBVOkc6
OCwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGlu
a0FjcTggVTpHOjgsIFpEOkc6OCAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCisjIFN1
cGVyIGNvbmZ1c2luZyBmYWN0OiB0aGlzIHJldHVybnMgMCB0byBtZWFuIHN1Y2Nlc3MsIDEgdG8g
bWVhbiBmYWlsdXJlLgorYXJtNjQ6IFN0b3JlQ29uZDggVTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4IC9l
ZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDgg
VTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAK
KworYXJtNjQ6IExvYWRMaW5rMTYgVTpHOjE2LCBaRDpHOjE2IC9lZmZlY3RzCisgICAgU2ltcGxl
QWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTE2IFU6RzoxNiwgWkQ6RzoxNiAvZWZmZWN0
cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2LCBEOkc6
MTYsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDog
U3RvcmVDb25kUmVsMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAs
IFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmszMiBVOkc6MzIsIFpEOkc6MzIgL2Vm
ZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMzIgVTpHOjMy
LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNv
bmQzMiBVOkc6MzIsIEQ6RzozMiwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRk
ciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWwzMiBVOkc6MzIsIEQ6RzozMiwgRVpEOkc6OCAv
ZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGluazY0IFU6
Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9h
ZExpbmtBY3E2NCBVOkc6NjQsIFpEOkc6NjQgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAK
KworYXJtNjQ6IFN0b3JlQ29uZDY0IFU6Rzo2NCwgRDpHOjY0LCBFWkQ6Rzo4IC9lZmZlY3RzCisg
ICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDY0IFU6Rzo2NCwg
RDpHOjY0LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJt
NjQ6IERlcGVuZDMyIFU6RzozMiwgRDpHOjMyCisgICAgVG1wLCBUbXAKKworYXJtNjQ6IERlcGVu
ZDY0IFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAKIAogQ29tcGFyZTMyIFU6RzozMiwgVTpH
OjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2Nr
T3JkZXIuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzcsNiAr
MTc3LDEwIEBAIHZvaWQgb3B0aW1pemVCbG9ja09yZGVyKENvZGUmIGNvZGUpCiAgICAgICAgIGNh
c2UgQnJhbmNoU3ViNjQ6CiAgICAgICAgIGNhc2UgQnJhbmNoTmVnMzI6CiAgICAgICAgIGNhc2Ug
QnJhbmNoTmVnNjQ6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTODoKKyAgICAg
ICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMxNjoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9t
aWNTdHJvbmdDQVMzMjoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVM2NDoKICAg
ICAgICAgICAgIGlmIChjb2RlLmZpbmROZXh0QmxvY2soYmxvY2spID09IGJsb2NrLT5zdWNjZXNz
b3JCbG9jaygwKSAmJiBicmFuY2guYXJnc1swXS5pc0ludmVydGlibGUoKSkgewogICAgICAgICAg
ICAgICAgIHN0ZDo6c3dhcChibG9jay0+c3VjY2Vzc29yKDApLCBibG9jay0+c3VjY2Vzc29yKDEp
KTsKICAgICAgICAgICAgICAgICBicmFuY2guYXJnc1swXSA9IGJyYW5jaC5hcmdzWzBdLmludmVy
dGVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVy
ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQ
YWRJbnRlcmZlcmVuY2UuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAgdm9pZCBwYWRJbnRlcmZlcmVuY2UoQ29kZSYgY29kZSkKICAgICAgICAgICAg
ICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewogICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHJvbGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6
OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAg
ICAgICAgICAgICAgICAgICAgICAgaGFzRWFybHlEZWYgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlVXNlOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVy
eXRoaW5nLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1
LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkxhdGVDb2xkVXNlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
U2NyYXRjaDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIChSZWcgcmVnIDogY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKGJhbmspKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXRCZWZvcmUuZ2V0KHJlZykgJiYgIXNldEFm
dGVyLmdldChyZWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVy
LnNldChyZWcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2Vu
ZXJhdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bj
b2RlX2dlbmVyYXRvci5yYgkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNCAr
NTEsNDkgQEAgY2xhc3MgQXJnCiAgICAgICAgIEBiYW5rID0gYmFuawogICAgICAgICBAd2lkdGgg
PSB3aWR0aAogICAgIGVuZAotCi0gICAgZGVmIHdpZHRoQ29kZQorICAgIAorICAgIGRlZiBzZWxm
LndpZHRoQ29kZSh3aWR0aCkKICAgICAgICAgaWYgd2lkdGggPT0gIlB0ciIKICAgICAgICAgICAg
ICJwb2ludGVyV2lkdGgoKSIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgIldpZHRoI3t3aWR0
aH0iCiAgICAgICAgIGVuZAogICAgIGVuZAorCisgICAgZGVmIHdpZHRoQ29kZQorICAgICAgICBB
cmcud2lkdGhDb2RlKHdpZHRoKQorICAgIGVuZAorICAgIAorICAgIGRlZiBzZWxmLnJvbGVDb2Rl
KHJvbGUpCisgICAgICAgIGNhc2Ugcm9sZQorICAgICAgICB3aGVuICJVIgorICAgICAgICAgICAg
IlVzZSIKKyAgICAgICAgd2hlbiAiRCIKKyAgICAgICAgICAgICJEZWYiCisgICAgICAgIHdoZW4g
IlpEIgorICAgICAgICAgICAgIlpEZWYiCisgICAgICAgIHdoZW4gIlVEIgorICAgICAgICAgICAg
IlVzZURlZiIKKyAgICAgICAgd2hlbiAiVVpEIgorICAgICAgICAgICAgIlVzZVpEZWYiCisgICAg
ICAgIHdoZW4gIlVBIgorICAgICAgICAgICAgIlVzZUFkZHIiCisgICAgICAgIHdoZW4gIlMiCisg
ICAgICAgICAgICAiU2NyYXRjaCIKKyAgICAgICAgd2hlbiAiRUQiCisgICAgICAgICAgICAiRWFy
bHlEZWYiCisgICAgICAgIHdoZW4gIkVaRCIKKyAgICAgICAgICAgICJFYXJseVpEZWYiCisgICAg
ICAgIHdoZW4gIkxVIgorICAgICAgICAgICAgIkxhdGVVc2UiCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJhaXNlCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiByb2xlQ29k
ZQorICAgICAgICBBcmcucm9sZUNvZGUocm9sZSkKKyAgICBlbmQKIGVuZAogCiBjbGFzcyBPdmVy
bG9hZApAQCAtMTgyLDcgKzIxNyw3IEBAIGRlZiBsZXgoc3RyLCBmaWxlTmFtZSkKIGVuZAogCiBk
ZWYgaXNSb2xlKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpE
KXwoVUEpfChTKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8
KFVBKXwoUyl8KEVEKXwoRVpEKXwoTFUpKVxaLwogZW5kCiAKIGRlZiBpc0dGKHRva2VuKQpAQCAt
MTkwLDcgKzIyNSw3IEBAIGRlZiBpc0dGKHRva2VuKQogZW5kCiAKIGRlZiBpc0tpbmQodG9rZW4p
Ci0gICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02
NCl8KEFkZHIpfChJbmRleCl8KFJlbENvbmQpfChSZXNDb25kKXwoRG91YmxlQ29uZCkpXFovCisg
ICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8
KFNpbXBsZUFkZHIpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNv
bmQpfChTdGF0dXNDb25kKSlcWi8KIGVuZAogCiBkZWYgaXNBcmNoKHRva2VuKQpAQCAtMjY0LDcg
KzI5OSw3IEBAIGNsYXNzIFBhcnNlcgogCiAgICAgZGVmIGNvbnN1bWVLaW5kCiAgICAgICAgIHJl
c3VsdCA9IHRva2VuLnN0cmluZwotICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBraW5kIChJ
bW0sIEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVsQ29uZCwg
UmVzQ29uZCwgb3IgRG91YmxlQ29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKKyAgICAgICAg
cGFyc2VFcnJvcigiRXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQs
IFRtcCwgU2ltcGxlQWRkciwgQWRkciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIERvdWJsZUNv
bmQsIG9yIFN0YXR1c0NvbmQpIikgdW5sZXNzIGlzS2luZChyZXN1bHQpCiAgICAgICAgIGFkdmFu
Y2UKICAgICAgICAgcmVzdWx0CiAgICAgZW5kCkBAIC02MzQsMjggKzY2OSw3IEBAIHdyaXRlSCgi
T3Bjb2RlVXRpbHMiKSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25h
dHVyZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAg
ICAgIGNhc2UgYXJnLnJvbGUKLSAgICAgICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAg
ICAgICAgICByb2xlID0gIlVzZSIKLSAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAg
ICAgICAgICAgICByb2xlID0gIkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJaRCIKLSAgICAg
ICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlVEIgot
ICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZURlZiIKLSAgICAgICAgICAgICAgICB3aGVu
ICJVWkQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAgICAgICAgICAg
ICAgICB3aGVuICJVQSIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAg
ICAgICAgICAgICAgIHdoZW4gIlMiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2NyYXRj
aCIKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAg
ICAgICAgICAgICAgZW5kCi0KLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJn
c1sje2luZGV4fV0sIEFyZzo6I3tyb2xlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9
KTsiCisgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBB
cmc6OiN7YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCiAg
ICAgICAgICAgICB9CiAgICAgICAgIGVuZAogICAgIH0KQEAgLTgwNCw2ICs4MTgsOSBAQCB3cml0
ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJCaXRJbW02NCIK
ICAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZEJpdEltbTY0
Rm9ybShhcmdzWyN7aW5kZXh9XS52YWx1ZSgpKSkiCiAgICAgICAgICAgICAgICAgICAgIG91dHAu
cHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCisgICAgICAgICAgICAgICAgd2hlbiAiU2ltcGxl
QWRkciIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIWFyZ3NbI3tpbmRleH1d
LnRtcCgpLmlzR1AoKSkiCisgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVU
VVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hlbiAiQWRkciIKICAgICAgICAgICAgICAg
ICAgICAgaWYgYXJnLnJvbGUgPT0gIlVBIgogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cC5w
dXRzICJpZiAoYXJnc1sje2luZGV4fV0uaXNTdGFjaygpICYmIGFyZ3NbI3tpbmRleH1dLnN0YWNr
U2xvdCgpLT5pc1NwaWxsKCkpIgpAQCAtODE5LDYgKzgzNiw3IEBAIHdyaXRlSCgiT3Bjb2RlR2Vu
ZXJhdGVkIikgewogICAgICAgICAgICAgICAgIHdoZW4gIlJlbENvbmQiCiAgICAgICAgICAgICAg
ICAgd2hlbiAiUmVzQ29uZCIKICAgICAgICAgICAgICAgICB3aGVuICJEb3VibGVDb25kIgorICAg
ICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICByYWlzZSAiVW5leHBlY3RlZCBraW5kOiAje2tpbmQubmFtZX0iCiAg
ICAgICAgICAgICAgICAgZW5kCkBAIC0xMDk1LDcgKzExMTMsNyBAQCB3cml0ZUgoIk9wY29kZUdl
bmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4
fV0uYXNUcnVzdGVkSW1tMzIoKSIKICAgICAgICAgICAgICAgICB3aGVuICJCaWdJbW0iLCAiQml0
SW1tNjQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFz
VHJ1c3RlZEltbTY0KCkiCi0gICAgICAgICAgICAgICAgd2hlbiAiQWRkciIKKyAgICAgICAgICAg
ICAgICB3aGVuICJTaW1wbGVBZGRyIiwgIkFkZHIiCiAgICAgICAgICAgICAgICAgICAgIG91dHAu
cHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzQWRkcmVzcygpIgogICAgICAgICAgICAgICAgIHdoZW4g
IkluZGV4IgogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5h
c0Jhc2VJbmRleCgpIgpAQCAtMTEwNSw2ICsxMTIzLDggQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0
ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFz
UmVzdWx0Q29uZGl0aW9uKCkiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29uZCIKICAg
ICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNEb3VibGVDb25k
aXRpb24oKSIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgorICAgICAgICAgICAg
ICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc1N0YXR1c0NvbmRpdGlvbigpIgog
ICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQogCkBAIC0xMTQ4LDI3ICsxMTY4LDcg
QEAgRmlsZS5vcGVuKCJKU0Fpcl9vcGNvZGUuanMiLCAidyIpIHsKICAgICAgICAgICAgICAgICBv
dXRwLnB1dHMgImNhc2UgI3tvdmVybG9hZC5zaWduYXR1cmUubGVuZ3RofToiIGlmIG5lZWRPdmVy
bG9hZFN3aXRjaAogICAgICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhf
aW5kZXggewogICAgICAgICAgICAgICAgICAgICB8IGFyZywgaW5kZXggfAotICAgICAgICAgICAg
ICAgICAgICByb2xlID0gbmlsCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUKLSAg
ICAgICAgICAgICAgICAgICAgd2hlbiAiVSIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUg
PSAiVXNlIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAgICAg
ICAgICAgcm9sZSA9ICJEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlpEIgotICAgICAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVu
ICJVRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgotICAgICAgICAg
ICAgICAgICAgICB3aGVuICJVWkQiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVz
ZVpEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlVBIgotICAgICAgICAgICAgICAgICAg
ICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJTIgotICAg
ICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3JhdGNoIgotICAgICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgICAg
ICBlbmQKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG91dHAucHV0
cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7cm9sZX0sICN7YXJnLmJhbmt9
UCwgI3thcmcud2lkdGh9KTsiCisgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaW5zdC52
aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31Q
LCAje2FyZy53aWR0aH0pOyIKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3V0
cC5wdXRzICJicmVhazsiCiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNSw5ICs0MTUsNiBA
QCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGR1bXBNb2R1
bGVMb2FkaW5nU3RhdGUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGV4
cG9zZUludGVybmFsTW9kdWxlTG9hZGVyLCBmYWxzZSwgTm9ybWFsLCAiZXhwb3NlIHRoZSBpbnRl
cm5hbCBtb2R1bGUgbG9hZGVyIG9iamVjdCB0byB0aGUgZ2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dp
bmciKSBcCiAgICAgXAotICAgIHYoYm9vbCwgZHVtcEFpckFzSlNCZWZvcmVBbGxvY2F0ZVN0YWNr
LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgdihib29sLCBkdW1wQWlyQWZ0ZXJBbGxv
Y2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgXAogICAgIHYoYm9vbCwg
dXNlU3VwZXJTYW1wbGVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYo
Ym9vbCwgcmVwb3J0TExJbnRTdGF0cywgZmFsc2UsIENvbmZpZ3VyYWJsZSwgIlJlcG9ydHMgTExJ
bnQgc3RhdGlzdGljcyIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303277</attachid>
            <date>2017-03-02 18:03:34 -0800</date>
            <delta_ts>2017-03-03 11:15:52 -0800</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>333732</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTMyNjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMyBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAv
KiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87
IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQz
NDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNj
b3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5ODMyREFDMDA3RDRC
MTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDUsOCArMjI1Miw2IEBACiAJCURD
MjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIw
OTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVh
cENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRC
OEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1
QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8q
IFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREM2MDVCNUYxQ0Uy
NkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxl
clVJRC5jcHAgKi87IH07CkBAIC0yNzcxLDYgKzI3NzYsMTMgQEAKIAkJMEYyQzYzQUMxRTYwQUUz
QzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4Mzkg
LyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7
IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2
M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9t
aWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQz
RTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0lu
c2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0
NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMv
YWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBh
dGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MxMUU2
NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRpdmVUcmFpdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQzNDAwN0Q0QjE5IC8q
IERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0RERD
MTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDc4Nyw4ICs0Nzk5LDYgQEAKIAkJREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8q
IElDU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUNTdGF0cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyog
SGVhcENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcENlbGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8q
IEhlYXBDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBD
ZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckR1bXBBc0pTLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJEdW1wQXNKUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJEdW1wQXNK
Uy5oOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuY3BwOyBwYXRo
ID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuaDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNUIx
Q0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyVUlELmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVy
VUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMDYsNiArNTMxNiw4IEBA
CiAJCQkJMEZFQzg0QjMxQkRBQ0Q4ODAwODBGRjc0IC8qIGFpciAqLywKIAkJCQkwRkVDODRCNDFC
REFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRC
NTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmggKi8sCisJCQkJMEYyQzYz
QjMxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwICovLAorCQkJCTBGMkM2M0I0
MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8sCiAJCQkJMEYyQzYzQUIxRTYw
QUUzQzAwQzEzODM5IC8qIEIzQmFuay5jcHAgKi8sCiAJCQkJMEYyQzYzQUMxRTYwQUUzQzAwQzEz
ODM5IC8qIEIzQmFuay5oICovLAogCQkJCTBGRUM4NEI2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jh
c2ljQmxvY2suY3BwICovLApAQCAtNTM2OCw2ICs1MzgwLDcgQEAKIAkJCQkwRkVDODRDRDFCREFD
REFDMDA4MEZGNzQgLyogQjNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODRDRTFCREFD
REFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg0Q0YxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzR2VuZXJhdGUuaCAqLywKKwkJCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4Mzkg
LyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkVDODREMDFCREFDREFD
MDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg1QkYx
QkUxNjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmNwcCAqLywKIAkJCQkwRkVDODVDMDFCRTE2
N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLywKQEAgLTUzOTIsNiArNTQwNSw3IEBACiAJ
CQkJMEZFQzg0RDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuaCAqLywKIAkJCQkw
RjMzOEUwMzFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmNwcCAqLywKIAkJCQkw
RjMzOEUwNDFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmggKi8sCisJCQkJMEYy
QzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi8sCiAJCQkJMEYzMzhF
MDUxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0LmggKi8sCiAJCQkJMEYzMzhF
MDYxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5jcHAgKi8sCiAJCQkJMEYz
MzhFMDcxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5oICovLApAQCAtNTQ4
Myw2ICs1NDk3LDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5s
aW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2Nr
LmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5o
ICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNl
dC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0
aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29y
a2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdD
b252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0Nh
bGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC01NDk0LDggKzU1MTAsNiBAQAogCQkJCTBGMTBGMUEy
MUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAqLywKIAkJCQk3OUFCQjE3QjFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQk3OUFCQjE3QzFFNUNDQjU3
MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmggKi8sCi0JCQkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLywKLQkJCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4
QUYgLyogQWlyRHVtcEFzSlMuaCAqLywKIAkJCQkwRjQ1NzAzNjFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICovLAogCQkJCTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYy
OSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovLAogCQkJCTBGNjE4MzIzMUM0NUJGMDcwMDcy
NDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5jcHAgKi8sCkBAIC03MzQ1LDYgKzczNTksNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5MjJBM0JDMDA2
OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRjFFNjYwRUE1MDBDMTM4Mzkg
LyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAw
Rjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3MzA5MDFDMENE
NzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJ
ODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCkBAIC03Mzcz
LDggKzczODgsOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3Nl
bWJsZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8q
IE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIx
IC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4
NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKQEAg
LTc5NjQsNyArNzk3OSw2IEBACiAJCQkJMEZFQzg1NzQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckND
YWxsU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzYxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTBGMUEzMUM0MjBCRjAwMDFDMDdE
MiAvKiBBaXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAotCQkJCURDNDU0QjhEMUQwMEU4MjQwMDRD
MThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NTcwMzkxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjYxODMyRDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNERFMUNGMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc5NzcsNiArNzk5MSw3IEBACiAJCQkJMEZFQzg1ODAxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckluc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTgxMUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZERjY3
RDcxRDlEQzQ0MjAwMUI5ODI1IC8qIEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2
M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjY4NEQ0MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUzNEMxQTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQ
cmVzc3VyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8q
IEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDY4LDYgKzgwODMs
NyBAQAogCQkJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQ
dHJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8q
IEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjgxRTYzNDNG
NzAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjMzOEUwRTFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzM0ZDRkMxQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY2QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIzRHVwbGljYXRl
VGFpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtODI1OCw2ICs4Mjc0LDcgQEAKIAkJCQlBNzdBNDIz
RTE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNDMjFFNjY0QTVD
MDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc3
MTQzRkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQzRTQwMjFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4RDNEMDFCNTVBNkUwMDAy
QzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTgzODgsNiArODQwNSw3IEBACiAJCQkJMEYzOTJDOEExQjQ2MTg4NDAwODQ0NzI4IC8qIERG
R09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlBQjE2ODFBM0I2MDA1NjdG
NTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYwMEM3
MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIxOUQwQkE3RDAw
QjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKQEAgLTk4MTcsNiArOTgz
NSw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTgyNyw3ICs5ODQ2LDYgQEAKIAkJCQkwRkVD
ODU3MzFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTc1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0Ux
QzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMDI3NCw2ICsxMDI5Miw3IEBACiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8q
IEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVC
OEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQw
RTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMjkyLDYgKzEwMzExLDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBB
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdB
NDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9u
IDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjk0LDYgKzY5NCwyMSBAQCBwcml2YXRlOgogICAgICAg
ICBMZHJMaXRlcmFsT3BfTERSU1cgPSAyLAogICAgICAgICBMZHJMaXRlcmFsT3BfMTI4QklUID0g
MgogICAgIH07CisgICAgCisgICAgZW51bSBFeG90aWNMb2FkRmVuY2UgeworICAgICAgICBFeG90
aWNMb2FkRmVuY2VfQWNxdWlyZSwKKyAgICAgICAgRXhvdGljTG9hZEZlbmNlX05vbmUKKyAgICB9
OworICAgIAorICAgIGVudW0gRXhvdGljTG9hZEF0b21pYyB7CisgICAgICAgIEV4b3RpY0xvYWRB
dG9taWNfTGluaywKKyAgICAgICAgRXhvdGljTG9hZEF0b21pY19Ob25lCisgICAgfTsKKworICAg
IGVudW0gRXhvdGljU3RvcmVGZW5jZSB7CisgICAgICAgIEV4b3RpY1N0b3JlRmVuY2VfTm9uZSwK
KyAgICAgICAgRXhvdGljU3RvcmVGZW5jZV9SZWxlYXNlLAorICAgIH07CiAKICAgICBzdGF0aWMg
dW5zaWduZWQgbWVtUGFpck9mZnNldFNoaWZ0KGJvb2wgViwgTWVtUGFpck9wU2l6ZSBzaXplKQog
ICAgIHsKQEAgLTE1MjMsNiArMTUzOCw0OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbnNu
KDB4ZDUwMzNhYmYpOwogICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+Cisg
ICAgdm9pZCBsZGFyKFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAg
ICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUs
IEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlLCBFeG90aWNMb2FkQXRvbWljX05vbmUsIGRlc3QsIHNy
YykpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxkeHIo
UmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc3JjKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFU
QVNJWkUoKTsKKyAgICAgICAgaW5zbihleG90aWNMb2FkKE1FTU9QU0laRSwgRXhvdGljTG9hZEZl
bmNlX05vbmUsIEV4b3RpY0xvYWRBdG9taWNfTGluaywgZGVzdCwgc3JjKSk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgbGRheHIoUmVnaXN0ZXJJRCBkc3Qs
IFJlZ2lzdGVySUQgc3JjKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAg
ICAgaW5zbihleG90aWNMb2FkKE1FTU9QU0laRSwgRXhvdGljTG9hZEZlbmNlX0FjcXVpcmUsIEV4
b3RpY0xvYWRBdG9taWNfTGluaywgZGVzdCwgc3JjKSk7CisgICAgfQorICAgIAorICAgIHRlbXBs
YXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIHN0eHIoUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpF
KCk7CisgICAgICAgIGluc24oZXhvdGljU3RvcmUoTUVNT1BTSVpFLCBFeG90aWNTdG9yZUZlbmNl
X05vbmUsIHJlc3VsdCwgc3JjLCBkc3QpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0
YXNpemU+CisgICAgdm9pZCBzdGxyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oc3RvcmVSZWxlYXNl
KE1FTU9QU0laRSwgc3JjLCBkc3QpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNp
emU+CisgICAgdm9pZCBzdGx4cihSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAg
aW5zbihleG90aWNTdG9yZShNRU1PUFNJWkUsIEV4b3RpY1N0b3JlRmVuY2VfUmVsZWFzZSwgcmVz
dWx0LCBzcmMsIGRzdCkpOworICAgIH0KIAogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgb3JuKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJl
Z2lzdGVySUQgcm0pCkBAIC0zNTg4LDcgKzM2NDUsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgY29u
c3QgaW50IG9wNCA9IDA7CiAgICAgICAgIHJldHVybiAoMHhkNjAwMDAwMCB8IG9wYyA8PCAyMSB8
IG9wMiA8PCAxNiB8IG9wMyA8PCAxMCB8IHhPclpyKHJuKSA8PCA1IHwgb3A0KTsKICAgICB9Ci0K
KyAgICAKKyAgICBzdGF0aWMgaW50IGV4b3RpY0xvYWQoTWVtT3BTaXplIHNpemUsIEV4b3RpY0xv
YWRGZW5jZSBmZW5jZSwgRXhvdGljTG9hZEF0b21pYyBhdG9taWMsIFJlZ2lzdGVySUQgZHN0LCBS
ZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIHJldHVybiAweDA4NWZmYzAwIHwgc2l6ZSA8
PCAzMCB8IGZlbmNlIDw8IDEzIHwgYXRvbWljIDw8IDIwIHwgc3JjIDw8IDUgfCBkc3Q7CisgICAg
fQorICAgIAorICAgIHN0YXRpYyBpbnQgc3RvcmVSZWxlYXNlKE1lbU9wU2l6ZSBzaXplLCBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICByZXR1cm4gMHgwODlm
ZmMwMCB8IHNpemUgPDwgMzAgfCBkc3QgPDwgNSB8IHNyYzsKKyAgICB9CisgICAgCisgICAgc3Rh
dGljIGludCBleG90aWNTdG9yZShNZW1PcFNpemUgc2l6ZSwgRXhvdGljU3RvcmVGZW5jZSBmZW5j
ZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiAweDA4MDA3YzAwIHwgc2l6ZSA8PCAzMCB8IHJlc3VsdCA8PCAx
NiB8IGZlbmNlIDw8IDE1IHwgZHN0IDw8IDUgfCBzcmM7CisgICAgfQorICAgIAogICAgIC8vIFdv
cmthcm91bmQgZm9yIENvcnRleC1BNTMgZXJyYXR1bSAoODM1NzY5KS4gRW1pdCBhbiBleHRyYSBu
b3AgaWYgdGhlCiAgICAgLy8gbGFzdCBpbnN0cnVjdGlvbiBpbiB0aGUgYnVmZmVyIGlzIGEgbG9h
ZCwgc3RvcmUgb3IgcHJlZmV0Y2guIE5lZWRlZAogICAgIC8vIGJlZm9yZSA2NC1iaXQgbXVsdGlw
bHktYWNjdW11bGF0ZSBpbnN0cnVjdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIiAvLyBIYXZlIHRvIGJyZWFrIHdpdGggc3R5
bGUgYmVjYXVzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggaXMgYSBzaGFkeSBoZWFkZXIuCisK
KyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN0YXR1
c0NvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICBj
YXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdWNjZXNzOgorICAgICAgICBvdXQucHJp
bnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlckJhc2U6OkZhaWx1cmU6CisgICAgICAgIG91dC5wcmludCgiRmFpbHVyZSIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1JhbmRvbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDggKzUxLDI4IEBA
IG5hbWVzcGFjZSBERkcgewogc3RydWN0IE9TUkV4aXQ7CiB9CiAKK2NsYXNzIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXR1c0NvbmRpdGlvbiB7Cisg
ICAgICAgIFN1Y2Nlc3MsCisgICAgICAgIEZhaWx1cmUKKyAgICB9OworICAgIAorICAgIHN0YXRp
YyBTdGF0dXNDb25kaXRpb24gaW52ZXJ0KFN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisgICAg
eworICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbikgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6Cisg
ICAgICAgICAgICByZXR1cm4gRmFpbHVyZTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAg
ICAgICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgfQorfTsKKwogdGVt
cGxhdGUgPGNsYXNzIEFzc2VtYmxlclR5cGUsIGNsYXNzIE1hY3JvQXNzZW1ibGVyVHlwZT4KLWNs
YXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgeworY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ciA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZSB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1ibGVy
VHlwZT4gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlclR5cGU7CiAgICAgdHlwZWRlZiBBc3NlbWJsZXJU
eXBlIEFzc2VtYmxlclR5cGVfVDsKQEAgLTExMDgsMyArMTEyOSwxNiBAQCBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCituYW1lc3Bh
Y2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdGF0dXNDb25k
aXRpb24pOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJM
RVIpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiw2
ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMyOyAv
LyBUaGlzIGlzIHN1cGVyIHVzZWZ1bCBmb3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8vIFV0
aWxpdGllcyB1c2VkIGJ5IHRoZSBERkcgSklULgorICAgIHVzaW5nIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXJCYXNlOjppbnZlcnQ7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQ7
CiAgICAgCiAgICAgc3RhdGljIERvdWJsZUNvbmRpdGlvbiBpbnZlcnQoRG91YmxlQ29uZGl0aW9u
IGNvbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMzczLDcgKzMzNzMsMjI5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmRtYklTSCgpOwogICAgIH0KLQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWdu
ZWRFeHRlbnRUbzMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGFyPDg+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRy
ZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOChJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZEFjcThT
aWduZWRFeHRlbmRUbzMyKGFkZHJlc3MsIGRlc3QpOworICAgICAgICBhbmQzMihUcnVzdGVkSW1t
MzIoMHhmZiksIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChSZWdpc3Rl
cklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdGxyPDg+KHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoSW1wbGljaXRBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxk
YXI8MTY+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBsb2FkQWNxMTYoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoYWRkcmVzcywg
ZGVzdCk7CisgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMigweGZmZmYpLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHI8MTY+KHNyYywgZXh0
cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRB
Y3EzMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubGRhcjwzMj4oYWRkcmVzcywgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgbG9hZEFjcTY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGFyPDY0PihhZGRyZXNzLCBkZXN0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFJlZ2lzdGVySUQgZGVzdCwgSW1wbGlj
aXRBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdGxyPDMyPihk
ZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZv
aWQgc3RvcmVSZWw2NChSZWdpc3RlcklEIGRlc3QsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Rscjw2ND4oZGVzdCwgZXh0cmFjdFNpbXBsZUFk
ZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rOChJbXBsaWNp
dEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubGR4cjw4PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAg
fQorICAgIAorICAgIHZvaWQgbG9hZExpbmtBY3E4KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGF4cjw4PihkZXN0
LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
c3RvcmVDb25kOChSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4cjw4PihyZXN1bHQs
IHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIHN0b3JlQ29uZFJlbDgoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPDg+
KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgbG9hZExpbmsxNihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGR4cjwxNj4oZGVzdCwgZXh0cmFj
dFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5r
QWNxMTYoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxkYXhyPDE2PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhh
ZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kMTYoUmVnaXN0ZXJJRCBz
cmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnN0eHI8MTY+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRk
cmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kUmVsMTYoUmVn
aXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPDE2PihyZXN1bHQsIHNyYywgZXh0cmFj
dFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5r
MzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxkeHI8MzI+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJl
c3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGlua0FjcTMyKEltcGxpY2l0QWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
ZGF4cjwzMj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHN0b3JlQ29uZDMyKFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dHhyPDMyPihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDMyKFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNp
dEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdGx4cjwzMj4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJl
c3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGluazY0KEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhy
PDY0PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgbG9hZExpbmtBY3E2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8NjQ+KGRlc3QsIGV4dHJh
Y3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNv
bmQ2NChSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4cjw2ND4ocmVzdWx0LCBzcmMs
IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBz
dG9yZUNvbmRSZWw2NChSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RseHI8NjQ+KHJl
c3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIG5ld1ZhbHVlLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0
cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIGF0b21pY1N0cm9uZ0NBUzwxNj4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9u
Z0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCByZXN1bHQpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBSZWdp
c3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzw2ND4oY29uZCwg
ZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBSZWdpc3RlcklEIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM8OD4oY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1JlbGF4ZWRTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNSZWxheGVkU3Ryb25nQ0FTPDE2Pihjb25kLCBleHBl
Y3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBSZWdpc3RlcklEIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM8MzI+KGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNSZWxheGVkU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIFJlZ2lzdGVySUQgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzw2ND4oY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlz
dCBicmFuY2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1dlYWtDQVM8OD4oY29uZCwgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
SnVtcExpc3QgYnJhbmNoQXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljV2Vha0NBUzwxNj4o
Y29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljV2Vh
a0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljV2Vha0NBUzY0KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljV2Vha0NBUzw2ND4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljUmVsYXhlZFdl
YWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICByZXR1cm4gYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3Qg
YnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FT
PDE2Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJh
bmNoQXRvbWljUmVsYXhlZFdlYWtDQVM8MzI+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBu
ZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21p
Y1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzw2ND4oY29uZCwg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBkZXBlbmQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuZW9yPDMyPihkZXN0LCBzcmMsIHNyYyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgZGVwZW5kNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmVvcjw2ND4oZGVzdCwgc3JjLCBzcmMpOworICAgIH0K
KyAgICAKICAgICAvLyBNaXNjIGhlbHBlciBmdW5jdGlvbnMuCiAKICAgICAvLyBJbnZlcnQgYSBy
ZWxhdGlvbmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0
Yy4KQEAgLTM4NzUsNiArNDA5NywxNTggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAg
ICB2b2lkIGxvYWRMaW5rKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sZHhyPGRhdGFzaXplPihkZXN0LCBzcmMpOworICAgIH0KKyAg
ICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBsb2FkTGlua0FjcShSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bGRheHI8ZGF0YXNpemU+KGRlc3QsIHNyYyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGlu
dCBkYXRhc2l6ZT4KKyAgICB2b2lkIHN0b3JlQ29uZChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0LCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0
eHI8ZGF0YXNpemU+KHNyYywgZGVzdCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdGVtcGxh
dGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgc3RvcmVDb25kUmVsKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuc3RseHI8ZGF0YXNpemU+KHNyYywgZGVzdCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgc2lnbkV4dGVuZChSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgSnVtcCBicmFuY2go
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmln
aHQpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBhdG9taWNT
dHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBzaWduRXh0ZW5kPGRhdGFzaXplPihleHBlY3RlZEFuZFJlc3Vs
dCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICAKKyAgICAgICAgUmVnaXN0ZXJJRCBhZGRy
ZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcyk7CisgICAgICAgIFJlZ2lzdGVySUQg
dG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAgICAg
ICAKKyAgICAgICAgTGFiZWwgcmVsb29wID0gbGFiZWwoKTsKKyAgICAgICAgbG9hZExpbmtBY3E8
ZGF0YXNpemU+KGFkZHJlc3MsIHRtcCk7CisgICAgICAgIEp1bXAgZmFpbHVyZSA9IGJyYW5jaDxk
YXRhc2l6ZT4oTm90RXF1YWwsIGV4cGVjdGVkQW5kUmVzdWx0LCB0bXApOworICAgICAgICAKKyAg
ICAgICAgc3RvcmVDb25kUmVsPGRhdGFzaXplPihuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICAgICAgYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlc3VsdCkubGlua1RvKHJlbG9vcCwgdGhp
cyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGNvbmQgPT0gU3VjY2VzcyksIHJlc3VsdCk7
CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAgICAgCisgICAgICAgIGZhaWx1cmUu
bGluayh0aGlzKTsKKyAgICAgICAgbW92ZSh0bXAsIGV4cGVjdGVkQW5kUmVzdWx0KTsKKyAgICAg
ICAgc3RvcmVDb25kUmVsPGRhdGFzaXplPih0bXAsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgICAg
IGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXN1bHQpLmxpbmtUbyhyZWxvb3AsIHRoaXMpOworICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjb25kID09IEZhaWx1cmUpLCByZXN1bHQpOworICAgICAg
ICAKKyAgICAgICAgZG9uZS5saW5rKHRoaXMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxp
bnQgZGF0YXNpemU+CisgICAgdm9pZCBhdG9taWNSZWxheGVkU3Ryb25nQ0FTKFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
c2lnbkV4dGVuZDxkYXRhc2l6ZT4oZXhwZWN0ZWRBbmRSZXN1bHQsIGV4cGVjdGVkQW5kUmVzdWx0
KTsKKyAgICAgICAgCisgICAgICAgIFJlZ2lzdGVySUQgYWRkcmVzcyA9IGV4dHJhY3RTaW1wbGVB
ZGRyZXNzKGFkZHJlc3MpOworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgCisgICAgICAgIExhYmVsIHJl
bG9vcCA9IGxhYmVsKCk7CisgICAgICAgIGxvYWRMaW5rPGRhdGFzaXplPihhZGRyZXNzLCB0bXAp
OworICAgICAgICBKdW1wIGZhaWx1cmUgPSBicmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBl
Y3RlZEFuZFJlc3VsdCwgdG1wKTsKKyAgICAgICAgCisgICAgICAgIHN0b3JlQ29uZDxkYXRhc2l6
ZT4obmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgICAgIGJyYW5jaFRlc3QzMihOb25a
ZXJvLCByZXN1bHQpLmxpbmtUbyhyZWxvb3AsIHRoaXMpOworICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihjb25kID09IFN1Y2Nlc3MpLCByZXN1bHQpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1w
KCk7CisgICAgICAgIAorICAgICAgICBmYWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAgIG1vdmUo
dG1wLCBleHBlY3RlZEFuZFJlc3VsdCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGNvbmQg
PT0gRmFpbHVyZSksIHJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBkb25lLmxpbmsodGhpcyk7
CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBKdW1wTGlzdCBi
cmFuY2hBdG9taWNXZWFrQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBzaWduRXh0ZW5kPGRhdGFzaXplPihleHBlY3RlZEFuZFJlc3VsdCwgZXhw
ZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICAKKyAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzID0g
ZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcyk7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0g
Z2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAgICAgICAKKyAg
ICAgICAgSnVtcExpc3Qgc3VjY2VzczsKKyAgICAgICAgSnVtcExpc3QgZmFpbHVyZTsKKworICAg
ICAgICBsb2FkTGlua0FjcTxkYXRhc2l6ZT4oYWRkcmVzcywgdG1wKTsKKyAgICAgICAgZmFpbHVy
ZS5hcHBlbmQoYnJhbmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IHRtcCkpOworICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNpemU+KG5ld1ZhbHVlLCBhZGRyZXNz
LCBleHBlY3RlZEFuZENsb2JiZXJlZCk7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGNvbmQp
IHsKKyAgICAgICAgY2FzZSBTdWNjZXNzOgorICAgICAgICAgICAgc3VjY2Vzcy5hcHBlbmQoYnJh
bmNoVGVzdDMyKFplcm8sIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKSk7CisgICAgICAgICAgICBmYWls
dXJlLmxpbmsodGhpcyk7CisgICAgICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICAgICAgY2Fz
ZSBGYWlsdXJlOgorICAgICAgICAgICAgZmFpbHVyZS5hcHBlbmQoYnJhbmNoVGVzdDMyKE5vblpl
cm8sIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKSk7CisgICAgICAgICAgICByZXR1cm4gZmFpbHVyZTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEp1bXBMaXN0
IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBzaWduRXh0ZW5kPGRhdGFzaXplPihleHBlY3RlZEFuZFJl
c3VsdCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICAKKyAgICAgICAgUmVnaXN0ZXJJRCBh
ZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcyk7CisgICAgICAgIFJlZ2lzdGVy
SUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAg
ICAgICAKKyAgICAgICAgSnVtcExpc3Qgc3VjY2VzczsKKyAgICAgICAgSnVtcExpc3QgZmFpbHVy
ZTsKKworICAgICAgICBsb2FkTGluazxkYXRhc2l6ZT4oYWRkcmVzcywgdG1wKTsKKyAgICAgICAg
ZmFpbHVyZS5hcHBlbmQoYnJhbmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIHRtcCkpOworICAgICAgICBzdG9yZUNvbmQ8ZGF0YXNpemU+KG5ld1ZhbHVlLCBhZGRy
ZXNzLCBleHBlY3RlZEFuZENsb2JiZXJlZCk7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGNv
bmQpIHsKKyAgICAgICAgY2FzZSBTdWNjZXNzOgorICAgICAgICAgICAgc3VjY2Vzcy5hcHBlbmQo
YnJhbmNoVGVzdDMyKFplcm8sIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKSk7CisgICAgICAgICAgICBm
YWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICAgICAg
Y2FzZSBGYWlsdXJlOgorICAgICAgICAgICAgZmFpbHVyZS5hcHBlbmQoYnJhbmNoVGVzdDMyKE5v
blplcm8sIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKSk7CisgICAgICAgICAgICByZXR1cm4gZmFpbHVy
ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisgICAgCisgICAgUmVnaXN0ZXJJRCBleHRyYWN0U2ltcGxlQWRkcmVzcyhJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmICghYWRkcmVzcy5vZmZz
ZXQpCisgICAgICAgICAgICByZXR1cm4gYWRkcmVzcy5iYXNlOworICAgICAgICAKKyAgICAgICAg
c2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVk
TWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBhZGRQdHIoYWRk
cmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gbWVtb3J5VGVt
cFJlZ2lzdGVyOworICAgIH0KIAogICAgIEp1bXAganVtcEFmdGVyRmxvYXRpbmdQb2ludENvbXBh
cmUoRG91YmxlQ29uZGl0aW9uIGNvbmQpCiAgICAgewpAQCAtMzk4Nyw2ICs0MzYxLDI0IEBAIEFM
V0FZU19JTkxJTkUgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0OjoKICAgICBtX2Fzc2VtYmxlci5z
dHVyaChydCwgcm4sIHNpbW0pOwogfQogCit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZCBNYWNyb0Fz
c2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDg+KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCit7CisgICAgc2lnbkV4dGVuZDhUbzMyKHNyYywgZGVzdCk7Cit9CisKK3RlbXBsYXRlPD4K
K2lubGluZSB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNpZ25FeHRlbmQ8MTY+KFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCit7CisgICAgc2lnbkV4dGVuZDE2VG8zMihzcmMsIGRl
c3QpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgSnVtcCBNYWNyb0Fzc2VtYmxlckFSTTY0Ojpi
cmFuY2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVy
SUQgcmlnaHQpCit7CisgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNC0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTcxLDYgKzE3MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQg
YWRkMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYWRkbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2Nh
bGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBzcmMsIEFkZHJl
c3MgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKQEAgLTI1MSwxNiArMjU2LDcxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIuYW5kbF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0K
IAorICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kMTYoUmVnaXN0
ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdf
cm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFuZHdfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3Mg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfcm0oc3JjLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoUmVnaXN0ZXJJRCBzcmMsIEJh
c2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9ybShzcmMsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwog
ICAgIHZvaWQgYW5kMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAg
IH0KIAorICAgIHZvaWQgYW5kMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3Jj
LmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
YW5kbF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAg
fQogCisgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgYW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19pbShzdGF0aWNfY2FzdDxpbnQxNl90Pihp
bW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAg
IHZvaWQgYW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3Zh
bHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfaW0oc3RhdGljX2Nh
c3Q8aW50OF90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwor
ICAgIH0KKworICAgIHZvaWQgYW5kOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfaW0oc3RhdGljX2Nhc3Q8aW50OF90
PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBv
cDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAo
b3AxID09IG9wMikKQEAgLTQ1Niw2ICs1MTYsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5uZWdsX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSk7CiAgICAgfQogCisgICAg
dm9pZCBuZWczMihCYXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm5lZ2xfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNE
ZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZzE2KEFkZHJlc3Mgc3JjRGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3dfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5i
YXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZzE2KEJhc2VJbmRleCBzcmNEZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubmVnd19tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2Us
IHNyY0Rlc3QuaW5kZXgsIHNyY0Rlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnOChB
ZGRyZXNzIHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdiX20oc3JjRGVz
dC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWc4KEJhc2VJbmRl
eCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnYl9tKHNyY0Rlc3Qub2Zm
c2V0LCBzcmNEZXN0LmJhc2UsIHNyY0Rlc3QuaW5kZXgsIHNyY0Rlc3Quc2NhbGUpOworICAgIH0K
KwogICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JyKHNyYywgZGVzdCk7CkBAIC00NzEsMTYgKzU1Niw3
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgQmFz
ZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcm0oc3JjLCBkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgb3IxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5vcndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBk
ZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3Ji
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCBvcjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRl
c3QpOwogICAgIH0KIAorICAgIHZvaWQgb3IzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJh
c2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIub3JsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
ICAgICB9CiAKKyAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwor
ICAgIH0KKworICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4o
aW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5vcndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFs
dWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmJfaW0oc3RhdGljX2Nhc3Q8
aW50OF90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1t
Lm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJl
Z2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAob3AxID09
IG9wMikKQEAgLTY1NCwxNiArNzk0LDcxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
c3VibF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAg
fQogCisgICAgdm9pZCBzdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJ3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGlt
bS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAg
dm9pZCBzdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSks
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdWJsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjE2
KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuc3Vid19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwor
ICAgIH0KKworICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90
PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoQWRkcmVzcyBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfbXIoc3Jj
Lm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMzIoQmFzZUlu
ZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vi
bF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOwor
ICAgIH0KKwogICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1Ymxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJ3X3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBzdWI4KFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX3JtKHNyYywgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCBzdWIxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJ3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBzdWI4KFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1
YmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54b3JsX3JyKHNyYywgZGVzdCk7CkBAIC02
NzcsNiArODcyLDUwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfaW0o
aW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQg
eG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBp
ZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RsX20oZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZv
aWQgeG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAg
aW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSk7CisgICAgICAg
IGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vdHdfbShk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIueG9yd19pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFs
dWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1f
dmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKworICAgIHZvaWQgeG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFs
dWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0
LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggZGVzdCkKKyAgICB7CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50OF90
PihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4
LCBkZXN0LnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9y
Yl9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCkBAIC02
OTAsMTEgKzkyOSw0MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhv
cmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQmFzZUlu
ZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3J3X3JtKHNyYywgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCB4b3I4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci54b3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQor
CisgICAgdm9pZCB4b3I4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnhvcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBk
ZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKEFkZHJlc3Mg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54b3JsX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCB4b3Iz
MihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwg
ZGVzdCk7CisgICAgfQorICAgIAogICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lz
dGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAob3AxID09IG9w
MikKQEAgLTc0MSw2ICsxMDEwLDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubm90
bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgbm90MzIoQmFz
ZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RsX20oZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBub3QxNihBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20o
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3QxNihCYXNlSW5k
ZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwg
ZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5v
dDgoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90OChCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHNxcnREb3Vi
bGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLnNxcnRzZF9ycihzcmMsIGRzdCk7CkBAIC0xMDcxLDQyICsxMzY1LDIzIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJl
c3MpCiAgICAgewotI2lmIENQVShYODYpCi0gICAgICAgIC8vIE9uIDMyLWJpdCB4ODYgd2UgY2Fu
IG9ubHkgc3RvcmUgZnJvbSB0aGUgZmlyc3QgNCByZWdpc3RlcnM7Ci0gICAgICAgIC8vIGVzcC4u
ZWRpIGFyZSBtYXBwZWQgdG8gdGhlICdoJyByZWdpc3RlcnMhCi0gICAgICAgIGlmIChzcmMgPj0g
NCkgewotICAgICAgICAgICAgLy8gUGljayBhIHRlbXBvcmFyeSByZWdpc3Rlci4KLSAgICAgICAg
ICAgIFJlZ2lzdGVySUQgdGVtcCA9IGdldFVudXNlZFJlZ2lzdGVyKGFkZHJlc3MpOwotCi0gICAg
ICAgICAgICAvLyBTd2FwIHRvIHRoZSB0ZW1wb3JhcnkgcmVnaXN0ZXIgdG8gcGVyZm9ybSB0aGUg
c3RvcmUuCi0gICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3Z3X3JtKHRlbXAsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOwotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgbV9hc3NlbWJsZXIu
bW92d19ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNy
YywgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAgICAgICAvLyBPbiAz
Mi1iaXQgeDg2IHdlIGNhbiBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOwot
ICAgICAgICAvLyBlc3AuLmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQotICAg
ICAgICBpZiAoc3JjID49IDQpIHsKLSAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1wb3JhcnkgcmVn
aXN0ZXIuCi0gICAgICAgICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRSZWdpc3Rlcihh
ZGRyZXNzKTsKLQotICAgICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5IHJlZ2lzdGVy
IHRvIHBlcmZvcm0gdGhlIHN0b3JlLgotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0oc3JjLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlMTYo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5tb3Z3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7Cisg
ICAgfQorCisgICAgdm9pZCBzdG9yZTE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfaW0oc3RhdGljX2Nhc3Q8aW50MTZf
dD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CiAK
ICAgICAvLyBGbG9hdGluZy1wb2ludCBvcGVyYXRpb246CiAgICAgLy8KQEAgLTI3NDMsNzQgKzMw
MTgsOTAxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwogICAgICAgICBt
X2Fzc2VtYmxlci5vcmxfaW0oMCwgMCwgWDg2UmVnaXN0ZXJzOjplc3ApOwogICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29u
ZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jf
cm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CiAK
LSAgICAvLyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBu
b3JtYWwgc3RvcmVzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KLSAgICB2b2lkIHN0b3JlRmVu
Y2UoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25n
Q0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNt
cHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlz
IHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQn
cyBhIG5vLW9wIG9uIHg4Ni4KLSAgICB2b2lkIGxvYWRGZW5jZSgpCisgICAgdm9pZCBhdG9taWNT
dHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKICAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lk
IHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2Rl
TG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAg
ewotICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0
LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwor
ICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwg
WyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9Ci0g
ICAgCi0gICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKworICAg
IHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBl
eHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAg
IHN0YXRpYyBwdHJkaWZmX3QgcGF0Y2hhYmxlSnVtcFNpemUoKQorICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OnBhdGNoYWJsZUp1bXBT
aXplKCk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
cmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwog
ICAgIH0KIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkK
KyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgaWYg
KHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpCi0gICAg
ICAgICAgICB1cGRhdGVFYXgxRWN4RmxhZ3MoKTsKLSAgICAgICAgcmV0dXJuIHNfc3NlNF8xQ2hl
Y2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6OlNldDsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
KGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzQVZYKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJl
c3MpCiAgICAgewotICAgICAgICAvLyBBVlggc3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVz
c2lvbnMgYW5kIHRob3NlIHJlZ3Jlc3Npb25zIGNhbiBiZSBtYXNzaXZlLgotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZd
IHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdm9pZCB1cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAgIHZvaWQgYXRvbWljU3Ryb25n
Q0FTMTYoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgaW50IGZsYWdzID0gMDsKLSNpZiBDT01Q
SUxFUihNU1ZDKQotICAgICAgICBpbnQgY3B1SW5mb1s0XTsKLSAgICAgICAgX19jcHVpZChjcHVJ
bmZvLCAweDEpOwotICAgICAgICBmbGFncyA9IGNwdUluZm9bMl07Ci0jZWxpZiBDT01QSUxFUihH
Q0NfT1JfQ0xBTkcpCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgYXNtICgKLSAgICAgICAgICAg
ICJtb3ZsICQweDEsICUlZWF4OyIKLSAgICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAgICAi
bW92bCAlJWVjeCwgJTA7IgotICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAg
IDoKLSAgICAgICAgICAgIDogIiVlYXgiLCAiJWVieCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAg
ICAgICApOwotI2Vsc2UKLSAgICAgICAgYXNtICgKLSAgICAgICAgICAgICJtb3ZsICQweDEsICUl
ZWF4OyIKLSAgICAgICAgICAgICJwdXNobCAlJWVieDsiCi0gICAgICAgICAgICAiY3B1aWQ7Igot
ICAgICAgICAgICAgInBvcGwgJSVlYng7IgotICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIK
LSAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICA6
ICIlZWF4IiwgIiVlY3giLCAiJWVkeCIKLSAgICAgICAgICAgICk7Ci0jZW5kaWYKKyAgICAgICAg
YXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAg
IH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVy
LmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNT
dHJvbmdDQVMzMihSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhw
ZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9t
aWNTdHJvbmdDQVMzMihSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NB
UyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1i
bGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsg
fSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNt
cHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9t
aWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9u
Z0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsm
XSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1w
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsgfSk7CisgICAgfQorCisgICAgLy8gSWYgeW91IHVzZSB3ZWFrIENBUywgeW91IGNhbm5vdCBy
ZWx5IG9uIGV4cGVjdGVkQW5kQ2xvYmJlcmVkIHRvIGhhdmUgYW55IHBhcnRpY3VsYXIgdmFsdWUg
YWZ0ZXIKKyAgICAvLyB0aGlzIGNvbXBsZXRlcy4gT24geDg2LCBpdCB3aWxsIGNvbnRhaW4gdGhl
IHJlc3VsdCBvZiB0aGUgc3Ryb25nIENBUy4gT24gQVJNLCBpdCB3aWxsIHN0aWxsIGhhdmUKKyAg
ICAvLyB0aGUgZXhwZWN0ZWQgdmFsdWUuCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTOChTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1Zh
bHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWlj
V2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZv
aWQgYXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywg
UmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25k
LCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAg
fQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdD
QVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3Vs
dCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0
b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRk
cmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4g
YnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzgoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1Zh
bHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVMxNihT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdW
YWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMTYo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBu
ZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FT
MzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJl
dHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
bmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4
ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZv
aWQgYXRvbWljUmVsYXhlZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBh
dG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFk
ZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzE2
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQp
CisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9t
aWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0K
KworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFz
ZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWlj
U3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNz
LCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM4
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3
VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdl
YWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNS
ZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5j
aEF0b21pY1JlbGF4ZWRXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQs
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAg
SnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FT
MzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9
CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChUcnVzdGVkSW1tMzIgaW1tLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIGFkZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4
KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljQWRkOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ4KHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChSZWdpc3RlcklEIHJlZywg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFkZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNB
ZGQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljQWRkMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMTYoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYWRkMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMy
KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCBy
ZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhZGQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1N1YjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3Vi
OChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgc3ViOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1N1YjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBz
dWIxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFRy
dXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1N1YjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBzdWIxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3Vi
MzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIzMihSZWdp
c3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWIzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIocmVnLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgYW5kOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNBbmQ4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDgocmVnLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFJlZ2lzdGVySUQgcmVnLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgYW5kOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0Fu
ZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNBbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYo
aW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQxNihSZWdpc3Rl
cklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FuZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYocmVnLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljQW5kMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIocmVnLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJl
ZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljT3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgb3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
T3I4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljT3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljT3IxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgb3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMzIo
cmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFJlZ2lzdGVy
SUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY1hvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
eG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoUmVn
aXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgeG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hvcjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICB4b3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2
KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCBy
ZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
eG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihS
ZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hvcjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIocmVnLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc4KEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnOChhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc4KEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc4KGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzE2KEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMTYoYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMTYoQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2KGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzMyKEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMzIoYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMzIoQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMyKGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDgoQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDgoQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDgoYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MTYoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QxNihhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QxNihCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MzIoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QzMihhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QzMihCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkOChSZWdpc3RlcklEIHJlZywgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljWGNoZ0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGR3X3Jt
KHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljWGNoZ0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFk
ZHdfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMzIoUmVn
aXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMzIo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9ybShyZWcsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fz
c2VtYmxlci54Y2hnYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hj
aGcxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShyZWcsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hj
aGcxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGd3X3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzMyKFJlZ2lzdGVySUQgcmVnLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG1fYXNzZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzMyKFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxOChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9h
ZDgoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOChCYXNlSW5kZXgg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkOChzcmMsIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihBZGRyZXNzIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDhTaWduZWRFeHRlbmRUbzMy
KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRFeHRlbmRU
bzMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4
U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRB
Y3ExNihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDE2
KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEJhc2VJbmRleCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNihzcmMsIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoQWRkcmVzcyBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNlNpZ25lZEV4dGVuZFRv
MzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTZTaWduZWRFeHRl
bmRUbzMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxv
YWQxNlNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxv
YWQzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihCYXNlSW5k
ZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMzIoc3JjLCBkZXN0
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHN0b3JlUmVsOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBzdG9yZTgoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZVJlbDgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3Rv
cmU4KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KGltbSwgZGVz
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUxNihzcmMsIGRlc3QpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgc3RvcmUxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IHN0b3JlUmVsMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAg
ICAgc3RvcmUxNihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2
KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMsIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHN0b3JlUmVsMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgc3RvcmUzMihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0
b3JlUmVsMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAg
ICBzdG9yZTMyKGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIC8vIFdlIHRha2UgdGhpcyB0
byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBzdG9yZXMuIFNvLCBpdCdz
IGEgbm8tb3Agb24geDg2LgorICAgIHZvaWQgc3RvcmVGZW5jZSgpCisgICAgeworICAgIH0KKwor
ICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5v
cm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBsb2FkRmVuY2Uo
KQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVj
dGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNl
bWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3QgcGF0Y2hhYmxl
SnVtcFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6cGF0Y2hhYmxl
SnVtcFNpemUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9p
bnRSb3VuZGluZygpCisgICAgeworICAgICAgICBpZiAoc19zc2U0XzFDaGVja1N0YXRlID09IENQ
VUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkKKyAgICAgICAgICAgIHVwZGF0ZUVheDFFY3hGbGFn
cygpOworICAgICAgICByZXR1cm4gc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0
ZTo6U2V0OworICAgIH0KKworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQVZYKCkKKyAgICB7Cisg
ICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlzdGVyaW91cyByZWdyZXNzaW9ucyBhbmQgdGhv
c2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAgIHsKKyAgICAg
ICAgaW50IGZsYWdzID0gMDsKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgICAgICBpbnQgY3B1SW5m
b1s0XTsKKyAgICAgICAgX19jcHVpZChjcHVJbmZvLCAweDEpOworICAgICAgICBmbGFncyA9IGNw
dUluZm9bMl07CisjZWxpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCisjaWYgQ1BVKFg4Nl82NCkK
KyAgICAgICAgYXNtICgKKyAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKKyAgICAgICAg
ICAgICJjcHVpZDsiCisgICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAgICAgICAgICAg
OiAiPWciIChmbGFncykKKyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVlYXgiLCAiJWVi
eCIsICIlZWN4IiwgIiVlZHgiCisgICAgICAgICAgICApOworI2Vsc2UKKyAgICAgICAgYXNtICgK
KyAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKKyAgICAgICAgICAgICJwdXNobCAlJWVi
eDsiCisgICAgICAgICAgICAiY3B1aWQ7IgorICAgICAgICAgICAgInBvcGwgJSVlYng7IgorICAg
ICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCisg
ICAgICAgICAgICA6CisgICAgICAgICAgICA6ICIlZWF4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAg
ICAgICAgICk7CisjZW5kaWYKICNlbmRpZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCiAgICAg
ICAgIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDE5KSkgPyBDUFVJRENoZWNr
U3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CiAgICAgICAgIHNfYXZ4Q2hlY2tT
dGF0ZSA9IChmbGFncyAmICgxIDw8IDI4KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlE
Q2hlY2tTdGF0ZTo6Q2xlYXI7CkBAIC0yODMxLDYgKzM5MzMsMTggQEAgcHJvdGVjdGVkOgogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8WDg2QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOwog
ICAgIH0KIAorICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihTdGF0dXND
b25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBj
YXNlIFN1Y2Nlc3M6CisgICAgICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25F
OworICAgICAgICBjYXNlIEZhaWx1cmU6CisgICAgICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVy
OjpDb25kaXRpb25ORTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25FOworICAgIH0K
KwogICAgIHZvaWQgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICNpZiBDUFUoWDg2KQpAQCAtMjkyNSw2ICs0MDM5LDM1IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoc2l6ZU9mUmVnaXN0ZXIpLCBkc3QpOwog
ICAgICAgICBzcmNJc05vblplcm8ubGluayh0aGlzKTsKICAgICB9CisgICAgCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCByZXN1bHQs
IGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0
LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgZnVuYygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6
OmVheCk7CisgICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgcmVzdWx0KTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgewor
ICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVuYygpOworICAgICAgICBzd2FwKGV4
cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3QgRnVuYyYg
ZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVy
czo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7Cisg
ICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAg
ICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAg
IH0KIAogcHJpdmF0ZToKICAgICAvLyBPbmx5IE1hY3JvQXNzZW1ibGVyWDg2IHNob3VsZCBiZSB1
c2luZyB0aGUgZm9sbG93aW5nIG1ldGhvZDsgU1NFMiBpcyBhbHdheXMgYXZhaWxhYmxlIG9uCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNjQsMTEgKzI2NCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQg
YWRkNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYWRkcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2Nh
bGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgYWRkNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJl
c3MgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDY0KFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9
CisKICAgICB2b2lkIGFkZDY0KEFic29sdXRlQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzcmMubV9wdHIpLCBzY3JhdGNoUmVn
aXN0ZXIoKSk7CkBAIC0zMDYsNiArMzE2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmFkZHFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OwogICAgIH0KIAorICAgIHZvaWQgYWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gMSkKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmluY3FfbShhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkcV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChU
cnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpA
QCAtMzQyLDExICszNjAsNDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX3Jy
KHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgYW5kNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3Qp
OworICAgIH0KKworICAgIHZvaWQgYW5kNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgYW5kNjQo
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIuYW5kcV9pcihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7CiAgICAgfQogCisgICAgdm9p
ZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hbmRxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pbShpbW0ubV92YWx1ZSwgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAg
dm9pZCBhbmQ2NChUcnVzdGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsK
ICAgICAgICAgaW50cHRyX3QgaW50VmFsdWUgPSBpbW0uYXNJbnRwdHIoKTsKQEAgLTU1MiwxMSAr
NjAwLDUxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVncV9yKGRlc3QpOwogICAg
IH0KIAorICAgIHZvaWQgbmVnNjQoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubmVncV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQg
bmVnNjQoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX20o
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CiAgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci5vcnFfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lk
IG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAg
IHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5vcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0Lmlu
ZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoQWRkcmVzcyBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KEJhc2VJbmRleCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9tcihz
cmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0K
KworICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5vcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0
LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9pbShpbW0ubV92YWx1ZSwg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQor
CiAgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAg
ICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKQpAQCAtNjE5LDE2ICs3MDcsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWJxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
ICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9pbShpbW0ubV92YWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwg
ZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNyYy5vZmZzZXQsIHNy
Yy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBz
dWI2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIuc3VicV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAg
IHZvaWQgc3ViNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3VicV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3Qu
aW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yNjQoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcnIo
c3JjLCBkZXN0KTsKQEAgLTY1MSw2ICs3NTQsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAg
dm9pZCB4b3I2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci54b3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5p
bmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChBZGRyZXNzIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9tcihzcmMu
b2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChCYXNlSW5k
ZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3Jx
X21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7Cisg
ICAgfQorCisgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0s
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pbShpbW0u
bV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNy
Y0Rlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54b3JxX2lyKGltbS5tX3ZhbHVlLCBz
cmNEZXN0KTsKQEAgLTY2Niw2ICs3OTQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5ub3RxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBub3Q2
NChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdHFfbShkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIGxvYWQ2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlLCBkZXN0KTsKQEAgLTcyNSw2ICs4NTgsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZxX2kzMm0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UpOwogICAgIH0KIAorICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVO
RF8zMl82NChpbW0ubV92YWx1ZSkpIHsKQEAgLTEyOTQsNyArMTQzMiwyNzUgQEAgcHVibGljOgog
ICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIo
KSksIG1hc2s4KTsKICAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBb
Jl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7IH0pOworICAgIH0KIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0
LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0K
KworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3Vs
dCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
YXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAg
IH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVy
LmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hB
dG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQor
CisgICAgdm9pZCBhdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM2
NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVz
cywgcmVzdWx0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJy
YW5jaEF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1
ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTNjQoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdW
YWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzY0
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWlj
UmVsYXhlZFdlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hBdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljQWRkNjQoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhZGQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2NChpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkNjQoUmVnaXN0
ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBhZGQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWI2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFuZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDY0KGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YW5kNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFuZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yNjQoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFRydXN0ZWRJbW0zMiBpbW0s
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBvcjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
T3I2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljT3I2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yNjQocmVnLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChUcnVzdGVkSW1tMzIg
aW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIHhvcjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljWG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjY0KGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9y
NjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChSZWdp
c3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIHhvcjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTmVnNjQoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBuZWc2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNOZWc2NChCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTm90NjQoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBub3Q2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNOb3Q2NChCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWGNoZ0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhh
ZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWGNoZ0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueGFkZHFfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnNjQo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnNjQo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbG9hZDY0KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgbG9hZEFjcTY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQ2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQo
UmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlNjQoc3Jj
LCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0KFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlNjQoc3JjLCBkZXN0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBzdG9yZVJlbDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAg
IHsKKyAgICAgICAgc3RvcmU2NChpbW0sIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHRy
dW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0dHNkMnNpcV9ycihzcmMsIGRlc3QpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShy
ZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTkwLDE2ICsxOTAsMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgT1BfQUREX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MDEsCiAg
ICAgICAgIE9QX0FERF9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDAzLAogICAgICAgICBP
UF9BRERfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgwNSwKKyAgICAgICAgT1BfT1JfRXZH
YiAgICAgICAgICAgICAgICAgICAgICA9IDB4MDgsCiAgICAgICAgIE9QX09SX0V2R3YgICAgICAg
ICAgICAgICAgICAgICAgPSAweDA5LAogICAgICAgICBPUF9PUl9HdkV2ICAgICAgICAgICAgICAg
ICAgICAgID0gMHgwQiwKICAgICAgICAgT1BfT1JfRUFYSXYgICAgICAgICAgICAgICAgICAgICA9
IDB4MEQsCiAgICAgICAgIE9QXzJCWVRFX0VTQ0FQRSAgICAgICAgICAgICAgICAgPSAweDBGLAor
ICAgICAgICBPUF9BTkRfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgyMCwKICAgICAgICAg
T1BfQU5EX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MjEsCiAgICAgICAgIE9QX0FORF9H
dkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDIzLAorICAgICAgICBPUF9TVUJfRXZHYiAgICAg
ICAgICAgICAgICAgICAgID0gMHgyOCwKICAgICAgICAgT1BfU1VCX0V2R3YgICAgICAgICAgICAg
ICAgICAgICA9IDB4MjksCiAgICAgICAgIE9QX1NVQl9HdkV2ICAgICAgICAgICAgICAgICAgICAg
PSAweDJCLAogICAgICAgICBPUF9TVUJfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgyRCwK
ICAgICAgICAgUFJFX1BSRURJQ1RfQlJBTkNIX05PVF9UQUtFTiAgICA9IDB4MkUsCisgICAgICAg
IE9QX1hPUl9FdkdiICAgICAgICAgICAgICAgICAgICAgPSAweDMwLAogICAgICAgICBPUF9YT1Jf
RXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgzMSwKICAgICAgICAgT1BfWE9SX0d2RXYgICAg
ICAgICAgICAgICAgICAgICA9IDB4MzMsCiAgICAgICAgIE9QX1hPUl9FQVhJdiAgICAgICAgICAg
ICAgICAgICAgPSAweDM1LApAQCAtMjIzLDYgKzIyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9Q
X0dST1VQMV9FdkliICAgICAgICAgICAgICAgICAgPSAweDgzLAogICAgICAgICBPUF9URVNUX0Vi
R2IgICAgICAgICAgICAgICAgICAgID0gMHg4NCwKICAgICAgICAgT1BfVEVTVF9Fdkd2ICAgICAg
ICAgICAgICAgICAgICA9IDB4ODUsCisgICAgICAgIE9QX1hDSEdfRXZHYiAgICAgICAgICAgICAg
ICAgICAgPSAweDg2LAogICAgICAgICBPUF9YQ0hHX0V2R3YgICAgICAgICAgICAgICAgICAgID0g
MHg4NywKICAgICAgICAgT1BfTU9WX0ViR2IgICAgICAgICAgICAgICAgICAgICA9IDB4ODgsCiAg
ICAgICAgIE9QX01PVl9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDg5LApAQCAtMjUyLDYg
KzI1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIFBSRV9TU0VfRjIgICAgICAgICAgICAgICAgICAg
ICAgPSAweEYyLAogICAgICAgICBQUkVfU1NFX0YzICAgICAgICAgICAgICAgICAgICAgID0gMHhG
MywKICAgICAgICAgT1BfSExUICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4RjQsCisgICAg
ICAgIE9QX0dST1VQM19FYiAgICAgICAgICAgICAgICAgICAgPSAweEY2LAogICAgICAgICBPUF9H
Uk9VUDNfRWJJYiAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAgT1BfR1JPVVAzX0V2
ICAgICAgICAgICAgICAgICAgICA9IDB4RjcsCiAgICAgICAgIE9QX0dST1VQM19Fdkl6ICAgICAg
ICAgICAgICAgICAgPSAweEY3LCAvLyBPUF9HUk9VUDNfRXYgaGFzIGFuIGltbWVkaWF0ZSwgd2hl
biBpbnN0cnVjdGlvbiBpcyBhIHRlc3QuIApAQCAtMjkwLDYgKzI5Niw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIE9QX1NFVENDICAgICAgICAgICAgPSAweDkwLAogICAgICAgICBPUDJfM0JZVEVfRVND
QVBFX0FFID0gMHhBRSwKICAgICAgICAgT1AyX0lNVUxfR3ZFdiAgICAgICA9IDB4QUYsCisgICAg
ICAgIE9QMl9DTVBYQ0hHYiAgICAgICAgPSAweEIwLAorICAgICAgICBPUDJfQ01QWENIRyAgICAg
ICAgID0gMHhCMSwKICAgICAgICAgT1AyX01PVlpYX0d2RWIgICAgICA9IDB4QjYsCiAgICAgICAg
IE9QMl9CU0YgICAgICAgICAgICAgPSAweEJDLAogICAgICAgICBPUDJfVFpDTlQgICAgICAgICAg
ID0gMHhCQywKQEAgLTI5OCw2ICszMDYsOCBAQCBwcml2YXRlOgogICAgICAgICBPUDJfTU9WU1hf
R3ZFYiAgICAgID0gMHhCRSwKICAgICAgICAgT1AyX01PVlpYX0d2RXcgICAgICA9IDB4QjcsCiAg
ICAgICAgIE9QMl9NT1ZTWF9HdkV3ICAgICAgPSAweEJGLAorICAgICAgICBPUDJfWEFERGIgICAg
ICAgICAgID0gMHhDMCwKKyAgICAgICAgT1AyX1hBREQgICAgICAgICAgICA9IDB4QzEsCiAgICAg
ICAgIE9QMl9QRVhUUldfR2RVZEliICAgPSAweEM1LAogICAgICAgICBPUDJfUFNMTFFfVWRxSWIg
ICAgID0gMHg3MywKICAgICAgICAgT1AyX1BTUkxRX1VkcUliICAgICA9IDB4NzMsCkBAIC00NDAs
NiArNDUwLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FE
RF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgYWRkbF9t
cihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAg
ICAKICNpZiAhQ1BVKFg4Nl82NCkKICAgICB2b2lkIGFkZGxfbXIoY29uc3Qgdm9pZCogYWRkciwg
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNTYyLDExICs1NzcsMjEgQEAgcHVibGljOgogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZz
ZXQpOwogICAgIH0KIAorICAgIHZvaWQgYWRkcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhZGRxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgYWRkcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhZGRxX2lyKGludCBpbW0sIFJlZ2lzdGVy
SUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsK
QEAgLTU5MSw2ICs2MTYsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYWRkcV9pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAx
X09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BREQsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAjZWxzZQogICAgIHZvaWQgYWRkbF9pbShpbnQg
aW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKQEAgLTYxNCwxMSArNjUwLDQzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3QsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBhbmRsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhbmRsX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGFuZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnBy
ZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5kbF9ybShzcmMsIG9mZnNldCwgYmFz
ZSk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5k
bF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kYl9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9pcihpbnQg
aW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CkBAIC02NDEsNiArNzA5LDUzIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KIAorICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJ
eiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgYW5kd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmR3X2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFuZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9FYkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBH
Uk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZv
aWQgYW5kcV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNjU3
LDYgKzc3Miw0OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUz
MihpbW0pOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBhbmRxX21yKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBhbmRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JP
VVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAj
ZWxzZQogICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsK
QEAgLTcwMyw2ICs4NjAsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfR1JPVVA1X0V2LCBHUk9VUDFfT1BfQURELCBiYXNlLCBvZmZzZXQpOwog
ICAgIH0KKworICAgIHZvaWQgaW5jcV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfR1JPVVA1X0V2LCBHUk9VUDFfT1BfQURELCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQogI2VuZGlmIC8vIENQVShYODZfNjQpCiAKICAgICB2b2lkIG5lZ2xf
cihSZWdpc3RlcklEIGRzdCkKQEAgLTcxNSw2ICs4NzcsMTYgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVH
LCBkc3QpOwogICAgIH0KKworICAgIHZvaWQgbmVncV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19F
diwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3Ff
bShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19Fdiwg
R1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRp
ZgogCiAgICAgdm9pZCBuZWdsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQpAQCAtNzIy
LDYgKzg5NCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDNfRXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9p
ZCBuZWdsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAz
X0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CisgICAgdm9pZCBuZWd3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWds
X20ob2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3dfbShpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVnbF9t
KG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2JfbShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOworICAg
IH0KKworICAgIHZvaWQgbmVnYl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKwogICAgIHZvaWQgbm90bF9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwg
ZHN0KTsKQEAgLTczMiw2ICs5MzEsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgbm90bF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKworICAgIHZvaWQgbm90d19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgbm90bF9tKG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3R3X20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIG5vdGxfbShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGJfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgbm90
cV9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTc0Miw2ICs5NjgsMTEgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9V
UDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgbm90cV9tKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNf
T1BfTk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAg
ICB2b2lkIG9ybF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC03NTQsMTEg
Kzk4NSw0MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9H
dkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBvcmxfbXIoaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2
RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQg
b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAg
ewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBvcmxfcm0oc3JjLCBvZmZz
ZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAg
ICAgb3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIG9ybF9pcihpbnQg
aW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CkBAIC03ODQsMTIgKzEwNDcsMTAxIEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAorICAgIHZvaWQgb3JsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENB
Tl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgb3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9V
UDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBvcndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0Vi
SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgb3JiX2ltKGludCBpbW0sIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1Bf
T1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBvcnFfcnIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQg
b3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
R1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIHZvaWQgb3JxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTgzMSwxMSArMTE4Myw0
MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwg
ZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYs
IGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3Vi
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9m
ZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgc3Vid19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBz
cmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1Ymxf
aXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzhfMzIoaW1tKSkgewpAQCAtODYxLDYgKzEyNDUsNTMgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgfQogCisgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAg
fQorCisgICAgdm9pZCBzdWJ3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1Yndf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9T
VUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1t
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQp
CiAgICAgdm9pZCBzdWJxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7
CkBAIC04NzIsMTEgKzEzMDMsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZv
aWQgc3VicV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCiAgICAgdm9pZCBzdWJxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CiAgICAgdm9pZCBzdWJxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTkwMSw2ICsxMzQyLDE3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICB2b2lkIHN1YnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9
CisgICAgfQogI2Vsc2UKICAgICB2b2lkIHN1YmxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRk
cikKICAgICB7CkBAIC05MjQsMTEgKzEzNzYsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfWE9SX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAK
KyAgICB2b2lkIHhvcmxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKICAgICB2b2lkIHhvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9y
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KwogICAgIHZvaWQgeG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTQw
LDYgKzE0MDIsNzUgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB4b3Js
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGlt
bSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwg
R1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3Jj
LCBvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcndf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9Y
T1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1t
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1hPUl9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAg
dm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCB4b3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAx
X09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX2lyKGludCBpbW0sIFJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGlt
bSkpIHsKQEAgLTk3NCwxMSArMTUwNSw0NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09Q
X1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICB2b2lkIHhvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorICAg
IAogICAgIHZvaWQgeG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2
R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcnFfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9S
X0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2LCBkZXN0
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYs
IGRlc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAg
IHZvaWQgbHpjbnRfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTU4Niwx
MSArMjE1MywzOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfWENIR19Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnYl9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgeGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4
Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9Y
Q0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAg
IHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3Ys
IHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogI2lmIENQVShYODZf
NjQpCiAgICAgdm9pZCB4Y2hncV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewpAQCAtMTYwNiw2ICsyMjAwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KKworICAgIHZvaWQgeGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgbW92bF9ycihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNzMxLDYgKzIzMzAsMjAgQEAgcHVibGljOgog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG1vdndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAxMV9Fdkl6LCBHUk9VUDExX01PViwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG1vdndfaW0oaW50
IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SXosIEdST1VQ
MTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZsX0VBWG0oY29uc3Qgdm9p
ZCogYWRkcikKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfT3ZF
QVgpOwpAQCAtMTgwMCw2ICsyNDEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMzIoaW1tKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdnFfaTMybShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMTFfRXZJeiwg
R1JPVVAxMV9NT1YsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICB9CisKICAgICB2b2lkIG1vdnFfaTY0cihpbnQ2
NF90IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9NT1ZfRUFYSXYsIGRzdCk7CkBAIC0yNzc1LDYgKzMzOTQsOTAgQEAgcHVibGlj
OgogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX0xPQ0spOwogICAgIH0KICAgICAKKyAg
ICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hH
Yiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgo
T1AyX0NNUFhDSEdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21w
eGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
Y21weGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9DTVBYQ0hHLCBzcmMs
IGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3Ffcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0NN
UFhDSEcsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHhhZGRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQUREYiwgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRiX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX1hBRERi
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCB4YWRkd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3
b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgeGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFk
ZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0
ZU9wNjQoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KyAgICAKICAgICB2b2lkIG1mZW5jZSgpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci50aHJl
ZUJ5dGVPcChPUDJfM0JZVEVfRVNDQVBFX0FFLCBPUDNfTUZFTkNFKTsKQEAgLTM3NTEsNiArNDQ1
NCwyNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0oZ3JvdXBP
cCwgcm0pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNv
ZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkKKyAgICAg
ICAgeworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1f
YnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4
KHJlZywgYmFzZSksIHJlZywgMCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVu
Y2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNo
ZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2Us
IG9mZnNldCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9w
Y29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUsIGludCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUlu
c3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0
ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcpIHx8IHJlZ1JlcXVpcmVzUmV4KGlu
ZGV4LCBiYXNlKSwgcmVnLCBpbmRleCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0
ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIEltbWVk
aWF0ZXM6CiAgICAgICAgIC8vCiAgICAgICAgIC8vIEFuIGltbWVkYWl0ZSBzaG91bGQgYmUgYXBw
ZW5kZWQgd2hlcmUgYXBwcm9wcmlhdGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNBdG9taWNW
YWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7CisKK0F0b21pY1ZhbHVlOjp+QXRvbWljVmFsdWUoKQoreworfQorCitXaWR0aCBBdG9t
aWNWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3dpZHRoOworfQor
Cit2b2lkIEF0b21pY1ZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0
cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChjb21tYSwgIndpZHRoID0gIiwgbV93
aWR0aCk7CisgICAgCisgICAgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKGNvbW1hLCBvdXQpOworfQor
CitWYWx1ZSogQXRvbWljVmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5l
dyBBdG9taWNWYWx1ZSgqdGhpcyk7Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5k
IGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFsdWUq
IHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5j
ZVJhbmdlKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgb3BlcmFuZC0+
dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UsIG9wZXJhbmQsIHBvaW50
ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIEFTU0VSVChiZXN0VHlwZShHUCwgb3Bl
cmF0aW9uV2lkdGgoKSkgPT0gb3BlcmF0aW9uVHlwZSgpKTsKKyAgICAKKyAgICBzd2l0Y2ggKGtp
bmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNY
Y2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoK
KyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4s
IFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1
ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZl
bmNlUmFuZ2UpCisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBraW5kLm9w
Y29kZSgpID09IEF0b21pY1dlYWtDQVMgPyBJbnQzMiA6IGV4cGVjdGVkVmFsdWUtPnR5cGUoKSwg
b3JpZ2luLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlLCBleHBlY3RlZFZhbHVlLCBuZXdWYWx1
ZSwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7CisgICAgQVNTRVJUKGJlc3RUeXBl
KEdQLCBvcGVyYXRpb25XaWR0aCgpKSA9PSBvcGVyYXRpb25UeXBlKCkpOworCisgICAgc3dpdGNo
IChraW5kLm9wY29kZSgpKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRv
bWljU3Ryb25nQ0FTOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwor
CisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNBdG9taWNWYWx1ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNs
dWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBBdG9taWNWYWx1ZSA6IHB1YmxpYyBNZW1vcnlWYWx1ZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCisgICAgeworICAgICAg
ICByZXR1cm4gaXNBdG9taWMoa2luZC5vcGNvZGUoKSk7CisgICAgfQorICAgIAorICAgIH5BdG9t
aWNWYWx1ZSgpOworICAgIAorICAgIFR5cGUgb3BlcmF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IGNoaWxkKDApLT50eXBlKCk7IH0KKyAgICAKKyAgICBXaWR0aCBvcGVyYXRpb25XaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICAKKyAgICAvLyBTeW5vbnltIGZvciBvcGVyYXRp
b25XaWR0aCgpLCBpZiB5b3UncmUgYWNjZXNzaW5nIHZpYSBNZW1vcnlWYWx1ZS4KKyAgICBXaWR0
aCBhY2Nlc3NXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJvdGVjdGVkOgorICAgIHZv
aWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsK
KyAgICAKKyAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCitwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgCisgICAgQXRvbWljVmFsdWUo
S2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQz
Ml90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBS
YW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQXRvbWljVmFs
dWUoS2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdW
YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdl
ID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRv
cCgpKTsKKyAgICAKKyAgICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0
MCw3IEBAIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogY2xhc3MgSW5zZXJ0aW9uU2V0OwogY2xh
c3MgUHJvY2VkdXJlOwogY2xhc3MgVmFsdWU7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OwogCiBjbGFzcyBCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShCYXNpY0Jsb2NrKTsKQEAgLTE1OCw2ICsxNTksNyBAQCBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgSW5z
ZXJ0aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWU+IGZyaWVuZCBjbGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgCiAgICAg
Ly8gSW5zdGFudGlhdGUgdmlhIFByb2NlZHVyZS4KICAgICBCYXNpY0Jsb2NrKHVuc2lnbmVkIGlu
ZGV4LCBkb3VibGUgZnJlcXVlbmN5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNiwzNSArMzYsMTMgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBCbG9j
a0luc2VydGlvblNldDo6QmxvY2tJbnNlcnRpb25TZXQoUHJvY2VkdXJlICZwcm9jKQotICAgIDog
bV9wcm9jKHByb2MpCisgICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQocHJvYy5tX2Jsb2Nr
cykKKyAgICAsIG1fcHJvYyhwcm9jKQogewogfQogCiBCbG9ja0luc2VydGlvblNldDo6fkJsb2Nr
SW5zZXJ0aW9uU2V0KCkgeyB9CiAKLXZvaWQgQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydChCbG9j
a0luc2VydGlvbiYmIGluc2VydGlvbikKLXsKLSAgICBtX2luc2VydGlvbnMuYXBwZW5kKFdURk1v
dmUoaW5zZXJ0aW9uKSk7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNl
cnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEJhc2ljQmxvY2s+IGJsb2NrKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kp
KTsKLSAgICBCYXNpY0Jsb2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsKLSAgICBpbnNlcnQoQmxv
Y2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2spKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEJlZm9yZShCYXNpY0Js
b2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChiZWZv
cmUtPmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUt
PmZyZXF1ZW5jeSgpKTsKLX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2Vy
dEFmdGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHJldHVy
biBpbnNlcnQoYWZ0ZXItPmluZGV4KCkgKyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJl
cXVlbmN5IDogYWZ0ZXItPmZyZXF1ZW5jeSgpKTsKLX0KLQogQmFzaWNCbG9jayogQmxvY2tJbnNl
cnRpb25TZXQ6OnNwbGl0Rm9yd2FyZCgKICAgICBCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQm
IHZhbHVlSW5kZXgsIEluc2VydGlvblNldCogaW5zZXJ0aW9uU2V0LCBkb3VibGUgZnJlcXVlbmN5
KQogewpAQCAtMTAyLDMyICs4MCw2IEBAIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0Ojpz
cGxpdEZvcncKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEJsb2NrSW5zZXJ0aW9uU2V0
OjpleGVjdXRlKCkKLXsKLSAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIAotICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2
ZW4gdG8gdXMgaW4gYW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCi0g
ICAgLy8gcnVubmluZyBXVEY6OmV4ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIg
YSBzdGFibGUgc29ydCBhbmQgd2Ugd2FudCBpdCB0byBiZQotICAgIC8vIGZhc3QsIHNvIHdlIHVz
ZSBidWJibGUgc29ydC4KLSAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2lu
c2VydGlvbnMuZW5kKCkpOwotCi0gICAgZXhlY3V0ZUluc2VydGlvbnMobV9wcm9jLm1fYmxvY2tz
LCBtX2luc2VydGlvbnMpOwotICAgIAotICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBU
aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncwotICAgIC8vIGhlYWx0aHkgdG8g
a2VlcCB0aGUgYmxvY2sgbGlzdCBmcm9tIGdyb3dpbmcuCi0gICAgbV9wcm9jLm1fYmxvY2tzLnJl
bW92ZUFsbE1hdGNoaW5nKAotICAgICAgICBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2Nr
PiYgYmxvY2tQdHIpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuICFibG9ja1B0cjsKLSAg
ICAgICAgfSk7Ci0gICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJsb2NrcyBrbm93IHRo
ZWlyIG5ldyBpbmRpY2VzLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Byb2MubV9i
bG9ja3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcHJvYy5tX2Jsb2Nrc1tpXS0+bV9pbmRleCA9
IGk7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
MwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJC
M0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAj
aW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM1
LDI2ICszNiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgSW5z
ZXJ0aW9uU2V0OwogCi10eXBlZGVmIFdURjo6SW5zZXJ0aW9uPHN0ZDo6dW5pcXVlX3B0cjxCYXNp
Y0Jsb2NrPj4gQmxvY2tJbnNlcnRpb247Cit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNl
dDxCYXNpY0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CiAKLWNsYXNzIEJs
b2NrSW5zZXJ0aW9uU2V0IHsKK2NsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVy
aWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPiB7CiBwdWJsaWM6CiAgICAgQmxvY2tJbnNl
cnRpb25TZXQoUHJvY2VkdXJlJik7CiAgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7CiAgICAgCi0g
ICAgdm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJik7Ci0KLSAgICAvLyBJbnNlcnQgYSBuZXcg
YmxvY2sgYXQgYSBnaXZlbiBpbmRleC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnQodW5zaWduZWQg
aW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBuZXcg
YmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0
aGUgZnJlcXVlbmN5Ci0gICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8g
anVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxvY2suIFRoYXQncwotICAg
IC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUo
QmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAgICAvLyBJ
bnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KLSAgICBCYXNpY0Jsb2Nr
KiBpbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
OwotCiAgICAgLy8gQSBoZWxwZXIgdG8gc3BsaXQgYSBibG9jayB3aGVuIGZvcndhcmQgaXRlcmF0
aW5nIG92ZXIgaXQuIEl0IGNyZWF0ZXMgYSBuZXcgYmxvY2sgdG8gaG9sZAogICAgIC8vIGV2ZXJ5
dGhpbmcgYmVmb3JlIHRoZSBpbnN0cnVjdGlvbiBhdCB2YWx1ZUluZGV4LiBUaGUgY3VycmVudCBi
bG9jayBpcyBsZWZ0IHdpdGgKICAgICAvLyBldmVyeXRoaW5nIGF0IGFuZCBhZnRlciB2YWx1ZUlu
ZGV4LiBJZiB0aGUgb3B0aW9uYWwgSW5zZXJ0aW9uU2V0IGlzIHByb3ZpZGVkLCBpdCB3aWxsIGdl
dApAQCAtODAsMTIgKzY4LDkgQEAgcHVibGljOgogICAgIEJhc2ljQmxvY2sqIHNwbGl0Rm9yd2Fy
ZCgKICAgICAgICAgQmFzaWNCbG9jayosIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25T
ZXQqID0gbnVsbHB0ciwKICAgICAgICAgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotICAgIAot
ICAgIGJvb2wgZXhlY3V0ZSgpOwogCiBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwot
ICAgIFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOwogfTsKIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZl
Y3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3Rz
LmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZm
ZWN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Miw3ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6
aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAgICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0
ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIu
d3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIucmVhZHMpCi0gICAgICAg
IHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7CisgICAgICAgIHx8IHJlYWRzLm92ZXJs
YXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZlbmNlICYmIG90aGVyLmZlbmNlKTsKIH0K
IAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApA
QCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYg
CiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhlci53cml0ZXNQaW5uZWQKICAgICAgICAg
JiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5uZWQKICAgICAgICAgJiYgd3JpdGVzID09
IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkczsKKyAgICAgICAg
JiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7
CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29u
c3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVjdHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlc1Bpbm5lZCIpOwogICAgIGlm
IChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsK
KyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkZlbmNlIik7CiAgICAg
aWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7
CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAko
cmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsNiArNzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBi
b29sIHJlYWRzUGlubmVkIHsgZmFsc2UgfTsKICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNl
IH07CisgICAgCisgICAgLy8gTWVtb3J5IGZlbmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3Vu
ZCBlYWNoIG90aGVyIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2Vk
CisgICAgLy8gaWYgdGhlIG9wZXJhdGlvbiBpcyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZl
bmNlIHsgZmFsc2UgfTsKIAogICAgIEhlYXBSYW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJl
YWRzOwpAQCAtODksNiArOTMsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5y
ZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRy
dWU7CiAgICAgICAgIHJlc3VsdC53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQu
ZmVuY2UgPSB0cnVlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcg
KzEwOCw3IEBAIHN0cnVjdCBFZmZlY3RzIHsKIAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3Jp
dGVzTG9jYWxTdGF0ZSB8fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4g
dGVybWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8
fCB3cml0ZXNQaW5uZWQgfHwgZmVuY2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHJlb3JkZXJpbmcgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdv
dWxkIGNoYW5nZSBwcm9ncmFtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGlt
aW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCShyZXZpc2lv
biAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25T
dWJleHByZXNzaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0cnVjdCBJ
bXB1cmVCbG9ja0RhdGEgewogCiAgICAgUmFuZ2VTZXQ8SGVhcFJhbmdlPiByZWFkczsgLy8gVGhp
cyBvbmx5IGdldHMgdXNlZCBmb3IgZm9yd2FyZCBzdG9yZSBlbGltaW5hdGlvbi4KICAgICBSYW5n
ZVNldDxIZWFwUmFuZ2U+IHdyaXRlczsgLy8gVGhpcyBnZXRzIHVzZWQgZm9yIGJvdGggbG9hZCBh
bmQgc3RvcmUgZWxpbWluYXRpb24uCisgICAgYm9vbCBmZW5jZTsKIAogICAgIE1lbW9yeVZhbHVl
TWFwIHN0b3Jlc0F0SGVhZDsKICAgICBNZW1vcnlWYWx1ZU1hcCBtZW1vcnlWYWx1ZXNBdFRhaWw7
CkBAIC0xNzQsMTIgKzE3NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaWYgKG1lbW9yeSAmJiBtZW1vcnktPmlzU3RvcmUoKQogICAgICAgICAgICAgICAg
ICAgICAmJiAhZGF0YS5yZWFkcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCi0gICAgICAgICAg
ICAgICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpKQorICAg
ICAgICAgICAgICAgICAgICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgp
KQorICAgICAgICAgICAgICAgICAgICAmJiAoIWRhdGEuZmVuY2UgfHwgIW1lbW9yeS0+aGFzRmVu
Y2UoKSkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3RvcmVzQXRIZWFkLmFkZChtZW1vcnkp
OwogICAgICAgICAgICAgICAgIGRhdGEucmVhZHMuYWRkKGVmZmVjdHMucmVhZHMpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKEhlYXBSYW5nZSB3cml0ZXMgPSBlZmZlY3RzLndyaXRlcykKICAgICAg
ICAgICAgICAgICAgICAgY2xvYmJlcihkYXRhLCB3cml0ZXMpOworICAgICAgICAgICAgICAgIGRh
dGEuZmVuY2UgfD0gZWZmZWN0cy5mZW5jZTsKIAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkp
CiAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkp
OwpAQCAtNDQ1LDggKzQ0OCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgZGF0YUxvZygiQmFkIG1lbW9yeSB2YWx1ZTogIiwgZGVlcER1bXAo
bV9wcm9jLCBtX3ZhbHVlKSwgIlxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC00Nzgs
NiArNDc5LDkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAg
Ym9vbCBmaW5kU3RvcmVBZnRlckNsb2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBj
b25zdCBGaWx0ZXImIGZpbHRlcikKICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCiAgICAgICAgIC8vIFdlIGNhbiBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJk
IHBhdGggaGl0cyBhIHN0b3JlIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAv
LyBoaXR0aW5nIGFueSBvcGVyYXRpb24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2Vh
cmNoIHNlZW1zIGxpa2UgaXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGlu
IHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRp
YXRlbHkgaGl0IGFuIApAQCAtNjE0LDYgKzYxOCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dh
cmQgZm9yICIsICpwdHIsICIuLi5cbiIpOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUt
PmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2Vz
LlxuIik7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIAogICAg
ICAgICBpZiAoTWVtb3J5VmFsdWUqIG1hdGNoID0gbV9kYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5m
aW5kKHB0ciwgZmlsdGVyKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTMyNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiQjNMb3dlclRvQWlyLmgiCiAjaW5jbHVk
ZSAiQjNNb3ZlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKKyNpbmNsdWRl
ICJCM1B1cmVDU0UuaCIKICNpbmNsdWRlICJCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCIKICNpbmNs
dWRlICJCM1JlZHVjZVN0cmVuZ3RoLmgiCiAjaW5jbHVkZSAiQjNUaW1pbmdTY29wZS5oIgpAQCAt
OTIsNiArOTMsNyBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsCiAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MDcK
ICAgICB9CiAKKyAgICAvLyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgogICAgIGxv
d2VyTWFjcm9zKHByb2NlZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiUHVyZU5hTi5oIgorI2luY2x1
ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2Ns
YXNzIEluc2VydGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9jaz4KK2NsYXNz
IEdlbmVyaWNCbG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBXVEY6Oklu
c2VydGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOworICAg
IAorICAgIEdlbmVyaWNCbG9ja0luc2VydGlvblNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJh
c2ljQmxvY2s+PiYgYmxvY2tzKQorICAgICAgICA6IG1fYmxvY2tzKGJsb2NrcykKKyAgICB7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5zZXJ0aW9uKQor
ICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOwor
ICAgIH0KKworICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGluZGV4LgorICAg
IEJhc2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSA9IFBO
YU4pCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3
IEJhc2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOworICAgICAgICBCYXNpY0Jsb2NrKiBy
ZXN1bHQgPSBibG9jay5nZXQoKTsKKyAgICAgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4
LCBXVEZNb3ZlKGJsb2NrKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAg
IC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1YWxseSB5
b3Ugd2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5CisgICAgLy8gYXJndW1lbnQuIFBhc3Npbmcg
UE5hTiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScg
YmxvY2suIFRoYXQncworICAgIC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KKyAgICBCYXNpY0Js
b2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5ID0g
UE5hTikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVx
dWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7Cisg
ICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxvY2su
CisgICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBm
cmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChhZnRlci0+aW5k
ZXgoKSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBhZnRlci0+ZnJl
cXVlbmN5KCkpOworICAgIH0KKworICAgIGJvb2wgZXhlY3V0ZSgpCisgICAgeworICAgICAgICBp
ZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgCisgICAgICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMg
aW4gYW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCisgICAgICAgIC8v
IHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3Rh
YmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKKyAgICAgICAgLy8gZmFzdCwgc28gd2UgdXNl
IGJ1YmJsZSBzb3J0LgorICAgICAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBt
X2luc2VydGlvbnMuZW5kKCkpOworICAgICAgICAKKyAgICAgICAgZXhlY3V0ZUluc2VydGlvbnMo
bV9ibG9ja3MsIG1faW5zZXJ0aW9ucyk7CisgICAgICAgIAorICAgICAgICAvLyBQcnVuZSBvdXQg
ZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MKKyAg
ICAgICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KKyAg
ICAgICAgbV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAgICBbJl0gKHN0ZDo6
dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+IGJvb2wgeworICAgICAgICAgICAg
ICAgIHJldHVybiAhYmxvY2tQdHI7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgbV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOworICAgICAgICAKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
QmFzaWNCbG9jaz4+JiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1f
aW5zZXJ0aW9uczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8g
RU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5n
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5o
CShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFu
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdlIG9wZXJhdG9y
fChjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEhl
YXBSYW5nZSgKKyAgICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1fYmVnaW4pLAor
ICAgICAgICAgICAgc3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAgfQorICAgIAog
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1f
ZW5kOyB9CiAKICAgICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkocmV2
aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJbnNlcnRpb25T
ZXQ6Omluc2VydEJvdHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9tKGluZGV4LCBs
aWtlVmFsdWUtPm9yaWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1ZhbHVlKiBJbnNl
cnRpb25TZXQ6Omluc2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVlKQoreworICAg
IHJldHVybiBpbnNlcnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFsdWUpKTsKK30K
Kwogdm9pZCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAg
YnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShyZXZpc2lvbiAy
MTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogCiAgICAgVmFsdWUqIGluc2Vy
dEJvdHRvbShzaXplX3QgaW5kZXgsIE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGluc2VydEJv
dHRvbShzaXplX3QgaW5kZXgsIFZhbHVlKik7CisgICAgCisgICAgVmFsdWUqIGluc2VydENsb25l
KHNpemVfdCBpbmRleCwgVmFsdWUqKTsKIAogICAgIHZvaWQgZXhlY3V0ZShCYXNpY0Jsb2NrKik7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTGVnYWxpemVN
ZW1vcnlPZmZzZXRzLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIs
MTUgKzUyLDMwIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFpc0FSTTY0KCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKKyAgICAgICAgLy8gRklYTUU6IFBlcmhhcHMgdGhpcyBzaG91bGQgYmUgbW92
ZWQgdG8gbG93ZXJNYWNyb3MsIGFuZCBxdWlya3MgbW9kZSBjYW4gaW1wb3NlIHRoZSByZXF1aXJl
bWVudAorICAgICAgICAvLyB0aGF0IHRoZSBvZmZzZXQgaXMgbGVnYWwuIEJ1dCBmb3Igbm93IHRo
aXMgaXMgc29ydCBvZiBPSyBiZWNhdXNlIHdlIHJ1biBwdXJlQ1NFIAorICAgICAgICAKICAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbmRleCkgewogICAg
ICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnlWYWx1ZSA9IGJsb2NrLT5hdChpbmRleCkt
PmFzPE1lbW9yeVZhbHVlPigpOwogICAgICAgICAgICAgICAgIGlmICghbWVtb3J5VmFsdWUpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgYm9vbCBuZWVkVG9SZWZhY3Rvck9mZnNldCA9IGZhbHNlOworICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGludDMyX3Qgb2Zmc2V0ID0gbWVtb3J5VmFsdWUtPm9mZnNl
dCgpOwotICAgICAgICAgICAgICAgIFdpZHRoIHdpZHRoID0gbWVtb3J5VmFsdWUtPmFjY2Vzc1dp
ZHRoKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFBaXI6OkFyZzo6aXNWYWxpZEFkZHJGb3JtKG9m
ZnNldCwgd2lkdGgpKSB7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gRXhv
dGljIG1lbW9yeSBhY2Nlc3Mgb3BlcmF0aW9ucyBjYW5ub3QgaGF2ZSBhbnkgb2Zmc2V0LgorICAg
ICAgICAgICAgICAgIGlmIChvZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgJiYgKG1lbW9yeVZh
bHVlLT5pc0ZlbmNlKCkgfHwgaXNBdG9taWMobWVtb3J5VmFsdWUtPm9wY29kZSgpKSkpCisgICAg
ICAgICAgICAgICAgICAgIG5lZWRUb1JlZmFjdG9yT2Zmc2V0ID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAvLyBUaGUgcmVtYWluaW5nIG9wZXJhdGlvbnMgYWNjZXB0
IGFkZHJlc3NlcyB0aGF0IGhhdmUgdG8gb2JleSBhIGNlcnRhaW4gZm9ybS4KKyAgICAgICAgICAg
ICAgICBXaWR0aCB3aWR0aCA9IG1lbW9yeVZhbHVlLT5sb2FkU3RvcmVXaWR0aCgpOworICAgICAg
ICAgICAgICAgIGlmICghQWlyOjpBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQsIHdpZHRoKSkK
KyAgICAgICAgICAgICAgICAgICAgbmVlZFRvUmVmYWN0b3JPZmZzZXQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChuZWVkVG9SZWZhY3Rvck9mZnNldCkgewog
ICAgICAgICAgICAgICAgICAgICBWYWx1ZSogYmFzZSA9IG1lbW9yeVZhbHVlLT5sYXN0Q2hpbGQo
KTsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG9mZnNldFZhbHVlID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0SW50Q29uc3RhbnQoaW5kZXgsIG1lbW9yeVZhbHVlLT5vcmlnaW4oKSwgcG9pbnRl
clR5cGUoKSwgb2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc29sdmVkQWRk
cmVzcyA9IG1fcHJvYy5hZGQ8VmFsdWU+KEFkZCwgbWVtb3J5VmFsdWUtPm9yaWdpbigpLCBiYXNl
LCBvZmZzZXRWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1h
Y3Jvcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJN
YWNyb3MuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMSArMjksMTMgQEAKICNp
ZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9j
a0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAi
QjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDYXNlQ29sbGVjdGlvbklubGluZXMuaCIKICNp
bmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKKyNpbmNsdWRlICJCM0ZlbmNlVmFsdWUuaCIKICNp
bmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVl
LmgiCiAjaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKQEAgLTQyLDYgKzQ0LDcgQEAKICNp
bmNsdWRlICJCM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzU3dpdGNo
VmFsdWUuaCIKICNpbmNsdWRlICJCM1Vwc2lsb25WYWx1ZS5oIgorI2luY2x1ZGUgIkIzVXNlQ291
bnRzLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBl
cnMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCkBAIC01OCwxMSArNjEsMTQgQEAgcHVibGlj
OgogICAgICAgICA6IG1fcHJvYyhwcm9jKQogICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQo
cHJvYykKICAgICAgICAgLCBtX2luc2VydGlvblNldChwcm9jKQorICAgICAgICAsIG1fdXNlQ291
bnRzKHByb2MpCiAgICAgewogICAgIH0KIAogICAgIGJvb2wgcnVuKCkKICAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFtX3Byb2MuaGFzUXVpcmtzKCkpOworICAgICAgICAKICAgICAgICAg
Zm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewogICAgICAgICAgICAgbV9ibG9jayA9
IGJsb2NrOwogICAgICAgICAgICAgcHJvY2Vzc0N1cnJlbnRCbG9jaygpOwpAQCAtNzIsNiArNzgs
MTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9wcm9jLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAg
ICAgICAgICAgICBtX3Byb2MuaW52YWxpZGF0ZUNGRygpOwogICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHdlJ3ZlIAorICAgICAgICBtX3Byb2Muc2V0
SGFzUXVpcmtzKHRydWUpOworICAgICAgICAKICAgICAgICAgcmV0dXJuIG1fY2hhbmdlZDsKICAg
ICB9CiAgICAgCkBAIC0xODUsNyArMTk1LDExOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAg
ICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGxv
YWQtbG9hZCBmZW5jZS4gVGhpcyBjb2RlZ2VucyB0byBub3RoaW5nIG9uIFg4Ni4gV2UgdXNlIGl0
IHRvIHRlbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGNvbXBpbGVyIG5vdCB0byBibG9j
ayBsb2FkIG1vdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgRmVuY2VWYWx1ZSogZmVuY2UgPSBt
X2luc2VydGlvblNldC5pbnNlcnQ8RmVuY2VWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4pOworICAg
ICAgICAgICAgICAgICAgICBmZW5jZS0+cmVhZCA9IEhlYXBSYW5nZSgpOworICAgICAgICAgICAg
ICAgICAgICBmZW5jZS0+d3JpdGUgPSBIZWFwUmFuZ2U6OnRvcCgpOworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gS2lsbCB0aGUgRGVwZW5kLCB3aGljaCBzaG91
bGQgdW5sb2NrIGEgYnVuY2ggb2YgY29kZSBzaW1wbGlmaWNhdGlvbi4KKyAgICAgICAgICAgICAg
ICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhCb3R0b20obV9pbnNlcnRpb25TZXQsIG1faW5kZXgp
OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgIGNh
c2UgQXRvbWljU3Ryb25nQ0FTOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAg
ICAgICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNDYW5vbmljYWxXaWR0aCh3aWR0aCkp
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIFZhbHVlKiBleHBlY3RlZFZhbHVlID0gYXRvbWljLT5jaGlsZCgwKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBPbiBBUk0sIHRoZSBsb2FkIHBhcnQgb2YgdGhl
IENBUyBkb2VzIGEgbG9hZCB3aXRoIHplcm8gZXh0ZW5zaW9uLiBUaGVyZWZvcmUsIHdlIG5lZWQK
KyAgICAgICAgICAgICAgICAvLyB0byB6ZXJvLWV4dGVuZCB0aGUgaW5wdXQuCisgICAgICAgICAg
ICAgICAgVmFsdWUqIG1hc2tlZEV4cGVjdGVkVmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBCaXRBbmQsIG1fb3JpZ2luLCBl
eHBlY3RlZFZhbHVlLAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRJ
bnRDb25zdGFudChtX2luZGV4LCBleHBlY3RlZFZhbHVlLCBtYXNrKHdpZHRoKSkpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF0b21pYy0+Y2hpbGQoMCkgPSBtYXNrZWRFeHBl
Y3RlZFZhbHVlOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6Cisg
ICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNo
Z1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgIGNhc2Ug
QXRvbWljWGNoZzogeworICAgICAgICAgICAgICAgIC8vIE9uIFg4NiwgdGhlc2UgbWF5IGFjdHVh
bGx5IHJldHVybiBnYXJiYWdlIGluIHRoZSBoaWdoIGJpdHMuIE9uIEFSTTY0LCB0aGVzZSBzb3J0
YQorICAgICAgICAgICAgICAgIC8vIHplcm8tZXh0ZW5kIHRoZWlyIGhpZ2ggYml0cywgZXhjZXB0
IHRoYXQgdGhlIGhpZ2ggYml0cyBtaWdodCBnZXQgcG9sbHV0ZWQgYnkgaGlnaAorICAgICAgICAg
ICAgICAgIC8vIGJpdHMgaW4gdGhlIG9wZXJhbmQuIC4gU28sIGVpdGhlciB3YXksIHdlIG5lZWQg
dG8gdGhyb3cgYSBzaWduLWV4dGVuZCBvbiB0aGVzZQorICAgICAgICAgICAgICAgIC8vIHRoaW5n
cy4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljWGNoZ1N1YiAm
JiBtX3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBPbiB4ODYsIHhjaGdhZGQgaXMgYmV0dGVyIHRoYW4geGNoZ3N1YiBpZiBpdCBoYXMgYW55
IHVzZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+c2V0T3Bjb2RlVW5zYWZl
bHkoQXRvbWljWGNoZ0FkZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGls
ZCgwKSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbmRleCwgTmVnLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCkpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICBib29sIGV4ZW1wdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1f
dmFsdWUtPm9wY29kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0Fu
ZDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9t
aWNYY2hnWG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhlbXB0ID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGV4ZW1wdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAg
ICAgICAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgp
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBWYWx1ZSogbmV3VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAor
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBzaWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwgbV9v
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENsb25lKG1f
aW5kZXgsIGF0b21pYykpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1fdmFs
dWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAgICAgICAgICAgIG1fY2hh
bmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgICAgIGNhc2Ug
TG9hZDE2WjogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBNZW1vcnlWYWx1
ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAgICAgICAg
aWYgKCFtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFN1Yi13aWR0aCBsb2FkLWFjcSBvbiBB
Uk02NCBhbHdheXMgc2lnbiBleHRlbmRzLgorICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdMb2Fk
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRleCwgbWVtb3J5KTsKKyAgICAgICAg
ICAgICAgICBuZXdMb2FkLT5zZXRPcGNvZGVVbnNhZmVseShtZW1vcnktPm9wY29kZSgpID09IExv
YWQ4WiA/IExvYWQ4UyA6IExvYWQxNlMpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIG5ld0xvYWQsCisgICAg
ICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KAorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9pbmRleCwgbV9vcmlnaW4sIEludDMyLCBtYXNrKG1lbW9yeS0+
bG9hZFN0b3JlV2lkdGgoKSkpKTsKIAorICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VX
aXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpAQCAtNDcwLDYgKzU5Miw3IEBAIHByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7
CiAgICAgQmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsKICAgICBJbnNlcnRp
b25TZXQgbV9pbnNlcnRpb25TZXQ7CisgICAgVXNlQ291bnRzIG1fdXNlQ291bnRzOwogICAgIEJh
c2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKICAgICBWYWx1ZSogbV92
YWx1ZTsKQEAgLTQ3NywyMSArNjAwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NoYW5nZWQg
eyBmYWxzZSB9OwogfTsKIAotYm9vbCBsb3dlck1hY3Jvc0ltcGwoUHJvY2VkdXJlJiBwcm9jKQot
ewotICAgIExvd2VyTWFjcm9zIGxvd2VyTWFjcm9zKHByb2MpOwotICAgIHJldHVybiBsb3dlck1h
Y3Jvcy5ydW4oKTsKLX0KLQogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIGJvb2wgbG93ZXJN
YWNyb3MoUHJvY2VkdXJlJiBwcm9jKQogewotICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9j
LCAibG93ZXJNYWNyb3MiKTsKLSAgICBib29sIHJlc3VsdCA9IGxvd2VyTWFjcm9zSW1wbChwcm9j
KTsKLSAgICBpZiAoc2hvdWxkVmFsaWRhdGVJUigpKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bG93ZXJNYWNyb3NJbXBsKHByb2MpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIExvd2VyTWFj
cm9zIGxvd2VyTWFjcm9zKHByb2MpOworICAgIHJldHVybiBsb3dlck1hY3Jvcy5ydW4oKTsKIH0K
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3Bw
CShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1h
Y3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTYsMTUgKzE1
NiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBSb3RMOiB7CiAgICAgICAgICAgICAg
ICAgLy8gQVJNNjQgZG9lc24ndCBoYXZlIGEgcm90YXRlIGxlZnQuCiAgICAgICAgICAgICAgICAg
aWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5p
bnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNo
aWxkKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBt
X3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV92
YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgVmFs
dWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBOZWcs
IG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAg
ICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgs
IFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOwor
ICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMjEz
MjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDEyICsyOCwxNCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2lu
Y2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWlyQ0NhbGxTcGVjaWFs
LmgiCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpckluc2VydGlvblNldC5oIgog
I2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tTbG90LmgiCiAj
aW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrV29y
a2xpc3QuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTcyLDYgKzc0LDE2IEBAIG5h
bWVzcGFjZSB7CiAKIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCisvLyBGSVhNRTogV2Ug
d291bGRuJ3QgbmVlZCB0aGlzIGlmIEFpciBzdXBwb3J0ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFp
cjo6S2luZC4KKy8vIE9PUFMhISEgKG5lZWQgYSBidWcgVVJMKQorI2RlZmluZSBPUENPREVfRk9S
X1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAorICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2Rl
ICMjIDggOiBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAorICAg
ICh3aWR0aCkgPT0gV2lkdGgzMiA/IG9wY29kZSAjIyAzMiA6IFwKKyAgICBvcGNvZGUgIyMgNjQp
CisjZGVmaW5lIE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAor
ICAgICh3aWR0aCkgPT0gV2lkdGg2NCA/IG9wY29kZSAjIyA2NCA6IG9wY29kZSAjIyAzMikKKwog
Y2xhc3MgTG93ZXJUb0FpciB7CiBwdWJsaWM6CiAgICAgTG93ZXJUb0FpcihQcm9jZWR1cmUmIHBy
b2NlZHVyZSkKQEAgLTgzLDYgKzk1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RvbWluYXRv
cnMocHJvY2VkdXJlLmRvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX3Byb2NlZHVyZShwcm9jZWR1
cmUpCiAgICAgICAgICwgbV9jb2RlKHByb2NlZHVyZS5jb2RlKCkpCisgICAgICAgICwgbV9ibG9j
a0luc2VydGlvblNldChtX2NvZGUpCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICAg
ICAgLCBtX2VheChYODZSZWdpc3RlcnM6OmVheCkKKyAgICAgICAgLCBtX2VjeChYODZSZWdpc3Rl
cnM6OmVjeCkKKyAgICAgICAgLCBtX2VkeChYODZSZWdpc3RlcnM6OmVkeCkKKyNlbmRpZgogICAg
IHsKICAgICB9CiAKQEAgLTEyNCwxNCArMTQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9p
c3RlZCBhZGRyZXNzIGV4cHJlc3Npb24gYmVmb3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8g
dGhlIGxvb3AuCiAgICAgICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1
cmUuYmxvY2tzSW5QcmVPcmRlcigpKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0g
ICAgICAgICAgICAvLyBSZXNldCBzb21lIHN0YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNp
emUoMCk7CiAKICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9j
ayk7CiAKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2co
Ikxvd2VyaW5nIEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3Rs
eS4KKyAgICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9j
ay0+c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2td
LT5zdWNjZXNzb3JzKCkuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50
ZWRCbG9jayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVx
dWVuY3koKSkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2Nr
cyBpbiByZXZlcnNlIG9yZGVyIHNvIHdlIHNlZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hh
dCBhbGxvd3MgdXMKICAgICAgICAgICAgIC8vIHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5
LgogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpA
QCAtMTQ5LDE5ICsxNzEsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2lu
c3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAg
ICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1f
aW5zdHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDog
bV9pbnN0c1tpXSkKLSAgICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5h
cHBlbmRJbnN0KFdURk1vdmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAv
LyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAg
ICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3Vj
Y2Vzc29ycygpKSB7Ci0gICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNj
ZXNzb3JzKCkuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9j
ayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3ko
KSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rp
b25zKG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IG1fYmxvY2tJbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9u
U2V0IGluc2VydGlvblNldChtX2NvZGUpOwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3By
b2xvZ3VlKQpAQCAtNDQ4LDYgKzQ2MSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHNjYWxlOwogICAgIH0KKyAgICAKKyAgICAv
LyBXZSBvbmx5IGNhbGwgdGhpcyB3aGVuIHdlIGtub3cgZm9yIHN1cmUgdGhhdCB3ZSBoYXZlIGEg
TWVtb3J5VmFsdWUgYW5kIHRoZSBvZmZzZXQgaXMgYWxyZWFkeQorICAgIC8vIG5vcm1hbGl6ZWQu
CisgICAgQXJnIHNpbXBsZUFkZHIoVmFsdWUqIGFkZHJlc3MpCisgICAgeworICAgICAgICBNZW1v
cnlWYWx1ZSogdmFsdWUgPSBtZW1vcnlWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHZhbHVlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXZhbHVlLT5v
ZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBBcmc6OnNpbXBsZUFkZHIodG1wKGFkZHJlc3MtPmxh
c3RDaGlsZCgpKSk7CisgICAgfQogCiAgICAgLy8gVGhpcyB0dXJucyB0aGUgZ2l2ZW4gb3BlcmFu
ZCBpbnRvIGFuIGFkZHJlc3MuCiAgICAgQXJnIGVmZmVjdGl2ZUFkZHIoVmFsdWUqIGFkZHJlc3Ms
IGludDMyX3Qgb2Zmc2V0LCBXaWR0aCB3aWR0aCkKQEAgLTU0MSw3ICs1NjQsNyBAQCBwcml2YXRl
OgogICAgICAgICBXaWR0aCB3aWR0aCA9IHZhbHVlLT5hY2Nlc3NXaWR0aCgpOwogCiAgICAgICAg
IEFyZyByZXN1bHQgPSBlZmZlY3RpdmVBZGRyKHZhbHVlLT5sYXN0Q2hpbGQoKSwgb2Zmc2V0LCB3
aWR0aCk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQuaXNWYWxpZEZvcm0od2lkdGgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmlzVmFsaWRGb3JtKHdpZHRoKSk7CiAKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC01NjIsMTEgKzU4NSwxOSBAQCBwcml2YXRlOgogICAg
IAogICAgIEFyZ1Byb21pc2UgbG9hZFByb21pc2VBbnlPcGNvZGUoVmFsdWUqIGxvYWRWYWx1ZSkK
ICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxvYWRWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+
KCkpOwogICAgICAgICBpZiAoIWNhbkJlSW50ZXJuYWwobG9hZFZhbHVlKSkKICAgICAgICAgICAg
IHJldHVybiBBcmcoKTsKICAgICAgICAgaWYgKGNyb3NzZXNJbnRlcmZlcmVuY2UobG9hZFZhbHVl
KSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKLSAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQo
YWRkcihsb2FkVmFsdWUpLCBsb2FkVmFsdWUpOworICAgICAgICAvLyBPbiB4ODYsIGFsbCBsb2Fk
cyBoYXZlIGZlbmNlcy4gRG9pbmcgdGhpcyBraW5kIG9mIGluc3RydWN0aW9uIHNlbGVjdGlvbiB3
aWxsIG1vdmUgdGhlIGxvYWQsCisgICAgICAgIC8vIGJ1dCB0aGF0J3MgZmluZSBiZWNhdXNlIG91
ciBpbnRlcmZlcmVuY2UgYW5hbHlzaXMgc3RvcHMgdGhlIG1vdGlvbiBvZiBmZW5jZXMgYXJvdW5k
IG90aGVyCisgICAgICAgIC8vIGZlbmNlcy4gU28sIGFueSBsb2FkIG1vdGlvbiB3ZSBpbnRyb2R1
Y2UgaGVyZSB3b3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4KKyAgICAgICAgaWYgKCFpc1g4NigpICYm
IGxvYWRWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gQXJnKCk7CisgICAgICAgIEFyZyBsb2FkQWRkciA9IGFkZHIobG9hZFZhbHVlKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobG9hZEFkZHIpOworICAgICAgICBBcmdQcm9taXNlIHJlc3Vs
dChsb2FkQWRkciwgbG9hZFZhbHVlKTsKICAgICAgICAgaWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkK
ICAgICAgICAgICAgIHJlc3VsdC5zZXRUcmFwcyh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTg5OCwxMSArOTI5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICAgICAgYXBwZW5kKE1v
dmUsIHRtcCh2YWx1ZSksIHRtcChtX3ZhbHVlKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAo
YW1vdW50KSwgVG1wKFg4NlJlZ2lzdGVyczo6ZWN4KSk7Ci0gICAgICAgIGFwcGVuZChvcGNvZGUs
IFRtcChYODZSZWdpc3RlcnM6OmVjeCksIHRtcChtX3ZhbHVlKSk7Ci0jZW5kaWYKKyAgICAgICAg
YXBwZW5kKE1vdmUsIHRtcChhbW91bnQpLCBtX2VjeCk7CisgICAgICAgIGFwcGVuZChvcGNvZGUs
IG1fZWN4LCB0bXAobV92YWx1ZSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2Rl
IG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2ND4KQEAgLTkzMSwxMCArOTYwLDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2
NCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmU+CiAgICAgYm9v
bCB0cnlBcHBlbmRTdG9yZUJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCiAgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKSk7CisgICAg
ICAgIAogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9wY29k
ZTMyLCBvcGNvZGU2NCwgbGVmdC0+dHlwZSgpKTsKICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6
Ok9vcHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAorICAgICAgICAvLyBP
biB4ODYsIGFsbCBzdG9yZXMgaGF2ZSBmZW5jZXMsIGFuZCB0aGlzIGlzbid0IHJlb3JkZXJpbmcg
dGhlIHN0b3JlIGl0c2VsZi4KKyAgICAgICAgaWYgKCFpc1g4NigpICYmIG1fdmFsdWUtPmFzPE1l
bW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAKICAgICAgICAgQXJnIHN0b3JlQWRkciA9IGFkZHIobV92YWx1ZSk7CiAgICAgICAgIEFT
U0VSVChzdG9yZUFkZHIpOwogCkBAIC05OTQsMTEgKzEwMjksNTAgQEAgcHJpdmF0ZToKIAogICAg
ICAgICByZXR1cm4gSW5zdChtb3ZlLCBtX3ZhbHVlLCB0bXAodmFsdWUpLCBkZXN0KTsKICAgICB9
CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNvZGUoV2lkdGggd2lkdGgsIEJhbmsgYmFu
aywgYm9vbCByZWxlYXNlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh3aWR0aCkgeworICAgICAg
ICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOwor
ICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDggOiBBaXI6OlN0b3JlODsKKyAg
ICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9PSBH
UCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMTYgOiBBaXI6OlN0b3Jl
MTY7CisgICAgICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgICAgIHN3aXRjaCAoYmFuaykgewor
ICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0
b3JlUmVsMzIgOiBNb3ZlMzI7CisgICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZUZs
b2F0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2lk
dGg2NDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzNjRCaXQoKSk7CisgICAgICAgICAg
ICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDY0IDogTW92ZTsKKyAgICAgICAgICAgIGNhc2UgRlA6
CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlbGVhc2UpOworICAgICAgICAgICAg
ICAgIHJldHVybiBNb3ZlRG91YmxlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNvZGUoVmFsdWUqIHZhbHVlKQorICAgIHsK
KyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5LT5pc1N0b3JlKCkpOworICAgICAgICByZXR1
cm4gc3RvcmVPcGNvZGUobWVtb3J5LT5sb2FkU3RvcmVXaWR0aCgpLCBtZW1vcnktPmFjY2Vzc0Jh
bmsoKSwgbWVtb3J5LT5oYXNGZW5jZSgpKTsKKyAgICB9CiAKICAgICBJbnN0IGNyZWF0ZVN0b3Jl
KFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNv
ZGUgbW92ZU9wY29kZSA9IG1vdmVGb3JUeXBlKHZhbHVlLT50eXBlKCkpOwotICAgICAgICByZXR1
cm4gY3JlYXRlU3RvcmUobW92ZU9wY29kZSwgdmFsdWUsIGRlc3QpOworICAgICAgICBBaXI6Ok9w
Y29kZSBtb3ZlT3Bjb2RlID0gc3RvcmVPcGNvZGUodmFsdWUpOworICAgICAgICByZXR1cm4gY3Jl
YXRlU3RvcmUobW92ZU9wY29kZSwgdmFsdWUtPmNoaWxkKDApLCBkZXN0KTsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgpAQCAtMTAwNiw3ICsxMDgwLDcgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgY3JlYXRlU3Rv
cmUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkpOwogICAgIH0KLQorICAgIAogICAgIEFp
cjo6T3Bjb2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
dHlwZSkgewpAQCAtMTA3Myw3ICsxMTQ3LDQxIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBt
X2luc3RzLmxhc3QoKS5hcHBlbmQoaW5zdCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgZmluaXNo
QXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKEFpcjo6QmFzaWNCbG9jayogdGFyZ2V0KQorICAgIHsKKyAg
ICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRhaW5zIHRo
ZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcworICAgICAgICAvLyBpdCBpbiByZXZl
cnNlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luc3RzLnNpemUoKTsgaS0tOykgewor
ICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0c1tpXSkKKyAgICAgICAgICAgICAg
ICB0YXJnZXQtPmFwcGVuZEluc3QoV1RGTW92ZShpbnN0KSk7CisgICAgICAgIH0KKyAgICAgICAg
bV9pbnN0cy5yZXNpemUoMCk7CisgICAgfQorICAgIAorICAgIEFpcjo6QmFzaWNCbG9jayogbmV3
QmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0
QWZ0ZXIobV9ibG9ja1RvQmxvY2tbbV9ibG9ja10pOworICAgIH0KIAorICAgIC8vIE5PVEU6IFRo
aXMgd2lsbCBjcmVhdGUgYSBjb250aW51YXRpb24gYmxvY2sgKGBuZXh0QmxvY2tgKSAqYWZ0ZXIq
IGFueSBibG9ja3MgeW91J3ZlIGNyZWF0ZWQgdXNpbmcKKyAgICAvLyBuZXdCbG9jaygpLiBTbywg
aXQncyBwcmVmZXJhYmxlIHRvIGNyZWF0ZSBhbGwgb2YgeW91ciBibG9ja3MgdXBmcm9udCB1c2lu
ZyBuZXdCbG9jaygpLiBBbHNvIG5vdGUKKyAgICAvLyB0aGF0IGFueSBjb2RlIHlvdSBlbWl0IGJl
Zm9yZSB0aGlzIHdpbGwgYmUgcHJlcGVuZGVkIHRvIHRoZSBjb250aW51YXRpb24sIGFuZCBhbnkg
Y29kZSB5b3UgZW1pdAorICAgIC8vIGFmdGVyIHRoaXMgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUg
cHJldmlvdXMgYmxvY2suCisgICAgdm9pZCBzcGxpdEJsb2NrKEFpcjo6QmFzaWNCbG9jayomIHBy
ZXZpb3VzQmxvY2ssIEFpcjo6QmFzaWNCbG9jayomIG5leHRCbG9jaykKKyAgICB7CisgICAgICAg
IEFpcjo6QmFzaWNCbG9jayogYmxvY2sgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXTsKKyAgICAg
ICAgCisgICAgICAgIHByZXZpb3VzQmxvY2sgPSBibG9jazsKKyAgICAgICAgbmV4dEJsb2NrID0g
bV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlcihibG9jayk7CisgICAgICAgIAorICAgICAg
ICBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMobmV4dEJsb2NrKTsKKyAgICAgICAgbmV4dEJs
b2NrLT5zdWNjZXNzb3JzKCkgPSBibG9jay0+c3VjY2Vzc29ycygpOworICAgICAgICBibG9jay0+
c3VjY2Vzc29ycygpLmNsZWFyKCk7CisgICAgICAgIAorICAgICAgICBtX2luc3RzLmFwcGVuZChW
ZWN0b3I8SW5zdD4oKSk7CisgICAgfQorICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBUKiBlbnN1cmVTcGVjaWFsKFQqJiBmaWVsZCwgQXJn
dW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKQEAgLTExMjMsNyArMTIzMSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZhbHVlUmVwOjpT
dGFja0FyZ3VtZW50OgogICAgICAgICAgICAgICAgIGFyZyA9IEFyZzo6Y2FsbEFyZyh2YWx1ZS5y
ZXAoKS5vZmZzZXRGcm9tU1AoKSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWUu
dmFsdWUoKSwgYXJnKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRTdG9yZShtb3ZlRm9yVHlwZSh2
YWx1ZS52YWx1ZSgpLT50eXBlKCkpLCB2YWx1ZS52YWx1ZSgpLCBhcmcpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTk2MSw2ICsyMDY5LDMwNyBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZFg4NkRpdihCMzo6
T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29y
ZDsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2OworICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5
cGUoKSkgeworICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgY29udmVydFRvRG91Ymxl
V29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMjsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRp
djMyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NjQ6CisgICAgICAgICAg
ICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvUXVhZFdvcmQ2NDsKKyAgICAgICAg
ICAgIGRpdiA9IFg4NkRpdjY0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBN
b2QpOworICAgICAgICBUbXAgcmVzdWx0ID0gb3AgPT0gRGl2ID8gbV9lYXggOiBtX2VkeDsKKwor
ICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgbV9lYXgpOworICAg
ICAgICBhcHBlbmQoY29udmVydFRvRG91YmxlV29yZCwgbV9lYXgsIG1fZWR4KTsKKyAgICAgICAg
YXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAg
ICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwgdG1wKG1fdmFsdWUpKTsKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZFg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFpcjo6T3Bjb2Rl
IGRpdiA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsK
KworICAgICAgICBBU1NFUlQob3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKKyAgICAgICAgVG1w
IHJlc3VsdCA9IG9wID09IFVEaXYgPyBtX2VheCA6IG1fZWR4OworCisgICAgICAgIGFwcGVuZChN
b3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgIGFwcGVuZChYb3I2
NCwgbV9lZHgsIG1fZWR4KTsKKyAgICAgICAgYXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4LCB0bXAo
bV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwgdG1wKG1f
dmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgbG9hZExpbmtPcGNvZGUoV2lk
dGggd2lkdGgsIGJvb2wgZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENP
REVfRk9SX1dJRFRIKExvYWRMaW5rQWNxLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKExvYWRM
aW5rLCB3aWR0aCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlQ29uZE9wY29k
ZShXaWR0aCB3aWR0aCwgYm9vbCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmZW5jZSA/
IE9QQ09ERV9GT1JfV0lEVEgoU3RvcmVDb25kUmVsLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRI
KFN0b3JlQ29uZCwgd2lkdGgpOworICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIGNhbiBlbWl0IGNv
ZGUgZm9yIHRoZSBmb2xsb3dpbmcgcGF0dGVybnM6CisgICAgLy8gQXRvbWljV2Vha0NBUworICAg
IC8vIEJpdFhvcihBdG9taWNXZWFrQ0FTLCAxKQorICAgIC8vIEF0b21pY1N0cm9uZ0NBUworICAg
IC8vIEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gTm90RXF1YWwoQXRv
bWljU3Ryb25nQ0FTLCBleHBlY3RlZCkKKyAgICAvLyBCcmFuY2goQXRvbWljV2Vha0NBUykKKyAg
ICAvLyBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAgLy8gQnJh
bmNoKE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vCisgICAgLy8g
SXQgYXNzdW1lcyB0aGF0IGF0b21pY1ZhbHVlIHBvaW50cyB0byB0aGUgQ0FTLCBhbmQgbV92YWx1
ZSBwb2ludHMgdG8gdGhlIGluc3RydWN0aW9uIGJlaW5nCisgICAgLy8gZ2VuZXJhdGVkLiBJdCBh
c3N1bWVzIHRoYXQgeW91J3ZlIGNvbnN1bWVkIGV2ZXJ5dGhpbmcgdGhhdCBuZWVkcyB0byBiZSBj
b25zdW1lZC4KKyAgICB2b2lkIGFwcGVuZENBUyhWYWx1ZSogYXRvbWljVmFsdWUsIGJvb2wgaW52
ZXJ0KQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IGF0b21pY1ZhbHVlLT5h
czxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXRvbWljKTsKKyAgICAg
ICAgCisgICAgICAgIGJvb2wgaXNCcmFuY2ggPSBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBCcmFuY2g7
CisgICAgICAgIGJvb2wgaXNTdHJvbmcgPSBhdG9taWMtPm9wY29kZSgpID09IEF0b21pY1N0cm9u
Z0NBUzsKKyAgICAgICAgYm9vbCByZXR1cm5zT2xkVmFsdWUgPSBtX3ZhbHVlLT5vcGNvZGUoKSA9
PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wgaGFzRmVuY2UgPSBhdG9taWMtPmhhc0Zl
bmNlKCk7CisgICAgICAgIAorICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+b3BlcmF0aW9u
V2lkdGgoKTsKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisKKyAgICAgICAg
VG1wIHZhbHVlUmVzdWx0VG1wOworICAgICAgICBUbXAgYm9vbFJlc3VsdFRtcDsKKyAgICAgICAg
aWYgKHJldHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWludmVy
dCk7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAg
ICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgfSBlbHNlIGlm
IChpc0JyYW5jaCkgeworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1w
KEdQKTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1Rt
cChHUCk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBUbXAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXA7CisgICAgICAg
IGlmIChpc1N0cm9uZyAmJiAhaXNCcmFuY2gpCisgICAgICAgICAgICBzdWNjZXNzQm9vbFJlc3Vs
dFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWNj
ZXNzQm9vbFJlc3VsdFRtcCA9IGJvb2xSZXN1bHRUbXA7CisKKyAgICAgICAgVG1wIGV4cGVjdGVk
VmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGlsZCgwKSk7CisgICAgICAgIFRtcCBuZXdWYWx1ZVRt
cCA9IHRtcChhdG9taWMtPmNoaWxkKDEpKTsKKyAgICAgICAgCisgICAgICAgIEFpcjo6RnJlcXVl
bnRlZEJsb2NrIHN1Y2Nlc3M7CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIGZhaWx1cmU7
CisgICAgICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgc3VjY2VzcyA9IG1fYmxvY2tU
b0Jsb2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoaW52ZXJ0KTsKKyAgICAgICAgICAgIGZhaWx1cmUg
PSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29yKCFpbnZlcnQpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgYXBwZW5kKHJl
bGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPm9wZXJhdGlvblR5cGUoKSksIGltbU9yVG1wKGF0b21p
Yy0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgICAgICBpZiAocmV0dXJuc09sZFZhbHVlKSB7
CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FT
LCB3aWR0aCksIG1fZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAg
YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPm9wZXJhdGlvblR5cGUoKSksIG1fZWF4
LCB2YWx1ZVJlc3VsdFRtcCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnJhbmNoKSB7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNoQXRvbWljU3Ryb25n
Q0FTLCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1f
ZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxv
Y2tbbV9ibG9ja10tPnNldFN1Y2Nlc3NvcnMoc3VjY2VzcywgZmFpbHVyZSk7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNT
dHJvbmdDQVMsIHdpZHRoKSwgQXJnOjpzdGF0dXNDb25kKGludmVydCA/IE1hY3JvQXNzZW1ibGVy
OjpGYWlsdXJlIDogTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgdG1wKGF0b21pYy0+
Y2hpbGQoMSkpLCBhZGRyZXNzLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsK
KyAgICAgICAgLy8gV2Ugd2lzaCB0byBlbWl0OgorICAgICAgICAvLworICAgICAgICAvLyBCbG9j
ayAjcmVsb29wOgorICAgICAgICAvLyAgICAgTG9hZExpbmsKKyAgICAgICAgLy8gICAgIEJyYW5j
aCBOb3RFcXVhbAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRoZW46I2ZhaWwsIEVsc2U6ICNz
dG9yZQorICAgICAgICAvLyBCbG9jayAjc3RvcmU6CisgICAgICAgIC8vICAgICBTdG9yZUNvbmQK
KyAgICAgICAgLy8gICAgIFhvciAkMSwgJXJlc3VsdCAgICA8LS0tIG9ubHkgaWYgIWludmVydAor
ICAgICAgICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAg
ICAgIC8vIEJsb2NrICNmYWlsOgorICAgICAgICAvLyAgICAgTW92ZSAkaW52ZXJ0LCAlcmVzdWx0
CisgICAgICAgIC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAg
ICAgICAgLy8gQmxvY2sgI2RvbmU6CisgICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sq
IHJlbG9vcEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdG9y
ZUJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdWNjZXNzQmxv
Y2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoICYmIGlzU3Ryb25nKQorICAgICAg
ICAgICAgc3VjY2Vzc0Jsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2Nr
KiBmYWlsQmxvY2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoKSB7CisgICAgICAg
ICAgICBmYWlsQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICAgICAgZmFpbHVyZSA9IGZhaWxC
bG9jazsKKyAgICAgICAgfQorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0cm9uZ0ZhaWxCbG9j
azsKKyAgICAgICAgaWYgKGlzU3Ryb25nICYmIGhhc0ZlbmNlKQorICAgICAgICAgICAgc3Ryb25n
RmFpbEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sgY29t
cGFyaXNvbkZhaWw7CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIHdlYWtGYWlsOworICAg
ICAgICBpZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgIGlmIChoYXNGZW5jZSkKKyAgICAgICAg
ICAgICAgICBjb21wYXJpc29uRmFpbCA9IHN0cm9uZ0ZhaWxCbG9jazsKKyAgICAgICAgICAgIHdl
YWtGYWlsID0gcmVsb29wQmxvY2s7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgIHdlYWtG
YWlsID0gZmFpbHVyZTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOworICAg
ICAgICBBaXI6OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhiZWdp
bkJsb2NrLCBkb25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFpcjo6SnVtcCk7
CisgICAgICAgIGJlZ2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAg
ICAKKyAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChsb2FkTGlua09wY29kZSh3aWR0aCwgYXRv
bWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgYWRkcmVzcywgdmFsdWVSZXN1bHRUbXApOworICAg
ICAgICByZWxvb3BCbG9jay0+YXBwZW5kKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEJyYW5j
aCwgd2lkdGgpLCBtX3ZhbHVlLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
KSwgdmFsdWVSZXN1bHRUbXAsIGV4cGVjdGVkVmFsdWVUbXApOworICAgICAgICByZWxvb3BCbG9j
ay0+c2V0U3VjY2Vzc29ycyhjb21wYXJpc29uRmFpbCwgc3RvcmVCbG9jayk7CisgICAgICAgIAor
ICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMt
Pmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZVRtcCwgYWRkcmVzcywgc3VjY2Vzc0Jvb2xS
ZXN1bHRUbXApOworICAgICAgICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHN0b3JlQmxv
Y2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2Vt
Ymxlcjo6WmVybyksIGJvb2xSZXN1bHRUbXAsIEFyZzo6Yml0SW1tKC0xKSk7CisgICAgICAgICAg
ICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIHdlYWtGYWlsKTsKKyAgICAgICAg
ICAgIGRvbmVCbG9jay0+c3VjY2Vzc29ycygpLmNsZWFyKCk7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCghZG9uZUJsb2NrLT5zaXplKCkpOworICAgICAgICAgICAgZG9uZUJsb2NrLT5hcHBl
bmQoQWlyOjpPb3BzLCBtX3ZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlm
IChpc1N0cm9uZykgeworICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChCcmFuY2hU
ZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHN1Y2Nl
c3NCb29sUmVzdWx0VG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICAgICAgICAgIHN0b3Jl
QmxvY2stPnNldFN1Y2Nlc3NvcnMoc3VjY2Vzc0Jsb2NrLCByZWxvb3BCbG9jayk7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5hcHBlbmQoTW92ZSwgbV92
YWx1ZSwgQXJnOjppbW0oIWludmVydCksIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgICAg
IHN1Y2Nlc3NCbG9jay0+YXBwZW5kKEFpcjo6SnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAg
ICAgc3VjY2Vzc0Jsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghaW52ZXJ0KQorICAgICAgICAgICAgICAgICAg
ICBzdG9yZUJsb2NrLT5hcHBlbmQoWG9yMzIsIG1fdmFsdWUsIEFyZzo6Yml0SW1tKDEpLCBib29s
UmVzdWx0VG1wLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKE1vdmUsIG1fdmFs
dWUsIEFyZzo6aW1tKGludmVydCksIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgZmFpbEJs
b2NrLT5hcHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgIGZhaWxCbG9jay0+
c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBp
ZiAoaXNTdHJvbmcgJiYgaGFzRmVuY2UpIHsKKyAgICAgICAgICAgIFRtcCB0bXAgPSBtX2NvZGUu
bmV3VG1wKEdQKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKHN0b3JlQ29u
ZE9wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgdmFsdWVSZXN1bHRU
bXAsIGFkZHJlc3MsIHRtcCk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPmFwcGVuZChC
cmFuY2hUZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyks
IHRtcCwgQXJnOjpiaXRJbW0oLTEpKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+c2V0
U3VjY2Vzc29ycyhmYWlsdXJlLCByZWxvb3BCbG9jayk7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgYm9vbCBhcHBlbmRWb2lkQXRvbWljKEFpcjo6T3Bjb2RlIGF0b21pY09wY29kZSkKKyAg
ICB7CisgICAgICAgIGlmIChtX3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKG1f
dmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwg
QXJnOjpJbW0sIGFkZHJlc3Mua2luZCgpKSAmJiBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpKSB7Cisg
ICAgICAgICAgICBhcHBlbmQoYXRvbWljT3Bjb2RlLCBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpLCBh
ZGRyZXNzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBpZiAoaXNWYWxpZEZvcm0oYXRvbWljT3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5r
aW5kKCkpKSB7CisgICAgICAgICAgICBhcHBlbmQoYXRvbWljT3Bjb2RlLCB0bXAobV92YWx1ZS0+
Y2hpbGQoMCkpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
cHBlbmRHZW5lcmFsQXRvbWljKEFpcjo6T3Bjb2RlIG9wY29kZSkKKyAgICB7CisgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAg
CisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgVG1wIG9sZFZh
bHVlID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIFRtcCBuZXdWYWx1ZSA9IG1fY29kZS5u
ZXdUbXAoR1ApOworICAgICAgICAKKyAgICAgICAgLy8gV2UgbmVlZCBhIENBUyBsb29wIG9yIGEg
TEwvU0MgbG9vcC4gVXNpbmcgcHJlcGFyZS9hdHRlbXB0IGphcmdvbiwgd2Ugd2FudDoKKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIFByZXBhcmUK
KyAgICAgICAgLy8gICAgIG9wY29kZQorICAgICAgICAvLyAgICAgQXR0ZW1wdAorICAgICAgICAv
LyAgIFN1Y2Nlc3NvcnM6IFRoZW46I2RvbmUsIEVsc2U6I3JlbG9vcAorICAgICAgICAvLyBCbG9j
ayAjZG9uZToKKyAgICAgICAgLy8gICAgIE1vdmUgb2xkVmFsdWUsIHJlc3VsdAorICAgICAgICAK
KyAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG9sZFZh
bHVlLCB0bXAoYXRvbWljKSk7CisgICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJl
bG9vcEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJs
b2NrOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRC
bG9jayhiZWdpbkJsb2NrLCBkb25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFp
cjo6SnVtcCk7CisgICAgICAgIGJlZ2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2sp
OworICAgICAgICAKKyAgICAgICAgQWlyOjpPcGNvZGUgcHJlcGFyZU9wY29kZTsKKyAgICAgICAg
aWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYXRvbWljLT5vcGVyYXRpb25XaWR0
aCgpKSB7CisgICAgICAgICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgICAgICBwcmVwYXJl
T3Bjb2RlID0gTG9hZDhTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUg
PSBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3Zl
MzI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6Cisg
ICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IE1vdmU7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChpc0FSTTY0KCkpOworICAgICAgICAgICAgb3Bjb2RlID0gbG9hZExpbmtPcGNvZGUo
YXRvbWljLT5vcGVyYXRpb25XaWR0aCgpLCBhdG9taWMtPmhhc0ZlbmNlKCkpOworICAgICAgICB9
CisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQocHJlcGFyZU9wY29kZSwgbV92YWx1ZSwgYWRk
cmVzcywgb2xkVmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKG9wY29kZSAhPSBBaXI6Ok5v
cCkgeworICAgICAgICAgICAgaWYgKGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9y
bShvcGNvZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAg
IHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgw
KSksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChpc1ZhbGlkRm9y
bShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAg
IHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgw
KSksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUo
KSksIG1fdmFsdWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGlt
bShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6SW1tLCBBcmc6
OlRtcCkpCisgICAgICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBt
X3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBt
X3ZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBBaXI6Ok9w
Y29kZSBjYXNPcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9uZ0NBUywg
YXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBl
bmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgbV92YWx1ZSwgb2xkVmFsdWUs
IG1fZWF4KTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoY2FzT3Bjb2RlLCBtX3Zh
bHVlLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3
VmFsdWUsIGFkZHJlc3MpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaXNBUk02NCgpKTsKKyAgICAgICAgICAgIFRtcCBib29sUmVzdWx0ID0gbV9jb2RlLm5l
d1RtcChHUCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29k
ZShhdG9taWMtPm9wZXJhdGlvbldpZHRoKCksIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUs
IG5ld1ZhbHVlLCBhZGRyZXNzLCBib29sUmVzdWx0KTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2Nr
LT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8pLCBib29sUmVzdWx0LCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICB9CisgICAg
ICAgIHJlbG9vcEJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jaywgcmVsb29wQmxvY2spOwor
ICAgIH0KKyAgICAKICAgICB2b2lkIGxvd2VyKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV92
YWx1ZS0+b3Bjb2RlKCkpIHsKQEAgLTE5NzEsMzAgKzIzODAsNTYgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTG9hZDogewotICAgICAgICAgICAgYXBw
ZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBtb3ZlRm9yVHlwZShtX3ZhbHVlLT50eXBlKCkpLCBt
X3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIE1lbW9y
eVZhbHVlKiBtZW1vcnkgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAg
IEFpcjo6T3Bjb2RlIG9wY29kZSA9IEFpcjo6T29wczsKKyAgICAgICAgICAgIGlmIChtZW1vcnkt
Pmhhc0ZlbmNlKCkpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG1lbW9yeS0+dHlwZSgpKSB7
CisgICAgICAgICAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2Rl
ID0gTG9hZEFjcTMyOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIEludDY0OgorICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNxNjQ7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIG9wY29kZSA9IG1vdmVGb3JUeXBlKG1lbW9yeS0+dHlwZSgpKTsKKyAg
ICAgICAgICAgIEFyZyBhZGRyZXNzOworICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29k
ZSwgQXJnOjpBZGRyLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgYWRkcmVzcyA9IGFkZHIo
bV92YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYWRkcmVzcyA9IHNp
bXBsZUFkZHIobV92YWx1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZCh0cmFw
cGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyZXNzLCB0bXAobV92YWx1ZSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgTG9hZDhTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUs
IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFs
dWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMiA6IExvYWQ4
U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1
ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDhaOiB7Ci0gICAg
ICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQ4LCBtX3ZhbHVlLCBhZGRy
KG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcTggOiBM
b2FkODsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBt
X3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2UzogewotICAgICAgICAgICAgYXBw
ZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTZTaWduZWRFeHRlbmRUbzMyLCBtX3ZhbHVl
LCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2Rl
IG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFj
cTE2U2lnbmVkRXh0ZW5kVG8zMiA6IExvYWQxNlNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAg
ICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIExvYWQxNlo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3Qo
bV92YWx1ZSwgTG9hZDE2LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsK
KyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVl
PigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcTE2IDogTG9hZDE2OworICAgICAgICAgICAgYXBwZW5k
KHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRt
cChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KKyAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIEFkZDogewogICAgICAgICAgICAgaWYgKHRyeUFwcGVuZExlYSgp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwOTIsNyArMjUyNyw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNDaGlsbCgpKQogICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CiAgICAgICAgICAgICBpZiAoaXNJbnQobV92YWx1ZS0+
dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJYODZEaXYoRGl2KTsK
KyAgICAgICAgICAgICAgICBhcHBlbmRYODZEaXYoRGl2KTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoIWlzWDg2KCkgfHwgaXNGbG9h
dChtX3ZhbHVlLT50eXBlKCkpKTsKQEAgLTIxMDMsNyArMjUzOCw3IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgY2FzZSBVRGl2OiB7CiAgICAgICAgICAgICBpZiAoaXNJbnQobV92YWx1ZS0+dHlwZSgp
KSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJYODZVRGl2KFVEaXYpOworICAg
ICAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVURpdik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCkBAIC0yMTE3LDEzICsyNTUyLDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgTW9kOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4NigpKTsKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZhbHVlLT5pc0NoaWxsKCkpOwotICAgICAgICAg
ICAgbG93ZXJYODZEaXYoTW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NkRpdihNb2QpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBVTW9kOiB7CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4NigpKTsKLSAgICAgICAgICAgIGxvd2VyWDg2VURp
dihVTW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVU1vZCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjE2MiwxMCArMjU5NywyOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGFwcGVuZFVuT3A8Tm90MzIsIE5vdDY0PihtX3ZhbHVlLT5jaGlsZCgwKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICAvLyBUaGlzIHBhdHRlcm4gaXMgc3VwZXIgdXNlZnVsIG9uIGJvdGggeDg2IGFu
ZCBBUk02NCwgc2luY2UgdGhlIGludmVyc2lvbiBvZiB0aGUgQ0FTIHJlc3VsdAorICAgICAgICAg
ICAgLy8gY2FuIGJlIGRvbmUgd2l0aCB6ZXJvIGNvc3Qgb24geDg2IChqdXN0IGZsaXAgdGhlIHNl
dCBmcm9tIEUgdG8gTkUpIGFuZCBpdCdzIGEgcHJvZ3Jlc3Npb24KKyAgICAgICAgICAgIC8vIG9u
IEFSTTY0IChzaW5jZSBTVFggcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIHNvIG9yZGluYXJpbHkgd2Ug
aGF2ZSB0byBmbGlwIGl0KS4KKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJ
bnQoMSkKKyAgICAgICAgICAgICAgICAmJiBpc0F0b21pY0NBUyhtX3ZhbHVlLT5jaGlsZCgwKS0+
b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGls
ZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgw
KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUtPmNoaWxkKDApLCB0cnVlKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAg
ICAgICAgICAgIGFwcGVuZEJpbk9wPFhvcjMyLCBYb3I2NCwgWG9yRG91YmxlLCBYb3JGbG9hdCwg
Q29tbXV0YXRpdmU+KAogICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVl
LT5jaGlsZCgxKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNB
Uk02NCgpKTsKKyAgICAgICAgICAgIGFwcGVuZFVuT3A8RGVwZW5kMzIsIERlcGVuZDY0PihtX3Zh
bHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIFNobDogewogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludDMy
KDEpKSB7CkBAIC0yMjY2LDcgKzI3MTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWVUb1N0b3JlLCBh
ZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIGFkZHIobV92
YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIyODcsNyArMjc0
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcHBlbmRTdG9yZShBaXI6OlN0b3Jl
OCwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3Jl
KG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTIzMDgsNyArMjc2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcHBl
bmRTdG9yZShBaXI6OlN0b3JlMTYsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAg
ICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDE2LDcgKzI4NjksMjIgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIGNhc2UgTm90RXF1YWw6Cisg
ICAgICAgIGNhc2UgTm90RXF1YWw6IHsKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgw
KS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAgICAgICAgICAgICAgJiYgbV92YWx1
ZS0+Y2hpbGQoMCktPmNoaWxkKDApID09IG1fdmFsdWUtPmNoaWxkKDEpCisgICAgICAgICAgICAg
ICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKSkp
OworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMobV92YWx1ZS0+Y2hp
bGQoMSkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5h
bChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUt
PmNoaWxkKDApLCBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
bV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNyZWF0ZUNvbXBhcmUobV92YWx1ZSkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMZXNzVGhh
bjoKICAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAgICAgY2FzZSBMZXNzRXF1YWw6CkBA
IC0yNzI3LDYgKzMxOTUsNDAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ug
QnJhbmNoOiB7CisgICAgICAgICAgICBpZiAoY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgw
KSkpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogYnJhbmNoQ2hpbGQgPSBtX3ZhbHVlLT5jaGls
ZCgwKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyYW5jaENoaWxkLT5vcGNvZGUoKSkgewor
ICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgICAgICAgICAg
Y29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAgICAgICAgICAgICAgICBhcHBlbmRD
QVMoYnJhbmNoQ2hpbGQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoK
KyAgICAgICAgICAgICAgICAgICAgLy8gQSBicmFuY2ggaXMgYSBjb21wYXJpc29uIHRvIHplcm8u
CisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPmlzSW50KDAp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFuY2hDaGlsZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQsIHRydWUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBjYXNlIEVxdWFsOgorICAgICAgICAgICAgICAgIGNhc2UgTm90RXF1YWw6CisgICAg
ICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0
b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChi
cmFuY2hDaGlsZC0+Y2hpbGQoMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBicmFuY2hD
aGlsZC0+Y2hpbGQoMCktPmNoaWxkKDApID09IGJyYW5jaENoaWxkLT5jaGlsZCgxKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQtPmNoaWxkKDApKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZC0+Y2hpbGQoMCks
IGJyYW5jaENoaWxkLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNyZWF0
ZUJyYW5jaChtX3ZhbHVlLT5jaGlsZCgwKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC0yNzg0LDcgKzMyODYsODEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGFwcGVuZChB
aXI6OkVudHJ5U3dpdGNoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgY2FzZSBBdG9taWNT
dHJvbmdDQVM6IHsKKyAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLCBmYWxzZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0
b21pY1hjaGdBZGQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVl
LT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9Q
Q09ERV9GT1JfV0lEVEgoQXRvbWljQWRkLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFyZyBhZGRy
ZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gT1BD
T0RFX0ZPUl9XSURUSChBdG9taWNYY2hnQWRkLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpOwor
ICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIGFkZHJlc3Mua2lu
ZCgpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWlj
LT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9taWMpKTsKKyAgICAgICAg
ICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVzcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFs
QXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEFkZCwgYXRvbWljLT5vcGVyYXRpb25X
aWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAgICBjYXNl
IEF0b21pY1hjaGdTdWI6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3Zh
bHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWlj
KE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3ViLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVu
ZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoU3ViLCBhdG9taWMtPm9w
ZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDogeworICAgICAgICAgICAgQXRvbWlj
VmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAg
aWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNBbmQsIGF0b21pYy0+
b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9X
SURUSChBbmQsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6IHsK
KyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1
ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgo
QXRvbWljT3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENP
REVfRk9SX0NBTk9OSUNBTF9XSURUSChPciwgYXRvbWljLT5vcGVyYXRpb25XaWR0aCgpKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IEF0b21pY1hjaGdYb3I6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3Zh
bHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWlj
KE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWG9yLCBhdG9taWMtPm9wZXJhdGlvbldpZHRoKCkpKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVu
ZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoWG9yLCBhdG9taWMtPm9w
ZXJhdGlvbldpZHRoKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAgQXRvbWljVmFs
dWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAgICAgICAgICAgIEFpcjo6
T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZywgYXRvbWljLT5vcGVy
YXRpb25XaWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6
VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1v
dmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0bXAoYXRv
bWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyksIGFkZHJl
c3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9X
SURUSChYb3IsIGF0b21pYy0+b3BlcmF0aW9uV2lkdGgoKSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC0yNzkyLDY0ICszMzY4LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgZGF0YUxvZygiRkFUQUw6IGNvdWxkIG5vdCBsb3dlciAiLCBkZWVwRHVtcChtX3Byb2NlZHVy
ZSwgbV92YWx1ZSksICJcbiIpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KLQotICAgIHZvaWQgbG93ZXJYODZEaXYoQjM6Ok9wY29kZSBvcCkKLSAgICB7Ci0j
aWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICAgICAgVG1wIGVheCA9IFRtcChYODZSZWdp
c3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBlZHggPSBUbXAoWDg2UmVnaXN0ZXJzOjplZHgpOwot
Ci0gICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7Ci0gICAgICAgIEFpcjo6
T3Bjb2RlIGRpdjsKLSAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKLSAgICAgICAg
Y2FzZSBJbnQzMjoKLSAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0
VG9Eb3VibGVXb3JkMzI7Ci0gICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEludDY0OgotICAgICAgICAgICAgY29udmVydFRvRG91Ymxl
V29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7Ci0gICAgICAgICAgICBkaXYgPSBYODZEaXY2
NDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKLSAgICAgICAgWDg2
UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09IERpdiA/IFg4NlJlZ2lzdGVyczo6
ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3Zh
bHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChjb252ZXJ0VG9Eb3VibGVXb3Jk
LCBlYXgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+
Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1
ZSkpOwotCi0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0ob3ApOwotICAgICAgICBVTlJFQUNI
QUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgbG93ZXJYODZV
RGl2KEIzOjpPcGNvZGUgb3ApCi0gICAgewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0g
ICAgICAgIFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4
ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBt
X3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7Ci0KLSAgICAg
ICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7Ci0gICAgICAgIFg4NlJlZ2lzdGVy
czo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBY
ODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNo
aWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKFhvcjY0LCBlZHgsIGVkeCk7Ci0gICAgICAg
IGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAg
YXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOwotI2Vsc2UKLSAgICAgICAg
VU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0j
ZW5kaWYKLSAgICB9Ci0KKyAgICAKICAgICBJbmRleFNldDxWYWx1ZT4gbV9sb2NrZWQ7IC8vIFRo
ZXNlIGFyZSB2YWx1ZXMgdGhhdCB3aWxsIGhhdmUgbm8gVG1wIGluIEFpci4KICAgICBJbmRleE1h
cDxWYWx1ZSwgVG1wPiBtX3ZhbHVlVG9UbXA7IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCBtdXN0
IGhhdmUgYSBUbXAgaW4gQWlyLiBXZSBzYXkgdGhhdCBhIFZhbHVlKiB3aXRoIGEgbm9uLW51bGwg
VG1wIGlzICJwaW5uZWQiLgogICAgIEluZGV4TWFwPFZhbHVlLCBUbXA+IG1fcGhpVG9UbXA7IC8v
IEVhY2ggUGhpIGdldHMgaXRzIG93biBUbXAuCkBAIC0yODY0LDcgKzMzODMsNyBAQCBwcml2YXRl
OgogCiAgICAgVmVjdG9yPFZlY3RvcjxJbnN0LCA0Pj4gbV9pbnN0czsKICAgICBWZWN0b3I8SW5z
dD4gbV9wcm9sb2d1ZTsKLQorICAgIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBtX2Jsb2NrOwogICAg
IGJvb2wgbV9pc1JhcmU7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKQEAgLTI4NzUsNiArMzM5NCwx
MiBAQCBwcml2YXRlOgogCiAgICAgUHJvY2VkdXJlJiBtX3Byb2NlZHVyZTsKICAgICBDb2RlJiBt
X2NvZGU7CisKKyAgICBBaXI6OkJsb2NrSW5zZXJ0aW9uU2V0IG1fYmxvY2tJbnNlcnRpb25TZXQ7
CisKKyAgICBUbXAgbV9lYXg7CisgICAgVG1wIG1fZWN4OworICAgIFRtcCBtX2VkeDsKIH07CiAK
IH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsOCBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIGNsYXNzIFByb2NlZHVyZTsKIG5hbWVzcGFjZSBB
aXIgeyBjbGFzcyBDb2RlOyB9CiAKLS8vIFRoaXMgbG93ZXJzIHRoZSBjdXJyZW50IEIzIHByb2Nl
ZHVyZSB0byBhbiBBaXIgY29kZS4KKy8vIFRoaXMgbG93ZXJzIHRoZSBjdXJyZW50IEIzIHByb2Nl
ZHVyZSB0byBhbiBBaXIgY29kZS4gTm90ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGF0IHRoZSBwcm9j
ZWR1cmUgaXMgaW4KKy8vIHF1aXJrcyBtb2RlLCBidXQgaXQgZG9lcyBub3QgYXNzZXJ0IHRoaXMs
IHRvIHNpbXBsaWZ5IGhvdyB3ZSB3cml0ZSB0ZXN0cy4KIAogSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBsb3dlclRvQWlyKFByb2NlZHVyZSYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNNZW1vcnlWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTWVtb3J5VmFsdWUuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDMwICsz
NCw0OCBAQCBNZW1vcnlWYWx1ZTo6fk1lbW9yeVZhbHVlKCkKIHsKIH0KIAorVHlwZSBNZW1vcnlW
YWx1ZTo6YWNjZXNzVHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzTG9hZCgpKQorICAgICAgICBy
ZXR1cm4gdHlwZSgpOworICAgIC8vIFRoaXMgaGFwcGVucyB0byB3b3JrIGZvciBhdG9taWNzLCB0
b28uIFRoYXQncyB3aHkgQXRvbWljVmFsdWUgZG9lcyBub3QgbmVlZCB0byBvdmVycmlkZSB0aGlz
LgorICAgIHJldHVybiBjaGlsZCgwKS0+dHlwZSgpOworfQorCitCYW5rIE1lbW9yeVZhbHVlOjph
Y2Nlc3NCYW5rKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYmFua0ZvclR5cGUoYWNjZXNzVHlwZSgp
KTsKK30KKwogc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0CiB7Cisg
ICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkpOworfQorCitXaWR0aCBNZW1vcnlWYWx1ZTo6
bG9hZFN0b3JlV2lkdGgoKSBjb25zdAorewogICAgIHN3aXRjaCAob3Bjb2RlKCkpIHsKICAgICBj
YXNlIExvYWQ4WjoKICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAg
cmV0dXJuIDE7CisgICAgICAgIHJldHVybiBXaWR0aDg7CiAgICAgY2FzZSBMb2FkMTZaOgogICAg
IGNhc2UgTG9hZDE2UzoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIHJldHVybiAyOworICAg
ICAgICByZXR1cm4gV2lkdGgxNjsKICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJldHVybiBzaXpl
b2ZUeXBlKHR5cGUoKSk7CisgICAgICAgIHJldHVybiB3aWR0aEZvclR5cGUodHlwZSgpKTsKICAg
ICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZShjaGlsZCgwKS0+dHlwZSgp
KTsKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZShjaGlsZCgwKS0+dHlwZSgpKTsKICAgICBk
ZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICB9CiB9CiAKIFdpZHRoIE1lbW9y
eVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdpZHRoRm9yQnl0ZXMo
YWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJuIGxvYWRTdG9yZVdpZHRoKCk7CiB9CiAKIHZv
aWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CkBAIC02NSw4ICs4MywxMSBAQCB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0
YShDb21tYVByaW50ZXImCiAgICAgaWYgKG1fb2Zmc2V0KQogICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJvZmZzZXQgPSAiLCBtX29mZnNldCk7CiAgICAgaWYgKChpc0xvYWQoKSAmJiBlZmZlY3Rz
KCkucmVhZHMgIT0gcmFuZ2UoKSkKLSAgICAgICAgfHwgKGlzU3RvcmUoKSAmJiBlZmZlY3RzKCku
d3JpdGVzICE9IHJhbmdlKCkpKQorICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVmZmVjdHMoKS53
cml0ZXMgIT0gcmFuZ2UoKSkKKyAgICAgICAgfHwgZmVuY2VSYW5nZSgpKQogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJyYW5nZSA9ICIsIHJhbmdlKCkpOworICAgIGlmIChmZW5jZVJhbmdlKCkp
CisgICAgICAgIG91dC5wcmludChjb21tYSwgImZlbmNlUmFuZ2UgPSAiLCBmZW5jZVJhbmdlKCkp
OwogfQogCiBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CkBAIC03NCw2ICs5
NSw2MiBAQCBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAgICAgcmV0dXJu
IG5ldyBNZW1vcnlWYWx1ZSgqdGhpcyk7CiB9CiAKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQg
KGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEg
c3VmZml4IHRoYXQKKy8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCitNZW1vcnlWYWx1
ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVu
Y2VSYW5nZSkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwg
cG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1fcmFuZ2UocmFuZ2UpCisg
ICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBMb2Fk
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICBjYXNl
IExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExvYWQxNlM6Cisg
ICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3RvcmUxNjoKKyAgICAgICAgY2FzZSBT
dG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUg
dGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhl
YXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1vcnlWYWx1ZShr
aW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlKQor
eworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNv
ZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6CisgICAg
ICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgorTWVt
b3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZh
bHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVh
cFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lk
LCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICwg
bV9yYW5nZShyYW5nZSkKKyAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQoreworICAgIEFT
U0VSVChCMzo6aXNTdG9yZShraW5kLm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNDgg
KzI3LDE3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNCYW5rLmgiCiAj
aW5jbHVkZSAiQjNIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxvdyBmZW5j
ZWQgbWVtb3J5IGFjY2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVtb3J5VmFs
dWUgOiBwdWJsaWMgVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2lu
ZCBraW5kKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAg
IGNhc2UgTG9hZDhaOgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBMb2FkMTZa
OgotICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgY2Fz
ZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNTdG9yZShL
aW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAg
ICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9y
ZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNM
b2FkKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQpICYmICFp
c1N0b3JlKGtpbmQpOworICAgICAgICByZXR1cm4gaXNNZW1vcnlBY2Nlc3Moa2luZC5vcGNvZGUo
KSk7CiAgICAgfQogCiAgICAgfk1lbW9yeVZhbHVlKCk7CkBAIC03OCw3NiArNDcsNTggQEAgcHVi
bGljOgogCiAgICAgY29uc3QgSGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFu
Z2U7IH0KICAgICB2b2lkIHNldFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9yYW5n
ZSA9IHJhbmdlOyB9CisgICAgCisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgcmFuZ2UuCisg
ICAgY29uc3QgSGVhcFJhbmdlJiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlKCk7
IH0KKyAgICB2b2lkIHNldEFjY2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgc2V0
UmFuZ2UocmFuZ2UpOyB9CisgICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBmZW5jZVJhbmdlKCkg
Y29uc3QgeyByZXR1cm4gbV9mZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRGZW5jZVJhbmdlKGNv
bnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0KKworICAgIGJv
b2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc1N0b3JlKG9wY29kZSgpKTsgfQorICAg
IGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1cm4gQjM6OmlzTG9hZChvcGNvZGUoKSk7IH0KIAot
ICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBWb2lkOyB9Ci0gICAg
Ym9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgIT0gVm9pZDsgfQorICAgIGJvb2wg
aGFzRmVuY2UoKSBjb25zdCB7IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsgfQogCisgICAgVHlwZSBh
Y2Nlc3NUeXBlKCkgY29uc3Q7CisgICAgQmFuayBhY2Nlc3NCYW5rKCkgY29uc3Q7CiAgICAgc2l6
ZV90IGFjY2Vzc0J5dGVTaXplKCkgY29uc3Q7Ci0gICAgV2lkdGggYWNjZXNzV2lkdGgoKSBjb25z
dDsKKyAgICAKKyAgICAvLyBTbGlnaHRseSBmYXN0ZXIgdmVyc2lvbiBvZiBhY2Nlc3NXaWR0aCwg
aWYgeW91IGtub3cgdGhhdCB5b3UncmUgd29ya2luZyB3aXRoIGEgbG9hZCBvciBzdG9yZS4KKyAg
ICBXaWR0aCBsb2FkU3RvcmVXaWR0aCgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgV2lkdGgg
YWNjZXNzV2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1ldGEoQ29t
bWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lk
IGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZVRhZywg
S2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zmc2V0LCBIZWFw
UmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlLCBBcmd1bWVudHMuLi4gYXJndW1lbnRz
KQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgYXJn
dW1lbnRzLi4uKQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3Jhbmdl
KHJhbmdlKQorICAgICAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQorICAgIHsKKyAgICB9
CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0KKyAgICAKICAg
ICAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBh
bnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CiAgICAgLy8gZGVzY3JpYmVz
IHRoZSByZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlw
ZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAg
ICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIp
Ci0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdl
Ojp0b3AoKSkKLSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTG9hZDoKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAgICAg
ICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAgICAgICBj
YXNlIExvYWQxNlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAg
ICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAg
IEFTU0VSVCh0eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBUeXBlLCBP
cmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5n
ZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkp
OwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBl
IGlzIGltcGxpZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBW
YWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IE1lbW9yeVZhbHVl
KGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKLSAgICB7Ci0gICAgfQorICAg
IE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0
ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNl
UmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBzdG9yZXMu
Ci0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUs
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUoQ2hl
Y2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKLSAgICAgICAg
LCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQot
ICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRj
aCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAg
ICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHZhbHVl
LCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBI
ZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKKyAg
ICAKICAgICBpbnQzMl90IG1fb2Zmc2V0IHsgMCB9OwotICAgIEhlYXBSYW5nZSBtX3JhbmdlOwor
ICAgIEhlYXBSYW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5n
ZSBtX2ZlbmNlUmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFpdHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFpdHMuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFpdHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19K
SVQpCisKKyNpbmNsdWRlICJCM0JhbmsuaCIKKyNpbmNsdWRlICJCM1R5cGUuaCIKKyNpbmNsdWRl
ICJCM1dpZHRoLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IE5hdGl2ZVRyYWl0czsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0
aXZlVHJhaXRzPGludDhfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAg
ICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDg7CisgICAgc3RhdGljIGNvbnN0IFR5
cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVp
bnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNv
bnN0IFdpZHRoIHdpZHRoID0gV2lkdGg4OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJ
bnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxpbnQxNl90PiB7Cisg
ICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3
aWR0aCA9IFdpZHRoMTY7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQxNl90PiB7CisgICAgc3RhdGlj
IGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdp
ZHRoMTY7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGludDMyX3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFu
ayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAg
ICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBOYXRpdmVUcmFpdHM8dWludDMyX3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0g
R1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAgICBzdGF0aWMg
Y29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVU
cmFpdHM8aW50NjRfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBz
dGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBl
IHR5cGUgPSBJbnQ2NDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czx1aW50
NjRfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29u
c3QgV2lkdGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJ
bnQ2NDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxmbG9hdD4geworICAg
IHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBGUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lk
dGggPSBXaWR0aDMyOworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBGbG9hdDsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxkb3VibGU+IHsKKyAgICBzdGF0aWMgY29u
c3QgQmFuayBiYW5rID0gRlA7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg2
NDsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gRG91YmxlOworfTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw2
ICs2OCwyMyBAQCBzdGQ6Om9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJlKE9wCiAgICAg
fQogfQogCitPcGNvZGUgc3RvcmVPcGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKK3sKKyAg
ICBzd2l0Y2ggKGJhbmspIHsKKyAgICBjYXNlIEdQOgorICAgICAgICBzd2l0Y2ggKHdpZHRoKSB7
CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlODsKKyAgICAg
ICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlMTY7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgICAgIH0KKyAgICBjYXNlIEZQ
OgorICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0yNjMsNiArMjgwLDMzIEBAIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGMKICAgICBjYXNlIFN0b3JlOgogICAgICAgICBv
dXQucHJpbnQoIlN0b3JlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1dlYWtD
QVM6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljV2Vha0NBUyIpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljU3Ry
b25nQ0FTIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAg
ICAgIG91dC5wcmludCgiQXRvbWljWGNoZ0FkZCIpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBBdG9taWNYY2hnQW5kOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdBbmQiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICBvdXQucHJpbnQo
IkF0b21pY1hjaGdPciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnU3Vi
OgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdTdWIiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnWG9y
Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIG91dC5w
cmludCgiQXRvbWljWGNoZyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEZXBlbmQ6Cisg
ICAgICAgIG91dC5wcmludCgiRGVwZW5kIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFdh
c21BZGRyZXNzOgogICAgICAgICBvdXQucHJpbnQoIldhc21BZGRyZXNzIik7CiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAyMTMy
NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNU
eXBlLmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtODIsNyArODMsNiBAQCBlbnVtIE9w
Y29kZSA6IGludDE2X3QgewogICAgIE1vZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBhcyB0byB3aGF0
IHdpbGwgaGFwcGVuIHdoZW4geW91IGV4ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEgYW5kIHglMC4K
ICAgICBVTW9kLAogCi0KICAgICAvLyBQb2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90ZSB0aGF0IHdl
IG9ubHkgbmVlZCB0aGlzIGZvciBmbG9hdGluZyBwb2ludCwgc2luY2UgaW50ZWdlciBuZWdhdGlv
bgogICAgIC8vIGlzIGV4YWN0bHkgbGlrZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mgbm90IHRydWUg
Zm9yIGZsb2F0aW5nIHBvaW50LiBTdWIoMCwgMCkgaXMgMCwgd2hpbGUKICAgICAvLyBOZWcoMCkg
aXMgLTAuIEFsc28sIHdlIGNhbm9uaWNhbGl6ZSBTdWIoMCwgeCkgaW50byBOZWcoeCkgaW4gY2Fz
ZSBvZiBpbnRlZ2Vycy4KQEAgLTE2Miw2ICsxNjIsMTA3IEBAIGVudW0gT3Bjb2RlIDogaW50MTZf
dCB7CiAgICAgU3RvcmUxNiwKICAgICAvLyBUaGlzIGlzIGEgcG9seW1vcnBoaWMgc3RvcmUgZm9y
IEludDMyLCBJbnQ2NCwgRmxvYXQsIGFuZCBEb3VibGUuCiAgICAgU3RvcmUsCisgICAgCisgICAg
Ly8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIGEgYm9vbGVhbi4gTWF5IGNo
b29zZSB0byBkbyBub3RoaW5nIGFuZCByZXR1cm4gZmFsc2UuIFlvdSBjYW4KKyAgICAvLyB1c3Vh
bGx5IGFzc3VtZSB0aGF0IHRoaXMgaXMgZmFzdGVyIGFuZCByZXN1bHRzIGluIGxlc3MgY29kZSB0
aGFuIEF0b21pY1N0cm9uZ0NBUywgdGhvdWdoIHRoYXQncworICAgIC8vIG5vdCBuZWNlc3Nhcmls
eSB0cnVlIG9uIEludGVsLCBpZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gZG9lcyBpdHMgam9iLiBJ
bWFnaW5lIHRoYXQgdGhpcyBvcGNvZGUgaXMKKyAgICAvLyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRv
bWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gYm9v
bCBBdG9taWNXZWFrQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQorICAg
IC8vIHsKKyAgICAvLyAgICAgaWYgKCFyYW5kKCkpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFs
c2U7IC8vIFJlYWwgd29ybGQgZXhhbXBsZSBvZiB0aGlzOiBjb250ZXh0IHN3aXRjaCBvbiBBUk0g
d2hpbGUgZG9pbmcgQ0FTLgorICAgIC8vICAgICBpZiAoKnB0ciAhPSBleHBlY3RlZFZhbHVlKQor
ICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vICAgICAqcHRyID0gbmV3VmFsdWU7
CisgICAgLy8gICAgIHJldHVybiB0cnVlOworICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUg
dGhhdCBhbGwgYXRvbWljcyBwdXQgdGhlIHBvaW50ZXIgbGFzdCB0byBiZSBjb25zaXN0ZW50IHdp
dGggaG93IGxvYWRzIGFuZCBzdG9yZXMgd29yay4gVGhpcworICAgIC8vIGlzIGEgZ29vZnkgdHJh
ZGl0aW9uLCBidXQgaXQncyBoYXJtbGVzcywgYW5kIGJldHRlciB0aGFuIGJlaW5nIGluY29uc2lz
dGVudC4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCB3ZWFrIENBUyBoYXMgbm8gZmVuY2luZyBn
dWFyYW50ZWVzIHdoZW4gaXQgZmFpbHMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nCisg
ICAgLy8gdHJhbnNmb3JtYXRpb24gaXMgYWx3YXlzIHZhbGlkOgorICAgIC8vCisgICAgLy8gQmVm
b3JlOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3Rl
ZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVs
c2U6I2ZhaWwKKyAgICAvLworICAgIC8vIEFmdGVyOgorICAgIC8vCisgICAgLy8gICAgICAgICBC
cmFuY2goRXF1YWwoTG9hZChwdHIpLCBleHBlY3RlZCkpCisgICAgLy8gICAgICAgU3VjY2Vzc29y
czogVGhlbjojYXR0ZW1wdCwgRWxzZTojZmFpbAorICAgIC8vICAgICBCQiNhdHRlbXB0OgorICAg
IC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAg
ICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8K
KyAgICAvLyBCb3RoIGtpbmRzIG9mIENBUyBmb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRo
OCBhbmQgV2lkdGgxNikgaWdub3JlIHRoZSBpcnJlbGV2YW50IGJpdHMgb2YgdGhlCisgICAgLy8g
aW5wdXQuCisgICAgQXRvbWljV2Vha0NBUywKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBh
bmQgc3dhcCB0aGF0IHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2ZSB0aGUgbm9u
ZGV0ZXJtaW5pc20gb2YgV2Vha0NBUy4KKyAgICAvLyBUaGlzIGlzIGEgYml0IG1vcmUgY29kZSBh
bmQgYSBiaXQgc2xvd2VyIGluIHNvbWUgY2FzZXMsIHRob3VnaCBub3QgYnkgYSBsb3QuIEltYWdp
bmUgdGhhdCB0aGlzCisgICAgLy8gb3Bjb2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNh
bGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBUIEF0b21p
Y1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7
CisgICAgLy8gICAgIFQgb2xkVmFsdWUgPSAqcHRyOworICAgIC8vICAgICBpZiAob2xkVmFsdWUg
PT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAv
LyAgICAgcmV0dXJuIG9sZFZhbHVlCisgICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0
IEF0b21pY1dlYWtDQVMgYW5kIEF0b21pY1N0cm9uZ0NBUyBzb3J0IG9mIGhhdmUgdGhpcyBraW5k
IG9mIGVxdWl2YWxlbmNlOgorICAgIC8vCisgICAgLy8gQXRvbWljV2Vha0NBUyhAZXhwLCBAbmV3
LCBAcHRyKSA9PSBFcXVhbChBdG9taWNTdHJvbmdDQVMoQGV4cCwgQG5ldywgQHB0ciksIEBleHAp
CisgICAgLy8KKyAgICAvLyBBc3N1bWluZyB0aGF0IHRoZSBXZWFrQ0FTIGRvZXMgbm90IHNwdXJp
b3VzbHkgZmFpbCwgb2YgY291cnNlLgorICAgIEF0b21pY1N0cm9uZ0NBUywKKyAgICAKKyAgICAv
LyBBdG9taWNhbGx5IF9fXyBhIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRoZSBvbGQgdmFs
dWUuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGdfX18oQG9w
ZXJhbmQsIEBwdHIpCisgICAgLy8KKyAgICAvLyBGb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdp
ZHRoOCBhbmQgV2lkdGgxNiksIHRoZXNlIHJldHVybiBzaWduLWV4dGVuZGVkIHJlc3VsdHMgYW5k
IGlnbm9yZSB0aGUKKyAgICAvLyBpcnJlbGV2YW50IGJpdHMgb2YgdGhlaXIgaW5wdXRzLgorICAg
IEF0b21pY1hjaGdBZGQsCisgICAgQXRvbWljWGNoZ0FuZCwKKyAgICBBdG9taWNYY2hnT3IsCisg
ICAgQXRvbWljWGNoZ1N1YiwKKyAgICBBdG9taWNYY2hnWG9yLAorICAgIAorICAgIC8vIEZJWE1F
OiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBBdG9taWNYY2hnTmVnIGFuZCBBdG9taWNYY2hnTm90Lgor
ICAgIAorICAgIC8vIEF0b21pY2FsbHkgZXhjaGFuZ2UgYSB2YWx1ZSB3aXRoIGEgbWVtb3J5IGxv
Y2F0aW9uLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNYY2hnKEBu
ZXdWYWx1ZSwgQHB0cikKKyAgICBBdG9taWNYY2hnLAorICAgIAorICAgIC8vIEludHJvZHVjZSBh
biBpbnZpc2libGUgZGVwZW5kZW5jeSBmb3IgYmxvY2tpbmcgbW90aW9uIG9mIGxvYWRzIHdpdGgg
cmVzcGVjdCB0byBlYWNoIG90aGVyLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0g
RGVwZW5kKEBwaGFudG9tKQorICAgIC8vCisgICAgLy8gVGhpcyBpcyBldmVudHVhbGx5IGNvZGVn
ZW5lcmF0ZWQgdG8gaGF2ZSBsb2NhbCBzZW1hbnRpY3MgYXMgaWYgd2UgZGlkOgorICAgIC8vCisg
ICAgLy8gQHJlc3VsdCA9ICQwCisgICAgLy8KKyAgICAvLyBCdXQgaXQgZW5zdXJlcyB0aGF0IHRo
ZSB1c2VycyBvZiBAcmVzdWx0IGNhbm5vdCBleGVjdXRlIHVudGlsIEBwaGFudG9tIGlzIGNvbXB1
dGVkLgorICAgIC8vCisgICAgLy8gVGhlIGNvbXBpbGVyIGlzIG5vdCBhbGxvd2VkIHRvIHJlYXNv
biBhYm91dCB0aGUgZmFjdCB0aGF0IERlcGVuZCBjb2RlZ2VuZXJhdGVzIHRoaXMgd2F5LiBBbnkg
a2luZAorICAgIC8vIG9mIHRyYW5zZm9ybWF0aW9uIG9yIGFuYWx5c2lzIHRoYXQgcmVsaWVzIG9u
IHRoZSBpbnNpZ2h0IHRoYXQgRGVwZW5kIGlzIHJlYWxseSB6ZXJvIGlzIHVuc291bmQsCisgICAg
Ly8gYmVjYXVzZSBpdCB1bmxvY2tzIHJlb3JkZXJpbmcgb2YgdXNlcnMgb2YgQHJlc3VsdCBhbmQg
QHBoYW50b20uCisgICAgLy8KKyAgICAvLyBPbiBYODYsIHRoaXMgaXMgbG93ZXJlZCB0byBhIGxv
YWQtbG9hZCBmZW5jZSBhbmQgQHJlc3VsdCB1c2VzIEBwaGFudG9tIGRpcmVjdGx5LgorICAgIC8v
CisgICAgLy8gT24gQVJNLCB0aGlzIGlzIGxvd2VyZWQgYXMgaWYgbGlrZToKKyAgICAvLworICAg
IC8vIEByZXN1bHQgPSBCaXRYb3IoQHBoYW50b20sIEBwaGFudG9tKQorICAgIC8vCisgICAgLy8g
RXhjZXB0IHRoYXQgdGhlIGNvbXBpbGVyIG5ldmVyIGdldHMgYW4gb3Bwb3J0dW5pdHkgdG8gc2lt
cGxpZnkgb3V0IHRoZSBCaXRYb3IuCisgICAgRGVwZW5kLAogCiAgICAgLy8gVGhpcyBpcyB1c2Vk
IHRvIGNvbXB1dGUgdGhlIGFjdHVhbCBhZGRyZXNzIG9mIGEgV2FzbSBtZW1vcnkgb3BlcmF0aW9u
LiBJdCB0YWtlcyBhbiBJbnRQdHIKICAgICAvLyBhbmQgYSBwaW5uZWQgcmVnaXN0ZXIgdGhlbiBj
b21wdXRlcyB0aGUgYXBwcm9wcmlhdGUgSW50UHRyIGFkZHJlc3MuIEZvciB0aGUgdXNlLWNhc2Ug
b2YKQEAgLTMwMSw2ICs0MDIsMTEyIEBAIGlubGluZSBib29sIGlzRGVmaW5pdGVseVRlcm1pbmFs
KE9wY29kZSAKICAgICB9CiB9CiAKK2lubGluZSBib29sIGlzTG9hZChPcGNvZGUgb3Bjb2RlKQor
eworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2Fk
OFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAg
ICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3RvcmUxNjoK
KyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0xvYWRTdG9yZShP
cGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6
CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoK
KyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9yZTE2OgorICAg
IGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljKE9wY29kZSBv
cGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6
CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAg
IGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0
b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNo
ZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNDQVMoT3Bjb2RlIG9wY29kZSkK
K3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBj
YXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNY
Y2hnKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0
b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNo
Z09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6Cisg
ICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc01lbW9yeUFj
Y2VzcyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHJldHVybiBpc0F0b21pYyhvcGNvZGUpIHx8IGlz
TG9hZFN0b3JlKG9wY29kZSk7Cit9CisKK2lubGluZSBPcGNvZGUgc2lnbkV4dGVuZE9wY29kZShX
aWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6Cisg
ICAgICAgIHJldHVybiBTRXh0ODsKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgIHJldHVybiBT
RXh0MTY7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIE9vcHM7CisgICAgfQorfQorCitKU19FWFBPUlRfUFJJVkFURSBP
cGNvZGUgc3RvcmVPcGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIw
Miw4IEBAIHZvaWQgUHJvY2VkdXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGMKICAgICAgICAg
fQogICAgICAgICBkYXRhTG9nKCIgICAgIiwgZGVlcER1bXAoKnRoaXMsIHZhbHVlKSwgIlxuIik7
CiAgICAgfQorICAgIGlmIChoYXNRdWlya3MoKSkKKyAgICAgICAgb3V0LnByaW50KCJIYXMgUXVp
cmtzOiBUcnVlXG4iKTsKICAgICBpZiAodmFyaWFibGVzKCkuc2l6ZSgpKSB7CiAgICAgICAgIG91
dC5wcmludCgiVmFyaWFibGVzOlxuIik7CiAgICAgICAgIGZvciAoVmFyaWFibGUqIHZhcmlhYmxl
IDogdmFyaWFibGVzKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUu
aAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2Vk
dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGljOgogICAgIFZh
bHVlKiBhZGRJbnRDb25zdGFudChPcmlnaW4sIFR5cGUsIGludDY0X3QgdmFsdWUpOwogICAgIFZh
bHVlKiBhZGRJbnRDb25zdGFudChWYWx1ZSosIGludDY0X3QgdmFsdWUpOwogCisgICAgLy8gWW91
J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAgICBWYWx1ZSogYWRkQm90dG9t
KE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGFkZEJvdHRvbShWYWx1ZSopOwogCkBAIC0xOTUs
NiArMTk2LDE3IEBAIHB1YmxpYzoKICAgICAvLyBhbGl2ZS4gR3JlYXQgZm9yIGNvbXBpbGVyLWdl
bmVyYXRlZCBkYXRhIHNlY3Rpb25zLCBsaWtlIHN3aXRjaCBqdW1wIHRhYmxlcyBhbmQgY29uc3Rh
bnQgcG9vbHMuCiAgICAgLy8gVGhpcyByZXR1cm5zIG1lbW9yeSB0aGF0IGhhcyBiZWVuIHplcm8t
aW5pdGlhbGl6ZWQuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWRkRGF0YVNlY3Rpb24o
c2l6ZV90KTsKKyAgICAKKyAgICAvLyBTb21lIG9wZXJhdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBC
MyBJUiB0byBiZWhhdmUgb25lIHdheSBidXQgb24gdGhpcyBnaXZlbiBDUFUgdGhleSBiZWhhdmUg
YQorICAgIC8vIGRpZmZlcmVudCB3YXkuIFdoZW4gdHJ1ZSwgdGhvc2UgQjMgSVIgb3BzIHN3aXRj
aCB0byBiZWhhdmluZyB0aGUgQ1BVIHdheSwgYW5kIHRoZSBvcHRpbWl6ZXIgbWF5CisgICAgLy8g
c3RhcnQgdGFraW5nIGFkdmFudGFnZSBvZiBpdC4KKyAgICAvLworICAgIC8vIE9uZSB3YXkgdG8g
dGhpbmsgb2YgaXQgaXMgbGlrZSB0aGlzLiBJbWFnaW5lIHRoYXQgeW91IGZpbmQgdGhhdCB0aGUg
Y2xlYW5lc3Qgd2F5IG9mIGxvd2VyaW5nCisgICAgLy8gc29tZXRoaW5nIGluIGxvd2VyTWFjcm9z
IGlzIHRvIHVuY29uZGl0aW9uYWxseSByZXBsYWNlIG9uZSBvcGNvZGUgd2l0aCBhbm90aGVyLiBU
aGlzIGlzIGEgc2hvcnRjdXQKKyAgICAvLyB3aGVyZSB5b3UgaW5zdGVhZCBrZWVwIHRoZSBzYW1l
IG9wY29kZSwgYnV0IHJlbHkgb24gdGhlIG9wY29kZSdzIG1lYW5pbmcgY2hhbmdlcyBvbmNlIGxv
d2VyTWFjcm9zCisgICAgLy8gc2V0cyBoYXNRdWlya3MuCisgICAgYm9vbCBoYXNRdWlya3MoKSBj
b25zdCB7IHJldHVybiBtX2hhc1F1aXJrczsgfQorICAgIHZvaWQgc2V0SGFzUXVpcmtzKGJvb2wg
dmFsdWUpIHsgbV9oYXNRdWlya3MgPSB2YWx1ZTsgfQogCiAgICAgT3BhcXVlQnlwcm9kdWN0cyYg
Ynlwcm9kdWN0cygpIHsgcmV0dXJuICptX2J5cHJvZHVjdHM7IH0KIApAQCAtMjUyLDYgKzI2NCw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChQcmludFN0cmVhbSYsIE9y
aWdpbik+PiBtX29yaWdpblByaW50ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9mcm9udGVuZERhdGE7
CiAgICAgUENUb09yaWdpbk1hcCBtX3BjVG9PcmlnaW5NYXA7CisgICAgYm9vbCBtX2hhc1F1aXJr
cyB7IGZhbHNlIH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODks
NiArODksMjMgQEAgYm9vbCBQdXJlQ1NFOjpwcm9jZXNzKFZhbHVlKiB2YWx1ZSwgRG9taQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBwdXJlQ1NFKFByb2NlZHVyZSYgcHJvYykKK3sKKyAg
ICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvYywgInB1cmVDU0UiKTsKKyAgICAKKyAgICBEb21p
bmF0b3JzJiBkb21pbmF0b3JzID0gcHJvYy5kb21pbmF0b3JzKCk7CisgICAgUHVyZUNTRSBwdXJl
Q1NFOworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IHByb2MuYmxvY2tzSW5QcmVPcmRlcigpKSB7CisgICAgICAgIGZvciAoVmFsdWUqIHZhbHVl
IDogKmJsb2NrKSB7CisgICAgICAgICAgICByZXN1bHQgfD0gdmFsdWUtPnBlcmZvcm1TdWJzdGl0
dXRpb24oKTsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBwdXJlQ1NFLnByb2Nlc3ModmFsdWUsIGRv
bWluYXRvcnMpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmgJKHJldmlzaW9uIDIxMzI2MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuaAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNiArNTYsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8VmFsdWVLZXksIE1hdGNoZXM+
IG1fbWFwOwogfTsKIAorYm9vbCBwdXJlQ1NFKFByb2NlZHVyZSYpOworCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCShyZXZpc2lvbiAyMTMyNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5j
bHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIK
ICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNDb21wdXRlRGl2
aXNpb25NYWdpYy5oIgpAQCAtNjAyLDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGJyZWFrOwotCisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZWc6
CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IE5lZyhjb25zdGFudCkKICAgICAgICAgICAgIC8v
IEludG8gdGhpczogLWNvbnN0YW50CkBAIC0xMjk1LDYgKzEyOTYsMTYgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgewor
ICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDgoQXRvbWljWGNoZ19fXykKKyAgICAg
ICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBp
ZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5vcGVyYXRp
b25XaWR0aCgpID09IFdpZHRoOCkgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aElk
ZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBTRXh0MTY6CkBAIC0xMzQzLDYgKzEzNTQsMTYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgeworICAgICAgICAgICAgICAg
IC8vIFR1cm4gdGhpczogU0V4dDE2KEF0b21pY1hjaGdfX18pCisgICAgICAgICAgICAgICAgLy8g
SW50byB0aGlzOiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAgICAgaWYgKGlzQXRvbWljWGNo
ZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgICAgICYmIG1f
dmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+b3BlcmF0aW9uV2lkdGgoKSA9PSBX
aWR0aDE2KSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1
ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNF
eHQzMjoKQEAgLTIxMDEsMjIgKzIxMjIsMjUgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKG1f
dmFsdWUtPm51bUNoaWxkcmVuKCkgPj0gMik7CiAgICAgICAgIAogICAgICAgICAvLyBMZWF2ZSBp
dCBhbG9uZSBpZiB0aGUgcmlnaHQgY2hpbGQgaXMgYSBjb25zdGFudC4KLSAgICAgICAgaWYgKG1f
dmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkpCisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGls
ZCgxKS0+aXNDb25zdGFudCgpCisgICAgICAgICAgICB8fCBtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bj
b2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
LSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pc0NvbnN0YW50KCkpIHsKKyAgICAgICAg
YXV0byBzd2FwID0gWyZdICgpIHsKICAgICAgICAgICAgIHN0ZDo6c3dhcChtX3ZhbHVlLT5jaGls
ZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCisgICAgICAgIH07CisgICAgICAgIAor
ICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQoKSkKKyAgICAgICAgICAg
IHJldHVybiBzd2FwKCk7CisgICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSkt
Pm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUykKKyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7
CisgICAgICAgIAogICAgICAgICAvLyBTb3J0IHRoZSBvcGVyYW5kcy4gVGhpcyBpcyBhbiBpbXBv
cnRhbnQgY2Fub25pY2FsaXphdGlvbi4gV2UgdXNlIHRoZSBpbmRleCBpbnN0ZWFkIG9mCiAgICAg
ICAgIC8vIHRoZSBhZGRyZXNzIHRvIG1ha2UgdGhpcyBhdCBsZWFzdCBzbGlnaHRseSBkZXRlcm1p
bmlzdGljLgotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmluZGV4KCkgPiBtX3ZhbHVl
LT5jaGlsZCgxKS0+aW5kZXgoKSkgewotICAgICAgICAgICAgc3RkOjpzd2FwKG1fdmFsdWUtPmNo
aWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVl
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmIChtX3ZhbHVlLT5j
aGlsZCgwKS0+aW5kZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEpLT5pbmRleCgpKQorICAgICAgICAg
ICAgcmV0dXJuIHN3YXAoKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVh
bGx5IGJlIGEgZm9yd2FyZCBhbmFseXNpcy4gSW5zdGVhZCwgd2UgdXNlcyBhIGJvdW5kZWQtc2Vh
cmNoIGJhY2t3YXJkcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNw
cAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQWly
Q29kZS5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRv
bWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
QjNEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgpAQCAtMzQ2LDYgKzM0
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRy
ZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAg
ICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgTG9hZDoKQEAgLTM1Myw2ICszNTUsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCkt
PnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgIT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxp
ZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgU3RvcmU4OgpAQCAtMzYyLDYgKzM2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUo
KSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0
YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgU3RvcmU6CkBAIC0zNjksOCArMzczLDQ5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJU
eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
PnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlk
YXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFs
dWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFr
Q0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hp
bGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50
eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQo
dmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOwor
ICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDMsICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9
PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50
eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAgICAgIHZh
bGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5k
OgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICBjYXNlIEF0b21p
Y1hjaGdTdWI6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgICAgICBj
YXNlIEF0b21pY1hjaGc6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCku
aXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlw
ZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+
Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YWxp
ZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgRGVwZW5kOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgp
Lmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUo
KSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1
ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZh
bHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUp
KTsKQEAgLTUzNyw2ICs1ODIsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVGZW5jZShWYWx1ZSogdmFsdWUp
CisgICAgeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZh
bHVlPigpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgVkFM
SURBVEUobWVtb3J5LT5hY2Nlc3NCYW5rKCkgPT0gR1AsICgiRmVuY2UgYXQgIiwgKm1lbW9yeSkp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRlQXRvbWljKFZhbHVlKiB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSB2YWx1ZS0+YXM8QXRvbWljVmFsdWU+
KCk7CisgICAgICAgIAorICAgICAgICBWQUxJREFURShiZXN0VHlwZShHUCwgYXRvbWljLT5vcGVy
YXRpb25XaWR0aCgpKSA9PSBhdG9taWMtPm9wZXJhdGlvblR5cGUoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICB9CiAKICAgICB2b2lkIHZhbGlkYXRlU3RhY2tBY2Nlc3MoVmFsdWUqIHZhbHVlKQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHJldmlzaW9uIDIx
MzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAi
QjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1
ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0JvdHRvbVByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCkBAIC01MTAsNiArNTExLDcgQEAgYm9vbCBWYWx1
ZTo6cmV0dXJuc0Jvb2woKSBjb25zdAogICAgIGNhc2UgQWJvdmVFcXVhbDoKICAgICBjYXNlIEJl
bG93RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgIGNhc2UgQXRvbWljV2Vh
a0NBUzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQaGk6CiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC01ODksNiArNTkxLDcgQEAgRWZm
ZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAgIGNh
c2UgRXF1YWxPclVub3JkZXJlZDoKICAgICBjYXNlIFNlbGVjdDoKKyAgICBjYXNlIERlcGVuZDoK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXY6CiAgICAgY2FzZSBVRGl2OgpAQCAtNjAwLDE2
ICs2MDMsNDQgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBMb2Fk
OFM6CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKLSAgICBjYXNlIExvYWQ6
Ci0gICAgICAgIHJlc3VsdC5yZWFkcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAg
IGNhc2UgTG9hZDogeworICAgICAgICBjb25zdCBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVt
b3J5VmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAg
ICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgcmVzdWx0LndyaXRl
cyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgpOworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1
ZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFN0b3JlODoKICAgICBjYXNlIFN0b3JlMTY6
Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmVzdWx0LndyaXRlcyA9IGFzPE1lbW9yeVZhbHVl
PigpLT5yYW5nZSgpOworICAgIGNhc2UgU3RvcmU6IHsKKyAgICAgICAgY29uc3QgTWVtb3J5VmFs
dWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQud3JpdGVzID0g
bWVtb3J5LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAg
ICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgICAg
IHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmNvbnRyb2xE
ZXBlbmRlbnQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBBdG9taWNX
ZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0Fk
ZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAg
Y2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0
b21pY1hjaGc6IHsKKyAgICAgICAgY29uc3QgQXRvbWljVmFsdWUqIGF0b21pYyA9IGFzPEF0b21p
Y1ZhbHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBhdG9taWMtPnJhbmdlKCkgfCBhdG9t
aWMtPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IGF0b21pYy0+cmFuZ2Uo
KSB8IGF0b21pYy0+ZmVuY2VSYW5nZSgpOworICAgICAgICBpZiAoYXRvbWljLT5oYXNGZW5jZSgp
KQorICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LmNvbnRy
b2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBXYXNt
QWRkcmVzczoKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgYnJl
YWs7CkBAIC02MTcsMTggKzY0OCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAog
ICAgICAgICBjb25zdCBGZW5jZVZhbHVlKiBmZW5jZSA9IGFzPEZlbmNlVmFsdWU+KCk7CiAgICAg
ICAgIHJlc3VsdC5yZWFkcyA9IGZlbmNlLT5yZWFkOwogICAgICAgICByZXN1bHQud3JpdGVzID0g
ZmVuY2UtPndyaXRlOwotICAgICAgICAKLSAgICAgICAgLy8gUHJldmVudCBraWxsaW5nIG9mIGZl
bmNlcyB0aGF0IGNsYWltIG5vdCB0byB3cml0ZSBhbnl0aGluZy4gSXQncyBhIGJpdCB3ZWlyZCB0
aGF0IHdlIHVzZQotICAgICAgICAvLyBsb2NhbCBzdGF0ZSBhcyB0aGUgd2F5IHRvIGRvIHRoaXMs
IGJ1dCBpdCBoYXBwZW5zIHRvIHdvcms6IHdlIG11c3QgYXNzdW1lIHRoYXQgd2UgY2Fubm90Ci0g
ICAgICAgIC8vIGtpbGwgd3JpdGVzTG9jYWxTdGF0ZSB1bmxlc3Mgd2UgdW5kZXJzdGFuZHMgZXhh
Y3RseSB3aGF0IHRoZSBpbnN0cnVjdGlvbiBpcyBkb2luZyAobGlrZQotICAgICAgICAvLyB0aGUg
d2F5IHRoYXQgZml4U1NBIHVuZGVyc3RhbmRzIFNldC9HZXQgYW5kIHRoZSB3YXkgdGhhdCByZWR1
Y2VTdHJlbmd0aCBhbmQgb3RoZXJzCi0gICAgICAgIC8vIHVuZGVyc3RhbmQgVXBzaWxvbikuIFRo
aXMgd291bGQgb25seSBiZWNvbWUgYSBwcm9ibGVtIGlmIHdlIGhhZCBzb21lIGFuYWx5c2lzIHRo
YXQgd2FzCi0gICAgICAgIC8vIGxvb2tpbmcgdG8gdXNlIHRoZSB3cml0ZXNMb2NhbFN0YXRlIGJp
dCB0byBpbnZhbGlkYXRlIGEgQ1NFIG92ZXIgbG9jYWwgc3RhdGUgb3BlcmF0aW9ucy4KLSAgICAg
ICAgLy8gVGhlbiBhIEZlbmNlIHdvdWxkIGxvb2sgYmxvY2ssIHNheSwgdGhlIGVsaW1pbmF0aW9u
IG9mIGEgcmVkdW5kYW50IEdldC4gQnV0IGl0IGxpa2UKLSAgICAgICAgLy8gdGhhdCdzIG5vdCBh
dCBhbGwgaG93IG91ciBvcHRpbWl6YXRpb25zIGZvciBTZXQvR2V0L1Vwc2lsb24vUGhpIHdvcmsg
LSB0aGV5IGdyb2sgdGhlaXIKLSAgICAgICAgLy8gb3BlcmF0aW9ucyBkZWVwbHkgZW5vdWdoIHRo
YXQgdGhleSBoYXZlIG5vIG5lZWQgdG8gY2hlY2sgdGhpcyBiaXQgLSBzbyB0aGlzIGNoZWF0IGlz
Ci0gICAgICAgIC8vIGZpbmUuCi0gICAgICAgIHJlc3VsdC53cml0ZXNMb2NhbFN0YXRlID0gdHJ1
ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgQ0NhbGw6CkBAIC02OTQsNiArNzE0LDcgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgp
IGNvbnN0CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAgIGNhc2Ug
TmVnOgorICAgIGNhc2UgRGVwZW5kOgogICAgICAgICByZXR1cm4gVmFsdWVLZXkoa2luZCgpLCB0
eXBlKCksIGNoaWxkKDApKTsKICAgICBjYXNlIEFkZDoKICAgICBjYXNlIFN1YjoKQEAgLTc0Niwx
MiArNzY3LDE2IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIH0KIH0KIAotdm9p
ZCBWYWx1ZTo6cGVyZm9ybVN1YnN0aXR1dGlvbigpCitib29sIFZhbHVlOjpwZXJmb3JtU3Vic3Rp
dHV0aW9uKCkKIHsKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGZvciAoVmFsdWUqJiBj
aGlsZCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgd2hpbGUgKGNoaWxkLT5vcGNvZGUoKSA9PSBJ
ZGVudGl0eSkKKyAgICAgICAgd2hpbGUgKGNoaWxkLT5vcGNvZGUoKSA9PSBJZGVudGl0eSkgewor
ICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPmNo
aWxkKDApOworICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIGJvb2wg
VmFsdWU6OmlzRnJlZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJ
KHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDExIEBAIHB1YmxpYzoKICAgICAKICAgICBPcGNv
ZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLm9wY29kZSgpOyB9CiAgICAgCisgICAg
Ly8gTm90ZSB0aGF0IHRoZSBraW5kIGlzIG1lYW50IHRvIGJlIGltbXV0YWJsZS4gRG8gdGhpcyB3
aGVuIHlvdSBrbm93IHRoYXQgdGhpcyBpcyBzYWZlLiBJdCdzIG5vdAorICAgIC8vIHVzdWFsbHkg
c2FmZS4KKyAgICB2b2lkIHNldEtpbmRVbnNhZmVseShLaW5kIGtpbmQpIHsgbV9raW5kID0ga2lu
ZDsgfQorICAgIHZvaWQgc2V0T3Bjb2RlVW5zYWZlbHkoT3Bjb2RlIG9wY29kZSkgeyBtX2tpbmQu
c2V0T3Bjb2RlKG9wY29kZSk7IH0KKyAgICAKICAgICAvLyBJdCdzIGdvb2QgcHJhY3RpY2UgdG8g
bWlycm9yIEtpbmQgbWV0aG9kcyBoZXJlLCBzbyB5b3UgY2FuIHNheSB2YWx1ZS0+aXNCbGFoKCkK
ICAgICAvLyBpbnN0ZWFkIG9mIHZhbHVlLT5raW5kKCkuaXNCbGFoKCkuCiAgICAgYm9vbCBpc0No
aWxsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLmlzQ2hpbGwoKTsgfQpAQCAtMTA3LDYgKzExMiw4
IEBAIHB1YmxpYzoKICAgICAvLyB2YWx1ZXMgd2l0aCBJZGVudGl0aWVzIG9uIGJvdHRvbSBjb25z
dGFudHMuIEZvciB0aGlzIHJlYXNvbiwgdGhpcyB0YWtlcyBhIGNhbGxiYWNrIHRoYXQgaXMKICAg
ICAvLyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYm90dG9tcy4gVGhlcmUncyBhIHV0aWxpdHkg
Zm9yIHRoaXMsIHNlZSBCM0JvdHRvbVByb3ZpZGVyLmguIFlvdQogICAgIC8vIGNhbiBhbHNvIGFj
Y2VzcyB0aGF0IHV0aWxpdHkgdXNpbmcgcmVwbGFjZVdpdGhCb3R0b20oSW5zZXJ0aW9uU2V0Jiwg
c2l6ZV90KS4KKyAgICAvLworICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlz
IHplcm8uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQm90dG9tUHJvdmlkZXI+CiAgICAgdm9pZCBy
ZXBsYWNlV2l0aEJvdHRvbShjb25zdCBCb3R0b21Qcm92aWRlciYpOwogICAgIApAQCAtMjU2LDcg
KzI2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBNYWtlcyBzdXJlIHRoYXQgbm9uZSBvZiB0aGUgY2hp
bGRyZW4gYXJlIElkZW50aXR5J3MuIElmIGEgY2hpbGQgcG9pbnRzIHRvIElkZW50aXR5LCB0aGlz
IHdpbGwKICAgICAvLyByZXBvaW50IGl0IGF0IHRoZSBJZGVudGl0eSdzIGNoaWxkLiBGb3Igc2lt
cGxpY2l0eSwgdGhpcyB3aWxsIGZvbGxvdyBhcmJpdHJhcmlseSBsb25nIGNoYWlucwogICAgIC8v
IG9mIElkZW50aXR5J3MuCi0gICAgdm9pZCBwZXJmb3JtU3Vic3RpdHV0aW9uKCk7CisgICAgYm9v
bCBwZXJmb3JtU3Vic3RpdHV0aW9uKCk7CiAgICAgCiAgICAgLy8gRnJlZSB2YWx1ZXMgYXJlIHRo
b3NlIHdob3NlIHByZXNlbmNlIGlzIGd1YXJhbnRlZWQgbm90IHRvIGh1cnQgY29kZS4gV2UgY29u
c2lkZXIgY29uc3RhbnRzLAogICAgIC8vIElkZW50aXRpZXMsIGFuZCBOb3BzIHRvIGJlIGZyZWUu
IENvbnN0YW50cyBhcmUgZnJlZSBiZWNhdXNlIHdlIGhvaXN0IHRoZW0gdG8gYW4gb3B0aW1hbCBw
bGFjZS4KQEAgLTMyMSw2ICszMjgsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElUb0Y6CiAg
ICAgICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBj
YXNlIERlcGVuZDoKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9IDEpKQogICAg
ICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJncyk7CiAgICAgICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAJKHJldmlzaW9uIDIxMzI2MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsMzggQEAKIAogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdp
ZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAg
ICBjYXNlIFdpZHRoMTY6CisgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICBzd2l0Y2ggKGJhbmsp
IHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJldHVybiBJbnQzMjsKKyAgICAgICAg
Y2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBGbG9hdDsKKyAgICAgICAgfQorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICBj
YXNlIFdpZHRoNjQ6CisgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNlIEdQOgor
ICAgICAgICAgICAgcmV0dXJuIEludDY0OworICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAg
cmV0dXJuIERvdWJsZTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVm9pZDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCisKIG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgSlNDOjpCMzo6V2lkdGggd2lkdGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNXaWR0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1dpZHRoLmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1dpZHRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDE4IEBAIGlubGluZSBXaWR0aCB3
aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitp
bmxpbmUgV2lkdGggY2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgpCit7CisgICAgcmV0dXJuIHN0
ZDo6bWF4KFdpZHRoMzIsIHdpZHRoKTsKK30KKworaW5saW5lIGJvb2wgaXNDYW5vbmljYWxXaWR0
aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gd2lkdGggPj0gV2lkdGgzMjsKK30KKworVHlw
ZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKTsKKwogaW5saW5lIFdpZHRoIGNvbnNl
cnZhdGl2ZVdpZHRoKEJhbmsgYmFuaykKIHsKICAgICByZXR1cm4gYmFuayA9PSBHUCA/IHBvaW50
ZXJXaWR0aCgpIDogV2lkdGg2NDsKQEAgLTkzLDYgKzEwNSwyMCBAQCBpbmxpbmUgV2lkdGggd2lk
dGhGb3JCeXRlcyh1bnNpZ25lZCBieXRlCiAgICAgfQogfQogCitpbmxpbmUgdWludDY0X3QgbWFz
ayhXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6
CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMDAwZmZsbHU7CisgICAgY2FzZSBXaWR0aDE2
OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDBmZmZmbGx1OworICAgIGNhc2UgV2lkdGgz
MjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDBmZmZmZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRo
NjQ6CisgICAgICAgIHJldHVybiAweGZmZmZmZmZmZmZmZmZmZmZsbHU7CisgICAgfQorfQorCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJBaXJWYWxpZGF0ZS5oIgogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUg
IkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb21waWxhdGlvbi5oIgpAQCAtNDQs
NiArNDUsNyBAQAogI2luY2x1ZGUgIkIzTWF0aEV4dHJhcy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5
VmFsdWUuaCIKICNpbmNsdWRlICJCM01vdmVDb25zdGFudHMuaCIKKyNpbmNsdWRlICJCM05hdGl2
ZVRyYWl0cy5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSAiQjNSZWR1Y2VT
dHJlbmd0aC5oIgogI2luY2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5oIgpAQCAtMjk3LDYgKzI5OSwy
NCBAQCB2b2lkIHRlc3RMb2FkNDIoKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9j
KSA9PSA0Mik7CiB9CiAKK3ZvaWQgdGVzdExvYWRBY3E0MigpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQgeCA9
IDQyOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJngpLAorICAgICAgICAg
ICAgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSkpOworCisgICAgYXV0byBjb2RlID0g
Y29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9PSA0
Mik7Cit9CisKIHZvaWQgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbChpbnQzMl90IG9mZnNldDY0LCBp
bnQzMl90IG9mZnNldDMyKQogewogICAgIHsKQEAgLTU3NDgsNiArNTc2OCwzNSBAQCB2b2lkIHRl
c3RTdG9yZUFkZExvYWQzMihpbnQgYW1vdW50KQogICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91
bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3EzMihpbnQgYW1vdW50KQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBzbG90UHRyLCAw
LCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAgICAgICBzbG90UHRyLCAwLCBIZWFw
UmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUg
PSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24o
KmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91
bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3Rv
cmVBZGRMb2FkSW1tMzIoaW50IGFtb3VudCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTU3
OTIsNiArNTg0MSw3NCBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQ4KGludCBhbW91bnQsIEIzOjpP
CiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7CiB9CiAKK3ZvaWQgdGVzdFN0b3JlUmVs
QWRkTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgaW50OF90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmU4LCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFk
ZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBI
ZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFu
Z2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBj
b21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5z
dHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNv
ZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQp
KTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVS
ZWxBZGRGZW5jZUxvYWRBY3E4KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIGludDhfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOwor
ICAgIFZhbHVlKiBsb2FkZWRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisg
ICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2Uo
NDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBy
b290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7Cisg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJz
KCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAg
ICAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGJlZWYpLCAm
c2xvdCk7CisgICAgICAgIH0pOworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpu
b25lKCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5mZW5jZSA9IHRydWU7CisgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmU4LCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCisgICAgICAgICAgICBsb2FkZWRWYWx1ZSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAgICAgICBzbG90UHRyLCAwLCBI
ZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNv
ZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBh
bW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30KKwogdm9pZCB0ZXN0
U3RvcmVBZGRMb2FkSW1tOChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCiB7CiAg
ICAgUHJvY2VkdXJlIHByb2M7CkBAIC01ODM2LDYgKzU5NTMsMzUgQEAgdm9pZCB0ZXN0U3RvcmVB
ZGRMb2FkMTYoaW50IGFtb3VudCwgQjM6OgogICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQp
OwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNihpbnQgYW1vdW50LCBCMzo6T3Bj
b2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQxNl90IHNsb3QgPSAzNzsKKyAgICBDb25z
dFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAg
ICAgICAgcHJvYywgU3RvcmUxNiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bj
b2RlLCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwK
KyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02
NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQorICAgIENIRUNL
KCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFt
b3VudCk7Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTE2KGludCBhbW91bnQsIEIzOjpP
cGNvZGUgbG9hZE9wY29kZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTU4NzgsNiArNjAy
NCwzMyBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQ2NChpbnQgYW1vdW50KQogICAgIENIRUNLKHNs
b3QgPT0gMzcwMDAwMDAwMDBsbCArIGFtb3VudCk7CiB9CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRk
TG9hZEFjcTY0KGludCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQ2NF90IHNsb3QgPSAzNzAwMDAw
MDAwMGxsOworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAg
ICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0Miks
IEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAg
c2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwor
CisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7Cisg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8
aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNzAwMDAwMDAwMGxsICsg
YW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tNjQoaW50NjRfdCBhbW91bnQp
CiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzc5MSw3ICsxMzk2NCw3IEBAIHZvaWQgdGVz
dFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCiAgICAgY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Mp
OwogICAgIHVuc2lnbmVkIHN0b3JlQ291bnQgPSAwOwogICAgIGZvciAoVmFsdWUqIHZhbHVlIDog
cHJvYy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoTWVtb3J5VmFsdWU6OmlzU3RvcmUodmFsdWUt
Pm9wY29kZSgpKSkKKyAgICAgICAgaWYgKGlzU3RvcmUodmFsdWUtPm9wY29kZSgpKSkKICAgICAg
ICAgICAgIHN0b3JlQ291bnQrKzsKICAgICB9CiAgICAgQ0hFQ0tfRVEoc3RvcmVDb3VudCwgMnUp
OwpAQCAtMTQyNzcsNiArMTQ0NTAsNDgxIEBAIHZvaWQgdGVzdE9wdGltaXplTWF0ZXJpYWxpemF0
aW9uKCkKICAgICBDSEVDSyhmb3VuZCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lk
IHRlc3RBdG9taWNXZWFrQ0FTKCkKK3sKKyAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46
OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOworICAgIAor
ICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChDb21waWxhdGlvbiYgY29tcGlsYXRp
b24pIHsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3Ry
dWN0aW9uKGNvbXBpbGF0aW9uLCAibG9jayIpOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1
Y3Rpb24oY29tcGlsYXRpb24sICJjbXB4Y2hnIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBjaGVja0Rpc2Fzc2VtYmx5KAorICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uLAorICAg
ICAgICAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlzYXNzZW1ibHkpIC0+IGJvb2wgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnN0cihkaXNhc3NlbWJseSwgImxkeCIpIHx8IHN0
cnN0cihkaXNhc3NlbWJseSwgImxkYXgiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChz
dHJzdHIoZGlzYXNzZW1ibHksICJzdHgiKSB8fCBzdHJzdHIoZGlzYXNzZW1ibHksICJzdGx4Iikp
OworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIkV4cGVjdGVkIHRvIGZpbmQg
bGR4L2xkYXggYW5kIHN0eC9zdGx4IGJ1dCBkaWRuJ3QhIik7CisgICAgICAgIH0KKyAgICB9Owor
ICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlbG9vcCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgICAg
ICByb290LT5zZXRTdWNjZXNzb3JzKHJlbG9vcCk7CisgICAgICAgIAorICAgICAgICByZWxvb3At
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAor
ICAgICAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAg
ICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisg
ICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwg
dHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBwdHIpKTsKKyAgICAgICAgcmVsb29wLT5z
ZXRTdWNjZXNzb3JzKGRvbmUsIHJlbG9vcCk7CisgICAgICAgIAorICAgICAgICBkb25lLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAg
YXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpj
b2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAg
ICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgQmFzaWNCbG9jayogcmVsb29wID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBCYXNpY0Jsb2NrKiBkb25lID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAg
VmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMo
cmVsb29wKTsKKyAgICAgICAgCisgICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByZWxvb3AtPmFw
cGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NB
UywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29u
c3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByZWxvb3At
PmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAg
ICAgICAgICAgIHB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKCkpKTsKKyAgICAgICAg
cmVsb29wLT5zZXRTdWNjZXNzb3JzKGRvbmUsIHJlbG9vcCk7CisgICAgICAgIAorICAgICAgICBk
b25lLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tNeURpc2Fz
c2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0
MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2
YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICB9CisgICAgCisgICAgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisg
ICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9j
LCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVm
KSwKKyAgICAgICAgICAgICAgICBwdHIpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhz
dWNjLCBmYWlsKTsKKyAgICAgICAgCisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGZhaWwtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBh
dXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNv
ZGUpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAg
ICB2YWx1ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAodmFsdWVbMF0gPT0gNDIpCisgICAgICAg
ICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9r
ZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGlj
X2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgfQor
ICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMs
IE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29u
c3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAg
ICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29u
c3RhbnQocHJvYywgT3JpZ2luKCksIEludDMyLCAwKSkpOworICAgICAgICByb290LT5zZXRTdWNj
ZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9y
aWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFp
bC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisg
ICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3Nl
bWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7
CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICh2YWx1ZVswXSA9PSA0MikK
KyAgICAgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19F
USh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVl
WzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAg
ICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsK
KyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0
b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgICAgICAKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2Rl
KTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAg
dmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hpbGUgKCFpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVl
KSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgCisgICAgICAgIHZh
bHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0soIWludm9rZTxib29s
PigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0
PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgIH0KK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1N0cm9uZ0NBUygpCit7CisgICAg
VHlwZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBlOworICAgIFdpZHRoIHdpZHRoID0gTmF0
aXZlVHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9
IFsmXSAoQ29tcGlsYXRpb24mIGNvbXBpbGF0aW9uKSB7CisgICAgICAgIGlmIChpc1g4NigpKSB7
CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsK
KyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAiY21weGNoZyIp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2hlY2tEaXNhc3NlbWJseSgKKyAgICAg
ICAgICAgICAgICBjb21waWxhdGlvbiwKKyAgICAgICAgICAgICAgICBbJl0gKGNvbnN0IGNoYXIq
IGRpc2Fzc2VtYmx5KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzdHJz
dHIoZGlzYXNzZW1ibHksICJsZHgiKSB8fCBzdHJzdHIoZGlzYXNzZW1ibHksICJsZGF4IikpCisg
ICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3Ryc3RyKGRpc2Fzc2VtYmx5LCAic3R4IikgfHwg
c3Ryc3RyKGRpc2Fzc2VtYmx5LCAic3RseCIpKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICJFeHBlY3RlZCB0byBmaW5kIGxkeC9sZGF4IGFuZCBzdHgvc3RseCBidXQgZGlk
bid0ISIpOworICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Js
b2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0
ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAg
ICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywg
T3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDQyKSkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHN1Y2MsIGZhaWwpOworICAgICAg
ICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAg
ICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUo
cHJvYyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFs
dWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7Cisg
ICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAx
Myk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52
b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0
aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICB9
CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ry
b25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYp
LAorICAgICAgICAgICAgICAgICAgICBwdHIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgcm9vdC0+
c2V0U3VjY2Vzc29ycyhmYWlsLCBzdWNjKTsKKyAgICAgICAgCisgICAgICAgIHN1Y2MtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lk
dGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAgc3VjYy0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAg
ICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAg
ICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBjaGVja015
RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVsw
XSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZva2U8dm9pZD4oKmNv
ZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEw
MCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9
IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0
aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHBy
b2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAg
ICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAg
ICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgQ0hF
Q0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIDQyKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsx
XSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFsdWUpLCBzdGF0aWNfY2FzdDxUPigzMDApKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21p
Y1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhi
ZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7
CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBj
aGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2
YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBDSEVDSyhpbnZv
a2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0
aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAg
ICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBDSEVDSyghaW52
b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
fQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2lu
KCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgcHJv
YywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgNDIpKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpKTsKKyAgICAgICAgICAgIAorICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHko
KmNvZGUpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAg
ICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZh
bHVlKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBz
dGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCAm
dmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgIH0KK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1hjaGcoQjM6Ok9wY29kZSBvcGNvZGUpCit7Cisg
ICAgVHlwZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBlOworICAgIFdpZHRoIHdpZHRoID0g
TmF0aXZlVHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBhdXRvIGRvVGhlTWF0aCA9IFsmXSAo
VCYgbWVtb3J5LCBUIG9wZXJhbmQpIC0+IFQgeworICAgICAgICBUIG9sZFZhbHVlID0gbWVtb3J5
OworICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6
CisgICAgICAgICAgICBtZW1vcnkgKz0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBtZW1vcnkgJj0gb3BlcmFuZDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAg
ICAgIG1lbW9yeSB8PSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIG1lbW9yeSAtPSBvcGVyYW5kOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgIG1lbW9y
eSBePSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNo
ZzoKKyAgICAgICAgICAgIG1lbW9yeSA9IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOworICAgIH07CisgICAgCisgICAg
YXV0byBvbGRWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7CisgICAgICAg
IHJldHVybiBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5kKTsKKyAgICB9OworICAgIAorICAgIGF1
dG8gbmV3VmFsdWUgPSBbJl0gKFQgbWVtb3J5LCBUIG9wZXJhbmQpIC0+IFQgeworICAgICAgICBk
b1RoZU1hdGgobWVtb3J5LCBvcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuIG1lbW9yeTsKKyAgICB9
OworICAgIAorICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChDb21waWxhdGlvbiYg
Y29tcGlsYXRpb24pIHsKKyAgICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KAorICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uLAor
ICAgICAgICAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlzYXNzZW1ibHkpIC0+IGJvb2wgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnN0cihkaXNhc3NlbWJseSwgImxkeCIpIHx8
IHN0cnN0cihkaXNhc3NlbWJseSwgImxkYXgiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYm
IChzdHJzdHIoZGlzYXNzZW1ibHksICJzdHgiKSB8fCBzdHJzdHIoZGlzYXNzZW1ibHksICJzdGx4
IikpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIkV4cGVjdGVkIHRvIGZp
bmQgbGR4L2xkYXggYW5kIHN0eC9zdGx4IGJ1dCBkaWRuJ3QhIik7IAorICAgICAgICB9CisgICAg
fTsKKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgb3Bjb2Rl
LCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3Rh
bnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAg
ICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAg
ICAgdmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIG9sZFZhbHVlKDUsIDQyKSk7CisgICAgICAgIENI
RUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0MikpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVsxXSwgMTAwKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIG9wY29kZSwgT3Jp
Z2luKCksIHdpZHRoLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywg
T3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAg
CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNrTXlEaXNh
c3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0g
NTsKKyAgICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAgIGludm9rZTxUPigqY29kZSwgdmFs
dWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFsdWUoNSwgNDIpKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAgfQorfQorCiB2b2lkIHRlc3RXYXNtQm91
bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTQz
NzAsNiArMTUwMTgsMTMgQEAgZG91YmxlIG5lZ2F0aXZlWmVybygpCiAgICAgcmV0dXJuIC16ZXJv
KCk7CiB9CiAKKyNkZWZpbmUgUlVOX05PVyh0ZXN0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ZGF0YUxvZygjdGVzdCAiLi4uXG4iKTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGVzdDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVz
dCAiOiBPSyFcbiIpOyAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKICNkZWZp
bmUgUlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYg
KCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGJyZWFr
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE0NDIxLDEyICsxNTA3NiwxMSBA
QCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgIHJldHVybiAhZmlsdGVyIHx8
ICEhc3RyY2FzZXN0cih0ZXN0TmFtZSwgZmlsdGVyKTsKICAgICB9OwogCi0gICAgLy8gV2UgcnVu
IHRoaXMgdGVzdCBmaXJzdCBiZWNhdXNlIGl0IGZpZGRsZXMgd2l0aCBzb21lCi0gICAgLy8gSlND
IG9wdGlvbnMuCi0gICAgdGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVk
MigpOworICAgIFJVTl9OT1codGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGls
bGVkMigpKTsKIAogICAgIFJVTih0ZXN0NDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkNDIoKSk7Cisg
ICAgUlVOKHRlc3RMb2FkQWNxNDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1heCgp
KTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c09uZSgpKTsKICAgICBSVU4odGVz
dExvYWRPZmZzZXRJbW05TWF4UGx1c1R3bygpKTsKQEAgLTE1MDk5LDE2ICsxNTc1MywyMyBAQCB2
b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3ROZWczMig1MikpOwogICAg
IFJVTih0ZXN0TmVnUHRyKDUzKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQzMig0NikpOwor
ICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIoNDYpKTsKICAgICBSVU4odGVzdFN0b3Jl
QWRkTG9hZEltbTMyKDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ2NCg0NjAwKSk7Cisg
ICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E2NCg0NjAwKSk7CiAgICAgUlVOKHRlc3RTdG9y
ZUFkZExvYWRJbW02NCg0NjAwKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4KDQsIExvYWQ4
WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxOCg0LCBMb2FkOFopKTsKKyAgICBS
VU4odGVzdFN0b3JlUmVsQWRkRmVuY2VMb2FkQWNxOCg0LCBMb2FkOFopKTsKICAgICBSVU4odGVz
dFN0b3JlQWRkTG9hZEltbTgoNCwgTG9hZDhaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4
KDQsIExvYWQ4UykpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxOCg0LCBMb2FkOFMp
KTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgoNCwgTG9hZDhTKSk7CiAgICAgUlVOKHRl
c3RTdG9yZUFkZExvYWQxNig2LCBMb2FkMTZaKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExv
YWRBY3ExNig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0xNig2LCBM
b2FkMTZaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQxNig2LCBMb2FkMTZTKSk7CisgICAg
UlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBMb2FkMTZTKSk7CiAgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQz
MkluZGV4KDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0zMkluZGV4KDQ2KSk7CkBA
IC0xNTgzMSw2ICsxNjQ5MiwzOSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAg
UlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQyKCkpOwogICAgIFJVTih0ZXN0TG9hZEJhc2VJbmRl
eFNoaWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXphdGlvbigpKTsKKyAg
ICAKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50OF90PigpKTsKKyAgICBSVU4odGVzdEF0
b21pY1dlYWtDQVM8aW50MTZfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDMy
X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxpbnQ2NF90PigpKTsKKyAgICBSVU4o
dGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ4X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25n
Q0FTPGludDE2X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDMyX3Q+KCkp
OworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDY0X3Q+KCkpOworICAgIFJVTih0ZXN0
QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hj
aGc8aW50MTZfdD4oQXRvbWljWGNoZ0FkZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQz
Ml90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0
b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hn
QW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdBbmQpKTsK
KyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ0FuZCkpOworICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RB
dG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hn
PGludDE2X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQzMl90
PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWlj
WGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ1N1Yikp
OworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hnU3ViKSk7CisgICAg
UlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGdTdWIpKTsKKyAgICBSVU4odGVz
dEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWlj
WGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50
MTZfdD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihB
dG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hj
aGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnKSk7Cisg
ICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGcpKTsKKyAgICBSVU4odGVz
dEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZykpOworICAgIFJVTih0ZXN0QXRvbWljWGNo
ZzxpbnQ2NF90PihBdG9taWNYY2hnKSk7CiAKICAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjaygw
KSk7CiAgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soMTAwKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2
ICsxMDIsNyBAQCB1bnNpZ25lZCBBcmc6OmpzSGFzaCgpIGNvbnN0CiAgICAgY2FzZSBSZWxDb25k
OgogICAgIGNhc2UgUmVzQ29uZDoKICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgY2FzZSBTdGF0
dXNDb25kOgogICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9vZmZzZXQpOwogICAgICAgICBicmVhazsKQEAgLTExMCw2ICsxMTEsOSBA
QCB1bnNpZ25lZCBBcmc6OmpzSGFzaCgpIGNvbnN0CiAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpOwogICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fb2Zmc2V0ID4+IDMyKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1w
bGVBZGRyOgorICAgICAgICByZXN1bHQgKz0gbV9iYXNlLmludGVybmFsVmFsdWUoKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBBZGRyOgogICAgICAgICByZXN1bHQgKz0gbV9vZmZzZXQ7CiAg
ICAgICAgIHJlc3VsdCArPSBtX2Jhc2UuaW50ZXJuYWxWYWx1ZSgpOwpAQCAtMTUwLDYgKzE1NCw5
IEBAIHZvaWQgQXJnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgY2FzZSBCaXRJ
bW02NDoKICAgICAgICAgb3V0LnByaW50ZigiJDB4JWxseCIsIHN0YXRpY19jYXN0PGxvbmcgbG9u
ZyB1bnNpZ25lZD4obV9vZmZzZXQpKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2ltcGxl
QWRkcjoKKyAgICAgICAgb3V0LnByaW50KCIoIiwgYmFzZSgpLCAiKSIpOworICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBBZGRyOgogICAgICAgICBpZiAob2Zmc2V0KCkpCiAgICAgICAgICAgICBv
dXQucHJpbnQob2Zmc2V0KCkpOwpAQCAtMTgyLDYgKzE4OSw5IEBAIHZvaWQgQXJnOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgY2FzZSBEb3VibGVDb25kOgogICAgICAgICBvdXQu
cHJpbnQoYXNEb3VibGVDb25kaXRpb24oKSk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0
YXR1c0NvbmQ6CisgICAgICAgIG91dC5wcmludChhc1N0YXR1c0NvbmRpdGlvbigpKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgb3V0LnByaW50KHBvaW50ZXJE
dW1wKHNwZWNpYWwoKSkpOwogICAgICAgICByZXR1cm47CkBAIC0yMjAsNiArMjMwLDkgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpCaXRJ
bW02NDoKICAgICAgICAgb3V0LnByaW50KCJCaXRJbW02NCIpOwogICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBBcmc6OlNpbXBsZUFkZHI6CisgICAgICAgIG91dC5wcmludCgiU2ltcGxlQWRkciIp
OworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OkFkZHI6CiAgICAgICAgIG91dC5wcmlu
dCgiQWRkciIpOwogICAgICAgICByZXR1cm47CkBAIC0yNDEsNiArMjU0LDkgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpEb3VibGVDb25k
OgogICAgICAgICBvdXQucHJpbnQoIkRvdWJsZUNvbmQiKTsKICAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgQXJnOjpTdGF0dXNDb25kOgorICAgICAgICBvdXQucHJpbnQoIlN0YXR1c0NvbmQiKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpTcGVjaWFsOgogICAgICAgICBvdXQucHJp
bnQoIlNwZWNpYWwiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg1LDYgKzMwMSw5IEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6RWFybHlE
ZWY6CiAgICAgICAgIG91dC5wcmludCgiRWFybHlEZWYiKTsKICAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgQXJnOjpFYXJseVpEZWY6CisgICAgICAgIG91dC5wcmludCgiRWFybHlaRGVmIik7Cisg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAgb3V0LnByaW50
KCJTY3JhdGNoIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQXJnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBcmcuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJBcmcuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6
CiAKICAgICAgICAgLy8gVGhlc2UgYXJlIHRoZSBhZGRyZXNzZXMuIEluc3RydWN0aW9ucyBtYXkg
bG9hZCBmcm9tIChVc2UpLCBzdG9yZSB0byAoRGVmKSwgb3IgZXZhbHVhdGUKICAgICAgICAgLy8g
KFVzZUFkZHIpIGFkZHJlc3Nlcy4KKyAgICAgICAgU2ltcGxlQWRkciwKICAgICAgICAgQWRkciwK
ICAgICAgICAgU3RhY2ssCiAgICAgICAgIENhbGxBcmcsCkBAIC04Miw2ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgUmVsQ29uZCwKICAgICAgICAgUmVzQ29uZCwKICAgICAgICAgRG91YmxlQ29u
ZCwKKyAgICAgICAgU3RhdHVzQ29uZCwKICAgICAgICAgU3BlY2lhbCwKICAgICAgICAgV2lkdGhB
cmcKICAgICB9OwpAQCAtMTUxLDYgKzE1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gYXMgVXNl
IGhhcyB1bmRlZmluZWQgYmVoYXZpb3I6IHRoZSB1c2UgbWF5IGhhcHBlbiBiZWZvcmUgdGhlIGRl
Ziwgb3IgaXQgbWF5IGhhcHBlbiBhZnRlcgogICAgICAgICAvLyBpdC4KICAgICAgICAgRWFybHlE
ZWYsCisgICAgICAgICAgICAKKyAgICAgICAgRWFybHlaRGVmLAogCiAgICAgICAgIC8vIFNvbWUg
aW5zdHJ1Y3Rpb25zIG5lZWQgYSBzY3JhdGNoIHJlZ2lzdGVyLiBXZSBtb2RlbCB0aGlzIGJ5IHNh
eWluZyB0aGF0IHRoZSB0ZW1wb3JhcnkgaXMKICAgICAgICAgLy8gZGVmaW5lZCBlYXJseSBhbmQg
dXNlZCBsYXRlLiBUaGlzIHJvbGUgaW1wbGllcyB0aGF0LgpAQCAtMTg2LDYgKzE5MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAg
IGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MjA2LDYgKzIxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBj
YXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHla
RGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI4LDYgKzIzNCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2Fz
ZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6
CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHJvbGU7CiAgICAg
ICAgIGNhc2UgVXNlOgogICAgICAgICAgICAgcmV0dXJuIENvbGRVc2U7CkBAIC0yNTMsNiArMjYw
LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICBjYXNlIFNj
cmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMjc0LDYgKzI4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVm
OgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAg
IGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk0LDYgKzMwMyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAgIGNhc2Ug
RWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzE1LDYgKzMyNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAg
ICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CkBAIC0zMzAsNiArMzQxLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAg
ICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBF
YXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVz
ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1OCw2ICszNzAsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAg
Y2FzZSBVc2VaRGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDE2
LDYgKzQyOSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBiaWdJbW0oYml0d2lzZV9jYXN0
PGludHB0cl90PihhZGRyZXNzKSk7CiAgICAgfQogCisgICAgc3RhdGljIEFyZyBzaW1wbGVBZGRy
KEFpcjo6VG1wIHB0cikKKyAgICB7CisgICAgICAgIEFTU0VSVChwdHIuaXNHUCgpKTsKKyAgICAg
ICAgQXJnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFNpbXBsZUFkZHI7CisgICAg
ICAgIHJlc3VsdC5tX2Jhc2UgPSBwdHI7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CiAgICAgc3RhdGljIEFyZyBhZGRyKEFpcjo6VG1wIGJhc2UsIGludDMyX3Qgb2Zmc2V0ID0gMCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChiYXNlLmlzR1AoKSk7CkBAIC01MzMsNiArNTU1LDE0IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgQXJn
IHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisg
ICAgeworICAgICAgICBBcmcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gU3RhdHVz
Q29uZDsKKyAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY29uZGl0aW9uOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKwogICAgIHN0YXRpYyBBcmcgc3BlY2lhbChBaXI6OlNwZWNpYWwq
IHNwZWNpYWwpCiAgICAgewogICAgICAgICBBcmcgcmVzdWx0OwpAQCAtNjA4LDYgKzYzOCwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBib29sIGlzU2ltcGxlQWRkcigpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4ga2luZCgpID09IFNpbXBsZUFkZHI7CisgICAgfQor
CiAgICAgYm9vbCBpc0FkZHIoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGtpbmQoKSA9
PSBBZGRyOwpAQCAtNjMxLDYgKzY2Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTWVtb3J5KCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgICAgIGNhc2UgU2lt
cGxlQWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgogICAgICAgICBjYXNlIFN0YWNrOgogICAgICAg
ICBjYXNlIENhbGxBcmc6CkBAIC02NDEsNiArNjc3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGFuIGlkaW9tYXRpYyBzdGFj
ayByZWZlcmVuY2UuIEl0IG1heSByZXR1cm4gZmFsc2UgZm9yIHNvbWUga2luZHMgb2YKKyAgICAv
LyBzdGFjayByZWZlcmVuY2VzLiBUaGUgZm9sbG93aW5nIGlkaW9tcyBhcmUgcmVjb2duaXplZDoK
KyAgICAvLyAtIHRoZSBTdGFjayBraW5kCisgICAgLy8gLSB0aGUgQ2FsbEFyZyBraW5kCisgICAg
Ly8gLSB0aGUgQWRkciBraW5kIHdpdGggdGhlIGJhc2UgYmVpbmcgZWl0aGVyIFNQIG9yIEZQCisg
ICAgLy8gQ2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uIGFyZSBhbGxvd2VkIHRvIGV4cGVjdCB0aGF0
IGlmIGl0IHJldHVybnMgdHJ1ZSwgdGhlbiBpdCBtdXN0IGJlIG9uZSBvZgorICAgIC8vIHRoZXNl
IGVhc3ktdG8tcmVjb2duaXplIGtpbmRzLiBTbywgbWFraW5nIHRoaXMgZnVuY3Rpb24gcmVjb2du
aXplIG1vcmUga2luZHMgY291bGQgYnJlYWsgdGhpbmdzLgogICAgIGJvb2wgaXNTdGFja01lbW9y
eSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc1JlbENvbmQoKSBjb25zdApAQCAtNjU4LDEyICs3MDEs
MTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4ga2luZCgpID09IERvdWJsZUNvbmQ7CiAgICAg
fQogCisgICAgYm9vbCBpc1N0YXR1c0NvbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGtpbmQoKSA9PSBTdGF0dXNDb25kOworICAgIH0KKwogICAgIGJvb2wgaXNDb25kaXRpb24oKSBj
b25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxD
b25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAg
ICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03NzQsMTAgKzgyMywxNiBA
QCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChraW5kKCkgPT0gQmlnSW1tKTsKICAgICAgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG1fb2Zmc2V0KSk7
CiAgICAgfQorICAgIAorICAgIEFpcjo6VG1wIHB0cigpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQoa2luZCgpID09IFNpbXBsZUFkZHIpOworICAgICAgICByZXR1cm4gbV9iYXNlOworICAg
IH0KIAogICAgIEFpcjo6VG1wIGJhc2UoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKGtp
bmQoKSA9PSBBZGRyIHx8IGtpbmQoKSA9PSBJbmRleCk7CisgICAgICAgIEFTU0VSVChraW5kKCkg
PT0gU2ltcGxlQWRkciB8fCBraW5kKCkgPT0gQWRkciB8fCBraW5kKCkgPT0gSW5kZXgpOwogICAg
ICAgICByZXR1cm4gbV9iYXNlOwogICAgIH0KIApAQCAtODQ0LDYgKzg5OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBCaWdJbW06CiAgICAgICAgIGNhc2UgQml0SW1tOgogICAgICAgICBjYXNl
IEJpdEltbTY0OgorICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoK
ICAgICAgICAgY2FzZSBJbmRleDoKICAgICAgICAgY2FzZSBTdGFjazoKQEAgLTg1MSw2ICs5MDcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25k
OgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAg
ICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC04NzIsMTAgKzkyOSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
UmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6
CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAg
ICBjYXNlIFdpZHRoQXJnOgogICAgICAgICBjYXNlIEludmFsaWQ6CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgog
ICAgICAgICBjYXNlIEluZGV4OgogICAgICAgICBjYXNlIFN0YWNrOgpAQCAtMTA0OSw2ICsxMTA4
LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRCaXRJbW1Gb3JtKHZhbHVl
KCkpOwogICAgICAgICBjYXNlIEJpdEltbTY0OgogICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRC
aXRJbW02NEZvcm0odmFsdWUoKSk7CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGNhc2UgU3RhY2s6
CiAgICAgICAgIGNhc2UgQ2FsbEFyZzoKQEAgLTEwNTgsNiArMTExOSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2Ug
RG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNp
YWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTEwNzAsNiArMTEzMiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9raW5k
KSB7CiAgICAgICAgIGNhc2UgVG1wOgorICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CiAgICAgICAg
IGNhc2UgQWRkcjoKICAgICAgICAgICAgIGZ1bmN0b3IobV9iYXNlKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTExMCw2ICsxMTczLDcgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUKGlz
QW55VXNlKGFyZ1JvbGUpIHx8IGlzQW55RGVmKGFyZ1JvbGUpKTsKICAgICAgICAgICAgIGZ1bmN0
b3IobV9iYXNlLCBhcmdSb2xlLCBhcmdCYW5rLCBhcmdXaWR0aCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAg
ICAgICBmdW5jdG9yKG1fYmFzZSwgVXNlLCBHUCwgYXJnUm9sZSA9PSBVc2VBZGRyID8gYXJnV2lk
dGggOiBwb2ludGVyV2lkdGgoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNDQsOSArMTIw
OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQoaXNJbW0oKSk7CiAgICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihwb2ludGVyVmFsdWUoKSk7CiAgICAg
fQotCisgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MgYXNBZGRyZXNzKCkgY29uc3QK
ICAgICB7CisgICAgICAgIGlmIChpc1NpbXBsZUFkZHIoKSkKKyAgICAgICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UuZ3ByKCkpOwogICAgICAgICBBU1NFUlQoaXNB
ZGRyKCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLmdw
cigpLCBzdGF0aWNfY2FzdDxpbnQzMl90PihtX29mZnNldCkpOwogICAgIH0KQEAgLTExNzcsNiAr
MTI0MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2Vt
Ymxlcjo6RG91YmxlQ29uZGl0aW9uPihtX29mZnNldCk7CiAgICAgfQogICAgIAorICAgIE1hY3Jv
QXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gYXNTdGF0dXNDb25kaXRpb24oKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzU3RhdHVzQ29uZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24+KG1fb2Zmc2V0KTsKKyAgICB9
CisgICAgCiAgICAgLy8gVGVsbHMgeW91IGlmIHRoZSBBcmcgaXMgaW52ZXJ0aWJsZS4gT25seSBj
b25kaXRpb24gYXJndW1lbnRzIGFyZSBpbnZlcnRpYmxlLCBhbmQgZXZlbiBmb3IgdGhvc2UsIHRo
ZXJlCiAgICAgLy8gYXJlIGEgZmV3IGV4Y2VwdGlvbnMgLSBub3RhYmx5IE92ZXJmbG93IGFuZCBT
aWduZWQuCiAgICAgYm9vbCBpc0ludmVydGlibGUoKSBjb25zdApAQCAtMTE4NCw2ICsxMjU2LDcg
QEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAgICAgICBjYXNlIFJlbENv
bmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAg
ICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6aXNJbnZlcnRpYmxlKGFzUmVzdWx0Q29uZGl0aW9u
KCkpOwpAQCAtMTIwNCw2ICsxMjc3LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHJl
c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1Jlc3VsdENvbmRpdGlvbigpKSk7CiAgICAg
ICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgICAgIHJldHVybiBkb3VibGVDb25kKE1hY3Jv
QXNzZW1ibGVyOjppbnZlcnQoYXNEb3VibGVDb25kaXRpb24oKSkpOworICAgICAgICBjYXNlIFN0
YXR1c0NvbmQ6CisgICAgICAgICAgICByZXR1cm4gc3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6
aW52ZXJ0KGFzU3RhdHVzQ29uZGl0aW9uKCkpKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gQXJn
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9j
ay5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNiArMzUsMTkgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogCiBjb25zdCBjaGFyKiBjb25zdCBCYXNp
Y0Jsb2NrOjpkdW1wUHJlZml4ID0gIiMiOwogCit2b2lkIEJhc2ljQmxvY2s6OnNldFN1Y2Nlc3Nv
cnMoRnJlcXVlbnRlZEJsb2NrIHRhcmdldCkKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVzaXplKDEp
OworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRhcmdldDsKK30KKwordm9pZCBCYXNpY0Jsb2NrOjpz
ZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YWtlbiwgRnJlcXVlbnRlZEJsb2NrIG5vdFRh
a2VuKQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMik7CisgICAgbV9zdWNjZXNzb3JzWzBd
ID0gdGFrZW47CisgICAgbV9zdWNjZXNzb3JzWzFdID0gbm90VGFrZW47Cit9CisKIGJvb2wgQmFz
aWNCbG9jazo6YWRkUHJlZGVjZXNzb3IoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgcmV0dXJu
IEIzOjphZGRQcmVkZWNlc3Nvcih0aGlzLCBibG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMyw3ICszMywxMSBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OworCituYW1lc3BhY2Ug
QWlyIHsKIAogY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiBjbGFzcyBDb2RlOwpAQCAtOTksNiAr
MTAzLDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3NvcnMoKSBj
b25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KICAgICBTdWNjZXNzb3JMaXN0JiBzdWNjZXNz
b3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAKKyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMo
RnJlcXVlbnRlZEJsb2NrKTsKKyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2Nr
LCBGcmVxdWVudGVkQmxvY2spOworCiAgICAgQmFzaWNCbG9jayogc3VjY2Vzc29yQmxvY2sodW5z
aWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQog
ICAgIEJhc2ljQmxvY2sqJiBzdWNjZXNzb3JCbG9jayh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4g
c3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAgU3VjY2Vzc29yQ29sbGVjdGlvbjxCYXNp
Y0Jsb2NrLCBTdWNjZXNzb3JMaXN0PiBzdWNjZXNzb3JCbG9ja3MoKQpAQCAtMTMzLDYgKzE0MCw3
IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogICAgIGZy
aWVuZCBjbGFzcyBDb2RlOwogICAgIGZyaWVuZCBjbGFzcyBJbnNlcnRpb25TZXQ7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBCMzo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0
OwogICAgIAogICAgIEJhc2ljQmxvY2sodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9u
U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJs
b2NrSW5zZXJ0aW9uU2V0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBaXJCbG9ja0luc2VydGlvblNldC5oIgor
CisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckJhc2ljQmxvY2suaCIKKyNpbmNs
dWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCitCbG9ja0luc2VydGlvblNl
dDo6QmxvY2tJbnNlcnRpb25TZXQoQ29kZSAmY29kZSkKKyAgICA6IEdlbmVyaWNCbG9ja0luc2Vy
dGlvblNldChjb2RlLm1fYmxvY2tzKQoreworfQorCitCbG9ja0luc2VydGlvblNldDo6fkJsb2Nr
SW5zZXJ0aW9uU2V0KCkKK3sKK30KKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgor
CisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisK
KyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkFpckNv
ZGUuaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK2Ns
YXNzIEluc2VydGlvblNldDsKKwordHlwZWRlZiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFz
aWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5zZXJ0aW9uOworCitjbGFzcyBCbG9ja0lu
c2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4g
eworcHVibGljOgorICAgIEJsb2NrSW5zZXJ0aW9uU2V0KENvZGUmKTsKKyAgICB+QmxvY2tJbnNl
cnRpb25TZXQoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGV2ZW50dWFsbHkgaW1w
bGVtZW50IEIzOjpCbG9ja0luc2VydGlvblNldCdzIHNwbGl0Rm9yd2FyZCgpLgorfTsKKworfSB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuY3BwCShy
ZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBB
c0pTLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkFpckR1bXBBc0pTLmgiCi0KLSNpZiBFTkFCTEUoQjNfSklUKQotCi0jaW5jbHVk
ZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKLQotbmFtZXNwYWNlIHsKLQotQ1N0
cmluZyB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVy
biB0b0NTdHJpbmcoImJiIiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZhck5hbWUoQmFzaWNCbG9j
ayogYmxvY2spCi17Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JCbG9ja0F0SW5kZXgoYmxvY2stPmlu
ZGV4KCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWVGb3JTdGFja1Nsb3RBdEluZGV4KHVuc2lnbmVk
IGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoInNsb3QiLCBpbmRleCk7Ci19Ci0KLUNT
dHJpbmcgdmFyTmFtZShTdGFja1Nsb3QqIHNsb3QpCi17Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JT
dGFja1Nsb3RBdEluZGV4KHNsb3QtPmluZGV4KCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWUoUmVn
IHJlZykKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJSZWcuIiwgcmVnLmRlYnVnTmFtZSgpKTsK
LX0KLQotQ1N0cmluZyB2YXJOYW1lRm9yVG1wV2l0aEJhbmtBbmRJbmRleChCYW5rIGJhbmssIHVu
c2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoYmFuayA9PSBGUCA/ICJmIiA6
ICIiLCAidG1wIiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZhck5hbWUoVG1wIHRtcCkKLXsKLSAg
ICBpZiAodG1wLmlzUmVnKCkpCi0gICAgICAgIHJldHVybiB2YXJOYW1lKHRtcC5yZWcoKSk7Ci0g
ICAgcmV0dXJuIHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZEluZGV4KEFyZyh0bXApLmJhbmsoKSwg
dG1wLnRtcEluZGV4KCkpOwotfQotCi19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotdm9pZCBk
dW1wQXNKUyhDb2RlJiBjb2RlLCBQcmludFN0cmVhbSYgb3V0KQotewotICAgIG91dC5wcmludGxu
KCJsZXQgY29kZSA9IG5ldyBDb2RlKCk7Iik7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNvZGUuc2l6ZSgpOyArK2kpCi0gICAgICAgIG91dC5wcmludGxuKCJsZXQgIiwgdmFy
TmFtZUZvckJsb2NrQXRJbmRleChpKSwgIiA9IGNvZGUuYWRkQmxvY2soKTsiKTsKLSAgICAKLSAg
ICBvdXQucHJpbnRsbigibGV0IGhhc2g7Iik7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY29kZS5zdGFja1Nsb3RzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgU3RhY2tTbG90KiBz
bG90ID0gY29kZS5zdGFja1Nsb3RzKClbaV07Ci0gICAgICAgIGlmIChzbG90KSB7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZhck5hbWUoc2xvdCksICIgPSBjb2RlLmFkZFN0YWNr
U2xvdCgiLCBzbG90LT5ieXRlU2l6ZSgpLCAiLCAiLCBzbG90LT5raW5kKCksICIpOyIpOwotICAg
ICAgICAgICAgaWYgKHNsb3QtPm9mZnNldEZyb21GUCgpKQotICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKHZhck5hbWUoc2xvdCksICIuc2V0T2Zmc2V0RnJvbUZQKCIsIHNsb3QtPm9mZnNldEZy
b21GUCgpLCAiKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJoYXNoID0gIiwgdmFyTmFt
ZShzbG90KSwgIi5oYXNoKCk7Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiaWYgKGhhc2gg
IT0gIiwgc2xvdC0+anNIYXNoKCksICIpIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiICAg
IHRocm93IG5ldyBFcnJvcihcIkJhZCBoYXNoOiBcIiArIGhhc2gpOyIpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJjb2RlLmFkZFN0YWNrU2xvdCgxLCBTcGlsbCk7
Iik7Ci0gICAgfQotICAgIAotICAgIGZvckVhY2hCYW5rKAotICAgICAgICBbJl0gKEJhbmsgYmFu
aykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZS5udW1UbXBzKGJhbmspOyBp
LS07KSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAg
ICJsZXQgIiwgdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5kSW5kZXgoYmFuaywgaSksICIgPSBjb2Rl
Lm5ld1RtcCgiLCBiYW5rLCAiKTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAg
Ci0gICAgb3V0LnByaW50bG4oImxldCBpbnN0OyIpOwotICAgIG91dC5wcmludGxuKCJsZXQgYXJn
OyIpOwotICAgIAotICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBjb2RlKSB7Ci0gICAgICAg
IGZvciAoRnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsK
LSAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgIHZhck5hbWUoYmxvY2sp
LCAiLnN1Y2Nlc3NvcnMucHVzaChuZXcgRnJlcXVlbnRlZEJsb2NrKCIsCi0gICAgICAgICAgICAg
ICAgdmFyTmFtZShzdWNjZXNzb3IuYmxvY2soKSksICIsICIsIHN1Y2Nlc3Nvci5mcmVxdWVuY3ko
KSwgIikpOyIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycygpKQotICAgICAgICAgICAgb3V0LnBy
aW50bG4odmFyTmFtZShibG9jayksICIucHJlZGVjZXNzb3JzLnB1c2goIiwgdmFyTmFtZShwcmVk
ZWNlc3NvciksICIpOyIpOwotICAgICAgICAKLSAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJs
b2NrKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZG8gc29tZXRoaW5nIGZv
ciBmbGFncy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjI3NTEKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0ID0gbmV3IEluc3Qo
IiwgaW5zdC5raW5kLm9wY29kZSwgIik7Iik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlu
c3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUs
IEJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYXJnLmtpbmQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6SW52YWxpZDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFyZzo6VG1wOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
ImFyZyA9IEFyZy5jcmVhdGVUbXAoIiwgdmFyTmFtZShhcmcudG1wKCkpLCAiKTsiKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbW06Ci0gICAgICAgICAgICAgICAgICAgICAgICBv
dXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUltbSgiLCBhcmcudmFsdWUoKSwgIik7Iik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6QmlnSW1tOgotICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFy
Zy5jcmVhdGVCaWdJbW0oIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQzMl90PihhcmcudmFsdWUoKSksICIsICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkgPj4gMzIpLCAiKTsiKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaXRJbW06Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUJpdEltbSgiLCBhcmcudmFsdWUoKSwgIik7
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6Qml0SW1tNjQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
YXJnID0gQXJnLmNyZWF0ZUJpdEltbTY0KCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkpLCAiLCAiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52YWx1ZSgpID4+IDMyKSwgIik7
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6QWRkcjoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcg
PSBBcmcuY3JlYXRlQWRkcigiLCB2YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAiLCBhcmcub2Zmc2V0
KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlN0YWNrOgotICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImFyZyA9IEFyZy5jcmVhdGVTdGFjaygiLCB2YXJOYW1lKGFyZy5zdGFja1Nsb3QoKSksICIs
ICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
Q2FsbEFyZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcu
Y3JlYXRlQ2FsbEFyZygiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkluZGV4OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVJbmRleCgiLCB2
YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ck5hbWUoYXJnLmluZGV4KCkpLCAiLCAiLCBhcmcuc2NhbGUoKSwgIiwgIiwgYXJnLm9mZnNldCgp
LCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpSZWxDb25kOgotICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVSZWxDb25kKCIs
IGFyZy5hc1JlbGF0aW9uYWxDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFyZzo6UmVzQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxu
KCJhcmcgPSBBcmcuY3JlYXRlUmVzQ29uZCgiLCBhcmcuYXNSZXN1bHRDb25kaXRpb24oKSwgIik7
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RG91YmxlQ29uZDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlRG91YmxlQ29uZCgi
LCBhcmcuYXNEb3VibGVDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6U3BlY2lhbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJh
cmcgPSBBcmcuY3JlYXRlU3BlY2lhbCgpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OldpZHRoQXJnOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9
IEFyZy5jcmVhdGVXaWR0aEFyZygiLCBhcmcud2lkdGgoKSwgIik7Iik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuYXJncy5wdXNoKGFy
Zyk7Iik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
IChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGluc3Qu
aGFzTm9uQXJnRWZmZWN0cygpKQotICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5z
dC5wYXRjaEhhc05vbkFyZ0VmZmVjdHMgPSB0cnVlOyIpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzID0g
bmV3IFNldCgpOyIpOwotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhQ2xv
YmJlcmVkUmVncyA9IG5ldyBTZXQoKTsiKTsKLSAgICAgICAgICAgICAgICBpbnN0LmV4dHJhRWFy
bHlDbG9iYmVyZWRSZWdzKCkuZm9yRWFjaCgKLSAgICAgICAgICAgICAgICAgICAgWyZdIChSZWcg
cmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUVh
cmx5Q2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAiKTsiKTsKLSAgICAgICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgaW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MoKS5m
b3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncy5hZGQoIiwg
dmFyTmFtZShyZWcpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QucGF0Y2hBcmdEYXRhID0g
W107Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAotICAgICAgICAgICAgICAg
ICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5rIGJhbmssIFdpZHRoIHdpZHRoKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaW5zdC5wYXRjaEFyZ0RhdGEucHVzaCh7cm9sZTogQXJnLiIsIHJvbGUsICIs
IHR5cGU6ICIsIGJhbmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgd2lkdGg6ICIs
IHdpZHRoLCAifSk7Iik7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29kZSA9PSBDQ2FsbCB8
fCBpbnN0LmtpbmQub3Bjb2RlID09IENvbGRDQ2FsbCkgewotICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKCJpbnN0LmNDYWxsVHlwZSA9ICIsIGluc3Qub3JpZ2luLT50eXBlKCkpOwotICAgICAg
ICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsQXJnVHlwZXMgPSBbXTsiKTsKLSAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgaW5zdC5vcmlnaW4tPm51bUNoaWxk
cmVuKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuY0NhbGxB
cmdUeXBlcy5wdXNoKCIsIGluc3Qub3JpZ2luLT5jaGlsZChpKS0+dHlwZSgpLCAiKTsiKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgb3V0LnByaW50bG4oImhhc2gg
PSBpbnN0Lmhhc2goKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJpZiAoaGFzaCAhPSAi
LCBpbnN0LmpzSGFzaCgpLCAiKSIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oIiAgICB0aHJv
dyBuZXcgRXJyb3IoXCJCYWQgaGFzaDogXCIgKyBoYXNoKTsiKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayksICIuYXBwZW5kKGluc3QpOyIpOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCi0K
LSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckR1bXBBc0pTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJEdW1wQXNKUy5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Ci0K
LWNsYXNzIENvZGU7Ci0KLS8vIFRoaXMgaXMgdXNlZCBmb3IgYmVuY2htYXJraW5nLiBWYXJpb3Vz
IG9wZXJhdGlvbnMgb24gQWlyIGFyZSBpbnRlcmVzdGluZyBmcm9tIGEgYmVuY2htYXJraW5nCi0v
LyBzdGFuZHBvaW50LiBXZSBjYW4gd3JpdGUgc29tZSBBaXIgcGhhc2VzIGluIEpTIGFuZCB0aGVu
IHVzZSB0aGF0IHRvIGJlbmNobWFyayBKUy4gVGhlIGJlbmNobWFyawotLy8gaXMgY2FsbGVkIEpT
QWlyLCBhbmQgaXQncyBpbiBQZXJmb3JtYW5jZVRlc3RzL0pTQWlyLgotdm9pZCBkdW1wQXNKUyhD
b2RlJiwgUHJpbnRTdHJlYW0mKTsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgot
Ci0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDcgKzMxLDYgQEAKICNpbmNsdWRlICJBaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmlu
Zy5oIgogI2luY2x1ZGUgIkFpckFsbG9jYXRlU3RhY2suaCIKICNpbmNsdWRlICJBaXJDb2RlLmgi
Ci0jaW5jbHVkZSAiQWlyRHVtcEFzSlMuaCIKICNpbmNsdWRlICJBaXJFbGltaW5hdGVEZWFkQ29k
ZS5oIgogI2luY2x1ZGUgIkFpckZpeE9idmlvdXNTcGlsbHMuaCIKICNpbmNsdWRlICJBaXJGaXhQ
YXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKQEAgLTczLDYgKzcyLDggQEAgdm9pZCBwcmVwYXJlRm9y
R2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgICAgICBkYXRhTG9nKCJJbml0aWFsIGFpcjpcbiIp
OwogICAgICAgICBkYXRhTG9nKGNvZGUpOwogICAgIH0KKyAgICAKKyAgICBzaW1wbGlmeUNGRyhj
b2RlKTsKIAogICAgIGxvd2VyTWFjcm9zKGNvZGUpOwogCkBAIC0xMDcsMjMgKzEwOCwxMSBAQCB2
b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAgLy8gZG9lcyB0aGluZ3Mg
bGlrZSBpZGVudGlmeSB3aGljaCBjYWxsZWUtc2F2ZXMgd2UncmUgdXNpbmcgYW5kIHNhdmVzIHRo
ZW0uCiAgICAgaGFuZGxlQ2FsbGVlU2F2ZXMoY29kZSk7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6
OmR1bXBBaXJBc0pTQmVmb3JlQWxsb2NhdGVTdGFjaygpKSB7Ci0gICAgICAgIGRhdGFMb2coIkR1
bXBpbmcgQWlyIGFzIEpTIGJlZm9yZSBhbGxvY2F0ZVN0YWNrOlxuIik7Ci0gICAgICAgIGR1bXBB
c0pTKGNvZGUsIFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAgICAgIGRhdGFMb2coIkFpciBoYXNoOiAi
LCBjb2RlLmpzSGFzaCgpLCAiXG4iKTsKLSAgICB9Ci0KICAgICAvLyBUaGlzIHR1cm5zIGFsbCBT
dGFjayBhbmQgQ2FsbEFyZyBBcmdzIGludG8gQWRkciBhcmdzIHRoYXQgdXNlIHRoZSBmcmFtZSBw
b2ludGVyLiBJdCBkb2VzCiAgICAgLy8gdGhpcyBieSBmaXJzdC1maXQgYWxsb2NhdGluZyBzdGFj
ayBzbG90cy4gSXQgc2hvdWxkIGJlIHByZXR0eSBkYXJuIGNsb3NlIHRvIG9wdGltYWwsIHNvIHdl
CiAgICAgLy8gc2hvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhpcyB2ZXJ5IG11Y2guCiAg
ICAgYWxsb2NhdGVTdGFjayhjb2RlKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6ZHVtcEFpckFm
dGVyQWxsb2NhdGVTdGFjaygpKSB7Ci0gICAgICAgIGRhdGFMb2coIkR1bXBpbmcgQWlyIGFmdGVy
IGFsbG9jYXRlU3RhY2s6XG4iKTsKLSAgICAgICAgZGF0YUxvZyhjb2RlKTsKLSAgICAgICAgZGF0
YUxvZygiQWlyIGhhc2g6ICIsIGNvZGUuanNIYXNoKCksICJcbiIpOwotICAgIH0KLQogICAgIC8v
IElmIHdlIGNvYWxlc2NlZCBtb3ZlcyB0aGVuIHdlIGNhbiB1bmJyZWFrIGNyaXRpY2FsIGVkZ2Vz
LiBUaGlzIGlzIHRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcwogICAgIC8vIHBoYXNlLgogICAgIHNp
bXBsaWZ5Q0ZHKGNvZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJ
bnN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlySW5zdElubGluZXMuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3
LDY1IEBAIGlubGluZSBib29sIGlzWDg2VURpdjY0VmFsaWQoY29uc3QgSW5zdCYKICAgICByZXR1
cm4gaXNYODZEaXZIZWxwZXJWYWxpZChpbnN0KTsKIH0KIAoraW5saW5lIGJvb2wgaXNBdG9taWNT
dHJvbmdDQVNWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworI2lmIENQVShYODYpIHx8IENQVShY
ODZfNjQpCisgICAgc3dpdGNoIChpbnN0LmFyZ3Muc2l6ZSgpKSB7CisgICAgY2FzZSAzOgorICAg
ICAgICByZXR1cm4gaW5zdC5hcmdzWzBdID09IFRtcChYODZSZWdpc3RlcnM6OmVheCk7CisgICAg
Y2FzZSA1OgorICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzFdID09IFRtcChYODZSZWdpc3RlcnM6
OmVheCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRp
ZiAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0
b21pY1N0cm9uZ0NBU1ZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGluc3Qu
YXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworfQorCitpbmxpbmUgYm9vbCBpc0F0
b21pY1N0cm9uZ0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0
b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9u
Z0NBUzE2VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNBdG9taWNTdHJv
bmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVMzMlZh
bGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFs
aWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTNjRWYWxpZChjb25z
dCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3Qp
OworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzhWYWxpZChjb25zdCBJ
bnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGlu
c3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzE2VmFsaWQoY29u
c3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxp
ZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVMzMlZhbGlk
KGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FT
VmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTNjRW
YWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9u
Z0NBU1ZhbGlkKGluc3QpOworfQorCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCiAK
ICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE3LDYg
KzExNyw3IEBAIEFkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICB4ODY6IEltbSwgSW5kZXgKICAg
ICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAg
eDg2OiBUbXAsIEFkZHIKICAgICB4ODY6IFRtcCwgSW5kZXgKIApAQCAtMTM1LDkgKzEzNiwxMiBA
QCB4ODY6IEFkZDE2IFU6RzoxNiwgVUQ6RzoxNgogNjQ6IEFkZDY0IFU6Rzo2NCwgVUQ6Rzo2NAog
ICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAg
ICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAg
eDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKIAogNjQ6IEFkZDY0IFU6Rzo2NCwg
VTpHOjY0LCBEOkc6NjQKICAgICBJbW0sIFRtcCwgVG1wCkBAIC0xNjYsOSArMTcwLDEyIEBAIHg4
NjogQWRkRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiBTdWIzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAg
VG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIElt
bSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6
IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogCiBhcm02NDogU3ViMzIgVTpHOjMyLCBV
Okc6MzIsIEQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTE3Niw5ICsxODMsMTIgQEAgYXJt
NjQ6IFN1YjMyIFU6RzozMiwgVTpHOjMyLCBEOkc6MzIKIDY0OiBTdWI2NCBVOkc6NjQsIFVEOkc6
NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4
CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAog
ICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAKIGFybTY0OiBTdWI2NCBV
Okc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMjA0LDkgKzIxNCwx
MiBAQCB4ODY6IFN1YkZsb2F0IFU6RjozMiwgVUQ6RjozMgogTmVnMzIgVVpEOkc6MzIKICAgICBU
bXAKICAgICB4ODY6IEFkZHIKKyAgICB4ODY6IEluZGV4CiAKIDY0OiBOZWc2NCBVRDpHOjY0CiAg
ICAgVG1wCisgICAgeDg2OiBBZGRyCisgICAgeDg2OiBJbmRleAogCiBhcm02NDogTmVnYXRlRG91
YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAgLTMzMCw4ICszNDMsMTEgQEAgQW5k
MzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAg
IHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAK
KyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJ
bmRleAogCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBU
bXAKQEAgLTMzOSw3ICszNTUsMTMgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogCiB4ODZfNjQ6
IEFuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCi0gICAgeDg2OiBJbW0sIFRtcAor
ICAgIEltbSwgVG1wCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCiAKIEFuZERv
dWJsZSBVOkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDU5LDgg
KzQ4MSwxMSBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4Njog
SW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogICAgIHg4
NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAg
ICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IE9yNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAg
IFRtcCwgVG1wLCBUbXAKQEAgLTQ2OSw2ICs0OTQsMTIgQEAgT3IzMiBVOkc6MzIsIFVaRDpHOjMy
CiA2NDogT3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBU
bXAKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogVG1w
LCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6
IEluZGV4LCBUbXAKIAogWG9yMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRt
cCwgVG1wCkBAIC00ODAsOCArNTExLDExIEBAIFhvcjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBU
bXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4Njog
VG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAg
eDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IFhvcjY0IFU6Rzo2NCwg
VTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00OTAsNiArNTI0LDExIEBAIFhv
cjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBYb3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAs
IFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBB
ZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4
NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBUbXAKIAogYXJtNjQ6IE5vdDMyIFU6RzozMiwg
WkQ6RzozMgpAQCAtNDk4LDEzICs1MzcsMTUgQEAgYXJtNjQ6IE5vdDMyIFU6RzozMiwgWkQ6Rzoz
MgogeDg2OiBOb3QzMiBVWkQ6RzozMgogICAgIFRtcAogICAgIEFkZHIKKyAgICBJbmRleAogCiBh
cm02NDogTm90NjQgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcAogCi14ODY6IE5vdDY0IFVE
Okc6NjQKK3g4Nl82NDogTm90NjQgVUQ6Rzo2NAogICAgIFRtcAogICAgIEFkZHIKKyAgICBJbmRl
eAogCiBhcm02NDogQWJzRG91YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAgLTY2
OCwyNyArNzA5LDM3NyBAQCBMb2FkOCBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAg
IEluZGV4LCBUbXAKIAorTG9hZEFjcTggVTpHOjgsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6
IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAorCiBT
dG9yZTggVTpHOjgsIEQ6Rzo4CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgogICAgIHg4
NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBBZGRyCiAKK1N0b3JlUmVsOCBVOkc6OCwgRDpH
OjggL2VmZmVjdHMKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IFRtcCwgQWRkcgorICAg
IHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgVG1wLCBTaW1wbGVBZGRy
CisKIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAog
ICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMy
IC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBT
aW1wbGVBZGRyLCBUbXAKKwogTG9hZDE2IFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAog
ICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTE2IFU6RzoxNiwgWkQ6RzozMiAvZWZmZWN0cworICAg
IHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1w
CisKIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1w
CiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6
RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisg
ICAgU2ltcGxlQWRkciwgVG1wCisKIFN0b3JlMTYgVTpHOjE2LCBEOkc6MTYKICAgICBUbXAsIElu
ZGV4CiAgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFk
ZHIKKworU3RvcmVSZWwxNiBVOkc6MTYsIEQ6RzoxNiAvZWZmZWN0cworICAgIHg4NjogVG1wLCBJ
bmRleAorICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJ
bW0sIEFkZHIKKyAgICBUbXAsIFNpbXBsZUFkZHIKKworTG9hZEFjcTMyIFU6RzozMiwgWkQ6Rzoz
MiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAg
U2ltcGxlQWRkciwgVG1wCisKK1N0b3JlUmVsMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZlY3RzCisg
ICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRk
cgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIFRtcCwgU2ltcGxlQWRkcgorCis2NDogTG9hZEFj
cTY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2
OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisKKzY0OiBTdG9yZVJlbDY0IFU6Rzo2
NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIElu
ZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICBUbXAsIFNp
bXBsZUFkZHIKKworIyBUaGUgZmlyc3Qgb3BlcmFuZCBpcyByYXguCisjIEZJWE1FOiBUaGlzIGZv
cm11bGF0aW9uIG1lYW5zIHRoYXQgdGhlIGJvb2xlYW4gcmVzdWx0IGNhbm5vdCBiZSBwdXQgaW4g
ZWF4LCBldmVuIHRob3VnaCBhbGwgdXNlcnMKKyMgb2YgdGhpcyB3b3VsZCBiZSBPSyB3aXRoIHRo
YXQuCit4ODY6IEF0b21pY1N0cm9uZ0NBUzggVTpHOjMyLCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjgs
IFpEOkc6OCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisg
ICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogQXRvbWljU3Ryb25n
Q0FTMTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYsIFpEOkc6OCAvZWZmZWN0cwor
ICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1w
KiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMzIgVTpHOjMyLCBVRDpH
OjMyLCBVOkc6MzIsIFVEOkc6MzIsIFpEOkc6OCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRt
cCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1w
CisKK3g4Nl82NDogQXRvbWljU3Ryb25nQ0FTNjQgVTpHOjMyLCBVRDpHOjY0LCBVOkc6NjQsIFVE
Okc6NjQsIFpEOkc6OCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwg
VG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogQXRvbWlj
U3Ryb25nQ0FTOCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBUbXAqLCBUbXAs
IEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMTYgVUQ6
RzoxNiwgVTpHOjMyLCBVRDpHOjE2IC9lZmZlY3RzCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAg
VG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzMyIFVEOkc6MzIsIFU6Rzoz
MiwgVUQ6RzozMiAvZWZmZWN0cworICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwg
SW5kZXgKKworeDg2XzY0OiBBdG9taWNTdHJvbmdDQVM2NCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6
NjQgL2VmZmVjdHMKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisK
K3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIsIFVEOkc6OCwgVTpHOjgsIFVEOkc6
OCAvYnJhbmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAg
U3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEJyYW5jaEF0b21pY1N0cm9uZ0NB
UzE2IFU6RzozMiwgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2IC9icmFuY2ggL2VmZmVjdHMKKyAg
ICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAs
IEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIgVTpHOjMyLCBVRDpHOjMyLCBV
Okc6MzIsIFVEOkc6MzIgL2JyYW5jaCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRt
cCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2XzY0OiBCcmFu
Y2hBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCAvYnJh
bmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVz
Q29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDggVTpHOjgsIFVEOkc6OCAv
ZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQWRkMTYgVTpHOjE2LCBVRDpHOjE2IC9lZmZlY3Rz
CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNBZGQzMiBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJ
bW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODZfNjQ6IEF0b21pY0FkZDY0IFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljU3ViOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNT
dWIxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjMyIFU6
RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljU3ViNjQgVTpHOjY0
LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBbmQ4IFU6Rzo4LCBVRDpHOjgg
L2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0
cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogQXRvbWljQW5kMzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2XzY0OiBBdG9taWNBbmQ2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBJbW0s
IEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODY6IEF0b21pY09yOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNP
cjE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3IzMiBVOkc6
MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY09yNjQgVTpHOjY0LCBV
RDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwg
QWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYb3I4IFU6Rzo4LCBVRDpHOjggL2Vm
ZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cwor
ICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisKK3g4NjogQXRvbWljWG9yMzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAgSW1t
LCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwor
eDg2XzY0OiBBdG9taWNYb3I2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBJbW0sIEFk
ZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IEF0b21pY05lZzggVUQ6Rzo4IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Njog
QXRvbWljTmVnMTYgVUQ6RzoxNiAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6
IEF0b21pY05lZzMyIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2
XzY0OiBBdG9taWNOZWc2NCBVRDpHOjY0IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisK
K3g4NjogQXRvbWljTm90OCBVRDpHOjggL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKwor
eDg2OiBBdG9taWNOb3QxNiBVRDpHOjE2IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisK
K3g4NjogQXRvbWljTm90MzIgVUQ6RzozMiAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAor
Cit4ODZfNjQ6IEF0b21pY05vdDY0IFVEOkc6NjQgL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5k
ZXgKKworeDg2OiBBdG9taWNYY2hnQWRkOCBVRDpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnQWRkMTYgVUQ6RzoxNiwg
VUQ6RzoxNiAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBB
dG9taWNYY2hnQWRkMzIgVUQ6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIFRtcCwgQWRkcgor
ICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYY2hnQWRkNjQgVUQ6Rzo2NCwgVUQ6Rzo2
NCAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNY
Y2hnOCBVRDpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2OiBBdG9taWNYY2hnMTYgVUQ6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnMzIgVUQ6RzozMiwgVUQ6
RzozMiAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBB
dG9taWNYY2hnNjQgVUQ6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworYXJtNjQ6IExvYWRMaW5rOCBVOkc6OCwgWkQ6Rzo4IC9lZmZlY3RzCisg
ICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTggVTpHOjgsIFpEOkc6OCAv
ZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCisjIFN1cGVyIGNvbmZ1c2luZyBmYWN0OiB0
aGlzIHJldHVybnMgMCB0byBtZWFuIHN1Y2Nlc3MsIDEgdG8gbWVhbiBmYWlsdXJlLgorYXJtNjQ6
IFN0b3JlQ29uZDggVTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1w
bGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDggVTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4
IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rMTYg
VTpHOjE2LCBaRDpHOjE2IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBM
b2FkTGlua0FjcTE2IFU6RzoxNiwgWkQ6RzoxNiAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRt
cAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjggL2VmZmVjdHMK
KyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMTYgVTpHOjE2
LCBEOkc6MTYsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCith
cm02NDogTG9hZExpbmszMiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRy
LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZlY3RzCisg
ICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQzMiBVOkc6MzIsIEQ6RzozMiwg
RVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9y
ZUNvbmRSZWwzMiBVOkc6MzIsIEQ6RzozMiwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2lt
cGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGluazY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0
cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmtBY3E2NCBVOkc6NjQsIFpE
Okc6NjQgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDY0
IFU6Rzo2NCwgRDpHOjY0LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBU
bXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDY0IFU6Rzo2NCwgRDpHOjY0LCBFWkQ6Rzo4IC9lZmZl
Y3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IERlcGVuZDMyIFU6RzozMiwg
RDpHOjMyCisgICAgVG1wLCBUbXAKKworYXJtNjQ6IERlcGVuZDY0IFU6Rzo2NCwgRDpHOjY0Cisg
ICAgVG1wLCBUbXAKIAogQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIK
ICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCShyZXZpc2lvbiAy
MTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tP
cmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzcsNiArMTc3LDEwIEBAIHZvaWQgb3B0aW1p
emVCbG9ja09yZGVyKENvZGUmIGNvZGUpCiAgICAgICAgIGNhc2UgQnJhbmNoU3ViNjQ6CiAgICAg
ICAgIGNhc2UgQnJhbmNoTmVnMzI6CiAgICAgICAgIGNhc2UgQnJhbmNoTmVnNjQ6CisgICAgICAg
IGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTODoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNT
dHJvbmdDQVMxNjoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMjoKKyAgICAg
ICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVM2NDoKICAgICAgICAgICAgIGlmIChjb2RlLmZp
bmROZXh0QmxvY2soYmxvY2spID09IGJsb2NrLT5zdWNjZXNzb3JCbG9jaygwKSAmJiBicmFuY2gu
YXJnc1swXS5pc0ludmVydGlibGUoKSkgewogICAgICAgICAgICAgICAgIHN0ZDo6c3dhcChibG9j
ay0+c3VjY2Vzc29yKDApLCBibG9jay0+c3VjY2Vzc29yKDEpKTsKICAgICAgICAgICAgICAgICBi
cmFuY2guYXJnc1swXSA9IGJyYW5jaC5hcmdzWzBdLmludmVydGVkKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCShy
ZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZElu
dGVyZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgdm9pZCBwYWRJ
bnRlcmZlcmVuY2UoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFyZzo6
Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJv
bGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAgICAg
aGFzRWFybHlEZWYgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlVXNlOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNpb24g
MjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5
dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVDb2xk
VXNlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogY29k
ZS5yZWdzSW5Qcmlvcml0eU9yZGVyKGJhbmspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFzZXRCZWZvcmUuZ2V0KHJlZykgJiYgIXNldEFmdGVyLmdldChyZWcpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkocmV2
aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2Vu
ZXJhdG9yLnJiCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNCArNTEsNDkgQEAgY2xhc3MgQXJnCiAg
ICAgICAgIEBiYW5rID0gYmFuawogICAgICAgICBAd2lkdGggPSB3aWR0aAogICAgIGVuZAotCi0g
ICAgZGVmIHdpZHRoQ29kZQorICAgIAorICAgIGRlZiBzZWxmLndpZHRoQ29kZSh3aWR0aCkKICAg
ICAgICAgaWYgd2lkdGggPT0gIlB0ciIKICAgICAgICAgICAgICJwb2ludGVyV2lkdGgoKSIKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgIldpZHRoI3t3aWR0aH0iCiAgICAgICAgIGVuZAogICAg
IGVuZAorCisgICAgZGVmIHdpZHRoQ29kZQorICAgICAgICBBcmcud2lkdGhDb2RlKHdpZHRoKQor
ICAgIGVuZAorICAgIAorICAgIGRlZiBzZWxmLnJvbGVDb2RlKHJvbGUpCisgICAgICAgIGNhc2Ug
cm9sZQorICAgICAgICB3aGVuICJVIgorICAgICAgICAgICAgIlVzZSIKKyAgICAgICAgd2hlbiAi
RCIKKyAgICAgICAgICAgICJEZWYiCisgICAgICAgIHdoZW4gIlpEIgorICAgICAgICAgICAgIlpE
ZWYiCisgICAgICAgIHdoZW4gIlVEIgorICAgICAgICAgICAgIlVzZURlZiIKKyAgICAgICAgd2hl
biAiVVpEIgorICAgICAgICAgICAgIlVzZVpEZWYiCisgICAgICAgIHdoZW4gIlVBIgorICAgICAg
ICAgICAgIlVzZUFkZHIiCisgICAgICAgIHdoZW4gIlMiCisgICAgICAgICAgICAiU2NyYXRjaCIK
KyAgICAgICAgd2hlbiAiRUQiCisgICAgICAgICAgICAiRWFybHlEZWYiCisgICAgICAgIHdoZW4g
IkVaRCIKKyAgICAgICAgICAgICJFYXJseVpEZWYiCisgICAgICAgIHdoZW4gIkxVIgorICAgICAg
ICAgICAgIkxhdGVVc2UiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAg
IGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiByb2xlQ29kZQorICAgICAgICBBcmcucm9sZUNv
ZGUocm9sZSkKKyAgICBlbmQKIGVuZAogCiBjbGFzcyBPdmVybG9hZApAQCAtMTgyLDcgKzIxNyw3
IEBAIGRlZiBsZXgoc3RyLCBmaWxlTmFtZSkKIGVuZAogCiBkZWYgaXNSb2xlKHRva2VuKQotICAg
IHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEpfChTKSlcWi8KKyAgICB0
b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUyl8KEVEKXwoRVpEKXwo
TFUpKVxaLwogZW5kCiAKIGRlZiBpc0dGKHRva2VuKQpAQCAtMTkwLDcgKzIyNSw3IEBAIGRlZiBp
c0dGKHRva2VuKQogZW5kCiAKIGRlZiBpc0tpbmQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChU
bXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8KEFkZHIpfChJbmRleCl8KFJl
bENvbmQpfChSZXNDb25kKXwoRG91YmxlQ29uZCkpXFovCisgICAgdG9rZW4gPX4gL1xBKChUbXAp
fChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8KFNpbXBsZUFkZHIpfChBZGRyKXwo
SW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpfChTdGF0dXNDb25kKSlcWi8K
IGVuZAogCiBkZWYgaXNBcmNoKHRva2VuKQpAQCAtMjY0LDcgKzI5OSw3IEBAIGNsYXNzIFBhcnNl
cgogCiAgICAgZGVmIGNvbnN1bWVLaW5kCiAgICAgICAgIHJlc3VsdCA9IHRva2VuLnN0cmluZwot
ICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwgQml0SW1tLCBC
aXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgb3IgRG91YmxlQ29u
ZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKKyAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQg
a2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgU2ltcGxlQWRkciwgQWRk
ciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIERvdWJsZUNvbmQsIG9yIFN0YXR1c0NvbmQpIikg
dW5sZXNzIGlzS2luZChyZXN1bHQpCiAgICAgICAgIGFkdmFuY2UKICAgICAgICAgcmVzdWx0CiAg
ICAgZW5kCkBAIC02MzQsMjggKzY2OSw3IEBAIHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXgg
ewogICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUKLSAg
ICAgICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZSIK
LSAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIkRl
ZiIKLSAgICAgICAgICAgICAgICB3aGVuICJaRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9
ICJaRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlVEIgotICAgICAgICAgICAgICAgICAgICBy
b2xlID0gIlVzZURlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJVWkQiCi0gICAgICAgICAgICAg
ICAgICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJVQSIKLSAgICAg
ICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAgICAgICAgIHdoZW4gIlMi
Ci0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2NyYXRjaCIKLSAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgZW5kCi0KLSAg
ICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0sIEFyZzo6I3ty
b2xlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCisgICAgICAgICAgICAgICAg
b3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7YXJnLnJvbGVDb2RlfSwg
I3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCiAgICAgICAgICAgICB9CiAgICAgICAg
IGVuZAogICAgIH0KQEAgLTgwNCw2ICs4MTgsOSBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIp
IHsKICAgICAgICAgICAgICAgICB3aGVuICJCaXRJbW02NCIKICAgICAgICAgICAgICAgICAgICAg
b3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZEJpdEltbTY0Rm9ybShhcmdzWyN7aW5kZXh9XS52
YWx1ZSgpKSkiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZh
bHNlKTsiCisgICAgICAgICAgICAgICAgd2hlbiAiU2ltcGxlQWRkciIKKyAgICAgICAgICAgICAg
ICAgICAgb3V0cC5wdXRzICJpZiAoIWFyZ3NbI3tpbmRleH1dLnRtcCgpLmlzR1AoKSkiCisgICAg
ICAgICAgICAgICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAg
ICAgICAgICAgd2hlbiAiQWRkciIKICAgICAgICAgICAgICAgICAgICAgaWYgYXJnLnJvbGUgPT0g
IlVBIgogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoYXJnc1sje2luZGV4
fV0uaXNTdGFjaygpICYmIGFyZ3NbI3tpbmRleH1dLnN0YWNrU2xvdCgpLT5pc1NwaWxsKCkpIgpA
QCAtODE5LDYgKzgzNiw3IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAg
ICAgICAgIHdoZW4gIlJlbENvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiUmVzQ29uZCIKICAg
ICAgICAgICAgICAgICB3aGVuICJEb3VibGVDb25kIgorICAgICAgICAgICAgICAgIHdoZW4gIlN0
YXR1c0NvbmQiCiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByYWlz
ZSAiVW5leHBlY3RlZCBraW5kOiAje2tpbmQubmFtZX0iCiAgICAgICAgICAgICAgICAgZW5kCkBA
IC0xMDk1LDcgKzExMTMsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAg
ICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNUcnVzdGVkSW1tMzIoKSIK
ICAgICAgICAgICAgICAgICB3aGVuICJCaWdJbW0iLCAiQml0SW1tNjQiCiAgICAgICAgICAgICAg
ICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzVHJ1c3RlZEltbTY0KCkiCi0gICAg
ICAgICAgICAgICAgd2hlbiAiQWRkciIKKyAgICAgICAgICAgICAgICB3aGVuICJTaW1wbGVBZGRy
IiwgIkFkZHIiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1d
LmFzQWRkcmVzcygpIgogICAgICAgICAgICAgICAgIHdoZW4gIkluZGV4IgogICAgICAgICAgICAg
ICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc0Jhc2VJbmRleCgpIgpAQCAtMTEw
NSw2ICsxMTIzLDggQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAg
ICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzUmVzdWx0Q29uZGl0aW9uKCkiCiAg
ICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29uZCIKICAgICAgICAgICAgICAgICAgICAgb3V0
cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNEb3VibGVDb25kaXRpb24oKSIKKyAgICAgICAgICAg
ICAgICB3aGVuICJTdGF0dXNDb25kIgorICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJh
cmdzWyN7aW5kZXh9XS5hc1N0YXR1c0NvbmRpdGlvbigpIgogICAgICAgICAgICAgICAgIGVuZAog
ICAgICAgICAgICAgfQogCkBAIC0xMTQ4LDI3ICsxMTY4LDcgQEAgRmlsZS5vcGVuKCJKU0Fpcl9v
cGNvZGUuanMiLCAidyIpIHsKICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tvdmVy
bG9hZC5zaWduYXR1cmUubGVuZ3RofToiIGlmIG5lZWRPdmVybG9hZFN3aXRjaAogICAgICAgICAg
ICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAg
ICAgICAgICB8IGFyZywgaW5kZXggfAotICAgICAgICAgICAgICAgICAgICByb2xlID0gbmlsCi0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUKLSAgICAgICAgICAgICAgICAgICAgd2hl
biAiVSIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAgICAg
ICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYiCi0g
ICAgICAgICAgICAgICAgICAgIHdoZW4gIlpEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9s
ZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVRCIKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVWkQi
Ci0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZVpEZWYiCi0gICAgICAgICAgICAg
ICAgICAgIHdoZW4gIlVBIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRy
IgotICAgICAgICAgICAgICAgICAgICB3aGVuICJTIgotICAgICAgICAgICAgICAgICAgICAgICAg
cm9sZSA9ICJTY3JhdGNoIgotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygje2lu
ZGV4fSwgZnVuYywgQXJnLiN7cm9sZX0sICN7YXJnLmJhbmt9UCwgI3thcmcud2lkdGh9KTsiCisg
ICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVu
YywgQXJnLiN7YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aH0pOyIKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJicmVhazsiCiAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShy
ZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNSw5ICs0MTUsNiBAQCB0eXBlZGVmIGNvbnN0IGNoYXIq
IG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGR1bXBNb2R1bGVMb2FkaW5nU3RhdGUsIGZhbHNl
LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGV4cG9zZUludGVybmFsTW9kdWxlTG9h
ZGVyLCBmYWxzZSwgTm9ybWFsLCAiZXhwb3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUgbG9hZGVyIG9i
amVjdCB0byB0aGUgZ2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dpbmciKSBcCiAgICAgXAotICAgIHYo
Ym9vbCwgZHVtcEFpckFzSlNCZWZvcmVBbGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxs
cHRyKSBcCi0gICAgdihib29sLCBkdW1wQWlyQWZ0ZXJBbGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9y
bWFsLCBudWxscHRyKSBcCi0gICAgXAogICAgIHYoYm9vbCwgdXNlU3VwZXJTYW1wbGVyLCBmYWxz
ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoYm9vbCwgcmVwb3J0TExJbnRTdGF0
cywgZmFsc2UsIENvbmZpZ3VyYWJsZSwgIlJlcG9ydHMgTExJbnQgc3RhdGlzdGljcyIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303328</attachid>
            <date>2017-03-03 11:15:52 -0800</date>
            <delta_ts>2017-03-03 17:03:41 -0800</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>341119</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTMyNjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxNCBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAv
KiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87
IH07CisJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQzMx
RTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggKi87IH07CiAJCTBGMkQ0
REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8q
IERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERTgxOTgz
MkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlz
U3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDUsOCArMjI1Myw2IEBACiAJCURDMjE0MzA4MUNBMzJF
NTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAq
LzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIwOTFEMzQzMTYxMDBC
QTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREMzRDJCMEIxRDM0
Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRCOEMxRDAwRTgyMjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5j
cHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM0NTRCOEIxRDAw
RTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1QjVEMUNFMjZFQTAw
MDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2
ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1
QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4
IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgKi87
IH07CkBAIC0yNzcxLDYgKzI3NzcsMTQgQEAKIAkJMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5IC8q
IEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0
aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRDFF
NjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7IHBhdGggPSBiMy9C
M1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0IzMUU2MzQzRTgw
MEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAv
KiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRv
bWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4Mzkg
LyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJsb2Nr
SW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkEx
RTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIv
QWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
QzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MxMUU2NjRBNUEwMEMxMzgz
OSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRpdmVUcmFpdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQzMxRTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFs
dWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTWVtb3J5VmFs
dWVJbmxpbmVzLmg7IHBhdGggPSBiMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQjE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJT
Y29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1Z2dlclNj
b3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREMxOTgzMkQzNDAw
N0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGVidWdnZXJTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENERE
RjE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFR5cGVQcm9maWxlckxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
Nzg3LDggKzQ4MDEsNiBAQAogCQlEQzIxNDMwNjFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURDM0QyQjA5MUQzNDMxNjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwQ2VsbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwQjFEMzQzNzZFMDBCQTkxOEMgLyogSGVhcENlbGwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcENlbGwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEQzQ1NEI4QTFEMDBFODFGMDA0QzE4QUYgLyog
QWlyRHVtcEFzSlMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWly
RHVtcEFzSlMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pT
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckR1bXBBc0pTLmg7IHBhdGgg
PSBiMy9haXIvQWlyRHVtcEFzSlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2
MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJFdmVudC5jcHA7IHBhdGggPSBwcm9maWxl
ci9Qcm9maWxlckV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVC
NUExQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJFdmVudC5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYwNUI1QjFDRTI2RTk4MDA1
OTM3MTggLyogUHJvZmlsZXJVSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gUHJvZmlsZXJVSUQuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMwNiw2ICs1MzE4LDggQEAKIAkJCQkwRkVD
ODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4
MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4
MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNC
YW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5j
cHAgKi8sCkBAIC01MzY4LDYgKzUzODIsNyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyog
QjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4
MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3
NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTM5MCw4ICs1NDA1LDEwIEBACiAJCQkJNDNBQjI2
QzUxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5oICovLAogCQkJCTBGRUM4NEQ1MUJE
QUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRENjFCREFD
REFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5oICovLAorCQkJCTBGMkM2M0MzMUU2OUVGOTIw
MEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oICovLAogCQkJCTBGMzM4RTAzMUJGMDI3
NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuY3BwICovLAogCQkJCTBGMzM4RTA0MUJGMDI3
NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuaCAqLywKKwkJCQkwRjJDNjNDMTFFNjY0QTVB
MDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLywKIAkJCQkwRjMzOEUwNTFCRjAyNzZDMDAx
M0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3QuaCAqLywKIAkJCQkwRjMzOEUwNjFCRjAyNzZDMDAx
M0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmNwcCAqLywKIAkJCQkwRjMzOEUwNzFCRjAyNzZD
MDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmggKi8sCkBAIC01NDgzLDYgKzU1MDAsOCBA
QAogCQkJCTBGNjRFQUYyMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggKi8sCiAJ
CQkJMEZFQzg1NEMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suY3BwICovLAogCQkJ
CTBGRUM4NTREMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmggKi8sCisJCQkJMEYy
QzYzQjkxRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLywKKwkJ
CQkwRjJDNjNCQTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLywK
IAkJCQkwRkIzODc4QjFCRkJDNDREMDBFM0FCMUUgLyogQWlyQmxvY2tXb3JrbGlzdC5oICovLAog
CQkJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3Bw
ICovLAogCQkJCTBGNjE4MzIxMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRp
b24uaCAqLywKQEAgLTU0OTQsOCArNTUxMyw2IEBACiAJCQkJMEYxMEYxQTIxQzQyMEJGMDAwMUMw
N0QyIC8qIEFpckN1c3RvbS5oICovLAogCQkJCTc5QUJCMTdCMUU1Q0NCNTcwMDQ1QjlBNiAvKiBB
aXJEaXNhc3NlbWJsZXIuY3BwICovLAogCQkJCTc5QUJCMTdDMUU1Q0NCNTcwMDQ1QjlBNiAvKiBB
aXJEaXNhc3NlbWJsZXIuaCAqLywKLQkJCQlEQzQ1NEI4QTFEMDBFODFGMDA0QzE4QUYgLyogQWly
RHVtcEFzSlMuY3BwICovLAotCQkJCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1w
QXNKUy5oICovLAogCQkJCTBGNDU3MDM2MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVE
ZWFkQ29kZS5jcHAgKi8sCiAJCQkJMEY0NTcwMzcxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1p
bmF0ZURlYWRDb2RlLmggKi8sCiAJCQkJMEY2MTgzMjMxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVt
aXRTaHVmZmxlLmNwcCAqLywKQEAgLTczNDUsNiArNzM2Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMUZFNTFCMTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9y
dFJlYXNvbi5oICovLAorCQkJCTBGMkM2M0JGMUU2NjBFQTUwMEMxMzgzOSAvKiBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmNwcCAqLywKIAkJCQk4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oICovLAogCQkJCTBGMzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAv
KiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAqLywKIAkJCQk4NjQwOTIzQjE1NkVF
RDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLywKQEAgLTczNzMsOCArNzM5MSw4IEBA
CiAJCQkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICov
LAogCQkJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIu
Y3BwICovLAogCQkJCUZFNjhDNjM2MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclBy
aW50ZXIuaCAqLywKLQkJCQk4NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODYuaCAqLywKIAkJCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODZfNjQuaCAqLywKKwkJCQk4NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3Nl
bWJsZXJYODYuaCAqLywKIAkJCQlBN0E0QUUwNzE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uY3BwICovLAogCQkJCTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovLAogCQkJCTY1ODYwMTc3MTg1QThGNUUwMDAzMEVF
RSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oICovLApAQCAtNzk2NCw3ICs3OTgy
LDYgQEAKIAkJCQkwRkVDODU3NDFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU3NjFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3Rv
bS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREM0NTRCOEQxRDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1
bXBBc0pTLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4MzJEMUM0NUJG
MDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0REUx
Q0YxQzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuaCBpbiBIZWFkZXJzICov
LApAQCAtNzk3Nyw2ICs3OTk0LDcgQEAKIAkJCQkwRkVDODU4MDFCREFDREM3MDA4MEZGNzQgLyog
QWlySW5zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1ODExQkRBQ0RDNzAwODBGRjc0IC8q
IEFpckluc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRGNjdENzFEOURDNDQyMDAx
Qjk4MjUgLyogQWlyS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQkMxRTYzNDQwQzAw
QzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0
RDQzODFDMDAxNjFDMDA4MUQ2NjMgLyogQWlyTGl2ZW5lc3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRTM0QzFBMUM0QjM5QUUwMDAzQTUxMiAvKiBBaXJMb2dSZWdpc3RlclByZXNzdXJlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjYxODMyRjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyTG93ZXJBZnRl
clJlZ0FsbG9jLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNjgsNiArODA4Niw3IEBACiAJCQkJNDM0
MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODVCMzFCREVEOTU3MDA4MEZGNzQgLyogQjNDb25zdFB0clZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjMzOERGNjFCRTkzRDU1MDAxM0M4OEYgLyogQjNDb25zdHJhaW5l
ZFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCODFFNjM0M0Y3MDBDMTM4MzkgLyog
QjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4RTBF
MUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjMzRkNGQzFDMTYyNUJFMDAzMjNGNjcgLyogQjNEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjZCOEFEOTFDNEVEREEyMDA5NjkwNTIgLyogQjNEdXBsaWNhdGVUYWlscy5oIGluIEhl
YWRlcnMgKi8sCkBAIC04MjU4LDYgKzgyNzcsNyBAQAogCQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4
REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDREOTAzMTdB
MEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzA0RDkwNDE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBC
M05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzcxNDNGQ0QzRjAwNjhC
NzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDNFNDAyMUI2
MThBQUYwMEM4MEUxRSAvKiBERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMThEM0QwMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLApAQCAtODM4OCw2ICs4
NDA4LDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4NDQ3MjggLyogREZHT1NSRXhpdEZ1enou
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFRTE3MTc4RTcz
MDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50b21JbnNlcnRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMxNEVGOTBBRjAwQzcyNTMyIC8qIERGR1Bo
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFQjE5RDBCQTdEMDBCMUQxQjUgLyogREZH
UGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAtODgwNiw2ICs4ODI3LDcgQEAKIAkJCQk3
OUI4MTk5MzFERDI1Q0Y1MDBEREM3MTQgLyogSlNHbG9iYWxPYmplY3RJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTEwMDdDMTE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1
MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2Jq
ZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZB
Q0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKQEAgLTk4MTcsNiArOTgzOSw3IEBACiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNB
OTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQzAxRTY2MEVB
NzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtOTgyNyw3ICs5ODUwLDYgQEAKIAkJCQkwRkVDODU3MzFCREFDREM3MDA4MEZGNzQgLyog
QWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTc1MUJEQUNEQzcw
MDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjE4MzJCMUM0NUJG
MDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJREM0NTRCOEMx
RDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0UxQzRDMUI1NDAwNEQ2QzExIC8qIEFpckZp
eE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI3NCw2ICsxMDI5Niw3IEBA
CiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVk
U2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAv
KiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYz
NDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4
RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQwRTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJ
bmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMjkyLDYgKzEwMzE1
LDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJF
RDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBBMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNl
cnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMx
IC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyogSW50ZXJuYWxGdW5jdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
Njk0LDYgKzY5NCwyMSBAQCBwcml2YXRlOgogICAgICAgICBMZHJMaXRlcmFsT3BfTERSU1cgPSAy
LAogICAgICAgICBMZHJMaXRlcmFsT3BfMTI4QklUID0gMgogICAgIH07CisgICAgCisgICAgZW51
bSBFeG90aWNMb2FkRmVuY2UgeworICAgICAgICBFeG90aWNMb2FkRmVuY2VfQWNxdWlyZSwKKyAg
ICAgICAgRXhvdGljTG9hZEZlbmNlX05vbmUKKyAgICB9OworICAgIAorICAgIGVudW0gRXhvdGlj
TG9hZEF0b21pYyB7CisgICAgICAgIEV4b3RpY0xvYWRBdG9taWNfTGluaywKKyAgICAgICAgRXhv
dGljTG9hZEF0b21pY19Ob25lCisgICAgfTsKKworICAgIGVudW0gRXhvdGljU3RvcmVGZW5jZSB7
CisgICAgICAgIEV4b3RpY1N0b3JlRmVuY2VfTm9uZSwKKyAgICAgICAgRXhvdGljU3RvcmVGZW5j
ZV9SZWxlYXNlLAorICAgIH07CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbWVtUGFpck9mZnNldFNo
aWZ0KGJvb2wgViwgTWVtUGFpck9wU2l6ZSBzaXplKQogICAgIHsKQEAgLTE1MjMsNiArMTUzOCw0
OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbnNuKDB4ZDUwMzNhYmYpOwogICAgIH0KKyAg
ICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBsZGFyKFJlZ2lzdGVySUQg
ZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7Cisg
ICAgICAgIGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUsIEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJl
LCBFeG90aWNMb2FkQXRvbWljX05vbmUsIGRlc3QsIHNyYykpOworICAgIH0KKworICAgIHRlbXBs
YXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxkeHIoUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVy
SUQgc3JjKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihl
eG90aWNMb2FkKE1FTU9QU0laRSwgRXhvdGljTG9hZEZlbmNlX05vbmUsIEV4b3RpY0xvYWRBdG9t
aWNfTGluaywgZGVzdCwgc3JjKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXpl
PgorICAgIHZvaWQgbGRheHIoUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc3JjKQorICAgIHsK
KyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihleG90aWNMb2FkKE1FTU9Q
U0laRSwgRXhvdGljTG9hZEZlbmNlX0FjcXVpcmUsIEV4b3RpY0xvYWRBdG9taWNfTGluaywgZGVz
dCwgc3JjKSk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2
b2lkIHN0eHIoUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRz
dCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZXhvdGlj
U3RvcmUoTUVNT1BTSVpFLCBFeG90aWNTdG9yZUZlbmNlX05vbmUsIHJlc3VsdCwgc3JjLCBkc3Qp
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdGxyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFT
SVpFKCk7CisgICAgICAgIGluc24oc3RvcmVSZWxlYXNlKE1FTU9QU0laRSwgc3JjLCBkc3QpKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdGx4cihSZWdp
c3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAg
ICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihleG90aWNTdG9yZShNRU1PUFNJ
WkUsIEV4b3RpY1N0b3JlRmVuY2VfUmVsZWFzZSwgcmVzdWx0LCBzcmMsIGRzdCkpOworICAgIH0K
IAogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3Ju
KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCkBAIC0zNTg4LDcg
KzM2NDUsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgaW50IG9wNCA9IDA7CiAgICAgICAg
IHJldHVybiAoMHhkNjAwMDAwMCB8IG9wYyA8PCAyMSB8IG9wMiA8PCAxNiB8IG9wMyA8PCAxMCB8
IHhPclpyKHJuKSA8PCA1IHwgb3A0KTsKICAgICB9Ci0KKyAgICAKKyAgICBzdGF0aWMgaW50IGV4
b3RpY0xvYWQoTWVtT3BTaXplIHNpemUsIEV4b3RpY0xvYWRGZW5jZSBmZW5jZSwgRXhvdGljTG9h
ZEF0b21pYyBhdG9taWMsIFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7Cisg
ICAgICAgIHJldHVybiAweDA4NWZmYzAwIHwgc2l6ZSA8PCAzMCB8IGZlbmNlIDw8IDEzIHwgYXRv
bWljIDw8IDIwIHwgc3JjIDw8IDUgfCBkc3Q7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBpbnQg
c3RvcmVSZWxlYXNlKE1lbU9wU2l6ZSBzaXplLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICByZXR1cm4gMHgwODlmZmMwMCB8IHNpemUgPDwgMzAgfCBkc3Qg
PDwgNSB8IHNyYzsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGludCBleG90aWNTdG9yZShNZW1P
cFNpemUgc2l6ZSwgRXhvdGljU3RvcmVGZW5jZSBmZW5jZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIHJldHVybiAweDA4
MDA3YzAwIHwgc2l6ZSA8PCAzMCB8IHJlc3VsdCA8PCAxNiB8IGZlbmNlIDw8IDE1IHwgZHN0IDw8
IDUgfCBzcmM7CisgICAgfQorICAgIAogICAgIC8vIFdvcmthcm91bmQgZm9yIENvcnRleC1BNTMg
ZXJyYXR1bSAoODM1NzY5KS4gRW1pdCBhbiBleHRyYSBub3AgaWYgdGhlCiAgICAgLy8gbGFzdCBp
bnN0cnVjdGlvbiBpbiB0aGUgYnVmZmVyIGlzIGEgbG9hZCwgc3RvcmUgb3IgcHJlZmV0Y2guIE5l
ZWRlZAogICAgIC8vIGJlZm9yZSA2NC1iaXQgbXVsdGlwbHktYWNjdW11bGF0ZSBpbnN0cnVjdGlv
bnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2Vt
Ymxlci5oIiAvLyBIYXZlIHRvIGJyZWFrIHdpdGggc3R5bGUgYmVjYXVzZSBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmggaXMgYSBzaGFkeSBoZWFkZXIuCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQor
CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCit7
CisgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICBjYXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXJCYXNlOjpTdWNjZXNzOgorICAgICAgICBvdXQucHJpbnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OkZhaWx1cmU6Cisg
ICAgICAgIG91dC5wcmludCgiRmFpbHVyZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgor
CisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZp
c2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1JhbmRvbS5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTUwLDggKzUxLDI4IEBAIG5hbWVzcGFjZSBERkcgewogc3RydWN0
IE9TUkV4aXQ7CiB9CiAKK2NsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlIHsKK3B1Ymxp
YzoKKyAgICBlbnVtIFN0YXR1c0NvbmRpdGlvbiB7CisgICAgICAgIFN1Y2Nlc3MsCisgICAgICAg
IEZhaWx1cmUKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBTdGF0dXNDb25kaXRpb24gaW52ZXJ0
KFN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisgICAgeworICAgICAgICBzd2l0Y2ggKGNvbmRp
dGlvbikgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAgICAgICByZXR1cm4gRmFpbHVy
ZTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7Cisg
ICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIFN1Y2Nlc3M7CisgICAgfQorfTsKKwogdGVtcGxhdGUgPGNsYXNzIEFzc2VtYmxlclR5
cGUsIGNsYXNzIE1hY3JvQXNzZW1ibGVyVHlwZT4KLWNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIgeworY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyQmFzZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1ibGVyVHlwZT4gQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlclR5cGU7CiAgICAgdHlwZWRlZiBBc3NlbWJsZXJUeXBlIEFzc2VtYmxlclR5cGVfVDsKQEAg
LTExMDgsMyArMTEyOSwxNiBAQCBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUs
IE1hCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKIAogfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRT
dHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdGF0dXNDb25kaXRpb24pOworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIx
MzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMyOyAvLyBUaGlzIGlzIHN1cGVyIHVzZWZ1bCBm
b3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8vIFV0aWxpdGllcyB1c2VkIGJ5IHRoZSBERkcg
SklULgorICAgIHVzaW5nIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQ7CiAgICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQ7CiAgICAgCiAgICAgc3RhdGljIERvdWJs
ZUNvbmRpdGlvbiBpbnZlcnQoRG91YmxlQ29uZGl0aW9uIGNvbmQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAko
cmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMzczLDcgKzMzNzMs
MjI5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmRtYklTSCgpOwogICAg
IH0KLQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRFeHRlbnRUbzMyKEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sZGFyPDg+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBsb2FkQWNxOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKGFkZHJlc3Ms
IGRlc3QpOworICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoMHhmZiksIGRlc3QpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdGxyPDg+KHNyYywgZXh0cmFj
dFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3Ex
NlNpZ25lZEV4dGVuZFRvMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXI8MTY+KGRlc3QsIGV4dHJhY3RTaW1w
bGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTYoSW1w
bGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxv
YWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoYWRkcmVzcywgZGVzdCk7CisgICAgICAgIGFuZDMyKFRy
dXN0ZWRJbW0zMigweGZmZmYpLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJl
bDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN0bHI8MTY+KHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVz
cykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRhcjwz
Mj4oYWRkcmVzcywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTY0KEltcGxp
Y2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sZGFyPDY0PihhZGRyZXNzLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBz
dG9yZVJlbDMyKFJlZ2lzdGVySUQgZGVzdCwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdGxyPDMyPihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVz
cyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3RlcklE
IGRlc3QsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuc3Rscjw2ND4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGxvYWRMaW5rOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGR4cjw4PihkZXN0LCBleHRy
YWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExp
bmtBY3E4KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sZGF4cjw4PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhh
ZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kOChSZWdpc3RlcklEIHNy
YywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuc3R4cjw4PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJl
c3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDgoUmVnaXN0
ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPDg+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2lt
cGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmsxNihJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubGR4cjwxNj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rQWNxMTYoSW1wbGljaXRBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXhy
PDE2PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVDb25kMTYoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0eHI8
MTY+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgc3RvcmVDb25kUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN0bHhyPDE2PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJl
c3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8MzI+
KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBsb2FkTGlua0FjcTMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGF4cjwzMj4oZGVzdCwgZXh0cmFjdFNp
bXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZDMy
KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdHhyPDMyPihyZXN1bHQsIHNyYywgZXh0
cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3Jl
Q29uZFJlbDMyKFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjwzMj4ocmVzdWx0
LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBsb2FkTGluazY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhyPDY0PihkZXN0LCBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmtBY3E2NChJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubGRheHI8NjQ+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmQ2NChSZWdpc3RlcklEIHNyYywgSW1w
bGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3R4cjw2ND4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFk
ZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmRSZWw2NChSZWdpc3RlcklE
IHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuc3RseHI8NjQ+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
OChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9t
aWNTdHJvbmdDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCByZXN1bHQp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzwxNj4o
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCByZXN1bHQpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBSZWdpc3RlcklEIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRB
bmRSZXN1bHQsIG5ld1ZhbHVlLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUzw2ND4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1Zh
bHVlLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdD
QVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0
b21pY1JlbGF4ZWRTdHJvbmdDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVl
LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVMx
NihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9t
aWNSZWxheGVkU3Ryb25nQ0FTPDE2Pihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUs
IHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzMy
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21p
Y1JlbGF4ZWRTdHJvbmdDQVM8MzI+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwg
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVkU3Ryb25nQ0FTNjQo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWlj
UmVsYXhlZFN0cm9uZ0NBUzw2ND4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBy
ZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTOChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1dlYWtDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1Zh
bHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljV2Vh
a0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICByZXR1cm4gYnJhbmNoQXRvbWljV2Vha0NBUzwxNj4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNo
QXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljV2Vha0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExp
c3QgYnJhbmNoQXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljV2Vha0NBUzw2ND4oY29uZCwg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgSnVtcExpc3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljUmVs
YXhlZFdlYWtDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtD
QVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTPDE2Pihjb25kLCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBi
cmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM8
MzI+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hBdG9taWNSZWxheGVkV2Vha0NBUzw2ND4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkZXBlbmQzMihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZW9y
PDMyPihkZXN0LCBzcmMsIHNyYyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZGVwZW5kNjQoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmVvcjw2ND4oZGVzdCwgc3JjLCBzcmMpOworICAgIH0KKyAgICAKICAgICAvLyBNaXNjIGhlbHBl
ciBmdW5jdGlvbnMuCiAKICAgICAvLyBJbnZlcnQgYSByZWxhdGlvbmFsIGNvbmRpdGlvbiwgZS5n
LiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4KQEAgLTM4NzUsNiArNDA5NywxNTgg
QEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAg
IAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxvYWRMaW5rKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhy
PGRhdGFzaXplPihkZXN0LCBzcmMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0
YXNpemU+CisgICAgdm9pZCBsb2FkTGlua0FjcShSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8ZGF0YXNpemU+KGRlc3QsIHNy
Yyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIHN0
b3JlQ29uZChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0eHI8ZGF0YXNpemU+KHNyYywgZGVzdCwg
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZv
aWQgc3RvcmVDb25kUmVsKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RseHI8ZGF0YXNpemU+KHNy
YywgZGVzdCwgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXpl
PgorICAgIHZvaWQgc2lnbkV4dGVuZChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0
ZTxpbnQgZGF0YXNpemU+CisgICAgSnVtcCBicmFuY2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0
ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBzaWdu
RXh0ZW5kPGRhdGFzaXplPihleHBlY3RlZEFuZFJlc3VsdCwgZXhwZWN0ZWRBbmRSZXN1bHQpOwor
ICAgICAgICAKKyAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJl
c3MoYWRkcmVzcyk7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAgICAgICAKKyAgICAgICAgTGFiZWwgcmVsb29w
ID0gbGFiZWwoKTsKKyAgICAgICAgbG9hZExpbmtBY3E8ZGF0YXNpemU+KGFkZHJlc3MsIHRtcCk7
CisgICAgICAgIEp1bXAgZmFpbHVyZSA9IGJyYW5jaDxkYXRhc2l6ZT4oTm90RXF1YWwsIGV4cGVj
dGVkQW5kUmVzdWx0LCB0bXApOworICAgICAgICAKKyAgICAgICAgc3RvcmVDb25kUmVsPGRhdGFz
aXplPihuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKE5v
blplcm8sIHJlc3VsdCkubGlua1RvKHJlbG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGNvbmQgPT0gU3VjY2VzcyksIHJlc3VsdCk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1
bXAoKTsKKyAgICAgICAgCisgICAgICAgIGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgbW92
ZSh0bXAsIGV4cGVjdGVkQW5kUmVzdWx0KTsKKyAgICAgICAgc3RvcmVDb25kUmVsPGRhdGFzaXpl
Pih0bXAsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgICAgIGJyYW5jaFRlc3QzMihOb25aZXJvLCBy
ZXN1bHQpLmxpbmtUbyhyZWxvb3AsIHRoaXMpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihj
b25kID09IEZhaWx1cmUpLCByZXN1bHQpOworICAgICAgICAKKyAgICAgICAgZG9uZS5saW5rKHRo
aXMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBh
dG9taWNSZWxheGVkU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgc2lnbkV4dGVuZDxkYXRhc2l6ZT4oZXhw
ZWN0ZWRBbmRSZXN1bHQsIGV4cGVjdGVkQW5kUmVzdWx0KTsKKyAgICAgICAgCisgICAgICAgIFJl
Z2lzdGVySUQgYWRkcmVzcyA9IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpOworICAgICAg
ICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKTsKKyAgICAgICAgCisgICAgICAgIExhYmVsIHJlbG9vcCA9IGxhYmVsKCk7CisgICAgICAg
IGxvYWRMaW5rPGRhdGFzaXplPihhZGRyZXNzLCB0bXApOworICAgICAgICBKdW1wIGZhaWx1cmUg
PSBicmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBlY3RlZEFuZFJlc3VsdCwgdG1wKTsKKyAg
ICAgICAgCisgICAgICAgIHN0b3JlQ29uZDxkYXRhc2l6ZT4obmV3VmFsdWUsIGFkZHJlc3MsIHJl
c3VsdCk7CisgICAgICAgIGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXN1bHQpLmxpbmtUbyhyZWxv
b3AsIHRoaXMpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjb25kID09IFN1Y2Nlc3MpLCBy
ZXN1bHQpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIAorICAgICAgICBm
YWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAgIG1vdmUodG1wLCBleHBlY3RlZEFuZFJlc3VsdCk7
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGNvbmQgPT0gRmFpbHVyZSksIHJlc3VsdCk7Cisg
ICAgICAgIAorICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfQorICAgIAorICAgIHRlbXBs
YXRlPGludCBkYXRhc2l6ZT4KKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTKFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBzaWduRXh0ZW5k
PGRhdGFzaXplPihleHBlY3RlZEFuZFJlc3VsdCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAg
ICAKKyAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRk
cmVzcyk7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpOworICAgICAgICAKKyAgICAgICAgSnVtcExpc3Qgc3VjY2VzczsK
KyAgICAgICAgSnVtcExpc3QgZmFpbHVyZTsKKworICAgICAgICBsb2FkTGlua0FjcTxkYXRhc2l6
ZT4oYWRkcmVzcywgdG1wKTsKKyAgICAgICAgZmFpbHVyZS5hcHBlbmQoYnJhbmNoPGRhdGFzaXpl
PihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIHRtcCkpOworICAgICAgICBzdG9yZUNv
bmRSZWw8ZGF0YXNpemU+KG5ld1ZhbHVlLCBhZGRyZXNzLCBleHBlY3RlZEFuZENsb2JiZXJlZCk7
CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICAgICAgY2FzZSBTdWNjZXNz
OgorICAgICAgICAgICAgc3VjY2Vzcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkKSk7CisgICAgICAgICAgICBmYWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAg
ICAgICByZXR1cm4gc3VjY2VzczsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAgICAg
ZmFpbHVyZS5hcHBlbmQoYnJhbmNoVGVzdDMyKE5vblplcm8sIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
KSk7CisgICAgICAgICAgICByZXR1cm4gZmFpbHVyZTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgdGVt
cGxhdGU8aW50IGRhdGFzaXplPgorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFr
Q0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBz
aWduRXh0ZW5kPGRhdGFzaXplPihleHBlY3RlZEFuZFJlc3VsdCwgZXhwZWN0ZWRBbmRSZXN1bHQp
OworICAgICAgICAKKyAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFk
ZHJlc3MoYWRkcmVzcyk7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAgICAgICAKKyAgICAgICAgSnVtcExpc3Qg
c3VjY2VzczsKKyAgICAgICAgSnVtcExpc3QgZmFpbHVyZTsKKworICAgICAgICBsb2FkTGluazxk
YXRhc2l6ZT4oYWRkcmVzcywgdG1wKTsKKyAgICAgICAgZmFpbHVyZS5hcHBlbmQoYnJhbmNoPGRh
dGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIHRtcCkpOworICAgICAgICBz
dG9yZUNvbmQ8ZGF0YXNpemU+KG5ld1ZhbHVlLCBhZGRyZXNzLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCk7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICAgICAgY2FzZSBTdWNj
ZXNzOgorICAgICAgICAgICAgc3VjY2Vzcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkKSk7CisgICAgICAgICAgICBmYWlsdXJlLmxpbmsodGhpcyk7CisgICAg
ICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAg
ICAgZmFpbHVyZS5hcHBlbmQoYnJhbmNoVGVzdDMyKE5vblplcm8sIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkKSk7CisgICAgICAgICAgICByZXR1cm4gZmFpbHVyZTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAg
UmVnaXN0ZXJJRCBleHRyYWN0U2ltcGxlQWRkcmVzcyhJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQpCisgICAgICAgICAgICByZXR1cm4g
YWRkcmVzcy5iYXNlOworICAgICAgICAKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3Rl
ZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCkpOworICAgICAgICBhZGRQdHIoYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVn
aXN0ZXIpOworICAgICAgICByZXR1cm4gbWVtb3J5VGVtcFJlZ2lzdGVyOworICAgIH0KIAogICAg
IEp1bXAganVtcEFmdGVyRmxvYXRpbmdQb2ludENvbXBhcmUoRG91YmxlQ29uZGl0aW9uIGNvbmQp
CiAgICAgewpAQCAtMzk4Nyw2ICs0MzYxLDI0IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBNYWNyb0Fz
c2VtYmxlckFSTTY0OjoKICAgICBtX2Fzc2VtYmxlci5zdHVyaChydCwgcm4sIHNpbW0pOwogfQog
Cit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0OjpzaWduRXh0ZW5k
PDg+KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCit7CisgICAgc2lnbkV4dGVuZDhU
bzMyKHNyYywgZGVzdCk7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkIE1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnNpZ25FeHRlbmQ8MTY+KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
Cit7CisgICAgc2lnbkV4dGVuZDE2VG8zMihzcmMsIGRlc3QpOworfQorCit0ZW1wbGF0ZTw+Citp
bmxpbmUgSnVtcCBNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2goUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCit7CisgICAgcmV0dXJu
IGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2
aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTcxLDYgKzE3MSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYWRkMzIoQmFzZUluZGV4IHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkbF9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAg
IHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKQEAgLTI1
MSwxNiArMjU2LDcxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5k
bF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUp
OworICAgIH0KKworICAgIHZvaWQgYW5kMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5k
ZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZDgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmFuZGJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisK
KyAgICB2b2lkIGFuZDgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRl
c3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIoQWRkcmVzcyBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoQmFz
ZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YW5kbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3Qp
OworICAgIH0KKwogICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9pbShpbW0ubV92YWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhbmQzMihUcnVz
dGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kMTYoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuYW5kd19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kMTYoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3
X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBhbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZGJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSks
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kOChU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZGJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKwogICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAob3AxID09IG9wMikKQEAgLTQ1Niw2ICs1
MTYsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5uZWdsX20oc3JjRGVzdC5vZmZz
ZXQsIHNyY0Rlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBuZWczMihCYXNlSW5kZXggc3Jj
RGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2xfbShzcmNEZXN0Lm9mZnNldCwg
c3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5lZzE2KEFkZHJlc3Mgc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm5lZ3dfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IG5lZzE2KEJhc2VJbmRleCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVn
d19tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UsIHNyY0Rlc3QuaW5kZXgsIHNyY0Rlc3Qu
c2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnOChBZGRyZXNzIHNyY0Rlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5uZWdiX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBuZWc4KEJhc2VJbmRleCBzcmNEZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubmVnYl9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UsIHNyY0Rl
c3QuaW5kZXgsIHNyY0Rlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3Js
X3JyKHNyYywgZGVzdCk7CkBAIC00NzEsMTYgKzU1Niw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
YXNzZW1ibGVyLm9ybF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAor
ICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5vcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0
LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3IxNihSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcndf
cm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsK
KyAgICB9CisKKyAgICB2b2lkIG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjMy
KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci5vcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQg
b3IzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5vcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxl
LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKGltbS5tX3ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5vcmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3IxNihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5vcndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcndf
aW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5vcmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSksIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I4KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIub3JiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisK
ICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAob3AxID09IG9wMikKQEAgLTY1NCwxNiArNzk0LDcx
IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92YWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWIxNihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zdWJ3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBzdWI4KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmJfaW0o
c3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX2ltKGltbS5tX3Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19pbShzdGF0aWNf
Y2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3ViOChU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnN1YmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKwogICAgIHZvaWQgc3ViMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3Qp
OwogICAgIH0KIAorICAgIHZvaWQgc3ViMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIo
UmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LnN1Ymxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lk
IHN1YjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdWJ3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisg
ICAgdm9pZCBzdWI4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBzdWIxNihSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dWJ3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWI4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwg
ZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhv
cjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fz
c2VtYmxlci54b3JsX3JyKHNyYywgZGVzdCk7CkBAIC02NzcsNiArODcyLDUwIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RsX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVz
dC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnhvcmxfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5k
ZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2Fz
dDxpbnQxNl90PihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yd19pbShpbW0ubV92YWx1
ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihUcnVz
dGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIGltbS5tX3ZhbHVl
ID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1f
dmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0
LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yOChU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1
ZSA9IHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1f
dmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmJf
aW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZv
aWQgeG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSk7CisgICAgICAg
IGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vdGJfbShk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9pbShpbW0ubV92YWx1ZSwgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAg
dm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCkBAIC02OTAsMTEgKzkyOSw0MSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwg
ZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhv
cjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci54b3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAg
dm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci54b3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5p
bmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4KFJlZ2lzdGVy
SUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcmJf
cm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsK
KyAgICB9CisKICAgICB2b2lkIHhvcjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci54b3JsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBk
ZXN0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCB4b3IzMihCYXNlSW5kZXggc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JsX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorICAgIAogICAg
IHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBpZiAob3AxID09IG9wMikKQEAgLTc0MSw2ICsxMDEwLDMxIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOwogICAgIH0KIAorICAgIHZvaWQgbm90MzIoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5ub3RsX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBub3QxNihBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBub3QxNihCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDgoQWRkcmVzcyBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgbm90OChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIHNxcnREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNxcnRzZF9ycihzcmMs
IGRzdCk7CkBAIC0xMDcxLDQyICsxMzY1LDIzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RvcmUx
NihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewotI2lmIENQVShYODYp
Ci0gICAgICAgIC8vIE9uIDMyLWJpdCB4ODYgd2UgY2FuIG9ubHkgc3RvcmUgZnJvbSB0aGUgZmly
c3QgNCByZWdpc3RlcnM7Ci0gICAgICAgIC8vIGVzcC4uZWRpIGFyZSBtYXBwZWQgdG8gdGhlICdo
JyByZWdpc3RlcnMhCi0gICAgICAgIGlmIChzcmMgPj0gNCkgewotICAgICAgICAgICAgLy8gUGlj
ayBhIHRlbXBvcmFyeSByZWdpc3Rlci4KLSAgICAgICAgICAgIFJlZ2lzdGVySUQgdGVtcCA9IGdl
dFVudXNlZFJlZ2lzdGVyKGFkZHJlc3MpOwotCi0gICAgICAgICAgICAvLyBTd2FwIHRvIHRoZSB0
ZW1wb3JhcnkgcmVnaXN0ZXIgdG8gcGVyZm9ybSB0aGUgc3RvcmUuCi0gICAgICAgICAgICBzd2Fw
KHNyYywgdGVtcCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3JtKHRlbXAsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwot
ICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0jZW5kaWYKICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybShzcmMsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwogICAgIH0K
IAogICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQogICAg
IHsKLSNpZiBDUFUoWDg2KQotICAgICAgICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNhbiBvbmx5IHN0
b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOwotICAgICAgICAvLyBlc3AuLmVkaSBhcmUg
bWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQotICAgICAgICBpZiAoc3JjID49IDQpIHsKLSAg
ICAgICAgICAgIC8vIFBpY2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCi0gICAgICAgICAgICBSZWdp
c3RlcklEIHRlbXAgPSBnZXRVbnVzZWRSZWdpc3RlcihhZGRyZXNzKTsKLQotICAgICAgICAgICAg
Ly8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhlIHN0b3JlLgot
ICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92
d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKLSAgICAgICAgICAgIHN3
YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X2ltKHN0YXRpY19j
YXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZTE2
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CiAKICAgICAvLyBGbG9hdGluZy1wb2ludCBv
cGVyYXRpb246CiAgICAgLy8KQEAgLTI3NDMsNzQgKzMwMTgsOTAxIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOwogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfaW0oMCwgMCwg
WDg2UmVnaXN0ZXJzOjplc3ApOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CiAKLSAgICAvLyBXZSB0YWtlIHRoaXMgdG8g
bWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwgc3RvcmVzLiBTbywgaXQncyBh
IG5vLW9wIG9uIHg4Ni4KLSAgICB2b2lkIHN0b3JlRmVuY2UoKQorICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3Vs
dCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVz
dWx0KQogICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsg
fSk7CiAgICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50
cyBtb3Rpb24gb2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KLSAgICB2
b2lkIGxvYWRGZW5jZSgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7CisgICAgICAgIGF0
b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fz
c2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9j
YXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlv
bikKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICBYODZBc3NlbWJsZXI6
OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGRl
c3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9Ci0gICAgCi0gICAgc3RhdGljIHB0cmRpZmZf
dCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAg
ewotICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0
LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgcGF0Y2hh
YmxlSnVtcFNpemUoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBYODZBc3NlbWJsZXI6OnBhdGNoYWJsZUp1bXBTaXplKCk7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzgoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgaWYgKHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBD
UFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpCi0gICAgICAgICAgICB1cGRhdGVFYXgxRWN4Rmxh
Z3MoKTsKLSAgICAgICAgcmV0dXJuIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3Rh
dGU6OlNldDsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0g
eyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQVZYKCkKKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewotICAgICAgICAvLyBB
Vlggc3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVzc2lvbnMgYW5kIHRob3NlIHJlZ3Jlc3Np
b25zIGNhbiBiZSBtYXNzaXZlLgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jf
cm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCB1cGRhdGVFYXgx
RWN4RmxhZ3MoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsK
LSAgICAgICAgaW50IGZsYWdzID0gMDsKLSNpZiBDT01QSUxFUihNU1ZDKQotICAgICAgICBpbnQg
Y3B1SW5mb1s0XTsKLSAgICAgICAgX19jcHVpZChjcHVJbmZvLCAweDEpOwotICAgICAgICBmbGFn
cyA9IGNwdUluZm9bMl07Ci0jZWxpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCi0jaWYgQ1BVKFg4
Nl82NCkKLSAgICAgICAgYXNtICgKLSAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKLSAg
ICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgotICAgICAg
ICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIDogIiVlYXgi
LCAiJWVieCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICApOwotI2Vsc2UKLSAgICAgICAg
YXNtICgKLSAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKLSAgICAgICAgICAgICJwdXNo
bCAlJWVieDsiCi0gICAgICAgICAgICAiY3B1aWQ7IgotICAgICAgICAgICAgInBvcGwgJSVlYng7
IgotICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDogIj1nIiAoZmxh
Z3MpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlY3giLCAiJWVkeCIK
LSAgICAgICAgICAgICk7Ci0jZW5kaWYKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVk
QW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTMTYoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhw
ZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1f
YXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZd
IHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBi
cmFuY2hBdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsg
fSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21p
Y1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21w
eGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAg
ICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJv
bmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3
X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJv
bmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3Vs
dCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZd
IHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMy
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVy
biBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1f
YXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgLy8g
SWYgeW91IHVzZSB3ZWFrIENBUywgeW91IGNhbm5vdCByZWx5IG9uIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkIHRvIGhhdmUgYW55IHBhcnRpY3VsYXIgdmFsdWUgYWZ0ZXIKKyAgICAvLyB0aGlzIGNvbXBs
ZXRlcy4gT24geDg2LCBpdCB3aWxsIGNvbnRhaW4gdGhlIHJlc3VsdCBvZiB0aGUgc3Ryb25nIENB
Uy4gT24gQVJNLCBpdCB3aWxsIHN0aWxsIGhhdmUKKyAgICAvLyB0aGUgZXhwZWN0ZWQgdmFsdWUu
CisgICAgdm9pZCBhdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzgo
Y29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOwor
ICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJ
bmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCBy
ZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
YXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzE2KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAg
eworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
bmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFr
Q0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBh
dG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdp
c3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisK
KyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChj
b25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKwor
ICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgo
Y29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisK
KyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQor
CisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NB
UzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJv
bmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVM4
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQp
CisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21p
Y1JlbGF4ZWRXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVn
aXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBl
eHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQor
CisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNl
SW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNT
dHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3Ms
IHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsK
KyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhl
ZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FT
OChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNT
dHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMTYo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBu
ZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVk
V2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljQWRkOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgoaW1tLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChS
ZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhZGQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljQWRkOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgocmVnLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihUcnVzdGVkSW1tMzIgaW1tLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIGFkZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRk
MTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFkZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQzMihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMy
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQzMihyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBzdWI4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
U3ViOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChpbW0sIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoUmVnaXN0ZXJJRCBy
ZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljU3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBz
dWIxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFJl
Z2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIHN1YjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihyZWcsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJbW0zMiBpbW0s
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFJlZ2lzdGVy
SUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgc3ViMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFJl
Z2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIGFuZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNBbmQ4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChyZWcsIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgYW5kMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQx
NihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNBbmQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgYW5kMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNBbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMyKGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMyKHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFRydXN0ZWRJbW0zMiBpbW0s
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgb3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4
KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNPcjgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I4KHJlZywgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgb3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihSZWdpc3RlcklEIHJlZywg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBvcjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3Ix
NihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNPcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IzMihpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNPcjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IzMihyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoUmVnaXN0ZXJJ
RCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljWG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IxNihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICB4b3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IxNihyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Iz
MihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgeG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNOZWc4KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgbmVnOChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNOZWc4KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBuZWc4KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY05lZzE2KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgbmVnMTYoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljTmVnMTYoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG5lZzE2KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY05lZzMyKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgbmVnMzIoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljTmVnMzIoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG5lZzMyKGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY05vdDgoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBub3Q4KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY05vdDgoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG5vdDgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljTm90MTYoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBub3QxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNOb3QxNihCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgbm90MTYoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljTm90MzIoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBub3QzMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNOb3QzMihCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgbm90MzIoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnQWRkOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRiX3Jt
KHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDE2KFJlZ2lzdGVy
SUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGR3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDE2KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZHdfcm0ocmVnLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueGFkZGxfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBt
X2Fzc2VtYmxlci54YWRkbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZzgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnYl9ybShyZWcsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGcxNihSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBtX2Fzc2VtYmxlci54Y2hnd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGcxNihSZWdpc3RlcklEIHJlZywgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhjaGd3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljWGNoZzMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JtKHJl
ZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljWGNoZzMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0o
cmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOChBZGRyZXNzIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDgoc3JjLCBkZXN0KTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBsb2FkQWNxOChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBsb2FkOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxv
YWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbG9hZDhTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRl
c3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNihBZGRyZXNzIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDE2KHNyYywgZGVzdCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgbG9hZEFjcTE2KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIGxvYWQxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxv
YWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoc3Jj
LCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMzIoQWRkcmVzcyBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQzMihzcmMsIGRlc3QpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBsb2FkMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAg
IHN0b3JlOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTgoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDgoVHJ1c3RlZEltbTMyIGltbSwg
QWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KGltbSwgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgc3RvcmU4KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAg
ICAgc3RvcmUxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYo
UmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUxNihz
cmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUxNihpbW0sIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KGltbSwgZGVzdCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgc3RvcmUzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0
b3JlUmVsMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
c3RvcmUzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihpbW0s
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKGltbSwgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMg
bW90aW9uIG9mIG5vcm1hbCBzdG9yZXMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgorICAgIHZv
aWQgc3RvcmVGZW5jZSgpCisgICAgeworICAgIH0KKworICAgIC8vIFdlIHRha2UgdGhpcyB0byBt
ZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBu
by1vcCBvbiB4ODYuCisgICAgdm9pZCBsb2FkRmVuY2UoKQorICAgIHsKKyAgICB9CisKKyAgICBz
dGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25T
dGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBYODZB
c3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRy
ZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0KKyAgICAKKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgIH0K
KworICAgIHN0YXRpYyBwdHJkaWZmX3QgcGF0Y2hhYmxlSnVtcFNpemUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6cGF0Y2hhYmxlSnVtcFNpemUoKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpCisgICAgeworICAg
ICAgICBpZiAoc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tl
ZCkKKyAgICAgICAgICAgIHVwZGF0ZUVheDFFY3hGbGFncygpOworICAgICAgICByZXR1cm4gc19z
c2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAgIH0KKworICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzQVZYKCkKKyAgICB7CisgICAgICAgIC8vIEFWWCBzdGlsbCBjYXVz
ZXMgbXlzdGVyaW91cyByZWdyZXNzaW9ucyBhbmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1h
c3NpdmUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1
cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAgIHsKKyAgICAgICAgaW50IGZsYWdzID0gMDsKKyNpZiBD
T01QSUxFUihNU1ZDKQorICAgICAgICBpbnQgY3B1SW5mb1s0XTsKKyAgICAgICAgX19jcHVpZChj
cHVJbmZvLCAweDEpOworICAgICAgICBmbGFncyA9IGNwdUluZm9bMl07CisjZWxpZiBDT01QSUxF
UihHQ0NfT1JfQ0xBTkcpCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgYXNtICgKKyAgICAgICAg
ICAgICJtb3ZsICQweDEsICUlZWF4OyIKKyAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAg
ICAibW92bCAlJWVjeCwgJTA7IgorICAgICAgICAgICAgOiAiPWciIChmbGFncykKKyAgICAgICAg
ICAgIDoKKyAgICAgICAgICAgIDogIiVlYXgiLCAiJWVieCIsICIlZWN4IiwgIiVlZHgiCisgICAg
ICAgICAgICApOworI2Vsc2UKKyAgICAgICAgYXNtICgKKyAgICAgICAgICAgICJtb3ZsICQweDEs
ICUlZWF4OyIKKyAgICAgICAgICAgICJwdXNobCAlJWVieDsiCisgICAgICAgICAgICAiY3B1aWQ7
IgorICAgICAgICAgICAgInBvcGwgJSVlYng7IgorICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUw
OyIKKyAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCisgICAgICAgICAgICA6CisgICAgICAgICAg
ICA6ICIlZWF4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICk7CisjZW5kaWYKICNlbmRp
ZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCiAgICAgICAgIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9
IChmbGFncyAmICgxIDw8IDE5KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tT
dGF0ZTo6Q2xlYXI7CiAgICAgICAgIHNfYXZ4Q2hlY2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDI4
KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CkBAIC0y
ODMxLDYgKzM5MzMsMTggQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
WDg2QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOwogICAgIH0KIAorICAgIFg4NkFzc2VtYmxl
cjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihTdGF0dXNDb25kaXRpb24gY29uZCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAgICAg
ICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25FOworICAgICAgICBjYXNlIEZhaWx1cmU6
CisgICAgICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25ORTsKKyAgICAgICAg
fQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
WDg2QXNzZW1ibGVyOjpDb25kaXRpb25FOworICAgIH0KKwogICAgIHZvaWQgc2V0MzIoWDg2QXNz
ZW1ibGVyOjpDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICNpZiBDUFUo
WDg2KQpAQCAtMjkyNSw2ICs0MDM5LDM1IEBAIHByb3RlY3RlZDoKICAgICAgICAgbW92ZShUcnVz
dGVkSW1tMzIoc2l6ZU9mUmVnaXN0ZXIpLCBkc3QpOwogICAgICAgICBzcmNJc05vblplcm8ubGlu
ayh0aGlzKTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2
b2lkIGF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCByZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAg
eworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVuYygpOworICAgICAgICBzd2Fw
KGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIHNldDMyKHg4
NkNvbmRpdGlvbihjb25kKSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVkQW5k
UmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgZnVuYygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdp
c3RlcnM6OmVheCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICBK
dW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3
YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRS
ZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KIAogcHJpdmF0ZToKICAgICAvLyBP
bmx5IE1hY3JvQXNzZW1ibGVyWDg2IHNob3VsZCBiZSB1c2luZyB0aGUgZm9sbG93aW5nIG1ldGhv
ZDsgU1NFMiBpcyBhbHdheXMgYXZhaWxhYmxlIG9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lv
biAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjQsMTEgKzI2NCwy
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYWRkNjQoQmFzZUluZGV4IHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAg
IHZvaWQgYWRkNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9
CiAKKyAgICB2b2lkIGFkZDY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
LCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFkZDY0KEFic29s
dXRlQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihzcmMubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CkBAIC0zMDYsNiArMzE2
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfaW0oaW1tLm1fdmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYWRk
NjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBp
ZiAoaW1tLm1fdmFsdWUgPT0gMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmluY3FfbShhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9pbShpbW0ubV92YWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0
ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRy
ZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpAQCAtMzQyLDExICszNjAsNDEgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisg
ICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoQWRk
cmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFu
ZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgYW5k
NjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUs
IGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pcihpbW0ubV92
YWx1ZSwgc3JjRGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2ltKGltbS5t
X3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0
KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kcV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5p
bmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tUHRy
IGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgaW50cHRyX3QgaW50VmFs
dWUgPSBpbW0uYXNJbnRwdHIoKTsKQEAgLTU1MiwxMSArNjAwLDUxIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NlbWJsZXIubmVncV9yKGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgbmVnNjQoQWRk
cmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVncV9tKGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnNjQoQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwg
ZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vcnFf
cnIoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIG9yNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7Cisg
ICAgfQorCisgICAgdm9pZCBvcjY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3Jj
LmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgb3I2NChUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFf
aW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZv
aWQgb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwg
ZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjY0KFRydXN0ZWRJ
bW02NCBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92
YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKQpAQCAtNjE5LDE2ICs3
MDcsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ltKGltbS5tX3ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0
KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuc3VicV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2
NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIuc3VicV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9p
ZCBzdWI2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zdWJxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5z
Y2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
IH0KKwogICAgIHZvaWQgeG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcnIoc3JjLCBkZXN0KTsKQEAgLTY1MSw2ICs3
NTQsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JxX3JtKHNyYywgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCB4b3I2NChSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3I2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7
CisgICAgfQorCisgICAgdm9pZCB4b3I2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci54b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisK
KyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3I2
NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci54b3JxX2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0KTsKQEAgLTY2Niw2ICs3OTQs
MTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5ub3RxX20oZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBub3Q2NChCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdHFfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0
LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGxvYWQ2NChJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsKQEAgLTcyNSw2
ICs4NTgsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2kzMm0oaW1tLm1f
dmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQg
c3RvcmU2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAg
dm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQog
ICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF8zMl82NChpbW0ubV92YWx1ZSkpIHsK
QEAgLTEyOTQsNyArMTQzMiwyNzUgQEAgcHVibGljOgogICAgICAgICBNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0
ZXIoKSk7CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVz
dDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSksIG1hc2s4KTsKICAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhj
b25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hn
cV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0K
IAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBh
ZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NB
Uyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25n
Q0FTNjQoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVk
QW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhw
ZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0
b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIu
Y21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNT
dHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhj
aGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FT
NjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQp
CisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9t
aWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3Rl
cklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KGNv
bmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQor
CisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCBy
ZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVM2NChTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsK
KyAgICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
UmVsYXhlZFdlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFu
Y2hBdG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25k
LCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAg
IHZvaWQgYXRvbWljQWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2NChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJbW0zMiBpbW0s
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhZGQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2NChy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgc3ViNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWI2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNBbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDY0KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFuZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQW5kNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFu
ZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBvcjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjY0KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIHhvcjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljWG9yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjY0
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnNjQoQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBu
ZWc2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc2NChCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
bmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90NjQoQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBu
b3Q2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q2NChCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
bm90NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDY0KFJl
Z2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDY0
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZHFfcm0ocmVnLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBt
X2Fzc2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRB
Y3E2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDY0
KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTY0KEJhc2VJbmRleCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3Mg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBzdG9yZVJlbDY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIHN0b3JlNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZVJlbDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0
b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU2NChpbW0s
IGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIuY3Z0dHNkMnNpcV9ycihzcmMsIGRlc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTkwLDE2ICsxOTAsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfQUREX0V2
R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MDEsCiAgICAgICAgIE9QX0FERF9HdkV2ICAgICAg
ICAgICAgICAgICAgICAgPSAweDAzLAogICAgICAgICBPUF9BRERfRUFYSXYgICAgICAgICAgICAg
ICAgICAgID0gMHgwNSwKKyAgICAgICAgT1BfT1JfRXZHYiAgICAgICAgICAgICAgICAgICAgICA9
IDB4MDgsCiAgICAgICAgIE9QX09SX0V2R3YgICAgICAgICAgICAgICAgICAgICAgPSAweDA5LAog
ICAgICAgICBPUF9PUl9HdkV2ICAgICAgICAgICAgICAgICAgICAgID0gMHgwQiwKICAgICAgICAg
T1BfT1JfRUFYSXYgICAgICAgICAgICAgICAgICAgICA9IDB4MEQsCiAgICAgICAgIE9QXzJCWVRF
X0VTQ0FQRSAgICAgICAgICAgICAgICAgPSAweDBGLAorICAgICAgICBPUF9BTkRfRXZHYiAgICAg
ICAgICAgICAgICAgICAgID0gMHgyMCwKICAgICAgICAgT1BfQU5EX0V2R3YgICAgICAgICAgICAg
ICAgICAgICA9IDB4MjEsCiAgICAgICAgIE9QX0FORF9HdkV2ICAgICAgICAgICAgICAgICAgICAg
PSAweDIzLAorICAgICAgICBPUF9TVUJfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgyOCwK
ICAgICAgICAgT1BfU1VCX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MjksCiAgICAgICAg
IE9QX1NVQl9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDJCLAogICAgICAgICBPUF9TVUJf
RUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgyRCwKICAgICAgICAgUFJFX1BSRURJQ1RfQlJB
TkNIX05PVF9UQUtFTiAgICA9IDB4MkUsCisgICAgICAgIE9QX1hPUl9FdkdiICAgICAgICAgICAg
ICAgICAgICAgPSAweDMwLAogICAgICAgICBPUF9YT1JfRXZHdiAgICAgICAgICAgICAgICAgICAg
ID0gMHgzMSwKICAgICAgICAgT1BfWE9SX0d2RXYgICAgICAgICAgICAgICAgICAgICA9IDB4MzMs
CiAgICAgICAgIE9QX1hPUl9FQVhJdiAgICAgICAgICAgICAgICAgICAgPSAweDM1LApAQCAtMjIz
LDYgKzIyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QX0dST1VQMV9FdkliICAgICAgICAgICAg
ICAgICAgPSAweDgzLAogICAgICAgICBPUF9URVNUX0ViR2IgICAgICAgICAgICAgICAgICAgID0g
MHg4NCwKICAgICAgICAgT1BfVEVTVF9Fdkd2ICAgICAgICAgICAgICAgICAgICA9IDB4ODUsCisg
ICAgICAgIE9QX1hDSEdfRXZHYiAgICAgICAgICAgICAgICAgICAgPSAweDg2LAogICAgICAgICBP
UF9YQ0hHX0V2R3YgICAgICAgICAgICAgICAgICAgID0gMHg4NywKICAgICAgICAgT1BfTU9WX0Vi
R2IgICAgICAgICAgICAgICAgICAgICA9IDB4ODgsCiAgICAgICAgIE9QX01PVl9Fdkd2ICAgICAg
ICAgICAgICAgICAgICAgPSAweDg5LApAQCAtMjUyLDYgKzI1Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFBSRV9TU0VfRjIgICAgICAgICAgICAgICAgICAgICAgPSAweEYyLAogICAgICAgICBQUkVf
U1NFX0YzICAgICAgICAgICAgICAgICAgICAgID0gMHhGMywKICAgICAgICAgT1BfSExUICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDB4RjQsCisgICAgICAgIE9QX0dST1VQM19FYiAgICAgICAg
ICAgICAgICAgICAgPSAweEY2LAogICAgICAgICBPUF9HUk9VUDNfRWJJYiAgICAgICAgICAgICAg
ICAgID0gMHhGNiwKICAgICAgICAgT1BfR1JPVVAzX0V2ICAgICAgICAgICAgICAgICAgICA9IDB4
RjcsCiAgICAgICAgIE9QX0dST1VQM19Fdkl6ICAgICAgICAgICAgICAgICAgPSAweEY3LCAvLyBP
UF9HUk9VUDNfRXYgaGFzIGFuIGltbWVkaWF0ZSwgd2hlbiBpbnN0cnVjdGlvbiBpcyBhIHRlc3Qu
IApAQCAtMjkwLDYgKzI5Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIE9QX1NFVENDICAgICAgICAg
ICAgPSAweDkwLAogICAgICAgICBPUDJfM0JZVEVfRVNDQVBFX0FFID0gMHhBRSwKICAgICAgICAg
T1AyX0lNVUxfR3ZFdiAgICAgICA9IDB4QUYsCisgICAgICAgIE9QMl9DTVBYQ0hHYiAgICAgICAg
PSAweEIwLAorICAgICAgICBPUDJfQ01QWENIRyAgICAgICAgID0gMHhCMSwKICAgICAgICAgT1Ay
X01PVlpYX0d2RWIgICAgICA9IDB4QjYsCiAgICAgICAgIE9QMl9CU0YgICAgICAgICAgICAgPSAw
eEJDLAogICAgICAgICBPUDJfVFpDTlQgICAgICAgICAgID0gMHhCQywKQEAgLTI5OCw2ICszMDYs
OCBAQCBwcml2YXRlOgogICAgICAgICBPUDJfTU9WU1hfR3ZFYiAgICAgID0gMHhCRSwKICAgICAg
ICAgT1AyX01PVlpYX0d2RXcgICAgICA9IDB4QjcsCiAgICAgICAgIE9QMl9NT1ZTWF9HdkV3ICAg
ICAgPSAweEJGLAorICAgICAgICBPUDJfWEFERGIgICAgICAgICAgID0gMHhDMCwKKyAgICAgICAg
T1AyX1hBREQgICAgICAgICAgICA9IDB4QzEsCiAgICAgICAgIE9QMl9QRVhUUldfR2RVZEliICAg
PSAweEM1LAogICAgICAgICBPUDJfUFNMTFFfVWRxSWIgICAgID0gMHg3MywKICAgICAgICAgT1Ay
X1BTUkxRX1VkcUliICAgICA9IDB4NzMsCkBAIC00NDAsNiArNDUwLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNl
dCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgYWRkbF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKICNpZiAhQ1BVKFg4Nl82NCkKICAg
ICB2b2lkIGFkZGxfbXIoY29uc3Qgdm9pZCogYWRkciwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpA
QCAtNTYyLDExICs1NzcsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQg
YWRkcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgfQorCiAgICAgdm9pZCBhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9B
RERfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgYWRkcV9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9BRERfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAg
ICAgdm9pZCBhZGRxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTU5MSw2ICs2MTYsMTcgQEAgcHVi
bGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAgICAg
fQogICAgIH0KKworICAgIHZvaWQgYWRkcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlm
IChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
R1JPVVAxX0V2SXosIEdST1VQMV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAg
ICB9CiAjZWxzZQogICAgIHZvaWQgYWRkbF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQog
ICAgIHsKQEAgLTYxNCwxMSArNjUwLDQzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAg
dm9pZCBhbmRsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCiAgICAgdm9pZCBhbmRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
QU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZGxfcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0FORF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAg
ICB2b2lkIGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgYW5kbF9ybShzcmMsIG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBh
bmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZp
eChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5kbF9ybShzcmMsIG9mZnNldCwgYmFzZSwg
aW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAg
IHZvaWQgYW5kYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKwogICAgIHZvaWQgYW5kbF9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAg
ICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC02NDEsNiAr
NzA5LDUzIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgYW5kbF9pbShp
bnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQ
MV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kd19pbShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9
CisgICAgfQorCisgICAgdm9pZCBhbmR3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lk
IGFuZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQU5E
LCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7Cisg
ICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgYW5kcV9ycihSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNjU3LDYgKzc3Miw0OCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAgICAgICB9CiAgICAg
fQorCisgICAgdm9pZCBhbmRxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRf
R3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9tcihpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVn
aXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9B
TkRfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAg
dm9pZCBhbmRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfRXZHdiwgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfRXZHdiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRx
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6
LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kcV9pbShp
bnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JP
VVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAjZWxzZQogICAgIHZvaWQgYW5kbF9pbShp
bnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKQEAgLTcwMyw2ICs4NjAsMTEgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVA1X0V2
LCBHUk9VUDFfT1BfQURELCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgaW5jcV9t
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVA1X0V2LCBH
Uk9VUDFfT1BfQURELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlm
IC8vIENQVShYODZfNjQpCiAKICAgICB2b2lkIG5lZ2xfcihSZWdpc3RlcklEIGRzdCkKQEAgLTcx
NSw2ICs4NzcsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBkc3QpOwogICAgIH0KKworICAgIHZv
aWQgbmVncV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05FRywgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBuZWdsX20oaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQpAQCAtNzIyLDYgKzg5NCwzMyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9ORUcs
IGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBuZWdsX20oaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBuZWd3X20oaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4
KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWdsX20ob2Zmc2V0LCBiYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIG5lZ3dfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQ
UkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVnbF9tKG9mZnNldCwgYmFzZSwgaW5kZXgsIHNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2JfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBH
Uk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgbmVnYl9tKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAz
X09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQg
bm90bF9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgZHN0KTsKQEAgLTczMiw2ICs5MzEsMzMg
QEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBH
Uk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgbm90bF9tKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAz
X09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQg
bm90d19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbm90bF9tKG9mZnNldCwg
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3R3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5vdGxfbShvZmZzZXQsIGJh
c2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBub3RiX20oaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2
b2lkIG5vdGJfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgbm90cV9yKFJlZ2lzdGVySUQgZHN0KQogICAg
IHsKQEAgLTc0Miw2ICs5NjgsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQp
OwogICAgIH0KKworICAgIHZvaWQgbm90cV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG9ybF9ycihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC03NTQsMTEgKzk4NSw0MyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7
CiAgICAgfQogCisgICAgdm9pZCBvcmxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgb3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZv
aWQgb3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5E
X1NJWkUpOworICAgICAgICBvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAg
IHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgb3JsX3JtKHNyYywgb2Zmc2V0LCBi
YXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CisKICAgICB2b2lkIG9ybF9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAg
ICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC03ODQsMTIg
KzEwNDcsMTAxIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgb3JsX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkp
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JP
VVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb3J3X2ltKGludCBpbW0sIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnBy
ZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMy
KGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJ
YiwgR1JPVVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdm9pZCBvcndfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRF
TkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFf
T1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIG9yYl9p
bShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9PUiwgYmFzZSwg
b2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwor
ICAgIHZvaWQgb3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwog
I2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBvcnFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZH
diwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgb3JxX21yKGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAg
dm9pZCBvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X09SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAg
ICB2b2lkIG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFz
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dS
T1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBv
cnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIo
aW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2
SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9P
UiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgb3JxX2lyKGlu
dCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVO
RF84XzMyKGltbSkpIHsKQEAgLTgzMSwxMSArMTE4Myw0MyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgc3VibF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9p
ZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vid19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YmxfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBk
c3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAt
ODYxLDYgKzEyNDUsNTMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBz
dWJsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMy
KGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJ
YiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VC
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdWJ3X2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VY
VEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFz
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1YndfaW0oaW50IGltbSwgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQ
MV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9TVUIsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBzdWJxX3JyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC04NzIsMTEgKzEzMDMsMjEgQEAg
cHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0
LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9tcihpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwg
ZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJx
X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJxX2lyKGludCBp
bW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKQEAgLTkwMSw2ICsxMzQyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lk
IHN1YnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFf
T1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2b2lk
IHN1YmxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC05MjQsMTEgKzEz
NzYsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0d2
RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcmxfbXIoaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9H
dkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lk
IHhvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAg
ICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHdiwgc3JjLCBiYXNl
LCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0V2R3YsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgeG9ybF9pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTQwLDYgKzE0MDIsNzUgQEAgcHVibGljOgog
ICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB4b3JsX2ltKGludCBpbW0sIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAg
ICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9
CisgICAgfQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09Q
RVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UpOworICAgIH0K
KworICAgIHZvaWQgeG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3JjLCBv
ZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3J3X2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VY
VEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFz
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcndfaW0oaW50IGltbSwgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9FdkdiLCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3Ji
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1hPUiwgYmFz
ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0K
KworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
fQorCiAgICAgdm9pZCB4b3JsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTk3NCwxMSArMTUwNSw0
NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCB4b3JxX2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9V
UDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHhvcnFfaW0oaW50
IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQ
MV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorICAgIAogICAgIHZvaWQgeG9ycV9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CiAKKyAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2LCBkZXN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYsIGRlc3QsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgbHpjbnRfcnIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTU4NiwxMSArMjE1MywzOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMsIGRzdCk7
CiAgICAgfQogCisgICAgdm9pZCB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNoZ2Jf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJ
WkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMsIGJh
c2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9
CiAKKyAgICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCB4Y2hncV9ycihS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMTYwNiw2ICsyMjAwLDEx
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hD
SEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgeGNoZ3Ffcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAj
ZW5kaWYKIAogICAgIHZvaWQgbW92bF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3Qp
CkBAIC0xNzMxLDYgKzIzMzAsMjAgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A4KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIG1vdndfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxMV9Fdkl6LCBHUk9VUDEx
X01PViwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1t
KTsKKyAgICB9CisKKyAgICB2b2lkIG1vdndfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SXosIEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAg
fQorCiAgICAgdm9pZCBtb3ZsX0VBWG0oY29uc3Qgdm9pZCogYWRkcikKICAgICB7CiAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfT3ZFQVgpOwpAQCAtMTgwMCw2ICsyNDEzLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICB9
CiAKKyAgICB2b2lkIG1vdnFfaTMybShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsK
KyAgICB9CisKICAgICB2b2lkIG1vdnFfaTY0cihpbnQ2NF90IGltbSwgUmVnaXN0ZXJJRCBkc3Qp
CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9NT1ZfRUFYSXYsIGRz
dCk7CkBAIC0yNzc1LDYgKzMzOTQsOTAgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX0xPQ0spOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX0NNUFhDSEdiLCBzcmMsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnd19y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGNtcHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3Ffcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnR3b0J5dGVPcDY0KE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgY21weGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRiX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3A4KE9QMl9YQUREYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHhhZGRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX1hBRERiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4
YWRkd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJf
WEFERCwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgeGFkZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFk
ZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9YQURELCBzcmMsIGJhc2UsIG9m
ZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1hBREQsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKICAgICB2b2lkIG1mZW5jZSgp
CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci50aHJlZUJ5dGVPcChPUDJfM0JZVEVfRVNDQVBF
X0FFLCBPUDNfTUZFTkNFKTsKQEAgLTM3NTEsNiArNDQ1NCwyNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0oZ3JvdXBPcCwgcm0pOwogICAgICAgICB9CiAKKyAg
ICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJl
Z2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xl
SW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdy
aXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJlZywgYmFzZSksIHJlZywgMCwgYmFz
ZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUp
OworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAg
ICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIH0KKwor
ICAgICAgICB2b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludCBvZmZzZXQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdy
aXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1
aXJlc1JleChyZWcpIHx8IHJlZ1JlcXVpcmVzUmV4KGluZGV4LCBiYXNlKSwgcmVnLCBpbmRleCwg
YmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NB
UEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAg
ICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIEltbWVkaWF0ZXM6CiAgICAgICAgIC8vCiAgICAg
ICAgIC8vIEFuIGltbWVkYWl0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlhdGUg
YWZ0ZXIgYW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIz
X0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK0F0b21pY1ZhbHVlOjp+
QXRvbWljVmFsdWUoKQoreworfQorCit2b2lkIEF0b21pY1ZhbHVlOjpkdW1wTWV0YShDb21tYVBy
aW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChj
b21tYSwgIndpZHRoID0gIiwgbV93aWR0aCk7CisgICAgCisgICAgTWVtb3J5VmFsdWU6OmR1bXBN
ZXRhKGNvbW1hLCBvdXQpOworfQorCitWYWx1ZSogQXRvbWljVmFsdWU6OmNsb25lSW1wbCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG5ldyBBdG9taWNWYWx1ZSgqdGhpcyk7Cit9CisKK0F0b21pY1Zh
bHVlOjpBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBW
YWx1ZSogb3BlcmFuZCwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2Ug
cmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9w
Y29kZSwga2luZCwgb3BlcmFuZC0+dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwgcmFuZ2UsIGZlbmNl
UmFuZ2UsIG9wZXJhbmQsIHBvaW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIEFT
U0VSVChiZXN0VHlwZShHUCwgYWNjZXNzV2lkdGgoKSkgPT0gYWNjZXNzVHlwZSgpKTsKKyAgICAK
KyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6Cisg
ICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2Ug
QXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNY
Y2hnOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtpbmQs
IE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUq
IG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5n
ZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2Rl
LCBraW5kLCBraW5kLm9wY29kZSgpID09IEF0b21pY1dlYWtDQVMgPyBJbnQzMiA6IGV4cGVjdGVk
VmFsdWUtPnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlLCBleHBlY3Rl
ZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7CisgICAg
QVNTRVJUKGJlc3RUeXBlKEdQLCBhY2Nlc3NXaWR0aCgpKSA9PSBhY2Nlc3NUeXBlKCkpOworCisg
ICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAg
IGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUu
aCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMg
eworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBBdG9taWNWYWx1ZSA6IHB1YmxpYyBNZW1vcnlW
YWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCisgICAg
eworICAgICAgICByZXR1cm4gaXNBdG9taWMoa2luZC5vcGNvZGUoKSk7CisgICAgfQorICAgIAor
ICAgIH5BdG9taWNWYWx1ZSgpOworICAgIAorICAgIFR5cGUgYWNjZXNzVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIGNoaWxkKDApLT50eXBlKCk7IH0KKyAgICAKKyAgICBXaWR0aCBhY2Nlc3NXaWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1
bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
CisgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtpbmQs
IE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2Ug
ZmVuY2VSYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCkpOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtp
bmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUs
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhl
YXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSk7
CisgICAgCisgICAgV2lkdGggbV93aWR0aDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
MworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiArNDAsNyBA
QCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKIGNsYXNzIEluc2VydGlvblNldDsKIGNsYXNzIFBy
b2NlZHVyZTsKIGNsYXNzIFZhbHVlOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEdlbmVyaWNC
bG9ja0luc2VydGlvblNldDsKIAogY2xhc3MgQmFzaWNCbG9jayB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQmFzaWNCbG9jayk7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgZnJpZW5kIGNsYXNzIEluc2VydGlv
blNldDsKICAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
PiBmcmllbmQgY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIAogICAgIC8vIElu
c3RhbnRpYXRlIHZpYSBQcm9jZWR1cmUuCiAgICAgQmFzaWNCbG9jayh1bnNpZ25lZCBpbmRleCwg
ZG91YmxlIGZyZXF1ZW5jeSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9j
a0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYs
MzUgKzM2LDEzIEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogQmxvY2tJbnNl
cnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSAmcHJvYykKLSAgICA6IG1fcHJv
Yyhwcm9jKQorICAgIDogR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MubV9ibG9ja3MpCisg
ICAgLCBtX3Byb2MocHJvYykKIHsKIH0KIAogQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2Vy
dGlvblNldCgpIHsgfQogCi12b2lkIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxvY2tJbnNl
cnRpb24mJiBpbnNlcnRpb24pCi17Ci0gICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGlu
c2VydGlvbikpOwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHVu
c2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxC
YXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgZnJlcXVlbmN5KSk7Ci0g
ICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxvY2suZ2V0KCk7Ci0gICAgaW5zZXJ0KEJsb2NrSW5z
ZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRCZWZvcmUoQmFzaWNCbG9jayog
YmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5p
bmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVx
dWVuY3koKSk7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRBZnRl
cihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5z
ZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5j
eSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7Ci19Ci0KIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9u
U2V0OjpzcGxpdEZvcndhcmQoCiAgICAgQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkJiB2YWx1
ZUluZGV4LCBJbnNlcnRpb25TZXQqIGluc2VydGlvblNldCwgZG91YmxlIGZyZXF1ZW5jeSkKIHsK
QEAgLTEwMiwzMiArODAsNiBAQCBCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRG
b3J3CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBCbG9ja0luc2VydGlvblNldDo6ZXhl
Y3V0ZSgpCi17Ci0gICAgaWYgKG1faW5zZXJ0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICAvLyBXZSBhbGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRv
IHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5lZWQgdG8gc29ydCB0aGVtIGJlZm9yZQotICAgIC8v
IHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3Rh
YmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKLSAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnVi
YmxlIHNvcnQuCi0gICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRp
b25zLmVuZCgpKTsKLQotICAgIGV4ZWN1dGVJbnNlcnRpb25zKG1fcHJvYy5tX2Jsb2NrcywgbV9p
bnNlcnRpb25zKTsKLSAgICAKLSAgICAvLyBQcnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBp
c24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MKLSAgICAvLyBoZWFsdGh5IHRvIGtlZXAg
dGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgotICAgIG1fcHJvYy5tX2Jsb2Nrcy5yZW1vdmVB
bGxNYXRjaGluZygKLSAgICAgICAgWyZdIChzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJs
b2NrUHRyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiAhYmxvY2tQdHI7Ci0gICAgICAg
IH0pOwotICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBu
ZXcgaW5kaWNlcy4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9jLm1fYmxvY2tz
LnNpemUoKTsgKytpKQotICAgICAgICBtX3Byb2MubV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOwot
ICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAog
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNHZW5l
cmljQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1
ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwyNiAr
MzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIEluc2VydGlv
blNldDsKIAotdHlwZWRlZiBXVEY6Okluc2VydGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9j
az4+IEJsb2NrSW5zZXJ0aW9uOwordHlwZWRlZiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFz
aWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5zZXJ0aW9uOwogCi1jbGFzcyBCbG9ja0lu
c2VydGlvblNldCB7CitjbGFzcyBCbG9ja0luc2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxv
Y2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4gewogcHVibGljOgogICAgIEJsb2NrSW5zZXJ0aW9u
U2V0KFByb2NlZHVyZSYpOwogICAgIH5CbG9ja0luc2VydGlvblNldCgpOwogICAgIAotICAgIHZv
aWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYpOwotCi0gICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2Nr
IGF0IGEgZ2l2ZW4gaW5kZXguCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4
LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2Nr
IGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVzdWFsbHkgeW91IHdpbGwgbm90IHBhc3MgdGhlIGZy
ZXF1ZW5jeQotICAgIC8vIGFyZ3VtZW50LiBQYXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1c3Qg
dXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdiZWZvcmUnIGJsb2NrLiBUaGF0J3MKLSAgICAvLyB1
c3VhbGx5IHdoYXQgeW91IHdhbnQuCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2lj
QmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0
cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxvY2suCi0gICAgQmFzaWNCbG9jayogaW5z
ZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQog
ICAgIC8vIEEgaGVscGVyIHRvIHNwbGl0IGEgYmxvY2sgd2hlbiBmb3J3YXJkIGl0ZXJhdGluZyBv
dmVyIGl0LiBJdCBjcmVhdGVzIGEgbmV3IGJsb2NrIHRvIGhvbGQKICAgICAvLyBldmVyeXRoaW5n
IGJlZm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYXQgdmFsdWVJbmRleC4gVGhlIGN1cnJlbnQgYmxvY2sg
aXMgbGVmdCB3aXRoCiAgICAgLy8gZXZlcnl0aGluZyBhdCBhbmQgYWZ0ZXIgdmFsdWVJbmRleC4g
SWYgdGhlIG9wdGlvbmFsIEluc2VydGlvblNldCBpcyBwcm92aWRlZCwgaXQgd2lsbCBnZXQKQEAg
LTgwLDEyICs2OCw5IEBAIHB1YmxpYzoKICAgICBCYXNpY0Jsb2NrKiBzcGxpdEZvcndhcmQoCiAg
ICAgICAgIEJhc2ljQmxvY2sqLCB1bnNpZ25lZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0KiA9
IG51bGxwdHIsCiAgICAgICAgIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLSAgICAKLSAgICBi
b29sIGV4ZWN1dGUoKTsKIAogcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKLSAgICBW
ZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKIH07CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJ
KHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODIsNyArODIsOCBAQCBib29sIEVmZmVjdHM6OmludGVy
ZmVyZXMoY29uc3QgRWZmZWN0cyYgCiAgICAgICAgIHx8IGludGVyZmVyZXNXaXRoV3JpdGVzUGlu
bmVkKG90aGVyLCAqdGhpcykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLndyaXRl
cykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLnJlYWRzKQotICAgICAgICB8fCBy
ZWFkcy5vdmVybGFwcyhvdGhlci53cml0ZXMpOworICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhv
dGhlci53cml0ZXMpCisgICAgICAgIHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9CiAKIGJv
b2wgRWZmZWN0czo6b3BlcmF0b3I9PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTk1
LDcgKzk2LDggQEAgYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIAogICAg
ICAgICAmJiB3cml0ZXNQaW5uZWQgPT0gb3RoZXIud3JpdGVzUGlubmVkCiAgICAgICAgICYmIHJl
YWRzUGlubmVkID09IG90aGVyLnJlYWRzUGlubmVkCiAgICAgICAgICYmIHdyaXRlcyA9PSBvdGhl
ci53cml0ZXMKLSAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHM7CisgICAgICAgICYmIHJl
YWRzID09IG90aGVyLnJlYWRzCisgICAgICAgICYmIGZlbmNlID09IG90aGVyLmZlbmNlOwogfQog
CiBib29sIEVmZmVjdHM6Om9wZXJhdG9yIT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0CkBA
IC0xMjAsNiArMTIyLDggQEAgdm9pZCBFZmZlY3RzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bgogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJXcml0ZXNQaW5uZWQiKTsKICAgICBpZiAocmVh
ZHNQaW5uZWQpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIlJlYWRzUGlubmVkIik7CisgICAg
aWYgKGZlbmNlKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJGZW5jZSIpOwogICAgIGlmICh3
cml0ZXMpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlczoiLCB3cml0ZXMpOwogICAg
IGlmIChyZWFkcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJKHJldmlz
aW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTcxLDYgKzcxLDEwIEBAIHN0cnVjdCBFZmZlY3RzIHsKICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTczCiAgICAgYm9vbCBy
ZWFkc1Bpbm5lZCB7IGZhbHNlIH07CiAgICAgYm9vbCB3cml0ZXNQaW5uZWQgeyBmYWxzZSB9Owor
ICAgIAorICAgIC8vIE1lbW9yeSBmZW5jZXMgY2Fubm90IGJlIHJlb3JkZXJlZCBhcm91bmQgZWFj
aCBvdGhlciByZWdhcmRsZXNzIG9mIHRoZWlyIGVmZmVjdHMuIFRoaXMgaXMgZmxhZ2dlZAorICAg
IC8vIGlmIHRoZSBvcGVyYXRpb24gaXMgYSBtZW1vcnkgZmVuY2UuCisgICAgYm9vbCBmZW5jZSB7
IGZhbHNlIH07CiAKICAgICBIZWFwUmFuZ2Ugd3JpdGVzOwogICAgIEhlYXBSYW5nZSByZWFkczsK
QEAgLTg5LDYgKzkzLDcgQEAgc3RydWN0IEVmZmVjdHMgewogICAgICAgICByZXN1bHQucmVhZHMg
PSBIZWFwUmFuZ2U6OnRvcCgpOwogICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVlOwog
ICAgICAgICByZXN1bHQud3JpdGVzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNl
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEwMyw3ICsxMDgs
NyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAKICAgICBib29sIG11c3RFeGVjdXRlKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xv
Y2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZDsKKyAgICAgICAgcmV0dXJuIHRlcm1p
bmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8fCB3cml0ZXMgfHwgd3Jp
dGVzUGlubmVkIHx8IGZlbmNlOwogICAgIH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiByZW9y
ZGVyaW5nIGluc3RydWN0aW9ucyB3aXRoIHRoZXNlIHJlc3BlY3RpdmUgZWZmZWN0cyB3b3VsZCBj
aGFuZ2UgcHJvZ3JhbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRl
Q29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkocmV2aXNpb24gMjEz
MjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhw
cmVzc2lvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0Miw2ICsxNDIsNyBAQCBzdHJ1Y3QgSW1wdXJl
QmxvY2tEYXRhIHsKIAogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gcmVhZHM7IC8vIFRoaXMgb25s
eSBnZXRzIHVzZWQgZm9yIGZvcndhcmQgc3RvcmUgZWxpbWluYXRpb24uCiAgICAgUmFuZ2VTZXQ8
SGVhcFJhbmdlPiB3cml0ZXM7IC8vIFRoaXMgZ2V0cyB1c2VkIGZvciBib3RoIGxvYWQgYW5kIHN0
b3JlIGVsaW1pbmF0aW9uLgorICAgIGJvb2wgZmVuY2U7CiAKICAgICBNZW1vcnlWYWx1ZU1hcCBz
dG9yZXNBdEhlYWQ7CiAgICAgTWVtb3J5VmFsdWVNYXAgbWVtb3J5VmFsdWVzQXRUYWlsOwpAQCAt
MTc0LDEyICsxNzUsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGlmIChtZW1vcnkgJiYgbWVtb3J5LT5pc1N0b3JlKCkKICAgICAgICAgICAgICAgICAgICAg
JiYgIWRhdGEucmVhZHMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQotICAgICAgICAgICAgICAg
ICAgICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkKKyAg
ICAgICAgICAgICAgICAgICAgJiYgKCFkYXRhLmZlbmNlIHx8ICFtZW1vcnktPmhhc0ZlbmNlKCkp
KQogICAgICAgICAgICAgICAgICAgICBkYXRhLnN0b3Jlc0F0SGVhZC5hZGQobWVtb3J5KTsKICAg
ICAgICAgICAgICAgICBkYXRhLnJlYWRzLmFkZChlZmZlY3RzLnJlYWRzKTsKIAogICAgICAgICAg
ICAgICAgIGlmIChIZWFwUmFuZ2Ugd3JpdGVzID0gZWZmZWN0cy53cml0ZXMpCiAgICAgICAgICAg
ICAgICAgICAgIGNsb2JiZXIoZGF0YSwgd3JpdGVzKTsKKyAgICAgICAgICAgICAgICBkYXRhLmZl
bmNlIHw9IGVmZmVjdHMuZmVuY2U7CiAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5KQogICAg
ICAgICAgICAgICAgICAgICBkYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5hZGQobWVtb3J5KTsKQEAg
LTQ0NSw4ICs0NDgsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGRhdGFMb2coIkJhZCBtZW1vcnkgdmFsdWU6ICIsIGRlZXBEdW1wKG1fcHJv
YywgbV92YWx1ZSksICJcbiIpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtNDc4LDYgKzQ3
OSw5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgogICAgIGJvb2wg
ZmluZFN0b3JlQWZ0ZXJDbG9iYmVyKFZhbHVlKiBwdHIsIEhlYXBSYW5nZSByYW5nZSwgY29uc3Qg
RmlsdGVyJiBmaWx0ZXIpCiAgICAgeworICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFs
dWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAog
ICAgICAgICAvLyBXZSBjYW4gZWxpbWluYXRlIGEgc3RvcmUgaWYgZXZlcnkgZm9yd2FyZCBwYXRo
IGhpdHMgYSBzdG9yZSB0byB0aGUgc2FtZSBsb2NhdGlvbiBiZWZvcmUKICAgICAgICAgLy8gaGl0
dGluZyBhbnkgb3BlcmF0aW9uIHRoYXQgb2JzZXJ2ZXMgdGhlIHN0b3JlLiBUaGlzIHNlYXJjaCBz
ZWVtcyBsaWtlIGl0IHNob3VsZCBiZQogICAgICAgICAvLyBleHBlbnNpdmUsIGJ1dCBpbiB0aGUg
b3ZlcndoZWxtaW5nIG1ham9yaXR5IG9mIGNhc2VzIGl0IHdpbGwgYWxtb3N0IGltbWVkaWF0ZWx5
IGhpdCBhbiAKQEAgLTYxNCw2ICs2MTgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCptX3ZhbHVlLCAiOiBsb29raW5nIGJhY2t3YXJkIGZv
ciAiLCAqcHRyLCAiLi4uXG4iKTsKICAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxN
ZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGZlbmNlcy5cbiIp
OworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAg
aWYgKE1lbW9yeVZhbHVlKiBtYXRjaCA9IG1fZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuZmluZChw
dHIsIGZpbHRlcikpIHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBGb3VuZCAiLCAqbWF0Y2gsICIgbG9jYWxseS5cbiIpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkIzTG93ZXJUb0Fpci5oIgogI2luY2x1ZGUgIkIz
TW92ZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCisjaW5jbHVkZSAiQjNQ
dXJlQ1NFLmgiCiAjaW5jbHVkZSAiQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmgiCiAjaW5jbHVkZSAi
QjNSZWR1Y2VTdHJlbmd0aC5oIgogI2luY2x1ZGUgIkIzVGltaW5nU2NvcGUuaCIKQEAgLTkyLDYg
KzkzLDcgQEAgdm9pZCBnZW5lcmF0ZVRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlLAogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTA3CiAgICAg
fQogCisgICAgLy8gVGhpcyBwdXRzIHRoZSBJUiBpbiBxdWlya3MgbW9kZS4KICAgICBsb3dlck1h
Y3Jvcyhwcm9jZWR1cmUpOwogCiAgICAgaWYgKG9wdExldmVsID49IDEpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNl
dC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNC
bG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIlB1cmVOYU4uaCIKKyNpbmNsdWRlIDx3
dGYvQnViYmxlU29ydC5oPgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBJ
bnNlcnRpb25TZXQ7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJhc2ljQmxvY2s+CitjbGFzcyBHZW5l
cmljQmxvY2tJbnNlcnRpb25TZXQgeworcHVibGljOgorICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRp
b248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBCbG9ja0luc2VydGlvbjsKKyAgICAKKyAg
ICBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Js
b2NrPj4mIGJsb2NrcykKKyAgICAgICAgOiBtX2Jsb2NrcyhibG9ja3MpCisgICAgeworICAgIH0K
KyAgICAKKyAgICB2b2lkIGluc2VydChCbG9ja0luc2VydGlvbiYmIGluc2VydGlvbikKKyAgICB7
CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRpb24pKTsKKyAgICB9
CisKKyAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQgYSBnaXZlbiBpbmRleC4KKyAgICBCYXNp
Y0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQor
ICAgIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+IGJsb2NrKG5ldyBCYXNp
Y0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKKyAgICAgICAgQmFzaWNCbG9jayogcmVzdWx0
ID0gYmxvY2suZ2V0KCk7CisgICAgICAgIGluc2VydChCbG9ja0luc2VydGlvbihpbmRleCwgV1RG
TW92ZShibG9jaykpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyBJ
bnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVzdWFsbHkgeW91IHdp
bGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQorICAgIC8vIGFyZ3VtZW50LiBQYXNzaW5nIFBOYU4g
Y2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdiZWZvcmUnIGJsb2Nr
LiBUaGF0J3MKKyAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCisgICAgQmFzaWNCbG9jayog
aW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
CisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgoKSwgZnJlcXVlbmN5
ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5KCkpOworICAgIH0K
KworICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYWZ0ZXIgdGhlIGdpdmVuIGJsb2NrLgorICAg
IEJhc2ljQmxvY2sqIGluc2VydEFmdGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVl
bmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYWZ0ZXItPmluZGV4KCkg
KyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYWZ0ZXItPmZyZXF1ZW5j
eSgpKTsKKyAgICB9CisKKyAgICBib29sIGV4ZWN1dGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1f
aW5zZXJ0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IAorICAgICAgICAvLyBXZSBhbGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFu
eSBvcmRlci4gU28sIHdlIG5lZWQgdG8gc29ydCB0aGVtIGJlZm9yZQorICAgICAgICAvLyBydW5u
aW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMuIFdlIHN0cm9uZ2x5IHByZWZlciBhIHN0YWJsZSBz
b3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCisgICAgICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBidWJi
bGUgc29ydC4KKyAgICAgICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNl
cnRpb25zLmVuZCgpKTsKKyAgICAgICAgCisgICAgICAgIGV4ZWN1dGVJbnNlcnRpb25zKG1fYmxv
Y2tzLCBtX2luc2VydGlvbnMpOworICAgICAgICAKKyAgICAgICAgLy8gUHJ1bmUgb3V0IGVtcHR5
IGVudHJpZXMuIFRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzCisgICAgICAg
IC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxvY2sgbGlzdCBmcm9tIGdyb3dpbmcuCisgICAgICAg
IG1fYmxvY2tzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICAgICAgWyZdIChzdGQ6OnVuaXF1
ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gIWJsb2NrUHRyOworICAgICAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGluZGljZXMuCisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrcy5zaXplKCk7ICsraSkKKyAgICAgICAg
ICAgIG1fYmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+PiYgbV9ibG9ja3M7CisgICAgVmVjdG9yPEJsb2NrSW5zZXJ0aW9uLCA4PiBtX2luc2Vy
dGlvbnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAkocmV2
aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtODgsNiArODgsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAorICAgIEhlYXBSYW5nZSBvcGVyYXRvcnwoY29u
c3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBIZWFwUmFu
Z2UoCisgICAgICAgICAgICBzdGQ6Om1pbihtX2JlZ2luLCBvdGhlci5tX2JlZ2luKSwKKyAgICAg
ICAgICAgIHN0ZDo6bWF4KG1fZW5kLCBvdGhlci5tX2VuZCkpOworICAgIH0KKyAgICAKICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsg
fQogCiAgICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAJKHJldmlzaW9u
IDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCwxMSBAQCBWYWx1ZSogSW5zZXJ0aW9uU2V0Ojpp
bnNlcnRCb3R0b20oc2l6ZV90CiAgICAgcmV0dXJuIGluc2VydEJvdHRvbShpbmRleCwgbGlrZVZh
bHVlLT5vcmlnaW4oKSwgbGlrZVZhbHVlLT50eXBlKCkpOwogfQogCitWYWx1ZSogSW5zZXJ0aW9u
U2V0OjppbnNlcnRDbG9uZShzaXplX3QgaW5kZXgsIFZhbHVlKiB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gaW5zZXJ0VmFsdWUoaW5kZXgsIG1fcHJvY2VkdXJlLmNsb25lKHZhbHVlKSk7Cit9CisKIHZv
aWQgSW5zZXJ0aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIGJ1YmJs
ZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMjEzMjYx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKIAogICAgIFZhbHVlKiBpbnNlcnRCb3R0
b20oc2l6ZV90IGluZGV4LCBPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBpbnNlcnRCb3R0b20o
c2l6ZV90IGluZGV4LCBWYWx1ZSopOworICAgIAorICAgIFZhbHVlKiBpbnNlcnRDbG9uZShzaXpl
X3QgaW5kZXgsIFZhbHVlKik7CiAKICAgICB2b2lkIGV4ZWN1dGUoQmFzaWNCbG9jayopOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5
T2Zmc2V0cy5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4
LDggQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNpbmNsdWRlICJBaXJBcmcuaCIKICNpbmNs
dWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKLSNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgi
CisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1BoYXNlU2Nv
cGUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1ZhbHVl
SW5saW5lcy5oIgpAQCAtNDksMjAgKzQ4LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcnVuKCkK
ICAgICB7Ci0gICAgICAgIGlmICghaXNBUk02NCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCisg
ICAgICAgIC8vIEZJWE1FOiBQZXJoYXBzIHRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIGxvd2VyTWFj
cm9zLCBhbmQgcXVpcmtzIG1vZGUgY2FuIGltcG9zZSB0aGUgcmVxdWlyZW1lbnQKKyAgICAgICAg
Ly8gdGhhdCB0aGUgb2Zmc2V0IGlzIGxlZ2FsLiBCdXQgZm9yIG5vdyB0aGlzIGlzIHNvcnQgb2Yg
T0sgYmVjYXVzZSB3ZSBydW4gcHVyZUNTRSAKKyAgICAgICAgCiAgICAgICAgIGZvciAoQmFzaWNC
bG9jayogYmxvY2sgOiBtX3Byb2MpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgICAgICAgICBN
ZW1vcnlWYWx1ZSogbWVtb3J5VmFsdWUgPSBibG9jay0+YXQoaW5kZXgpLT5hczxNZW1vcnlWYWx1
ZT4oKTsKICAgICAgICAgICAgICAgICBpZiAoIW1lbW9yeVZhbHVlKQogICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIGludDMyX3Qgb2Zmc2V0ID0gbWVtb3J5
VmFsdWUtPm9mZnNldCgpOwotICAgICAgICAgICAgICAgIFdpZHRoIHdpZHRoID0gbWVtb3J5VmFs
dWUtPmFjY2Vzc1dpZHRoKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFBaXI6OkFyZzo6aXNWYWxp
ZEFkZHJGb3JtKG9mZnNldCwgd2lkdGgpKSB7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgaWYgKCFtZW1vcnlWYWx1ZS0+aXNMZWdhbE9mZnNldChtZW1vcnlWYWx1ZS0+b2Zmc2V0
KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBiYXNlID0gbWVtb3J5VmFsdWUtPmxh
c3RDaGlsZCgpOwotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogb2Zmc2V0VmFsdWUgPSBtX2lu
c2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChpbmRleCwgbWVtb3J5VmFsdWUtPm9yaWdpbigp
LCBwb2ludGVyVHlwZSgpLCBvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogb2Zm
c2V0VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChpbmRleCwgbWVtb3J5
VmFsdWUtPm9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBtZW1vcnlWYWx1ZS0+b2Zmc2V0KCkpOwog
ICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcmVzb2x2ZWRBZGRyZXNzID0gbV9wcm9jLmFkZDxW
YWx1ZT4oQWRkLCBtZW1vcnlWYWx1ZS0+b3JpZ2luKCksIGJhc2UsIG9mZnNldFZhbHVlKTsKICAg
ICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0VmFsdWUoaW5kZXgsIHJlc29s
dmVkQWRkcmVzcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFj
cm9zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1h
Y3Jvcy5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDExICsyOSwxMyBAQAogI2lm
IEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2Nr
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJC
M0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0Nhc2VDb2xsZWN0aW9uSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgorI2luY2x1ZGUgIkIzRmVuY2VWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUu
aCIKICNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgpAQCAtNDIsNiArNDQsNyBAQAogI2lu
Y2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hW
YWx1ZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCisjaW5jbHVkZSAiQjNVc2VDb3Vu
dHMuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVy
cy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTU4LDExICs2MSwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIDogbV9wcm9jKHByb2MpCiAgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChw
cm9jKQogICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KHByb2MpCisgICAgICAgICwgbV91c2VDb3Vu
dHMocHJvYykKICAgICB7CiAgICAgfQogCiAgICAgYm9vbCBydW4oKQogICAgIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fcHJvYy5oYXNRdWlya3MoKSk7CisgICAgICAgIAogICAgICAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0g
YmxvY2s7CiAgICAgICAgICAgICBwcm9jZXNzQ3VycmVudEJsb2NrKCk7CkBAIC03Miw2ICs3OCwx
MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3Byb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAg
ICAgICAgICAgIG1fcHJvYy5pbnZhbGlkYXRlQ0ZHKCk7CiAgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgd2UndmUgCisgICAgICAgIG1fcHJvYy5zZXRI
YXNRdWlya3ModHJ1ZSk7CisgICAgICAgIAogICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwogICAg
IH0KICAgICAKQEAgLTE4NSw3ICsxOTUsMTE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
bV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAg
ICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9h
ZC1sb2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQg
dG8gdGVsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2Nr
IGxvYWQgbW90aW9uLgorICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7CisgICAg
ICAgICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAgICAg
ICAgICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3Vs
ZCB1bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgY2Fz
ZSBBdG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
QXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAg
ICAgICAgICAgIFdpZHRoIHdpZHRoID0gYXRvbWljLT5hY2Nlc3NXaWR0aCgpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgVmFsdWUqIGV4cGVjdGVkVmFsdWUgPSBhdG9taWMtPmNoaWxkKDApOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIC8vIE9uIEFSTSwgdGhlIGxvYWQgcGFydCBvZiB0aGUgQ0FT
IGRvZXMgYSBsb2FkIHdpdGggemVybyBleHRlbnNpb24uIFRoZXJlZm9yZSwgd2UgbmVlZAorICAg
ICAgICAgICAgICAgIC8vIHRvIHplcm8tZXh0ZW5kIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAg
ICBWYWx1ZSogbWFza2VkRXhwZWN0ZWRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1
ZT4oCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIGV4cGVj
dGVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENv
bnN0YW50KG1faW5kZXgsIGV4cGVjdGVkVmFsdWUsIG1hc2sod2lkdGgpKSk7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgYXRvbWljLT5jaGlsZCgwKSA9IG1hc2tlZEV4cGVjdGVk
VmFsdWU7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNh
c2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAg
ICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3Vi
OgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9t
aWNYY2hnOiB7CisgICAgICAgICAgICAgICAgLy8gT24gWDg2LCB0aGVzZSBtYXkgYWN0dWFsbHkg
cmV0dXJuIGdhcmJhZ2UgaW4gdGhlIGhpZ2ggYml0cy4gT24gQVJNNjQsIHRoZXNlIHNvcnRhCisg
ICAgICAgICAgICAgICAgLy8gemVyby1leHRlbmQgdGhlaXIgaGlnaCBiaXRzLCBleGNlcHQgdGhh
dCB0aGUgaGlnaCBiaXRzIG1pZ2h0IGdldCBwb2xsdXRlZCBieSBoaWdoCisgICAgICAgICAgICAg
ICAgLy8gYml0cyBpbiB0aGUgb3BlcmFuZC4gLiBTbywgZWl0aGVyIHdheSwgd2UgbmVlZCB0byB0
aHJvdyBhIHNpZ24tZXh0ZW5kIG9uIHRoZXNlCisgICAgICAgICAgICAgICAgLy8gdGhpbmdzLgor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5vcGNvZGUoKSA9PSBBdG9taWNYY2hnU3ViICYmIG1f
dXNlQ291bnRzLm51bVVzZXMobV92YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IE9uIHg4NiwgeGNoZ2FkZCBpcyBiZXR0ZXIgdGhhbiB4Y2hnc3ViIGlmIGl0IGhhcyBhbnkgdXNl
cnMuCisgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5zZXRPcGNvZGVVbnNhZmVseShB
dG9taWNYY2hnQWRkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDAp
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luZGV4LCBOZWcsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IGJvb2wgZXhlbXB0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobV92YWx1
ZS0+b3Bjb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgor
ICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBleGVtcHQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAoZXhlbXB0KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAg
ICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+YWNjZXNzV2lkdGgoKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNDYW5vbmljYWxXaWR0aCh3aWR0aCkpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgICAgIG1faW5kZXgsIHNpZ25FeHRlbmRPcGNvZGUod2lkdGgpLCBtX29yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRleCwg
YXRvbWljKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVw
bGFjZVdpdGhJZGVudGl0eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICAgICAgY2FzZSBMb2FkMTZa
OiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1v
cnkgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1l
bW9yeS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgLy8gU3ViLXdpZHRoIGxvYWQtYWNxIG9uIEFSTTY0IGFs
d2F5cyBzaWduIGV4dGVuZHMuCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld0xvYWQgPSBtX2lu
c2VydGlvblNldC5pbnNlcnRDbG9uZShtX2luZGV4LCBtZW1vcnkpOworICAgICAgICAgICAgICAg
IG5ld0xvYWQtPnNldE9wY29kZVVuc2FmZWx5KG1lbW9yeS0+b3Bjb2RlKCkgPT0gTG9hZDhaID8g
TG9hZDhTIDogTG9hZDE2Uyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFs
dWUqIG5ld1ZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbmRleCwgQml0QW5kLCBtX29yaWdpbiwgbmV3TG9hZCwKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQoCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2luZGV4LCBtX29yaWdpbiwgSW50MzIsIG1hc2sobWVtb3J5LT5hY2Nlc3NX
aWR0aCgpKSkpOwogCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0
eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00
NzAsNiArNTkyLDcgQEAgcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKICAgICBCbG9j
a0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIEluc2VydGlvblNldCBtX2lu
c2VydGlvblNldDsKKyAgICBVc2VDb3VudHMgbV91c2VDb3VudHM7CiAgICAgQmFzaWNCbG9jayog
bV9ibG9jazsKICAgICB1bnNpZ25lZCBtX2luZGV4OwogICAgIFZhbHVlKiBtX3ZhbHVlOwpAQCAt
NDc3LDIxICs2MDAsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hhbmdlZCB7IGZhbHNlIH07
CiB9OwogCi1ib29sIGxvd2VyTWFjcm9zSW1wbChQcm9jZWR1cmUmIHByb2MpCi17Ci0gICAgTG93
ZXJNYWNyb3MgbG93ZXJNYWNyb3MocHJvYyk7Ci0gICAgcmV0dXJuIGxvd2VyTWFjcm9zLnJ1bigp
OwotfQotCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogYm9vbCBsb3dlck1hY3JvcyhQcm9j
ZWR1cmUmIHByb2MpCiB7Ci0gICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHByb2MsICJsb3dlck1h
Y3JvcyIpOwotICAgIGJvb2wgcmVzdWx0ID0gbG93ZXJNYWNyb3NJbXBsKHByb2MpOwotICAgIGlm
IChzaG91bGRWYWxpZGF0ZUlSKCkpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsb3dlck1hY3Jv
c0ltcGwocHJvYykpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgTG93ZXJNYWNyb3MgbG93ZXJN
YWNyb3MocHJvYyk7CisgICAgcmV0dXJuIGxvd2VyTWFjcm9zLnJ1bigpOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
TWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHJldmlzaW9u
IDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJP
cHRpbWl6YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1NiwxNSArMTU2LDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBjYXNlIFJvdEw6IHsKICAgICAgICAgICAgICAgICAvLyBBUk02
NCBkb2Vzbid0IGhhdmUgYSByb3RhdGUgbGVmdC4KICAgICAgICAgICAgICAgICBpZiAoaXNBUk02
NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlmdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1
ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxWYWx1ZT4obV9pbmRleCwgUm90UiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNo
aWxkKDApLCBuZXdTaGlmdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBs
YWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hp
ZnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+
b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUq
IHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90UiwgbV92
YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLCBuZXdTaGlmdCk7CisgICAgICAgICAg
ICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocm90YXRlKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsMTIgKzI4LDE0IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWly
QmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJBaXJDQ2FsbFNwZWNpYWwuaCIKICNpbmNs
dWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWlySW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAi
QWlySW5zdElubGluZXMuaCIKICNpbmNsdWRlICJBaXJTdGFja1Nsb3QuaCIKICNpbmNsdWRlICJC
M0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tXb3JrbGlzdC5oIgog
I2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpAQCAtNDEsNyArNDMsNyBAQAogI2luY2x1ZGUgIkIz
Q29tbXV0YXRpdml0eS5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIz
RmVuY2VWYWx1ZS5oIgotI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01l
bW9yeVZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFNwZWNpYWwuaCIKICNp
bmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgpA
QCAtNzIsNiArNzQsMTYgQEAgbmFtZXNwYWNlIHsKIAogY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7CiAKKy8vIEZJWE1FOiBXZSB3b3VsZG4ndCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRlZCBX
aWR0aCBtb2RpZmllcnMgaW4gQWlyOjpLaW5kLgorLy8gT09QUyEhISAobmVlZCBhIGJ1ZyBVUkwp
CisjZGVmaW5lIE9QQ09ERV9GT1JfV0lEVEgob3Bjb2RlLCB3aWR0aCkgKCBcCisgICAgKHdpZHRo
KSA9PSBXaWR0aDggPyBvcGNvZGUgIyMgOCA6IFwKKyAgICAod2lkdGgpID09IFdpZHRoMTYgPyBv
cGNvZGUgIyMgMTYgOiBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDMyID8gb3Bjb2RlICMjIDMyIDog
XAorICAgIG9wY29kZSAjIyA2NCkKKyNkZWZpbmUgT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgo
b3Bjb2RlLCB3aWR0aCkgKCBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDY0ID8gb3Bjb2RlICMjIDY0
IDogb3Bjb2RlICMjIDMyKQorCiBjbGFzcyBMb3dlclRvQWlyIHsKIHB1YmxpYzoKICAgICBMb3dl
clRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQpAQCAtODMsNiArOTUsMTIgQEAgcHVibGljOgog
ICAgICAgICAsIG1fZG9taW5hdG9ycyhwcm9jZWR1cmUuZG9taW5hdG9ycygpKQogICAgICAgICAs
IG1fcHJvY2VkdXJlKHByb2NlZHVyZSkKICAgICAgICAgLCBtX2NvZGUocHJvY2VkdXJlLmNvZGUo
KSkKKyAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0aW9uU2V0KG1fY29kZSkKKyNpZiBDUFUoWDg2KSB8
fCBDUFUoWDg2XzY0KQorICAgICAgICAsIG1fZWF4KFg4NlJlZ2lzdGVyczo6ZWF4KQorICAgICAg
ICAsIG1fZWN4KFg4NlJlZ2lzdGVyczo6ZWN4KQorICAgICAgICAsIG1fZWR4KFg4NlJlZ2lzdGVy
czo6ZWR4KQorI2VuZGlmCiAgICAgewogICAgIH0KIApAQCAtMTI0LDE0ICsxNDIsMTggQEAgcHVi
bGljOgogICAgICAgICAvLyBob2lzdGVkIGFkZHJlc3MgZXhwcmVzc2lvbiBiZWZvcmUgd2UgZHVw
bGljYXRlIGl0IGJhY2sgaW50byB0aGUgbG9vcC4KICAgICAgICAgZm9yIChCMzo6QmFzaWNCbG9j
ayogYmxvY2sgOiBtX3Byb2NlZHVyZS5ibG9ja3NJblByZU9yZGVyKCkpIHsKICAgICAgICAgICAg
IG1fYmxvY2sgPSBibG9jazsKLSAgICAgICAgICAgIC8vIFJlc2V0IHNvbWUgc3RhdGUuCi0gICAg
ICAgICAgICBtX2luc3RzLnJlc2l6ZSgwKTsKIAogICAgICAgICAgICAgbV9pc1JhcmUgPSAhbV9m
YXN0V29ya2xpc3Quc2F3KGJsb2NrKTsKIAogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiTG93ZXJpbmcgQmxvY2sgIiwgKmJsb2NrLCAiOlxuIik7CiAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3Jz
IGFyZSBzZXQgdXAgY29ycmVjdGx5LgorICAgICAgICAgICAgZm9yIChCMzo6RnJlcXVlbnRlZEJs
b2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICBt
X2Jsb2NrVG9CbG9ja1tibG9ja10tPnN1Y2Nlc3NvcnMoKS5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrKG1fYmxvY2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9j
aygpXSwgc3VjY2Vzc29yLmZyZXF1ZW5jeSgpKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIC8vIFByb2Nlc3MgYmxvY2tzIGluIHJldmVyc2Ugb3JkZXIgc28gd2Ugc2VlIHVzZXMgYmVm
b3JlIGRlZnMuIFRoYXQncyB3aGF0IGFsbG93cyB1cwogICAgICAgICAgICAgLy8gdG8gbWF0Y2gg
cGF0dGVybnMgZWZmZWN0aXZlbHkuCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9j
ay0+c2l6ZSgpOyBpLS07KSB7CkBAIC0xNDksMTkgKzE3MSwxMCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBOb3cgYXBwZW5kIHRo
ZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMgY29udGFpbnMgdGhlbSBpbiByZXZlcnNlIG9yZGVyLCBz
byB3ZSBwcm9jZXNzCi0gICAgICAgICAgICAvLyBpdCBpbiByZXZlcnNlLgotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9pbnN0cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAg
ICBmb3IgKEluc3QmIGluc3QgOiBtX2luc3RzW2ldKQotICAgICAgICAgICAgICAgICAgICBtX2Js
b2NrVG9CbG9ja1tibG9ja10tPmFwcGVuZEluc3QoV1RGTW92ZShpbnN0KSk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBz
ZXQgdXAgY29ycmVjdGx5LgotICAgICAgICAgICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2NrIHN1
Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgICAgICBtX2Jsb2Nr
VG9CbG9ja1tibG9ja10tPnN1Y2Nlc3NvcnMoKS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAg
IEFpcjo6RnJlcXVlbnRlZEJsb2NrKG1fYmxvY2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygpXSwg
c3VjY2Vzc29yLmZyZXF1ZW5jeSgpKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5p
c2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMobV9ibG9ja1RvQmxvY2tbYmxvY2tdKTsKICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgbV9ibG9ja0luc2VydGlvblNldC5leGVjdXRlKCk7CiAKICAg
ICAgICAgQWlyOjpJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fY29kZSk7CiAgICAgICAgIGZv
ciAoSW5zdCYgaW5zdCA6IG1fcHJvbG9ndWUpCkBAIC00NDgsMTIgKzQ2MSwxMiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHNjYWxl
OwogICAgIH0KLQorICAgIAogICAgIC8vIFRoaXMgdHVybnMgdGhlIGdpdmVuIG9wZXJhbmQgaW50
byBhbiBhZGRyZXNzLgogICAgIEFyZyBlZmZlY3RpdmVBZGRyKFZhbHVlKiBhZGRyZXNzLCBpbnQz
Ml90IG9mZnNldCwgV2lkdGggd2lkdGgpCiAgICAgewogICAgICAgICBBU1NFUlQoQXJnOjppc1Zh
bGlkQWRkckZvcm0ob2Zmc2V0LCB3aWR0aCkpOwotCisgICAgICAgIAogICAgICAgICBhdXRvIGZh
bGxiYWNrID0gWyZdICgpIC0+IEFyZyB7CiAgICAgICAgICAgICByZXR1cm4gQXJnOjphZGRyKHRt
cChhZGRyZXNzKSwgb2Zmc2V0KTsKICAgICAgICAgfTsKQEAgLTUzNiwxMiArNTQ5LDE1IEBAIHBy
aXZhdGU6CiAgICAgICAgIE1lbW9yeVZhbHVlKiB2YWx1ZSA9IG1lbW9yeVZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBBcmco
KTsKKyAgICAgICAgCisgICAgICAgIGlmICh2YWx1ZS0+cmVxdWlyZXNTaW1wbGVBZGRyKCkpCisg
ICAgICAgICAgICByZXR1cm4gQXJnOjpzaW1wbGVBZGRyKHRtcCh2YWx1ZS0+bGFzdENoaWxkKCkp
KTsKIAogICAgICAgICBpbnQzMl90IG9mZnNldCA9IHZhbHVlLT5vZmZzZXQoKTsKICAgICAgICAg
V2lkdGggd2lkdGggPSB2YWx1ZS0+YWNjZXNzV2lkdGgoKTsKIAogICAgICAgICBBcmcgcmVzdWx0
ID0gZWZmZWN0aXZlQWRkcih2YWx1ZS0+bGFzdENoaWxkKCksIG9mZnNldCwgd2lkdGgpOwotICAg
ICAgICBBU1NFUlQocmVzdWx0LmlzVmFsaWRGb3JtKHdpZHRoKSk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHJlc3VsdC5pc1ZhbGlkRm9ybSh3aWR0aCkpOwogCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQpAQCAtNTYyLDExICs1NzgsMTkgQEAgcHJpdmF0ZToKICAgICAKICAgICBBcmdQ
cm9taXNlIGxvYWRQcm9taXNlQW55T3Bjb2RlKFZhbHVlKiBsb2FkVmFsdWUpCiAgICAgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKICAgICAg
ICAgaWYgKCFjYW5CZUludGVybmFsKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJn
KCk7CiAgICAgICAgIGlmIChjcm9zc2VzSW50ZXJmZXJlbmNlKGxvYWRWYWx1ZSkpCiAgICAgICAg
ICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAgIEFyZ1Byb21pc2UgcmVzdWx0KGFkZHIobG9hZFZh
bHVlKSwgbG9hZFZhbHVlKTsKKyAgICAgICAgLy8gT24geDg2LCBhbGwgbG9hZHMgaGF2ZSBmZW5j
ZXMuIERvaW5nIHRoaXMga2luZCBvZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gd2lsbCBtb3ZlIHRo
ZSBsb2FkLAorICAgICAgICAvLyBidXQgdGhhdCdzIGZpbmUgYmVjYXVzZSBvdXIgaW50ZXJmZXJl
bmNlIGFuYWx5c2lzIHN0b3BzIHRoZSBtb3Rpb24gb2YgZmVuY2VzIGFyb3VuZCBvdGhlcgorICAg
ICAgICAvLyBmZW5jZXMuIFNvLCBhbnkgbG9hZCBtb3Rpb24gd2UgaW50cm9kdWNlIGhlcmUgd291
bGQgbm90IGJlIG9ic2VydmFibGUuCisgICAgICAgIGlmICghaXNYODYoKSAmJiBsb2FkVmFsdWUt
PmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIEFyZygp
OworICAgICAgICBBcmcgbG9hZEFkZHIgPSBhZGRyKGxvYWRWYWx1ZSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGxvYWRBZGRyKTsKKyAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQobG9hZEFkZHIs
IGxvYWRWYWx1ZSk7CiAgICAgICAgIGlmIChsb2FkVmFsdWUtPnRyYXBzKCkpCiAgICAgICAgICAg
ICByZXN1bHQuc2V0VHJhcHModHJ1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04OTgs
MTEgKzkyMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
I2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAodmFs
dWUpLCB0bXAobV92YWx1ZSkpOwotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKGFtb3VudCksIFRt
cChYODZSZWdpc3RlcnM6OmVjeCkpOwotICAgICAgICBhcHBlbmQob3Bjb2RlLCBUbXAoWDg2UmVn
aXN0ZXJzOjplY3gpLCB0bXAobV92YWx1ZSkpOwotI2VuZGlmCisgICAgICAgIGFwcGVuZChNb3Zl
LCB0bXAoYW1vdW50KSwgbV9lY3gpOworICAgICAgICBhcHBlbmQob3Bjb2RlLCBtX2VjeCwgdG1w
KG1fdmFsdWUpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwg
QWlyOjpPcGNvZGUgb3Bjb2RlNjQ+CkBAIC05MzEsMTAgKzk1MywxNiBAQCBwcml2YXRlOgogICAg
ICAgICBBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIENvbW11dGF0
aXZpdHkgY29tbXV0YXRpdml0eSA9IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wgdHJ5QXBwZW5k
U3RvcmVCaW5PcChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOworICAgICAgICAKICAgICAg
ICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2Rl
NjQsIGxlZnQtPnR5cGUoKSk7CiAgICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKKyAgICAgICAgLy8gT24geDg2LCBhbGwg
c3RvcmVzIGhhdmUgZmVuY2VzLCBhbmQgdGhpcyBpc24ndCByZW9yZGVyaW5nIHRoZSBzdG9yZSBp
dHNlbGYuCisgICAgICAgIGlmICghaXNYODYoKSAmJiBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4o
KS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAg
ICAgIEFyZyBzdG9yZUFkZHIgPSBhZGRyKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlQoc3RvcmVB
ZGRyKTsKIApAQCAtOTk0LDExICsxMDIyLDUwIEBAIHByaXZhdGU6CiAKICAgICAgICAgcmV0dXJu
IEluc3QobW92ZSwgbV92YWx1ZSwgdG1wKHZhbHVlKSwgZGVzdCk7CiAgICAgfQorICAgIAorICAg
IEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFdpZHRoIHdpZHRoLCBCYW5rIGJhbmssIGJvb2wgcmVs
ZWFzZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICAgICAgY2FzZSBXaWR0
aDg6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAgICAgICAgICAg
IHJldHVybiByZWxlYXNlID8gU3RvcmVSZWw4IDogQWlyOjpTdG9yZTg7CisgICAgICAgIGNhc2Ug
V2lkdGgxNjoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAg
ICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDE2IDogQWlyOjpTdG9yZTE2OworICAgICAg
ICBjYXNlIFdpZHRoMzI6CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAg
IGNhc2UgR1A6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDMyIDog
TW92ZTMyOworICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghcmVsZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpczY0Qml0KCkpOworICAgICAgICAgICAgc3dpdGNoIChi
YW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiByZWxl
YXNlID8gU3RvcmVSZWw2NCA6IE1vdmU7CisgICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
TW92ZURvdWJsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAg
IEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1l
bW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1lbW9yeS0+aXNTdG9yZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0b3JlT3Bj
b2RlKG1lbW9yeS0+YWNjZXNzV2lkdGgoKSwgbWVtb3J5LT5hY2Nlc3NCYW5rKCksIG1lbW9yeS0+
aGFzRmVuY2UoKSk7CisgICAgfQogCiAgICAgSW5zdCBjcmVhdGVTdG9yZShWYWx1ZSogdmFsdWUs
IGNvbnN0IEFyZyYgZGVzdCkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUg
PSBtb3ZlRm9yVHlwZSh2YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3Jl
KG1vdmVPcGNvZGUsIHZhbHVlLCBkZXN0KTsKKyAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29k
ZSA9IHN0b3JlT3Bjb2RlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVP
cGNvZGUsIHZhbHVlLT5jaGlsZCgwKSwgZGVzdCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4KQEAgLTEwMDYsNyArMTA3Myw3IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIGNyZWF0ZVN0b3JlKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikpKTsKICAgICB9Ci0KKyAgICAKICAgICBBaXI6Ok9wY29kZSBtb3Zl
Rm9yVHlwZShUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEw
NzMsNyArMTE0MCw0MSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9pbnN0cy5sYXN0KCku
YXBwZW5kKGluc3QpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGZpbmlzaEFwcGVuZGluZ0luc3Ry
dWN0aW9ucyhBaXI6OkJhc2ljQmxvY2sqIHRhcmdldCkKKyAgICB7CisgICAgICAgIC8vIE5vdyBh
cHBlbmQgdGhlIGluc3RydWN0aW9ucy4gbV9pbnN0cyBjb250YWlucyB0aGVtIGluIHJldmVyc2Ug
b3JkZXIsIHNvIHdlIHByb2Nlc3MKKyAgICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9pbnN0cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGZv
ciAoSW5zdCYgaW5zdCA6IG1faW5zdHNbaV0pCisgICAgICAgICAgICAgICAgdGFyZ2V0LT5hcHBl
bmRJbnN0KFdURk1vdmUoaW5zdCkpOworICAgICAgICB9CisgICAgICAgIG1faW5zdHMucmVzaXpl
KDApOworICAgIH0KKyAgICAKKyAgICBBaXI6OkJhc2ljQmxvY2sqIG5ld0Jsb2NrKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKG1fYmxvY2tU
b0Jsb2NrW21fYmxvY2tdKTsKKyAgICB9CiAKKyAgICAvLyBOT1RFOiBUaGlzIHdpbGwgY3JlYXRl
IGEgY29udGludWF0aW9uIGJsb2NrIChgbmV4dEJsb2NrYCkgKmFmdGVyKiBhbnkgYmxvY2tzIHlv
dSd2ZSBjcmVhdGVkIHVzaW5nCisgICAgLy8gbmV3QmxvY2soKS4gU28sIGl0J3MgcHJlZmVyYWJs
ZSB0byBjcmVhdGUgYWxsIG9mIHlvdXIgYmxvY2tzIHVwZnJvbnQgdXNpbmcgbmV3QmxvY2soKS4g
QWxzbyBub3RlCisgICAgLy8gdGhhdCBhbnkgY29kZSB5b3UgZW1pdCBiZWZvcmUgdGhpcyB3aWxs
IGJlIHByZXBlbmRlZCB0byB0aGUgY29udGludWF0aW9uLCBhbmQgYW55IGNvZGUgeW91IGVtaXQK
KyAgICAvLyBhZnRlciB0aGlzIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHByZXZpb3VzIGJsb2Nr
LgorICAgIHZvaWQgc3BsaXRCbG9jayhBaXI6OkJhc2ljQmxvY2sqJiBwcmV2aW91c0Jsb2NrLCBB
aXI6OkJhc2ljQmxvY2sqJiBuZXh0QmxvY2spCisgICAgeworICAgICAgICBBaXI6OkJhc2ljQmxv
Y2sqIGJsb2NrID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9ja107CisgICAgICAgIAorICAgICAgICBw
cmV2aW91c0Jsb2NrID0gYmxvY2s7CisgICAgICAgIG5leHRCbG9jayA9IG1fYmxvY2tJbnNlcnRp
b25TZXQuaW5zZXJ0QWZ0ZXIoYmxvY2spOworICAgICAgICAKKyAgICAgICAgZmluaXNoQXBwZW5k
aW5nSW5zdHJ1Y3Rpb25zKG5leHRCbG9jayk7CisgICAgICAgIG5leHRCbG9jay0+c3VjY2Vzc29y
cygpID0gYmxvY2stPnN1Y2Nlc3NvcnMoKTsKKyAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKS5j
bGVhcigpOworICAgICAgICAKKyAgICAgICAgbV9pbnN0cy5hcHBlbmQoVmVjdG9yPEluc3Q+KCkp
OworICAgIH0KKyAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1
bWVudHM+CiAgICAgVCogZW5zdXJlU3BlY2lhbChUKiYgZmllbGQsIEFyZ3VtZW50cyYmLi4uIGFy
Z3VtZW50cykKICAgICB7CkBAIC0xMTIzLDcgKzEyMjQsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoK
ICAgICAgICAgICAgICAgICBhcmcgPSBBcmc6OmNhbGxBcmcodmFsdWUucmVwKCkub2Zmc2V0RnJv
bVNQKCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlLnZhbHVlKCksIGFyZyk7
CisgICAgICAgICAgICAgICAgYXBwZW5kU3RvcmUobW92ZUZvclR5cGUodmFsdWUudmFsdWUoKS0+
dHlwZSgpKSwgdmFsdWUudmFsdWUoKSwgYXJnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTE5NjEsNiArMjA2MiwzMDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRYODZEaXYoQjM6Ok9wY29kZSBvcCkKKyAg
ICB7CisgICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7CisgICAgICAgIEFp
cjo6T3Bjb2RlIGRpdjsKKyAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKKyAgICAg
ICAgY2FzZSBJbnQzMjoKKyAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252
ZXJ0VG9Eb3VibGVXb3JkMzI7CisgICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDY0OgorICAgICAgICAgICAgY29udmVydFRvRG91
YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7CisgICAgICAgICAgICBkaXYgPSBYODZE
aXY2NDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIEFTU0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKKyAgICAgICAg
VG1wIHJlc3VsdCA9IG9wID09IERpdiA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5k
KE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKGNv
bnZlcnRUb0RvdWJsZVdvcmQsIG1fZWF4LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChkaXYsIG1f
ZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVuZChNb3Zl
LCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRYODZVRGl2
KEIzOjpPcGNvZGUgb3ApCisgICAgeworICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVl
LT50eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CisKKyAgICAgICAgQVNT
RVJUKG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9
PSBVRGl2ID8gbV9lYXggOiBtX2VkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFs
dWUtPmNoaWxkKDApKSwgbV9lYXgpOworICAgICAgICBhcHBlbmQoWG9yNjQsIG1fZWR4LCBtX2Vk
eCk7CisgICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxk
KDEpKSk7CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7CisgICAg
fQorICAgIAorICAgIEFpcjo6T3Bjb2RlIGxvYWRMaW5rT3Bjb2RlKFdpZHRoIHdpZHRoLCBib29s
IGZlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZlbmNlID8gT1BDT0RFX0ZPUl9XSURUSChM
b2FkTGlua0FjcSwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChMb2FkTGluaywgd2lkdGgpOwor
ICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZUNvbmRPcGNvZGUoV2lkdGggd2lkdGgs
IGJvb2wgZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJ
RFRIKFN0b3JlQ29uZFJlbCwgd2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmQsIHdp
ZHRoKTsKKyAgICB9CisgICAgCisgICAgLy8gVGhpcyBjYW4gZW1pdCBjb2RlIGZvciB0aGUgZm9s
bG93aW5nIHBhdHRlcm5zOgorICAgIC8vIEF0b21pY1dlYWtDQVMKKyAgICAvLyBCaXRYb3IoQXRv
bWljV2Vha0NBUywgMSkKKyAgICAvLyBBdG9taWNTdHJvbmdDQVMKKyAgICAvLyBFcXVhbChBdG9t
aWNTdHJvbmdDQVMsIGV4cGVjdGVkKQorICAgIC8vIE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywg
ZXhwZWN0ZWQpCisgICAgLy8gQnJhbmNoKEF0b21pY1dlYWtDQVMpCisgICAgLy8gQnJhbmNoKEVx
dWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vIEJyYW5jaChOb3RFcXVhbChB
dG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKSkKKyAgICAvLworICAgIC8vIEl0IGFzc3VtZXMgdGhh
dCBhdG9taWNWYWx1ZSBwb2ludHMgdG8gdGhlIENBUywgYW5kIG1fdmFsdWUgcG9pbnRzIHRvIHRo
ZSBpbnN0cnVjdGlvbiBiZWluZworICAgIC8vIGdlbmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlv
dSd2ZSBjb25zdW1lZCBldmVyeXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc3VtZWQuCisgICAg
dm9pZCBhcHBlbmRDQVMoVmFsdWUqIGF0b21pY1ZhbHVlLCBib29sIGludmVydCkKKyAgICB7Cisg
ICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+
KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGF0b21pYyk7CisgICAgICAgIAorICAgICAgICBi
b29sIGlzQnJhbmNoID0gbV92YWx1ZS0+b3Bjb2RlKCkgPT0gQnJhbmNoOworICAgICAgICBib29s
IGlzU3Ryb25nID0gYXRvbWljLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAg
IGJvb2wgcmV0dXJuc09sZFZhbHVlID0gbV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25n
Q0FTOworICAgICAgICBib29sIGhhc0ZlbmNlID0gYXRvbWljLT5oYXNGZW5jZSgpOworICAgICAg
ICAKKyAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAg
IEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworCisgICAgICAgIFRtcCB2YWx1ZVJlc3VsdFRt
cDsKKyAgICAgICAgVG1wIGJvb2xSZXN1bHRUbXA7CisgICAgICAgIGlmIChyZXR1cm5zT2xkVmFs
dWUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbnZlcnQpOworICAgICAgICAgICAg
dmFsdWVSZXN1bHRUbXAgPSB0bXAobV92YWx1ZSk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1w
ID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAg
ICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAg
ICBib29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAg
ICAgYm9vbFJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgVG1wIHN1Y2Nlc3NCb29sUmVzdWx0VG1wOworICAgICAgICBpZiAoaXNTdHJvbmcgJiYg
IWlzQnJhbmNoKQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3
VG1wKEdQKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAg
PSBib29sUmVzdWx0VG1wOworCisgICAgICAgIFRtcCBleHBlY3RlZFZhbHVlVG1wID0gdG1wKGF0
b21pYy0+Y2hpbGQoMCkpOworICAgICAgICBUbXAgbmV3VmFsdWVUbXAgPSB0bXAoYXRvbWljLT5j
aGlsZCgxKSk7CisgICAgICAgIAorICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNz
OworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBmYWlsdXJlOworICAgICAgICBpZiAoaXNC
cmFuY2gpIHsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+
c3VjY2Vzc29yKGludmVydCk7CisgICAgICAgICAgICBmYWlsdXJlID0gbV9ibG9ja1RvQmxvY2tb
bV9ibG9ja10tPnN1Y2Nlc3NvcighaW52ZXJ0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUo
YXRvbWljLT5hY2Nlc3NUeXBlKCkpLCBpbW1PclRtcChhdG9taWMtPmNoaWxkKDApKSwgbV9lYXgp
OworICAgICAgICAgICAgaWYgKHJldHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgICAgIGFw
cGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0cm9uZ0NBUywgd2lkdGgpLCBtX2VheCwgbmV3
VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZv
clR5cGUoYXRvbWljLT5hY2Nlc3NUeXBlKCkpLCBtX2VheCwgdmFsdWVSZXN1bHRUbXApOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgICAgIGFwcGVuZChP
UENPREVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9uZ0NBUywgd2lkdGgpLCBBcmc6OnN0YXR1
c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJl
c3MpOworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zZXRTdWNjZXNz
b3JzKHN1Y2Nlc3MsIGZhaWx1cmUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FTLCB3aWR0aCksIEFyZzo6
c3RhdHVzQ29uZChpbnZlcnQgPyBNYWNyb0Fzc2VtYmxlcjo6RmFpbHVyZSA6IE1hY3JvQXNzZW1i
bGVyOjpTdWNjZXNzKSwgbV9lYXgsIHRtcChhdG9taWMtPmNoaWxkKDEpKSwgYWRkcmVzcywgYm9v
bFJlc3VsdFRtcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgIC8vIFdlIHdpc2ggdG8g
ZW1pdDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8g
ICAgIExvYWRMaW5rCisgICAgICAgIC8vICAgICBCcmFuY2ggTm90RXF1YWwKKyAgICAgICAgLy8g
ICBTdWNjZXNzb3JzOiBUaGVuOiNmYWlsLCBFbHNlOiAjc3RvcmUKKyAgICAgICAgLy8gQmxvY2sg
I3N0b3JlOgorICAgICAgICAvLyAgICAgU3RvcmVDb25kCisgICAgICAgIC8vICAgICBYb3IgJDEs
ICVyZXN1bHQgICAgPC0tLSBvbmx5IGlmICFpbnZlcnQKKyAgICAgICAgLy8gICAgIEp1bXAKKyAg
ICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAgICAvLyBCbG9jayAjZmFpbDoKKyAg
ICAgICAgLy8gICAgIE1vdmUgJGludmVydCwgJXJlc3VsdAorICAgICAgICAvLyAgICAgSnVtcAor
ICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8vIEJsb2NrICNkb25lOgor
ICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2Nr
KCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3RvcmVCbG9jayA9IG5ld0Jsb2NrKCk7Cisg
ICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3VjY2Vzc0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAg
aWYgKCFpc0JyYW5jaCAmJiBpc1N0cm9uZykKKyAgICAgICAgICAgIHN1Y2Nlc3NCbG9jayA9IG5l
d0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogZmFpbEJsb2NrID0gbnVsbHB0cjsK
KyAgICAgICAgaWYgKCFpc0JyYW5jaCkgeworICAgICAgICAgICAgZmFpbEJsb2NrID0gbmV3Qmxv
Y2soKTsKKyAgICAgICAgICAgIGZhaWx1cmUgPSBmYWlsQmxvY2s7CisgICAgICAgIH0KKyAgICAg
ICAgQWlyOjpCYXNpY0Jsb2NrKiBzdHJvbmdGYWlsQmxvY2s7CisgICAgICAgIGlmIChpc1N0cm9u
ZyAmJiBoYXNGZW5jZSkKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jayA9IG5ld0Jsb2NrKCk7
CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIGNvbXBhcmlzb25GYWlsOworICAgICAgICBB
aXI6OkZyZXF1ZW50ZWRCbG9jayB3ZWFrRmFpbDsKKyAgICAgICAgaWYgKGlzU3Ryb25nKSB7Cisg
ICAgICAgICAgICBpZiAoaGFzRmVuY2UpCisgICAgICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwg
PSBzdHJvbmdGYWlsQmxvY2s7CisgICAgICAgICAgICB3ZWFrRmFpbCA9IHJlbG9vcEJsb2NrOwor
ICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICB3ZWFrRmFpbCA9IGZhaWx1cmU7CisgICAgICAg
IEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBk
b25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9uZUJsb2NrKTsKKyAg
ICAgICAgCisgICAgICAgIGFwcGVuZChBaXI6Okp1bXApOworICAgICAgICBiZWdpbkJsb2NrLT5z
ZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHJlbG9vcEJsb2Nr
LT5hcHBlbmQobG9hZExpbmtPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFs
dWUsIGFkZHJlc3MsIHZhbHVlUmVzdWx0VG1wKTsKKyAgICAgICAgcmVsb29wQmxvY2stPmFwcGVu
ZChPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChCcmFuY2gsIHdpZHRoKSwgbV92YWx1ZSwgQXJn
OjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCksIHZhbHVlUmVzdWx0VG1wLCBleHBl
Y3RlZFZhbHVlVG1wKTsKKyAgICAgICAgcmVsb29wQmxvY2stPnNldFN1Y2Nlc3NvcnMoY29tcGFy
aXNvbkZhaWwsIHN0b3JlQmxvY2spOworICAgICAgICAKKyAgICAgICAgc3RvcmVCbG9jay0+YXBw
ZW5kKHN0b3JlQ29uZE9wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwg
bmV3VmFsdWVUbXAsIGFkZHJlc3MsIHN1Y2Nlc3NCb29sUmVzdWx0VG1wKTsKKyAgICAgICAgaWYg
KGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMy
LCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVzdWx0
VG1wLCBBcmc6OmJpdEltbSgtMSkpOworICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vz
c29ycyhzdWNjZXNzLCB3ZWFrRmFpbCk7CisgICAgICAgICAgICBkb25lQmxvY2stPnN1Y2Nlc3Nv
cnMoKS5jbGVhcigpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRvbmVCbG9jay0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIGRvbmVCbG9jay0+YXBwZW5kKEFpcjo6T29wcywgbV92YWx1ZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNTdHJvbmcpIHsKKyAgICAgICAg
ICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJl
c0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCwgQXJnOjpi
aXRJbW0oLTEpKTsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1
Y2Nlc3NCbG9jaywgcmVsb29wQmxvY2spOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIHN1Y2Nlc3NCbG9jay0+YXBwZW5kKE1vdmUsIG1fdmFsdWUsIEFyZzo6aW1tKCFpbnZlcnQp
LCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChB
aXI6Okp1bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+c2V0U3Vj
Y2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIWludmVydCkKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKFhv
cjMyLCBtX3ZhbHVlLCBBcmc6OmJpdEltbSgxKSwgYm9vbFJlc3VsdFRtcCwgYm9vbFJlc3VsdFRt
cCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5k
KEFpcjo6SnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3Vj
Y2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
ICAgICBmYWlsQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6OmltbShpbnZlcnQpLCBi
b29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKEFpcjo6SnVtcCwg
bV92YWx1ZSk7CisgICAgICAgICAgICBmYWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2Nr
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzU3Ryb25nICYmIGhhc0ZlbmNl
KSB7CisgICAgICAgICAgICBUbXAgdG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAg
ICBzdHJvbmdGYWlsQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+
aGFzRmVuY2UoKSksIG1fdmFsdWUsIHZhbHVlUmVzdWx0VG1wLCBhZGRyZXNzLCB0bXApOworICAg
ICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBB
cmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCB0bXAsIEFyZzo6Yml0SW1tKC0xKSk7
CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZmFpbHVyZSwgcmVs
b29wQmxvY2spOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGJvb2wgYXBwZW5kVm9pZEF0
b21pYyhBaXI6Ok9wY29kZSBhdG9taWNPcGNvZGUpCisgICAgeworICAgICAgICBpZiAobV91c2VD
b3VudHMubnVtVXNlcyhtX3ZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChpc1ZhbGlkRm9ybShhdG9taWNPcGNvZGUsIEFyZzo6SW1tLCBhZGRyZXNzLmtpbmQo
KSkgJiYgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgYXBwZW5kKGF0b21p
Y09wY29kZSwgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzVmFsaWRGb3Jt
KGF0b21pY09wY29kZSwgQXJnOjpUbXAsIGFkZHJlc3Mua2luZCgpKSkgeworICAgICAgICAgICAg
YXBwZW5kKGF0b21pY09wY29kZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kR2VuZXJhbEF0b21pYyhBaXI6
Ok9wY29kZSBvcGNvZGUpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92
YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBBcmcgYWRkcmVzcyA9
IGFkZHIobV92YWx1ZSk7CisgICAgICAgIFRtcCBvbGRWYWx1ZSA9IG1fY29kZS5uZXdUbXAoR1Ap
OworICAgICAgICBUbXAgbmV3VmFsdWUgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgCisg
ICAgICAgIC8vIFdlIG5lZWQgYSBDQVMgbG9vcCBvciBhIExML1NDIGxvb3AuIFVzaW5nIHByZXBh
cmUvYXR0ZW1wdCBqYXJnb24sIHdlIHdhbnQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJsb2Nr
ICNyZWxvb3A6CisgICAgICAgIC8vICAgICBQcmVwYXJlCisgICAgICAgIC8vICAgICBvcGNvZGUK
KyAgICAgICAgLy8gICAgIEF0dGVtcHQKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVuOiNk
b25lLCBFbHNlOiNyZWxvb3AKKyAgICAgICAgLy8gQmxvY2sgI2RvbmU6CisgICAgICAgIC8vICAg
ICBNb3ZlIG9sZFZhbHVlLCByZXN1bHQKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChyZWxheGVk
TW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwgdG1wKGF0b21pYykpOworICAg
ICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2NrKCk7
CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpCYXNp
Y0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9uZUJs
b2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChBaXI6Okp1bXApOworICAgICAgICBiZWdp
bkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIEFp
cjo6T3Bjb2RlIHByZXBhcmVPcGNvZGU7CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAg
ICAgICBzd2l0Y2ggKGF0b21pYy0+YWNjZXNzV2lkdGgoKSkgeworICAgICAgICAgICAgY2FzZSBX
aWR0aDg6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IExvYWQ4U2lnbmVkRXh0ZW5k
VG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgxNjoK
KyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMjsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgzMjoKKyAgICAg
ICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTW92ZTMyOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNv
ZGUgPSBNb3ZlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAg
ICAgICAgIG9wY29kZSA9IGxvYWRMaW5rT3Bjb2RlKGF0b21pYy0+YWNjZXNzV2lkdGgoKSwgYXRv
bWljLT5oYXNGZW5jZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5k
KHByZXBhcmVPcGNvZGUsIG1fdmFsdWUsIGFkZHJlc3MsIG9sZFZhbHVlKTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChvcGNvZGUgIT0gQWlyOjpOb3ApIHsKKyAgICAgICAgICAgIGlmIChpbW0oYXRv
bWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpUbXAs
IEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwg
bV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAg
ICAgICAgICAgZWxzZSBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAs
IEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwg
bV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChyZWxh
eGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBtX3ZhbHVlLCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOworICAgICAgICAgICAgICAgIGlmIChpbW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxp
ZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICBy
ZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkp
LCBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBy
ZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkp
LCBuZXdWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNY
ODYoKSkgeworICAgICAgICAgICAgQWlyOjpPcGNvZGUgY2FzT3Bjb2RlID0gT1BDT0RFX0ZPUl9X
SURUSChCcmFuY2hBdG9taWNTdHJvbmdDQVMsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSk7CisgICAg
ICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5
cGUoKSksIG1fdmFsdWUsIG9sZFZhbHVlLCBtX2VheCk7CisgICAgICAgICAgICByZWxvb3BCbG9j
ay0+YXBwZW5kKGNhc09wY29kZSwgbV92YWx1ZSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNzZW1i
bGVyOjpTdWNjZXNzKSwgbV9lYXgsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBU
bXAgYm9vbFJlc3VsdCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgcmVsb29wQmxv
Y2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUoYXRvbWljLT5hY2Nlc3NXaWR0aCgpLCBhdG9taWMt
Pmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZSwgYWRkcmVzcywgYm9vbFJlc3VsdCk7Cisg
ICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwgQXJn
OjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3VsdCwgQXJnOjpiaXRJbW0o
LTEpKTsKKyAgICAgICAgfQorICAgICAgICByZWxvb3BCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25l
QmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBsb3dlcigpCiAgICAg
ewogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CkBAIC0xOTcxLDMwICsyMzcz
LDUwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExv
YWQ6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgbW92ZUZvclR5
cGUobV92YWx1ZS0+dHlwZSgpKSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUp
KSk7CisgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5
VmFsdWU+KCk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBBaXI6Ok9vcHM7Cisg
ICAgICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICAgICAgc3dp
dGNoIChtZW1vcnktPnR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgSW50MzI6CisgICAg
ICAgICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3EzMjsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgICAgICAgICAg
b3Bjb2RlID0gTG9hZEFjcTY0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBvcGNvZGUgPSBtb3ZlRm9yVHlw
ZShtZW1vcnktPnR5cGUoKSk7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFs
dWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExv
YWQ4UzogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOFNp
Z25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwor
ICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+
KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkOFNpZ25lZEV4
dGVuZFRvMzI7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29k
ZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQ4WjogewotICAgICAgICAgICAg
YXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOCwgbV92YWx1ZSwgYWRkcihtX3ZhbHVl
KSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3Zh
bHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4IDogTG9hZDg7Cisg
ICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwg
YWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIExvYWQxNlM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFw
cGluZ0luc3QobV92YWx1ZSwgTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkciht
X3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUg
PSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNlNpZ25l
ZEV4dGVuZFRvMzIgOiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5k
KHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRt
cChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBMb2FkMTZaOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUs
IExvYWQxNiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAg
ICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFz
RmVuY2UoKSA/IExvYWRBY3ExNiA6IExvYWQxNjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGlu
Z0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1
ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCisgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBBZGQ6IHsKICAgICAgICAgICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yMDkyLDcgKzI1MTQsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgaWYgKG1fdmFsdWUtPmlzQ2hpbGwoKSkKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpc0FSTTY0KCkpOwogICAgICAgICAgICAgaWYgKGlzSW50KG1fdmFsdWUtPnR5cGUoKSkg
JiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAgIGxvd2VyWDg2RGl2KERpdik7CisgICAgICAg
ICAgICAgICAgYXBwZW5kWDg2RGl2KERpdik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKCFpc1g4NigpIHx8IGlzRmxvYXQobV92YWx1
ZS0+dHlwZSgpKSk7CkBAIC0yMTAzLDcgKzI1MjUsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNh
c2UgVURpdjogewogICAgICAgICAgICAgaWYgKGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNY
ODYoKSkgewotICAgICAgICAgICAgICAgIGxvd2VyWDg2VURpdihVRGl2KTsKKyAgICAgICAgICAg
ICAgICBhcHBlbmRYODZVRGl2KFVEaXYpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIApAQCAtMjExNywxMyArMjUzOSwxMyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IE1vZDogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbV92YWx1ZS0+aXNDaGlsbCgpKTsKLSAgICAgICAgICAgIGxvd2Vy
WDg2RGl2KE1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZEaXYoTW9kKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgVU1vZDogewogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7Ci0gICAgICAgICAgICBsb3dlclg4NlVEaXYoVU1vZCk7
CisgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVNb2QpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTIxNjIsMTAgKzI1ODQsMjggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBhcHBlbmRVbk9wPE5vdDMyLCBOb3Q2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gVGhpcyBwYXR0ZXJuIGlzIHN1cGVyIHVzZWZ1bCBvbiBib3RoIHg4NiBhbmQgQVJNNjQs
IHNpbmNlIHRoZSBpbnZlcnNpb24gb2YgdGhlIENBUyByZXN1bHQKKyAgICAgICAgICAgIC8vIGNh
biBiZSBkb25lIHdpdGggemVybyBjb3N0IG9uIHg4NiAoanVzdCBmbGlwIHRoZSBzZXQgZnJvbSBF
IHRvIE5FKSBhbmQgaXQncyBhIHByb2dyZXNzaW9uCisgICAgICAgICAgICAvLyBvbiBBUk02NCAo
c2luY2UgU1RYIHJldHVybnMgMCBvbiBzdWNjZXNzLCBzbyBvcmRpbmFyaWx5IHdlIGhhdmUgdG8g
ZmxpcCBpdCkuCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDEpCisg
ICAgICAgICAgICAgICAgJiYgaXNBdG9taWNDQVMobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgp
KQorICAgICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7
CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAg
ICAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLT5jaGlsZCgwKSwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAg
ICBhcHBlbmRCaW5PcDxYb3IzMiwgWG9yNjQsIFhvckRvdWJsZSwgWG9yRmxvYXQsIENvbW11dGF0
aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQo
MSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7
CisgICAgICAgICAgICBhcHBlbmRVbk9wPERlcGVuZDMyLCBEZXBlbmQ2ND4obV92YWx1ZS0+Y2hp
bGQoMCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBT
aGw6IHsKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQzMigxKSkgewpA
QCAtMjI2Niw3ICsyNzA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlVG9TdG9yZSwgYWRkcihtX3Zh
bHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMjg3LDcgKzI3MjcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTgsIHZhbHVl
VG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVl
LCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0y
MzA4LDcgKzI3NDgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUo
QWlyOjpTdG9yZTE2LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAg
YXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtMjQxNiw3ICsyODU2LDIyIEBAIHByaXZhdGU6CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIEVxdWFsOgotICAgICAgICBjYXNlIE5vdEVxdWFsOgorICAgICAgICBj
YXNlIE5vdEVxdWFsOiB7CisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29k
ZSgpID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxk
KDApLT5jaGlsZCgwKSA9PSBtX3ZhbHVlLT5jaGlsZCgxKQorICAgICAgICAgICAgICAgICYmIGNh
bkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
KCFtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSkpKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUtPmNoaWxkKDEpKSk7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1
ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLT5jaGlsZCgw
KSwgbV92YWx1ZS0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIG1faW5zdHMu
bGFzdCgpLmFwcGVuZChjcmVhdGVDb21wYXJlKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTGVzc1RoYW46CiAgICAg
ICAgIGNhc2UgR3JlYXRlclRoYW46CiAgICAgICAgIGNhc2UgTGVzc0VxdWFsOgpAQCAtMjcyNyw2
ICszMTgyLDQwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEJyYW5jaDog
eworICAgICAgICAgICAgaWYgKGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7Cisg
ICAgICAgICAgICAgICAgVmFsdWUqIGJyYW5jaENoaWxkID0gbV92YWx1ZS0+Y2hpbGQoMCk7Cisg
ICAgICAgICAgICAgICAgc3dpdGNoIChicmFuY2hDaGlsZC0+b3Bjb2RlKCkpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdElu
dGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKGJyYW5j
aENoaWxkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAg
ICAgICAgICAgICAgIC8vIEEgYnJhbmNoIGlzIGEgY29tcGFyaXNvbiB0byB6ZXJvLgorICAgICAg
ICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5pc0ludCgwKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
Y2FzZSBFcXVhbDoKKyAgICAgICAgICAgICAgICBjYXNlIE5vdEVxdWFsOgorICAgICAgICAgICAg
ICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJv
bmdDQVMKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwoYnJhbmNoQ2hp
bGQtPmNoaWxkKDApKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgYnJhbmNoQ2hpbGQtPmNo
aWxkKDApLT5jaGlsZCgwKSA9PSBicmFuY2hDaGlsZC0+Y2hpbGQoMSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkLT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLCBicmFuY2hD
aGlsZC0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKICAgICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChjcmVhdGVCcmFuY2go
bV92YWx1ZS0+Y2hpbGQoMCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
Mjc4NCw3ICszMjczLDgxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBhcHBlbmQoQWlyOjpFbnRy
eVN3aXRjaCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FT
OiB7CisgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZSwgZmFsc2UpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hn
QWRkOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRv
bWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9S
X1dJRFRIKEF0b21pY0FkZCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIo
YXRvbWljKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lE
VEgoQXRvbWljWGNoZ0FkZCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKTsKKyAgICAgICAgICAgIGlm
IChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAg
ICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1w
KGF0b21pYy0+Y2hpbGQoMCkpLCB0bXAoYXRvbWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5k
KG9wY29kZSwgdG1wKGF0b21pYyksIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVf
Rk9SX0NBTk9OSUNBTF9XSURUSChBZGQsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOiB7
CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFs
dWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRI
KEF0b21pY1N1YiwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09E
RV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFN1YiwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0
b21pY1hjaGdBbmQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVl
LT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9Q
Q09ERV9GT1JfV0lEVEgoQXRvbWljQW5kLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVy
YWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoQW5kLCBhdG9taWMtPmFjY2Vzc1dp
ZHRoKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRv
bWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5k
Vm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY09yLCBhdG9taWMtPmFjY2Vzc1dpZHRo
KCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoT3IsIGF0b21p
Yy0+YWNjZXNzV2lkdGgoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOiB7CisgICAgICAgICAgICBBdG9t
aWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAg
ICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1hvciwgYXRvbWlj
LT5hY2Nlc3NXaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
CisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJ
RFRIKFhvciwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAg
ICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7Cisg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hj
aGcsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0o
b3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAgICAgICAgICAgYXBw
ZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIHRtcChhdG9taWMtPmNoaWxk
KDApKSwgdG1wKGF0b21pYykpOworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChh
dG9taWMpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZP
Ul9DQU5PTklDQUxfV0lEVEgoWG9yLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjc5Miw2NCArMzM1NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGRhdGFMb2coIkZBVEFMOiBjb3VsZCBub3QgbG93ZXIgIiwgZGVlcER1bXAo
bV9wcm9jZWR1cmUsIG1fdmFsdWUpLCAiXG4iKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9Ci0KLSAgICB2b2lkIGxvd2VyWDg2RGl2KEIzOjpPcGNvZGUgb3Ap
Ci0gICAgewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBU
bXAoWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVy
czo6ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVXb3JkOwotICAg
ICAgICBBaXI6Ok9wY29kZSBkaXY7Ci0gICAgICAgIHN3aXRjaCAobV92YWx1ZS0+dHlwZSgpKSB7
Ci0gICAgICAgIGNhc2UgSW50MzI6Ci0gICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0g
WDg2Q29udmVydFRvRG91YmxlV29yZDMyOwotICAgICAgICAgICAgZGl2ID0gWDg2RGl2MzI7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ2NDoKLSAgICAgICAgICAgIGNvbnZl
cnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0OwotICAgICAgICAgICAgZGl2
ID0gWDg2RGl2NjQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8IG9wID09IE1vZCk7Ci0g
ICAgICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBEaXYgPyBYODZS
ZWdpc3RlcnM6OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3Zl
LCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBlbmQoY29udmVydFRv
RG91YmxlV29yZCwgZWF4LCBlZHgpOwotICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1w
KG1fdmFsdWUtPmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwg
dG1wKG1fdmFsdWUpKTsKLQotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAg
ICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lk
IGxvd2VyWDg2VURpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUo
WDg2XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAg
ICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAgICAgICAgQWlyOjpPcGNv
ZGUgZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0
OwotCi0gICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVNb2QpOwotICAgICAgICBY
ODZSZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gVURpdiA/IFg4NlJlZ2lzdGVy
czo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcCht
X3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChYb3I2NCwgZWR4LCBlZHgp
OwotICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7
Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1wKG1fdmFsdWUpKTsKLSNlbHNl
Ci0gICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSgpOwotI2VuZGlmCi0gICAgfQotCisgICAgCiAgICAgSW5kZXhTZXQ8VmFsdWU+IG1fbG9j
a2VkOyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQgd2lsbCBoYXZlIG5vIFRtcCBpbiBBaXIuCiAg
ICAgSW5kZXhNYXA8VmFsdWUsIFRtcD4gbV92YWx1ZVRvVG1wOyAvLyBUaGVzZSBhcmUgdmFsdWVz
IHRoYXQgbXVzdCBoYXZlIGEgVG1wIGluIEFpci4gV2Ugc2F5IHRoYXQgYSBWYWx1ZSogd2l0aCBh
IG5vbi1udWxsIFRtcCBpcyAicGlubmVkIi4KICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3Bo
aVRvVG1wOyAvLyBFYWNoIFBoaSBnZXRzIGl0cyBvd24gVG1wLgpAQCAtMjg2NCw3ICszMzcwLDcg
QEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxWZWN0b3I8SW5zdCwgND4+IG1faW5zdHM7CiAgICAg
VmVjdG9yPEluc3Q+IG1fcHJvbG9ndWU7Ci0KKyAgICAKICAgICBCMzo6QmFzaWNCbG9jayogbV9i
bG9jazsKICAgICBib29sIG1faXNSYXJlOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CkBAIC0yODc1
LDYgKzMzODEsMTIgQEAgcHJpdmF0ZToKIAogICAgIFByb2NlZHVyZSYgbV9wcm9jZWR1cmU7CiAg
ICAgQ29kZSYgbV9jb2RlOworCisgICAgQWlyOjpCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5z
ZXJ0aW9uU2V0OworCisgICAgVG1wIG1fZWF4OworICAgIFRtcCBtX2VjeDsKKyAgICBUbXAgbV9l
ZHg7CiB9OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMy
LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiBjbGFzcyBQcm9jZWR1cmU7CiBu
YW1lc3BhY2UgQWlyIHsgY2xhc3MgQ29kZTsgfQogCi0vLyBUaGlzIGxvd2VycyB0aGUgY3VycmVu
dCBCMyBwcm9jZWR1cmUgdG8gYW4gQWlyIGNvZGUuCisvLyBUaGlzIGxvd2VycyB0aGUgY3VycmVu
dCBCMyBwcm9jZWR1cmUgdG8gYW4gQWlyIGNvZGUuIE5vdGUgdGhhdCB0aGlzIGFzc3VtZXMgdGhh
dCB0aGUgcHJvY2VkdXJlIGlzIGluCisvLyBxdWlya3MgbW9kZSwgYnV0IGl0IGRvZXMgbm90IGFz
c2VydCB0aGlzLCB0byBzaW1wbGlmeSBob3cgd2Ugd3JpdGUgdGVzdHMuCiAKIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgbG93ZXJUb0FpcihQcm9jZWR1cmUmKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCwzNiArMjgsMzUgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM01l
bW9yeVZhbHVlSW5saW5lcy5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAog
TWVtb3J5VmFsdWU6On5NZW1vcnlWYWx1ZSgpCiB7CiB9CiAKLXNpemVfdCBNZW1vcnlWYWx1ZTo6
YWNjZXNzQnl0ZVNpemUoKSBjb25zdAorYm9vbCBNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldChp
bnQ2NF90IG9mZnNldCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG9wY29kZSgpKSB7Ci0gICAgY2Fz
ZSBMb2FkOFo6Ci0gICAgY2FzZSBMb2FkOFM6Ci0gICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIHJl
dHVybiAxOwotICAgIGNhc2UgTG9hZDE2WjoKLSAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBT
dG9yZTE2OgotICAgICAgICByZXR1cm4gMjsKLSAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJldHVy
biBzaXplb2ZUeXBlKHR5cGUoKSk7Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmV0dXJuIHNp
emVvZlR5cGUoY2hpbGQoMCktPnR5cGUoKSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIHJl
dHVybiBCMzo6aXNSZXByZXNlbnRhYmxlQXM8aW50MzJfdD4ob2Zmc2V0KSAmJiBpc0xlZ2FsT2Zm
c2V0KHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkpOworfQorCitUeXBlIE1lbW9yeVZhbHVl
OjphY2Nlc3NUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNMb2FkKCkpCisgICAgICAgIHJldHVy
biB0eXBlKCk7CisgICAgLy8gVGhpcyBoYXBwZW5zIHRvIHdvcmsgZm9yIGF0b21pY3MsIHRvby4g
VGhhdCdzIHdoeSBBdG9taWNWYWx1ZSBkb2VzIG5vdCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMuCisg
ICAgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7CiB9CiAKLVdpZHRoIE1lbW9yeVZhbHVlOjphY2Nl
c3NXaWR0aCgpIGNvbnN0CitCYW5rIE1lbW9yeVZhbHVlOjphY2Nlc3NCYW5rKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gd2lkdGhGb3JCeXRlcyhhY2Nlc3NCeXRlU2l6ZSgpKTsKKyAgICByZXR1cm4g
YmFua0ZvclR5cGUoYWNjZXNzVHlwZSgpKTsKK30KKworc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nl
c3NCeXRlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkpOwog
fQogCiB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdApAQCAtNjUsOCArNjQsMTEgQEAgdm9pZCBNZW1vcnlWYWx1ZTo6
ZHVtcE1ldGEoQ29tbWFQcmludGVyJgogICAgIGlmIChtX29mZnNldCkKICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAib2Zmc2V0ID0gIiwgbV9vZmZzZXQpOwogICAgIGlmICgoaXNMb2FkKCkgJiYg
ZWZmZWN0cygpLnJlYWRzICE9IHJhbmdlKCkpCi0gICAgICAgIHx8IChpc1N0b3JlKCkgJiYgZWZm
ZWN0cygpLndyaXRlcyAhPSByYW5nZSgpKSkKKyAgICAgICAgfHwgKGlzU3RvcmUoKSAmJiBlZmZl
Y3RzKCkud3JpdGVzICE9IHJhbmdlKCkpCisgICAgICAgIHx8IGZlbmNlUmFuZ2UoKSkKICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAicmFuZ2UgPSAiLCByYW5nZSgpKTsKKyAgICBpZiAoZmVuY2VS
YW5nZSgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJmZW5jZVJhbmdlID0gIiwgZmVuY2VS
YW5nZSgpKTsKIH0KIAogVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdApAQCAt
NzQsNiArNzYsNjIgQEAgVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAogICAg
IHJldHVybiBuZXcgTWVtb3J5VmFsdWUoKnRoaXMpOwogfQogCisvLyBVc2UgdGhpcyBmb3JtIGZv
ciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQg
aGF2ZSBhIHN1ZmZpeCB0aGF0CisvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgorTWVt
b3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2lu
LCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJh
bmdlIGZlbmNlUmFuZ2UpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBv
cmlnaW4sIHBvaW50ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgLCBtX3JhbmdlKHJh
bmdlKQorICAgICwgbV9mZW5jZVJhbmdlKGZlbmNlUmFuZ2UpCit7CisgICAgaWYgKCFBU1NFUlRf
RElTQUJMRUQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNh
c2UgTG9hZDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAg
ICAgY2FzZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2Fk
MTZTOgorICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU3RvcmU4OgorICAgICAgICBjYXNlIFN0b3JlMTY6CisgICAgICAg
IGNhc2UgU3RvcmU6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBWb2lkKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRz
IHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZh
bHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zm
c2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIDogTWVtb3J5
VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0LCByYW5nZSwgZmVuY2VS
YW5nZSkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtp
bmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhT
OgorICAgICAgICBjYXNlIExvYWQxNlo6CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jl
cy4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZh
bHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFu
Z2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2lu
ZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkK
KyAgICAsIG1fcmFuZ2UocmFuZ2UpCisgICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKK3sK
KyAgICBBU1NFUlQoQjM6OmlzU3RvcmUoa2luZC5vcGNvZGUoKSkpOworfQorCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDEyNyArMjcsODYgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJBaXJB
cmcuaCIKKyNpbmNsdWRlICJCM0JhbmsuaCIKICNpbmNsdWRlICJCM0hlYXBSYW5nZS5oIgogI2lu
Y2x1ZGUgIkIzVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLS8v
IEZJWE1FOiBXZSB3YW50IHRvIGFsbG93IGZlbmNlZCBtZW1vcnkgYWNjZXNzZXMgb24gQVJNLgot
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0OQotCiBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBNZW1vcnlWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBzd2l0
Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgIGNhc2Ug
TG9hZDhTOgotICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAgIGNhc2UgTG9hZDE2UzoKLSAg
ICAgICAgY2FzZSBMb2FkOgotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9y
ZTE2OgotICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBzdGF0aWMgYm9vbCBpc1N0b3JlKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHN3
aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2Fz
ZSBTdG9yZTE2OgotICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBpc0xvYWQoS2luZCBraW5kKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFjY2VwdHMoa2luZCkgJiYgIWlzU3RvcmUoa2luZCk7CisgICAgICAgIHJldHVy
biBpc01lbW9yeUFjY2VzcyhraW5kLm9wY29kZSgpKTsKICAgICB9CiAKICAgICB+TWVtb3J5VmFs
dWUoKTsKIAogICAgIGludDMyX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0K
ICAgICB2b2lkIHNldE9mZnNldChpbnQzMl90IG9mZnNldCkgeyBtX29mZnNldCA9IG9mZnNldDsg
fQorICAgIAorICAgIC8vIFlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHVzaW5nIGxlZ2Fs
IG9mZnNldHMgdW5sZXNzIHlvdSd2ZSBlbnRlcmVkIHF1aXJrcyBtb2RlLgorICAgIGJvb2wgaXNM
ZWdhbE9mZnNldChpbnQzMl90IG9mZnNldCkgY29uc3Q7CisgICAgYm9vbCBpc0xlZ2FsT2Zmc2V0
KGludDY0X3Qgb2Zmc2V0KSBjb25zdDsKKyAgICAKKyAgICAvLyBBIG5lY2Vzc2FyeSBjb25zZXF1
ZW5jZSBvZiBNZW1vcnlWYWx1ZSBoYXZpbmcgYW4gb2Zmc2V0IGlzIHRoYXQgaXQgcGFydGljaXBh
dGVzIGluIGluc3RydWN0aW9uCisgICAgLy8gc2VsZWN0aW9uLiBUaGlzIHRlbGxzIHlvdSBpZiB0
aGlzIHdpbGwgZ2V0IGxvd2VyZWQgdG8gc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgYW4gb2Zmc2V0
bGVzcworICAgIC8vIGFkZHJlc3MuCisgICAgYm9vbCByZXF1aXJlc1NpbXBsZUFkZHIoKSBjb25z
dDsKIAogICAgIGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3Jhbmdl
OyB9CiAgICAgdm9pZCBzZXRSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fcmFuZ2Ug
PSByYW5nZTsgfQorICAgIAorICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHJhbmdlLgorICAg
IGNvbnN0IEhlYXBSYW5nZSYgYWNjZXNzUmFuZ2UoKSBjb25zdCB7IHJldHVybiByYW5nZSgpOyB9
CisgICAgdm9pZCBzZXRBY2Nlc3NSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IHNldFJh
bmdlKHJhbmdlKTsgfQorICAgIAorICAgIGNvbnN0IEhlYXBSYW5nZSYgZmVuY2VSYW5nZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZmVuY2VSYW5nZTsgfQorICAgIHZvaWQgc2V0RmVuY2VSYW5nZShjb25z
dCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fZmVuY2VSYW5nZSA9IHJhbmdlOyB9CisKKyAgICBib29s
IGlzU3RvcmUoKSBjb25zdCB7IHJldHVybiBCMzo6aXNTdG9yZShvcGNvZGUoKSk7IH0KKyAgICBi
b29sIGlzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAg
ICBib29sIGlzU3RvcmUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVm9pZDsgfQotICAgIGJv
b2wgaXNMb2FkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpICE9IFZvaWQ7IH0KKyAgICBib29sIGhh
c0ZlbmNlKCkgY29uc3QgeyByZXR1cm4gISFmZW5jZVJhbmdlKCk7IH0KKyAgICBib29sIGlzRXhv
dGljKCkgY29uc3QgeyByZXR1cm4gaGFzRmVuY2UoKSB8fCBpc0F0b21pYyhvcGNvZGUoKSk7IH0K
IAorICAgIFR5cGUgYWNjZXNzVHlwZSgpIGNvbnN0OworICAgIEJhbmsgYWNjZXNzQmFuaygpIGNv
bnN0OwogICAgIHNpemVfdCBhY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0OworICAgIAogICAgIFdpZHRo
IGFjY2Vzc1dpZHRoKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKENv
bW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGVUYWcs
IEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBpbnQzMl90IG9mZnNldCwgSGVh
cFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSwgQXJndW1lbnRzLi4uIGFyZ3VtZW50
cykKKyAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIGFy
Z3VtZW50cy4uLikKKyAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV9yYW5n
ZShyYW5nZSkKKyAgICAgICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKKyAgICB7CisgICAg
fQorICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOwotCisgICAgCiAg
ICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3Ig
YW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAogICAgIC8vIGRlc2NyaWJl
cyB0aGUgcmV0dXJuZWQgdHlwZSkuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5
cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0g
ICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVy
KQotICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAgICAgLCBtX3JhbmdlKEhlYXBSYW5n
ZTo6dG9wKCkpCi0gICAgewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAg
ICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIExvYWQ6Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIExvYWQ4WjoKLSAgICAgICAg
ICAgIGNhc2UgTG9hZDhTOgotICAgICAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAgICAgICAg
Y2FzZSBMb2FkMTZTOgotICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IEludDMyKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICAg
ICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgICAg
ICBBU1NFUlQodHlwZSA9PSBWb2lkKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CisgICAgTWVtb3J5VmFsdWUoS2luZCwgVHlwZSwg
T3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFu
Z2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgp
KTsKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlw
ZSBpcyBpbXBsaWVkLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwg
VmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBNZW1vcnlWYWx1
ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpCi0gICAgewotICAgIH0KKyAg
ICBNZW1vcnlWYWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNl
dCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5j
ZVJhbmdlID0gSGVhcFJhbmdlKCkpOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVz
LgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVl
LCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENo
ZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpCi0gICAgICAg
ICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSkK
LSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICBzd2l0
Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICAg
ICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVlKiB2YWx1
ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0g
SGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7Cisg
ICAgCiAgICAgaW50MzJfdCBtX29mZnNldCB7IDAgfTsKLSAgICBIZWFwUmFuZ2UgbV9yYW5nZTsK
KyAgICBIZWFwUmFuZ2UgbV9yYW5nZSB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKyAgICBIZWFwUmFu
Z2UgbV9mZW5jZVJhbmdlIHsgSGVhcFJhbmdlKCkgfTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWVJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFs
dWVJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TWVtb3J5VmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckFyZy5oIgorI2luY2x1ZGUgIkIz
QXRvbWljVmFsdWUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2lubGlu
ZSBib29sIE1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0KGludDMyX3Qgb2Zmc2V0KSBjb25zdAor
eworICAgIC8vIE5PVEU6IFRoaXMgaXMgaW5saW5lIGJlY2F1c2UgaXQgY29uc3RhbnQtZm9sZHMg
dG8gdHJ1ZSBvbiB4ODYhCisgICAgCisgICAgLy8gU28gZmFyIG9ubHkgWDg2IGFsbG93cyBleG90
aWMgbG9hZHMgdG8gaGF2ZSBhbiBvZmZzZXQuCisgICAgaWYgKHJlcXVpcmVzU2ltcGxlQWRkcigp
KQorICAgICAgICByZXR1cm4gIW9mZnNldDsKKyAgICAKKyAgICByZXR1cm4gQWlyOjpBcmc6Omlz
VmFsaWRBZGRyRm9ybShvZmZzZXQsIGFjY2Vzc1dpZHRoKCkpOworfQorCitpbmxpbmUgYm9vbCBN
ZW1vcnlWYWx1ZTo6cmVxdWlyZXNTaW1wbGVBZGRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlz
WDg2KCkgJiYgaXNFeG90aWMoKTsKK30KKworaW5saW5lIFdpZHRoIE1lbW9yeVZhbHVlOjphY2Nl
c3NXaWR0aCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChvcGNvZGUoKSkgeworICAgIGNhc2UgTG9h
ZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgU3RvcmU4OgorICAgICAgICByZXR1cm4g
V2lkdGg4OworICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBT
dG9yZTE2OgorICAgICAgICByZXR1cm4gV2lkdGgxNjsKKyAgICBjYXNlIExvYWQ6CisgICAgICAg
IHJldHVybiB3aWR0aEZvclR5cGUodHlwZSgpKTsKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICBy
ZXR1cm4gd2lkdGhGb3JUeXBlKGNoaWxkKDApLT50eXBlKCkpOworICAgIGNhc2UgQXRvbWljV2Vh
a0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6
CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNh
c2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9t
aWNYY2hnOgorICAgICAgICByZXR1cm4gYXM8QXRvbWljVmFsdWU+KCktPmFjY2Vzc1dpZHRoKCk7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIFdpZHRoODsKKyAgICB9Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
MworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1
ZGUgIkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgot
I2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCkBAIC0yMDMsMTIgKzIwMyw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRl
UG9pbnRlci0+aGFzSW50UHRyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSBkZXNpcmVkT2Zmc2V0
KGNhbmRpZGF0ZVBvaW50ZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IUIzOjppc1JlcHJlc2VudGFibGVBczxpbnQzMl90PihzdGF0aWNfY2FzdDxpbnQ2NF90PihvZmZz
ZXQpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6QXJnOjppc1ZhbGlk
QWRkckZvcm0oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQzMl90PihvZmZzZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2lkdGhGb3JCeXRlcyhtZW1vcnlWYWx1ZS0+YWNjZXNzQnl0ZVNpemUoKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9IGRlc2lyZWRPZmZzZXQoY2Fu
ZGlkYXRlUG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
ZW1vcnlWYWx1ZS0+aXNMZWdhbE9mZnNldChvZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYmVzdFBvaW50ZXIpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M05hdGl2ZVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M05hdGl2ZVRyYWl0cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM05hdGl2ZVRyYWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzQmFuay5oIgorI2luY2x1ZGUgIkIz
VHlwZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTmF0aXZlVHJhaXRzOworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50OF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJh
bmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoODsKKyAg
ICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBOYXRpdmVUcmFpdHM8dWludDhfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBH
UDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDg7CisgICAgc3RhdGljIGNv
bnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJh
aXRzPGludDE2X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3Rh
dGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgxNjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0
eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDE2
X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0
IFdpZHRoIHdpZHRoID0gV2lkdGgxNjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50
MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50MzJfdD4geworICAg
IHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lk
dGggPSBXaWR0aDMyOworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czx1aW50MzJfdD4geworICAgIHN0YXRpYyBj
b25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0
aDMyOworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRl
PD4gc3RydWN0IE5hdGl2ZVRyYWl0czxpbnQ2NF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsg
YmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoNjQ7CisgICAg
c3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDY0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
TmF0aXZlVHJhaXRzPHVpbnQ2NF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQ
OworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoNjQ7CisgICAgc3RhdGljIGNv
bnN0IFR5cGUgdHlwZSA9IEludDY0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJh
aXRzPGZsb2F0PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEZQOworICAgIHN0YXRp
YyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoMzI7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlw
ZSA9IEZsb2F0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGRvdWJsZT4g
eworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBGUDsKKyAgICBzdGF0aWMgY29uc3QgV2lk
dGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBEb3VibGU7
Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19K
SVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkocmV2aXNpb24g
MjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTY4LDYgKzY4LDIzIEBAIHN0ZDo6b3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRl
ZENvbXBhcmUoT3AKICAgICB9CiB9CiAKK09wY29kZSBzdG9yZU9wY29kZShCYW5rIGJhbmssIFdp
ZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAoYmFuaykgeworICAgIGNhc2UgR1A6CisgICAgICAg
IHN3aXRjaCAod2lkdGgpIHsKKyAgICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICByZXR1
cm4gU3RvcmU4OworICAgICAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgICAgICByZXR1cm4gU3Rv
cmUxNjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTdG9yZTsKKyAgICAg
ICAgfQorICAgIGNhc2UgRlA6CisgICAgICAgIHJldHVybiBTdG9yZTsKKyAgICB9Cit9CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTI2Myw2ICsyODAs
MzMgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wYwogICAgIGNhc2Ug
U3RvcmU6CiAgICAgICAgIG91dC5wcmludCgiU3RvcmUiKTsKICAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNXZWFrQ0FTIik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgb3V0
LnByaW50KCJBdG9taWNTdHJvbmdDQVMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRv
bWljWGNoZ0FkZDoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnQWRkIik7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgIG91dC5wcmludCgiQXRv
bWljWGNoZ0FuZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnT3I6Cisg
ICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ09yIik7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ1N1YiIpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICBvdXQucHJp
bnQoIkF0b21pY1hjaGdYb3IiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNo
ZzoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnIik7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIERlcGVuZDoKKyAgICAgICAgb3V0LnByaW50KCJEZXBlbmQiKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIG91dC5wcmludCgiV2FzbUFkZHJl
c3MiKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2Rl
LmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShCM19KSVQp
CiAKICNpbmNsdWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC04Miw3
ICs4Myw2IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgTW9kLCAvLyBBbGwgYmV0cyBh
cmUgb2ZmIGFzIHRvIHdoYXQgd2lsbCBoYXBwZW4gd2hlbiB5b3UgZXhlY3V0ZSB0aGlzIGZvciAt
Ml4zMSUtMSBhbmQgeCUwLgogICAgIFVNb2QsCiAKLQogICAgIC8vIFBvbHltb3JwaGljIG5lZ2F0
aW9uLiBOb3RlIHRoYXQgd2Ugb25seSBuZWVkIHRoaXMgZm9yIGZsb2F0aW5nIHBvaW50LCBzaW5j
ZSBpbnRlZ2VyIG5lZ2F0aW9uCiAgICAgLy8gaXMgZXhhY3RseSBsaWtlIFN1YigwLCB4KS4gQnV0
IHRoYXQncyBub3QgdHJ1ZSBmb3IgZmxvYXRpbmcgcG9pbnQuIFN1YigwLCAwKSBpcyAwLCB3aGls
ZQogICAgIC8vIE5lZygwKSBpcyAtMC4gQWxzbywgd2UgY2Fub25pY2FsaXplIFN1YigwLCB4KSBp
bnRvIE5lZyh4KSBpbiBjYXNlIG9mIGludGVnZXJzLgpAQCAtMTYyLDYgKzE2MiwxMDcgQEAgZW51
bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBTdG9yZTE2LAogICAgIC8vIFRoaXMgaXMgYSBwb2x5
bW9ycGhpYyBzdG9yZSBmb3IgSW50MzIsIEludDY0LCBGbG9hdCwgYW5kIERvdWJsZS4KICAgICBT
dG9yZSwKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMg
YSBib29sZWFuLiBNYXkgY2hvb3NlIHRvIGRvIG5vdGhpbmcgYW5kIHJldHVybiBmYWxzZS4gWW91
IGNhbgorICAgIC8vIHVzdWFsbHkgYXNzdW1lIHRoYXQgdGhpcyBpcyBmYXN0ZXIgYW5kIHJlc3Vs
dHMgaW4gbGVzcyBjb2RlIHRoYW4gQXRvbWljU3Ryb25nQ0FTLCB0aG91Z2ggdGhhdCdzCisgICAg
Ly8gbm90IG5lY2Vzc2FyaWx5IHRydWUgb24gSW50ZWwsIGlmIGluc3RydWN0aW9uIHNlbGVjdGlv
biBkb2VzIGl0cyBqb2IuIEltYWdpbmUgdGhhdCB0aGlzIG9wY29kZSBpcworICAgIC8vIGFzIGlm
IHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICAvLyBib29sIEF0b21pY1dlYWtDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1Zh
bHVlLCBUKiBwdHIpCisgICAgLy8geworICAgIC8vICAgICBpZiAoIXJhbmQoKSkKKyAgICAvLyAg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gUmVhbCB3b3JsZCBleGFtcGxlIG9mIHRoaXM6IGNvbnRl
eHQgc3dpdGNoIG9uIEFSTSB3aGlsZSBkb2luZyBDQVMuCisgICAgLy8gICAgIGlmICgqcHRyICE9
IGV4cGVjdGVkVmFsdWUpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gICAg
ICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gfQorICAg
IC8vCisgICAgLy8gTm90ZSB0aGF0IGFsbCBhdG9taWNzIHB1dCB0aGUgcG9pbnRlciBsYXN0IHRv
IGJlIGNvbnNpc3RlbnQgd2l0aCBob3cgbG9hZHMgYW5kIHN0b3JlcyB3b3JrLiBUaGlzCisgICAg
Ly8gaXMgYSBnb29meSB0cmFkaXRpb24sIGJ1dCBpdCdzIGhhcm1sZXNzLCBhbmQgYmV0dGVyIHRo
YW4gYmVpbmcgaW5jb25zaXN0ZW50LgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHdlYWsgQ0FT
IGhhcyBubyBmZW5jaW5nIGd1YXJhbnRlZXMgd2hlbiBpdCBmYWlscy4gVGhpcyBtZWFucyB0aGF0
IHRoZSBmb2xsb3dpbmcKKyAgICAvLyB0cmFuc2Zvcm1hdGlvbiBpcyBhbHdheXMgdmFsaWQ6Cisg
ICAgLy8KKyAgICAvLyBCZWZvcmU6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9t
aWNXZWFrQ0FTKGV4cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczog
VGhlbjojc3VjY2VzcywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQWZ0ZXI6CisgICAgLy8K
KyAgICAvLyAgICAgICAgIEJyYW5jaChFcXVhbChMb2FkKHB0ciksIGV4cGVjdGVkKSkKKyAgICAv
LyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNhdHRlbXB0LCBFbHNlOiNmYWlsCisgICAgLy8gICAg
IEJCI2F0dGVtcHQ6CisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3Rl
ZCwgbmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVs
c2U6I2ZhaWwKKyAgICAvLworICAgIC8vIEJvdGgga2luZHMgb2YgQ0FTIGZvciBub24tY2Fub25p
Y2FsIHdpZHRocyAoV2lkdGg4IGFuZCBXaWR0aDE2KSBpZ25vcmUgdGhlIGlycmVsZXZhbnQgYml0
cyBvZiB0aGUKKyAgICAvLyBpbnB1dC4KKyAgICBBdG9taWNXZWFrQ0FTLAorICAgIAorICAgIC8v
IEF0b21pYyBjb21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBEb2Vz
IG5vdCBoYXZlIHRoZSBub25kZXRlcm1pbmlzbSBvZiBXZWFrQ0FTLgorICAgIC8vIFRoaXMgaXMg
YSBiaXQgbW9yZSBjb2RlIGFuZCBhIGJpdCBzbG93ZXIgaW4gc29tZSBjYXNlcywgdGhvdWdoIG5v
dCBieSBhIGxvdC4gSW1hZ2luZSB0aGF0IHRoaXMKKyAgICAvLyBvcGNvZGUgaXMgYXMgaWYgeW91
IGRpZCB0aGlzIGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIC8vIFQgQXRvbWljU3Ryb25nQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwg
VCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgVCBvbGRWYWx1ZSA9ICpwdHI7CisgICAgLy8g
ICAgIGlmIChvbGRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgKnB0ciA9
IG5ld1ZhbHVlOworICAgIC8vICAgICByZXR1cm4gb2xkVmFsdWUKKyAgICAvLyB9CisgICAgLy8K
KyAgICAvLyBOb3RlIHRoYXQgQXRvbWljV2Vha0NBUyBhbmQgQXRvbWljU3Ryb25nQ0FTIHNvcnQg
b2YgaGF2ZSB0aGlzIGtpbmQgb2YgZXF1aXZhbGVuY2U6CisgICAgLy8KKyAgICAvLyBBdG9taWNX
ZWFrQ0FTKEBleHAsIEBuZXcsIEBwdHIpID09IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhAZXhwLCBA
bmV3LCBAcHRyKSwgQGV4cCkKKyAgICAvLworICAgIC8vIEFzc3VtaW5nIHRoYXQgdGhlIFdlYWtD
QVMgZG9lcyBub3Qgc3B1cmlvdXNseSBmYWlsLCBvZiBjb3Vyc2UuCisgICAgQXRvbWljU3Ryb25n
Q0FTLAorICAgIAorICAgIC8vIEF0b21pY2FsbHkgX19fIGEgbWVtb3J5IGxvY2F0aW9uIGFuZCBy
ZXR1cm4gdGhlIG9sZCB2YWx1ZS4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0g
QXRvbWljWGNoZ19fXyhAb3BlcmFuZCwgQHB0cikKKyAgICAvLworICAgIC8vIEZvciBub24tY2Fu
b25pY2FsIHdpZHRocyAoV2lkdGg4IGFuZCBXaWR0aDE2KSwgdGhlc2UgcmV0dXJuIHNpZ24tZXh0
ZW5kZWQgcmVzdWx0cyBhbmQgaWdub3JlIHRoZQorICAgIC8vIGlycmVsZXZhbnQgYml0cyBvZiB0
aGVpciBpbnB1dHMuCisgICAgQXRvbWljWGNoZ0FkZCwKKyAgICBBdG9taWNYY2hnQW5kLAorICAg
IEF0b21pY1hjaGdPciwKKyAgICBBdG9taWNYY2hnU3ViLAorICAgIEF0b21pY1hjaGdYb3IsCisg
ICAgCisgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBoYXZlIEF0b21pY1hjaGdOZWcgYW5k
IEF0b21pY1hjaGdOb3QuCisgICAgCisgICAgLy8gQXRvbWljYWxseSBleGNoYW5nZSBhIHZhbHVl
IHdpdGggYSBtZW1vcnkgbG9jYXRpb24uIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1
ZSA9IEF0b21pY1hjaGcoQG5ld1ZhbHVlLCBAcHRyKQorICAgIEF0b21pY1hjaGcsCisgICAgCisg
ICAgLy8gSW50cm9kdWNlIGFuIGludmlzaWJsZSBkZXBlbmRlbmN5IGZvciBibG9ja2luZyBtb3Rp
b24gb2YgbG9hZHMgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuIFN5bnRheDoKKyAgICAvLwor
ICAgIC8vIEByZXN1bHQgPSBEZXBlbmQoQHBoYW50b20pCisgICAgLy8KKyAgICAvLyBUaGlzIGlz
IGV2ZW50dWFsbHkgY29kZWdlbmVyYXRlZCB0byBoYXZlIGxvY2FsIHNlbWFudGljcyBhcyBpZiB3
ZSBkaWQ6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gJDAKKyAgICAvLworICAgIC8vIEJ1dCBp
dCBlbnN1cmVzIHRoYXQgdGhlIHVzZXJzIG9mIEByZXN1bHQgY2Fubm90IGV4ZWN1dGUgdW50aWwg
QHBoYW50b20gaXMgY29tcHV0ZWQuCisgICAgLy8KKyAgICAvLyBUaGUgY29tcGlsZXIgaXMgbm90
IGFsbG93ZWQgdG8gcmVhc29uIGFib3V0IHRoZSBmYWN0IHRoYXQgRGVwZW5kIGNvZGVnZW5lcmF0
ZXMgdGhpcyB3YXkuIEFueSBraW5kCisgICAgLy8gb2YgdHJhbnNmb3JtYXRpb24gb3IgYW5hbHlz
aXMgdGhhdCByZWxpZXMgb24gdGhlIGluc2lnaHQgdGhhdCBEZXBlbmQgaXMgcmVhbGx5IHplcm8g
aXMgdW5zb3VuZCwKKyAgICAvLyBiZWNhdXNlIGl0IHVubG9ja3MgcmVvcmRlcmluZyBvZiB1c2Vy
cyBvZiBAcmVzdWx0IGFuZCBAcGhhbnRvbS4KKyAgICAvLworICAgIC8vIE9uIFg4NiwgdGhpcyBp
cyBsb3dlcmVkIHRvIGEgbG9hZC1sb2FkIGZlbmNlIGFuZCBAcmVzdWx0IHVzZXMgQHBoYW50b20g
ZGlyZWN0bHkuCisgICAgLy8KKyAgICAvLyBPbiBBUk0sIHRoaXMgaXMgbG93ZXJlZCBhcyBpZiBs
aWtlOgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9IEJpdFhvcihAcGhhbnRvbSwgQHBoYW50b20p
CisgICAgLy8KKyAgICAvLyBFeGNlcHQgdGhhdCB0aGUgY29tcGlsZXIgbmV2ZXIgZ2V0cyBhbiBv
cHBvcnR1bml0eSB0byBzaW1wbGlmeSBvdXQgdGhlIEJpdFhvci4KKyAgICBEZXBlbmQsCiAKICAg
ICAvLyBUaGlzIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIGFkZHJlc3Mgb2YgYSBXYXNt
IG1lbW9yeSBvcGVyYXRpb24uIEl0IHRha2VzIGFuIEludFB0cgogICAgIC8vIGFuZCBhIHBpbm5l
ZCByZWdpc3RlciB0aGVuIGNvbXB1dGVzIHRoZSBhcHByb3ByaWF0ZSBJbnRQdHIgYWRkcmVzcy4g
Rm9yIHRoZSB1c2UtY2FzZSBvZgpAQCAtMzAxLDYgKzQwMiwxMTIgQEAgaW5saW5lIGJvb2wgaXNE
ZWZpbml0ZWx5VGVybWluYWwoT3Bjb2RlIAogICAgIH0KIH0KIAoraW5saW5lIGJvb2wgaXNMb2Fk
KE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4
WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2FkMTZT
OgorICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNTdG9yZShPcGNv
ZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBTdG9yZTg6Cisg
ICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBi
b29sIGlzTG9hZFN0b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsK
KyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6Cisg
ICAgY2FzZSBMb2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFN0b3JlODoKKyAgICBj
YXNlIFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wg
aXNBdG9taWMoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNh
c2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0
b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNo
Z09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6Cisg
ICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY0NB
UyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9t
aWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxp
bmUgYm9vbCBpc0F0b21pY1hjaGcoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29k
ZSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6Cisg
ICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2Ug
QXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGlu
ZSBib29sIGlzTWVtb3J5QWNjZXNzKE9wY29kZSBvcGNvZGUpCit7CisgICAgcmV0dXJuIGlzQXRv
bWljKG9wY29kZSkgfHwgaXNMb2FkU3RvcmUob3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZSBz
aWduRXh0ZW5kT3Bjb2RlKFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAg
ICBjYXNlIFdpZHRoODoKKyAgICAgICAgcmV0dXJuIFNFeHQ4OworICAgIGNhc2UgV2lkdGgxNjoK
KyAgICAgICAgcmV0dXJuIFNFeHQxNjsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gT29wczsKKyAgICB9Cit9CisKK0pT
X0VYUE9SVF9QUklWQVRFIE9wY29kZSBzdG9yZU9wY29kZShCYW5rIGJhbmssIFdpZHRoIHdpZHRo
KTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCShyZXZpc2lvbiAyMTMyNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDIsNiArMjAyLDggQEAgdm9pZCBQcm9jZWR1cmU6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgYwogICAgICAgICB9CiAgICAgICAgIGRhdGFMb2coIiAgICAiLCBkZWVwRHVtcCgqdGhp
cywgdmFsdWUpLCAiXG4iKTsKICAgICB9CisgICAgaWYgKGhhc1F1aXJrcygpKQorICAgICAgICBv
dXQucHJpbnQoIkhhcyBRdWlya3M6IFRydWVcbiIpOwogICAgIGlmICh2YXJpYWJsZXMoKS5zaXpl
KCkpIHsKICAgICAgICAgb3V0LnByaW50KCJWYXJpYWJsZXM6XG4iKTsKICAgICAgICAgZm9yIChW
YXJpYWJsZSogdmFyaWFibGUgOiB2YXJpYWJsZXMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1Byb2NlZHVyZS5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQcm9jZWR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNyw2ICsxMTcsNyBA
QCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50KE9yaWdpbiwgVHlwZSwgaW50NjRf
dCB2YWx1ZSk7CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50KFZhbHVlKiwgaW50NjRfdCB2YWx1
ZSk7CiAKKyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAg
IFZhbHVlKiBhZGRCb3R0b20oT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogYWRkQm90dG9tKFZh
bHVlKik7CiAKQEAgLTE5NSw2ICsxOTYsMTcgQEAgcHVibGljOgogICAgIC8vIGFsaXZlLiBHcmVh
dCBmb3IgY29tcGlsZXItZ2VuZXJhdGVkIGRhdGEgc2VjdGlvbnMsIGxpa2Ugc3dpdGNoIGp1bXAg
dGFibGVzIGFuZCBjb25zdGFudCBwb29scy4KICAgICAvLyBUaGlzIHJldHVybnMgbWVtb3J5IHRo
YXQgaGFzIGJlZW4gemVyby1pbml0aWFsaXplZC4KICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
KiBhZGREYXRhU2VjdGlvbihzaXplX3QpOworICAgIAorICAgIC8vIFNvbWUgb3BlcmF0aW9ucyBh
cmUgc3BlY2lmaWVkIGluIEIzIElSIHRvIGJlaGF2ZSBvbmUgd2F5IGJ1dCBvbiB0aGlzIGdpdmVu
IENQVSB0aGV5IGJlaGF2ZSBhCisgICAgLy8gZGlmZmVyZW50IHdheS4gV2hlbiB0cnVlLCB0aG9z
ZSBCMyBJUiBvcHMgc3dpdGNoIHRvIGJlaGF2aW5nIHRoZSBDUFUgd2F5LCBhbmQgdGhlIG9wdGlt
aXplciBtYXkKKyAgICAvLyBzdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIGl0LgorICAgIC8vCisg
ICAgLy8gT25lIHdheSB0byB0aGluayBvZiBpdCBpcyBsaWtlIHRoaXMuIEltYWdpbmUgdGhhdCB5
b3UgZmluZCB0aGF0IHRoZSBjbGVhbmVzdCB3YXkgb2YgbG93ZXJpbmcKKyAgICAvLyBzb21ldGhp
bmcgaW4gbG93ZXJNYWNyb3MgaXMgdG8gdW5jb25kaXRpb25hbGx5IHJlcGxhY2Ugb25lIG9wY29k
ZSB3aXRoIGFub3RoZXIuIFRoaXMgaXMgYSBzaG9ydGN1dAorICAgIC8vIHdoZXJlIHlvdSBpbnN0
ZWFkIGtlZXAgdGhlIHNhbWUgb3Bjb2RlLCBidXQgcmVseSBvbiB0aGUgb3Bjb2RlJ3MgbWVhbmlu
ZyBjaGFuZ2VzIG9uY2UgbG93ZXJNYWNyb3MKKyAgICAvLyBzZXRzIGhhc1F1aXJrcy4KKyAgICBi
b29sIGhhc1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUXVpcmtzOyB9CisgICAgdm9pZCBz
ZXRIYXNRdWlya3MoYm9vbCB2YWx1ZSkgeyBtX2hhc1F1aXJrcyA9IHZhbHVlOyB9CiAKICAgICBP
cGFxdWVCeXByb2R1Y3RzJiBieXByb2R1Y3RzKCkgeyByZXR1cm4gKm1fYnlwcm9kdWN0czsgfQog
CkBAIC0yNTIsNiArMjY0LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lk
KFByaW50U3RyZWFtJiwgT3JpZ2luKT4+IG1fb3JpZ2luUHJpbnRlcjsKICAgICBjb25zdCB2b2lk
KiBtX2Zyb250ZW5kRGF0YTsKICAgICBQQ1RvT3JpZ2luTWFwIG1fcGNUb09yaWdpbk1hcDsKKyAg
ICBib29sIG1faGFzUXVpcmtzIHsgZmFsc2UgfTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5jcHAJKHJldmlzaW9u
IDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAi
QjNEb21pbmF0b3JzLmgiCisjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNW
YWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKQEAgLTg5LDYgKzkwLDIz
IEBAIGJvb2wgUHVyZUNTRTo6cHJvY2VzcyhWYWx1ZSogdmFsdWUsIERvbWkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK2Jvb2wgcHVyZUNTRShQcm9jZWR1cmUmIHByb2MpCit7CisgICAgUGhhc2VT
Y29wZSBwaGFzZVNjb3BlKHByb2MsICJwdXJlQ1NFIik7CisgICAgCisgICAgRG9taW5hdG9ycyYg
ZG9taW5hdG9ycyA9IHByb2MuZG9taW5hdG9ycygpOworICAgIFB1cmVDU0UgcHVyZUNTRTsKKyAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBwcm9j
LmJsb2Nrc0luUHJlT3JkZXIoKSkgeworICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9j
aykgeworICAgICAgICAgICAgcmVzdWx0IHw9IHZhbHVlLT5wZXJmb3JtU3Vic3RpdHV0aW9uKCk7
CisgICAgICAgICAgICByZXN1bHQgfD0gcHVyZUNTRS5wcm9jZXNzKHZhbHVlLCBkb21pbmF0b3Jz
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYg
KzU2LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFZhbHVlS2V5LCBNYXRjaGVzPiBtX21hcDsK
IH07CiAKK2Jvb2wgcHVyZUNTRShQcm9jZWR1cmUmKTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjgsMTIgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAi
QjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNs
dWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNDb21wdXRlRGl2aXNpb25N
YWdpYy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9u
U2V0SW5saW5lcy5oIgotI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01l
bW9yeVZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1ZGUg
IkIzUGhpQ2hpbGRyZW4uaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKQEAgLTYw
Miw3ICs2MDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBicmVh
azsKLQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmVnOgogICAgICAgICAgICAgLy8gVHVy
biB0aGlzOiBOZWcoY29uc3RhbnQpCiAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IC1jb25zdGFu
dApAQCAtMTI5NSw2ICsxMjk2LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKCFtX3Byb2MuaGFzUXVpcmtzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBU
dXJuIHRoaXM6IFNFeHQ4KEF0b21pY1hjaGdfX18pCisgICAgICAgICAgICAgICAgLy8gSW50byB0
aGlzOiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAgICAgaWYgKGlzQXRvbWljWGNoZyhtX3Zh
bHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgICAgICYmIG1fdmFsdWUt
PmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+YWNjZXNzV2lkdGgoKSA9PSBXaWR0aDgpIHsK
KyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgw
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU0V4dDE2OgpAQCAt
MTM0Myw2ICsxMzU0LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFtX3By
b2MuaGFzUXVpcmtzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNFeHQxNihB
dG9taWNYY2hnX19fKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19f
XworICAgICAgICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9w
Y29kZSgpKQorICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRv
bWljVmFsdWU+KCktPmFjY2Vzc1dpZHRoKCkgPT0gV2lkdGgxNikgeworICAgICAgICAgICAgICAg
ICAgICByZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTRXh0MzI6CkBAIC0yMTAxLDIyICsyMTIyLDI1
IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChtX3ZhbHVlLT5udW1DaGlsZHJlbigpID49IDIp
OwogICAgICAgICAKICAgICAgICAgLy8gTGVhdmUgaXQgYWxvbmUgaWYgdGhlIHJpZ2h0IGNoaWxk
IGlzIGEgY29uc3RhbnQuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNDb25zdGFu
dCgpKQorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKQorICAgICAg
ICAgICAgfHwgbV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUykK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGls
ZCgwKS0+aXNDb25zdGFudCgpKSB7CisgICAgICAgIGF1dG8gc3dhcCA9IFsmXSAoKSB7CiAgICAg
ICAgICAgICBzdGQ6OnN3YXAobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsK
ICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxk
KDApLT5pc0NvbnN0YW50KCkpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOworICAgICAgICAK
KyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdD
QVMpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOworICAgICAgICAKICAgICAgICAgLy8gU29y
dCB0aGUgb3BlcmFuZHMuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGNhbm9uaWNhbGl6YXRpb24uIFdl
IHVzZSB0aGUgaW5kZXggaW5zdGVhZCBvZgogICAgICAgICAvLyB0aGUgYWRkcmVzcyB0byBtYWtl
IHRoaXMgYXQgbGVhc3Qgc2xpZ2h0bHkgZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAgaWYgKG1fdmFs
dWUtPmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4KCkpIHsKLSAg
ICAgICAgICAgIHN0ZDo6c3dhcChtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkp
OwotICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmluZGV4KCkgPiBtX3ZhbHVl
LT5jaGlsZCgxKS0+aW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7CiAgICAgfQog
CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBhIGZvcndhcmQgYW5hbHlzaXMu
IEluc3RlYWQsIHdlIHVzZXMgYSBib3VuZGVkLXNlYXJjaCBiYWNrd2FyZHMKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJCM0FyZ3Vt
ZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNC
YXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUg
IkIzTWVtb3J5VmFsdWUuaCIKQEAgLTM0Niw2ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBw
b2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0Fj
Y2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIExv
YWQ6CkBAIC0zNTMsNiArMzU1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgp
ICE9IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5j
ZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFN0b3JlODoKQEAgLTM2Miw2
ICszNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxk
KDApLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZv
aWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1
ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFN0b3JlOgpAQCAtMzY5LDggKzM3Myw0
OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVu
KCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAg
ICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgw
KS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQo
MiktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0
YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2lu
ZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCks
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUo
KSA9PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMiktPnR5cGUoKSA9PSBwb2lu
dGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRv
bWljKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoK
KyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWlj
WGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgY2Fz
ZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICAg
ICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkg
PT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRl
clR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21p
Yyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIERlcGVuZDoKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9
PSAxLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50
eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdhc21BZGRyZXNz
OgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygp
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1D
aGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CkBAIC01MzcsNiArNTgyLDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICB2
b2lkIHZhbGlkYXRlRmVuY2UoVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgTWVtb3J5VmFs
dWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgaWYgKG1lbW9y
eS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIFZBTElEQVRFKG1lbW9yeS0+YWNjZXNzQmFuaygp
ID09IEdQLCAoIkZlbmNlIGF0ICIsICptZW1vcnkpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB2
YWxpZGF0ZUF0b21pYyhWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSog
YXRvbWljID0gdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAKKyAgICAgICAgVkFM
SURBVEUoYmVzdFR5cGUoR1AsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkgPT0gYXRvbWljLT5hY2Nl
c3NUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgfQogCiAgICAgdm9pZCB2YWxpZGF0ZVN0
YWNrQWNjZXNzKFZhbHVlKiB2YWx1ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsdWUuY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5B
QkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUg
IkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQjNCb3R0b21Qcm92aWRlci5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpAQCAt
NTEwLDYgKzUxMSw3IEBAIGJvb2wgVmFsdWU6OnJldHVybnNCb29sKCkgY29uc3QKICAgICBjYXNl
IEFib3ZlRXF1YWw6CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1YWxPclVub3Jk
ZXJlZDoKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IGNhc2UgUGhpOgogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBzdG9yeSBoZXJl
LgpAQCAtNTg5LDYgKzU5MSw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAg
IGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgY2FzZSBT
ZWxlY3Q6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGl2Ogog
ICAgIGNhc2UgVURpdjoKQEAgLTYwMCwxNiArNjAzLDQ0IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVj
dHMoKSBjb25zdAogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgTG9hZDE2WjoKICAgICBjYXNl
IExvYWQxNlM6Ci0gICAgY2FzZSBMb2FkOgotICAgICAgICByZXN1bHQucmVhZHMgPSBhczxNZW1v
cnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIExvYWQ6IHsKKyAgICAgICAgY29uc3QgTWVt
b3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQucmVh
ZHMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsK
KyAgICAgICAgICAgIHJlc3VsdC53cml0ZXMgPSBtZW1vcnktPmZlbmNlUmFuZ2UoKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0LmNv
bnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBT
dG9yZTg6CiAgICAgY2FzZSBTdG9yZTE2OgotICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJlc3Vs
dC53cml0ZXMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIFN0b3JlOiB7
CisgICAgICAgIGNvbnN0IE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsK
KyAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1l
bW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5m
ZW5jZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOworICAgICAgICB9
CisgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NB
UzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAg
IGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0
b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgIGNvbnN0IEF0b21p
Y1ZhbHVlKiBhdG9taWMgPSBhczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRz
ID0gYXRvbWljLT5yYW5nZSgpIHwgYXRvbWljLT5mZW5jZVJhbmdlKCk7CisgICAgICAgIHJlc3Vs
dC53cml0ZXMgPSBhdG9taWMtPnJhbmdlKCkgfCBhdG9taWMtPmZlbmNlUmFuZ2UoKTsKKyAgICAg
ICAgaWYgKGF0b21pYy0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRy
dWU7CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKICAgICAgICAgYnJl
YWs7CisgICAgfQogICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bp
bm5lZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpAQCAtNjE3LDE4ICs2NDgsNyBAQCBFZmZlY3Rz
IFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICAgICAgY29uc3QgRmVuY2VWYWx1ZSogZmVuY2Ug
PSBhczxGZW5jZVZhbHVlPigpOwogICAgICAgICByZXN1bHQucmVhZHMgPSBmZW5jZS0+cmVhZDsK
ICAgICAgICAgcmVzdWx0LndyaXRlcyA9IGZlbmNlLT53cml0ZTsKLSAgICAgICAgCi0gICAgICAg
IC8vIFByZXZlbnQga2lsbGluZyBvZiBmZW5jZXMgdGhhdCBjbGFpbSBub3QgdG8gd3JpdGUgYW55
dGhpbmcuIEl0J3MgYSBiaXQgd2VpcmQgdGhhdCB3ZSB1c2UKLSAgICAgICAgLy8gbG9jYWwgc3Rh
dGUgYXMgdGhlIHdheSB0byBkbyB0aGlzLCBidXQgaXQgaGFwcGVucyB0byB3b3JrOiB3ZSBtdXN0
IGFzc3VtZSB0aGF0IHdlIGNhbm5vdAotICAgICAgICAvLyBraWxsIHdyaXRlc0xvY2FsU3RhdGUg
dW5sZXNzIHdlIHVuZGVyc3RhbmRzIGV4YWN0bHkgd2hhdCB0aGUgaW5zdHJ1Y3Rpb24gaXMgZG9p
bmcgKGxpa2UKLSAgICAgICAgLy8gdGhlIHdheSB0aGF0IGZpeFNTQSB1bmRlcnN0YW5kcyBTZXQv
R2V0IGFuZCB0aGUgd2F5IHRoYXQgcmVkdWNlU3RyZW5ndGggYW5kIG90aGVycwotICAgICAgICAv
LyB1bmRlcnN0YW5kIFVwc2lsb24pLiBUaGlzIHdvdWxkIG9ubHkgYmVjb21lIGEgcHJvYmxlbSBp
ZiB3ZSBoYWQgc29tZSBhbmFseXNpcyB0aGF0IHdhcwotICAgICAgICAvLyBsb29raW5nIHRvIHVz
ZSB0aGUgd3JpdGVzTG9jYWxTdGF0ZSBiaXQgdG8gaW52YWxpZGF0ZSBhIENTRSBvdmVyIGxvY2Fs
IHN0YXRlIG9wZXJhdGlvbnMuCi0gICAgICAgIC8vIFRoZW4gYSBGZW5jZSB3b3VsZCBsb29rIGJs
b2NrLCBzYXksIHRoZSBlbGltaW5hdGlvbiBvZiBhIHJlZHVuZGFudCBHZXQuIEJ1dCBpdCBsaWtl
Ci0gICAgICAgIC8vIHRoYXQncyBub3QgYXQgYWxsIGhvdyBvdXIgb3B0aW1pemF0aW9ucyBmb3Ig
U2V0L0dldC9VcHNpbG9uL1BoaSB3b3JrIC0gdGhleSBncm9rIHRoZWlyCi0gICAgICAgIC8vIG9w
ZXJhdGlvbnMgZGVlcGx5IGVub3VnaCB0aGF0IHRoZXkgaGF2ZSBubyBuZWVkIHRvIGNoZWNrIHRo
aXMgYml0IC0gc28gdGhpcyBjaGVhdCBpcwotICAgICAgICAvLyBmaW5lLgotICAgICAgICByZXN1
bHQud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENDYWxsOgpAQCAtNjk0LDYgKzcxNCw3
IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2Fz
ZSBCaXR3aXNlQ2FzdDoKICAgICBjYXNlIE5lZzoKKyAgICBjYXNlIERlcGVuZDoKICAgICAgICAg
cmV0dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgpLCBjaGlsZCgwKSk7CiAgICAgY2FzZSBBZGQ6
CiAgICAgY2FzZSBTdWI6CkBAIC03NDYsMTIgKzc2NywxNiBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5
KCkgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgVmFsdWU6OnBlcmZvcm1TdWJzdGl0dXRpb24oKQor
Ym9vbCBWYWx1ZTo6cGVyZm9ybVN1YnN0aXR1dGlvbigpCiB7CisgICAgYm9vbCByZXN1bHQgPSBm
YWxzZTsKICAgICBmb3IgKFZhbHVlKiYgY2hpbGQgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgIHdo
aWxlIChjaGlsZC0+b3Bjb2RlKCkgPT0gSWRlbnRpdHkpCisgICAgICAgIHdoaWxlIChjaGlsZC0+
b3Bjb2RlKCkgPT0gSWRlbnRpdHkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAg
ICAgICAgICBjaGlsZCA9IGNoaWxkLT5jaGlsZCgwKTsKKyAgICAgICAgfQogICAgIH0KKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiBib29sIFZhbHVlOjppc0ZyZWUoKSBjb25zdApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxMSBA
QCBwdWJsaWM6CiAgICAgCiAgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KS5vcGNvZGUoKTsgfQogICAgIAorICAgIC8vIE5vdGUgdGhhdCB0aGUga2luZCBpcyBtZWFudCB0
byBiZSBpbW11dGFibGUuIERvIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHRoaXMgaXMgc2FmZS4g
SXQncyBub3QKKyAgICAvLyB1c3VhbGx5IHNhZmUuCisgICAgdm9pZCBzZXRLaW5kVW5zYWZlbHko
S2luZCBraW5kKSB7IG1fa2luZCA9IGtpbmQ7IH0KKyAgICB2b2lkIHNldE9wY29kZVVuc2FmZWx5
KE9wY29kZSBvcGNvZGUpIHsgbV9raW5kLnNldE9wY29kZShvcGNvZGUpOyB9CisgICAgCiAgICAg
Ly8gSXQncyBnb29kIHByYWN0aWNlIHRvIG1pcnJvciBLaW5kIG1ldGhvZHMgaGVyZSwgc28geW91
IGNhbiBzYXkgdmFsdWUtPmlzQmxhaCgpCiAgICAgLy8gaW5zdGVhZCBvZiB2YWx1ZS0+a2luZCgp
LmlzQmxhaCgpLgogICAgIGJvb2wgaXNDaGlsbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKS5pc0No
aWxsKCk7IH0KQEAgLTEwNyw2ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAgLy8gdmFsdWVzIHdpdGgg
SWRlbnRpdGllcyBvbiBib3R0b20gY29uc3RhbnRzLiBGb3IgdGhpcyByZWFzb24sIHRoaXMgdGFr
ZXMgYSBjYWxsYmFjayB0aGF0IGlzCiAgICAgLy8gcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGJv
dHRvbXMuIFRoZXJlJ3MgYSB1dGlsaXR5IGZvciB0aGlzLCBzZWUgQjNCb3R0b21Qcm92aWRlci5o
LiBZb3UKICAgICAvLyBjYW4gYWxzbyBhY2Nlc3MgdGhhdCB1dGlsaXR5IHVzaW5nIHJlcGxhY2VX
aXRoQm90dG9tKEluc2VydGlvblNldCYsIHNpemVfdCkuCisgICAgLy8KKyAgICAvLyBZb3UncmUg
Z3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJv
dHRvbVByb3ZpZGVyPgogICAgIHZvaWQgcmVwbGFjZVdpdGhCb3R0b20oY29uc3QgQm90dG9tUHJv
dmlkZXImKTsKICAgICAKQEAgLTI1Niw3ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWFrZXMg
c3VyZSB0aGF0IG5vbmUgb2YgdGhlIGNoaWxkcmVuIGFyZSBJZGVudGl0eSdzLiBJZiBhIGNoaWxk
IHBvaW50cyB0byBJZGVudGl0eSwgdGhpcyB3aWxsCiAgICAgLy8gcmVwb2ludCBpdCBhdCB0aGUg
SWRlbnRpdHkncyBjaGlsZC4gRm9yIHNpbXBsaWNpdHksIHRoaXMgd2lsbCBmb2xsb3cgYXJiaXRy
YXJpbHkgbG9uZyBjaGFpbnMKICAgICAvLyBvZiBJZGVudGl0eSdzLgotICAgIHZvaWQgcGVyZm9y
bVN1YnN0aXR1dGlvbigpOworICAgIGJvb2wgcGVyZm9ybVN1YnN0aXR1dGlvbigpOwogICAgIAog
ICAgIC8vIEZyZWUgdmFsdWVzIGFyZSB0aG9zZSB3aG9zZSBwcmVzZW5jZSBpcyBndWFyYW50ZWVk
IG5vdCB0byBodXJ0IGNvZGUuIFdlIGNvbnNpZGVyIGNvbnN0YW50cywKICAgICAvLyBJZGVudGl0
aWVzLCBhbmQgTm9wcyB0byBiZSBmcmVlLiBDb25zdGFudHMgYXJlIGZyZWUgYmVjYXVzZSB3ZSBo
b2lzdCB0aGVtIHRvIGFuIG9wdGltYWwgcGxhY2UuCkBAIC0zMjEsNiArMzI4LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBJVG9GOgogICAgICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAgICAg
ICBjYXNlIEJyYW5jaDoKKyAgICAgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkobnVtQXJncyAhPSAxKSkKICAgICAgICAgICAgICAgICBiYWRLaW5kKGtpbmQsIG51bUFy
Z3MpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNXaWR0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lk
dGguY3BwCShyZXZpc2lvbiAyMTMyNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNX
aWR0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDM4IEBACiAKICNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KIAorbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK1R5
cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRo
KSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgY2FzZSBXaWR0aDE2OgorICAgIGNhc2UgV2lkdGgz
MjoKKyAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAg
ICByZXR1cm4gSW50MzI7CisgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICByZXR1cm4gRmxv
YXQ7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIFZvaWQ7CisgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICBzd2l0Y2ggKGJh
bmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJldHVybiBJbnQ2NDsKKyAgICAg
ICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBEb3VibGU7CisgICAgICAgIH0KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFZvaWQ7Cisg
ICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFZvaWQ7
Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCiBuYW1lc3BhY2UgV1RGIHsKIAogdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QjM6OldpZHRoIHdpZHRoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCShyZXZpc2lvbiAyMTMyNjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2
ICs2MiwxOCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JUeXBlKFR5cGUgdHlwZSkKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAoraW5saW5lIFdpZHRoIGNhbm9uaWNhbFdpZHRoKFdpZHRo
IHdpZHRoKQoreworICAgIHJldHVybiBzdGQ6Om1heChXaWR0aDMyLCB3aWR0aCk7Cit9CisKK2lu
bGluZSBib29sIGlzQ2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgpCit7CisgICAgcmV0dXJuIHdp
ZHRoID49IFdpZHRoMzI7Cit9CisKK1R5cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0
aCk7CisKIGlubGluZSBXaWR0aCBjb25zZXJ2YXRpdmVXaWR0aChCYW5rIGJhbmspCiB7CiAgICAg
cmV0dXJuIGJhbmsgPT0gR1AgPyBwb2ludGVyV2lkdGgoKSA6IFdpZHRoNjQ7CkBAIC05Myw2ICsx
MDUsMjAgQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yQnl0ZXModW5zaWduZWQgYnl0ZQogICAgIH0K
IH0KIAoraW5saW5lIHVpbnQ2NF90IG1hc2soV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3
aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDAw
MGZmbGx1OworICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAw
ZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwZmZm
ZmZmZmZsbHU7CisgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICByZXR1cm4gMHhmZmZmZmZmZmZm
ZmZmZmZmbGx1OworICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVz
cGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9u
IDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWlyVmFsaWRhdGUuaCIKICNpbmNs
dWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNsdWRlICJCM0FyZ3Vt
ZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNC
YXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgogI2luY2x1ZGUg
IkIzQ29tcGlsYXRpb24uaCIKQEAgLTQ0LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJCM01hdGhFeHRy
YXMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNNb3ZlQ29uc3Rh
bnRzLmgiCisjaW5jbHVkZSAiQjNOYXRpdmVUcmFpdHMuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVy
ZS5oIgogI2luY2x1ZGUgIkIzUmVkdWNlU3RyZW5ndGguaCIKICNpbmNsdWRlICJCM1Nsb3RCYXNl
VmFsdWUuaCIKQEAgLTI5Nyw2ICsyOTksMjQgQEAgdm9pZCB0ZXN0TG9hZDQyKCkKICAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gNDIpOwogfQogCit2b2lkIHRlc3RMb2FkQWNx
NDIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgaW50IHggPSA0MjsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZ4KSwKKyAgICAgICAgICAgIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0
MikpKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQo
KSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICBDSEVD
SyhpbnZva2U8aW50PigqY29kZSkgPT0gNDIpOworfQorCiB2b2lkIHRlc3RMb2FkV2l0aE9mZnNl
dEltcGwoaW50MzJfdCBvZmZzZXQ2NCwgaW50MzJfdCBvZmZzZXQzMikKIHsKICAgICB7CkBAIC01
NzQ4LDYgKzU3NjgsMzUgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkMzIoaW50IGFtb3VudCkKICAg
ICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKIH0KIAordm9pZCB0ZXN0U3RvcmVSZWxBZGRM
b2FkQWNxMzIoaW50IGFtb3VudCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCBzbG90ID0gMzc7CisgICAgQ29u
c3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIElu
dDMyLCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwK
KyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02
NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQorICAgIENIRUNL
KCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFt
b3VudCk7Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTMyKGludCBhbW91bnQpCiB7CiAg
ICAgUHJvY2VkdXJlIHByb2M7CkBAIC01NzkyLDYgKzU4NDEsNzQgQEAgdm9pZCB0ZXN0U3RvcmVB
ZGRMb2FkOChpbnQgYW1vdW50LCBCMzo6TwogICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQp
OwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KGludCBhbW91bnQsIEIzOjpPcGNv
ZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDhfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQ
dHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAg
ICAgIHByb2MsIFN0b3JlOCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2Rl
LCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAg
ICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgp
KSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQorICAgIENIRUNLKCFp
bnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3Vu
dCk7Cit9CisKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkRmVuY2VMb2FkQWNxOChpbnQgYW1vdW50LCBC
Mzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQ4X3Qgc2xvdCA9IDM3OworICAg
IENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICBWYWx1ZSogbG9hZGVkVmFsdWUgPSByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4o
KSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgUGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4o
cHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTgoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMHhiZWVmKSwgJnNsb3QpOworICAgICAgICB9KTsKKyAgICBwYXRjaHBv
aW50LT5lZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMu
ZmVuY2UgPSB0cnVlOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAg
IHByb2MsIFN0b3JlOCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgbG9hZGVkVmFs
dWUsCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
KSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNB
Uk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7Cisg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQorICAgIENI
RUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyAr
IGFtb3VudCk7Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTgoaW50IGFtb3VudCwgQjM6
Ok9wY29kZSBsb2FkT3Bjb2RlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTgzNiw2ICs1
OTUzLDM1IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZDE2KGludCBhbW91bnQsIEIzOjoKICAgICBD
SEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKIH0KIAordm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2Fk
QWNxMTYoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50
MTZfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlMTYsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBS
YW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0
MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBp
bGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbigqY29kZSwgImxkYSIpOworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
InN0bCIpOworICAgIH0KKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOwor
ICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCiB2b2lkIHRlc3RTdG9yZUFkZExv
YWRJbW0xNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCiB7CiAgICAgUHJvY2Vk
dXJlIHByb2M7CkBAIC01ODc4LDYgKzYwMjQsMzMgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkNjQo
aW50IGFtb3VudCkKICAgICBDSEVDSyhzbG90ID09IDM3MDAwMDAwMDAwbGwgKyBhbW91bnQpOwog
fQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3E2NChpbnQgYW1vdW50KQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgaW50NjRfdCBzbG90ID0gMzcwMDAwMDAwMDBsbDsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90
UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xv
dCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3Rv
cmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBz
bG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBS
YW5nZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7
CisgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29k
ZSwgImxkYSIpOworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOwor
ICAgIH0KKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNL
KHNsb3QgPT0gMzcwMDAwMDAwMDBsbCArIGFtb3VudCk7Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRk
TG9hZEltbTY0KGludDY0X3QgYW1vdW50KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTM3
OTEsNyArMTM5NjQsNyBAQCB2b2lkIHRlc3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24oKQogICAg
IGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKTsKICAgICB1bnNpZ25lZCBzdG9yZUNvdW50ID0gMDsK
ICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6IHByb2MudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKE1l
bW9yeVZhbHVlOjppc1N0b3JlKHZhbHVlLT5vcGNvZGUoKSkpCisgICAgICAgIGlmIChpc1N0b3Jl
KHZhbHVlLT5vcGNvZGUoKSkpCiAgICAgICAgICAgICBzdG9yZUNvdW50Kys7CiAgICAgfQogICAg
IENIRUNLX0VRKHN0b3JlQ291bnQsIDJ1KTsKQEAgLTE0Mjc3LDYgKzE0NDUwLDUwOCBAQCB2b2lk
IHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXphdGlvbigpCiAgICAgQ0hFQ0soZm91bmQpOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0QXRvbWljV2Vha0NBUygpCit7CisgICAgVHlw
ZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBlOworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZl
VHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsm
XSAoQ29tcGlsYXRpb24mIGNvbXBpbGF0aW9uKSB7CisgICAgICAgIGlmIChpc1g4NigpKSB7Cisg
ICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsKKyAg
ICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAiY21weGNoZyIpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2hlY2tEaXNhc3NlbWJseSgKKyAgICAgICAg
ICAgICAgICBjb21waWxhdGlvbiwKKyAgICAgICAgICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRp
c2Fzc2VtYmx5KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzdHJzdHIo
ZGlzYXNzZW1ibHksICJsZHgiKSB8fCBzdHJzdHIoZGlzYXNzZW1ibHksICJsZGF4IikpCisgICAg
ICAgICAgICAgICAgICAgICAgICAmJiAoc3Ryc3RyKGRpc2Fzc2VtYmx5LCAic3R4IikgfHwgc3Ry
c3RyKGRpc2Fzc2VtYmx5LCAic3RseCIpKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICJFeHBlY3RlZCB0byBmaW5kIGxkeC9sZGF4IGFuZCBzdHgvc3RseCBidXQgZGlkbid0
ISIpOworICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBCYXNpY0Jsb2NrKiByZWxvb3AgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxv
Y2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRy
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEp1bXAsIE9yaWdpbigpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhyZWxvb3ApOwor
ICAgICAgICAKKyAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PEF0
b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4o
KSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50
Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAg
cHRyKSk7CisgICAgICAgIHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25lLCByZWxvb3ApOworICAg
ICAgICAKKyAgICAgICAgZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdp
bigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAg
ICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAg
ICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9r
ZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGlj
X2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
fQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlbG9vcCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAg
ICAgICByb290LT5zZXRTdWNjZXNzb3JzKHJlbG9vcCk7CisgICAgICAgIAorICAgICAgICByZWxv
b3AtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigp
LAorICAgICAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0Miks
CisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBwdHIsIDAsIEhlYXBSYW5nZSg0Miks
IEhlYXBSYW5nZSgpKSk7CisgICAgICAgIHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25lLCByZWxv
b3ApOworICAgICAgICAKKyAgICAgICAgZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJv
Yyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVb
Ml07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAg
ICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsw
XSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAx
Myk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sq
IHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1
ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRo
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJv
YywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyKSk7CisgICAg
ICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7CisgICAgICAgIAorICAgICAgICBz
dWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNv
ZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAg
ICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAg
ICAgIAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAg
ICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAg
ICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hpbGUg
KHZhbHVlWzBdID09IDQyKQorICAgICAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7
CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDApKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2Fz
dDxUPigzMDApOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19F
USh2YWx1ZVsxXSwgMTMpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2Nr
KiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAg
ICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0Miks
CisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdp
bigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICBwdHIpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwgMCkp
KTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhmYWlsLCBzdWNjKTsKKyAgICAgICAgCisg
ICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBz
dG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRy
KTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigp
KTsKKyAgICAgICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2Mp
OworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlWzJd
OworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAg
ICB3aGlsZSAodmFsdWVbMF0gPT0gNDIpCisgICAgICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUs
IHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0
YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
KTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAg
IGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAg
IHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICgh
aW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpIHsgfQorICAgICAgICBDSEVDS19FUSh2YWx1ZVsw
XSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAx
Myk7CisgICAgICAgIAorICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7Cisg
ICAgICAgIENIRUNLKCFpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMV0sIDEzKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAg
ICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAg
ICAgICA0MikpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsK
KyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsK
KyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAg
d2hpbGUgKCFpbnZva2U8Ym9vbD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odmFsdWUp
IC0gNDIpKSB7IH0KKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4
YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICAKKyAgICAg
ICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBDSEVDSyghaW52b2tl
PGJvb2w+KCpjb2RlLCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSAtIDQyKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2
b2lkIHRlc3RBdG9taWNTdHJvbmdDQVMoKQoreworICAgIFR5cGUgdHlwZSA9IE5hdGl2ZVRyYWl0
czxUPjo6dHlwZTsKKyAgICBXaWR0aCB3aWR0aCA9IE5hdGl2ZVRyYWl0czxUPjo6d2lkdGg7Cisg
ICAgCisgICAgYXV0byBjaGVja015RGlzYXNzZW1ibHkgPSBbJl0gKENvbXBpbGF0aW9uJiBjb21w
aWxhdGlvbikgeworICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsb2NrIik7CisgICAgICAgICAgICBjaGVja1VzZXNJ
bnN0cnVjdGlvbihjb21waWxhdGlvbiwgImNtcHhjaGciKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGNoZWNrRGlzYXNzZW1ibHkoCisgICAgICAgICAgICAgICAgY29tcGlsYXRpb24s
CisgICAgICAgICAgICAgICAgWyZdIChjb25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoc3Ryc3RyKGRpc2Fzc2VtYmx5LCAibGR4Iikg
fHwgc3Ryc3RyKGRpc2Fzc2VtYmx5LCAibGRheCIpKQorICAgICAgICAgICAgICAgICAgICAgICAg
JiYgKHN0cnN0cihkaXNhc3NlbWJseSwgInN0eCIpIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgInN0
bHgiKSk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgdG8g
ZmluZCBsZHgvbGRheCBhbmQgc3R4L3N0bHggYnV0IGRpZG4ndCEiKTsKKyAgICAgICAgfQorICAg
IH07CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gs
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ry
b25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYp
LAorICAgICAgICAgICAgICAgICAgICBwdHIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgcm9vdC0+
c2V0U3VjY2Vzc29ycyhzdWNjLCBmYWlsKTsKKyAgICAgICAgCisgICAgICAgIHN1Y2MtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lk
dGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAgc3VjYy0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAg
ICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAg
ICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBjaGVja015
RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVsw
XSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZva2U8dm9pZD4oKmNv
ZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEw
MCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9
IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBW
YWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmln
aW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAg
cHRyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmln
aW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoZmFpbCwgc3Vj
Yyk7CisgICAgICAgIAorICAgICAgICBzdWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAg
ICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwK
KyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAg
ICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVb
MV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENI
RUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEo
dmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOwor
ICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwg
MTMpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhi
ZWVmKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAgICAgCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJs
eSgqY29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7Cisg
ICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwg
dmFsdWUpLCA0Mik7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigw
eGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVb
MF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8VD4oKmNv
ZGUsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVl
WzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEz
KTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFs
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+
KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywg
T3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50
Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29u
c3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICAKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2Rl
KTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAg
dmFsdWVbMV0gPSAxMzsKKyAgICAgICAgQ0hFQ0soaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGlj
X2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0soIWludm9rZTxib29sPigqY29kZSwgdmFsdWUp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIE5vdEVxdWFs
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1Zh
bHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3Jp
Z2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29u
c3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApKSk7CisgICAgICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShw
cm9jKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICAgICAgVCB2YWx1
ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAg
ICAgICAgQ0hFQ0soaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBDSEVDS19F
USh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAg
ICAgICAgQ0hFQ0soIWludm9rZTxib29sPigqY29kZSwgJnZhbHVlKSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMV0sIDEzKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RB
dG9taWNYY2hnKEIzOjpPcGNvZGUgb3Bjb2RlKQoreworICAgIFR5cGUgdHlwZSA9IE5hdGl2ZVRy
YWl0czxUPjo6dHlwZTsKKyAgICBXaWR0aCB3aWR0aCA9IE5hdGl2ZVRyYWl0czxUPjo6d2lkdGg7
CisgICAgCisgICAgYXV0byBkb1RoZU1hdGggPSBbJl0gKFQmIG1lbW9yeSwgVCBvcGVyYW5kKSAt
PiBUIHsKKyAgICAgICAgVCBvbGRWYWx1ZSA9IG1lbW9yeTsKKyAgICAgICAgc3dpdGNoIChvcGNv
ZGUpIHsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAgICAgbWVtb3J5ICs9
IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5k
OgorICAgICAgICAgICAgbWVtb3J5ICY9IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICBtZW1vcnkgfD0gb3BlcmFuZDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAg
ICAgICBtZW1vcnkgLT0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEF0b21pY1hjaGdYb3I6CisgICAgICAgICAgICBtZW1vcnkgXj0gb3BlcmFuZDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgICAgICBtZW1vcnkg
PSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBvbGRWYWx1ZTsKKyAgICB9OworICAgIAorICAgIGF1dG8gb2xkVmFsdWUgPSBbJl0gKFQg
bWVtb3J5LCBUIG9wZXJhbmQpIC0+IFQgeworICAgICAgICByZXR1cm4gZG9UaGVNYXRoKG1lbW9y
eSwgb3BlcmFuZCk7CisgICAgfTsKKyAgICAKKyAgICBhdXRvIG5ld1ZhbHVlID0gWyZdIChUIG1l
bW9yeSwgVCBvcGVyYW5kKSAtPiBUIHsKKyAgICAgICAgZG9UaGVNYXRoKG1lbW9yeSwgb3BlcmFu
ZCk7CisgICAgICAgIHJldHVybiBtZW1vcnk7CisgICAgfTsKKyAgICAKKyAgICBhdXRvIGNoZWNr
TXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRpb24mIGNvbXBpbGF0aW9uKSB7CisgICAgICAg
IGlmIChpc1g4NigpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRp
b24sICJsb2NrIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY2hlY2tEaXNhc3NlbWJs
eSgKKyAgICAgICAgICAgICAgICBjb21waWxhdGlvbiwKKyAgICAgICAgICAgICAgICBbJl0gKGNv
bnN0IGNoYXIqIGRpc2Fzc2VtYmx5KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIChzdHJzdHIoZGlzYXNzZW1ibHksICJsZHgiKSB8fCBzdHJzdHIoZGlzYXNzZW1ibHksICJs
ZGF4IikpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3Ryc3RyKGRpc2Fzc2VtYmx5LCAi
c3R4IikgfHwgc3Ryc3RyKGRpc2Fzc2VtYmx5LCAic3RseCIpKTsKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICJFeHBlY3RlZCB0byBmaW5kIGxkeC9sZGF4IGFuZCBzdHgvc3Rs
eCBidXQgZGlkbid0ISIpOyAKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgeworICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRoLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgq
Y29kZSk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAgICAg
ICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFs
dWUpLCBvbGRWYWx1ZSg1LCA0MikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFs
dWUoNSwgNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAgfQorICAg
IAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlKHByb2MpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgICAg
ICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDU7CisgICAgICAgIHZhbHVlWzFdID0g
MTAwOworICAgICAgICBpbnZva2U8VD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEo
dmFsdWVbMF0sIG5ld1ZhbHVlKDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAx
MDApOworICAgIH0KK30KKwogdm9pZCB0ZXN0V2FzbUJvdW5kc0NoZWNrKHVuc2lnbmVkIG9mZnNl
dCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTE0MzcwLDYgKzE1MDQ1LDEzIEBAIGRvdWJs
ZSBuZWdhdGl2ZVplcm8oKQogICAgIHJldHVybiAtemVybygpOwogfQogCisjZGVmaW5lIFJVTl9O
T1codGVzdCkgZG8geyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghc2hvdWxk
UnVuKCN0ZXN0KSkgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBicmVhazsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRhdGFMb2coI3Rlc3QgIi4uLlxuIik7
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIGRhdGFMb2coI3Rlc3QgIjogT0shXG4iKTsgICAgICAgICAg
ICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCiAjZGVmaW5lIFJVTih0ZXN0KSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICghc2hvdWxkUnVuKCN0ZXN0KSkgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCkBAIC0xNDQyMSwxMiArMTUxMDMsMTEgQEAgdm9pZCBydW4oY29uc3QgY2hhciog
ZmlsdGVyKQogICAgICAgICByZXR1cm4gIWZpbHRlciB8fCAhIXN0cmNhc2VzdHIodGVzdE5hbWUs
IGZpbHRlcik7CiAgICAgfTsKIAotICAgIC8vIFdlIHJ1biB0aGlzIHRlc3QgZmlyc3QgYmVjYXVz
ZSBpdCBmaWRkbGVzIHdpdGggc29tZQotICAgIC8vIEpTQyBvcHRpb25zLgotICAgIHRlc3RUZXJt
aW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZDIoKTsKKyAgICBSVU5fTk9XKHRlc3RU
ZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZDIoKSk7CiAKICAgICBSVU4odGVz
dDQyKCkpOwogICAgIFJVTih0ZXN0TG9hZDQyKCkpOworICAgIFJVTih0ZXN0TG9hZEFjcTQyKCkp
OwogICAgIFJVTih0ZXN0TG9hZE9mZnNldEltbTlNYXgoKSk7CiAgICAgUlVOKHRlc3RMb2FkT2Zm
c2V0SW1tOU1heFBsdXNPbmUoKSk7CiAgICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1heFBsdXNU
d28oKSk7CkBAIC0xNTA5OSwxNiArMTU3ODAsMjMgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmls
dGVyKQogICAgIFJVTih0ZXN0TmVnMzIoNTIpKTsKICAgICBSVU4odGVzdE5lZ1B0cig1MykpOwog
ICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMzIoNDYpKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRk
TG9hZEFjcTMyKDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0zMig0NikpOwogICAg
IFJVTih0ZXN0U3RvcmVBZGRMb2FkNjQoNDYwMCkpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRM
b2FkQWNxNjQoNDYwMCkpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tNjQoNDYwMCkpOwog
ICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkOCg0LCBMb2FkOFopKTsKKyAgICBSVU4odGVzdFN0b3Jl
UmVsQWRkTG9hZEFjcTgoNCwgTG9hZDhaKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZEZlbmNl
TG9hZEFjcTgoNCwgTG9hZDhaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW04KDQsIExv
YWQ4WikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkOCg0LCBMb2FkOFMpKTsKKyAgICBSVU4o
dGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoNCwgTG9hZDhTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFk
ZExvYWRJbW04KDQsIExvYWQ4UykpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMTYoNiwgTG9h
ZDE2WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYoNiwgTG9hZDE2WikpOwog
ICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tMTYoNiwgTG9hZDE2WikpOwogICAgIFJVTih0ZXN0
U3RvcmVBZGRMb2FkMTYoNiwgTG9hZDE2UykpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2Fk
QWNxMTYoNiwgTG9hZDE2UykpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tMTYoNiwgTG9h
ZDE2UykpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMzJJbmRleCg0NikpOwogICAgIFJVTih0
ZXN0U3RvcmVBZGRMb2FkSW1tMzJJbmRleCg0NikpOwpAQCAtMTU4MzEsNiArMTY1MTksMzkgQEAg
dm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0TG9hZEJhc2VJbmRleFNo
aWZ0MigpKTsKICAgICBSVU4odGVzdExvYWRCYXNlSW5kZXhTaGlmdDMyKCkpOwogICAgIFJVTih0
ZXN0T3B0aW1pemVNYXRlcmlhbGl6YXRpb24oKSk7CisgICAgCisgICAgUlVOKHRlc3RBdG9taWNX
ZWFrQ0FTPGludDhfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDE2X3Q+KCkp
OworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxpbnQzMl90PigpKTsKKyAgICBSVU4odGVzdEF0
b21pY1dlYWtDQVM8aW50NjRfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNTdHJvbmdDQVM8aW50
OF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQxNl90PigpKTsKKyAgICBS
VU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQzMl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0
cm9uZ0NBUzxpbnQ2NF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9t
aWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdB
ZGQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ0FkZCkpOwor
ICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVO
KHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRv
bWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hn
PGludDMyX3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRf
dD4oQXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21p
Y1hjaGdPcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hnT3Ip
KTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ09yKSk7CisgICAg
UlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJVTih0ZXN0
QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hj
aGc8aW50MTZfdD4oQXRvbWljWGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQz
Ml90PihBdG9taWNYY2hnU3ViKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0
b21pY1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hn
WG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdYb3IpKTsK
KyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RB
dG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZykpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxp
bnQxNl90PihBdG9taWNYY2hnKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0
b21pY1hjaGcpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZykp
OwogCiAgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soMCkpOwogICAgIFJVTih0ZXN0V2FzbUJv
dW5kc0NoZWNrKDEwMCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJn
LmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBcmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgdW5zaWduZWQgQXJn
Ojpqc0hhc2goKSBjb25zdAogICAgIGNhc2UgUmVsQ29uZDoKICAgICBjYXNlIFJlc0NvbmQ6CiAg
ICAgY2FzZSBEb3VibGVDb25kOgorICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICBjYXNlIFdpZHRo
QXJnOgogICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KTsK
ICAgICAgICAgYnJlYWs7CkBAIC0xMTAsNiArMTExLDkgQEAgdW5zaWduZWQgQXJnOjpqc0hhc2go
KSBjb25zdAogICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0
KTsKICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCA+PiAz
Mik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltcGxlQWRkcjoKKyAgICAgICAgcmVzdWx0
ICs9IG1fYmFzZS5pbnRlcm5hbFZhbHVlKCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWRk
cjoKICAgICAgICAgcmVzdWx0ICs9IG1fb2Zmc2V0OwogICAgICAgICByZXN1bHQgKz0gbV9iYXNl
LmludGVybmFsVmFsdWUoKTsKQEAgLTE1MCw2ICsxNTQsOSBAQCB2b2lkIEFyZzo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogICAgIGNhc2UgQml0SW1tNjQ6CiAgICAgICAgIG91dC5wcmlu
dGYoIiQweCVsbHgiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmcgdW5zaWduZWQ+KG1fb2Zmc2V0KSk7
CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFNpbXBsZUFkZHI6CisgICAgICAgIG91dC5wcmlu
dCgiKCIsIGJhc2UoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWRkcjoKICAg
ICAgICAgaWYgKG9mZnNldCgpKQogICAgICAgICAgICAgb3V0LnByaW50KG9mZnNldCgpKTsKQEAg
LTE4Miw2ICsxODksOSBAQCB2b2lkIEFyZzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgb3V0LnByaW50KGFzRG91YmxlQ29uZGl0aW9u
KCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0dXNDb25kOgorICAgICAgICBvdXQu
cHJpbnQoYXNTdGF0dXNDb25kaXRpb24oKSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFNw
ZWNpYWw6CiAgICAgICAgIG91dC5wcmludChwb2ludGVyRHVtcChzcGVjaWFsKCkpKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjIwLDYgKzIzMCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6Qml0SW1tNjQ6CiAgICAgICAgIG91dC5wcmlu
dCgiQml0SW1tNjQiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJnOjpTaW1wbGVBZGRy
OgorICAgICAgICBvdXQucHJpbnQoIlNpbXBsZUFkZHIiKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgQXJnOjpBZGRyOgogICAgICAgICBvdXQucHJpbnQoIkFkZHIiKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjQxLDYgKzI1NCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBBcmcKICAgICBjYXNlIEFyZzo6RG91YmxlQ29uZDoKICAgICAgICAgb3V0LnByaW50KCJE
b3VibGVDb25kIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6U3RhdHVzQ29uZDoK
KyAgICAgICAgb3V0LnByaW50KCJTdGF0dXNDb25kIik7CisgICAgICAgIHJldHVybjsKICAgICBj
YXNlIEFyZzo6U3BlY2lhbDoKICAgICAgICAgb3V0LnByaW50KCJTcGVjaWFsIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTI4NSw2ICszMDEsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgogICAgICAgICBvdXQucHJpbnQo
IkVhcmx5RGVmIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgor
ICAgICAgICBvdXQucHJpbnQoIkVhcmx5WkRlZiIpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgIG91dC5wcmludCgiU2NyYXRjaCIpOwogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHJldmlzaW9u
IDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogCiAgICAgICAgIC8vIFRoZXNlIGFy
ZSB0aGUgYWRkcmVzc2VzLiBJbnN0cnVjdGlvbnMgbWF5IGxvYWQgZnJvbSAoVXNlKSwgc3RvcmUg
dG8gKERlZiksIG9yIGV2YWx1YXRlCiAgICAgICAgIC8vIChVc2VBZGRyKSBhZGRyZXNzZXMuCisg
ICAgICAgIFNpbXBsZUFkZHIsCiAgICAgICAgIEFkZHIsCiAgICAgICAgIFN0YWNrLAogICAgICAg
ICBDYWxsQXJnLApAQCAtODIsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlbENvbmQsCiAg
ICAgICAgIFJlc0NvbmQsCiAgICAgICAgIERvdWJsZUNvbmQsCisgICAgICAgIFN0YXR1c0NvbmQs
CiAgICAgICAgIFNwZWNpYWwsCiAgICAgICAgIFdpZHRoQXJnCiAgICAgfTsKQEAgLTE1MSw2ICsx
NTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGFzIFVzZSBoYXMgdW5kZWZpbmVkIGJlaGF2aW9y
OiB0aGUgdXNlIG1heSBoYXBwZW4gYmVmb3JlIHRoZSBkZWYsIG9yIGl0IG1heSBoYXBwZW4gYWZ0
ZXIKICAgICAgICAgLy8gaXQuCiAgICAgICAgIEVhcmx5RGVmLAorICAgICAgICAgICAgCisgICAg
ICAgIEVhcmx5WkRlZiwKIAogICAgICAgICAvLyBTb21lIGluc3RydWN0aW9ucyBuZWVkIGEgc2Ny
YXRjaCByZWdpc3Rlci4gV2UgbW9kZWwgdGhpcyBieSBzYXlpbmcgdGhhdCB0aGUgdGVtcG9yYXJ5
IGlzCiAgICAgICAgIC8vIGRlZmluZWQgZWFybHkgYW5kIHVzZWQgbGF0ZS4gVGhpcyByb2xlIGlt
cGxpZXMgdGhhdC4KQEAgLTE4Niw2ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRl
ZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAg
ICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIwNiw2ICsyMTEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBj
YXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIy
OCw2ICsyMzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2Fz
ZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRl
ZjoKICAgICAgICAgICAgIHJldHVybiByb2xlOwogICAgICAgICBjYXNlIFVzZToKICAgICAgICAg
ICAgIHJldHVybiBDb2xkVXNlOwpAQCAtMjUzLDYgKzI2MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVh
cmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI3NCw2ICsy
ODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRy
OgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTI5NCw2ICszMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAg
ICAgICAgY2FzZSBVc2VaRGVmOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNl
IEVhcmx5WkRlZjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KQEAgLTMxNSw2ICszMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
TGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgRWFy
bHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzMwLDYgKzM0MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIExhdGVVc2U6CiAgICAg
ICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNl
IFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0zNTgsNiArMzcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlWkRlZjoKKyAgICAgICAg
Y2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQxNiw2ICs0MjksMTUgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYmlnSW1tKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oYWRkcmVzcykpOwog
ICAgIH0KIAorICAgIHN0YXRpYyBBcmcgc2ltcGxlQWRkcihBaXI6OlRtcCBwdHIpCisgICAgewor
ICAgICAgICBBU1NFUlQocHRyLmlzR1AoKSk7CisgICAgICAgIEFyZyByZXN1bHQ7CisgICAgICAg
IHJlc3VsdC5tX2tpbmQgPSBTaW1wbGVBZGRyOworICAgICAgICByZXN1bHQubV9iYXNlID0gcHRy
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHN0YXRpYyBBcmcgYWRkcihB
aXI6OlRtcCBiYXNlLCBpbnQzMl90IG9mZnNldCA9IDApCiAgICAgewogICAgICAgICBBU1NFUlQo
YmFzZS5pc0dQKCkpOwpAQCAtNTMzLDYgKzU1NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIEFyZyBzdGF0dXNDb25kKE1hY3JvQXNzZW1i
bGVyOjpTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQorICAgIHsKKyAgICAgICAgQXJnIHJlc3Vs
dDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFN0YXR1c0NvbmQ7CisgICAgICAgIHJlc3VsdC5t
X29mZnNldCA9IGNvbmRpdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAg
ICBzdGF0aWMgQXJnIHNwZWNpYWwoQWlyOjpTcGVjaWFsKiBzcGVjaWFsKQogICAgIHsKICAgICAg
ICAgQXJnIHJlc3VsdDsKQEAgLTYwOCw2ICs2MzgsMTEgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgfQogCisgICAgYm9vbCBpc1NpbXBsZUFkZHIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIGtpbmQoKSA9PSBTaW1wbGVBZGRyOworICAgIH0KKwogICAgIGJvb2wgaXNBZGRyKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBraW5kKCkgPT0gQWRkcjsKQEAgLTYzMSw2ICs2NjYs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01lbW9yeSgpIGNvbnN0CiAgICAgewogICAgICAgICBz
d2l0Y2ggKGtpbmQoKSkgeworICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2Ug
QWRkcjoKICAgICAgICAgY2FzZSBTdGFjazoKICAgICAgICAgY2FzZSBDYWxsQXJnOgpAQCAtNjQx
LDYgKzY3NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhpcyBpcyBhbiBpZGlvbWF0aWMgc3RhY2sgcmVmZXJlbmNlLiBJdCBtYXkgcmV0
dXJuIGZhbHNlIGZvciBzb21lIGtpbmRzIG9mCisgICAgLy8gc3RhY2sgcmVmZXJlbmNlcy4gVGhl
IGZvbGxvd2luZyBpZGlvbXMgYXJlIHJlY29nbml6ZWQ6CisgICAgLy8gLSB0aGUgU3RhY2sga2lu
ZAorICAgIC8vIC0gdGhlIENhbGxBcmcga2luZAorICAgIC8vIC0gdGhlIEFkZHIga2luZCB3aXRo
IHRoZSBiYXNlIGJlaW5nIGVpdGhlciBTUCBvciBGUAorICAgIC8vIENhbGxlcnMgb2YgdGhpcyBm
dW5jdGlvbiBhcmUgYWxsb3dlZCB0byBleHBlY3QgdGhhdCBpZiBpdCByZXR1cm5zIHRydWUsIHRo
ZW4gaXQgbXVzdCBiZSBvbmUgb2YKKyAgICAvLyB0aGVzZSBlYXN5LXRvLXJlY29nbml6ZSBraW5k
cy4gU28sIG1ha2luZyB0aGlzIGZ1bmN0aW9uIHJlY29nbml6ZSBtb3JlIGtpbmRzIGNvdWxkIGJy
ZWFrIHRoaW5ncy4KICAgICBib29sIGlzU3RhY2tNZW1vcnkoKSBjb25zdDsKIAogICAgIGJvb2wg
aXNSZWxDb25kKCkgY29uc3QKQEAgLTY1OCwxMiArNzAxLDE4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGtpbmQoKSA9PSBEb3VibGVDb25kOwogICAgIH0KIAorICAgIGJvb2wgaXNTdGF0dXND
b25kKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0gU3RhdHVzQ29uZDsK
KyAgICB9CisKICAgICBib29sIGlzQ29uZGl0aW9uKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3
aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXND
b25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNzc0LDEwICs4MjMsMTYgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQoa2luZCgpID09IEJpZ0ltbSk7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHN0YXRpY19jYXN0PGludHB0cl90PihtX29mZnNldCkpOwogICAgIH0KKyAgICAKKyAgICBBaXI6
OlRtcCBwdHIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBTaW1wbGVB
ZGRyKTsKKyAgICAgICAgcmV0dXJuIG1fYmFzZTsKKyAgICB9CiAKICAgICBBaXI6OlRtcCBiYXNl
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChraW5kKCkgPT0gQWRkciB8fCBraW5kKCkg
PT0gSW5kZXgpOworICAgICAgICBBU1NFUlQoa2luZCgpID09IFNpbXBsZUFkZHIgfHwga2luZCgp
ID09IEFkZHIgfHwga2luZCgpID09IEluZGV4KTsKICAgICAgICAgcmV0dXJuIG1fYmFzZTsKICAg
ICB9CiAKQEAgLTg0NCw2ICs4OTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQmlnSW1tOgog
ICAgICAgICBjYXNlIEJpdEltbToKICAgICAgICAgY2FzZSBCaXRJbW02NDoKKyAgICAgICAgY2Fz
ZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGNhc2UgSW5kZXg6CiAg
ICAgICAgIGNhc2UgU3RhY2s6CkBAIC04NTEsNiArOTA3LDcgQEAgcHVibGljOgogICAgICAgICBj
YXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVD
b25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2UgU3BlY2lhbDoKICAg
ICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODcyLDEw
ICs5MjksMTIgQEAgcHVibGljOgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2Ug
UmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0Nv
bmQ6CiAgICAgICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAg
ICAgY2FzZSBJbnZhbGlkOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNl
IFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgY2FzZSBJbmRleDoKICAg
ICAgICAgY2FzZSBTdGFjazoKQEAgLTEwNDksNiArMTEwOCw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBpc1ZhbGlkQml0SW1tRm9ybSh2YWx1ZSgpKTsKICAgICAgICAgY2FzZSBCaXRJ
bW02NDoKICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkQml0SW1tNjRGb3JtKHZhbHVlKCkpOwor
ICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgY2FzZSBBZGRyOgogICAgICAgICBjYXNlIFN0YWNrOgogICAgICAgICBjYXNlIENhbGxBcmc6
CkBAIC0xMDU4LDYgKzExMTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAg
ICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNh
c2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRo
QXJnOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDcwLDYgKzExMzIsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgICAgICBjYXNlIFRtcDoK
KyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgICAg
ICBmdW5jdG9yKG1fYmFzZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExMTAsNiArMTE3Myw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVChpc0FueVVzZShhcmdSb2xlKSB8fCBpc0Fu
eURlZihhcmdSb2xlKSk7CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwgYXJnUm9sZSwgYXJn
QmFuaywgYXJnV2lkdGgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2ltcGxl
QWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgogICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIFVz
ZSwgR1AsIGFyZ1JvbGUgPT0gVXNlQWRkciA/IGFyZ1dpZHRoIDogcG9pbnRlcldpZHRoKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTQ0LDkgKzEyMDgsMTEgQEAgcHVibGljOgogICAgICAg
ICAgICAgQVNTRVJUKGlzSW1tKCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIocG9pbnRlclZhbHVlKCkpOwogICAgIH0KLQorICAgIAogICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzIGFzQWRkcmVzcygpIGNvbnN0CiAgICAgeworICAgICAgICBpZiAoaXNT
aW1wbGVBZGRyKCkpCisgICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
bV9iYXNlLmdwcigpKTsKICAgICAgICAgQVNTRVJUKGlzQWRkcigpKTsKICAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5ncHIoKSwgc3RhdGljX2Nhc3Q8aW50MzJf
dD4obV9vZmZzZXQpKTsKICAgICB9CkBAIC0xMTc3LDYgKzEyNDMsMTIgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbj4o
bV9vZmZzZXQpOwogICAgIH0KICAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0
aW9uIGFzU3RhdHVzQ29uZGl0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1N0
YXR1c0NvbmQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6
U3RhdHVzQ29uZGl0aW9uPihtX29mZnNldCk7CisgICAgfQorICAgIAogICAgIC8vIFRlbGxzIHlv
dSBpZiB0aGUgQXJnIGlzIGludmVydGlibGUuIE9ubHkgY29uZGl0aW9uIGFyZ3VtZW50cyBhcmUg
aW52ZXJ0aWJsZSwgYW5kIGV2ZW4gZm9yIHRob3NlLCB0aGVyZQogICAgIC8vIGFyZSBhIGZldyBl
eGNlcHRpb25zIC0gbm90YWJseSBPdmVyZmxvdyBhbmQgU2lnbmVkLgogICAgIGJvb2wgaXNJbnZl
cnRpYmxlKCkgY29uc3QKQEAgLTExODQsNiArMTI1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dp
dGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIERvdWJs
ZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXI6OmlzSW52ZXJ0aWJsZShhc1Jlc3VsdENvbmRpdGlvbigpKTsKQEAgLTEyMDQsNiArMTI3Nyw4
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiByZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpp
bnZlcnQoYXNSZXN1bHRDb25kaXRpb24oKSkpOwogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CiAg
ICAgICAgICAgICByZXR1cm4gZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzRG91
YmxlQ29uZGl0aW9uKCkpKTsKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgorICAgICAgICAgICAg
cmV0dXJuIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1N0YXR1c0NvbmRpdGlv
bigpKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAyMTMyNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM1LDYgKzM1LDE5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UKIAogY29uc3QgY2hhciogY29uc3QgQmFzaWNCbG9jazo6ZHVtcFByZWZpeCA9ICIj
IjsKIAordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YXJn
ZXQpCit7CisgICAgbV9zdWNjZXNzb3JzLnJlc2l6ZSgxKTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0g
PSB0YXJnZXQ7Cit9CisKK3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVk
QmxvY2sgdGFrZW4sIEZyZXF1ZW50ZWRCbG9jayBub3RUYWtlbikKK3sKKyAgICBtX3N1Y2Nlc3Nv
cnMucmVzaXplKDIpOworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRha2VuOworICAgIG1fc3VjY2Vz
c29yc1sxXSA9IG5vdFRha2VuOworfQorCiBib29sIEJhc2ljQmxvY2s6OmFkZFByZWRlY2Vzc29y
KEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIHJldHVybiBCMzo6YWRkUHJlZGVjZXNzb3IodGhp
cywgYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Js
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNp
Y0Jsb2NrLmgJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyArMzMsMTEgQEAKICNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
Ci1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEdlbmVy
aWNCbG9ja0luc2VydGlvblNldDsKKworbmFtZXNwYWNlIEFpciB7CiAKIGNsYXNzIEJsb2NrSW5z
ZXJ0aW9uU2V0OwogY2xhc3MgQ29kZTsKQEAgLTk5LDYgKzEwMyw5IEBAIHB1YmxpYzoKICAgICBj
b25zdCBTdWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNz
b3JzOyB9CiAgICAgU3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIHsgcmV0dXJuIG1fc3VjY2Vz
c29yczsgfQogCisgICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayk7CisgICAg
dm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jaywgRnJlcXVlbnRlZEJsb2NrKTsKKwog
ICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJl
dHVybiBzdWNjZXNzb3IoaW5kZXgpLmJsb2NrKCk7IH0KICAgICBCYXNpY0Jsb2NrKiYgc3VjY2Vz
c29yQmxvY2sodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2so
KTsgfQogICAgIFN1Y2Nlc3NvckNvbGxlY3Rpb248QmFzaWNCbG9jaywgU3VjY2Vzc29yTGlzdD4g
c3VjY2Vzc29yQmxvY2tzKCkKQEAgLTEzMyw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgQ29kZTsKICAgICBm
cmllbmQgY2xhc3MgSW5zZXJ0aW9uU2V0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQg
Y2xhc3MgQjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDsKICAgICAKICAgICBCYXNpY0Jsb2Nr
KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5KTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2Vy
dGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRpb25TZXQuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisK
KyNpbmNsdWRlICJBaXJCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1
ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UgQWlyIHsKKworQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KENv
ZGUgJmNvZGUpCisgICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoY29kZS5tX2Jsb2NrcykK
K3sKK30KKworQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpCit7Cit9CisK
K30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19K
SVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRp
b25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJs
b2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNHZW5lcmljQmxv
Y2tJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0lu
c2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCitjbGFzcyBJbnNlcnRpb25TZXQ7CisKK3R5
cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+OjpCbG9ja0luc2VydGlv
biBCbG9ja0luc2VydGlvbjsKKworY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgOiBwdWJsaWMgR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+IHsKK3B1YmxpYzoKKyAgICBCbG9ja0lu
c2VydGlvblNldChDb2RlJik7CisgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7CisgICAgCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBldmVudHVhbGx5IGltcGxlbWVudCBCMzo6QmxvY2tJbnNlcnRp
b25TZXQncyBzcGxpdEZvcndhcmQoKS4KK307CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIz
OjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSwyNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBaXJEdW1wQXNKUy5o
IgotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQotI2luY2x1ZGUgIkFpckNvZGUuaCIKLSNpbmNsdWRl
ICJBaXJJbnN0SW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFt
ZXNwYWNlIEFpciB7Ci0KLW5hbWVzcGFjZSB7Ci0KLUNTdHJpbmcgdmFyTmFtZUZvckJsb2NrQXRJ
bmRleCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJiYiIsIGluZGV4
KTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKEJhc2ljQmxvY2sqIGJsb2NrKQotewotICAgIHJldHVy
biB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KGJsb2NrLT5pbmRleCgpKTsKLX0KLQotQ1N0cmluZyB2
YXJOYW1lRm9yU3RhY2tTbG90QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICByZXR1cm4g
dG9DU3RyaW5nKCJzbG90IiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZhck5hbWUoU3RhY2tTbG90
KiBzbG90KQotewotICAgIHJldHVybiB2YXJOYW1lRm9yU3RhY2tTbG90QXRJbmRleChzbG90LT5p
bmRleCgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKFJlZyByZWcpCi17Ci0gICAgcmV0dXJuIHRv
Q1N0cmluZygiUmVnLiIsIHJlZy5kZWJ1Z05hbWUoKSk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZUZv
clRtcFdpdGhCYW5rQW5kSW5kZXgoQmFuayBiYW5rLCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBy
ZXR1cm4gdG9DU3RyaW5nKGJhbmsgPT0gRlAgPyAiZiIgOiAiIiwgInRtcCIsIGluZGV4KTsKLX0K
LQotQ1N0cmluZyB2YXJOYW1lKFRtcCB0bXApCi17Ci0gICAgaWYgKHRtcC5pc1JlZygpKQotICAg
ICAgICByZXR1cm4gdmFyTmFtZSh0bXAucmVnKCkpOwotICAgIHJldHVybiB2YXJOYW1lRm9yVG1w
V2l0aEJhbmtBbmRJbmRleChBcmcodG1wKS5iYW5rKCksIHRtcC50bXBJbmRleCgpKTsKLX0KLQot
fSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLXZvaWQgZHVtcEFzSlMoQ29kZSYgY29kZSwgUHJp
bnRTdHJlYW0mIG91dCkKLXsKLSAgICBvdXQucHJpbnRsbigibGV0IGNvZGUgPSBuZXcgQ29kZSgp
OyIpOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlLnNpemUoKTsgKytp
KQotICAgICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZhck5hbWVGb3JCbG9ja0F0SW5kZXgoaSks
ICIgPSBjb2RlLmFkZEJsb2NrKCk7Iik7Ci0gICAgCi0gICAgb3V0LnByaW50bG4oImxldCBoYXNo
OyIpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGUuc3RhY2tTbG90cygpLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIFN0YWNrU2xvdCogc2xvdCA9IGNvZGUuc3RhY2tTbG90cygp
W2ldOwotICAgICAgICBpZiAoc2xvdCkgewotICAgICAgICAgICAgb3V0LnByaW50bG4oImxldCAi
LCB2YXJOYW1lKHNsb3QpLCAiID0gY29kZS5hZGRTdGFja1Nsb3QoIiwgc2xvdC0+Ynl0ZVNpemUo
KSwgIiwgIiwgc2xvdC0+a2luZCgpLCAiKTsiKTsKLSAgICAgICAgICAgIGlmIChzbG90LT5vZmZz
ZXRGcm9tRlAoKSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbih2YXJOYW1lKHNsb3QpLCAi
LnNldE9mZnNldEZyb21GUCgiLCBzbG90LT5vZmZzZXRGcm9tRlAoKSwgIik7Iik7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRsbigiaGFzaCA9ICIsIHZhck5hbWUoc2xvdCksICIuaGFzaCgpOyIpOwot
ICAgICAgICAgICAgb3V0LnByaW50bG4oImlmIChoYXNoICE9ICIsIHNsb3QtPmpzSGFzaCgpLCAi
KSIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oIiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQg
aGFzaDogXCIgKyBoYXNoKTsiKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBvdXQucHJp
bnRsbigiY29kZS5hZGRTdGFja1Nsb3QoMSwgU3BpbGwpOyIpOwotICAgIH0KLSAgICAKLSAgICBm
b3JFYWNoQmFuaygKLSAgICAgICAgWyZdIChCYW5rIGJhbmspIHsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGNvZGUubnVtVG1wcyhiYW5rKTsgaS0tOykgewotICAgICAgICAgICAgICAg
IG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAibGV0ICIsIHZhck5hbWVGb3JUbXBX
aXRoQmFua0FuZEluZGV4KGJhbmssIGkpLCAiID0gY29kZS5uZXdUbXAoIiwgYmFuaywgIik7Iik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIAotICAgIG91dC5wcmludGxuKCJsZXQg
aW5zdDsiKTsKLSAgICBvdXQucHJpbnRsbigibGV0IGFyZzsiKTsKLSAgICAKLSAgICBmb3IgKEJh
c2ljQmxvY2sqIGJsb2NrIDogY29kZSkgewotICAgICAgICBmb3IgKEZyZXF1ZW50ZWRCbG9jayBz
dWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnRs
bigKLSAgICAgICAgICAgICAgICB2YXJOYW1lKGJsb2NrKSwgIi5zdWNjZXNzb3JzLnB1c2gobmV3
IEZyZXF1ZW50ZWRCbG9jaygiLAotICAgICAgICAgICAgICAgIHZhck5hbWUoc3VjY2Vzc29yLmJs
b2NrKCkpLCAiLCAiLCBzdWNjZXNzb3IuZnJlcXVlbmN5KCksICIpKTsiKTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA6IGJsb2NrLT5w
cmVkZWNlc3NvcnMoKSkKLSAgICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoYmxvY2spLCAi
LnByZWRlY2Vzc29ycy5wdXNoKCIsIHZhck5hbWUocHJlZGVjZXNzb3IpLCAiKTsiKTsKLSAgICAg
ICAgCi0gICAgICAgIGZvciAoSW5zdCYgaW5zdCA6ICpibG9jaykgewotICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGRvIHNvbWV0aGluZyBmb3IgZmxhZ3MuCi0gICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNzUxCi0gICAgICAg
ICAgICBvdXQucHJpbnRsbigiaW5zdCA9IG5ldyBJbnN0KCIsIGluc3Qua2luZC5vcGNvZGUsICIp
OyIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpbnN0LmZvckVhY2hBcmcoCi0gICAgICAg
ICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlLCBCYW5rLCBXaWR0aCkgewotICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGFyZy5raW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBcmc6OkludmFsaWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlRtcDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlVG1wKCIs
IHZhck5hbWUoYXJnLnRtcCgpKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6SW1tOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5j
cmVhdGVJbW0oIiwgYXJnLnZhbHVlKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBcmc6OkJpZ0ltbToKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlQmlnSW1tKCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkp
LCAiLCAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+
KGFyZy52YWx1ZSgpID4+IDMyKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6Qml0SW1tOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFy
Zy5jcmVhdGVCaXRJbW0oIiwgYXJnLnZhbHVlKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkJpdEltbTY0OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50
bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVCaXRJbW02
NCgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFy
Zy52YWx1ZSgpKSwgIiwgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQzMl90PihhcmcudmFsdWUoKSA+PiAzMiksICIpOyIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkFkZHI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUFkZHIoIiwgdmFy
TmFtZShhcmcuYmFzZSgpKSwgIiwgIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpTdGFjazoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlU3Rh
Y2soIiwgdmFyTmFtZShhcmcuc3RhY2tTbG90KCkpLCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkNhbGxBcmc6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUNhbGxBcmcoIiwgYXJnLm9m
ZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbmRleDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJhcmcgPSBBcmcuY3JlYXRlSW5kZXgoIiwgdmFyTmFtZShhcmcuYmFzZSgpKSwgIiwg
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJOYW1lKGFyZy5pbmRleCgpKSwgIiwg
IiwgYXJnLnNjYWxlKCksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFyZzo6UmVsQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKCJhcmcgPSBBcmcuY3JlYXRlUmVsQ29uZCgiLCBhcmcuYXNSZWxhdGlvbmFsQ29uZGl0
aW9uKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlJlc0NvbmQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVJlc0Nv
bmQoIiwgYXJnLmFzUmVzdWx0Q29uZGl0aW9uKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkRvdWJsZUNvbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnRsbigiYXJnID0gQXJnLmNyZWF0ZURvdWJsZUNvbmQoIiwgYXJnLmFzRG91YmxlQ29uZGl0aW9u
KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlNwZWNpYWw6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVNwZWNpYWwo
KTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpXaWR0aEFyZzoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlV2lkdGhBcmcoIiwg
YXJnLndpZHRoKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIG91dC5wcmludGxuKCJpbnN0LmFyZ3MucHVzaChhcmcpOyIpOwotICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29kZSA9PSBQ
YXRjaCkgewotICAgICAgICAgICAgICAgIGlmIChpbnN0Lmhhc05vbkFyZ0VmZmVjdHMoKSkKLSAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QucGF0Y2hIYXNOb25BcmdFZmZlY3Rz
ID0gdHJ1ZTsiKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRs
bigiaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncyA9IG5ldyBTZXQoKTsiKTsKLSAgICAgICAg
ICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MgPSBuZXcgU2V0KCk7
Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncygpLmZvckVh
Y2goCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MuYWRkKCIs
IHZhck5hbWUocmVnKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgIGluc3QuZXh0cmFDbG9iYmVyZWRSZWdzKCkuZm9yRWFjaCgKLSAgICAgICAgICAgICAg
ICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRs
bigiaW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MuYWRkKCIsIHZhck5hbWUocmVnKSwgIik7Iik7Ci0g
ICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IG91dC5wcmludGxuKCJpbnN0LnBhdGNoQXJnRGF0YSA9IFtdOyIpOwotICAgICAgICAgICAgICAg
IGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJv
bGUgcm9sZSwgQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3QucGF0Y2hB
cmdEYXRhLnB1c2goe3JvbGU6IEFyZy4iLCByb2xlLCAiLCB0eXBlOiAiLCBiYW5rLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIsIHdpZHRoOiAiLCB3aWR0aCwgIn0pOyIpOwotICAgICAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gQ0NhbGwgfHwgaW5zdC5raW5kLm9wY29kZSA9PSBD
b2xkQ0NhbGwpIHsKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5jQ2FsbFR5cGUg
PSAiLCBpbnN0Lm9yaWdpbi0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigi
aW5zdC5jQ2FsbEFyZ1R5cGVzID0gW107Iik7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8IGluc3Qub3JpZ2luLT5udW1DaGlsZHJlbigpOyArK2kpCi0gICAgICAgICAg
ICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsQXJnVHlwZXMucHVzaCgiLCBpbnN0Lm9y
aWdpbi0+Y2hpbGQoaSktPnR5cGUoKSwgIik7Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJoYXNoID0gaW5zdC5oYXNoKCk7Iik7Ci0gICAg
ICAgICAgICBvdXQucHJpbnRsbigiaWYgKGhhc2ggIT0gIiwgaW5zdC5qc0hhc2goKSwgIikiKTsK
LSAgICAgICAgICAgIG91dC5wcmludGxuKCIgICAgdGhyb3cgbmV3IEVycm9yKFwiQmFkIGhhc2g6
IFwiICsgaGFzaCk7Iik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG91dC5wcmludGxuKHZh
ck5hbWUoYmxvY2spLCAiLmFwcGVuZChpbnN0KTsiKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
fSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJ
VCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuaAko
cmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1w
QXNKUy5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShC
M19KSVQpCi0KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewotCi1jbGFzcyBDb2RlOwotCi0vLyBUaGlz
IGlzIHVzZWQgZm9yIGJlbmNobWFya2luZy4gVmFyaW91cyBvcGVyYXRpb25zIG9uIEFpciBhcmUg
aW50ZXJlc3RpbmcgZnJvbSBhIGJlbmNobWFya2luZwotLy8gc3RhbmRwb2ludC4gV2UgY2FuIHdy
aXRlIHNvbWUgQWlyIHBoYXNlcyBpbiBKUyBhbmQgdGhlbiB1c2UgdGhhdCB0byBiZW5jaG1hcmsg
SlMuIFRoZSBiZW5jaG1hcmsKLS8vIGlzIGNhbGxlZCBKU0FpciwgYW5kIGl0J3MgaW4gUGVyZm9y
bWFuY2VUZXN0cy9KU0Fpci4KLXZvaWQgZHVtcEFzSlMoQ29kZSYsIFByaW50U3RyZWFtJik7Ci0K
LX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKLQotI2VuZGlmIC8vIEVOQUJMRShCM19K
SVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNw
cAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJH
ZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAi
QWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuaCIKICNpbmNsdWRlICJBaXJBbGxv
Y2F0ZVN0YWNrLmgiCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFpckR1bXBBc0pT
LmgiCiAjaW5jbHVkZSAiQWlyRWxpbWluYXRlRGVhZENvZGUuaCIKICNpbmNsdWRlICJBaXJGaXhP
YnZpb3VzU3BpbGxzLmgiCiAjaW5jbHVkZSAiQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmgi
CkBAIC03Myw2ICs3Miw4IEBAIHZvaWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkK
ICAgICAgICAgZGF0YUxvZygiSW5pdGlhbCBhaXI6XG4iKTsKICAgICAgICAgZGF0YUxvZyhjb2Rl
KTsKICAgICB9CisgICAgCisgICAgc2ltcGxpZnlDRkcoY29kZSk7CiAKICAgICBsb3dlck1hY3Jv
cyhjb2RlKTsKIApAQCAtMTA3LDIzICsxMDgsMTEgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlv
bihDb2RlJiBjb2RlKQogICAgIC8vIGRvZXMgdGhpbmdzIGxpa2UgaWRlbnRpZnkgd2hpY2ggY2Fs
bGVlLXNhdmVzIHdlJ3JlIHVzaW5nIGFuZCBzYXZlcyB0aGVtLgogICAgIGhhbmRsZUNhbGxlZVNh
dmVzKGNvZGUpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpkdW1wQWlyQXNKU0JlZm9yZUFsbG9j
YXRlU3RhY2soKSkgewotICAgICAgICBkYXRhTG9nKCJEdW1waW5nIEFpciBhcyBKUyBiZWZvcmUg
YWxsb2NhdGVTdGFjazpcbiIpOwotICAgICAgICBkdW1wQXNKUyhjb2RlLCBXVEY6OmRhdGFGaWxl
KCkpOwotICAgICAgICBkYXRhTG9nKCJBaXIgaGFzaDogIiwgY29kZS5qc0hhc2goKSwgIlxuIik7
Ci0gICAgfQotCiAgICAgLy8gVGhpcyB0dXJucyBhbGwgU3RhY2sgYW5kIENhbGxBcmcgQXJncyBp
bnRvIEFkZHIgYXJncyB0aGF0IHVzZSB0aGUgZnJhbWUgcG9pbnRlci4gSXQgZG9lcwogICAgIC8v
IHRoaXMgYnkgZmlyc3QtZml0IGFsbG9jYXRpbmcgc3RhY2sgc2xvdHMuIEl0IHNob3VsZCBiZSBw
cmV0dHkgZGFybiBjbG9zZSB0byBvcHRpbWFsLCBzbyB3ZQogICAgIC8vIHNob3VsZG4ndCBoYXZl
IHRvIHdvcnJ5IGFib3V0IHRoaXMgdmVyeSBtdWNoLgogICAgIGFsbG9jYXRlU3RhY2soY29kZSk7
CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OmR1bXBBaXJBZnRlckFsbG9jYXRlU3RhY2soKSkgewot
ICAgICAgICBkYXRhTG9nKCJEdW1waW5nIEFpciBhZnRlciBhbGxvY2F0ZVN0YWNrOlxuIik7Ci0g
ICAgICAgIGRhdGFMb2coY29kZSk7Ci0gICAgICAgIGRhdGFMb2coIkFpciBoYXNoOiAiLCBjb2Rl
LmpzSGFzaCgpLCAiXG4iKTsKLSAgICB9Ci0KICAgICAvLyBJZiB3ZSBjb2FsZXNjZWQgbW92ZXMg
dGhlbiB3ZSBjYW4gdW5icmVhayBjcml0aWNhbCBlZGdlcy4gVGhpcyBpcyB0aGUgbWFpbiByZWFz
b24gZm9yIHRoaXMKICAgICAvLyBwaGFzZS4KICAgICBzaW1wbGlmeUNGRyhjb2RlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHJldmlz
aW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3Nyw2NSBAQCBpbmxpbmUgYm9vbCBpc1g4
NlVEaXY2NFZhbGlkKGNvbnN0IEluc3QmCiAgICAgcmV0dXJuIGlzWDg2RGl2SGVscGVyVmFsaWQo
aW5zdCk7CiB9CiAKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoY29uc3QgSW5z
dCYgaW5zdCkKK3sKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgIHN3aXRjaCAoaW5z
dC5hcmdzLnNpemUoKSkgeworICAgIGNhc2UgMzoKKyAgICAgICAgcmV0dXJuIGluc3QuYXJnc1sw
XSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIGNhc2UgNToKKyAgICAgICAgcmV0dXJu
IGluc3QuYXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKFg4NikgfHwgQ1BVKFg4
Nl82NCkKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChjb25z
dCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpbnN0LmFyZ3NbMV0gPT0gVG1wKFg4NlJlZ2lz
dGVyczo6ZWF4KTsKK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVM4VmFsaWQoY29u
c3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0
KTsKK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVMxNlZhbGlkKGNvbnN0IEluc3Qm
IGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisK
K2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTMzJWYWxpZChjb25zdCBJbnN0JiBpbnN0KQor
eworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUg
Ym9vbCBpc0F0b21pY1N0cm9uZ0NBUzY0VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICBy
ZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNC
cmFuY2hBdG9taWNTdHJvbmdDQVM4VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1
cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wg
aXNCcmFuY2hBdG9taWNTdHJvbmdDQVMxNlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAg
cmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBi
b29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzJWYWxpZChjb25zdCBJbnN0JiBpbnN0KQorewor
ICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxp
bmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzY0VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkK
K3sKKyAgICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKwog
fSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJ
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bj
b2RlcwkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJPcGNvZGUub3Bjb2Rlcwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNyw2ICsxMTcsNyBAQCBBZGQzMiBVOkc6MzIs
IFVaRDpHOjMyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFk
ZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAgICAgeDg2
OiBUbXAsIEluZGV4CiAKQEAgLTEzNSw5ICsxMzYsMTIgQEAgeDg2OiBBZGQxNiBVOkc6MTYsIFVE
Okc6MTYKIDY0OiBBZGQ2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4Njog
SW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFk
ZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2
OiBUbXAsIEluZGV4CiAKIDY0OiBBZGQ2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgSW1t
LCBUbXAsIFRtcApAQCAtMTY2LDkgKzE3MCwxMiBAQCB4ODY6IEFkZEZsb2F0IFU6RjozMiwgVUQ6
RjozMgogU3ViMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0s
IEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwg
VG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRt
cCwgSW5kZXgKIAogYXJtNjQ6IFN1YjMyIFU6RzozMiwgVTpHOjMyLCBEOkc6MzIKICAgICBUbXAs
IFRtcCwgVG1wCkBAIC0xNzYsOSArMTgzLDEyIEBAIGFybTY0OiBTdWIzMiBVOkc6MzIsIFU6Rzoz
MiwgRDpHOjMyCiA2NDogU3ViNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4
ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2
OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAg
IHg4NjogVG1wLCBJbmRleAogCiBhcm02NDogU3ViNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAog
ICAgIFRtcCwgVG1wLCBUbXAKQEAgLTIwNCw5ICsyMTQsMTIgQEAgeDg2OiBTdWJGbG9hdCBVOkY6
MzIsIFVEOkY6MzIKIE5lZzMyIFVaRDpHOjMyCiAgICAgVG1wCiAgICAgeDg2OiBBZGRyCisgICAg
eDg2OiBJbmRleAogCiA2NDogTmVnNjQgVUQ6Rzo2NAogICAgIFRtcAorICAgIHg4NjogQWRkcgor
ICAgIHg4NjogSW5kZXgKIAogYXJtNjQ6IE5lZ2F0ZURvdWJsZSBVOkY6NjQsIEQ6Rjo2NAogICAg
IFRtcCwgVG1wCkBAIC0zMzAsOCArMzQzLDExIEBAIEFuZDMyIFU6RzozMiwgVVpEOkc6MzIKICAg
ICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4
NjogVG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAg
ICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IEFuZDY0IFU6Rzo2
NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC0zMzksNyArMzU1LDEzIEBA
IEFuZDMyIFU6RzozMiwgVVpEOkc6MzIKIAogeDg2XzY0OiBBbmQ2NCBVOkc6NjQsIFVEOkc6NjQK
ICAgICBUbXAsIFRtcAotICAgIHg4NjogSW1tLCBUbXAKKyAgICBJbW0sIFRtcAorICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisgICAg
QWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAogCiBBbmREb3VibGUgVTpGOjY0LCBVOkY6NjQsIEQ6
Rjo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ1OSw4ICs0ODEsMTEgQEAgT3IzMiBVOkc6MzIs
IFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgVG1wCiAgICAgeDg2OiBUbXAs
IEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4Njog
SW5kZXgsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAKIDY0
OiBPcjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00Njks
NiArNDk0LDEyIEBAIE9yMzIgVTpHOjMyLCBVWkQ6RzozMgogNjQ6IE9yNjQgVTpHOjY0LCBVRDpH
OjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgVG1wCisgICAgeDg2OiBJbW0sIEFkZHIK
KyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJ
bmRleAorICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAKIFhvcjMyIFU6
RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDgwLDggKzUxMSwx
MSBAQCBYb3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwg
VG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKICAgICB4ODY6IEFk
ZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2
OiBJbW0sIEluZGV4CiAKIDY0OiBYb3I2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1w
LCBUbXAsIFRtcApAQCAtNDkwLDYgKzUyNCwxMSBAQCBYb3IzMiBVOkc6MzIsIFVaRDpHOjMyCiA2
NDogWG9yNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IFRtcCwgQWRk
cgorICAgIHg4NjogVG1wLCBJbmRleAorICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRl
eCwgVG1wCisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICB4ODY6
IEltbSwgVG1wCiAKIGFybTY0OiBOb3QzMiBVOkc6MzIsIFpEOkc6MzIKQEAgLTQ5OCwxMyArNTM3
LDE1IEBAIGFybTY0OiBOb3QzMiBVOkc6MzIsIFpEOkc6MzIKIHg4NjogTm90MzIgVVpEOkc6MzIK
ICAgICBUbXAKICAgICBBZGRyCisgICAgSW5kZXgKIAogYXJtNjQ6IE5vdDY0IFU6Rzo2NCwgRDpH
OjY0CiAgICAgVG1wLCBUbXAKIAoteDg2OiBOb3Q2NCBVRDpHOjY0Cit4ODZfNjQ6IE5vdDY0IFVE
Okc6NjQKICAgICBUbXAKICAgICBBZGRyCisgICAgSW5kZXgKIAogYXJtNjQ6IEFic0RvdWJsZSBV
OkY6NjQsIEQ6Rjo2NAogICAgIFRtcCwgVG1wCkBAIC02NjgsMjcgKzcwOSwzNzcgQEAgTG9hZDgg
VTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3E4
IFU6Rzo4LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IElu
ZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwogU3RvcmU4IFU6Rzo4LCBEOkc6OAogICAg
IFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKICAgICB4ODY6IEltbSwgSW5kZXgKICAgICB4ODY6
IEltbSwgQWRkcgogCitTdG9yZVJlbDggVTpHOjgsIEQ6Rzo4IC9lZmZlY3RzCisgICAgeDg2OiBU
bXAsIEluZGV4CisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICB4
ODY6IEltbSwgQWRkcgorICAgIFRtcCwgU2ltcGxlQWRkcgorCiBMb2FkOFNpZ25lZEV4dGVuZFRv
MzIgVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRB
Y3E4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRk
ciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisKIExvYWQx
NiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRB
Y3ExNiBVOkc6MTYsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4
NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAorCiBMb2FkMTZTaWduZWRFeHRlbmRU
bzMyIFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9h
ZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6
IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAorCiBT
dG9yZTE2IFU6RzoxNiwgRDpHOjE2CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgorICAg
IHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisKK1N0b3JlUmVsMTYgVTpHOjE2
LCBEOkc6MTYgL2VmZmVjdHMKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IFRtcCwgQWRk
cgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgVG1wLCBTaW1w
bGVBZGRyCisKK0xvYWRBY3EzMiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6IEFk
ZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAorCitTdG9y
ZVJlbDMyIFU6RzozMiwgWkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogVG1wLCBBZGRyCisgICAg
eDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgK
KyAgICBUbXAsIFNpbXBsZUFkZHIKKworNjQ6IExvYWRBY3E2NCBVOkc6NjQsIFpEOkc6NjQgL2Vm
ZmVjdHMKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBs
ZUFkZHIsIFRtcAorCis2NDogU3RvcmVSZWw2NCBVOkc6NjQsIFpEOkc6NjQgL2VmZmVjdHMKKyAg
ICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRy
CisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgVG1wLCBTaW1wbGVBZGRyCisKKyMgVGhlIGZpcnN0
IG9wZXJhbmQgaXMgcmF4LgorIyBGSVhNRTogVGhpcyBmb3JtdWxhdGlvbiBtZWFucyB0aGF0IHRo
ZSBib29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGluIGVheCwgZXZlbiB0aG91Z2ggYWxsIHVz
ZXJzCisjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0aGF0LgoreDg2OiBBdG9taWNTdHJvbmdD
QVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4LCBaRDpHOjggL2VmZmVjdHMKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRt
cCwgSW5kZXgsIFRtcAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzE2IFU6RzozMiwgVUQ6RzoxNiwg
VTpHOjMyLCBVRDpHOjE2LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBU
bXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4
ODY6IEF0b21pY1N0cm9uZ0NBUzMyIFU6RzozMiwgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyLCBa
RDpHOjggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAg
IFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODZfNjQ6IEF0b21pY1N0cm9u
Z0NBUzY0IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0LCBaRDpHOjggL2VmZmVjdHMK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRt
cCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzggVUQ6Rzo4LCBVOkc6
OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzE2IFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiAv
ZWZmZWN0cworICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNTdHJvbmdDQVMzMiBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAg
ICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWlj
U3Ryb25nQ0FTNjQgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgVG1wKiwg
VG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEJyYW5jaEF0b21pY1N0cm9u
Z0NBUzggVTpHOjMyLCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjggL2JyYW5jaCAvZWZmZWN0cworICAg
IFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwg
SW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6
RzozMiwgVUQ6RzoxNiAvYnJhbmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1w
LCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEJyYW5jaEF0
b21pY1N0cm9uZ0NBUzMyIFU6RzozMiwgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyIC9icmFuY2gg
L2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEluZGV4CisKK3g4Nl82NDogQnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQgVTpH
OjMyLCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQgL2JyYW5jaCAvZWZmZWN0cworICAgIFN0YXR1
c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgK
KworeDg2OiBBdG9taWNBZGQ4IFU6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIK
KyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0
b21pY0FkZDE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIElt
bSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQWRk
MzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRl
eAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNBZGQ2NCBV
Okc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjggVTpHOjgsIFVE
Okc6OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViMTYgVTpHOjE2LCBVRDpHOjE2IC9l
ZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWIzMiBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMK
KyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODZfNjQ6IEF0b21pY1N1YjY0IFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogQXRvbWljQW5kOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1tLCBBZGRy
CisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBB
dG9taWNBbmQxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJ
bW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0Fu
ZDMyIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljQW5kNjQg
VTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAor
ICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNPcjggVTpHOjgsIFVE
Okc6OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3IxNiBVOkc6MTYsIFVEOkc6MTYgL2Vm
ZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yMzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisg
ICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2XzY0OiBBdG9taWNPcjY0IFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIElt
bSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisK
K3g4NjogQXRvbWljWG9yOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNYb3IxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjMy
IFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljWG9yNjQgVTpH
OjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNOZWc4IFVEOkc6OCAvZWZm
ZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05lZzE2IFVEOkc6MTYgL2Vm
ZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOZWczMiBVRDpHOjMyIC9l
ZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Nl82NDogQXRvbWljTmVnNjQgVUQ6Rzo2
NCAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDggVUQ6Rzo4
IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTm90MTYgVUQ6Rzox
NiAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDMyIFVEOkc6
MzIgL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2XzY0OiBBdG9taWNOb3Q2NCBV
RDpHOjY0IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljWGNoZ0Fk
ZDggVUQ6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogQXRvbWljWGNoZ0FkZDE2IFVEOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZ0FkZDMyIFVEOkc6MzIs
IFVEOkc6MzIgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82
NDogQXRvbWljWGNoZ0FkZDY0IFVEOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZzggVUQ6Rzo4LCBVRDpHOjggL2Vm
ZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZzE2
IFVEOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogQXRvbWljWGNoZzMyIFVEOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBUbXAs
IEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljWGNoZzY0IFVEOkc6NjQsIFVE
Okc6NjQgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK2FybTY0OiBM
b2FkTGluazggVTpHOjgsIFpEOkc6OCAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCith
cm02NDogTG9hZExpbmtBY3E4IFU6Rzo4LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRy
LCBUbXAKKworIyBTdXBlciBjb25mdXNpbmcgZmFjdDogdGhpcyByZXR1cm5zIDAgdG8gbWVhbiBz
dWNjZXNzLCAxIHRvIG1lYW4gZmFpbHVyZS4KK2FybTY0OiBTdG9yZUNvbmQ4IFU6Rzo4LCBEOkc6
OCwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBT
dG9yZUNvbmRSZWw4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2lt
cGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGluazE2IFU6RzoxNiwgWkQ6RzoxNiAvZWZmZWN0
cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmtBY3ExNiBVOkc6MTYsIFpE
Okc6MTYgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDE2
IFU6RzoxNiwgRDpHOjE2LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBU
bXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDE2IFU6RzoxNiwgRDpHOjE2LCBFWkQ6Rzo4IC9lZmZl
Y3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rMzIgVTpHOjMy
LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGlu
a0FjcTMyIFU6RzozMiwgWkQ6RzozMiAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCith
cm02NDogU3RvcmVDb25kMzIgVTpHOjMyLCBEOkc6MzIsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBU
bXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMzIgVTpHOjMyLCBEOkc6
MzIsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDog
TG9hZExpbms2NCBVOkc6NjQsIFpEOkc6NjQgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAK
KworYXJtNjQ6IExvYWRMaW5rQWNxNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCisgICAgU2lt
cGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQ2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6
OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRS
ZWw2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRk
ciwgVG1wCisKK2FybTY0OiBEZXBlbmQzMiBVOkc6MzIsIEQ6RzozMgorICAgIFRtcCwgVG1wCisK
K2FybTY0OiBEZXBlbmQ2NCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wCiAKIENvbXBhcmUz
MiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAs
IFRtcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2Nr
T3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
T3B0aW1pemVCbG9ja09yZGVyLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTc3LDYgKzE3NywxMCBAQCB2b2lkIG9wdGltaXplQmxvY2tPcmRlcihDb2RlJiBjb2Rl
KQogICAgICAgICBjYXNlIEJyYW5jaFN1YjY0OgogICAgICAgICBjYXNlIEJyYW5jaE5lZzMyOgog
ICAgICAgICBjYXNlIEJyYW5jaE5lZzY0OgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0cm9u
Z0NBUzg6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTY6CisgICAgICAgIGNh
c2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzI6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ry
b25nQ0FTNjQ6CiAgICAgICAgICAgICBpZiAoY29kZS5maW5kTmV4dEJsb2NrKGJsb2NrKSA9PSBi
bG9jay0+c3VjY2Vzc29yQmxvY2soMCkgJiYgYnJhbmNoLmFyZ3NbMF0uaXNJbnZlcnRpYmxlKCkp
IHsKICAgICAgICAgICAgICAgICBzdGQ6OnN3YXAoYmxvY2stPnN1Y2Nlc3NvcigwKSwgYmxvY2st
PnN1Y2Nlc3NvcigxKSk7CiAgICAgICAgICAgICAgICAgYnJhbmNoLmFyZ3NbMF0gPSBicmFuY2gu
YXJnc1swXS5pbnZlcnRlZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJQYWRJbnRlcmZlcmVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkocmV2aXNpb24gMjEzMjYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHZvaWQgcGFkSW50ZXJmZXJlbmNlKENvZGUmIGNvZGUp
CiAgICAgICAgICAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywgV2lkdGgp
IHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyb2xlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgQXJnOjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVh
cmx5WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vhcmx5RGVmID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6TGF0ZVVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlQ29sZFVzZToKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJs
eURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcihi
YW5rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0QmVmb3JlLmdldChy
ZWcpICYmICFzZXRBZnRlci5nZXQocmVnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRBZnRlci5zZXQocmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvb3Bjb2RlX2dlbmVyYXRvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHJldmlzaW9uIDIxMzI2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkod29ya2luZyBjb3B5
KQpAQCAtNTEsMTQgKzUxLDQ5IEBAIGNsYXNzIEFyZwogICAgICAgICBAYmFuayA9IGJhbmsKICAg
ICAgICAgQHdpZHRoID0gd2lkdGgKICAgICBlbmQKLQotICAgIGRlZiB3aWR0aENvZGUKKyAgICAK
KyAgICBkZWYgc2VsZi53aWR0aENvZGUod2lkdGgpCiAgICAgICAgIGlmIHdpZHRoID09ICJQdHIi
CiAgICAgICAgICAgICAicG9pbnRlcldpZHRoKCkiCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICJXaWR0aCN7d2lkdGh9IgogICAgICAgICBlbmQKICAgICBlbmQKKworICAgIGRlZiB3aWR0aENv
ZGUKKyAgICAgICAgQXJnLndpZHRoQ29kZSh3aWR0aCkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
c2VsZi5yb2xlQ29kZShyb2xlKQorICAgICAgICBjYXNlIHJvbGUKKyAgICAgICAgd2hlbiAiVSIK
KyAgICAgICAgICAgICJVc2UiCisgICAgICAgIHdoZW4gIkQiCisgICAgICAgICAgICAiRGVmIgor
ICAgICAgICB3aGVuICJaRCIKKyAgICAgICAgICAgICJaRGVmIgorICAgICAgICB3aGVuICJVRCIK
KyAgICAgICAgICAgICJVc2VEZWYiCisgICAgICAgIHdoZW4gIlVaRCIKKyAgICAgICAgICAgICJV
c2VaRGVmIgorICAgICAgICB3aGVuICJVQSIKKyAgICAgICAgICAgICJVc2VBZGRyIgorICAgICAg
ICB3aGVuICJTIgorICAgICAgICAgICAgIlNjcmF0Y2giCisgICAgICAgIHdoZW4gIkVEIgorICAg
ICAgICAgICAgIkVhcmx5RGVmIgorICAgICAgICB3aGVuICJFWkQiCisgICAgICAgICAgICAiRWFy
bHlaRGVmIgorICAgICAgICB3aGVuICJMVSIKKyAgICAgICAgICAgICJMYXRlVXNlIgorICAgICAg
ICBlbHNlCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgcm9sZUNvZGUKKyAgICAgICAgQXJnLnJvbGVDb2RlKHJvbGUpCisgICAgZW5kCiBlbmQK
IAogY2xhc3MgT3ZlcmxvYWQKQEAgLTE4Miw3ICsyMTcsNyBAQCBkZWYgbGV4KHN0ciwgZmlsZU5h
bWUpCiBlbmQKIAogZGVmIGlzUm9sZSh0b2tlbikKLSAgICB0b2tlbiA9fiAvXEEoKFUpfChEKXwo
VUQpfChaRCl8KFVaRCl8KFVBKXwoUykpXFovCisgICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVE
KXwoWkQpfChVWkQpfChVQSl8KFMpfChFRCl8KEVaRCl8KExVKSlcWi8KIGVuZAogCiBkZWYgaXNH
Rih0b2tlbikKQEAgLTE5MCw3ICsyMjUsNyBAQCBkZWYgaXNHRih0b2tlbikKIGVuZAogCiBkZWYg
aXNLaW5kKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwoQml0
SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJs
ZUNvbmQpKVxaLworICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwoQml0SW1t
KXwoQml0SW1tNjQpfChTaW1wbGVBZGRyKXwoQWRkcil8KEluZGV4KXwoUmVsQ29uZCl8KFJlc0Nv
bmQpfChEb3VibGVDb25kKXwoU3RhdHVzQ29uZCkpXFovCiBlbmQKIAogZGVmIGlzQXJjaCh0b2tl
bikKQEAgLTI2NCw3ICsyOTksNyBAQCBjbGFzcyBQYXJzZXIKIAogICAgIGRlZiBjb25zdW1lS2lu
ZAogICAgICAgICByZXN1bHQgPSB0b2tlbi5zdHJpbmcKLSAgICAgICAgcGFyc2VFcnJvcigiRXhw
ZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgQWRkciwgSW5k
ZXgsIFJlbENvbmQsIFJlc0NvbmQsIG9yIERvdWJsZUNvbmQpIikgdW5sZXNzIGlzS2luZChyZXN1
bHQpCisgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGtpbmQgKEltbSwgQmlnSW1tLCBCaXRJ
bW0sIEJpdEltbTY0LCBUbXAsIFNpbXBsZUFkZHIsIEFkZHIsIEluZGV4LCBSZWxDb25kLCBSZXND
b25kLCBEb3VibGVDb25kLCBvciBTdGF0dXNDb25kKSIpIHVubGVzcyBpc0tpbmQocmVzdWx0KQog
ICAgICAgICBhZHZhbmNlCiAgICAgICAgIHJlc3VsdAogICAgIGVuZApAQCAtNjM0LDI4ICs2Njks
NyBAQCB3cml0ZUgoIk9wY29kZVV0aWxzIikgewogICAgICAgICBlbHNlCiAgICAgICAgICAgICBv
dmVybG9hZC5zaWduYXR1cmUuZWFjaF93aXRoX2luZGV4IHsKICAgICAgICAgICAgICAgICB8IGFy
ZywgaW5kZXggfAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHJvbGUgPSBuaWwK
LSAgICAgICAgICAgICAgICBjYXNlIGFyZy5yb2xlCi0gICAgICAgICAgICAgICAgd2hlbiAiVSIK
LSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2UiCi0gICAgICAgICAgICAgICAgd2hlbiAi
RCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYiCi0gICAgICAgICAgICAgICAgd2hl
biAiWkQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiWkRlZiIKLSAgICAgICAgICAgICAg
ICB3aGVuICJVRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VEZWYiCi0gICAgICAg
ICAgICAgICAgd2hlbiAiVVpEIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZVpEZWYi
Ci0gICAgICAgICAgICAgICAgd2hlbiAiVUEiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAi
VXNlQWRkciIKLSAgICAgICAgICAgICAgICB3aGVuICJTIgotICAgICAgICAgICAgICAgICAgICBy
b2xlID0gIlNjcmF0Y2giCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICByYWlzZQotICAgICAgICAgICAgICAgIGVuZAotCi0gICAgICAgICAgICAgICAgb3V0cC5wdXRz
ICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7cm9sZX0sICN7YXJnLmJhbmt9UCwgI3th
cmcud2lkdGhDb2RlfSk7IgorICAgICAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3Rvcihhcmdz
WyN7aW5kZXh9XSwgQXJnOjoje2FyZy5yb2xlQ29kZX0sICN7YXJnLmJhbmt9UCwgI3thcmcud2lk
dGhDb2RlfSk7IgogICAgICAgICAgICAgfQogICAgICAgICBlbmQKICAgICB9CkBAIC04MDQsNiAr
ODE4LDkgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgd2hl
biAiQml0SW1tNjQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKCFBcmc6Omlz
VmFsaWRCaXRJbW02NEZvcm0oYXJnc1sje2luZGV4fV0udmFsdWUoKSkpIgogICAgICAgICAgICAg
ICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7IgorICAgICAgICAgICAgICAg
IHdoZW4gIlNpbXBsZUFkZHIiCisgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKCFh
cmdzWyN7aW5kZXh9XS50bXAoKS5pc0dQKCkpIgorICAgICAgICAgICAgICAgICAgICBvdXRwLnB1
dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7IgogICAgICAgICAgICAgICAgIHdoZW4gIkFkZHIiCiAg
ICAgICAgICAgICAgICAgICAgIGlmIGFyZy5yb2xlID09ICJVQSIKICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dHAucHV0cyAiaWYgKGFyZ3NbI3tpbmRleH1dLmlzU3RhY2soKSAmJiBhcmdzWyN7
aW5kZXh9XS5zdGFja1Nsb3QoKS0+aXNTcGlsbCgpKSIKQEAgLTgxOSw2ICs4MzYsNyBAQCB3cml0
ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJSZWxDb25kIgog
ICAgICAgICAgICAgICAgIHdoZW4gIlJlc0NvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91
YmxlQ29uZCIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQga2luZDogI3tr
aW5kLm5hbWV9IgogICAgICAgICAgICAgICAgIGVuZApAQCAtMTA5NSw3ICsxMTEzLDcgQEAgd3Jp
dGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQg
ImFyZ3NbI3tpbmRleH1dLmFzVHJ1c3RlZEltbTMyKCkiCiAgICAgICAgICAgICAgICAgd2hlbiAi
QmlnSW1tIiwgIkJpdEltbTY0IgogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdz
WyN7aW5kZXh9XS5hc1RydXN0ZWRJbW02NCgpIgotICAgICAgICAgICAgICAgIHdoZW4gIkFkZHIi
CisgICAgICAgICAgICAgICAgd2hlbiAiU2ltcGxlQWRkciIsICJBZGRyIgogICAgICAgICAgICAg
ICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc0FkZHJlc3MoKSIKICAgICAgICAg
ICAgICAgICB3aGVuICJJbmRleCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJn
c1sje2luZGV4fV0uYXNCYXNlSW5kZXgoKSIKQEAgLTExMDUsNiArMTEyMyw4IEBAIHdyaXRlSCgi
T3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdz
WyN7aW5kZXh9XS5hc1Jlc3VsdENvbmRpdGlvbigpIgogICAgICAgICAgICAgICAgIHdoZW4gIkRv
dWJsZUNvbmQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1d
LmFzRG91YmxlQ29uZGl0aW9uKCkiCisgICAgICAgICAgICAgICAgd2hlbiAiU3RhdHVzQ29uZCIK
KyAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNTdGF0dXND
b25kaXRpb24oKSIKICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgIH0KIApAQCAtMTE0
OCwyNyArMTE2OCw3IEBAIEZpbGUub3BlbigiSlNBaXJfb3Bjb2RlLmpzIiwgInciKSB7CiAgICAg
ICAgICAgICAgICAgb3V0cC5wdXRzICJjYXNlICN7b3ZlcmxvYWQuc2lnbmF0dXJlLmxlbmd0aH06
IiBpZiBuZWVkT3ZlcmxvYWRTd2l0Y2gKICAgICAgICAgICAgICAgICBvdmVybG9hZC5zaWduYXR1
cmUuZWFjaF93aXRoX2luZGV4IHsKICAgICAgICAgICAgICAgICAgICAgfCBhcmcsIGluZGV4IHwK
LSAgICAgICAgICAgICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAgICAgICAgICBjYXNl
IGFyZy5yb2xlCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlUiCi0gICAgICAgICAgICAgICAg
ICAgICAgICByb2xlID0gIlVzZSIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiRCIKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVu
ICJaRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiWkRlZiIKLSAgICAgICAgICAg
ICAgICAgICAgd2hlbiAiVUQiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZURl
ZiIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVVpEIgotICAgICAgICAgICAgICAgICAgICAg
ICAgcm9sZSA9ICJVc2VaRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVQSIKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlQWRkciIKLSAgICAgICAgICAgICAgICAgICAg
d2hlbiAiUyIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2NyYXRjaCIKLSAgICAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAg
ICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICBvdXRwLnB1dHMgImluc3QudmlzaXRBcmcoI3tpbmRleH0sIGZ1bmMsIEFyZy4je3JvbGV9
LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRofSk7IgorICAgICAgICAgICAgICAgICAgICBvdXRw
LnB1dHMgImluc3QudmlzaXRBcmcoI3tpbmRleH0sIGZ1bmMsIEFyZy4je2FyZy5yb2xlQ29kZX0s
ICN7YXJnLmJhbmt9UCwgI3thcmcud2lkdGh9KTsiCiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIG91dHAucHV0cyAiYnJlYWs7IgogICAgICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjEzMjYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MTUsOSArNDE1LDYgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdihi
b29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihib29sLCBleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlciwgZmFsc2UsIE5vcm1hbCwgImV4
cG9zZSB0aGUgaW50ZXJuYWwgbW9kdWxlIGxvYWRlciBvYmplY3QgdG8gdGhlIGdsb2JhbCBzcGFj
ZSBmb3IgZGVidWdnaW5nIikgXAogICAgIFwKLSAgICB2KGJvb2wsIGR1bXBBaXJBc0pTQmVmb3Jl
QWxsb2NhdGVTdGFjaywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIHYoYm9vbCwgZHVt
cEFpckFmdGVyQWxsb2NhdGVTdGFjaywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIFwK
ICAgICB2KGJvb2wsIHVzZVN1cGVyU2FtcGxlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAog
ICAgIFwKICAgICB2KGJvb2wsIHJlcG9ydExMSW50U3RhdHMsIGZhbHNlLCBDb25maWd1cmFibGUs
ICJSZXBvcnRzIExMSW50IHN0YXRpc3RpY3MiKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303361</attachid>
            <date>2017-03-03 17:03:41 -0800</date>
            <delta_ts>2017-03-03 18:00:27 -0800</delta_ts>
            <desc>almost done arm wrestling</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>348788</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTMzNzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxNCBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAv
KiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87
IH07CisJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQzMx
RTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggKi87IH07CiAJCTBGMkQ0
REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8q
IERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERTgxOTgz
MkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlz
U3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDUsOCArMjI1Myw2IEBACiAJCURDMjE0MzA4MUNBMzJF
NTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAq
LzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIwOTFEMzQzMTYxMDBC
QTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREMzRDJCMEIxRDM0
Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRCOEMxRDAwRTgyMjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5j
cHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM0NTRCOEIxRDAw
RTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1QjVEMUNFMjZFQTAw
MDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2
ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1
QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4
IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgKi87
IH07CkBAIC0yNzcxLDYgKzI3NzcsMTQgQEAKIAkJMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5IC8q
IEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0
aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRDFF
NjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7IHBhdGggPSBiMy9C
M1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0IzMUU2MzQzRTgw
MEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAv
KiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRv
bWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4Mzkg
LyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJsb2Nr
SW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkEx
RTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIv
QWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
QzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MxMUU2NjRBNUEwMEMxMzgz
OSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRpdmVUcmFpdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQzMxRTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFs
dWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTWVtb3J5VmFs
dWVJbmxpbmVzLmg7IHBhdGggPSBiMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQjE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJT
Y29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1Z2dlclNj
b3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREMxOTgzMkQzNDAw
N0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGVidWdnZXJTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENERE
RjE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFR5cGVQcm9maWxlckxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
Nzg3LDggKzQ4MDEsNiBAQAogCQlEQzIxNDMwNjFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURDM0QyQjA5MUQzNDMxNjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwQ2VsbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwQjFEMzQzNzZFMDBCQTkxOEMgLyogSGVhcENlbGwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcENlbGwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEQzQ1NEI4QTFEMDBFODFGMDA0QzE4QUYgLyog
QWlyRHVtcEFzSlMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWly
RHVtcEFzSlMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pT
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckR1bXBBc0pTLmg7IHBhdGgg
PSBiMy9haXIvQWlyRHVtcEFzSlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2
MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJFdmVudC5jcHA7IHBhdGggPSBwcm9maWxl
ci9Qcm9maWxlckV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVC
NUExQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJFdmVudC5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYwNUI1QjFDRTI2RTk4MDA1
OTM3MTggLyogUHJvZmlsZXJVSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gUHJvZmlsZXJVSUQuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMwNiw2ICs1MzE4LDggQEAKIAkJCQkwRkVD
ODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4
MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4
MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNC
YW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5j
cHAgKi8sCkBAIC01MzY4LDYgKzUzODIsNyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyog
QjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4
MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3
NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTM5MCw4ICs1NDA1LDEwIEBACiAJCQkJNDNBQjI2
QzUxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5oICovLAogCQkJCTBGRUM4NEQ1MUJE
QUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRENjFCREFD
REFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5oICovLAorCQkJCTBGMkM2M0MzMUU2OUVGOTIw
MEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oICovLAogCQkJCTBGMzM4RTAzMUJGMDI3
NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuY3BwICovLAogCQkJCTBGMzM4RTA0MUJGMDI3
NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuaCAqLywKKwkJCQkwRjJDNjNDMTFFNjY0QTVB
MDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLywKIAkJCQkwRjMzOEUwNTFCRjAyNzZDMDAx
M0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3QuaCAqLywKIAkJCQkwRjMzOEUwNjFCRjAyNzZDMDAx
M0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmNwcCAqLywKIAkJCQkwRjMzOEUwNzFCRjAyNzZD
MDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmggKi8sCkBAIC01NDgzLDYgKzU1MDAsOCBA
QAogCQkJCTBGNjRFQUYyMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggKi8sCiAJ
CQkJMEZFQzg1NEMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suY3BwICovLAogCQkJ
CTBGRUM4NTREMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmggKi8sCisJCQkJMEYy
QzYzQjkxRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLywKKwkJ
CQkwRjJDNjNCQTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLywK
IAkJCQkwRkIzODc4QjFCRkJDNDREMDBFM0FCMUUgLyogQWlyQmxvY2tXb3JrbGlzdC5oICovLAog
CQkJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3Bw
ICovLAogCQkJCTBGNjE4MzIxMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRp
b24uaCAqLywKQEAgLTU0OTQsOCArNTUxMyw2IEBACiAJCQkJMEYxMEYxQTIxQzQyMEJGMDAwMUMw
N0QyIC8qIEFpckN1c3RvbS5oICovLAogCQkJCTc5QUJCMTdCMUU1Q0NCNTcwMDQ1QjlBNiAvKiBB
aXJEaXNhc3NlbWJsZXIuY3BwICovLAogCQkJCTc5QUJCMTdDMUU1Q0NCNTcwMDQ1QjlBNiAvKiBB
aXJEaXNhc3NlbWJsZXIuaCAqLywKLQkJCQlEQzQ1NEI4QTFEMDBFODFGMDA0QzE4QUYgLyogQWly
RHVtcEFzSlMuY3BwICovLAotCQkJCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1w
QXNKUy5oICovLAogCQkJCTBGNDU3MDM2MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVE
ZWFkQ29kZS5jcHAgKi8sCiAJCQkJMEY0NTcwMzcxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1p
bmF0ZURlYWRDb2RlLmggKi8sCiAJCQkJMEY2MTgzMjMxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVt
aXRTaHVmZmxlLmNwcCAqLywKQEAgLTczNDUsNiArNzM2Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMUZFNTFCMTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9y
dFJlYXNvbi5oICovLAorCQkJCTBGMkM2M0JGMUU2NjBFQTUwMEMxMzgzOSAvKiBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmNwcCAqLywKIAkJCQk4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oICovLAogCQkJCTBGMzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAv
KiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAqLywKIAkJCQk4NjQwOTIzQjE1NkVF
RDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLywKQEAgLTczNzMsOCArNzM5MSw4IEBA
CiAJCQkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICov
LAogCQkJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIu
Y3BwICovLAogCQkJCUZFNjhDNjM2MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclBy
aW50ZXIuaCAqLywKLQkJCQk4NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODYuaCAqLywKIAkJCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODZfNjQuaCAqLywKKwkJCQk4NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3Nl
bWJsZXJYODYuaCAqLywKIAkJCQlBN0E0QUUwNzE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uY3BwICovLAogCQkJCTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovLAogCQkJCTY1ODYwMTc3MTg1QThGNUUwMDAzMEVF
RSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oICovLApAQCAtNzk2NCw3ICs3OTgy
LDYgQEAKIAkJCQkwRkVDODU3NDFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU3NjFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3Rv
bS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREM0NTRCOEQxRDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1
bXBBc0pTLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4MzJEMUM0NUJG
MDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0REUx
Q0YxQzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuaCBpbiBIZWFkZXJzICov
LApAQCAtNzk3Nyw2ICs3OTk0LDcgQEAKIAkJCQkwRkVDODU4MDFCREFDREM3MDA4MEZGNzQgLyog
QWlySW5zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1ODExQkRBQ0RDNzAwODBGRjc0IC8q
IEFpckluc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRGNjdENzFEOURDNDQyMDAx
Qjk4MjUgLyogQWlyS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQkMxRTYzNDQwQzAw
QzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0
RDQzODFDMDAxNjFDMDA4MUQ2NjMgLyogQWlyTGl2ZW5lc3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRTM0QzFBMUM0QjM5QUUwMDAzQTUxMiAvKiBBaXJMb2dSZWdpc3RlclByZXNzdXJlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjYxODMyRjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyTG93ZXJBZnRl
clJlZ0FsbG9jLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNjgsNiArODA4Niw3IEBACiAJCQkJNDM0
MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODVCMzFCREVEOTU3MDA4MEZGNzQgLyogQjNDb25zdFB0clZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjMzOERGNjFCRTkzRDU1MDAxM0M4OEYgLyogQjNDb25zdHJhaW5l
ZFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCODFFNjM0M0Y3MDBDMTM4MzkgLyog
QjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4RTBF
MUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjMzRkNGQzFDMTYyNUJFMDAzMjNGNjcgLyogQjNEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjZCOEFEOTFDNEVEREEyMDA5NjkwNTIgLyogQjNEdXBsaWNhdGVUYWlscy5oIGluIEhl
YWRlcnMgKi8sCkBAIC04MjU4LDYgKzgyNzcsNyBAQAogCQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4
REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDREOTAzMTdB
MEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzA0RDkwNDE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBC
M05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzcxNDNGQ0QzRjAwNjhC
NzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDNFNDAyMUI2
MThBQUYwMEM4MEUxRSAvKiBERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMThEM0QwMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLApAQCAtODM4OCw2ICs4
NDA4LDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4NDQ3MjggLyogREZHT1NSRXhpdEZ1enou
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFRTE3MTc4RTcz
MDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50b21JbnNlcnRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMxNEVGOTBBRjAwQzcyNTMyIC8qIERGR1Bo
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFQjE5RDBCQTdEMDBCMUQxQjUgLyogREZH
UGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAtODgwNiw2ICs4ODI3LDcgQEAKIAkJCQk3
OUI4MTk5MzFERDI1Q0Y1MDBEREM3MTQgLyogSlNHbG9iYWxPYmplY3RJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTEwMDdDMTE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1
MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2Jq
ZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZB
Q0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKQEAgLTk4MTcsNiArOTgzOSw3IEBACiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNB
OTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQzAxRTY2MEVB
NzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtOTgyNyw3ICs5ODUwLDYgQEAKIAkJCQkwRkVDODU3MzFCREFDREM3MDA4MEZGNzQgLyog
QWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTc1MUJEQUNEQzcw
MDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjE4MzJCMUM0NUJG
MDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJREM0NTRCOEMx
RDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0UxQzRDMUI1NDAwNEQ2QzExIC8qIEFpckZp
eE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI3NCw2ICsxMDI5Niw3IEBA
CiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVk
U2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAv
KiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYz
NDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4
RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQwRTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJ
bmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMjkyLDYgKzEwMzE1
LDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJF
RDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBBMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNl
cnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMx
IC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyogSW50ZXJuYWxGdW5jdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
Njk0LDYgKzY5NCwyMSBAQCBwcml2YXRlOgogICAgICAgICBMZHJMaXRlcmFsT3BfTERSU1cgPSAy
LAogICAgICAgICBMZHJMaXRlcmFsT3BfMTI4QklUID0gMgogICAgIH07CisgICAgCisgICAgZW51
bSBFeG90aWNMb2FkRmVuY2UgeworICAgICAgICBFeG90aWNMb2FkRmVuY2VfTm9uZSwKKyAgICAg
ICAgRXhvdGljTG9hZEZlbmNlX0FjcXVpcmUKKyAgICB9OworICAgIAorICAgIGVudW0gRXhvdGlj
TG9hZEF0b21pYyB7CisgICAgICAgIEV4b3RpY0xvYWRBdG9taWNfTGluaywKKyAgICAgICAgRXhv
dGljTG9hZEF0b21pY19Ob25lCisgICAgfTsKKworICAgIGVudW0gRXhvdGljU3RvcmVGZW5jZSB7
CisgICAgICAgIEV4b3RpY1N0b3JlRmVuY2VfTm9uZSwKKyAgICAgICAgRXhvdGljU3RvcmVGZW5j
ZV9SZWxlYXNlLAorICAgIH07CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbWVtUGFpck9mZnNldFNo
aWZ0KGJvb2wgViwgTWVtUGFpck9wU2l6ZSBzaXplKQogICAgIHsKQEAgLTE1MzEsNiArMTU0Niw0
OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbnNuKDB4ZDUwMzNhYmYpOwogICAgIH0KKyAg
ICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBsZGFyKFJlZ2lzdGVySUQg
ZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7Cisg
ICAgICAgIGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUsIEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJl
LCBFeG90aWNMb2FkQXRvbWljX05vbmUsIGRzdCwgc3JjKSk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgbGR4cihSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJ
RCBzcmMpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGV4
b3RpY0xvYWQoTUVNT1BTSVpFLCBFeG90aWNMb2FkRmVuY2VfTm9uZSwgRXhvdGljTG9hZEF0b21p
Y19MaW5rLCBkc3QsIHNyYykpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4K
KyAgICB2b2lkIGxkYXhyKFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7Cisg
ICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZXhvdGljTG9hZChNRU1PUFNJ
WkUsIEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlLCBFeG90aWNMb2FkQXRvbWljX0xpbmssIGRzdCwg
c3JjKSk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lk
IHN0eHIoUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkK
KyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZXhvdGljU3Rv
cmUoTUVNT1BTSVpFLCBFeG90aWNTdG9yZUZlbmNlX05vbmUsIHJlc3VsdCwgc3JjLCBkc3QpKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdGxyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpF
KCk7CisgICAgICAgIGluc24oc3RvcmVSZWxlYXNlKE1FTU9QU0laRSwgc3JjLCBkc3QpKTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdGx4cihSZWdpc3Rl
cklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihleG90aWNTdG9yZShNRU1PUFNJWkUs
IEV4b3RpY1N0b3JlRmVuY2VfUmVsZWFzZSwgcmVzdWx0LCBzcmMsIGRzdCkpOworICAgIH0KIAog
ICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3JuKFJl
Z2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCkBAIC0zMjkyLDcgKzMz
NDksNyBAQCBwcml2YXRlOgogICAgIH0KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgZXhj
ZXBuR2VuZXJhdGlvbkltbU1hc2soKQogICAgIHsKLSAgICAgICAgdWludDE2X3QgaW1tMTYgPSAg
c3RkOjpudW1lcmljX2xpbWl0PHVpbnQxNl90Pjo6bWF4KCk7CisgICAgICAgIHVpbnQxNl90IGlt
bTE2ID0gIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKTsKICAgICAgICAgcmV0
dXJuIChzdGF0aWNfY2FzdDxpbnQ+KGltbTE2KSA8PCA1KTsKICAgICB9CiAKQEAgLTM2MDEsNyAr
MzY1OCwyMiBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBpbnQgb3A0ID0gMDsKICAgICAgICAg
cmV0dXJuICgweGQ2MDAwMDAwIHwgb3BjIDw8IDIxIHwgb3AyIDw8IDE2IHwgb3AzIDw8IDEwIHwg
eE9yWnIocm4pIDw8IDUgfCBvcDQpOwogICAgIH0KLQorICAgIAorICAgIHN0YXRpYyBpbnQgZXhv
dGljTG9hZChNZW1PcFNpemUgc2l6ZSwgRXhvdGljTG9hZEZlbmNlIGZlbmNlLCBFeG90aWNMb2Fk
QXRvbWljIGF0b21pYywgUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc3JjKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIDB4MDg1ZjdjMDAgfCBzaXplIDw8IDMwIHwgZmVuY2UgPDwgMTUgfCBhdG9t
aWMgPDwgMjMgfCBzcmMgPDwgNSB8IGRzdDsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGludCBz
dG9yZVJlbGVhc2UoTWVtT3BTaXplIHNpemUsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRz
dCkKKyAgICB7CisgICAgICAgIHJldHVybiAweDA4OWZmYzAwIHwgc2l6ZSA8PCAzMCB8IGRzdCA8
PCA1IHwgc3JjOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgaW50IGV4b3RpY1N0b3JlKE1lbU9w
U2l6ZSBzaXplLCBFeG90aWNTdG9yZUZlbmNlIGZlbmNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIDB4MDgw
MDdjMDAgfCBzaXplIDw8IDMwIHwgcmVzdWx0IDw8IDE2IHwgZmVuY2UgPDwgMTUgfCBkc3QgPDwg
NSB8IHNyYzsKKyAgICB9CisgICAgCiAgICAgLy8gV29ya2Fyb3VuZCBmb3IgQ29ydGV4LUE1MyBl
cnJhdHVtICg4MzU3NjkpLiBFbWl0IGFuIGV4dHJhIG5vcCBpZiB0aGUKICAgICAvLyBsYXN0IGlu
c3RydWN0aW9uIGluIHRoZSBidWZmZXIgaXMgYSBsb2FkLCBzdG9yZSBvciBwcmVmZXRjaC4gTmVl
ZGVkCiAgICAgLy8gYmVmb3JlIDY0LWJpdCBtdWx0aXBseS1hY2N1bXVsYXRlIGluc3RydWN0aW9u
cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyLmgiIC8vIEhhdmUgdG8gYnJlYWsgd2l0aCBzdHlsZSBiZWNhdXNlIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaCBpcyBhIHNoYWR5IGhlYWRlci4KKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisK
KyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sK
KyAgICBzd2l0Y2ggKGNvbmRpdGlvbikgeworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ckJhc2U6OlN1Y2Nlc3M6CisgICAgICAgIG91dC5wcmludCgiU3VjY2VzcyIpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6RmFpbHVyZToKKyAg
ICAgICAgb3V0LnByaW50KCJGYWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
KyNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlz
aW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUmFuZG9tLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtNTAsOCArNTEsMjggQEAgbmFtZXNwYWNlIERGRyB7CiBzdHJ1Y3Qg
T1NSRXhpdDsKIH0KIAorY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgeworcHVibGlj
OgorICAgIGVudW0gU3RhdHVzQ29uZGl0aW9uIHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAg
RmFpbHVyZQorICAgIH07CisgICAgCisgICAgc3RhdGljIFN0YXR1c0NvbmRpdGlvbiBpbnZlcnQo
U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZGl0
aW9uKSB7CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBGYWlsdXJl
OworICAgICAgICBjYXNlIEZhaWx1cmU6CisgICAgICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAg
ICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gU3VjY2VzczsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZSA8Y2xhc3MgQXNzZW1ibGVyVHlw
ZSwgY2xhc3MgTWFjcm9Bc3NlbWJsZXJUeXBlPgotY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ciB7CitjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyIDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXJCYXNlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI8QXNzZW1ibGVyVHlwZSwgTWFjcm9Bc3NlbWJsZXJUeXBlPiBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyVHlwZTsKICAgICB0eXBlZGVmIEFzc2VtYmxlclR5cGUgQXNzZW1ibGVyVHlwZV9UOwpAQCAt
MTEwOCwzICsxMTI5LDE2IEBAIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwg
TWEKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2lmIEVOQUJMRShBU1NFTUJMRVIpCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0
cmVhbTsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjEz
Mzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgZG91YmxlIHR3b1RvVGhlMzI7IC8vIFRoaXMgaXMgc3VwZXIgdXNlZnVsIGZv
ciBzb21lIGRvdWJsZSBjb2RlLgogCiAgICAgLy8gVXRpbGl0aWVzIHVzZWQgYnkgdGhlIERGRyBK
SVQuCisgICAgdXNpbmcgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OmludmVydDsKICAgICB1
c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmludmVydDsKICAgICAKICAgICBzdGF0aWMgRG91Ymxl
Q29uZGl0aW9uIGludmVydChEb3VibGVDb25kaXRpb24gY29uZCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShy
ZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMzM3NSw3ICszMzc1LDIyOSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5kbWJJU0goKTsKICAgICB9Ci0KKyAg
ICAKKyAgICB2b2lkIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRhcjw4
PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihhZGRyZXNzLCBkZXN0KTsK
KyAgICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKDB4ZmYpLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Rscjw4PihzcmMsIGV4dHJhY3RTaW1wbGVB
ZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTZTaWduZWRF
eHRlbmRUbzMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sZGFyPDE2PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVz
cyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkQWNxMTZT
aWduZWRFeHRlbmRUbzMyKGFkZHJlc3MsIGRlc3QpOworICAgICAgICBhbmQzMihUcnVzdGVkSW1t
MzIoMHhmZmZmKSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdp
c3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdGxyPDE2PihzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXI8MzI+KGRlc3Qs
IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXI8NjQ+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNz
KGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFJlZ2lzdGVySUQg
ZGVzdCwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zdGxyPDMyPihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3RlcklEIGRlc3QsIEltcGxpY2l0QWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Rscjw2ND4oZGVzdCwgZXh0
cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRM
aW5rOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubGR4cjw4PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRy
ZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmtBY3E4KEltcGxpY2l0QWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
ZGF4cjw4PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgc3RvcmVDb25kOChSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4
cjw4PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDgoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN0bHhyPDg+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7
CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmsxNihJbXBsaWNpdEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGR4cjwxNj4o
ZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRMaW5rQWNxMTYoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXhyPDE2PihkZXN0LCBleHRyYWN0U2lt
cGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kMTYo
UmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0eHI8MTY+KHJlc3VsdCwgc3JjLCBleHRy
YWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVD
b25kUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPDE2PihyZXN1bHQs
IHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRMaW5rMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8MzI+KGRlc3QsIGV4dHJhY3RTaW1wbGVB
ZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGlua0FjcTMyKElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sZGF4cjwzMj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZDMyKFJlZ2lzdGVySUQgc3JjLCBJbXBs
aWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zdHhyPDMyPihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRk
cmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDMyKFJlZ2lzdGVySUQg
c3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjwzMj4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVB
ZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGluazY0KEltcGxp
Y2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sZHhyPDY0PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmtBY3E2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8NjQ+
KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBzdG9yZUNvbmQ2NChSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4cjw2ND4o
cmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBzdG9yZUNvbmRSZWw2NChSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3RseHI8NjQ+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUzw4Pihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAg
ICBhdG9taWNTdHJvbmdDQVM8MTY+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwg
YWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMz
MihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTPDY0Pihjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNSZWxheGVkU3Ry
b25nQ0FTPDg+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVkU3Ryb25nQ0FTMTYoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgewor
ICAgICAgICBhdG9taWNSZWxheGVkU3Ryb25nQ0FTPDE2Pihjb25kLCBleHBlY3RlZEFuZFJlc3Vs
dCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljUmVsYXhlZFN0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzwz
Mj4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM2NChTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM8NjQ+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdW
YWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNo
QXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNXZWFrQ0FTPDg+KGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0
IGJyYW5jaEF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1dlYWtDQVM8MTY+KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IEp1bXBMaXN0IGJyYW5jaEF0b21pY1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1dlYWtDQVM8MzI+
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1dl
YWtDQVM8NjQ+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTOChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTPDg+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0
b21pY1JlbGF4ZWRXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzwxNj4oY29u
ZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21p
Y1JlbGF4ZWRXZWFrQ0FTPDMyPihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNSZWxheGVk
V2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM8NjQ+KGNvbmQsIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZGVwZW5kMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmVvcjwzMj4oZGVzdCwgc3JjLCBzcmMpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGRlcGVuZDY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5lb3I8NjQ+KGRlc3QsIHNyYywgc3JjKTsKKyAgICB9CisgICAgCiAg
ICAgLy8gTWlzYyBoZWxwZXIgZnVuY3Rpb25zLgogCiAgICAgLy8gSW52ZXJ0IGEgcmVsYXRpb25h
bCBjb25kaXRpb24sIGUuZy4gPT0gYmVjb21lcyAhPSwgPCBiZWNvbWVzID49LCBldGMuCkBAIC0z
ODc3LDYgKzQwOTksMTU4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBs
b2FkTGluayhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubGR4cjxkYXRhc2l6ZT4oZGVzdCwgc3JjKTsKKyAgICB9CisgICAgCisgICAg
dGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgbG9hZExpbmtBY3EoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXhyPGRh
dGFzaXplPihkZXN0LCBzcmMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNp
emU+CisgICAgdm9pZCBzdG9yZUNvbmQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwg
UmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdHhyPGRhdGFz
aXplPihzcmMsIGRlc3QsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBk
YXRhc2l6ZT4KKyAgICB2b2lkIHN0b3JlQ29uZFJlbChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0LCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0
bHhyPGRhdGFzaXplPihzcmMsIGRlc3QsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHRlbXBs
YXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIHNpZ25FeHRlbmQoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKKyAgICB9Cisg
ICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEp1bXAgYnJhbmNoKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0KTsKKyAgICB9Cisg
ICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgc2lnbkV4dGVuZDxkYXRhc2l6ZT4oZXhwZWN0ZWRBbmRSZXN1bHQsIGV4cGVj
dGVkQW5kUmVzdWx0KTsKKyAgICAgICAgCisgICAgICAgIFJlZ2lzdGVySUQgc2ltcGxlQWRkcmVz
cyA9IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpOworICAgICAgICBSZWdpc3RlcklEIHRt
cCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAg
CisgICAgICAgIExhYmVsIHJlbG9vcCA9IGxhYmVsKCk7CisgICAgICAgIGxvYWRMaW5rQWNxPGRh
dGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXApOworICAgICAgICBKdW1wIGZhaWx1cmUgPSBicmFu
Y2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBlY3RlZEFuZFJlc3VsdCwgdG1wKTsKKyAgICAgICAg
CisgICAgICAgIHN0b3JlQ29uZFJlbDxkYXRhc2l6ZT4obmV3VmFsdWUsIHNpbXBsZUFkZHJlc3Ms
IHJlc3VsdCk7CisgICAgICAgIGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXN1bHQpLmxpbmtUbyhy
ZWxvb3AsIHRoaXMpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjb25kID09IFN1Y2Nlc3Mp
LCByZXN1bHQpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIAorICAgICAg
ICBmYWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAgIG1vdmUodG1wLCBleHBlY3RlZEFuZFJlc3Vs
dCk7CisgICAgICAgIHN0b3JlQ29uZFJlbDxkYXRhc2l6ZT4odG1wLCBzaW1wbGVBZGRyZXNzLCBy
ZXN1bHQpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9uWmVybywgcmVzdWx0KS5saW5rVG8ocmVs
b29wLCB0aGlzKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoY29uZCA9PSBGYWlsdXJlKSwg
cmVzdWx0KTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluayh0aGlzKTsKKyAgICB9CisgICAg
CisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgYXRvbWljUmVsYXhlZFN0cm9u
Z0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4cGVjdGVkQW5kUmVzdWx0LCBl
eHBlY3RlZEFuZFJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIHNpbXBsZUFk
ZHJlc3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAg
ICAgIAorICAgICAgICBMYWJlbCByZWxvb3AgPSBsYWJlbCgpOworICAgICAgICBsb2FkTGluazxk
YXRhc2l6ZT4oc2ltcGxlQWRkcmVzcywgdG1wKTsKKyAgICAgICAgSnVtcCBmYWlsdXJlID0gYnJh
bmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHRtcCk7CisgICAgICAg
IAorICAgICAgICBzdG9yZUNvbmQ8ZGF0YXNpemU+KG5ld1ZhbHVlLCBzaW1wbGVBZGRyZXNzLCBy
ZXN1bHQpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9uWmVybywgcmVzdWx0KS5saW5rVG8ocmVs
b29wLCB0aGlzKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoY29uZCA9PSBTdWNjZXNzKSwg
cmVzdWx0KTsKKyAgICAgICAgSnVtcCBkb25lID0ganVtcCgpOworICAgICAgICAKKyAgICAgICAg
ZmFpbHVyZS5saW5rKHRoaXMpOworICAgICAgICBtb3ZlKHRtcCwgZXhwZWN0ZWRBbmRSZXN1bHQp
OworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjb25kID09IEZhaWx1cmUpLCByZXN1bHQpOwor
ICAgICAgICAKKyAgICAgICAgZG9uZS5saW5rKHRoaXMpOworICAgIH0KKyAgICAKKyAgICB0ZW1w
bGF0ZTxpbnQgZGF0YXNpemU+CisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljV2Vha0NBUyhTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgc2lnbkV4dGVu
ZDxkYXRhc2l6ZT4oZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKTsK
KyAgICAgICAgCisgICAgICAgIFJlZ2lzdGVySUQgc2ltcGxlQWRkcmVzcyA9IGV4dHJhY3RTaW1w
bGVBZGRyZXNzKGFkZHJlc3MpOworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgCisgICAgICAgIEp1bXBM
aXN0IHN1Y2Nlc3M7CisgICAgICAgIEp1bXBMaXN0IGZhaWx1cmU7CisKKyAgICAgICAgbG9hZExp
bmtBY3E8ZGF0YXNpemU+KHNpbXBsZUFkZHJlc3MsIHRtcCk7CisgICAgICAgIGZhaWx1cmUuYXBw
ZW5kKGJyYW5jaDxkYXRhc2l6ZT4oTm90RXF1YWwsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCB0bXAp
KTsKKyAgICAgICAgc3RvcmVDb25kUmVsPGRhdGFzaXplPihuZXdWYWx1ZSwgc2ltcGxlQWRkcmVz
cywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpOworICAgICAgICAKKyAgICAgICAgc3dpdGNoIChjb25k
KSB7CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAgICAgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGJy
YW5jaFRlc3QzMihaZXJvLCBleHBlY3RlZEFuZENsb2JiZXJlZCkpOworICAgICAgICAgICAgZmFp
bHVyZS5saW5rKHRoaXMpOworICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgICAgIGNh
c2UgRmFpbHVyZToKKyAgICAgICAgICAgIGZhaWx1cmUuYXBwZW5kKGJyYW5jaFRlc3QzMihOb25a
ZXJvLCBleHBlY3RlZEFuZENsb2JiZXJlZCkpOworICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmU7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBKdW1wTGlz
dCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgc2lnbkV4dGVuZDxkYXRhc2l6ZT4oZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKTsKKyAgICAgICAgCisgICAgICAgIFJlZ2lz
dGVySUQgc2ltcGxlQWRkcmVzcyA9IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpOworICAg
ICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKTsKKyAgICAgICAgCisgICAgICAgIEp1bXBMaXN0IHN1Y2Nlc3M7CisgICAgICAgIEp1
bXBMaXN0IGZhaWx1cmU7CisKKyAgICAgICAgbG9hZExpbms8ZGF0YXNpemU+KHNpbXBsZUFkZHJl
c3MsIHRtcCk7CisgICAgICAgIGZhaWx1cmUuYXBwZW5kKGJyYW5jaDxkYXRhc2l6ZT4oTm90RXF1
YWwsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCB0bXApKTsKKyAgICAgICAgc3RvcmVDb25kPGRhdGFz
aXplPihuZXdWYWx1ZSwgc2ltcGxlQWRkcmVzcywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpOworICAg
ICAgICAKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAg
ICAgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBleHBlY3RlZEFuZENs
b2JiZXJlZCkpOworICAgICAgICAgICAgZmFpbHVyZS5saW5rKHRoaXMpOworICAgICAgICAgICAg
cmV0dXJuIHN1Y2Nlc3M7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAgIGZhaWx1
cmUuYXBwZW5kKGJyYW5jaFRlc3QzMihOb25aZXJvLCBleHBlY3RlZEFuZENsb2JiZXJlZCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIFJlZ2lzdGVy
SUQgZXh0cmFjdFNpbXBsZUFkZHJlc3MoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3Mu
YmFzZTsKKyAgICAgICAgCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihh
ZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpKTsKKyAgICAgICAgYWRkNjQoYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICByZXR1cm4gbWVtb3J5VGVtcFJlZ2lzdGVyOworICAgIH0KIAogICAgIEp1bXAganVt
cEFmdGVyRmxvYXRpbmdQb2ludENvbXBhcmUoRG91YmxlQ29uZGl0aW9uIGNvbmQpCiAgICAgewpA
QCAtMzk4OSw2ICs0MzYzLDI0IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBNYWNyb0Fzc2VtYmxlckFS
TTY0OjoKICAgICBtX2Fzc2VtYmxlci5zdHVyaChydCwgcm4sIHNpbW0pOwogfQogCit0ZW1wbGF0
ZTw+CitpbmxpbmUgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDg+KFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCit7CisgICAgc2lnbkV4dGVuZDhUbzMyKHNyYywg
ZGVzdCk7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnNpZ25FeHRlbmQ8MTY+KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCit7CisgICAg
c2lnbkV4dGVuZDE2VG8zMihzcmMsIGRlc3QpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgTWFj
cm9Bc3NlbWJsZXJBUk02NDo6SnVtcCBNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2g8NjQ+KFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0
KQoreworICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmgJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTcx
LDYgKzE3MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfbXIoc3JjLm9m
ZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYWRkMzIoQmFzZUluZGV4
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkbF9t
cihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAg
IH0KKwogICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
KTsKQEAgLTI1MSwxNiArMjU2LDcxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5k
bF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYW5k
MzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kbF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRl
c3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZDgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIGFuZDgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0
LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIo
QWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LmFuZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQg
YW5kMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYW5kbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2Nh
bGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRk
cmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9pbShpbW0ubV92
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBh
bmQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
YW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYW5kd19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kMTYoVHJ1
c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5hbmR3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCBhbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0u
bV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZv
aWQgYW5kOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZGJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSks
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQg
b3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAob3AxID09IG9wMikKQEAg
LTQ1Niw2ICs1MTYsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5uZWdsX20oc3Jj
RGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBuZWczMihCYXNl
SW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2xfbShzcmNEZXN0
Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsKKyAg
ICB9CisKKyAgICB2b2lkIG5lZzE2KEFkZHJlc3Mgc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLm5lZ3dfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsKKyAgICB9CisK
KyAgICB2b2lkIG5lZzE2KEJhc2VJbmRleCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubmVnd19tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UsIHNyY0Rlc3QuaW5kZXgs
IHNyY0Rlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnOChBZGRyZXNzIHNyY0Rlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdiX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rl
c3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWc4KEJhc2VJbmRleCBzcmNEZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnYl9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJh
c2UsIHNyY0Rlc3QuaW5kZXgsIHNyY0Rlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3Iz
MihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIub3JsX3JyKHNyYywgZGVzdCk7CkBAIC00NzEsMTYgKzU1Niw3MSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwog
ICAgIH0KIAorICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoUmVn
aXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9y
d19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3Ix
NihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5vcndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJ
bmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX3JtKHNyYywgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAg
dm9pZCBvcjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5vcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAor
ICAgIHZvaWQgb3IzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5vcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKGlt
bS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2
b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5vcmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZv
aWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5vcndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1
c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5vcndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5vcmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92
YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQg
b3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIub3JiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsK
KyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAob3AxID09IG9wMikKQEAgLTY1NCwx
NiArNzk0LDcxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBz
dWIxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zdWJ3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBzdWI4KFRydXN0
ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN1YmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX2lt
KGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19p
bShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZv
aWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSks
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJh
c2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9tcihzcmMub2Zmc2V0
LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZv
aWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLnN1Ymxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAK
KyAgICB2b2lkIHN1YjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5zdWJ3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7Cisg
ICAgfQorCisgICAgdm9pZCBzdWI4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBz
dWIxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdWJ3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwg
ZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBzdWI4KFJlZ2lzdGVySUQgc3JjLCBCYXNl
SW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmJfcm0oc3JjLCBkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci54b3JsX3JyKHNyYywgZGVzdCk7CkBAIC02NzcsNiArODcyLDUwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfaW0oaW1tLm1fdmFsdWUsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgeG9yMzIoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpZiAoaW1tLm1fdmFsdWUg
PT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RsX20oZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnhvcmxfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBz
dGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChpbW0ubV92YWx1
ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yd19pbShp
bW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4
b3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIGlt
bS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBp
ZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZv
aWQgeG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBp
bW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBp
ZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgeG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSk7
CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
Lm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9pbShpbW0ubV92YWx1
ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCkBAIC02OTAsMTEgKzkyOSw0MSBA
QCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwg
ZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgc3JjLCBCYXNl
SW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfcm0oc3JjLCBkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIHhvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci54b3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci54b3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4KFJlZ2lz
dGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3Ji
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhvcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54b3JsX21yKHNyYy5vZmZzZXQsIHNy
Yy5iYXNlLCBkZXN0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCB4b3IzMihCYXNlSW5kZXggc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JsX21yKHNy
Yy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQor
ICAgIAogICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAob3AxID09IG9wMikKQEAgLTc0MSw2ICsx
MDEwLDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgbm90MzIoQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RsX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwg
ZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBub3QxNihBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3QxNihCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0
LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDgoQWRkcmVzcyBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgIH0KKworICAgIHZvaWQgbm90OChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4
LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHNxcnREb3VibGUoRlBSZWdpc3RlcklE
IHNyYywgRlBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNxcnRz
ZF9ycihzcmMsIGRzdCk7CkBAIC0xMDcxLDQyICsxMzY1LDIzIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewotI2lm
IENQVShYODYpCi0gICAgICAgIC8vIE9uIDMyLWJpdCB4ODYgd2UgY2FuIG9ubHkgc3RvcmUgZnJv
bSB0aGUgZmlyc3QgNCByZWdpc3RlcnM7Ci0gICAgICAgIC8vIGVzcC4uZWRpIGFyZSBtYXBwZWQg
dG8gdGhlICdoJyByZWdpc3RlcnMhCi0gICAgICAgIGlmIChzcmMgPj0gNCkgewotICAgICAgICAg
ICAgLy8gUGljayBhIHRlbXBvcmFyeSByZWdpc3Rlci4KLSAgICAgICAgICAgIFJlZ2lzdGVySUQg
dGVtcCA9IGdldFVudXNlZFJlZ2lzdGVyKGFkZHJlc3MpOwotCi0gICAgICAgICAgICAvLyBTd2Fw
IHRvIHRoZSB0ZW1wb3JhcnkgcmVnaXN0ZXIgdG8gcGVyZm9ybSB0aGUgc3RvcmUuCi0gICAgICAg
ICAgICBzd2FwKHNyYywgdGVtcCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3JtKHRl
bXAsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOwotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybShzcmMsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
OwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRy
ZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAgICAgICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNh
biBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOwotICAgICAgICAvLyBlc3Au
LmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQotICAgICAgICBpZiAoc3JjID49
IDQpIHsKLSAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCi0gICAgICAg
ICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRSZWdpc3RlcihhZGRyZXNzKTsKLQotICAg
ICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhl
IHN0b3JlLgotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubW92d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKLSAgICAg
ICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
I2VuZGlmCiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlMTYoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X2lt
KHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBzdG9yZTE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUp
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CiAKICAgICAvLyBGbG9hdGlu
Zy1wb2ludCBvcGVyYXRpb246CiAgICAgLy8KQEAgLTI3NDUsNzQgKzMwMjAsOTAxIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwogICAgICAgICBtX2Fzc2VtYmxlci5vcmxf
aW0oMCwgMCwgWDg2UmVnaXN0ZXJzOjplc3ApOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CiAKLSAgICAvLyBXZSB0YWtl
IHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwgc3RvcmVzLiBT
bywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KLSAgICB2b2lkIHN0b3JlRmVuY2UoKQorICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQogICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBp
dCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4
Ni4KLSAgICB2b2lkIGxvYWRGZW5jZSgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBb
Jl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVt
cChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBk
ZXN0aW5hdGlvbikKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICBYODZB
c3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRy
ZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICBhdG9taWNT
dHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9Ci0gICAgCi0gICAgc3RhdGlj
IHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKworICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3Vs
dCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBwdHJkaWZm
X3QgcGF0Y2hhYmxlSnVtcFNpemUoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OnBhdGNoYWJsZUp1bXBTaXplKCk7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBt
X2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAgIH0KIAotICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzgoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgaWYgKHNfc3NlNF8xQ2hlY2tT
dGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpCi0gICAgICAgICAgICB1cGRhdGVF
YXgxRWN4RmxhZ3MoKTsKLSAgICAgICAgcmV0dXJuIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJ
RENoZWNrU3RhdGU6OlNldDsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
QVZYKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewotICAg
ICAgICAvLyBBVlggc3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVzc2lvbnMgYW5kIHRob3Nl
IHJlZ3Jlc3Npb25zIGNhbiBiZSBtYXNzaXZlLgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIu
Y21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCB1
cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQogICAgIHsKLSAgICAgICAgaW50IGZsYWdzID0gMDsKLSNpZiBDT01QSUxFUihNU1ZDKQotICAg
ICAgICBpbnQgY3B1SW5mb1s0XTsKLSAgICAgICAgX19jcHVpZChjcHVJbmZvLCAweDEpOwotICAg
ICAgICBmbGFncyA9IGNwdUluZm9bMl07Ci0jZWxpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCi0j
aWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgYXNtICgKLSAgICAgICAgICAgICJtb3ZsICQweDEsICUl
ZWF4OyIKLSAgICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7
IgotICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAg
IDogIiVlYXgiLCAiJWVieCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICApOwotI2Vsc2UK
LSAgICAgICAgYXNtICgKLSAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKLSAgICAgICAg
ICAgICJwdXNobCAlJWVieDsiCi0gICAgICAgICAgICAiY3B1aWQ7IgotICAgICAgICAgICAgInBv
cGwgJSVlYng7IgotICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDog
Ij1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlY3gi
LCAiJWVkeCIKLSAgICAgICAgICAgICk7Ci0jZW5kaWYKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
KGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTMTYoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJv
bmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQs
IFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAg
ICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29u
ZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJy
YW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hB
dG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVy
LmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hB
dG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQor
CisgICAgLy8gSWYgeW91IHVzZSB3ZWFrIENBUywgeW91IGNhbm5vdCByZWx5IG9uIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkIHRvIGhhdmUgYW55IHBhcnRpY3VsYXIgdmFsdWUgYWZ0ZXIKKyAgICAvLyB0
aGlzIGNvbXBsZXRlcy4gT24geDg2LCBpdCB3aWxsIGNvbnRhaW4gdGhlIHJlc3VsdCBvZiB0aGUg
c3Ryb25nIENBUy4gT24gQVJNLCBpdCB3aWxsIHN0aWxsIGhhdmUKKyAgICAvLyB0aGUgZXhwZWN0
ZWQgdmFsdWUuCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCBy
ZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzE2KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsK
KyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NB
UzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBh
dG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisg
ICAgdm9pZCBhdG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMy
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ry
b25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOwor
ICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVz
cyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJl
c3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hB
dG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTOChTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhl
ZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJ
RCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2
b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMx
Nihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAg
ICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NB
UzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRv
bWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29u
ZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3Mp
OworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM4KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRX
ZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9t
aWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJy
YW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNv
bmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljQWRkOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhZGQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQWRkOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFkZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQWRkMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YWRkMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQzMihpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhZGQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQz
MihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWI4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
c3ViOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFRydXN0ZWRJbW0zMiBpbW0s
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBzdWIxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N1YjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgc3ViMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNTdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIzMihSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWIzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMy
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNBbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBbmQ4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgYW5kMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNBbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYoaW1tLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
bmQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFJl
Z2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMyKGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQW5kMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMy
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljT3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I4KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgb3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljT3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihSZWdpc3Rl
cklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBvcjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljT3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3Iz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMzIocmVnLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoUmVnaXN0ZXJJRCByZWcsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgeG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IxNihpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hvcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Ix
NihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgeG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNYb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihSZWdpc3RlcklEIHJlZywg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hv
cjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNOZWc4KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnOChhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNOZWc4KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc4KGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY05lZzE2KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMTYoYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljTmVnMTYoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2KGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY05lZzMyKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMzIoYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljTmVnMzIoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMyKGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY05vdDgoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05vdDgoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTm90MTYoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBub3QxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNOb3QxNihCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTm90MzIoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBub3QzMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNOb3QzMihCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFk
ZGJfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYY2hnQWRkOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDE2
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGR3X3JtKHJlZywgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0Fk
ZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZHdfcm0ocmVnLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMzIoUmVnaXN0ZXJJRCByZWcs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3Jt
KHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljWGNoZzgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnYl9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJl
c3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGcxNihSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGcxNihSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGd3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWGNoZzMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhj
aGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWGNoZzMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
eGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOChBZGRyZXNz
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDgoc3JjLCBkZXN0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBsb2FkOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDhTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4U2lnbmVkRXh0ZW5kVG8z
MihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNihBZGRyZXNzIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDE2KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKEJhc2VJbmRl
eCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNlNpZ25lZEV4dGVu
ZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMzIoQWRkcmVz
cyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQzMihzcmMsIGRlc3Qp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihCYXNlSW5kZXggc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7
CisgICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3Jl
UmVsOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9y
ZTgoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDgoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KGltbSwgZGVzdCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KGltbSwgZGVzdCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgc3RvcmUxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0
b3JlUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
c3RvcmUxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUxNihpbW0s
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KGltbSwgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHN0b3JlUmVsMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgc3RvcmUzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3Jl
UmVsMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3Rv
cmUzMihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKGltbSwg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQg
cHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBzdG9yZXMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2
LgorICAgIHZvaWQgc3RvcmVGZW5jZSgpCisgICAgeworICAgIH0KKworICAgIC8vIFdlIHRha2Ug
dGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBsb2Fkcy4gU28s
IGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBsb2FkRmVuY2UoKQorICAgIHsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5z
dHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAg
ICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1
dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
OworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3QgcGF0Y2hhYmxlSnVtcFNpemUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6cGF0Y2hhYmxlSnVtcFNpemUoKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpCisg
ICAgeworICAgICAgICBpZiAoc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6
Tm90Q2hlY2tlZCkKKyAgICAgICAgICAgIHVwZGF0ZUVheDFFY3hGbGFncygpOworICAgICAgICBy
ZXR1cm4gc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAgIH0K
KworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQVZYKCkKKyAgICB7CisgICAgICAgIC8vIEFWWCBz
dGlsbCBjYXVzZXMgbXlzdGVyaW91cyByZWdyZXNzaW9ucyBhbmQgdGhvc2UgcmVncmVzc2lvbnMg
Y2FuIGJlIG1hc3NpdmUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0
aWMgdm9pZCB1cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAgIHsKKyAgICAgICAgaW50IGZsYWdzID0g
MDsKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgICAgICBpbnQgY3B1SW5mb1s0XTsKKyAgICAgICAg
X19jcHVpZChjcHVJbmZvLCAweDEpOworICAgICAgICBmbGFncyA9IGNwdUluZm9bMl07CisjZWxp
ZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgYXNtICgK
KyAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKKyAgICAgICAgICAgICJjcHVpZDsiCisg
ICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAgICAgICAgICAgOiAiPWciIChmbGFncykK
KyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVlYXgiLCAiJWVieCIsICIlZWN4IiwgIiVl
ZHgiCisgICAgICAgICAgICApOworI2Vsc2UKKyAgICAgICAgYXNtICgKKyAgICAgICAgICAgICJt
b3ZsICQweDEsICUlZWF4OyIKKyAgICAgICAgICAgICJwdXNobCAlJWVieDsiCisgICAgICAgICAg
ICAiY3B1aWQ7IgorICAgICAgICAgICAgInBvcGwgJSVlYng7IgorICAgICAgICAgICAgIm1vdmwg
JSVlY3gsICUwOyIKKyAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCisgICAgICAgICAgICA6Cisg
ICAgICAgICAgICA6ICIlZWF4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICk7CisjZW5k
aWYKICNlbmRpZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCiAgICAgICAgIHNfc3NlNF8xQ2hl
Y2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDE5KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQ
VUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CiAgICAgICAgIHNfYXZ4Q2hlY2tTdGF0ZSA9IChmbGFncyAm
ICgxIDw8IDI4KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xl
YXI7CkBAIC0yODMzLDYgKzM5MzUsMTggQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8WDg2QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOwogICAgIH0KIAorICAgIFg4
NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihTdGF0dXNDb25kaXRpb24gY29uZCkK
KyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6Cisg
ICAgICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25FOworICAgICAgICBjYXNl
IEZhaWx1cmU6CisgICAgICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25ORTsK
KyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25FOworICAgIH0KKwogICAgIHZvaWQgc2V0
MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICNpZiBDUFUoWDg2KQpAQCAtMjkyNyw2ICs0MDQxLDM1IEBAIHByb3RlY3RlZDoKICAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoc2l6ZU9mUmVnaXN0ZXIpLCBkc3QpOwogICAgICAgICBzcmNJc05v
blplcm8ubGluayh0aGlzKTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCByZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1
bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6
OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVuYygpOworICAg
ICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAg
IHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTKFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4
cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgZnVuYygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0
LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7Cisg
ICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhw
ZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgcmV0dXJuIEp1bXAo
bV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KIAogcHJpdmF0ZToK
ICAgICAvLyBPbmx5IE1hY3JvQXNzZW1ibGVyWDg2IHNob3VsZCBiZSB1c2luZyB0aGUgZm9sbG93
aW5nIG1ldGhvZDsgU1NFMiBpcyBhbHdheXMgYXZhaWxhYmxlIG9uCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjQs
MTEgKzI2NCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfbXIoc3JjLm9m
ZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYWRkNjQoQmFzZUluZGV4
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9t
cihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAg
IH0KKwogICAgIHZvaWQgYWRkNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwg
ZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFk
ZDY0KEFic29sdXRlQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihzcmMubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CkBAIC0z
MDYsNiArMzE2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfaW0o
aW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAg
IHZvaWQgYWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmlu
Y3FfbShhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9pbShp
bW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1t
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpAQCAtMzQyLDExICszNjAs
NDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX3JyKHNyYywgZGVzdCk7CiAg
ICAgfQogCisgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
YW5kNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOworICAgIH0KKworICAg
IHZvaWQgYW5kNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBz
cmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9p
cihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmQ2NChUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRx
X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kcV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhbmQ2NChUcnVz
dGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgaW50cHRy
X3QgaW50VmFsdWUgPSBpbW0uYXNJbnRwdHIoKTsKQEAgLTU1MiwxMSArNjAwLDUxIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVncV9yKGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQg
bmVnNjQoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVncV9tKGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnNjQoQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX20oZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjY0
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5vcnFfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJ
RCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I2NChSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5v
cnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwg
ZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9tcihzcmMub2Zmc2V0LCBzcmMu
YmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgb3I2
NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5vcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjY0
KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIGlm
IChpbW0ubV92YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKQpAQCAt
NjE5LDE2ICs3MDcsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ltKGlt
bS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2
b2lkIHN1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuc3VicV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAg
dm9pZCBzdWI2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIuc3VicV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCBzdWI2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5k
ZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3VicV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2Nh
bGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcnIoc3JjLCBkZXN0KTsKQEAg
LTY1MSw2ICs3NTQsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JxX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCB4b3I2NChSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54
b3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChCYXNlSW5kZXggc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9p
ZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci54b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAg
dm9pZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci54b3JxX2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0KTsKQEAgLTY2
Niw2ICs3OTQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5ub3RxX20oZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBub3Q2NChCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdHFfbShkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGxvYWQ2NChJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsK
QEAgLTcyNSw2ICs4NTgsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2kz
Mm0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAor
ICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAg
fQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF8zMl82NChpbW0ubV92
YWx1ZSkpIHsKQEAgLTEyOTQsNyArMTQzMiwyNzUgQEAgcHVibGljOgogICAgICAgICBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3Jh
dGNoUmVnaXN0ZXIoKSk7CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSksIG1hc2s4KTsKICAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0p
OworICAgIH0KIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRv
bWljU3Ryb25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
KGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJv
bmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVM2
NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9h
c3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1i
bGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9t
aWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAg
dm9pZCBhdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNz
LCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0KGNv
bmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAg
ICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9u
Z0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7Cisg
ICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
YXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVM2
NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KGNvbmQs
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAg
SnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAg
IH0KKworICAgIHZvaWQgYXRvbWljQWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2NChp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBhZGQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBzdWI2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1N1YjY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFu
ZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1
c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFuZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQW5kNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQocmVnLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChSZWdpc3RlcklEIHJlZywg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFuZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
T3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBvcjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljT3I2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjY0
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3Rl
ZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIHhvcjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWG9yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQocmVnLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChSZWdpc3RlcklEIHJlZywgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHhvcjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVn
NjQoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBuZWc2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc2
NChCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90
NjQoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBub3Q2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q2
NChCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNo
Z0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRxX3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZ0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZHFfcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnNjQoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnNjQoUmVnaXN0ZXJJRCByZWcs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRBY3E2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbG9hZDY0KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTY0KEJh
c2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJRCBzcmMs
IEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlNjQoc3JjLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIHN0b3JlNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBzdG9yZVJlbDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7Cisg
ICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJl
bDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3Rv
cmU2NChpbW0sIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9V
aW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIuY3Z0dHNkMnNpcV9ycihzcmMsIGRlc3QpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAyMTMzNzkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTAsMTYgKzE5MCwyMCBAQCBwcml2YXRlOgogICAgICAgICBPUF9BRERf
RXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgwMSwKICAgICAgICAgT1BfQUREX0d2RXYgICAg
ICAgICAgICAgICAgICAgICA9IDB4MDMsCiAgICAgICAgIE9QX0FERF9FQVhJdiAgICAgICAgICAg
ICAgICAgICAgPSAweDA1LAorICAgICAgICBPUF9PUl9FdkdiICAgICAgICAgICAgICAgICAgICAg
ID0gMHgwOCwKICAgICAgICAgT1BfT1JfRXZHdiAgICAgICAgICAgICAgICAgICAgICA9IDB4MDks
CiAgICAgICAgIE9QX09SX0d2RXYgICAgICAgICAgICAgICAgICAgICAgPSAweDBCLAogICAgICAg
ICBPUF9PUl9FQVhJdiAgICAgICAgICAgICAgICAgICAgID0gMHgwRCwKICAgICAgICAgT1BfMkJZ
VEVfRVNDQVBFICAgICAgICAgICAgICAgICA9IDB4MEYsCisgICAgICAgIE9QX0FORF9FdkdiICAg
ICAgICAgICAgICAgICAgICAgPSAweDIwLAogICAgICAgICBPUF9BTkRfRXZHdiAgICAgICAgICAg
ICAgICAgICAgID0gMHgyMSwKICAgICAgICAgT1BfQU5EX0d2RXYgICAgICAgICAgICAgICAgICAg
ICA9IDB4MjMsCisgICAgICAgIE9QX1NVQl9FdkdiICAgICAgICAgICAgICAgICAgICAgPSAweDI4
LAogICAgICAgICBPUF9TVUJfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgyOSwKICAgICAg
ICAgT1BfU1VCX0d2RXYgICAgICAgICAgICAgICAgICAgICA9IDB4MkIsCiAgICAgICAgIE9QX1NV
Ql9FQVhJdiAgICAgICAgICAgICAgICAgICAgPSAweDJELAogICAgICAgICBQUkVfUFJFRElDVF9C
UkFOQ0hfTk9UX1RBS0VOICAgID0gMHgyRSwKKyAgICAgICAgT1BfWE9SX0V2R2IgICAgICAgICAg
ICAgICAgICAgICA9IDB4MzAsCiAgICAgICAgIE9QX1hPUl9Fdkd2ICAgICAgICAgICAgICAgICAg
ICAgPSAweDMxLAogICAgICAgICBPUF9YT1JfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgz
MywKICAgICAgICAgT1BfWE9SX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MzUsCkBAIC0y
MjMsNiArMjI3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfR1JPVVAxX0V2SWIgICAgICAgICAg
ICAgICAgICA9IDB4ODMsCiAgICAgICAgIE9QX1RFU1RfRWJHYiAgICAgICAgICAgICAgICAgICAg
PSAweDg0LAogICAgICAgICBPUF9URVNUX0V2R3YgICAgICAgICAgICAgICAgICAgID0gMHg4NSwK
KyAgICAgICAgT1BfWENIR19FdkdiICAgICAgICAgICAgICAgICAgICA9IDB4ODYsCiAgICAgICAg
IE9QX1hDSEdfRXZHdiAgICAgICAgICAgICAgICAgICAgPSAweDg3LAogICAgICAgICBPUF9NT1Zf
RWJHYiAgICAgICAgICAgICAgICAgICAgID0gMHg4OCwKICAgICAgICAgT1BfTU9WX0V2R3YgICAg
ICAgICAgICAgICAgICAgICA9IDB4ODksCkBAIC0yNTIsNiArMjU3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgUFJFX1NTRV9GMiAgICAgICAgICAgICAgICAgICAgICA9IDB4RjIsCiAgICAgICAgIFBS
RV9TU0VfRjMgICAgICAgICAgICAgICAgICAgICAgPSAweEYzLAogICAgICAgICBPUF9ITFQgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMHhGNCwKKyAgICAgICAgT1BfR1JPVVAzX0ViICAgICAg
ICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9QX0dST1VQM19FYkliICAgICAgICAgICAg
ICAgICAgPSAweEY2LAogICAgICAgICBPUF9HUk9VUDNfRXYgICAgICAgICAgICAgICAgICAgID0g
MHhGNywKICAgICAgICAgT1BfR1JPVVAzX0V2SXogICAgICAgICAgICAgICAgICA9IDB4RjcsIC8v
IE9QX0dST1VQM19FdiBoYXMgYW4gaW1tZWRpYXRlLCB3aGVuIGluc3RydWN0aW9uIGlzIGEgdGVz
dC4gCkBAIC0yOTAsNiArMjk2LDggQEAgcHJpdmF0ZToKICAgICAgICAgT1BfU0VUQ0MgICAgICAg
ICAgICA9IDB4OTAsCiAgICAgICAgIE9QMl8zQllURV9FU0NBUEVfQUUgPSAweEFFLAogICAgICAg
ICBPUDJfSU1VTF9HdkV2ICAgICAgID0gMHhBRiwKKyAgICAgICAgT1AyX0NNUFhDSEdiICAgICAg
ICA9IDB4QjAsCisgICAgICAgIE9QMl9DTVBYQ0hHICAgICAgICAgPSAweEIxLAogICAgICAgICBP
UDJfTU9WWlhfR3ZFYiAgICAgID0gMHhCNiwKICAgICAgICAgT1AyX0JTRiAgICAgICAgICAgICA9
IDB4QkMsCiAgICAgICAgIE9QMl9UWkNOVCAgICAgICAgICAgPSAweEJDLApAQCAtMjk4LDYgKzMw
Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9NT1ZTWF9HdkViICAgICAgPSAweEJFLAogICAg
ICAgICBPUDJfTU9WWlhfR3ZFdyAgICAgID0gMHhCNywKICAgICAgICAgT1AyX01PVlNYX0d2RXcg
ICAgICA9IDB4QkYsCisgICAgICAgIE9QMl9YQUREYiAgICAgICAgICAgPSAweEMwLAorICAgICAg
ICBPUDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAgT1AyX1BFWFRSV19HZFVkSWIg
ICA9IDB4QzUsCiAgICAgICAgIE9QMl9QU0xMUV9VZHFJYiAgICAgPSAweDczLAogICAgICAgICBP
UDJfUFNSTFFfVWRxSWIgICAgID0gMHg3MywKQEAgLTQ0MCw2ICs0NTAsMTEgQEAgcHVibGljOgog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgb2Zm
c2V0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCBhZGRsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BRERfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAogI2lmICFDUFUoWDg2XzY0KQog
ICAgIHZvaWQgYWRkbF9tcihjb25zdCB2b2lkKiBhZGRyLCBSZWdpc3RlcklEIGRzdCkKICAgICB7
CkBAIC01NjIsMTEgKzU3NywyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDY0KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9p
ZCBhZGRxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICB9CisKICAgICB2b2lkIGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0FERF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBhZGRxX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0FERF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
ICAgICB2b2lkIGFkZHFfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtNTkxLDYgKzYxNiwxNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAgICAg
ICB9CiAgICAgfQorCisgICAgdm9pZCBhZGRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQURELCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQor
ICAgIH0KICNlbHNlCiAgICAgdm9pZCBhZGRsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIp
CiAgICAgewpAQCAtNjE0LDExICs2NTAsNDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFuZGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgYW5kbF9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICBhbmRsX3JtKHNyYywgb2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBhbmRsX3JtKHNyYywgb2Zmc2V0LCBiYXNl
LCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kYl9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgfQorCiAgICAgdm9pZCBhbmRsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTY0MSw2
ICs3MDksNTMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBhbmRsX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkp
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JP
VVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmR3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2b2lkIGFuZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lH
Tl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwg
R1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZv
aWQgYW5kYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9B
TkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICB9CisKKyAgICB2b2lkIGFuZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0p
OworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBhbmRxX3JyKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC02NTcsNiArNzcyLDQ4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAg
ICB9CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FO
RF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX21yKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBS
ZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0FORF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAg
ICB2b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FORF9Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FORF9Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFu
ZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZz
ZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmRxX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkp
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBH
Uk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBhbmRsX2lt
KGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewpAQCAtNzAzLDYgKzg2MCwxMSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDVf
RXYsIEdST1VQMV9PUF9BREQsIGJhc2UsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBpbmNx
X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDVfRXYs
IEdST1VQMV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5k
aWYgLy8gQ1BVKFg4Nl82NCkKIAogICAgIHZvaWQgbmVnbF9yKFJlZ2lzdGVySUQgZHN0KQpAQCAt
NzE1LDYgKzg3NywxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9ORUcsIGRzdCk7CiAgICAgfQorCisgICAg
dm9pZCBuZWdxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgbmVncV9tKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG5lZ2xfbShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCkBAIC03MjIsNiArODk0LDMzIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05F
RywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG5lZ2xfbShpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9ORUcsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3dfbShpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5lZ2xfbShvZmZzZXQsIGJhc2UpOworICAg
IH0KKworICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4
KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWdsX20ob2Zmc2V0LCBiYXNlLCBpbmRleCwg
c2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnYl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIs
IEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBuZWdiX20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9V
UDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9p
ZCBub3RsX3IoUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBkc3QpOwpAQCAtNzMyLDYgKzkzMSwz
MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYs
IEdST1VQM19PUF9OT1QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBub3RsX20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9V
UDNfT1BfTk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9p
ZCBub3R3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBub3RsX20ob2Zmc2V0
LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbm90bF9tKG9mZnNldCwg
YmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGJfbShpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAg
IHZvaWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
IH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBub3RxX3IoUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewpAQCAtNzQyLDYgKzk2OCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIG9mZnNl
dCk7CiAgICAgfQorCisgICAgdm9pZCBub3RxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgb3JsX3JyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTc1NCwxMSArOTg1LDQzIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0
KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAg
dm9pZCBvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSk7CisgICAgfQorCisg
ICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBvcmxfcm0oc3JjLCBvZmZzZXQs
IGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcmJfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQor
CisgICAgdm9pZCBvcmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKwogICAgIHZvaWQgb3JsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTc4NCwx
MiArMTA0NywxMDEgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBvcmxf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1t
KSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBH
Uk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBvcndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
dkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2b2lkIG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VY
VEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb3Ji
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX09SLCBiYXNl
LCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQor
CisgICAgdm9pZCBvcmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQor
CiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG9ycV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9F
dkd2LCBzcmMsIGRzdCk7CiAgICAgfQogCisgICAgdm9pZCBvcnFfbXIoaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX09SX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAg
ICB2b2lkIG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX09SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgb3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBi
YXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
R1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lk
IG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFf
RXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09Q
X09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBvcnFfaXIo
aW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhU
RU5EXzhfMzIoaW1tKSkgewpAQCAtODMxLDExICsxMTgzLDQzIEBAIHB1YmxpYzoKICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAg
ICAgfQogCisgICAgdm9pZCBzdWJsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2
b2lkIHN1Ymxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIHN1Yndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BF
UkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpF
KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAg
IH0KKworICAgIHZvaWQgc3ViYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3VibF9pcihpbnQgaW1tLCBSZWdpc3RlcklE
IGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBA
IC04NjEsNiArMTI0NSw1MyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lk
IHN1YmxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
dkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9T
VUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1YndfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBi
YXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc3Vid19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
MV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQor
CisgICAgdm9pZCBzdWJiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JP
VVAxX09QX1NVQiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgIH0KKworICAgIHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1NVQiwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGU4KGltbSk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIHN1YnFfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTg3MiwxMSArMTMwMywyMSBA
QCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9HdkV2LCBk
c3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJxX21yKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklE
IGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9HdkV2
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
YnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9Fdkd2LCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YnFfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtOTAxLDYgKzEzNDIsMTcgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZv
aWQgc3VicV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9V
UDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAjZWxzZQogICAgIHZv
aWQgc3VibF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKQEAgLTkyNCwxMSAr
MTM3NiwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1Jf
R3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9ybF9tcihpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVn
aXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9S
X0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZv
aWQgeG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9Fdkd2LCBzcmMsIGJh
c2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHdiwgc3JjLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC05NDAsNiArMTQwMiw3NSBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHhvcmxfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2b2lkIHhvcndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVf
T1BFUkFORF9TSVpFKTsKKyAgICAgICAgeG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgeG9ybF9ybShzcmMs
IG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcndfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
MV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQor
CisgICAgdm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0V2R2Is
IHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcmJfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9Fdkdi
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhv
cmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
fQorCisgICAgdm9pZCB4b3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAg
ICB9CisKICAgICB2b2lkIHhvcmxfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewog
ICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTc0LDExICsxNTA1
LDQ3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICB2b2lkIHhvcnFfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdS
T1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgeG9ycV9pbShp
bnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JP
VVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgdm9pZCB4b3JxX3JtKFJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQp
OwogICAgIH0KIAorICAgIHZvaWQgeG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JxX21yKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYsIGRlc3QsIGJhc2UsIG9mZnNldCk7CisgICAg
fQorCisgICAgdm9pZCB4b3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfR3ZFdiwgZGVzdCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBsemNudF9ycihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNTg2LDExICsyMTUzLDM4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgZHN0
KTsKICAgICB9CiAKKyAgICB2b2lkIHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfWENIR19FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hn
Yl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWENIR19FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIHhjaGd3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRf
U0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhjaGd3X3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4Y2hnbF9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIHhjaGdxX3Jy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC0xNjA2LDYgKzIyMDAs
MTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
WENIR19Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCB4Y2hncV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
ICNlbmRpZgogCiAgICAgdm9pZCBtb3ZsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRz
dCkKQEAgLTE3MzEsNiArMjMzMCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDgoT1BfTU9WX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwog
ICAgIH0KIAorICAgIHZvaWQgbW92d19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SXosIEdST1VQ
MTFfTU9WLCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihp
bW0pOworICAgIH0KKworICAgIHZvaWQgbW92d19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAg
ICB9CisKICAgICB2b2lkIG1vdmxfRUFYbShjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX01PVl9PdkVBWCk7CkBAIC0xODAwLDYgKzI0MTMs
MTIgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAg
IH0KIAorICAgIHZvaWQgbW92cV9pMzJtKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxMV9Fdkl6LCBHUk9VUDExX01PViwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0p
OworICAgIH0KKwogICAgIHZvaWQgbW92cV9pNjRyKGludDY0X3QgaW1tLCBSZWdpc3RlcklEIGRz
dCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9FQVhJdiwg
ZHN0KTsKQEAgLTI3ODEsNiArMzQwMCw5MCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfTE9DSyk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY21weGNoZ2Jfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX0NNUFhDSEdiLCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENIR2IsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGd3
X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGd3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgY21weGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hncV9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBjbXB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGJfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX1hBRERiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgeGFkZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNyYywgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGR3X3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5
dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IHhhZGR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnBy
ZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9Q
Ml9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCB4YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMs
IGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGxfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBz
cmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4
YWRkcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1hBREQsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkcV9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfWEFERCwgc3JjLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAogICAgIHZvaWQgbWZlbmNl
KCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wKE9QMl8zQllURV9FU0NB
UEVfQUUsIE9QM19NRkVOQ0UpOwpAQCAtMzc1Nyw2ICs0NDYwLDI0IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShncm91cE9wLCBybSk7CiAgICAgICAgIH0KIAor
ICAgICAgICB2b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywg
UmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5n
bGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAg
d3JpdGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBiYXNlKSwgcmVnLCAwLCBi
YXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQ
RSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAg
ICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgfQor
CisgICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVn
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNl
dCkKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIg
d3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1Jl
cXVpcmVzUmV4KHJlZykgfHwgcmVnUmVxdWlyZXNSZXgoaW5kZXgsIGJhc2UpLCByZWcsIGluZGV4
LCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VT
Q0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAg
ICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgICAgICB9CisKICAgICAgICAgLy8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KICAg
ICAgICAgLy8gQW4gaW1tZWRhaXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0
ZSBhZnRlciBhbiBvcCBoYXMgYmVlbiBlbWl0dGVkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUo
QjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworQXRvbWljVmFsdWU6
On5BdG9taWNWYWx1ZSgpCit7Cit9CisKK3ZvaWQgQXRvbWljVmFsdWU6OmR1bXBNZXRhKENvbW1h
UHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50
KGNvbW1hLCAid2lkdGggPSAiLCBtX3dpZHRoKTsKKyAgICAKKyAgICBNZW1vcnlWYWx1ZTo6ZHVt
cE1ldGEoY29tbWEsIG91dCk7Cit9CisKK1ZhbHVlKiBBdG9taWNWYWx1ZTo6Y2xvbmVJbXBsKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbmV3IEF0b21pY1ZhbHVlKCp0aGlzKTsKK30KKworQXRvbWlj
VmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgs
IFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5n
ZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2Vk
T3Bjb2RlLCBraW5kLCBvcGVyYW5kLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVu
Y2VSYW5nZSwgb3BlcmFuZCwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7CisgICAg
QVNTRVJUKGJlc3RUeXBlKEdQLCBhY2Nlc3NXaWR0aCgpKSA9PSBhY2Nlc3NUeXBlKCkpOworICAg
IAorICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoK
KyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2Fz
ZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21p
Y1hjaGc6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KK30KKworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2lu
ZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1
ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJh
bmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNv
ZGUsIGtpbmQsIGtpbmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0
ZWRWYWx1ZS0+dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UsIGV4cGVj
dGVkVmFsdWUsIG5ld1ZhbHVlLCBwb2ludGVyKQorICAgICwgbV93aWR0aCh3aWR0aCkKK3sKKyAg
ICBBU1NFUlQoYmVzdFR5cGUoR1AsIGFjY2Vzc1dpZHRoKCkpID09IGFjY2Vzc1R5cGUoKSk7CisK
KyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6Cisg
ICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1
ZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEF0b21pY1ZhbHVlIDogcHVibGljIE1lbW9y
eVZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBpc0F0b21pYyhraW5kLm9wY29kZSgpKTsKKyAgICB9CisgICAg
CisgICAgfkF0b21pY1ZhbHVlKCk7CisgICAgCisgICAgVHlwZSBhY2Nlc3NUeXBlKCkgY29uc3Qg
eyByZXR1cm4gY2hpbGQoMCktPnR5cGUoKTsgfQorICAgIAorICAgIFdpZHRoIGFjY2Vzc1dpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIAorcHJvdGVjdGVkOgorICAgIHZvaWQg
ZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAg
ICAKKyAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2lu
ZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90
IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5n
ZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQXRvbWljVmFsdWUo
S2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1
ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0g
SGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgp
KTsKKyAgICAKKyAgICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MCw3
IEBAIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogY2xhc3MgSW5zZXJ0aW9uU2V0OwogY2xhc3Mg
UHJvY2VkdXJlOwogY2xhc3MgVmFsdWU7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0OwogCiBjbGFzcyBCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShCYXNpY0Jsb2NrKTsKQEAgLTE1OCw2ICsxNTksNyBAQCBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgSW5zZXJ0
aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWU+IGZyaWVuZCBjbGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgCiAgICAgLy8g
SW5zdGFudGlhdGUgdmlhIFByb2NlZHVyZS4KICAgICBCYXNpY0Jsb2NrKHVuc2lnbmVkIGluZGV4
LCBkb3VibGUgZnJlcXVlbmN5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
NiwzNSArMzYsMTMgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBCbG9ja0lu
c2VydGlvblNldDo6QmxvY2tJbnNlcnRpb25TZXQoUHJvY2VkdXJlICZwcm9jKQotICAgIDogbV9w
cm9jKHByb2MpCisgICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQocHJvYy5tX2Jsb2NrcykK
KyAgICAsIG1fcHJvYyhwcm9jKQogewogfQogCiBCbG9ja0luc2VydGlvblNldDo6fkJsb2NrSW5z
ZXJ0aW9uU2V0KCkgeyB9CiAKLXZvaWQgQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydChCbG9ja0lu
c2VydGlvbiYmIGluc2VydGlvbikKLXsKLSAgICBtX2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUo
aW5zZXJ0aW9uKSk7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQo
dW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEJhc2ljQmxvY2s+IGJsb2NrKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsK
LSAgICBCYXNpY0Jsb2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsKLSAgICBpbnNlcnQoQmxvY2tJ
bnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2spKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEJlZm9yZShCYXNpY0Jsb2Nr
KiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChiZWZvcmUt
PmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZy
ZXF1ZW5jeSgpKTsKLX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEFm
dGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHJldHVybiBp
bnNlcnQoYWZ0ZXItPmluZGV4KCkgKyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVl
bmN5IDogYWZ0ZXItPmZyZXF1ZW5jeSgpKTsKLX0KLQogQmFzaWNCbG9jayogQmxvY2tJbnNlcnRp
b25TZXQ6OnNwbGl0Rm9yd2FyZCgKICAgICBCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQmIHZh
bHVlSW5kZXgsIEluc2VydGlvblNldCogaW5zZXJ0aW9uU2V0LCBkb3VibGUgZnJlcXVlbmN5KQog
ewpAQCAtMTAyLDMyICs4MCw2IEBAIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxp
dEZvcncKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEJsb2NrSW5zZXJ0aW9uU2V0Ojpl
eGVjdXRlKCkKLXsKLSAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIAotICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4g
dG8gdXMgaW4gYW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCi0gICAg
Ly8gcnVubmluZyBXVEY6OmV4ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBz
dGFibGUgc29ydCBhbmQgd2Ugd2FudCBpdCB0byBiZQotICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBi
dWJibGUgc29ydC4KLSAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2Vy
dGlvbnMuZW5kKCkpOwotCi0gICAgZXhlY3V0ZUluc2VydGlvbnMobV9wcm9jLm1fYmxvY2tzLCBt
X2luc2VydGlvbnMpOwotICAgIAotICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBUaGlz
IGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncwotICAgIC8vIGhlYWx0aHkgdG8ga2Vl
cCB0aGUgYmxvY2sgbGlzdCBmcm9tIGdyb3dpbmcuCi0gICAgbV9wcm9jLm1fYmxvY2tzLnJlbW92
ZUFsbE1hdGNoaW5nKAotICAgICAgICBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYg
YmxvY2tQdHIpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuICFibG9ja1B0cjsKLSAgICAg
ICAgfSk7Ci0gICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJsb2NrcyBrbm93IHRoZWly
IG5ldyBpbmRpY2VzLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Byb2MubV9ibG9j
a3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcHJvYy5tX2Jsb2Nrc1tpXS0+bV9pbmRleCA9IGk7
Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwog
CiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5j
bHVkZSA8d3RmL0luc2VydGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM1LDI2
ICszNiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgSW5zZXJ0
aW9uU2V0OwogCi10eXBlZGVmIFdURjo6SW5zZXJ0aW9uPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Js
b2NrPj4gQmxvY2tJbnNlcnRpb247Cit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxC
YXNpY0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CiAKLWNsYXNzIEJsb2Nr
SW5zZXJ0aW9uU2V0IHsKK2NsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNC
bG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPiB7CiBwdWJsaWM6CiAgICAgQmxvY2tJbnNlcnRp
b25TZXQoUHJvY2VkdXJlJik7CiAgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7CiAgICAgCi0gICAg
dm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJik7Ci0KLSAgICAvLyBJbnNlcnQgYSBuZXcgYmxv
Y2sgYXQgYSBnaXZlbiBpbmRleC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5k
ZXgsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBuZXcgYmxv
Y2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUg
ZnJlcXVlbmN5Ci0gICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVz
dCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxvY2suIFRoYXQncwotICAgIC8v
IHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFz
aWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNl
cnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KLSAgICBCYXNpY0Jsb2NrKiBp
bnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwot
CiAgICAgLy8gQSBoZWxwZXIgdG8gc3BsaXQgYSBibG9jayB3aGVuIGZvcndhcmQgaXRlcmF0aW5n
IG92ZXIgaXQuIEl0IGNyZWF0ZXMgYSBuZXcgYmxvY2sgdG8gaG9sZAogICAgIC8vIGV2ZXJ5dGhp
bmcgYmVmb3JlIHRoZSBpbnN0cnVjdGlvbiBhdCB2YWx1ZUluZGV4LiBUaGUgY3VycmVudCBibG9j
ayBpcyBsZWZ0IHdpdGgKICAgICAvLyBldmVyeXRoaW5nIGF0IGFuZCBhZnRlciB2YWx1ZUluZGV4
LiBJZiB0aGUgb3B0aW9uYWwgSW5zZXJ0aW9uU2V0IGlzIHByb3ZpZGVkLCBpdCB3aWxsIGdldApA
QCAtODAsMTIgKzY4LDkgQEAgcHVibGljOgogICAgIEJhc2ljQmxvY2sqIHNwbGl0Rm9yd2FyZCgK
ICAgICAgICAgQmFzaWNCbG9jayosIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQq
ID0gbnVsbHB0ciwKICAgICAgICAgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotICAgIAotICAg
IGJvb2wgZXhlY3V0ZSgpOwogCiBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwotICAg
IFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOwogfTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3Rz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNw
cAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Miw3ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50
ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAgICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQ
aW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3Jp
dGVzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8
IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBz
KG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZlbmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAog
Ym9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAt
OTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAg
ICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhlci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYg
cmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5uZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90
aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYg
cmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9
CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QK
QEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVjdHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChy
ZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAg
ICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYg
KHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAg
ICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2
aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNzEsNiArNzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBib29s
IHJlYWRzUGlubmVkIHsgZmFsc2UgfTsKICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07
CisgICAgCisgICAgLy8gTWVtb3J5IGZlbmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBl
YWNoIG90aGVyIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisg
ICAgLy8gaWYgdGhlIG9wZXJhdGlvbiBpcyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZlbmNl
IHsgZmFsc2UgfTsKIAogICAgIEhlYXBSYW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRz
OwpAQCAtODksNiArOTMsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5yZWFk
cyA9IEhlYXBSYW5nZTo6dG9wKCk7CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7
CiAgICAgICAgIHJlc3VsdC53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVu
Y2UgPSB0cnVlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcgKzEw
OCw3IEBAIHN0cnVjdCBFZmZlY3RzIHsKIAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVz
TG9jYWxTdGF0ZSB8fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4gdGVy
bWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3
cml0ZXNQaW5uZWQgfHwgZmVuY2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHJl
b3JkZXJpbmcgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxk
IGNoYW5nZSBwcm9ncmFtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCShyZXZpc2lvbiAy
MTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0cnVjdCBJbXB1
cmVCbG9ja0RhdGEgewogCiAgICAgUmFuZ2VTZXQ8SGVhcFJhbmdlPiByZWFkczsgLy8gVGhpcyBv
bmx5IGdldHMgdXNlZCBmb3IgZm9yd2FyZCBzdG9yZSBlbGltaW5hdGlvbi4KICAgICBSYW5nZVNl
dDxIZWFwUmFuZ2U+IHdyaXRlczsgLy8gVGhpcyBnZXRzIHVzZWQgZm9yIGJvdGggbG9hZCBhbmQg
c3RvcmUgZWxpbWluYXRpb24uCisgICAgYm9vbCBmZW5jZTsKIAogICAgIE1lbW9yeVZhbHVlTWFw
IHN0b3Jlc0F0SGVhZDsKICAgICBNZW1vcnlWYWx1ZU1hcCBtZW1vcnlWYWx1ZXNBdFRhaWw7CkBA
IC0xNzQsMTIgKzE3NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaWYgKG1lbW9yeSAmJiBtZW1vcnktPmlzU3RvcmUoKQogICAgICAgICAgICAgICAgICAg
ICAmJiAhZGF0YS5yZWFkcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCi0gICAgICAgICAgICAg
ICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpKQorICAgICAg
ICAgICAgICAgICAgICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQor
ICAgICAgICAgICAgICAgICAgICAmJiAoIWRhdGEuZmVuY2UgfHwgIW1lbW9yeS0+aGFzRmVuY2Uo
KSkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3RvcmVzQXRIZWFkLmFkZChtZW1vcnkpOwog
ICAgICAgICAgICAgICAgIGRhdGEucmVhZHMuYWRkKGVmZmVjdHMucmVhZHMpOwogCiAgICAgICAg
ICAgICAgICAgaWYgKEhlYXBSYW5nZSB3cml0ZXMgPSBlZmZlY3RzLndyaXRlcykKICAgICAgICAg
ICAgICAgICAgICAgY2xvYmJlcihkYXRhLCB3cml0ZXMpOworICAgICAgICAgICAgICAgIGRhdGEu
ZmVuY2UgfD0gZWZmZWN0cy5mZW5jZTsKIAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkpCiAg
ICAgICAgICAgICAgICAgICAgIGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkpOwpA
QCAtNDQ1LDggKzQ0OCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgZGF0YUxvZygiQmFkIG1lbW9yeSB2YWx1ZTogIiwgZGVlcER1bXAobV9w
cm9jLCBtX3ZhbHVlKSwgIlxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzgsNiAr
NDc5LDkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9v
bCBmaW5kU3RvcmVBZnRlckNsb2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25z
dCBGaWx0ZXImIGZpbHRlcikKICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
CiAgICAgICAgIC8vIFdlIGNhbiBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBh
dGggaGl0cyBhIHN0b3JlIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBo
aXR0aW5nIGFueSBvcGVyYXRpb24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNo
IHNlZW1zIGxpa2UgaXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRo
ZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRl
bHkgaGl0IGFuIApAQCAtNjE0LDYgKzYxOCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVy
Ym9zZSkKICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQg
Zm9yICIsICpwdHIsICIuLi5cbiIpOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFz
PE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxu
Iik7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIAogICAgICAg
ICBpZiAoTWVtb3J5VmFsdWUqIG1hdGNoID0gbV9kYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5k
KHB0ciwgZmlsdGVyKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTMzNzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiQjNMb3dlclRvQWlyLmgiCiAjaW5jbHVkZSAi
QjNNb3ZlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKKyNpbmNsdWRlICJC
M1B1cmVDU0UuaCIKICNpbmNsdWRlICJCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCIKICNpbmNsdWRl
ICJCM1JlZHVjZVN0cmVuZ3RoLmgiCiAjaW5jbHVkZSAiQjNUaW1pbmdTY29wZS5oIgpAQCAtOTIs
NiArOTMsNyBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsCiAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MDcKICAg
ICB9CiAKKyAgICAvLyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgogICAgIGxvd2Vy
TWFjcm9zKHByb2NlZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9u
U2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiUHVyZU5hTi5oIgorI2luY2x1ZGUg
PHd0Zi9CdWJibGVTb3J0Lmg+CisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNz
IEluc2VydGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9jaz4KK2NsYXNzIEdl
bmVyaWNCbG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBXVEY6Okluc2Vy
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOworICAgIAor
ICAgIEdlbmVyaWNCbG9ja0luc2VydGlvblNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+PiYgYmxvY2tzKQorICAgICAgICA6IG1fYmxvY2tzKGJsb2NrcykKKyAgICB7CisgICAg
fQorICAgIAorICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5zZXJ0aW9uKQorICAg
IHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOworICAg
IH0KKworICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGluZGV4LgorICAgIEJh
c2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
CisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3IEJh
c2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOworICAgICAgICBCYXNpY0Jsb2NrKiByZXN1
bHQgPSBibG9jay5nZXQoKTsKKyAgICAgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBX
VEZNb3ZlKGJsb2NrKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8v
IEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ug
d2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5CisgICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5h
TiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxv
Y2suIFRoYXQncworICAgIC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KKyAgICBCYXNpY0Jsb2Nr
KiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5h
TikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVu
Y3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7CisgICAg
fQorCisgICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxvY2suCisg
ICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVx
dWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChhZnRlci0+aW5kZXgo
KSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBhZnRlci0+ZnJlcXVl
bmN5KCkpOworICAgIH0KKworICAgIGJvb2wgZXhlY3V0ZSgpCisgICAgeworICAgICAgICBpZiAo
bV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4g
YW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCisgICAgICAgIC8vIHJ1
bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxl
IHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKKyAgICAgICAgLy8gZmFzdCwgc28gd2UgdXNlIGJ1
YmJsZSBzb3J0LgorICAgICAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2lu
c2VydGlvbnMuZW5kKCkpOworICAgICAgICAKKyAgICAgICAgZXhlY3V0ZUluc2VydGlvbnMobV9i
bG9ja3MsIG1faW5zZXJ0aW9ucyk7CisgICAgICAgIAorICAgICAgICAvLyBQcnVuZSBvdXQgZW1w
dHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MKKyAgICAg
ICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KKyAgICAg
ICAgbV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAgICBbJl0gKHN0ZDo6dW5p
cXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+IGJvb2wgeworICAgICAgICAgICAgICAg
IHJldHVybiAhYmxvY2tQdHI7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgbV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOworICAgICAgICAKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFz
aWNCbG9jaz4+JiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1faW5z
ZXJ0aW9uczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCShy
ZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdlIG9wZXJhdG9yfChj
b25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlYXBS
YW5nZSgKKyAgICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1fYmVnaW4pLAorICAg
ICAgICAgICAgc3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAgfQorICAgIAogICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1fZW5k
OyB9CiAKICAgICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNp
b24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJbnNlcnRpb25TZXQ6
Omluc2VydEJvdHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9tKGluZGV4LCBsaWtl
VmFsdWUtPm9yaWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1ZhbHVlKiBJbnNlcnRp
b25TZXQ6Omluc2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVlKQoreworICAgIHJl
dHVybiBpbnNlcnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFsdWUpKTsKK30KKwog
dm9pZCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgYnVi
YmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTMz
NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogCiAgICAgVmFsdWUqIGluc2VydEJv
dHRvbShzaXplX3QgaW5kZXgsIE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGluc2VydEJvdHRv
bShzaXplX3QgaW5kZXgsIFZhbHVlKik7CisgICAgCisgICAgVmFsdWUqIGluc2VydENsb25lKHNp
emVfdCBpbmRleCwgVmFsdWUqKTsKIAogICAgIHZvaWQgZXhlY3V0ZShCYXNpY0Jsb2NrKik7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTGVnYWxpemVNZW1v
cnlPZmZzZXRzLmNwcAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSAr
MjgsOCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkFpckFyZy5oIgogI2lu
Y2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgotI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUu
aCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzUGhhc2VT
Y29wZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFs
dWVJbmxpbmVzLmgiCkBAIC00OSwyMCArNDgsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCBydW4o
KQogICAgIHsKLSAgICAgICAgaWYgKCFpc0FSTTY0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
KyAgICAgICAgLy8gRklYTUU6IFBlcmhhcHMgdGhpcyBzaG91bGQgYmUgbW92ZWQgdG8gbG93ZXJN
YWNyb3MsIGFuZCBxdWlya3MgbW9kZSBjYW4gaW1wb3NlIHRoZSByZXF1aXJlbWVudAorICAgICAg
ICAvLyB0aGF0IHRoZSBvZmZzZXQgaXMgbGVnYWwuIEJ1dCBmb3Igbm93IHRoaXMgaXMgc29ydCBv
ZiBPSyBiZWNhdXNlIHdlIHJ1biBwdXJlQ1NFIAorICAgICAgICAKICAgICAgICAgZm9yIChCYXNp
Y0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRl
eCA9IDA7IGluZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbmRleCkgewogICAgICAgICAgICAgICAg
IE1lbW9yeVZhbHVlKiBtZW1vcnlWYWx1ZSA9IGJsb2NrLT5hdChpbmRleCktPmFzPE1lbW9yeVZh
bHVlPigpOwogICAgICAgICAgICAgICAgIGlmICghbWVtb3J5VmFsdWUpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBtZW1v
cnlWYWx1ZS0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBtZW1vcnlW
YWx1ZS0+YWNjZXNzV2lkdGgoKTsKLSAgICAgICAgICAgICAgICBpZiAoIUFpcjo6QXJnOjppc1Zh
bGlkQWRkckZvcm0ob2Zmc2V0LCB3aWR0aCkpIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBpZiAoIW1lbW9yeVZhbHVlLT5pc0xlZ2FsT2Zmc2V0KG1lbW9yeVZhbHVlLT5vZmZz
ZXQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIGJhc2UgPSBtZW1vcnlWYWx1ZS0+
bGFzdENoaWxkKCk7Ci0gICAgICAgICAgICAgICAgICAgIFZhbHVlKiBvZmZzZXRWYWx1ZSA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KGluZGV4LCBtZW1vcnlWYWx1ZS0+b3JpZ2lu
KCksIHBvaW50ZXJUeXBlKCksIG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBv
ZmZzZXRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KGluZGV4LCBtZW1v
cnlWYWx1ZS0+b3JpZ2luKCksIHBvaW50ZXJUeXBlKCksIG1lbW9yeVZhbHVlLT5vZmZzZXQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByZXNvbHZlZEFkZHJlc3MgPSBtX3Byb2MuYWRk
PFZhbHVlPihBZGQsIG1lbW9yeVZhbHVlLT5vcmlnaW4oKSwgYmFzZSwgb2Zmc2V0VmFsdWUpOwog
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRWYWx1ZShpbmRleCwgcmVz
b2x2ZWRBZGRyZXNzKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJN
YWNyb3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
TWFjcm9zLmNwcAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTkgKzI5LDIyIEBACiAj
aWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxv
Y2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCbG9ja0luc2VydGlvblNldC5oIgogI2luY2x1ZGUg
IkIzQ0NhbGxWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQ2FzZUNvbGxlY3Rpb25JbmxpbmVzLmgiCiAj
aW5jbHVkZSAiQjNDb25zdFB0clZhbHVlLmgiCisjaW5jbHVkZSAiQjNGZW5jZVZhbHVlLmgiCiAj
aW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCi0jaW5jbHVkZSAiQjNNZW1vcnlWYWx1
ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQYXRj
aHBvaW50VmFsdWUuaCIKICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1By
b2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5o
IgogI2luY2x1ZGUgIkIzU3dpdGNoVmFsdWUuaCIKICNpbmNsdWRlICJCM1Vwc2lsb25WYWx1ZS5o
IgorI2luY2x1ZGUgIkIzVXNlQ291bnRzLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCkBAIC01
OCwxMSArNjEsMTQgQEAgcHVibGljOgogICAgICAgICA6IG1fcHJvYyhwcm9jKQogICAgICAgICAs
IG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAgICAgLCBtX2luc2VydGlvblNldChwcm9j
KQorICAgICAgICAsIG1fdXNlQ291bnRzKHByb2MpCiAgICAgewogICAgIH0KIAogICAgIGJvb2wg
cnVuKCkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Byb2MuaGFzUXVpcmtzKCkp
OworICAgICAgICAKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewog
ICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwogICAgICAgICAgICAgcHJvY2Vzc0N1cnJlbnRC
bG9jaygpOwpAQCAtNzIsNiArNzgsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9wcm9jLnJl
c2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgICAgICAgICBtX3Byb2MuaW52YWxpZGF0ZUNGRygpOwog
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHdlJ3Zl
IAorICAgICAgICBtX3Byb2Muc2V0SGFzUXVpcmtzKHRydWUpOworICAgICAgICAKICAgICAgICAg
cmV0dXJuIG1fY2hhbmdlZDsKICAgICB9CiAgICAgCkBAIC0xODUsNyArMTk1LDExOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNl
IERlcGVuZDogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIENyZWF0ZSBhIGxvYWQtbG9hZCBmZW5jZS4gVGhpcyBjb2RlZ2VucyB0byBub3Ro
aW5nIG9uIFg4Ni4gV2UgdXNlIGl0IHRvIHRlbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIC8v
IGNvbXBpbGVyIG5vdCB0byBibG9jayBsb2FkIG1vdGlvbi4KKyAgICAgICAgICAgICAgICAgICAg
RmVuY2VWYWx1ZSogZmVuY2UgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8RmVuY2VWYWx1ZT4obV9p
bmRleCwgbV9vcmlnaW4pOworICAgICAgICAgICAgICAgICAgICBmZW5jZS0+cmVhZCA9IEhlYXBS
YW5nZSgpOworICAgICAgICAgICAgICAgICAgICBmZW5jZS0+d3JpdGUgPSBIZWFwUmFuZ2U6OnRv
cCgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gS2lsbCB0
aGUgRGVwZW5kLCB3aGljaCBzaG91bGQgdW5sb2NrIGEgYnVuY2ggb2YgY29kZSBzaW1wbGlmaWNh
dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhCb3R0b20obV9p
bnNlcnRpb25TZXQsIG1faW5kZXgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vh
a0NBUzoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOiB7CisgICAgICAgICAgICAg
ICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxB
dG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+YWNj
ZXNzV2lkdGgoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNDYW5v
bmljYWxXaWR0aCh3aWR0aCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIFZhbHVlKiBleHBlY3RlZFZhbHVlID0gYXRvbWljLT5j
aGlsZCgwKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBPbiBBUk0sIHRo
ZSBsb2FkIHBhcnQgb2YgdGhlIENBUyBkb2VzIGEgbG9hZCB3aXRoIHplcm8gZXh0ZW5zaW9uLiBU
aGVyZWZvcmUsIHdlIG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0byB6ZXJvLWV4dGVuZCB0aGUg
aW5wdXQuCisgICAgICAgICAgICAgICAgVmFsdWUqIG1hc2tlZEV4cGVjdGVkVmFsdWUgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBC
aXRBbmQsIG1fb3JpZ2luLCBleHBlY3RlZFZhbHVlLAorICAgICAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChtX2luZGV4LCBleHBlY3RlZFZhbHVlLCBtYXNr
KHdpZHRoKSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF0b21pYy0+Y2hp
bGQoMCkgPSBtYXNrZWRFeHBlY3RlZFZhbHVlOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoK
KyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAgICAgIC8vIE9uIFg4
NiwgdGhlc2UgbWF5IGFjdHVhbGx5IHJldHVybiBnYXJiYWdlIGluIHRoZSBoaWdoIGJpdHMuIE9u
IEFSTTY0LCB0aGVzZSBzb3J0YQorICAgICAgICAgICAgICAgIC8vIHplcm8tZXh0ZW5kIHRoZWly
IGhpZ2ggYml0cywgZXhjZXB0IHRoYXQgdGhlIGhpZ2ggYml0cyBtaWdodCBnZXQgcG9sbHV0ZWQg
YnkgaGlnaAorICAgICAgICAgICAgICAgIC8vIGJpdHMgaW4gdGhlIG9wZXJhbmQuIC4gU28sIGVp
dGhlciB3YXksIHdlIG5lZWQgdG8gdGhyb3cgYSBzaWduLWV4dGVuZCBvbiB0aGVzZQorICAgICAg
ICAgICAgICAgIC8vIHRoaW5ncy4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBp
ZiAoaXNYODYoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+b3Bjb2RlKCkg
PT0gQXRvbWljWGNoZ1N1YiAmJiBtX3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBPbiB4ODYsIHhjaGdhZGQgaXMgYmV0dGVyIHRoYW4geGNo
Z3N1YiBpZiBpdCBoYXMgYW55IHVzZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1
ZS0+c2V0T3Bjb2RlVW5zYWZlbHkoQXRvbWljWGNoZ0FkZCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5jaGlsZCgwKSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgTmVnLCBtX29yaWdpbiwgbV92YWx1
ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICBib29sIGV4ZW1wdCA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hn
T3I6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhl
bXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZW1wdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRv
bWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPmFjY2Vz
c1dpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzQ2Fub25p
Y2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3VmFsdWUgPSBtX2luc2VydGlvblNldC5p
bnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBzaWduRXh0ZW5kT3Bj
b2RlKHdpZHRoKSwgbV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydENsb25lKG1faW5kZXgsIGF0b21pYykpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAg
ICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIExvYWQ4WjoKKyAg
ICAgICAgICAgIGNhc2UgTG9hZDE2WjogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFN1Yi13aWR0
aCBsb2FkLWFjcSBvbiBBUk02NCBhbHdheXMgc2lnbiBleHRlbmRzLgorICAgICAgICAgICAgICAg
IFZhbHVlKiBuZXdMb2FkID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRleCwgbWVt
b3J5KTsKKyAgICAgICAgICAgICAgICBuZXdMb2FkLT5zZXRPcGNvZGVVbnNhZmVseShtZW1vcnkt
Pm9wY29kZSgpID09IExvYWQ4WiA/IExvYWQ4UyA6IExvYWQxNlMpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4s
IG5ld0xvYWQsCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENv
bnN0YW50KAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgbV9vcmlnaW4sIEludDMy
LCBtYXNrKG1lbW9yeS0+YWNjZXNzV2lkdGgoKSkpKTsKIAorICAgICAgICAgICAgICAgIG1fdmFs
dWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAgICAgICAgICAgIG1fY2hh
bmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpAQCAtNDcwLDYgKzU5Miw3IEBAIHByaXZhdGU6CiAgICAgUHJvY2Vk
dXJlJiBtX3Byb2M7CiAgICAgQmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsK
ICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CisgICAgVXNlQ291bnRzIG1fdXNlQ291
bnRzOwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKICAg
ICBWYWx1ZSogbV92YWx1ZTsKQEAgLTQ3NywyMSArNjAwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2NoYW5nZWQgeyBmYWxzZSB9OwogfTsKIAotYm9vbCBsb3dlck1hY3Jvc0ltcGwoUHJvY2Vk
dXJlJiBwcm9jKQotewotICAgIExvd2VyTWFjcm9zIGxvd2VyTWFjcm9zKHByb2MpOwotICAgIHJl
dHVybiBsb3dlck1hY3Jvcy5ydW4oKTsKLX0KLQogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAK
IGJvb2wgbG93ZXJNYWNyb3MoUHJvY2VkdXJlJiBwcm9jKQogewotICAgIFBoYXNlU2NvcGUgcGhh
c2VTY29wZShwcm9jLCAibG93ZXJNYWNyb3MiKTsKLSAgICBib29sIHJlc3VsdCA9IGxvd2VyTWFj
cm9zSW1wbChwcm9jKTsKLSAgICBpZiAoc2hvdWxkVmFsaWRhdGVJUigpKQotICAgICAgICBSRUxF
QVNFX0FTU0VSVCghbG93ZXJNYWNyb3NJbXBsKHByb2MpKTsKLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIExvd2VyTWFjcm9zIGxvd2VyTWFjcm9zKHByb2MpOworICAgIHJldHVybiBsb3dlck1hY3Jv
cy5ydW4oKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnMuY3BwCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNTYsMTUgKzE1NiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBSb3RMOiB7CiAg
ICAgICAgICAgICAgICAgLy8gQVJNNjQgZG9lc24ndCBoYXZlIGEgcm90YXRlIGxlZnQuCiAgICAg
ICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNB
Uk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCks
IG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3Rh
dGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUt
Pm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPiht
X2luZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAg
ICAgICAgICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFs
dWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwg
bmV3U2hpZnQpOworICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50
aXR5KHJvdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAko
cmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwxNCBAQAogCiAjaWYgRU5BQkxFKEIz
X0pJVCkKIAorI2luY2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWly
Q0NhbGxTcGVjaWFsLmgiCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpckluc2Vy
dGlvblNldC5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyU3Rh
Y2tTbG90LmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNB
dG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRl
ICJCM0Jsb2NrV29ya2xpc3QuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTQxLDcg
KzQzLDcgQEAKICNpbmNsdWRlICJCM0NvbW11dGF0aXZpdHkuaCIKICNpbmNsdWRlICJCM0RvbWlu
YXRvcnMuaCIKICNpbmNsdWRlICJCM0ZlbmNlVmFsdWUuaCIKLSNpbmNsdWRlICJCM01lbW9yeVZh
bHVlLmgiCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1Bh
dGNocG9pbnRTcGVjaWFsLmgiCiAjaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKICNpbmNs
dWRlICJCM1BoYXNlU2NvcGUuaCIKQEAgLTcyLDYgKzc0LDE2IEBAIG5hbWVzcGFjZSB7CiAKIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCisvLyBGSVhNRTogV2Ugd291bGRuJ3QgbmVlZCB0
aGlzIGlmIEFpciBzdXBwb3J0ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFpcjo6S2luZC4KKy8vIE9P
UFMhISEgKG5lZWQgYSBidWcgVVJMKQorI2RlZmluZSBPUENPREVfRk9SX1dJRFRIKG9wY29kZSwg
d2lkdGgpICggXAorICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDggOiBcCisgICAg
KHdpZHRoKSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAorICAgICh3aWR0aCkgPT0gV2lk
dGgzMiA/IG9wY29kZSAjIyAzMiA6IFwKKyAgICBvcGNvZGUgIyMgNjQpCisjZGVmaW5lIE9QQ09E
RV9GT1JfQ0FOT05JQ0FMX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAorICAgICh3aWR0aCkgPT0g
V2lkdGg2NCA/IG9wY29kZSAjIyA2NCA6IG9wY29kZSAjIyAzMikKKwogY2xhc3MgTG93ZXJUb0Fp
ciB7CiBwdWJsaWM6CiAgICAgTG93ZXJUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSkKQEAgLTgz
LDYgKzk1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RvbWluYXRvcnMocHJvY2VkdXJlLmRv
bWluYXRvcnMoKSkKICAgICAgICAgLCBtX3Byb2NlZHVyZShwcm9jZWR1cmUpCiAgICAgICAgICwg
bV9jb2RlKHByb2NlZHVyZS5jb2RlKCkpCisgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldCht
X2NvZGUpCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICAgICAgLCBtX2VheChYODZS
ZWdpc3RlcnM6OmVheCkKKyAgICAgICAgLCBtX2VjeChYODZSZWdpc3RlcnM6OmVjeCkKKyAgICAg
ICAgLCBtX2VkeChYODZSZWdpc3RlcnM6OmVkeCkKKyNlbmRpZgogICAgIHsKICAgICB9CiAKQEAg
LTEyNCwxNCArMTQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3RlZCBhZGRyZXNzIGV4
cHJlc3Npb24gYmVmb3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhlIGxvb3AuCiAgICAg
ICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUuYmxvY2tzSW5QcmVP
cmRlcigpKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAgICAgICAgICAvLyBS
ZXNldCBzb21lIHN0YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CiAKICAgICAg
ICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAKICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nIEJsb2Nr
ICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBNYWtlIHN1
cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KKyAgICAgICAgICAg
IGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygp
KSB7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCku
YXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2Nr
VG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOworICAg
ICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBpbiByZXZlcnNlIG9y
ZGVyIHNvIHdlIHNlZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBhbGxvd3MgdXMKICAg
ICAgICAgICAgIC8vIHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5LgogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAtMTQ5LDE5ICsxNzEs
MTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRhaW5zIHRo
ZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAgICAgICAgLy8gaXQgaW4g
cmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBp
LS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0c1tpXSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBlbmRJbnN0KFdURk1v
dmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhh
dCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAgICAgICAgIGZvciAo
QjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0g
ICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCkuYXBwZW5k
KAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrVG9CbG9j
a1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG1fYmxvY2tUb0Js
b2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fYmxvY2tJbnNlcnRp
b25TZXQuZXhlY3V0ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0IGluc2VydGlvblNl
dChtX2NvZGUpOwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xvZ3VlKQpAQCAtNDQ4
LDEyICs0NjEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJldHVybiBzY2FsZTsKICAgICB9Ci0KKyAgICAKICAgICAvLyBUaGlzIHR1cm5z
IHRoZSBnaXZlbiBvcGVyYW5kIGludG8gYW4gYWRkcmVzcy4KICAgICBBcmcgZWZmZWN0aXZlQWRk
cihWYWx1ZSogYWRkcmVzcywgaW50MzJfdCBvZmZzZXQsIFdpZHRoIHdpZHRoKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgd2lkdGgpKTsKLQorICAg
ICAgICAKICAgICAgICAgYXV0byBmYWxsYmFjayA9IFsmXSAoKSAtPiBBcmcgewogICAgICAgICAg
ICAgcmV0dXJuIEFyZzo6YWRkcih0bXAoYWRkcmVzcyksIG9mZnNldCk7CiAgICAgICAgIH07CkBA
IC01MzUsMTIgKzU0OCwxNSBAQCBwcml2YXRlOgogICAgICAgICBNZW1vcnlWYWx1ZSogdmFsdWUg
PSBtZW1vcnlWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CiAgICAgICAgIGlmICghdmFsdWUpCiAg
ICAgICAgICAgICByZXR1cm4gQXJnKCk7CisgICAgICAgIAorICAgICAgICBpZiAodmFsdWUtPnJl
cXVpcmVzU2ltcGxlQWRkcigpKQorICAgICAgICAgICAgcmV0dXJuIEFyZzo6c2ltcGxlQWRkcih0
bXAodmFsdWUtPmxhc3RDaGlsZCgpKSk7CiAKICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB2YWx1
ZS0+b2Zmc2V0KCk7CiAgICAgICAgIFdpZHRoIHdpZHRoID0gdmFsdWUtPmFjY2Vzc1dpZHRoKCk7
CiAKICAgICAgICAgQXJnIHJlc3VsdCA9IGVmZmVjdGl2ZUFkZHIodmFsdWUtPmxhc3RDaGlsZCgp
LCBvZmZzZXQsIHdpZHRoKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5pc1ZhbGlkRm9ybSh3aWR0
aCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuaXNWYWxpZEZvcm0od2lkdGgpKTsK
IAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTU2MSwxMSArNTc3LDE5IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgQXJnUHJvbWlzZSBsb2FkUHJvbWlzZUFueU9wY29kZShWYWx1ZSog
bG9hZFZhbHVlKQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobG9hZFZhbHVlLT5hczxN
ZW1vcnlWYWx1ZT4oKSk7CiAgICAgICAgIGlmICghY2FuQmVJbnRlcm5hbChsb2FkVmFsdWUpKQog
ICAgICAgICAgICAgcmV0dXJuIEFyZygpOwogICAgICAgICBpZiAoY3Jvc3Nlc0ludGVyZmVyZW5j
ZShsb2FkVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwotICAgICAgICBBcmdQcm9t
aXNlIHJlc3VsdChhZGRyKGxvYWRWYWx1ZSksIGxvYWRWYWx1ZSk7CisgICAgICAgIC8vIE9uIHg4
NiwgYWxsIGxvYWRzIGhhdmUgZmVuY2VzLiBEb2luZyB0aGlzIGtpbmQgb2YgaW5zdHJ1Y3Rpb24g
c2VsZWN0aW9uIHdpbGwgbW92ZSB0aGUgbG9hZCwKKyAgICAgICAgLy8gYnV0IHRoYXQncyBmaW5l
IGJlY2F1c2Ugb3VyIGludGVyZmVyZW5jZSBhbmFseXNpcyBzdG9wcyB0aGUgbW90aW9uIG9mIGZl
bmNlcyBhcm91bmQgb3RoZXIKKyAgICAgICAgLy8gZmVuY2VzLiBTbywgYW55IGxvYWQgbW90aW9u
IHdlIGludHJvZHVjZSBoZXJlIHdvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLgorICAgICAgICBpZiAo
IWlzWDg2KCkgJiYgbG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAg
ICAgICAgICAgIHJldHVybiBBcmcoKTsKKyAgICAgICAgQXJnIGxvYWRBZGRyID0gYWRkcihsb2Fk
VmFsdWUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkQWRkcik7CisgICAgICAgIEFyZ1By
b21pc2UgcmVzdWx0KGxvYWRBZGRyLCBsb2FkVmFsdWUpOwogICAgICAgICBpZiAobG9hZFZhbHVl
LT50cmFwcygpKQogICAgICAgICAgICAgcmVzdWx0LnNldFRyYXBzKHRydWUpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtODk3LDExICs5MjEsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAgICAg
ICBhcHBlbmQoTW92ZSwgdG1wKHZhbHVlKSwgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgYXBwZW5k
KE1vdmUsIHRtcChhbW91bnQpLCBUbXAoWDg2UmVnaXN0ZXJzOjplY3gpKTsKLSAgICAgICAgYXBw
ZW5kKG9wY29kZSwgVG1wKFg4NlJlZ2lzdGVyczo6ZWN4KSwgdG1wKG1fdmFsdWUpKTsKLSNlbmRp
ZgorICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKGFtb3VudCksIG1fZWN4KTsKKyAgICAgICAgYXBw
ZW5kKG9wY29kZSwgbV9lY3gsIHRtcChtX3ZhbHVlKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0PgpAQCAtOTMwLDEwICs5
NTIsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bj
b2RlIG9wY29kZTY0LCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2
ZT4KICAgICBib29sIHRyeUFwcGVuZFN0b3JlQmluT3AoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdo
dCkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVl
PigpKTsKKyAgICAgICAgCiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZv
clR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBsZWZ0LT50eXBlKCkpOwogICAgICAgICBpZiAob3Bj
b2RlID09IEFpcjo6T29wcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCisg
ICAgICAgIC8vIE9uIHg4NiwgYWxsIHN0b3JlcyBoYXZlIGZlbmNlcywgYW5kIHRoaXMgaXNuJ3Qg
cmVvcmRlcmluZyB0aGUgc3RvcmUgaXRzZWxmLgorICAgICAgICBpZiAoIWlzWDg2KCkgJiYgbV92
YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIAogICAgICAgICBBcmcgc3RvcmVBZGRyID0gYWRkcihtX3ZhbHVlKTsK
ICAgICAgICAgQVNTRVJUKHN0b3JlQWRkcik7CiAKQEAgLTk5MywxMSArMTAyMSw1MCBAQCBwcml2
YXRlOgogCiAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFsdWUsIHRtcCh2YWx1ZSksIGRl
c3QpOwogICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShXaWR0aCB3aWR0
aCwgQmFuayBiYW5rLCBib29sIHJlbGVhc2UpCisgICAgeworICAgICAgICBzd2l0Y2ggKHdpZHRo
KSB7CisgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFu
ayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsOCA6IEFpcjo6
U3RvcmU4OworICAgICAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChiYW5rID09IEdQKTsKKyAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwxNiA6
IEFpcjo6U3RvcmUxNjsKKyAgICAgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICAgICAgc3dpdGNo
IChiYW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiBy
ZWxlYXNlID8gU3RvcmVSZWwzMiA6IE1vdmUzMjsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJl
dHVybiBNb3ZlRmxvYXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM2NEJpdCgpKTsK
KyAgICAgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsNjQgOiBNb3ZlOworICAgICAgICAg
ICAgY2FzZSBGUDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVEb3VibGU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShWYWx1ZSogdmFs
dWUpCisgICAgeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9y
eVZhbHVlPigpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtZW1vcnktPmlzU3RvcmUoKSk7Cisg
ICAgICAgIHJldHVybiBzdG9yZU9wY29kZShtZW1vcnktPmFjY2Vzc1dpZHRoKCksIG1lbW9yeS0+
YWNjZXNzQmFuaygpLCBtZW1vcnktPmhhc0ZlbmNlKCkpOworICAgIH0KIAogICAgIEluc3QgY3Jl
YXRlU3RvcmUoVmFsdWUqIHZhbHVlLCBjb25zdCBBcmcmIGRlc3QpCiAgICAgewotICAgICAgICBB
aXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gbW92ZUZvclR5cGUodmFsdWUtPnR5cGUoKSk7Ci0gICAg
ICAgIHJldHVybiBjcmVhdGVTdG9yZShtb3ZlT3Bjb2RlLCB2YWx1ZSwgZGVzdCk7CisgICAgICAg
IEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBzdG9yZU9wY29kZSh2YWx1ZSk7CisgICAgICAgIHJl
dHVybiBjcmVhdGVTdG9yZShtb3ZlT3Bjb2RlLCB2YWx1ZS0+Y2hpbGQoMCksIGRlc3QpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CkBAIC0xMDA1LDcgKzEwNzIsNyBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBj
cmVhdGVTdG9yZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSk7CiAgICAgfQotCisgICAg
CiAgICAgQWlyOjpPcGNvZGUgbW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAg
c3dpdGNoICh0eXBlKSB7CkBAIC0xMDcyLDcgKzExMzksNDEgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChpbnN0KTsKICAgICB9CisgICAgCisgICAgdm9p
ZCBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMoQWlyOjpCYXNpY0Jsb2NrKiB0YXJnZXQpCisg
ICAgeworICAgICAgICAvLyBOb3cgYXBwZW5kIHRoZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMgY29u
dGFpbnMgdGhlbSBpbiByZXZlcnNlIG9yZGVyLCBzbyB3ZSBwcm9jZXNzCisgICAgICAgIC8vIGl0
IGluIHJldmVyc2UuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBp
LS07KSB7CisgICAgICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX2luc3RzW2ldKQorICAgICAg
ICAgICAgICAgIHRhcmdldC0+YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKKyAgICAgICAgfQor
ICAgICAgICBtX2luc3RzLnJlc2l6ZSgwKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpCYXNpY0Js
b2NrKiBuZXdCbG9jaygpCisgICAgeworICAgICAgICByZXR1cm4gbV9ibG9ja0luc2VydGlvblNl
dC5pbnNlcnRBZnRlcihtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXSk7CisgICAgfQogCisgICAgLy8g
Tk9URTogVGhpcyB3aWxsIGNyZWF0ZSBhIGNvbnRpbnVhdGlvbiBibG9jayAoYG5leHRCbG9ja2Ap
ICphZnRlciogYW55IGJsb2NrcyB5b3UndmUgY3JlYXRlZCB1c2luZworICAgIC8vIG5ld0Jsb2Nr
KCkuIFNvLCBpdCdzIHByZWZlcmFibGUgdG8gY3JlYXRlIGFsbCBvZiB5b3VyIGJsb2NrcyB1cGZy
b250IHVzaW5nIG5ld0Jsb2NrKCkuIEFsc28gbm90ZQorICAgIC8vIHRoYXQgYW55IGNvZGUgeW91
IGVtaXQgYmVmb3JlIHRoaXMgd2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIGNvbnRpbnVhdGlvbiwg
YW5kIGFueSBjb2RlIHlvdSBlbWl0CisgICAgLy8gYWZ0ZXIgdGhpcyB3aWxsIGJlIGFwcGVuZGVk
IHRvIHRoZSBwcmV2aW91cyBibG9jay4KKyAgICB2b2lkIHNwbGl0QmxvY2soQWlyOjpCYXNpY0Js
b2NrKiYgcHJldmlvdXNCbG9jaywgQWlyOjpCYXNpY0Jsb2NrKiYgbmV4dEJsb2NrKQorICAgIHsK
KyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2td
OworICAgICAgICAKKyAgICAgICAgcHJldmlvdXNCbG9jayA9IGJsb2NrOworICAgICAgICBuZXh0
QmxvY2sgPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKGJsb2NrKTsKKyAgICAgICAg
CisgICAgICAgIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyhuZXh0QmxvY2spOworICAgICAg
ICBuZXh0QmxvY2stPnN1Y2Nlc3NvcnMoKSA9IGJsb2NrLT5zdWNjZXNzb3JzKCk7CisgICAgICAg
IGJsb2NrLT5zdWNjZXNzb3JzKCkuY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIG1faW5zdHMu
YXBwZW5kKFZlY3RvcjxJbnN0PigpKTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIFQqIGVuc3VyZVNwZWNpYWwoVComIGZp
ZWxkLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewpAQCAtMTEyMiw3ICsxMjIzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmFs
dWVSZXA6OlN0YWNrQXJndW1lbnQ6CiAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjpjYWxsQXJn
KHZhbHVlLnJlcCgpLm9mZnNldEZyb21TUCgpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRTdG9y
ZSh2YWx1ZS52YWx1ZSgpLCBhcmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1vdmVG
b3JUeXBlKHZhbHVlLnZhbHVlKCktPnR5cGUoKSksIHZhbHVlLnZhbHVlKCksIGFyZyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTYwLDYgKzIwNjEsMzA3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kWDg2
RGl2KEIzOjpPcGNvZGUgb3ApCisgICAgeworICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9E
b3VibGVXb3JkOworICAgICAgICBBaXI6Ok9wY29kZSBkaXY7CisgICAgICAgIHN3aXRjaCAobV92
YWx1ZS0+dHlwZSgpKSB7CisgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICBjb252ZXJ0
VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvRG91YmxlV29yZDMyOworICAgICAgICAgICAgZGl2
ID0gWDg2RGl2MzI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ2NDoKKyAg
ICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0Owor
ICAgICAgICAgICAgZGl2ID0gWDg2RGl2NjQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8
IG9wID09IE1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9PSBEaXYgPyBtX2VheCA6IG1f
ZWR4OworCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBtX2Vh
eCk7CisgICAgICAgIGFwcGVuZChjb252ZXJ0VG9Eb3VibGVXb3JkLCBtX2VheCwgbV9lZHgpOwor
ICAgICAgICBhcHBlbmQoZGl2LCBtX2VheCwgbV9lZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkp
OworICAgICAgICBhcHBlbmQoTW92ZSwgcmVzdWx0LCB0bXAobV92YWx1ZSkpOworICAgIH0KKwor
ICAgIHZvaWQgYXBwZW5kWDg2VURpdihCMzo6T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgQWly
OjpPcGNvZGUgZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURpdjMyIDogWDg2
VURpdjY0OworCisgICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVNb2QpOworICAg
ICAgICBUbXAgcmVzdWx0ID0gb3AgPT0gVURpdiA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAg
YXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBw
ZW5kKFhvcjY0LCBtX2VkeCwgbV9lZHgpOworICAgICAgICBhcHBlbmQoZGl2LCBtX2VheCwgbV9l
ZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOworICAgICAgICBhcHBlbmQoTW92ZSwgcmVzdWx0
LCB0bXAobV92YWx1ZSkpOworICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBsb2FkTGlua09w
Y29kZShXaWR0aCB3aWR0aCwgYm9vbCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmZW5j
ZSA/IE9QQ09ERV9GT1JfV0lEVEgoTG9hZExpbmtBY3EsIHdpZHRoKSA6IE9QQ09ERV9GT1JfV0lE
VEgoTG9hZExpbmssIHdpZHRoKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVD
b25kT3Bjb2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZlbmNlID8gT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmRSZWwsIHdpZHRoKSA6IE9QQ09ERV9G
T1JfV0lEVEgoU3RvcmVDb25kLCB3aWR0aCk7CisgICAgfQorICAgIAorICAgIC8vIFRoaXMgY2Fu
IGVtaXQgY29kZSBmb3IgdGhlIGZvbGxvd2luZyBwYXR0ZXJuczoKKyAgICAvLyBBdG9taWNXZWFr
Q0FTCisgICAgLy8gQml0WG9yKEF0b21pY1dlYWtDQVMsIDEpCisgICAgLy8gQXRvbWljU3Ryb25n
Q0FTCisgICAgLy8gRXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkKKyAgICAvLyBOb3RF
cXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKQorICAgIC8vIEJyYW5jaChBdG9taWNXZWFr
Q0FTKQorICAgIC8vIEJyYW5jaChFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKSkKKyAg
ICAvLyBCcmFuY2goTm90RXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAgLy8K
KyAgICAvLyBJdCBhc3N1bWVzIHRoYXQgYXRvbWljVmFsdWUgcG9pbnRzIHRvIHRoZSBDQVMsIGFu
ZCBtX3ZhbHVlIHBvaW50cyB0byB0aGUgaW5zdHJ1Y3Rpb24gYmVpbmcKKyAgICAvLyBnZW5lcmF0
ZWQuIEl0IGFzc3VtZXMgdGhhdCB5b3UndmUgY29uc3VtZWQgZXZlcnl0aGluZyB0aGF0IG5lZWRz
IHRvIGJlIGNvbnN1bWVkLgorICAgIHZvaWQgYXBwZW5kQ0FTKFZhbHVlKiBhdG9taWNWYWx1ZSwg
Ym9vbCBpbnZlcnQpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gYXRvbWlj
VmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChhdG9taWMp
OworICAgICAgICAKKyAgICAgICAgYm9vbCBpc0JyYW5jaCA9IG1fdmFsdWUtPm9wY29kZSgpID09
IEJyYW5jaDsKKyAgICAgICAgYm9vbCBpc1N0cm9uZyA9IGF0b21pYy0+b3Bjb2RlKCkgPT0gQXRv
bWljU3Ryb25nQ0FTOworICAgICAgICBib29sIHJldHVybnNPbGRWYWx1ZSA9IG1fdmFsdWUtPm9w
Y29kZSgpID09IEF0b21pY1N0cm9uZ0NBUzsKKyAgICAgICAgYm9vbCBoYXNGZW5jZSA9IGF0b21p
Yy0+aGFzRmVuY2UoKTsKKyAgICAgICAgCisgICAgICAgIFdpZHRoIHdpZHRoID0gYXRvbWljLT5h
Y2Nlc3NXaWR0aCgpOworICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKworICAg
ICAgICBUbXAgdmFsdWVSZXN1bHRUbXA7CisgICAgICAgIFRtcCBib29sUmVzdWx0VG1wOworICAg
ICAgICBpZiAocmV0dXJuc09sZFZhbHVlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
aW52ZXJ0KTsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOworICAg
ICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICB9IGVs
c2UgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IG1fY29kZS5u
ZXdUbXAoR1ApOworICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1Ap
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUu
bmV3VG1wKEdQKTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSB0bXAobV92YWx1ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFRtcCBzdWNjZXNzQm9vbFJlc3VsdFRtcDsKKyAg
ICAgICAgaWYgKGlzU3Ryb25nICYmICFpc0JyYW5jaCkKKyAgICAgICAgICAgIHN1Y2Nlc3NCb29s
UmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHN1Y2Nlc3NCb29sUmVzdWx0VG1wID0gYm9vbFJlc3VsdFRtcDsKKworICAgICAgICBUbXAgZXhw
ZWN0ZWRWYWx1ZVRtcCA9IHRtcChhdG9taWMtPmNoaWxkKDApKTsKKyAgICAgICAgVG1wIG5ld1Zh
bHVlVG1wID0gdG1wKGF0b21pYy0+Y2hpbGQoMSkpOworICAgICAgICAKKyAgICAgICAgQWlyOjpG
cmVxdWVudGVkQmxvY2sgc3VjY2VzczsKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sgZmFp
bHVyZTsKKyAgICAgICAgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gbV9i
bG9ja1RvQmxvY2tbbV9ibG9ja10tPnN1Y2Nlc3NvcihpbnZlcnQpOworICAgICAgICAgICAgZmFp
bHVyZSA9IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoIWludmVydCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBhcHBl
bmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+YWNjZXNzVHlwZSgpKSwgaW1tT3JUbXAoYXRv
bWljLT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUp
IHsKKyAgICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdHJvbmdD
QVMsIHdpZHRoKSwgbV9lYXgsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAg
ICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+YWNjZXNzVHlwZSgpKSwgbV9lYXgs
IHZhbHVlUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAg
ICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChCcmFuY2hBdG9taWNTdHJvbmdD
QVMsIHdpZHRoKSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9l
YXgsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9j
a1ttX2Jsb2NrXS0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCBmYWlsdXJlKTsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0
cm9uZ0NBUywgd2lkdGgpLCBBcmc6OnN0YXR1c0NvbmQoaW52ZXJ0ID8gTWFjcm9Bc3NlbWJsZXI6
OkZhaWx1cmUgOiBNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCB0bXAoYXRvbWljLT5j
aGlsZCgxKSksIGFkZHJlc3MsIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwor
ICAgICAgICAvLyBXZSB3aXNoIHRvIGVtaXQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJsb2Nr
ICNyZWxvb3A6CisgICAgICAgIC8vICAgICBMb2FkTGluaworICAgICAgICAvLyAgICAgQnJhbmNo
IE5vdEVxdWFsCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogVGhlbjojZmFpbCwgRWxzZTogI3N0
b3JlCisgICAgICAgIC8vIEJsb2NrICNzdG9yZToKKyAgICAgICAgLy8gICAgIFN0b3JlQ29uZAor
ICAgICAgICAvLyAgICAgWG9yICQxLCAlcmVzdWx0ICAgIDwtLS0gb25seSBpZiAhaW52ZXJ0Cisg
ICAgICAgIC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAgICAg
ICAgLy8gQmxvY2sgI2ZhaWw6CisgICAgICAgIC8vICAgICBNb3ZlICRpbnZlcnQsICVyZXN1bHQK
KyAgICAgICAgLy8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAg
ICAgICAvLyBCbG9jayAjZG9uZToKKyAgICAgICAgCisgICAgICAgIEFpcjo6QmFzaWNCbG9jayog
cmVsb29wQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0b3Jl
QmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN1Y2Nlc3NCbG9j
ayA9IG51bGxwdHI7CisgICAgICAgIGlmICghaXNCcmFuY2ggJiYgaXNTdHJvbmcpCisgICAgICAg
ICAgICBzdWNjZXNzQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sq
IGZhaWxCbG9jayA9IG51bGxwdHI7CisgICAgICAgIGlmICghaXNCcmFuY2gpIHsKKyAgICAgICAg
ICAgIGZhaWxCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgICAgICBmYWlsdXJlID0gZmFpbEJs
b2NrOworICAgICAgICB9CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3Ryb25nRmFpbEJsb2Nr
OworICAgICAgICBpZiAoaXNTdHJvbmcgJiYgaGFzRmVuY2UpCisgICAgICAgICAgICBzdHJvbmdG
YWlsQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBjb21w
YXJpc29uRmFpbCA9IGZhaWx1cmU7CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIHdlYWtG
YWlsOworICAgICAgICBpZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgIGlmIChoYXNGZW5jZSkK
KyAgICAgICAgICAgICAgICBjb21wYXJpc29uRmFpbCA9IHN0cm9uZ0ZhaWxCbG9jazsKKyAgICAg
ICAgICAgIHdlYWtGYWlsID0gcmVsb29wQmxvY2s7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAg
ICAgIHdlYWtGYWlsID0gZmFpbHVyZTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJs
b2NrOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRC
bG9jayhiZWdpbkJsb2NrLCBkb25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFp
cjo6SnVtcCk7CisgICAgICAgIGJlZ2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2sp
OworICAgICAgICAKKyAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChsb2FkTGlua09wY29kZSh3
aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgYWRkcmVzcywgdmFsdWVSZXN1bHRU
bXApOworICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJ
RFRIKEJyYW5jaCwgd2lkdGgpLCBtX3ZhbHVlLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsKSwgdmFsdWVSZXN1bHRUbXAsIGV4cGVjdGVkVmFsdWVUbXApOworICAgICAgICBy
ZWxvb3BCbG9jay0+c2V0U3VjY2Vzc29ycyhjb21wYXJpc29uRmFpbCwgc3RvcmVCbG9jayk7Cisg
ICAgICAgIAorICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRo
LCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZVRtcCwgYWRkcmVzcywgc3Vj
Y2Vzc0Jvb2xSZXN1bHRUbXApOworICAgICAgICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAg
IHN0b3JlQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChN
YWNyb0Fzc2VtYmxlcjo6WmVybyksIGJvb2xSZXN1bHRUbXAsIGJvb2xSZXN1bHRUbXApOworICAg
ICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCB3ZWFrRmFpbCk7Cisg
ICAgICAgICAgICBkb25lQmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIWRvbmVCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGRvbmVCbG9j
ay0+YXBwZW5kKEFpcjo6T29wcywgbV92YWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBpZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQo
QnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8p
LCBzdWNjZXNzQm9vbFJlc3VsdFRtcCwgc3VjY2Vzc0Jvb2xSZXN1bHRUbXApOworICAgICAgICAg
ICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMoc3VjY2Vzc0Jsb2NrLCByZWxvb3BCbG9j
ayk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5hcHBl
bmQoTW92ZSwgbV92YWx1ZSwgQXJnOjppbW0oIWludmVydCksIGJvb2xSZXN1bHRUbXApOworICAg
ICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+YXBwZW5kKEFpcjo6SnVtcCwgbV92YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghaW52ZXJ0KQorICAgICAg
ICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoWG9yMzIsIG1fdmFsdWUsIEFyZzo6Yml0
SW1tKDEpLCBib29sUmVzdWx0VG1wLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsK
KyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5k
KE1vdmUsIG1fdmFsdWUsIEFyZzo6aW1tKGludmVydCksIGJvb2xSZXN1bHRUbXApOworICAgICAg
ICAgICAgZmFpbEJsb2NrLT5hcHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAg
IGZhaWxCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBpZiAoaXNTdHJvbmcgJiYgaGFzRmVuY2UpIHsKKyAgICAgICAgICAgIFRtcCB0
bXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBw
ZW5kKHN0b3JlQ29uZE9wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwg
dmFsdWVSZXN1bHRUbXAsIGFkZHJlc3MsIHRtcCk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxv
Y2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2Vt
Ymxlcjo6WmVybyksIHRtcCwgdG1wKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+c2V0
U3VjY2Vzc29ycyhmYWlsdXJlLCByZWxvb3BCbG9jayk7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgYm9vbCBhcHBlbmRWb2lkQXRvbWljKEFpcjo6T3Bjb2RlIGF0b21pY09wY29kZSkKKyAg
ICB7CisgICAgICAgIGlmIChtX3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKG1f
dmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwg
QXJnOjpJbW0sIGFkZHJlc3Mua2luZCgpKSAmJiBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpKSB7Cisg
ICAgICAgICAgICBhcHBlbmQoYXRvbWljT3Bjb2RlLCBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpLCBh
ZGRyZXNzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBpZiAoaXNWYWxpZEZvcm0oYXRvbWljT3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5r
aW5kKCkpKSB7CisgICAgICAgICAgICBhcHBlbmQoYXRvbWljT3Bjb2RlLCB0bXAobV92YWx1ZS0+
Y2hpbGQoMCkpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
cHBlbmRHZW5lcmFsQXRvbWljKEFpcjo6T3Bjb2RlIG9wY29kZSkKKyAgICB7CisgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAg
CisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgVG1wIG9sZFZh
bHVlID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIFRtcCBuZXdWYWx1ZSA9IG1fY29kZS5u
ZXdUbXAoR1ApOworICAgICAgICAKKyAgICAgICAgLy8gV2UgbmVlZCBhIENBUyBsb29wIG9yIGEg
TEwvU0MgbG9vcC4gVXNpbmcgcHJlcGFyZS9hdHRlbXB0IGphcmdvbiwgd2Ugd2FudDoKKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIFByZXBhcmUK
KyAgICAgICAgLy8gICAgIG9wY29kZQorICAgICAgICAvLyAgICAgQXR0ZW1wdAorICAgICAgICAv
LyAgIFN1Y2Nlc3NvcnM6IFRoZW46I2RvbmUsIEVsc2U6I3JlbG9vcAorICAgICAgICAvLyBCbG9j
ayAjZG9uZToKKyAgICAgICAgLy8gICAgIE1vdmUgb2xkVmFsdWUsIHJlc3VsdAorICAgICAgICAK
KyAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG9sZFZh
bHVlLCB0bXAoYXRvbWljKSk7CisgICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJl
bG9vcEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJs
b2NrOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRC
bG9jayhiZWdpbkJsb2NrLCBkb25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFp
cjo6SnVtcCk7CisgICAgICAgIGJlZ2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2sp
OworICAgICAgICAKKyAgICAgICAgQWlyOjpPcGNvZGUgcHJlcGFyZU9wY29kZTsKKyAgICAgICAg
aWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYXRvbWljLT5hY2Nlc3NXaWR0aCgp
KSB7CisgICAgICAgICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bj
b2RlID0gTG9hZDhTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBM
b2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBXaWR0aDMyOgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlMzI7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAg
ICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IE1vdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpc0FSTTY0KCkpOworICAgICAgICAgICAgb3Bjb2RlID0gbG9hZExpbmtPcGNvZGUoYXRv
bWljLT5hY2Nlc3NXaWR0aCgpLCBhdG9taWMtPmhhc0ZlbmNlKCkpOworICAgICAgICB9CisgICAg
ICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQocHJlcGFyZU9wY29kZSwgbV92YWx1ZSwgYWRkcmVzcywg
b2xkVmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKG9wY29kZSAhPSBBaXI6Ok5vcCkgewor
ICAgICAgICAgICAgaWYgKGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9v
cEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG9s
ZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChpc1ZhbGlkRm9ybShvcGNv
ZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9v
cEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIG9s
ZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBy
ZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG1f
dmFsdWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGltbShhdG9t
aWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCkp
CisgICAgICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVl
LCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVl
LCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBj
YXNPcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9uZ0NBUywgYXRvbWlj
LT5hY2Nlc3NXaWR0aCgpKTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQocmVsYXhl
ZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgbV92YWx1ZSwgb2xkVmFsdWUsIG1fZWF4KTsK
KyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoY2FzT3Bjb2RlLCBtX3ZhbHVlLCBBcmc6
OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3VmFsdWUsIGFk
ZHJlc3MpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNB
Uk02NCgpKTsKKyAgICAgICAgICAgIFRtcCBib29sUmVzdWx0ID0gbV9jb2RlLm5ld1RtcChHUCk7
CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29kZShhdG9taWMt
PmFjY2Vzc1dpZHRoKCksIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIG5ld1ZhbHVlLCBh
ZGRyZXNzLCBib29sUmVzdWx0KTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoQnJh
bmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBi
b29sUmVzdWx0LCBib29sUmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICByZWxvb3BCbG9jay0+
c2V0U3VjY2Vzc29ycyhkb25lQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICB9CisgICAgCiAgICAg
dm9pZCBsb3dlcigpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7
CkBAIC0xOTcwLDMwICsyMzcyLDUwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIExvYWQ6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3Qo
bV92YWx1ZSwgbW92ZUZvclR5cGUobV92YWx1ZS0+dHlwZSgpKSwgbV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0g
bV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUgPSBBaXI6Ok9vcHM7CisgICAgICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7Cisg
ICAgICAgICAgICAgICAgc3dpdGNoIChtZW1vcnktPnR5cGUoKSkgeworICAgICAgICAgICAgICAg
IGNhc2UgSW50MzI6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3EzMjsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBJbnQ2NDoKKyAg
ICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTY0OworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBv
cGNvZGUgPSBtb3ZlRm9yVHlwZShtZW1vcnktPnR5cGUoKSk7CisgICAgICAgICAgICBhcHBlbmQo
dHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1w
KG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIExvYWQ4UzogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5z
dChtX3ZhbHVlLCBMb2FkOFNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSks
IHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOFNpZ25lZEV4dGVuZFRv
MzIgOiBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJ
bnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUp
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQ4
WjogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOCwgbV92
YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9w
Y29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExv
YWRBY3E4IDogTG9hZDg7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUs
IG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQxNlM6IHsKLSAgICAg
ICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDE2U2lnbmVkRXh0ZW5kVG8z
MiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBB
aXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2Uo
KSA/IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOwor
ICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUs
IGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZaOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJh
cHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1f
dmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxN
ZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNiA6IExvYWQxNjsKKyAgICAgICAg
ICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1f
dmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBZGQ6IHsKICAgICAgICAgICAgIGlmICh0cnlB
cHBlbmRMZWEoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDkxLDcgKzI1MTMsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmlzQ2hpbGwoKSkKICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwogICAgICAgICAgICAgaWYgKGlzSW50
KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAgIGxvd2VyWDg2
RGl2KERpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2RGl2KERpdik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKCFpc1g4Nigp
IHx8IGlzRmxvYXQobV92YWx1ZS0+dHlwZSgpKSk7CkBAIC0yMTAyLDcgKzI1MjQsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIGNhc2UgVURpdjogewogICAgICAgICAgICAgaWYgKGlzSW50KG1fdmFs
dWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAgIGxvd2VyWDg2VURpdihV
RGl2KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVEaXYpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjExNiwxMyArMjUzOCwxMyBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIE1vZDogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNY
ODYoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV92YWx1ZS0+aXNDaGlsbCgpKTsK
LSAgICAgICAgICAgIGxvd2VyWDg2RGl2KE1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZEaXYo
TW9kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgVU1v
ZDogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7Ci0gICAgICAgICAgICBs
b3dlclg4NlVEaXYoVU1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVNb2QpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxNjEsMTAgKzI1ODMsMjggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPE5vdDMyLCBOb3Q2ND4obV92YWx1ZS0+
Y2hpbGQoMCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgLy8gVGhpcyBwYXR0ZXJuIGlzIHN1cGVyIHVzZWZ1bCBvbiBi
b3RoIHg4NiBhbmQgQVJNNjQsIHNpbmNlIHRoZSBpbnZlcnNpb24gb2YgdGhlIENBUyByZXN1bHQK
KyAgICAgICAgICAgIC8vIGNhbiBiZSBkb25lIHdpdGggemVybyBjb3N0IG9uIHg4NiAoanVzdCBm
bGlwIHRoZSBzZXQgZnJvbSBFIHRvIE5FKSBhbmQgaXQncyBhIHByb2dyZXNzaW9uCisgICAgICAg
ICAgICAvLyBvbiBBUk02NCAoc2luY2UgU1RYIHJldHVybnMgMCBvbiBzdWNjZXNzLCBzbyBvcmRp
bmFyaWx5IHdlIGhhdmUgdG8gZmxpcCBpdCkuCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hp
bGQoMSktPmlzSW50KDEpCisgICAgICAgICAgICAgICAgJiYgaXNBdG9taWNDQVMobV92YWx1ZS0+
Y2hpbGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwobV92
YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1
ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLT5jaGlsZCgw
KSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxYb3IzMiwgWG9yNjQsIFhvckRvdWJsZSwg
WG9yRmxvYXQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgw
KSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBhcHBlbmRVbk9wPERlcGVuZDMyLCBEZXBl
bmQ2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CiAKICAgICAgICAgY2FzZSBTaGw6IHsKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgx
KS0+aXNJbnQzMigxKSkgewpAQCAtMjI2NSw3ICsyNzA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVl
VG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVl
LCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0y
Mjg2LDcgKzI3MjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUo
QWlyOjpTdG9yZTgsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBh
cHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkBAIC0yMzA3LDcgKzI3NDcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTE2LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1
ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjQxNSw3ICsyODU1LDIyIEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEVxdWFsOgotICAgICAgICBjYXNlIE5v
dEVxdWFsOgorICAgICAgICBjYXNlIE5vdEVxdWFsOiB7CisgICAgICAgICAgICBpZiAobV92YWx1
ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAg
ICYmIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSA9PSBtX3ZhbHVlLT5jaGlsZCgxKQorICAg
ICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgwKS0+
Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1f
dmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY29t
bWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVuZENB
UyhtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChjcmVhdGVDb21wYXJlKG1fdmFsdWUpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgTGVzc1RoYW46CiAgICAgICAgIGNhc2UgR3JlYXRlclRoYW46CiAgICAgICAgIGNhc2UgTGVz
c0VxdWFsOgpAQCAtMjcyNiw2ICszMTgxLDQwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIEJyYW5jaDogeworICAgICAgICAgICAgaWYgKGNhbkJlSW50ZXJuYWwobV92YWx1
ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIGJyYW5jaENoaWxkID0gbV92
YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChicmFuY2hDaGlsZC0+b3Bj
b2RlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNT
dHJvbmdDQVM6CisgICAgICAgICAgICAgICAgICAgIC8vIEEgYnJhbmNoIGlzIGEgY29tcGFyaXNv
biB0byB6ZXJvLgorICAgICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDAp
LT5pc0ludCgwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJh
bmNoQ2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxk
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgY2FzZSBFcXVhbDoKKyAgICAgICAgICAgICAgICBjYXNlIE5vdEVx
dWFsOgorICAgICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5vcGNv
ZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGNhbkJl
SW50ZXJuYWwoYnJhbmNoQ2hpbGQtPmNoaWxkKDApKQorICAgICAgICAgICAgICAgICAgICAgICAg
JiYgYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5jaGlsZCgwKSA9PSBicmFuY2hDaGlsZC0+Y2hpbGQo
MSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxk
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkLT5j
aGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQt
PmNoaWxkKDApLCBicmFuY2hDaGlsZC0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFw
cGVuZChjcmVhdGVCcmFuY2gobV92YWx1ZS0+Y2hpbGQoMCkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMjc4Myw3ICszMjcyLDgxIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBhcHBlbmQoQWlyOjpFbnRyeVN3aXRjaCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgIGNh
c2UgQXRvbWljU3Ryb25nQ0FTOiB7CisgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZSwgZmFs
c2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBBdG9taWNYY2hnQWRkOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWlj
ID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9p
ZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY0FkZCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgp
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBB
cmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZ0FkZCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgp
KTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNz
LmtpbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0
b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0bXAoYXRvbWljKSk7CisgICAg
ICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyksIGFkZHJlc3MpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXBwZW5kR2Vu
ZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChBZGQsIGF0b21pYy0+YWNjZXNz
V2lkdGgoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAgICAgY2Fz
ZSBBdG9taWNYY2hnU3ViOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92
YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21p
YyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1N1YiwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRH
ZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFN1YiwgYXRvbWljLT5hY2Nl
c3NXaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVl
KiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChh
cHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQW5kLCBhdG9taWMtPmFjY2Vz
c1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoQW5k
LCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOiB7CisgICAgICAgICAg
ICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAg
ICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY09yLCBh
dG9taWMtPmFjY2Vzc1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklD
QUxfV0lEVEgoT3IsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOiB7
CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFs
dWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRI
KEF0b21pY1hvciwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09E
RV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFhvciwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0
b21pY1hjaGc6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5h
czxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXJnIGFkZHJlc3Mg
PSBhZGRyKGF0b21pYyk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVf
Rk9SX1dJRFRIKEF0b21pY1hjaGcsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSk7CisgICAgICAgICAg
ICBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSks
IHRtcChhdG9taWMtPmNoaWxkKDApKSwgdG1wKGF0b21pYykpOworICAgICAgICAgICAgICAgIGFw
cGVuZChvcGNvZGUsIHRtcChhdG9taWMpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVy
YWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoWG9yLCBhdG9taWMtPmFjY2Vzc1dp
ZHRoKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjc5MSw2
NCArMzM1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGRhdGFMb2coIkZBVEFMOiBjb3VsZCBub3Qg
bG93ZXIgIiwgZGVlcER1bXAobV9wcm9jZWR1cmUsIG1fdmFsdWUpLCAiXG4iKTsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0KLSAgICB2b2lkIGxvd2VyWDg2
RGl2KEIzOjpPcGNvZGUgb3ApCi0gICAgewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0g
ICAgICAgIFRtcCBlYXggPSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4
ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0
VG9Eb3VibGVXb3JkOwotICAgICAgICBBaXI6Ok9wY29kZSBkaXY7Ci0gICAgICAgIHN3aXRjaCAo
bV92YWx1ZS0+dHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgSW50MzI6Ci0gICAgICAgICAgICBjb252
ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvRG91YmxlV29yZDMyOwotICAgICAgICAgICAg
ZGl2ID0gWDg2RGl2MzI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ2NDoK
LSAgICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0
OwotICAgICAgICAgICAgZGl2ID0gWDg2RGl2NjQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQob3AgPT0gRGl2
IHx8IG9wID09IE1vZCk7Ci0gICAgICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQg
PSBvcCA9PSBEaXYgPyBYODZSZWdpc3RlcnM6OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0g
ICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAg
ICBhcHBlbmQoY29udmVydFRvRG91YmxlV29yZCwgZWF4LCBlZHgpOwotICAgICAgICBhcHBlbmQo
ZGl2LCBlYXgsIGVkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChN
b3ZlLCBUbXAocmVzdWx0KSwgdG1wKG1fdmFsdWUpKTsKLQotI2Vsc2UKLSAgICAgICAgVU5VU0VE
X1BBUkFNKG9wKTsKLSAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYK
LSAgICB9Ci0KLSAgICB2b2lkIGxvd2VyWDg2VURpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNp
ZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lz
dGVyczo6ZWF4KTsKLSAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0K
LSAgICAgICAgQWlyOjpPcGNvZGUgZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2
VURpdjMyIDogWDg2VURpdjY0OwotCi0gICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09
IFVNb2QpOwotICAgICAgICBYODZSZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0g
VURpdiA/IFg4NlJlZ2lzdGVyczo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAg
YXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVu
ZChYb3I2NCwgZWR4LCBlZHgpOwotICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1f
dmFsdWUtPmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1w
KG1fdmFsdWUpKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVO
UkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlmCi0gICAgfQotCisgICAgCiAgICAgSW5k
ZXhTZXQ8VmFsdWU+IG1fbG9ja2VkOyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQgd2lsbCBoYXZl
IG5vIFRtcCBpbiBBaXIuCiAgICAgSW5kZXhNYXA8VmFsdWUsIFRtcD4gbV92YWx1ZVRvVG1wOyAv
LyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQgbXVzdCBoYXZlIGEgVG1wIGluIEFpci4gV2Ugc2F5IHRo
YXQgYSBWYWx1ZSogd2l0aCBhIG5vbi1udWxsIFRtcCBpcyAicGlubmVkIi4KICAgICBJbmRleE1h
cDxWYWx1ZSwgVG1wPiBtX3BoaVRvVG1wOyAvLyBFYWNoIFBoaSBnZXRzIGl0cyBvd24gVG1wLgpA
QCAtMjg2Myw3ICszMzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxWZWN0b3I8SW5zdCwg
ND4+IG1faW5zdHM7CiAgICAgVmVjdG9yPEluc3Q+IG1fcHJvbG9ndWU7Ci0KKyAgICAKICAgICBC
Mzo6QmFzaWNCbG9jayogbV9ibG9jazsKICAgICBib29sIG1faXNSYXJlOwogICAgIHVuc2lnbmVk
IG1faW5kZXg7CkBAIC0yODc0LDYgKzMzODAsMTIgQEAgcHJpdmF0ZToKIAogICAgIFByb2NlZHVy
ZSYgbV9wcm9jZWR1cmU7CiAgICAgQ29kZSYgbV9jb2RlOworCisgICAgQWlyOjpCbG9ja0luc2Vy
dGlvblNldCBtX2Jsb2NrSW5zZXJ0aW9uU2V0OworCisgICAgVG1wIG1fZWF4OworICAgIFRtcCBt
X2VjeDsKKyAgICBUbXAgbV9lZHg7CiB9OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmgJKHJldmlzaW9uIDIxMzM3
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMyLDcgKzMyLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiBj
bGFzcyBQcm9jZWR1cmU7CiBuYW1lc3BhY2UgQWlyIHsgY2xhc3MgQ29kZTsgfQogCi0vLyBUaGlz
IGxvd2VycyB0aGUgY3VycmVudCBCMyBwcm9jZWR1cmUgdG8gYW4gQWlyIGNvZGUuCisvLyBUaGlz
IGxvd2VycyB0aGUgY3VycmVudCBCMyBwcm9jZWR1cmUgdG8gYW4gQWlyIGNvZGUuIE5vdGUgdGhh
dCB0aGlzIGFzc3VtZXMgdGhhdCB0aGUgcHJvY2VkdXJlIGlzIGluCisvLyBxdWlya3MgbW9kZSwg
YnV0IGl0IGRvZXMgbm90IGFzc2VydCB0aGlzLCB0byBzaW1wbGlmeSBob3cgd2Ugd3JpdGUgdGVz
dHMuCiAKIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbG93ZXJUb0FpcihQcm9jZWR1cmUmKTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkocmV2aXNp
b24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwzNiArMjgsMzcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQp
CiAKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlu
bGluZXMuaCIKKyNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgorCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsKIAogTWVtb3J5VmFsdWU6On5NZW1vcnlWYWx1ZSgpCiB7CiB9CiAKLXNp
emVfdCBNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUoKSBjb25zdAorYm9vbCBNZW1vcnlWYWx1
ZTo6aXNMZWdhbE9mZnNldChpbnQ2NF90IG9mZnNldCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG9w
Y29kZSgpKSB7Ci0gICAgY2FzZSBMb2FkOFo6Ci0gICAgY2FzZSBMb2FkOFM6Ci0gICAgY2FzZSBT
dG9yZTg6Ci0gICAgICAgIHJldHVybiAxOwotICAgIGNhc2UgTG9hZDE2WjoKLSAgICBjYXNlIExv
YWQxNlM6Ci0gICAgY2FzZSBTdG9yZTE2OgotICAgICAgICByZXR1cm4gMjsKLSAgICBjYXNlIExv
YWQ6Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKHR5cGUoKSk7Ci0gICAgY2FzZSBTdG9yZToK
LSAgICAgICAgcmV0dXJuIHNpemVvZlR5cGUoY2hpbGQoMCktPnR5cGUoKSk7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQorICAgIHJldHVybiBCMzo6aXNSZXByZXNlbnRhYmxlQXM8aW50MzJfdD4ob2Zm
c2V0KSAmJiBpc0xlZ2FsT2Zmc2V0KHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkpOworfQor
CitUeXBlIE1lbW9yeVZhbHVlOjphY2Nlc3NUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNMb2Fk
KCkpCisgICAgICAgIHJldHVybiB0eXBlKCk7CisgICAgLy8gVGhpcyBoYXBwZW5zIHRvIHdvcmsg
Zm9yIGF0b21pY3MsIHRvby4gVGhhdCdzIHdoeSBBdG9taWNWYWx1ZSBkb2VzIG5vdCBuZWVkIHRv
IG92ZXJyaWRlIHRoaXMuCisgICAgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7CiB9CiAKLVdpZHRo
IE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0CitCYW5rIE1lbW9yeVZhbHVlOjphY2Nl
c3NCYW5rKCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2lkdGhGb3JCeXRlcyhhY2Nlc3NCeXRlU2l6
ZSgpKTsKKyAgICByZXR1cm4gYmFua0ZvclR5cGUoYWNjZXNzVHlwZSgpKTsKK30KKworc2l6ZV90
IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ5dGVz
KGFjY2Vzc1dpZHRoKCkpOwogfQogCiB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVBy
aW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdApAQCAtNjUsOCArNjYsMTEgQEAg
dm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJgogICAgIGlmIChtX29mZnNl
dCkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAib2Zmc2V0ID0gIiwgbV9vZmZzZXQpOwogICAg
IGlmICgoaXNMb2FkKCkgJiYgZWZmZWN0cygpLnJlYWRzICE9IHJhbmdlKCkpCi0gICAgICAgIHx8
IChpc1N0b3JlKCkgJiYgZWZmZWN0cygpLndyaXRlcyAhPSByYW5nZSgpKSkKKyAgICAgICAgfHwg
KGlzU3RvcmUoKSAmJiBlZmZlY3RzKCkud3JpdGVzICE9IHJhbmdlKCkpCisgICAgICAgIHx8IGlz
RXhvdGljKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgInJhbmdlID0gIiwgcmFuZ2UoKSk7
CisgICAgaWYgKGlzRXhvdGljKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgImZlbmNlUmFu
Z2UgPSAiLCBmZW5jZVJhbmdlKCkpOwogfQogCiBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1w
bCgpIGNvbnN0CkBAIC03NCw2ICs3OCw2MiBAQCBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1w
bCgpIGNvbnN0CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlWYWx1ZSgqdGhpcyk7CiB9CiAKKy8vIFVz
ZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0
aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3VmZml4IHRoYXQKKy8vIGRlc2NyaWJlcyB0aGUgcmV0dXJu
ZWQgdHlwZSkuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUs
IE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdl
IHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUs
IGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAg
ICAsIG1fcmFuZ2UocmFuZ2UpCisgICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKK3sKKyAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkp
IHsKKyAgICAgICAgY2FzZSBMb2FkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
TG9hZDhaOgorICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAg
ICAgICBjYXNlIExvYWQxNlM6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3Rv
cmUxNjoKKyAgICAgICAgY2FzZSBTdG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZv
aWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMg
Zm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlW
YWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRl
ciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2Up
CisgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQs
IHJhbmdlLCBmZW5jZVJhbmdlKQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
ICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAg
ICAgY2FzZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2Fk
MTZTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMg
Zm9ybSBmb3Igc3RvcmVzLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3Jp
Z2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQs
IEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBWYWx1ZShDaGVj
a2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgICwgbV9v
ZmZzZXQob2Zmc2V0KQorICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICAsIG1fZmVuY2VSYW5nZShm
ZW5jZVJhbmdlKQoreworICAgIEFTU0VSVChCMzo6aXNTdG9yZShraW5kLm9wY29kZSgpKSk7Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2aXNpb24g
MjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMTI3ICsyNyw4NiBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAor
I2luY2x1ZGUgIkFpckFyZy5oIgorI2luY2x1ZGUgIkIzQmFuay5oIgogI2luY2x1ZGUgIkIzSGVh
cFJhbmdlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsKIAotLy8gRklYTUU6IFdlIHdhbnQgdG8gYWxsb3cgZmVuY2VkIG1lbW9yeSBhY2Nl
c3NlcyBvbiBBUk0uCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYyMzQ5Ci0KIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIE1lbW9yeVZhbHVlIDogcHVibGljIFZh
bHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKICAgICB7
Ci0gICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICBjYXNlIExvYWQ4WjoK
LSAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgY2Fz
ZSBMb2FkMTZTOgotICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgIGNhc2UgU3RvcmU4OgotICAg
ICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzU3RvcmUoS2luZCBraW5kKQotICAg
IHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgU3RvcmU4
OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzTG9hZChLaW5kIGtpbmQp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWNjZXB0cyhraW5kKSAmJiAhaXNTdG9yZShraW5kKTsK
KyAgICAgICAgcmV0dXJuIGlzTWVtb3J5QWNjZXNzKGtpbmQub3Bjb2RlKCkpOwogICAgIH0KIAog
ICAgIH5NZW1vcnlWYWx1ZSgpOwogCiAgICAgaW50MzJfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQogICAgIHZvaWQgc2V0T2Zmc2V0KGludDMyX3Qgb2Zmc2V0KSB7IG1fb2Zm
c2V0ID0gb2Zmc2V0OyB9CisgICAgCisgICAgLy8gWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJv
dXQgdXNpbmcgbGVnYWwgb2Zmc2V0cyB1bmxlc3MgeW91J3ZlIGVudGVyZWQgcXVpcmtzIG1vZGUu
CisgICAgYm9vbCBpc0xlZ2FsT2Zmc2V0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKyAgICBib29s
IGlzTGVnYWxPZmZzZXQoaW50NjRfdCBvZmZzZXQpIGNvbnN0OworICAgIAorICAgIC8vIEEgbmVj
ZXNzYXJ5IGNvbnNlcXVlbmNlIG9mIE1lbW9yeVZhbHVlIGhhdmluZyBhbiBvZmZzZXQgaXMgdGhh
dCBpdCBwYXJ0aWNpcGF0ZXMgaW4gaW5zdHJ1Y3Rpb24KKyAgICAvLyBzZWxlY3Rpb24uIFRoaXMg
dGVsbHMgeW91IGlmIHRoaXMgd2lsbCBnZXQgbG93ZXJlZCB0byBzb21ldGhpbmcgdGhhdCByZXF1
aXJlcyBhbiBvZmZzZXRsZXNzCisgICAgLy8gYWRkcmVzcy4KKyAgICBib29sIHJlcXVpcmVzU2lt
cGxlQWRkcigpIGNvbnN0OwogCiAgICAgY29uc3QgSGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmFuZ2U7IH0KICAgICB2b2lkIHNldFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFu
Z2UpIHsgbV9yYW5nZSA9IHJhbmdlOyB9CisgICAgCisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBm
b3IgcmFuZ2UuCisgICAgY29uc3QgSGVhcFJhbmdlJiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIHJhbmdlKCk7IH0KKyAgICB2b2lkIHNldEFjY2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYg
cmFuZ2UpIHsgc2V0UmFuZ2UocmFuZ2UpOyB9CisgICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBm
ZW5jZVJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9mZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRG
ZW5jZVJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7
IH0KKworICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc1N0b3JlKG9wY29k
ZSgpKTsgfQorICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyByZXR1cm4gQjM6OmlzTG9hZChvcGNv
ZGUoKSk7IH0KIAotICAgIGJvb2wgaXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBW
b2lkOyB9Ci0gICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgIT0gVm9pZDsg
fQorICAgIGJvb2wgaGFzRmVuY2UoKSBjb25zdCB7IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsgfQor
ICAgIGJvb2wgaXNFeG90aWMoKSBjb25zdCB7IHJldHVybiBoYXNGZW5jZSgpIHx8IGlzQXRvbWlj
KG9wY29kZSgpKTsgfQogCisgICAgVHlwZSBhY2Nlc3NUeXBlKCkgY29uc3Q7CisgICAgQmFuayBh
Y2Nlc3NCYW5rKCkgY29uc3Q7CiAgICAgc2l6ZV90IGFjY2Vzc0J5dGVTaXplKCkgY29uc3Q7Cisg
ICAgCiAgICAgV2lkdGggYWNjZXNzV2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZv
aWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hl
Y2tlZE9wY29kZVRhZywgS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMy
X3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlLCBBcmd1bWVu
dHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5
cGUsIG9yaWdpbiwgYXJndW1lbnRzLi4uKQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAg
ICAgICAgLCBtX3JhbmdlKHJhbmdlKQorICAgICAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdl
KQorICAgIHsKKyAgICB9CisgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1
cmU7Ci0KKyAgICAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4
WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CiAg
ICAgLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5k
IGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qg
b2Zmc2V0ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBv
cmlnaW4sIHBvaW50ZXIpCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1f
cmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSkKLSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FC
TEVEKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAg
IGNhc2UgTG9hZDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9h
ZDhaOgotICAgICAgICAgICAgY2FzZSBMb2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6
Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUg
PT0gSW50MzIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9y
ZTg6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgot
ICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICBNZW1vcnlWYWx1
ZShLaW5kLCBUeXBlLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAs
IEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdl
ID0gSGVhcFJhbmdlKCkpOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUg
dGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBP
cmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAg
ICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKLSAg
ICB7Ci0gICAgfQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIs
IGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwg
SGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CiAKICAgICAvLyBVc2UgdGhpcyBm
b3JtIGZvciBzdG9yZXMuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2lu
LCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAg
ICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9p
bnRlcikKLSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFw
UmFuZ2U6OnRvcCgpKQotICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAg
ICAgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9y
ZTg6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdp
biwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFw
UmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhl
YXBSYW5nZSgpKTsKKyAgICAKICAgICBpbnQzMl90IG1fb2Zmc2V0IHsgMCB9OwotICAgIEhlYXBS
YW5nZSBtX3JhbmdlOworICAgIEhlYXBSYW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9
OworICAgIEhlYXBSYW5nZSBtX2ZlbmNlUmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNN
ZW1vcnlWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNNZW1vcnlWYWx1ZUlubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQXJnLmgi
CisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKKworaW5saW5lIGJvb2wgTWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXQoaW50MzJfdCBv
ZmZzZXQpIGNvbnN0Cit7CisgICAgLy8gTk9URTogVGhpcyBpcyBpbmxpbmUgYmVjYXVzZSBpdCBj
b25zdGFudC1mb2xkcyB0byB0cnVlIG9uIHg4NiEKKyAgICAKKyAgICAvLyBTbyBmYXIgb25seSBY
ODYgYWxsb3dzIGV4b3RpYyBsb2FkcyB0byBoYXZlIGFuIG9mZnNldC4KKyAgICBpZiAocmVxdWly
ZXNTaW1wbGVBZGRyKCkpCisgICAgICAgIHJldHVybiAhb2Zmc2V0OworICAgIAorICAgIHJldHVy
biBBaXI6OkFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgYWNjZXNzV2lkdGgoKSk7Cit9CisK
K2lubGluZSBib29sIE1lbW9yeVZhbHVlOjpyZXF1aXJlc1NpbXBsZUFkZHIoKSBjb25zdAorewor
ICAgIHJldHVybiAhaXNYODYoKSAmJiBpc0V4b3RpYygpOworfQorCitpbmxpbmUgV2lkdGggTWVt
b3J5VmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSgpKSB7
CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBTdG9yZTg6Cisg
ICAgICAgIHJldHVybiBXaWR0aDg7CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2
UzoKKyAgICBjYXNlIFN0b3JlMTY6CisgICAgICAgIHJldHVybiBXaWR0aDE2OworICAgIGNhc2Ug
TG9hZDoKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZSh0eXBlKCkpOworICAgIGNhc2UgU3Rv
cmU6CisgICAgICAgIHJldHVybiB3aWR0aEZvclR5cGUoY2hpbGQoMCktPnR5cGUoKSk7CisgICAg
Y2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2Ug
QXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNY
Y2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoK
KyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVybiBhczxBdG9taWNWYWx1ZT4oKS0+
YWNjZXNzV2lkdGgoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gV2lkdGg4OworICAgIH0KK30KKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNb3ZlQ29uc3RhbnRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNb3ZlQ29uc3RhbnRzLmNwcAkocmV2aXNpb24gMjEz
Mzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25T
ZXRJbmxpbmVzLmgiCi0jaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVt
b3J5VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAi
QjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKQEAgLTIw
MywxMiArMjAzLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFjYW5kaWRhdGVQb2ludGVyLT5oYXNJbnRQdHIoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHB0cl90IG9mZnNldCA9
IGRlc2lyZWRPZmZzZXQoY2FuZGlkYXRlUG9pbnRlcik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghQjM6OmlzUmVwcmVzZW50YWJsZUFzPGludDMyX3Q+KHN0YXRpY19jYXN0
PGludDY0X3Q+KG9mZnNldCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWly
OjpBcmc6OmlzVmFsaWRBZGRyRm9ybSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aWR0aEZvckJ5dGVzKG1lbW9yeVZhbHVlLT5hY2Nlc3NCeXRlU2l6ZSgp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gZGVz
aXJlZE9mZnNldChjYW5kaWRhdGVQb2ludGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1lbW9yeVZhbHVlLT5pc0xlZ2FsT2Zmc2V0KG9mZnNldCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChiZXN0UG9pbnRlcikgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTmF0aXZlVHJhaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTmF0aXZlVHJhaXRzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTmF0aXZlVHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNCYW5rLmgi
CisjaW5jbHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBOYXRpdmVU
cmFpdHM7CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxpbnQ4X3Q+IHsKKyAgICBz
dGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRo
ID0gV2lkdGg4OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czx1aW50OF90PiB7CisgICAgc3RhdGljIGNvbnN0
IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoODsK
KyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBOYXRpdmVUcmFpdHM8aW50MTZfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsg
PSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDE2OworICAgIHN0YXRp
YyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2
ZVRyYWl0czx1aW50MTZfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAg
ICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDE2OworICAgIHN0YXRpYyBjb25zdCBU
eXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxp
bnQzMl90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBj
b25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoMzI7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9
IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQzMl90PiB7
CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0
aCB3aWR0aCA9IFdpZHRoMzI7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOwor
fTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGludDY0X3Q+IHsKKyAgICBzdGF0
aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0g
V2lkdGg2NDsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50NjQ7Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDY0X3Q+IHsKKyAgICBzdGF0aWMgY29uc3Qg
QmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg2NDsK
KyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50NjQ7Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBOYXRpdmVUcmFpdHM8ZmxvYXQ+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0g
RlA7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAgICBzdGF0aWMg
Y29uc3QgVHlwZSB0eXBlID0gRmxvYXQ7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVU
cmFpdHM8ZG91YmxlPiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEZQOworICAgIHN0
YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoNjQ7CisgICAgc3RhdGljIGNvbnN0IFR5cGUg
dHlwZSA9IERvdWJsZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYg
Ly8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bj
b2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUu
Y3BwCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNv
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgsNiArNjgsMjMgQEAgc3RkOjpvcHRpb25hbDxP
cGNvZGU+IGludmVydGVkQ29tcGFyZShPcAogICAgIH0KIH0KIAorT3Bjb2RlIHN0b3JlT3Bjb2Rl
KEJhbmsgYmFuaywgV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoIChiYW5rKSB7CisgICAgY2Fz
ZSBHUDoKKyAgICAgICAgc3dpdGNoICh3aWR0aCkgeworICAgICAgICBjYXNlIFdpZHRoODoKKyAg
ICAgICAgICAgIHJldHVybiBTdG9yZTg7CisgICAgICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAg
ICAgIHJldHVybiBTdG9yZTE2OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IFN0b3JlOworICAgICAgICB9CisgICAgY2FzZSBGUDoKKyAgICAgICAgcmV0dXJuIFN0b3JlOwor
ICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpA
QCAtMjYzLDYgKzI4MCwzMyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
T3BjCiAgICAgY2FzZSBTdG9yZToKICAgICAgICAgb3V0LnByaW50KCJTdG9yZSIpOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICBvdXQucHJpbnQoIkF0
b21pY1dlYWtDQVMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FT
OgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1N0cm9uZ0NBUyIpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdB
ZGQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAg
b3V0LnByaW50KCJBdG9taWNYY2hnQW5kIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0
b21pY1hjaGdPcjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnT3IiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9t
aWNYY2hnU3ViIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6Cisg
ICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ1hvciIpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBBdG9taWNYY2hnOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGciKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgRGVwZW5kOgorICAgICAgICBvdXQucHJpbnQoIkRlcGVuZCIp
OworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgb3V0LnBy
aW50KCJXYXNtQWRkcmVzcyIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNPcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNPcGNvZGUuaAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYg
RU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzVHlwZS5oIgorI2luY2x1ZGUgIkIzV2lkdGgu
aCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKQEAgLTgyLDcgKzgzLDYgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBNb2Qs
IC8vIEFsbCBiZXRzIGFyZSBvZmYgYXMgdG8gd2hhdCB3aWxsIGhhcHBlbiB3aGVuIHlvdSBleGVj
dXRlIHRoaXMgZm9yIC0yXjMxJS0xIGFuZCB4JTAuCiAgICAgVU1vZCwKIAotCiAgICAgLy8gUG9s
eW1vcnBoaWMgbmVnYXRpb24uIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdGhpcyBmb3IgZmxvYXRp
bmcgcG9pbnQsIHNpbmNlIGludGVnZXIgbmVnYXRpb24KICAgICAvLyBpcyBleGFjdGx5IGxpa2Ug
U3ViKDAsIHgpLiBCdXQgdGhhdCdzIG5vdCB0cnVlIGZvciBmbG9hdGluZyBwb2ludC4gU3ViKDAs
IDApIGlzIDAsIHdoaWxlCiAgICAgLy8gTmVnKDApIGlzIC0wLiBBbHNvLCB3ZSBjYW5vbmljYWxp
emUgU3ViKDAsIHgpIGludG8gTmVnKHgpIGluIGNhc2Ugb2YgaW50ZWdlcnMuCkBAIC0xNjIsNiAr
MTYyLDEwNyBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIFN0b3JlMTYsCiAgICAgLy8g
VGhpcyBpcyBhIHBvbHltb3JwaGljIHN0b3JlIGZvciBJbnQzMiwgSW50NjQsIEZsb2F0LCBhbmQg
RG91YmxlLgogICAgIFN0b3JlLAorICAgIAorICAgIC8vIEF0b21pYyBjb21wYXJlIGFuZCBzd2Fw
IHRoYXQgcmV0dXJucyBhIGJvb2xlYW4uIE1heSBjaG9vc2UgdG8gZG8gbm90aGluZyBhbmQgcmV0
dXJuIGZhbHNlLiBZb3UgY2FuCisgICAgLy8gdXN1YWxseSBhc3N1bWUgdGhhdCB0aGlzIGlzIGZh
c3RlciBhbmQgcmVzdWx0cyBpbiBsZXNzIGNvZGUgdGhhbiBBdG9taWNTdHJvbmdDQVMsIHRob3Vn
aCB0aGF0J3MKKyAgICAvLyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSBvbiBJbnRlbCwgaWYgaW5zdHJ1
Y3Rpb24gc2VsZWN0aW9uIGRvZXMgaXRzIGpvYi4gSW1hZ2luZSB0aGF0IHRoaXMgb3Bjb2RlIGlz
CisgICAgLy8gYXMgaWYgeW91IGRpZCB0aGlzIGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8vIGJvb2wgQXRvbWljV2Vha0NBUyhUIGV4cGVjdGVk
VmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7CisgICAgLy8gICAgIGlmICghcmFu
ZCgpKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBSZWFsIHdvcmxkIGV4YW1wbGUg
b2YgdGhpczogY29udGV4dCBzd2l0Y2ggb24gQVJNIHdoaWxlIGRvaW5nIENBUy4KKyAgICAvLyAg
ICAgaWYgKCpwdHIgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAvLyAgICAgKnB0ciA9IG5ld1ZhbHVlOworICAgIC8vICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgYWxsIGF0b21pY3MgcHV0IHRoZSBw
b2ludGVyIGxhc3QgdG8gYmUgY29uc2lzdGVudCB3aXRoIGhvdyBsb2FkcyBhbmQgc3RvcmVzIHdv
cmsuIFRoaXMKKyAgICAvLyBpcyBhIGdvb2Z5IHRyYWRpdGlvbiwgYnV0IGl0J3MgaGFybWxlc3Ms
IGFuZCBiZXR0ZXIgdGhhbiBiZWluZyBpbmNvbnNpc3RlbnQuCisgICAgLy8KKyAgICAvLyBOb3Rl
IHRoYXQgd2VhayBDQVMgaGFzIG5vIGZlbmNpbmcgZ3VhcmFudGVlcyB3aGVuIGl0IGZhaWxzLiBU
aGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZworICAgIC8vIHRyYW5zZm9ybWF0aW9uIGlzIGFs
d2F5cyB2YWxpZDoKKyAgICAvLworICAgIC8vIEJlZm9yZToKKyAgICAvLworICAgIC8vICAgICAg
ICAgQnJhbmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAg
ICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBB
ZnRlcjoKKyAgICAvLworICAgIC8vICAgICAgICAgQnJhbmNoKEVxdWFsKExvYWQocHRyKSwgZXhw
ZWN0ZWQpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I2F0dGVtcHQsIEVsc2U6I2Zh
aWwKKyAgICAvLyAgICAgQkIjYXR0ZW1wdDoKKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNX
ZWFrQ0FTKGV4cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhl
bjojc3VjY2VzcywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQm90aCBraW5kcyBvZiBDQVMg
Zm9yIG5vbi1jYW5vbmljYWwgd2lkdGhzIChXaWR0aDggYW5kIFdpZHRoMTYpIGlnbm9yZSB0aGUg
aXJyZWxldmFudCBiaXRzIG9mIHRoZQorICAgIC8vIGlucHV0LgorICAgIEF0b21pY1dlYWtDQVMs
CisgICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIHRoZSBv
bGQgdmFsdWUuIERvZXMgbm90IGhhdmUgdGhlIG5vbmRldGVybWluaXNtIG9mIFdlYWtDQVMuCisg
ICAgLy8gVGhpcyBpcyBhIGJpdCBtb3JlIGNvZGUgYW5kIGEgYml0IHNsb3dlciBpbiBzb21lIGNh
c2VzLCB0aG91Z2ggbm90IGJ5IGEgbG90LiBJbWFnaW5lIHRoYXQgdGhpcworICAgIC8vIG9wY29k
ZSBpcyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gVCBBdG9taWNTdHJvbmdDQVMoVCBleHBlY3RlZFZhbHVl
LCBUIG5ld1ZhbHVlLCBUKiBwdHIpCisgICAgLy8geworICAgIC8vICAgICBUIG9sZFZhbHVlID0g
KnB0cjsKKyAgICAvLyAgICAgaWYgKG9sZFZhbHVlID09IGV4cGVjdGVkVmFsdWUpCisgICAgLy8g
ICAgICAgICAqcHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVybiBvbGRWYWx1ZQorICAg
IC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBBdG9taWNXZWFrQ0FTIGFuZCBBdG9taWNT
dHJvbmdDQVMgc29ydCBvZiBoYXZlIHRoaXMga2luZCBvZiBlcXVpdmFsZW5jZToKKyAgICAvLwor
ICAgIC8vIEF0b21pY1dlYWtDQVMoQGV4cCwgQG5ldywgQHB0cikgPT0gRXF1YWwoQXRvbWljU3Ry
b25nQ0FTKEBleHAsIEBuZXcsIEBwdHIpLCBAZXhwKQorICAgIC8vCisgICAgLy8gQXNzdW1pbmcg
dGhhdCB0aGUgV2Vha0NBUyBkb2VzIG5vdCBzcHVyaW91c2x5IGZhaWwsIG9mIGNvdXJzZS4KKyAg
ICBBdG9taWNTdHJvbmdDQVMsCisgICAgCisgICAgLy8gQXRvbWljYWxseSBfX18gYSBtZW1vcnkg
bG9jYXRpb24gYW5kIHJldHVybiB0aGUgb2xkIHZhbHVlLiBTeW50YXg6CisgICAgLy8KKyAgICAv
LyBAb2xkVmFsdWUgPSBBdG9taWNYY2hnX19fKEBvcGVyYW5kLCBAcHRyKQorICAgIC8vCisgICAg
Ly8gRm9yIG5vbi1jYW5vbmljYWwgd2lkdGhzIChXaWR0aDggYW5kIFdpZHRoMTYpLCB0aGVzZSBy
ZXR1cm4gc2lnbi1leHRlbmRlZCByZXN1bHRzIGFuZCBpZ25vcmUgdGhlCisgICAgLy8gaXJyZWxl
dmFudCBiaXRzIG9mIHRoZWlyIGlucHV0cy4KKyAgICBBdG9taWNYY2hnQWRkLAorICAgIEF0b21p
Y1hjaGdBbmQsCisgICAgQXRvbWljWGNoZ09yLAorICAgIEF0b21pY1hjaGdTdWIsCisgICAgQXRv
bWljWGNoZ1hvciwKKyAgICAKKyAgICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkIGhhdmUgQXRv
bWljWGNoZ05lZyBhbmQgQXRvbWljWGNoZ05vdC4KKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IGV4
Y2hhbmdlIGEgdmFsdWUgd2l0aCBhIG1lbW9yeSBsb2NhdGlvbi4gU3ludGF4OgorICAgIC8vCisg
ICAgLy8gQG9sZFZhbHVlID0gQXRvbWljWGNoZyhAbmV3VmFsdWUsIEBwdHIpCisgICAgQXRvbWlj
WGNoZywKKyAgICAKKyAgICAvLyBJbnRyb2R1Y2UgYW4gaW52aXNpYmxlIGRlcGVuZGVuY3kgZm9y
IGJsb2NraW5nIG1vdGlvbiBvZiBsb2FkcyB3aXRoIHJlc3BlY3QgdG8gZWFjaCBvdGhlci4gU3lu
dGF4OgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9IERlcGVuZChAcGhhbnRvbSkKKyAgICAvLwor
ICAgIC8vIFRoaXMgaXMgZXZlbnR1YWxseSBjb2RlZ2VuZXJhdGVkIHRvIGhhdmUgbG9jYWwgc2Vt
YW50aWNzIGFzIGlmIHdlIGRpZDoKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSAkMAorICAgIC8v
CisgICAgLy8gQnV0IGl0IGVuc3VyZXMgdGhhdCB0aGUgdXNlcnMgb2YgQHJlc3VsdCBjYW5ub3Qg
ZXhlY3V0ZSB1bnRpbCBAcGhhbnRvbSBpcyBjb21wdXRlZC4KKyAgICAvLworICAgIC8vIFRoZSBj
b21waWxlciBpcyBub3QgYWxsb3dlZCB0byByZWFzb24gYWJvdXQgdGhlIGZhY3QgdGhhdCBEZXBl
bmQgY29kZWdlbmVyYXRlcyB0aGlzIHdheS4gQW55IGtpbmQKKyAgICAvLyBvZiB0cmFuc2Zvcm1h
dGlvbiBvciBhbmFseXNpcyB0aGF0IHJlbGllcyBvbiB0aGUgaW5zaWdodCB0aGF0IERlcGVuZCBp
cyByZWFsbHkgemVybyBpcyB1bnNvdW5kLAorICAgIC8vIGJlY2F1c2UgaXQgdW5sb2NrcyByZW9y
ZGVyaW5nIG9mIHVzZXJzIG9mIEByZXN1bHQgYW5kIEBwaGFudG9tLgorICAgIC8vCisgICAgLy8g
T24gWDg2LCB0aGlzIGlzIGxvd2VyZWQgdG8gYSBsb2FkLWxvYWQgZmVuY2UgYW5kIEByZXN1bHQg
dXNlcyBAcGhhbnRvbSBkaXJlY3RseS4KKyAgICAvLworICAgIC8vIE9uIEFSTSwgdGhpcyBpcyBs
b3dlcmVkIGFzIGlmIGxpa2U6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gQml0WG9yKEBwaGFu
dG9tLCBAcGhhbnRvbSkKKyAgICAvLworICAgIC8vIEV4Y2VwdCB0aGF0IHRoZSBjb21waWxlciBu
ZXZlciBnZXRzIGFuIG9wcG9ydHVuaXR5IHRvIHNpbXBsaWZ5IG91dCB0aGUgQml0WG9yLgorICAg
IERlcGVuZCwKIAogICAgIC8vIFRoaXMgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBhY3R1YWwgYWRk
cmVzcyBvZiBhIFdhc20gbWVtb3J5IG9wZXJhdGlvbi4gSXQgdGFrZXMgYW4gSW50UHRyCiAgICAg
Ly8gYW5kIGEgcGlubmVkIHJlZ2lzdGVyIHRoZW4gY29tcHV0ZXMgdGhlIGFwcHJvcHJpYXRlIElu
dFB0ciBhZGRyZXNzLiBGb3IgdGhlIHVzZS1jYXNlIG9mCkBAIC0zMDEsNiArNDAyLDExMiBAQCBp
bmxpbmUgYm9vbCBpc0RlZmluaXRlbHlUZXJtaW5hbChPcGNvZGUgCiAgICAgfQogfQogCitpbmxp
bmUgYm9vbCBpc0xvYWQoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgewor
ICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAg
ICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9v
bCBpc1N0b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBj
YXNlIFN0b3JlODoKKyAgICBjYXNlIFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKworaW5saW5lIGJvb2wgaXNMb2FkU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0
Y2ggKG9wY29kZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNh
c2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2Ug
U3RvcmU4OgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CitpbmxpbmUgYm9vbCBpc0F0b21pYyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bj
b2RlKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FT
OgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAg
Y2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRv
bWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBi
b29sIGlzQXRvbWljQ0FTKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsK
KyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljWGNoZyhPcGNvZGUgb3Bjb2RlKQoreworICAg
IHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRv
bWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdT
dWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKworaW5saW5lIGJvb2wgaXNNZW1vcnlBY2Nlc3MoT3Bjb2RlIG9wY29kZSkKK3sKKyAg
ICByZXR1cm4gaXNBdG9taWMob3Bjb2RlKSB8fCBpc0xvYWRTdG9yZShvcGNvZGUpOworfQorCitp
bmxpbmUgT3Bjb2RlIHNpZ25FeHRlbmRPcGNvZGUoV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNo
ICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgICAgICByZXR1cm4gU0V4dDg7CisgICAg
Y2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4gU0V4dDE2OworICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBPb3BzOwor
ICAgIH0KK30KKworSlNfRVhQT1JUX1BSSVZBVEUgT3Bjb2RlIHN0b3JlT3Bjb2RlKEJhbmsgYmFu
aywgV2lkdGggd2lkdGgpOworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNl
IFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHJl
dmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsOCBAQCB2b2lkIFByb2NlZHVyZTo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjCiAgICAgICAgIH0KICAgICAgICAgZGF0YUxvZygiICAgICIs
IGRlZXBEdW1wKCp0aGlzLCB2YWx1ZSksICJcbiIpOwogICAgIH0KKyAgICBpZiAoaGFzUXVpcmtz
KCkpCisgICAgICAgIG91dC5wcmludCgiSGFzIFF1aXJrczogVHJ1ZVxuIik7CiAgICAgaWYgKHZh
cmlhYmxlcygpLnNpemUoKSkgewogICAgICAgICBvdXQucHJpbnQoIlZhcmlhYmxlczpcbiIpOwog
ICAgICAgICBmb3IgKFZhcmlhYmxlKiB2YXJpYWJsZSA6IHZhcmlhYmxlcygpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTE3LDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoT3JpZ2lu
LCBUeXBlLCBpbnQ2NF90IHZhbHVlKTsKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoVmFsdWUq
LCBpbnQ2NF90IHZhbHVlKTsKIAorICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9t
IGlzIHplcm8uCiAgICAgVmFsdWUqIGFkZEJvdHRvbShPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVl
KiBhZGRCb3R0b20oVmFsdWUqKTsKIApAQCAtMTk1LDYgKzE5NiwxNyBAQCBwdWJsaWM6CiAgICAg
Ly8gYWxpdmUuIEdyZWF0IGZvciBjb21waWxlci1nZW5lcmF0ZWQgZGF0YSBzZWN0aW9ucywgbGlr
ZSBzd2l0Y2gganVtcCB0YWJsZXMgYW5kIGNvbnN0YW50IHBvb2xzLgogICAgIC8vIFRoaXMgcmV0
dXJucyBtZW1vcnkgdGhhdCBoYXMgYmVlbiB6ZXJvLWluaXRpYWxpemVkLgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQqIGFkZERhdGFTZWN0aW9uKHNpemVfdCk7CisgICAgCisgICAgLy8gU29t
ZSBvcGVyYXRpb25zIGFyZSBzcGVjaWZpZWQgaW4gQjMgSVIgdG8gYmVoYXZlIG9uZSB3YXkgYnV0
IG9uIHRoaXMgZ2l2ZW4gQ1BVIHRoZXkgYmVoYXZlIGEKKyAgICAvLyBkaWZmZXJlbnQgd2F5LiBX
aGVuIHRydWUsIHRob3NlIEIzIElSIG9wcyBzd2l0Y2ggdG8gYmVoYXZpbmcgdGhlIENQVSB3YXks
IGFuZCB0aGUgb3B0aW1pemVyIG1heQorICAgIC8vIHN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2Yg
aXQuCisgICAgLy8KKyAgICAvLyBPbmUgd2F5IHRvIHRoaW5rIG9mIGl0IGlzIGxpa2UgdGhpcy4g
SW1hZ2luZSB0aGF0IHlvdSBmaW5kIHRoYXQgdGhlIGNsZWFuZXN0IHdheSBvZiBsb3dlcmluZwor
ICAgIC8vIHNvbWV0aGluZyBpbiBsb3dlck1hY3JvcyBpcyB0byB1bmNvbmRpdGlvbmFsbHkgcmVw
bGFjZSBvbmUgb3Bjb2RlIHdpdGggYW5vdGhlci4gVGhpcyBpcyBhIHNob3J0Y3V0CisgICAgLy8g
d2hlcmUgeW91IGluc3RlYWQga2VlcCB0aGUgc2FtZSBvcGNvZGUsIGJ1dCByZWx5IG9uIHRoZSBv
cGNvZGUncyBtZWFuaW5nIGNoYW5nZXMgb25jZSBsb3dlck1hY3JvcworICAgIC8vIHNldHMgaGFz
UXVpcmtzLgorICAgIGJvb2wgaGFzUXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNRdWlya3M7
IH0KKyAgICB2b2lkIHNldEhhc1F1aXJrcyhib29sIHZhbHVlKSB7IG1faGFzUXVpcmtzID0gdmFs
dWU7IH0KIAogICAgIE9wYXF1ZUJ5cHJvZHVjdHMmIGJ5cHJvZHVjdHMoKSB7IHJldHVybiAqbV9i
eXByb2R1Y3RzOyB9CiAKQEAgLTI1Miw2ICsyNjQsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxT
aGFyZWRUYXNrPHZvaWQoUHJpbnRTdHJlYW0mLCBPcmlnaW4pPj4gbV9vcmlnaW5QcmludGVyOwog
ICAgIGNvbnN0IHZvaWQqIG1fZnJvbnRlbmREYXRhOwogICAgIFBDVG9PcmlnaW5NYXAgbV9wY1Rv
T3JpZ2luTWFwOworICAgIGJvb2wgbV9oYXNRdWlya3MgeyBmYWxzZSB9OwogfTsKIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJl
Q1NFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NF
LmNwcAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVy
ZUNTRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQp
CiAKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKKyNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIK
ICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewpA
QCAtODksNiArOTAsMjMgQEAgYm9vbCBQdXJlQ1NFOjpwcm9jZXNzKFZhbHVlKiB2YWx1ZSwgRG9t
aQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBwdXJlQ1NFKFByb2NlZHVyZSYgcHJvYykK
K3sKKyAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvYywgInB1cmVDU0UiKTsKKyAgICAKKyAg
ICBEb21pbmF0b3JzJiBkb21pbmF0b3JzID0gcHJvYy5kb21pbmF0b3JzKCk7CisgICAgUHVyZUNT
RSBwdXJlQ1NFOworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgZm9yIChCYXNpY0Jsb2Nr
KiBibG9jayA6IHByb2MuYmxvY2tzSW5QcmVPcmRlcigpKSB7CisgICAgICAgIGZvciAoVmFsdWUq
IHZhbHVlIDogKmJsb2NrKSB7CisgICAgICAgICAgICByZXN1bHQgfD0gdmFsdWUtPnBlcmZvcm1T
dWJzdGl0dXRpb24oKTsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBwdXJlQ1NFLnByb2Nlc3ModmFs
dWUsIGRvbWluYXRvcnMpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIz
X0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmgJKHJldmlzaW9uIDIx
MzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuaAkod29ya2luZyBj
b3B5KQpAQCAtNTYsNiArNTYsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8VmFsdWVLZXksIE1h
dGNoZXM+IG1fbWFwOwogfTsKIAorYm9vbCBwdXJlQ1NFKFByb2NlZHVyZSYpOworCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCShyZXZpc2lvbiAy
MTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOCwxMiArMjgsMTMgQEAKIAogI2lmIEVOQUJMRShCM19KSVQp
CiAKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0Nv
bXB1dGVEaXZpc2lvbk1hZ2ljLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVk
ZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCi0jaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgor
I2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3Bl
LmgiCiAjaW5jbHVkZSAiQjNQaGlDaGlsZHJlbi5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5s
aW5lcy5oIgpAQCAtNjAyLDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGJyZWFrOwotCisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZWc6CiAgICAg
ICAgICAgICAvLyBUdXJuIHRoaXM6IE5lZyhjb25zdGFudCkKICAgICAgICAgICAgIC8vIEludG8g
dGhpczogLWNvbnN0YW50CkBAIC0xMjk1LDYgKzEyOTYsMTYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgeworICAgICAg
ICAgICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDgoQXRvbWljWGNoZ19fXykKKyAgICAgICAgICAg
ICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBpZiAoaXNB
dG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAg
ICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5hY2Nlc3NXaWR0aCgp
ID09IFdpZHRoOCkgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aElkZW50aXR5KG1f
dmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBTRXh0MTY6CkBAIC0xMzQzLDYgKzEzNTQsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4g
dGhpczogU0V4dDE2KEF0b21pY1hjaGdfX18pCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlz
OiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAgICAgaWYgKGlzQXRvbWljWGNoZyhtX3ZhbHVl
LT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNo
aWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+YWNjZXNzV2lkdGgoKSA9PSBXaWR0aDE2KSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNFeHQzMjoKQEAgLTIx
MDEsMjIgKzIxMjIsMjUgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKG1fdmFsdWUtPm51bUNo
aWxkcmVuKCkgPj0gMik7CiAgICAgICAgIAogICAgICAgICAvLyBMZWF2ZSBpdCBhbG9uZSBpZiB0
aGUgcmlnaHQgY2hpbGQgaXMgYSBjb25zdGFudC4KLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxk
KDEpLT5pc0NvbnN0YW50KCkpCisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNDb25z
dGFudCgpCisgICAgICAgICAgICB8fCBtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRv
bWljU3Ryb25nQ0FTKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgaWYg
KG1fdmFsdWUtPmNoaWxkKDApLT5pc0NvbnN0YW50KCkpIHsKKyAgICAgICAgYXV0byBzd2FwID0g
WyZdICgpIHsKICAgICAgICAgICAgIHN0ZDo6c3dhcChtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1
ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBpZiAo
bV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBzd2Fw
KCk7CisgICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPm9wY29kZSgpID09
IEF0b21pY1N0cm9uZ0NBUykKKyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7CisgICAgICAgIAog
ICAgICAgICAvLyBTb3J0IHRoZSBvcGVyYW5kcy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgY2Fub25p
Y2FsaXphdGlvbi4gV2UgdXNlIHRoZSBpbmRleCBpbnN0ZWFkIG9mCiAgICAgICAgIC8vIHRoZSBh
ZGRyZXNzIHRvIG1ha2UgdGhpcyBhdCBsZWFzdCBzbGlnaHRseSBkZXRlcm1pbmlzdGljLgotICAg
ICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmluZGV4KCkgPiBtX3ZhbHVlLT5jaGlsZCgxKS0+
aW5kZXgoKSkgewotICAgICAgICAgICAgc3RkOjpzd2FwKG1fdmFsdWUtPmNoaWxkKDApLCBtX3Zh
bHVlLT5jaGlsZCgxKSk7Ci0gICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5k
ZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEpLT5pbmRleCgpKQorICAgICAgICAgICAgcmV0dXJuIHN3
YXAoKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGEgZm9y
d2FyZCBhbmFseXNpcy4gSW5zdGVhZCwgd2UgdXNlcyBhIGJvdW5kZWQtc2VhcmNoIGJhY2t3YXJk
cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24g
MjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2lu
Y2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIK
ICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3Jz
LmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgpAQCAtMzQ2LDYgKzM0Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgw
KS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2
YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgTG9hZDoKQEAgLTM1Myw2ICszNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBw
b2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT50eXBlKCkgIT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNj
ZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3Rv
cmU4OgpAQCAtMzYyLDYgKzM2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVy
VHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxp
ZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZh
bHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU6CkBA
IC0zNjksOCArMzczLDQ5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQg
IiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBW
b2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFs
dWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAg
ICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAz
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBl
KCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPmNoaWxk
KDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAg
ICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgICAgICAgICAgVkFMSURB
VEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hp
bGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+
dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tB
Y2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBB
dG9taWNYY2hnQWRkOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6Cisg
ICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGc6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGls
ZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5
cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNj
ZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRGVw
ZW5kOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0
cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5u
dW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgV2FzbUFkZHJlc3M6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCku
aGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKQEAgLTUzNyw2
ICs1ODIsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVGZW5jZShWYWx1ZSogdmFsdWUpCisgICAgeworICAg
ICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAg
ICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgVkFMSURBVEUobWVtb3J5
LT5hY2Nlc3NCYW5rKCkgPT0gR1AsICgiRmVuY2UgYXQgIiwgKm1lbW9yeSkpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHZhbGlkYXRlQXRvbWljKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSB2YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAg
IAorICAgICAgICBWQUxJREFURShiZXN0VHlwZShHUCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSA9
PSBhdG9taWMtPmFjY2Vzc1R5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICB9CiAKICAgICB2
b2lkIHZhbGlkYXRlU3RhY2tBY2Nlc3MoVmFsdWUqIHZhbHVlKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVl
LmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lu
bGluZXMuaCIKICNpbmNsdWRlICJCM0JvdHRvbVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiQjNDQ2Fs
bFZhbHVlLmgiCkBAIC01MTAsNiArNTExLDcgQEAgYm9vbCBWYWx1ZTo6cmV0dXJuc0Jvb2woKSBj
b25zdAogICAgIGNhc2UgQWJvdmVFcXVhbDoKICAgICBjYXNlIEJlbG93RXF1YWw6CiAgICAgY2Fz
ZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgY2FzZSBQaGk6CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2
ZSBhIHN0b3J5IGhlcmUuCkBAIC01ODksNiArNTkxLDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0
cygpIGNvbnN0CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1YWxPclVub3JkZXJl
ZDoKICAgICBjYXNlIFNlbGVjdDoKKyAgICBjYXNlIERlcGVuZDoKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBEaXY6CiAgICAgY2FzZSBVRGl2OgpAQCAtNjAwLDE2ICs2MDMsNDQgQEAgRWZmZWN0
cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBMb2FkOFM6CiAgICAgY2FzZSBMb2Fk
MTZaOgogICAgIGNhc2UgTG9hZDE2UzoKLSAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJlc3VsdC5y
ZWFkcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAgIGNhc2UgTG9hZDogeworICAg
ICAgICBjb25zdCBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAg
ICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+
aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+ZmVuY2VS
YW5nZSgpOworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQogICAg
ICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAg
IH0KICAgICBjYXNlIFN0b3JlODoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgY2FzZSBTdG9yZToK
LSAgICAgICAgcmVzdWx0LndyaXRlcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAg
IGNhc2UgU3RvcmU6IHsKKyAgICAgICAgY29uc3QgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1l
bW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5yYW5nZSgpOwor
ICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICByZXN1bHQucmVh
ZHMgPSBtZW1vcnktPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2Ug
QXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21p
Y1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3Vi
OgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAg
ICAgY29uc3QgQXRvbWljVmFsdWUqIGF0b21pYyA9IGFzPEF0b21pY1ZhbHVlPigpOworICAgICAg
ICByZXN1bHQucmVhZHMgPSBhdG9taWMtPnJhbmdlKCkgfCBhdG9taWMtPmZlbmNlUmFuZ2UoKTsK
KyAgICAgICAgcmVzdWx0LndyaXRlcyA9IGF0b21pYy0+cmFuZ2UoKSB8IGF0b21pYy0+ZmVuY2VS
YW5nZSgpOworICAgICAgICBpZiAoYXRvbWljLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmVz
dWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVl
OwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAg
cmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CkBAIC02MTcsMTggKzY0
OCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgICAgICBjb25zdCBGZW5j
ZVZhbHVlKiBmZW5jZSA9IGFzPEZlbmNlVmFsdWU+KCk7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9
IGZlbmNlLT5yZWFkOwogICAgICAgICByZXN1bHQud3JpdGVzID0gZmVuY2UtPndyaXRlOwotICAg
ICAgICAKLSAgICAgICAgLy8gUHJldmVudCBraWxsaW5nIG9mIGZlbmNlcyB0aGF0IGNsYWltIG5v
dCB0byB3cml0ZSBhbnl0aGluZy4gSXQncyBhIGJpdCB3ZWlyZCB0aGF0IHdlIHVzZQotICAgICAg
ICAvLyBsb2NhbCBzdGF0ZSBhcyB0aGUgd2F5IHRvIGRvIHRoaXMsIGJ1dCBpdCBoYXBwZW5zIHRv
IHdvcms6IHdlIG11c3QgYXNzdW1lIHRoYXQgd2UgY2Fubm90Ci0gICAgICAgIC8vIGtpbGwgd3Jp
dGVzTG9jYWxTdGF0ZSB1bmxlc3Mgd2UgdW5kZXJzdGFuZHMgZXhhY3RseSB3aGF0IHRoZSBpbnN0
cnVjdGlvbiBpcyBkb2luZyAobGlrZQotICAgICAgICAvLyB0aGUgd2F5IHRoYXQgZml4U1NBIHVu
ZGVyc3RhbmRzIFNldC9HZXQgYW5kIHRoZSB3YXkgdGhhdCByZWR1Y2VTdHJlbmd0aCBhbmQgb3Ro
ZXJzCi0gICAgICAgIC8vIHVuZGVyc3RhbmQgVXBzaWxvbikuIFRoaXMgd291bGQgb25seSBiZWNv
bWUgYSBwcm9ibGVtIGlmIHdlIGhhZCBzb21lIGFuYWx5c2lzIHRoYXQgd2FzCi0gICAgICAgIC8v
IGxvb2tpbmcgdG8gdXNlIHRoZSB3cml0ZXNMb2NhbFN0YXRlIGJpdCB0byBpbnZhbGlkYXRlIGEg
Q1NFIG92ZXIgbG9jYWwgc3RhdGUgb3BlcmF0aW9ucy4KLSAgICAgICAgLy8gVGhlbiBhIEZlbmNl
IHdvdWxkIGxvb2sgYmxvY2ssIHNheSwgdGhlIGVsaW1pbmF0aW9uIG9mIGEgcmVkdW5kYW50IEdl
dC4gQnV0IGl0IGxpa2UKLSAgICAgICAgLy8gdGhhdCdzIG5vdCBhdCBhbGwgaG93IG91ciBvcHRp
bWl6YXRpb25zIGZvciBTZXQvR2V0L1Vwc2lsb24vUGhpIHdvcmsgLSB0aGV5IGdyb2sgdGhlaXIK
LSAgICAgICAgLy8gb3BlcmF0aW9ucyBkZWVwbHkgZW5vdWdoIHRoYXQgdGhleSBoYXZlIG5vIG5l
ZWQgdG8gY2hlY2sgdGhpcyBiaXQgLSBzbyB0aGlzIGNoZWF0IGlzCi0gICAgICAgIC8vIGZpbmUu
Ci0gICAgICAgIHJlc3VsdC53cml0ZXNMb2NhbFN0YXRlID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0
LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ0NhbGw6CkBA
IC02OTQsNiArNzE0LDcgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgY2FzZSBD
aGVjazoKICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAgIGNhc2UgTmVnOgorICAgIGNhc2UgRGVw
ZW5kOgogICAgICAgICByZXR1cm4gVmFsdWVLZXkoa2luZCgpLCB0eXBlKCksIGNoaWxkKDApKTsK
ICAgICBjYXNlIEFkZDoKICAgICBjYXNlIFN1YjoKQEAgLTc0NiwxMiArNzY3LDE2IEBAIFZhbHVl
S2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBWYWx1ZTo6cGVyZm9ybVN1
YnN0aXR1dGlvbigpCitib29sIFZhbHVlOjpwZXJmb3JtU3Vic3RpdHV0aW9uKCkKIHsKKyAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGZvciAoVmFsdWUqJiBjaGlsZCA6IGNoaWxkcmVuKCkp
IHsKLSAgICAgICAgd2hpbGUgKGNoaWxkLT5vcGNvZGUoKSA9PSBJZGVudGl0eSkKKyAgICAgICAg
d2hpbGUgKGNoaWxkLT5vcGNvZGUoKSA9PSBJZGVudGl0eSkgeworICAgICAgICAgICAgcmVzdWx0
ID0gdHJ1ZTsKICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPmNoaWxkKDApOworICAgICAgICB9
CiAgICAgfQorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIGJvb2wgVmFsdWU6OmlzRnJlZSgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHJldmlzaW9uIDIxMzM3OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDYgKzY4LDExIEBAIHB1YmxpYzoKICAgICAKICAgICBPcGNvZGUgb3Bjb2RlKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpLm9wY29kZSgpOyB9CiAgICAgCisgICAgLy8gTm90ZSB0aGF0IHRoZSBr
aW5kIGlzIG1lYW50IHRvIGJlIGltbXV0YWJsZS4gRG8gdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQg
dGhpcyBpcyBzYWZlLiBJdCdzIG5vdAorICAgIC8vIHVzdWFsbHkgc2FmZS4KKyAgICB2b2lkIHNl
dEtpbmRVbnNhZmVseShLaW5kIGtpbmQpIHsgbV9raW5kID0ga2luZDsgfQorICAgIHZvaWQgc2V0
T3Bjb2RlVW5zYWZlbHkoT3Bjb2RlIG9wY29kZSkgeyBtX2tpbmQuc2V0T3Bjb2RlKG9wY29kZSk7
IH0KKyAgICAKICAgICAvLyBJdCdzIGdvb2QgcHJhY3RpY2UgdG8gbWlycm9yIEtpbmQgbWV0aG9k
cyBoZXJlLCBzbyB5b3UgY2FuIHNheSB2YWx1ZS0+aXNCbGFoKCkKICAgICAvLyBpbnN0ZWFkIG9m
IHZhbHVlLT5raW5kKCkuaXNCbGFoKCkuCiAgICAgYm9vbCBpc0NoaWxsKCkgY29uc3QgeyByZXR1
cm4ga2luZCgpLmlzQ2hpbGwoKTsgfQpAQCAtMTA3LDYgKzExMiw4IEBAIHB1YmxpYzoKICAgICAv
LyB2YWx1ZXMgd2l0aCBJZGVudGl0aWVzIG9uIGJvdHRvbSBjb25zdGFudHMuIEZvciB0aGlzIHJl
YXNvbiwgdGhpcyB0YWtlcyBhIGNhbGxiYWNrIHRoYXQgaXMKICAgICAvLyByZXNwb25zaWJsZSBm
b3IgY3JlYXRpbmcgYm90dG9tcy4gVGhlcmUncyBhIHV0aWxpdHkgZm9yIHRoaXMsIHNlZSBCM0Jv
dHRvbVByb3ZpZGVyLmguIFlvdQogICAgIC8vIGNhbiBhbHNvIGFjY2VzcyB0aGF0IHV0aWxpdHkg
dXNpbmcgcmVwbGFjZVdpdGhCb3R0b20oSW5zZXJ0aW9uU2V0Jiwgc2l6ZV90KS4KKyAgICAvLwor
ICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQm90dG9tUHJvdmlkZXI+CiAgICAgdm9pZCByZXBsYWNlV2l0aEJvdHRvbShj
b25zdCBCb3R0b21Qcm92aWRlciYpOwogICAgIApAQCAtMjU2LDcgKzI2Myw3IEBAIHB1YmxpYzoK
ICAgICAvLyBNYWtlcyBzdXJlIHRoYXQgbm9uZSBvZiB0aGUgY2hpbGRyZW4gYXJlIElkZW50aXR5
J3MuIElmIGEgY2hpbGQgcG9pbnRzIHRvIElkZW50aXR5LCB0aGlzIHdpbGwKICAgICAvLyByZXBv
aW50IGl0IGF0IHRoZSBJZGVudGl0eSdzIGNoaWxkLiBGb3Igc2ltcGxpY2l0eSwgdGhpcyB3aWxs
IGZvbGxvdyBhcmJpdHJhcmlseSBsb25nIGNoYWlucwogICAgIC8vIG9mIElkZW50aXR5J3MuCi0g
ICAgdm9pZCBwZXJmb3JtU3Vic3RpdHV0aW9uKCk7CisgICAgYm9vbCBwZXJmb3JtU3Vic3RpdHV0
aW9uKCk7CiAgICAgCiAgICAgLy8gRnJlZSB2YWx1ZXMgYXJlIHRob3NlIHdob3NlIHByZXNlbmNl
IGlzIGd1YXJhbnRlZWQgbm90IHRvIGh1cnQgY29kZS4gV2UgY29uc2lkZXIgY29uc3RhbnRzLAog
ICAgIC8vIElkZW50aXRpZXMsIGFuZCBOb3BzIHRvIGJlIGZyZWUuIENvbnN0YW50cyBhcmUgZnJl
ZSBiZWNhdXNlIHdlIGhvaXN0IHRoZW0gdG8gYW4gb3B0aW1hbCBwbGFjZS4KQEAgLTMyMSw2ICsz
MjgsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElUb0Y6CiAgICAgICAgIGNhc2UgQml0d2lz
ZUNhc3Q6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIERlcGVuZDoKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9IDEpKQogICAgICAgICAgICAgICAgIGJhZEtp
bmQoa2luZCwgbnVtQXJncyk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNXaWR0aC5jcHAJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMzggQEAK
IAogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsKKworVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKQoreworICAg
IHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICBjYXNlIFdpZHRoMTY6Cisg
ICAgY2FzZSBXaWR0aDMyOgorICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBH
UDoKKyAgICAgICAgICAgIHJldHVybiBJbnQzMjsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAg
ICAgIHJldHVybiBGbG9hdDsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAg
ICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJu
IEludDY0OworICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIERvdWJsZTsKKyAg
ICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gVm9pZDsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gVm9pZDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKIG5hbWVzcGFj
ZSBXVEYgewogCiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6
V2lkdGggd2lkdGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHJldmlzaW9u
IDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDYgKzYyLDE4IEBAIGlubGluZSBXaWR0aCB3aWR0aEZvclR5cGUoVHlwZSB0
eXBlKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitpbmxpbmUgV2lkdGggY2Fub25p
Y2FsV2lkdGgoV2lkdGggd2lkdGgpCit7CisgICAgcmV0dXJuIHN0ZDo6bWF4KFdpZHRoMzIsIHdp
ZHRoKTsKK30KKworaW5saW5lIGJvb2wgaXNDYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sK
KyAgICByZXR1cm4gd2lkdGggPj0gV2lkdGgzMjsKK30KKworVHlwZSBiZXN0VHlwZShCYW5rIGJh
bmssIFdpZHRoIHdpZHRoKTsKKwogaW5saW5lIFdpZHRoIGNvbnNlcnZhdGl2ZVdpZHRoKEJhbmsg
YmFuaykKIHsKICAgICByZXR1cm4gYmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2
NDsKQEAgLTkzLDYgKzEwNSwyMCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JCeXRlcyh1bnNpZ25l
ZCBieXRlCiAgICAgfQogfQogCitpbmxpbmUgdWludDY0X3QgbWFzayhXaWR0aCB3aWR0aCkKK3sK
KyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiAw
eDAwMDAwMDAwMDAwMDAwZmZsbHU7CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4g
MHgwMDAwMDAwMDAwMDBmZmZmbGx1OworICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgcmV0dXJu
IDB4MDAwMDAwMDBmZmZmZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHJldHVy
biAweGZmZmZmZmZmZmZmZmZmZmZsbHU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
My5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBaXJWYWxp
ZGF0ZS5oIgogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2lu
Y2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIK
ICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVl
LmgiCiAjaW5jbHVkZSAiQjNDb21waWxhdGlvbi5oIgpAQCAtNDQsNiArNDUsNyBAQAogI2luY2x1
ZGUgIkIzTWF0aEV4dHJhcy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKICNpbmNsdWRl
ICJCM01vdmVDb25zdGFudHMuaCIKKyNpbmNsdWRlICJCM05hdGl2ZVRyYWl0cy5oIgogI2luY2x1
ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgogI2luY2x1
ZGUgIkIzU2xvdEJhc2VWYWx1ZS5oIgpAQCAtMjk3LDYgKzI5OSwyNCBAQCB2b2lkIHRlc3RMb2Fk
NDIoKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSA0Mik7CiB9CiAKK3Zv
aWQgdGVzdExvYWRBY3E0MigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQgeCA9IDQyOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExv
YWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJngpLAorICAgICAgICAgICAgMCwgSGVhcFJhbmdlKDQy
KSwgSGVhcFJhbmdlKDQyKSkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAg
ICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxk
YSIpOworICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9PSA0Mik7Cit9CisKIHZvaWQgdGVz
dExvYWRXaXRoT2Zmc2V0SW1wbChpbnQzMl90IG9mZnNldDY0LCBpbnQzMl90IG9mZnNldDMyKQog
ewogICAgIHsKQEAgLTU3NDgsNiArNTc2OCwzNSBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQzMihp
bnQgYW1vdW50KQogICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRl
c3RTdG9yZVJlbEFkZExvYWRBY3EzMihpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3Qg
PSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBI
ZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSkpLAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFu
Z2UoNDIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOwor
ICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUs
ICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAg
ICB9CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhz
bG90ID09IDM3ICsgYW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tMzIoaW50
IGFtb3VudCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTU3OTIsNiArNTg0MSw3NCBAQCB2
b2lkIHRlc3RTdG9yZUFkZExvYWQ4KGludCBhbW91bnQsIEIzOjpPCiAgICAgQ0hFQ0soc2xvdCA9
PSAzNyArIGFtb3VudCk7CiB9CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoaW50IGFt
b3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50OF90IHNsb3QgPSAz
NzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFw
UmFuZ2UoNDIpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSkpLAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2Uo
NDIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAg
IGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJs
ZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9
CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90
ID09IDM3ICsgYW1vdW50KTsKK30KKwordm9pZCB0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4
KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDhfdCBz
bG90ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIFZhbHVlKiBsb2FkZWRW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIGxvYWRP
cGNvZGUsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIp
KTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0LnN0b3Jl
OChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweGJlZWYpLCAmc2xvdCk7CisgICAgICAgIH0p
OworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgcGF0Y2hw
b2ludC0+ZWZmZWN0cy5mZW5jZSA9IHRydWU7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKKyAgICAgICAgcHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAg
ICAgICBsb2FkZWRWYWx1ZSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSkpLAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFw
UmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2Mp
OworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNv
ZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsK
KyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVD
SyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tOChp
bnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7
CkBAIC01ODM2LDYgKzU5NTMsMzUgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkMTYoaW50IGFtb3Vu
dCwgQjM6OgogICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RT
dG9yZVJlbEFkZExvYWRBY3ExNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBpbnQxNl90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRy
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUx
NiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xv
dFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwg
MCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0
byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3Ry
dWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29k
ZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKIHZvaWQg
dGVzdFN0b3JlQWRkTG9hZEltbTE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkK
IHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTU4NzgsNiArNjAyNCwzMyBAQCB2b2lkIHRlc3RT
dG9yZUFkZExvYWQ2NChpbnQgYW1vdW50KQogICAgIENIRUNLKHNsb3QgPT0gMzcwMDAwMDAwMDBs
bCArIGFtb3VudCk7CiB9CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KGludCBhbW91
bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBpbnQ2NF90IHNsb3QgPSAzNzAwMDAwMDAwMGxsOworICAgIENvbnN0
UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAg
ICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2
NCwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJh
bmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0g
Y29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0lu
c3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpj
b2RlLCAic3RsIik7CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50
KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNzAwMDAwMDAwMGxsICsgYW1vdW50KTsKK30KKwogdm9p
ZCB0ZXN0U3RvcmVBZGRMb2FkSW1tNjQoaW50NjRfdCBhbW91bnQpCiB7CiAgICAgUHJvY2VkdXJl
IHByb2M7CkBAIC0xMzc5MSw3ICsxMzk2NCw3IEBAIHZvaWQgdGVzdFRyYXBwaW5nU3RvcmVFbGlt
aW5hdGlvbigpCiAgICAgY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpOwogICAgIHVuc2lnbmVkIHN0
b3JlQ291bnQgPSAwOwogICAgIGZvciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkgewot
ICAgICAgICBpZiAoTWVtb3J5VmFsdWU6OmlzU3RvcmUodmFsdWUtPm9wY29kZSgpKSkKKyAgICAg
ICAgaWYgKGlzU3RvcmUodmFsdWUtPm9wY29kZSgpKSkKICAgICAgICAgICAgIHN0b3JlQ291bnQr
KzsKICAgICB9CiAgICAgQ0hFQ0tfRVEoc3RvcmVDb3VudCwgMnUpOwpAQCAtMTM5OTcsNiArMTQx
NzAsNyBAQCB2b2lkIHRlc3RYODZMZWFBZGRBZGQoKQogICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKICAgICAKICAgICBhdXRvIGNvZGUg
PSBjb21waWxlKHByb2MpOworICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEs
IDIpLCAoMSArIDIpICsgMTAwKTsKICAgICBjaGVja0Rpc2Fzc2VtYmx5KAogICAgICAgICAqY29k
ZSwKICAgICAgICAgWyZdIChjb25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CkBAIC0x
NDAwNCw3ICsxNDE3OCw2IEBAIHZvaWQgdGVzdFg4NkxlYUFkZEFkZCgpCiAgICAgICAgICAgICAg
ICAgfHwgc3Ryc3RyKGRpc2Fzc2VtYmx5LCAibGVhIDB4NjQoJXJzaSwlcmRpKSwgJXJheCIpOwog
ICAgICAgICB9LAogICAgICAgICAiRXhwZWN0ZWQgdG8gZmluZCBzb21ldGhpbmcgbGlrZSBsZWEg
MHg2NCglcmRpLCVyc2kpLCAlcmF4IGJ1dCBkaWRuJ3QhIik7Ci0gICAgQ0hFQ0tfRVEoaW52b2tl
PGludHB0cl90PigqY29kZSwgMSwgMiksICgxICsgMikgKyAxMDApOwogfQogCiB2b2lkIHRlc3RY
ODZMZWFBZGRTaGxSaWdodCgpCkBAIC0xNDA0MSw2ICsxNDIxNCw3IEBAIHZvaWQgdGVzdFg4Nkxl
YUFkZFNobExlZnRTY2FsZTEoKQogICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKICAgICAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHBy
b2MpOworICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgMik7
CiAgICAgY2hlY2tEaXNhc3NlbWJseSgKICAgICAgICAgKmNvZGUsCiAgICAgICAgIFsmXSAoY29u
c3QgY2hhciogZGlzYXNzZW1ibHkpIC0+IGJvb2wgewpAQCAtMTQwNDgsNyArMTQyMjIsNiBAQCB2
b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGUxKCkKICAgICAgICAgICAgICAgICB8fCBzdHJz
dHIoZGlzYXNzZW1ibHksICJsZWEgKCVyc2ksJXJkaSksICVyYXgiKTsKICAgICAgICAgfSwKICAg
ICAgICAgIkV4cGVjdGVkIHRvIGZpbmQgc29tZXRoaW5nIGxpa2UgbGVhICglcmRpLCVyc2kpLCAl
cmF4IGJ1dCBkaWRuJ3QhIik7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90PigqY29kZSwg
MSwgMiksIDEgKyAyKTsKIH0KIAogdm9pZCB0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlMigpCkBA
IC0xNDI3Nyw2ICsxNDQ1MCw1MzcgQEAgdm9pZCB0ZXN0T3B0aW1pemVNYXRlcmlhbGl6YXRpb24o
KQogICAgIENIRUNLKGZvdW5kKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVz
dEF0b21pY1dlYWtDQVMoKQoreworICAgIFR5cGUgdHlwZSA9IE5hdGl2ZVRyYWl0czxUPjo6dHlw
ZTsKKyAgICBXaWR0aCB3aWR0aCA9IE5hdGl2ZVRyYWl0czxUPjo6d2lkdGg7CisgICAgCisgICAg
YXV0byBjaGVja015RGlzYXNzZW1ibHkgPSBbJl0gKENvbXBpbGF0aW9uJiBjb21waWxhdGlvbikg
eworICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oY29tcGlsYXRpb24sICJsb2NrIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bihjb21waWxhdGlvbiwgImNtcHhjaGciKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGNoZWNrRGlzYXNzZW1ibHkoCisgICAgICAgICAgICAgICAgY29tcGlsYXRpb24sCisgICAgICAg
ICAgICAgICAgWyZdIChjb25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoc3Ryc3RyKGRpc2Fzc2VtYmx5LCAibGR4IikgfHwgc3Ryc3Ry
KGRpc2Fzc2VtYmx5LCAibGRheCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHN0cnN0
cihkaXNhc3NlbWJseSwgInN0eCIpIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgInN0bHgiKSk7Cisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgdG8gZmluZCBsZHgv
bGRheCBhbmQgc3R4L3N0bHggYnV0IGRpZG4ndCEiKTsKKyAgICAgICAgfQorICAgIH07CisgICAg
CisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogcmVsb29wID0gcHJvYy5h
ZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBkb25lID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7CisgICAgICAgIHJv
b3QtPnNldFN1Y2Nlc3NvcnMocmVsb29wKTsKKyAgICAgICAgCisgICAgICAgIHJlbG9vcC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAg
ICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgIHJl
bG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAg
ICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0cikpOworICAgICAgICByZWxvb3AtPnNldFN1
Y2Nlc3NvcnMoZG9uZSwgcmVsb29wKTsKKyAgICAgICAgCisgICAgICAgIGRvbmUtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRv
IGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1
ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZva2U8dm9pZD4o
KmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+
KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVj
a015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByZWxvb3AgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJh
c2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1
ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEp1bXAsIE9yaWdpbigpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhyZWxv
b3ApOworICAgICAgICAKKyAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5k
TmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBP
cmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJlbG9vcC0+YXBw
ZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAg
ICAgICAgcHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoKSkpOworICAgICAgICByZWxv
b3AtPnNldFN1Y2Nlc3NvcnMoZG9uZSwgcmVsb29wKTsKKyAgICAgICAgCisgICAgICAgIGRvbmUt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAg
ICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAg
ICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZv
a2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRp
Y19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAg
ICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAg
ICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0
b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAor
ICAgICAgICAgICAgICAgIHB0cikpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHN1Y2Ms
IGZhaWwpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAg
ICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEw
MCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVl
WzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICh2YWx1ZVsw
XSA9PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAw
KTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICB9CisgICAg
CisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0
b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3Jp
Z2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAg
ICAgICAgICAgICAgcHRyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgSW50MzIsIDApKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3Nv
cnMoZmFpbCwgc3VjYyk7CisgICAgICAgIAorICAgICAgICBzdWNjLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdpZHRoKSwgT3JpZ2lu
KCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwg
dHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBmYWlsLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAg
ICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAg
ICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hpbGUg
KHZhbHVlWzBdID09IDQyKQorICAgICAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7
CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDApKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2Fz
dDxUPigzMDApOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19F
USh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAg
IH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWlj
V2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZElu
dENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNv
ZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVsw
XSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAoIWludm9rZTxi
b29sPigqY29kZSwgdmFsdWUpKSB7IH0KKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRp
Y19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAg
ICAgICAKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBD
SEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAx
Myk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSk7CisgICAgfQorICAgIAorICAg
IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAg
ICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAor
ICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwK
KyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7
CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZh
bHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlIChpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSkg
eyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgCisgICAgICAgIHZhbHVl
WzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0soaW52b2tlPGJvb2w+KCpj
b2RlLCB2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4o
MzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlE
aXNhc3NlbWJseSgqY29kZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAg
ICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQy
KSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAg
ICAgICAgICAgICAgNDIpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUo
cHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAg
ICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICghaW52b2tlPGJvb2w+KCpjb2RlLCBi
aXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSAtIDQyKSkgeyB9CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMV0sIDEzKTsKKyAgICAgICAgCisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4o
MzAwKTsKKyAgICAgICAgQ0hFQ0soIWludm9rZTxib29sPigqY29kZSwgYml0d2lzZV9jYXN0PGlu
dHB0cl90Pih2YWx1ZSkgLSA0MikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGlj
X2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAg
IGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgordm9pZCB0ZXN0QXRvbWljU3Ryb25nQ0FTKCkKK3sKKyAgICBUeXBlIHR5cGUgPSBOYXRp
dmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46Ondp
ZHRoOworICAgIAorICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChDb21waWxhdGlv
biYgY29tcGlsYXRpb24pIHsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibG9jayIpOworICAgICAgICAgICAgY2hl
Y2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJjbXB4Y2hnIik7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBjaGVja0Rpc2Fzc2VtYmx5KAorICAgICAgICAgICAgICAgIGNvbXBp
bGF0aW9uLAorICAgICAgICAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlzYXNzZW1ibHkpIC0+
IGJvb2wgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnN0cihkaXNhc3NlbWJseSwg
ImxkeCIpIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgImxkYXgiKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICYmIChzdHJzdHIoZGlzYXNzZW1ibHksICJzdHgiKSB8fCBzdHJzdHIoZGlzYXNzZW1i
bHksICJzdGx4IikpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIkV4cGVj
dGVkIHRvIGZpbmQgbGR4L2xkYXggYW5kIHN0eC9zdGx4IGJ1dCBkaWRuJ3QhIik7CisgICAgICAg
IH0KKyAgICB9OworICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sq
IHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0
b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwg
MHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcHRyKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAg
IHJvb3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7CisgICAgICAgIAorICAgICAgICBzdWNj
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUo
R1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAg
IHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAg
IAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkp
OworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAg
VCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAx
MzsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAg
ICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0s
IHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwor
ICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAgIH0KKyAgICAKKyAgICB7Cisg
ICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAg
ICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIE5vdEVx
dWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFs
dWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigp
LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJv
YywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAg
ICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJv
YywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKGZh
aWwsIHN1Y2MpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAor
ICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1
dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZh
bHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lk
PigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8
VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVl
WzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2
YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2Vt
Ymx5KCpjb2RlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAg
ICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgICAg
IAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJd
OworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAg
ICBDSEVDS19FUShpbnZva2U8VD4oKmNvZGUsIHZhbHVlKSwgNDIpOworICAgICAgICBDSEVDS19F
USh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIHN0YXRpY19jYXN0PFQ+KDMw
MCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJs
eSgqY29kZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9j
LCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21p
Y1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmln
aW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAg
ICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIENIRUNL
KGludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0s
IHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNL
KCFpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsK
KyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlKTsKKyAgICB9CisgICAgCisgICAgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBO
b3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
dG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdD
QVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhi
ZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCA0MikpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSkpOworICAgICAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNv
bXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7
CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIENIRUNLKGludm9rZTxib29sPigqY29k
ZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4
YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVsw
XSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKCFpbnZva2U8Ym9vbD4oKmNv
ZGUsICZ2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4o
MzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlE
aXNhc3NlbWJseSgqY29kZSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9p
ZCB0ZXN0QXRvbWljWGNoZyhCMzo6T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBUeXBlIHR5cGUgPSBO
YXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46
OndpZHRoOworICAgIAorICAgIGF1dG8gZG9UaGVNYXRoID0gWyZdIChUJiBtZW1vcnksIFQgb3Bl
cmFuZCkgLT4gVCB7CisgICAgICAgIFQgb2xkVmFsdWUgPSBtZW1vcnk7CisgICAgICAgIHN3aXRj
aCAob3Bjb2RlKSB7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAgICAgIG1l
bW9yeSArPSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWlj
WGNoZ0FuZDoKKyAgICAgICAgICAgIG1lbW9yeSAmPSBvcGVyYW5kOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgbWVtb3J5IHw9IG9w
ZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgor
ICAgICAgICAgICAgbWVtb3J5IC09IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgbWVtb3J5IF49IG9wZXJhbmQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICAgICAg
bWVtb3J5ID0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAgfTsKKyAgICAKKyAgICBhdXRvIG9sZFZhbHVlID0g
WyZdIChUIG1lbW9yeSwgVCBvcGVyYW5kKSAtPiBUIHsKKyAgICAgICAgcmV0dXJuIGRvVGhlTWF0
aChtZW1vcnksIG9wZXJhbmQpOworICAgIH07CisgICAgCisgICAgYXV0byBuZXdWYWx1ZSA9IFsm
XSAoVCBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7CisgICAgICAgIGRvVGhlTWF0aChtZW1vcnks
IG9wZXJhbmQpOworICAgICAgICByZXR1cm4gbWVtb3J5OworICAgIH07CisgICAgCisgICAgYXV0
byBjaGVja015RGlzYXNzZW1ibHkgPSBbJl0gKENvbXBpbGF0aW9uJiBjb21waWxhdGlvbikgewor
ICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNv
bXBpbGF0aW9uLCAibG9jayIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoZWNrRGlz
YXNzZW1ibHkoCisgICAgICAgICAgICAgICAgY29tcGlsYXRpb24sCisgICAgICAgICAgICAgICAg
WyZdIChjb25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAoc3Ryc3RyKGRpc2Fzc2VtYmx5LCAibGR4IikgfHwgc3Ryc3RyKGRpc2Fzc2Vt
Ymx5LCAibGRheCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHN0cnN0cihkaXNhc3Nl
bWJseSwgInN0eCIpIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgInN0bHgiKSk7CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgdG8gZmluZCBsZHgvbGRheCBhbmQg
c3R4L3N0bHggYnV0IGRpZG4ndCEiKTsgCisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIHsK
KyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0
b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0
aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIAor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOwor
ICAgICAgICB2YWx1ZVswXSA9IDU7CisgICAgICAgIHZhbHVlWzFdID0gMTAwOworICAgICAgICBD
SEVDS19FUShpbnZva2U8VD4oKmNvZGUsIHZhbHVlKSwgb2xkVmFsdWUoNSwgNDIpKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMF0sIG5ld1ZhbHVlKDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzFdLCAxMDApOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUpOworICAg
IH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8QXRv
bWljVmFsdWU+KAorICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lkdGgsCisg
ICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwg
NDIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAKKyAgICAgICAgYXV0byBj
b2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVb
MF0gPSA1OworICAgICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAgICAgICAgaW52b2tlPFQ+KCpjb2Rl
LCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0MikpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTAwKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2Vt
Ymx5KCpjb2RlKTsKKyAgICB9Cit9CisKIHZvaWQgdGVzdFdhc21Cb3VuZHNDaGVjayh1bnNpZ25l
ZCBvZmZzZXQpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xNDM3MCw2ICsxNTA3NCwxMyBA
QCBkb3VibGUgbmVnYXRpdmVaZXJvKCkKICAgICByZXR1cm4gLXplcm8oKTsKIH0KIAorI2RlZmlu
ZSBSVU5fTk9XKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAo
IXNob3VsZFJ1bigjdGVzdCkpICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYnJlYWs7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkYXRhTG9nKCN0ZXN0ICIu
Li5cbiIpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICB0ZXN0OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkYXRhTG9nKCN0ZXN0ICI6IE9LIVxuIik7ICAg
ICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQogI2RlZmluZSBSVU4odGVzdCkgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoIXNob3VsZFJ1bigjdGVz
dCkpICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXApAQCAtMTQ0MjEsMTIgKzE1MTMyLDExIEBAIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikKICAgICAgICAgcmV0dXJuICFmaWx0ZXIgfHwgISFzdHJjYXNlc3RyKHRl
c3ROYW1lLCBmaWx0ZXIpOwogICAgIH07CiAKLSAgICAvLyBXZSBydW4gdGhpcyB0ZXN0IGZpcnN0
IGJlY2F1c2UgaXQgZmlkZGxlcyB3aXRoIHNvbWUKLSAgICAvLyBKU0Mgb3B0aW9ucy4KLSAgICB0
ZXN0VGVybWluYWxQYXRjaHBvaW50VGhhdE5lZWRzVG9CZVNwaWxsZWQyKCk7CisgICAgUlVOX05P
Vyh0ZXN0VGVybWluYWxQYXRjaHBvaW50VGhhdE5lZWRzVG9CZVNwaWxsZWQyKCkpOwogCiAgICAg
UlVOKHRlc3Q0MigpKTsKICAgICBSVU4odGVzdExvYWQ0MigpKTsKKyAgICBSVU4odGVzdExvYWRB
Y3E0MigpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4KCkpOwogICAgIFJVTih0ZXN0
TG9hZE9mZnNldEltbTlNYXhQbHVzT25lKCkpOwogICAgIFJVTih0ZXN0TG9hZE9mZnNldEltbTlN
YXhQbHVzVHdvKCkpOwpAQCAtMTUwOTksMTYgKzE1ODA5LDIzIEBAIHZvaWQgcnVuKGNvbnN0IGNo
YXIqIGZpbHRlcikKICAgICBSVU4odGVzdE5lZzMyKDUyKSk7CiAgICAgUlVOKHRlc3ROZWdQdHIo
NTMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDMyKDQ2KSk7CisgICAgUlVOKHRlc3RTdG9y
ZVJlbEFkZExvYWRBY3EzMig0NikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tMzIoNDYp
KTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDY0KDQ2MDApKTsKKyAgICBSVU4odGVzdFN0b3Jl
UmVsQWRkTG9hZEFjcTY0KDQ2MDApKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTY0KDQ2
MDApKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDgoNCwgTG9hZDhaKSk7CisgICAgUlVOKHRl
c3RTdG9yZVJlbEFkZExvYWRBY3E4KDQsIExvYWQ4WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxB
ZGRGZW5jZUxvYWRBY3E4KDQsIExvYWQ4WikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1t
OCg0LCBMb2FkOFopKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDgoNCwgTG9hZDhTKSk7Cisg
ICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KDQsIExvYWQ4UykpOwogICAgIFJVTih0ZXN0
U3RvcmVBZGRMb2FkSW1tOCg0LCBMb2FkOFMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDE2
KDYsIExvYWQxNlopKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTE2KDYsIExvYWQx
NlopKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTE2KDYsIExvYWQxNlopKTsKICAgICBS
VU4odGVzdFN0b3JlQWRkTG9hZDE2KDYsIExvYWQxNlMpKTsKKyAgICBSVU4odGVzdFN0b3JlUmVs
QWRkTG9hZEFjcTE2KDYsIExvYWQxNlMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTE2
KDYsIExvYWQxNlMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDMySW5kZXgoNDYpKTsKICAg
ICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTMySW5kZXgoNDYpKTsKQEAgLTE1ODMxLDYgKzE2NTQ4
LDM5IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdExvYWRCYXNl
SW5kZXhTaGlmdDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQzMigpKTsKICAg
ICBSVU4odGVzdE9wdGltaXplTWF0ZXJpYWxpemF0aW9uKCkpOworICAgIAorICAgIFJVTih0ZXN0
QXRvbWljV2Vha0NBUzxpbnQ4X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxpbnQx
Nl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50MzJfdD4oKSk7CisgICAgUlVO
KHRlc3RBdG9taWNXZWFrQ0FTPGludDY0X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25n
Q0FTPGludDhfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNTdHJvbmdDQVM8aW50MTZfdD4oKSk7
CisgICAgUlVOKHRlc3RBdG9taWNTdHJvbmdDQVM8aW50MzJfdD4oKSk7CisgICAgUlVOKHRlc3RB
dG9taWNTdHJvbmdDQVM8aW50NjRfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhf
dD4oQXRvbWljWGNoZ0FkZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9t
aWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGdB
ZGQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ0FkZCkpOwor
ICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAgICBSVU4o
dGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRv
bWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hn
PGludDY0X3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90
PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWlj
WGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGdPcikp
OworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnT3IpKTsKKyAgICBS
VU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnU3ViKSk7CisgICAgUlVOKHRlc3RB
dG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hj
aGc8aW50MzJfdD4oQXRvbWljWGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2
NF90PihBdG9taWNYY2hnU3ViKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRv
bWljWGNoZ1hvcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hn
WG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGdYb3IpKTsK
KyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGcpKTsKKyAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZykpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQz
Ml90PihBdG9taWNYY2hnKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21p
Y1hjaGcpKTsKIAogICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDApKTsKICAgICBSVU4odGVz
dFdhc21Cb3VuZHNDaGVjaygxMDApKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQXJnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5jcHAJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQXJnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBAIHVuc2ln
bmVkIEFyZzo6anNIYXNoKCkgY29uc3QKICAgICBjYXNlIFJlbENvbmQ6CiAgICAgY2FzZSBSZXND
b25kOgogICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgY2Fz
ZSBXaWR0aEFyZzoKICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29m
ZnNldCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTEwLDYgKzExMSw5IEBAIHVuc2lnbmVkIEFyZzo6
anNIYXNoKCkgY29uc3QKICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X29mZnNldCk7CiAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZz
ZXQgPj4gMzIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbXBsZUFkZHI6CisgICAgICAg
IHJlc3VsdCArPSBtX2Jhc2UuaW50ZXJuYWxWYWx1ZSgpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIEFkZHI6CiAgICAgICAgIHJlc3VsdCArPSBtX29mZnNldDsKICAgICAgICAgcmVzdWx0ICs9
IG1fYmFzZS5pbnRlcm5hbFZhbHVlKCk7CkBAIC0xNTAsNiArMTU0LDkgQEAgdm9pZCBBcmc6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNlIEJpdEltbTY0OgogICAgICAgICBv
dXQucHJpbnRmKCIkMHglbGx4Iiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nIHVuc2lnbmVkPihtX29m
ZnNldCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTaW1wbGVBZGRyOgorICAgICAgICBv
dXQucHJpbnQoIigiLCBiYXNlKCksICIpIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFk
ZHI6CiAgICAgICAgIGlmIChvZmZzZXQoKSkKICAgICAgICAgICAgIG91dC5wcmludChvZmZzZXQo
KSk7CkBAIC0xODIsNiArMTg5LDkgQEAgdm9pZCBBcmc6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5wcmludChhc0RvdWJsZUNv
bmRpdGlvbigpKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RhdHVzQ29uZDoKKyAgICAg
ICAgb3V0LnByaW50KGFzU3RhdHVzQ29uZGl0aW9uKCkpOworICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBTcGVjaWFsOgogICAgICAgICBvdXQucHJpbnQocG9pbnRlckR1bXAoc3BlY2lhbCgpKSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTIyMCw2ICsyMzAsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkJpdEltbTY0OgogICAgICAgICBv
dXQucHJpbnQoIkJpdEltbTY0Iik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6U2lt
cGxlQWRkcjoKKyAgICAgICAgb3V0LnByaW50KCJTaW1wbGVBZGRyIik7CisgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIEFyZzo6QWRkcjoKICAgICAgICAgb3V0LnByaW50KCJBZGRyIik7CiAgICAg
ICAgIHJldHVybjsKQEAgLTI0MSw2ICsyNTQsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkRvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5w
cmludCgiRG91YmxlQ29uZCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlN0YXR1
c0NvbmQ6CisgICAgICAgIG91dC5wcmludCgiU3RhdHVzQ29uZCIpOworICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBBcmc6OlNwZWNpYWw6CiAgICAgICAgIG91dC5wcmludCgiU3BlY2lhbCIpOwog
ICAgICAgICByZXR1cm47CkBAIC0yODUsNiArMzAxLDkgQEAgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpFYXJseURlZjoKICAgICAgICAgb3V0
LnByaW50KCJFYXJseURlZiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OkVhcmx5
WkRlZjoKKyAgICAgICAgb3V0LnByaW50KCJFYXJseVpEZWYiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgQXJnOjpTY3JhdGNoOgogICAgICAgICBvdXQucHJpbnQoIlNjcmF0Y2giKTsKICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCShy
ZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBU
aGVzZSBhcmUgdGhlIGFkZHJlc3Nlcy4gSW5zdHJ1Y3Rpb25zIG1heSBsb2FkIGZyb20gKFVzZSks
IHN0b3JlIHRvIChEZWYpLCBvciBldmFsdWF0ZQogICAgICAgICAvLyAoVXNlQWRkcikgYWRkcmVz
c2VzLgorICAgICAgICBTaW1wbGVBZGRyLAogICAgICAgICBBZGRyLAogICAgICAgICBTdGFjaywK
ICAgICAgICAgQ2FsbEFyZywKQEAgLTgyLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICBSZWxD
b25kLAogICAgICAgICBSZXNDb25kLAogICAgICAgICBEb3VibGVDb25kLAorICAgICAgICBTdGF0
dXNDb25kLAogICAgICAgICBTcGVjaWFsLAogICAgICAgICBXaWR0aEFyZwogICAgIH07CkBAIC0x
NTEsNiArMTUzLDggQEAgcHVibGljOgogICAgICAgICAvLyBhcyBVc2UgaGFzIHVuZGVmaW5lZCBi
ZWhhdmlvcjogdGhlIHVzZSBtYXkgaGFwcGVuIGJlZm9yZSB0aGUgZGVmLCBvciBpdCBtYXkgaGFw
cGVuIGFmdGVyCiAgICAgICAgIC8vIGl0LgogICAgICAgICBFYXJseURlZiwKKyAgICAgICAgICAg
IAorICAgICAgICBFYXJseVpEZWYsCiAKICAgICAgICAgLy8gU29tZSBpbnN0cnVjdGlvbnMgbmVl
ZCBhIHNjcmF0Y2ggcmVnaXN0ZXIuIFdlIG1vZGVsIHRoaXMgYnkgc2F5aW5nIHRoYXQgdGhlIHRl
bXBvcmFyeSBpcwogICAgICAgICAvLyBkZWZpbmVkIGVhcmx5IGFuZCB1c2VkIGxhdGUuIFRoaXMg
cm9sZSBpbXBsaWVzIHRoYXQuCkBAIC0xODYsNiArMTkwLDcgQEAgcHVibGljOgogICAgICAgICBj
YXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBFYXJseURlZjoK
KyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMDYsNiArMjExLDcgQEAg
cHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAg
ICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0yMjgsNiArMjM0LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAg
ICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBF
YXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gcm9sZTsKICAgICAgICAgY2FzZSBVc2U6CiAg
ICAgICAgICAgICByZXR1cm4gQ29sZFVzZTsKQEAgLTI1Myw2ICsyNjAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAg
Y2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0y
NzQsNiArMjgyLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2Ug
VXNlQWRkcjoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0yOTQsNiArMzAzLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFpE
ZWY6CiAgICAgICAgIGNhc2UgVXNlWkRlZjoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAg
ICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMTUsNiArMzI1LDcgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBj
YXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgY2FzZSBTY3Jh
dGNoOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMzMCw2ICszNDEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBMYXRlVXNl
OgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAg
ICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzU4LDYgKzM3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZVpEZWY6Cisg
ICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00MTYsNiArNDI5LDE1IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGJpZ0ltbShiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGFkZHJl
c3MpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgQXJnIHNpbXBsZUFkZHIoQWlyOjpUbXAgcHRyKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHB0ci5pc0dQKCkpOworICAgICAgICBBcmcgcmVzdWx0Owor
ICAgICAgICByZXN1bHQubV9raW5kID0gU2ltcGxlQWRkcjsKKyAgICAgICAgcmVzdWx0Lm1fYmFz
ZSA9IHB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBzdGF0aWMgQXJn
IGFkZHIoQWlyOjpUbXAgYmFzZSwgaW50MzJfdCBvZmZzZXQgPSAwKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGJhc2UuaXNHUCgpKTsKQEAgLTUzMyw2ICs1NTUsMTQgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHN0YXRpYyBBcmcgc3RhdHVzQ29uZChNYWNy
b0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKKyAgICB7CisgICAgICAgIEFy
ZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBTdGF0dXNDb25kOworICAgICAgICBy
ZXN1bHQubV9vZmZzZXQgPSBjb25kaXRpb247CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCiAgICAgc3RhdGljIEFyZyBzcGVjaWFsKEFpcjo6U3BlY2lhbCogc3BlY2lhbCkKICAgICB7
CiAgICAgICAgIEFyZyByZXN1bHQ7CkBAIC02MDgsNiArNjM4LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgIH0KIAorICAgIGJvb2wgaXNTaW1wbGVBZGRyKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBraW5kKCkgPT0gU2ltcGxlQWRkcjsKKyAgICB9CisKICAgICBib29sIGlzQWRk
cigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4ga2luZCgpID09IEFkZHI7CkBAIC02MzEs
NiArNjY2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNNZW1vcnkoKSBjb25zdAogICAgIHsKICAg
ICAgICAgc3dpdGNoIChraW5kKCkpIHsKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAg
ICBjYXNlIEFkZHI6CiAgICAgICAgIGNhc2UgU3RhY2s6CiAgICAgICAgIGNhc2UgQ2FsbEFyZzoK
QEAgLTY0MSw2ICs2NzcsMTMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYW4gaWRpb21hdGljIHN0YWNrIHJlZmVyZW5jZS4gSXQg
bWF5IHJldHVybiBmYWxzZSBmb3Igc29tZSBraW5kcyBvZgorICAgIC8vIHN0YWNrIHJlZmVyZW5j
ZXMuIFRoZSBmb2xsb3dpbmcgaWRpb21zIGFyZSByZWNvZ25pemVkOgorICAgIC8vIC0gdGhlIFN0
YWNrIGtpbmQKKyAgICAvLyAtIHRoZSBDYWxsQXJnIGtpbmQKKyAgICAvLyAtIHRoZSBBZGRyIGtp
bmQgd2l0aCB0aGUgYmFzZSBiZWluZyBlaXRoZXIgU1Agb3IgRlAKKyAgICAvLyBDYWxsZXJzIG9m
IHRoaXMgZnVuY3Rpb24gYXJlIGFsbG93ZWQgdG8gZXhwZWN0IHRoYXQgaWYgaXQgcmV0dXJucyB0
cnVlLCB0aGVuIGl0IG11c3QgYmUgb25lIG9mCisgICAgLy8gdGhlc2UgZWFzeS10by1yZWNvZ25p
emUga2luZHMuIFNvLCBtYWtpbmcgdGhpcyBmdW5jdGlvbiByZWNvZ25pemUgbW9yZSBraW5kcyBj
b3VsZCBicmVhayB0aGluZ3MuCiAgICAgYm9vbCBpc1N0YWNrTWVtb3J5KCkgY29uc3Q7CiAKICAg
ICBib29sIGlzUmVsQ29uZCgpIGNvbnN0CkBAIC02NTgsMTIgKzcwMSwxOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBraW5kKCkgPT0gRG91YmxlQ29uZDsKICAgICB9CiAKKyAgICBib29sIGlz
U3RhdHVzQ29uZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ga2luZCgpID09IFN0YXR1
c0NvbmQ7CisgICAgfQorCiAgICAgYm9vbCBpc0NvbmRpdGlvbigpIGNvbnN0CiAgICAgewogICAg
ICAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNh
c2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1
c0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc3NCwxMCArODIzLDE2IEBAIHB1YmxpYzoKICAgICAg
ICAgQVNTRVJUKGtpbmQoKSA9PSBCaWdJbW0pOwogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4obV9vZmZzZXQpKTsKICAgICB9CisgICAgCisg
ICAgQWlyOjpUbXAgcHRyKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChraW5kKCkgPT0g
U2ltcGxlQWRkcik7CisgICAgICAgIHJldHVybiBtX2Jhc2U7CisgICAgfQogCiAgICAgQWlyOjpU
bXAgYmFzZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoa2luZCgpID09IEFkZHIgfHwg
a2luZCgpID09IEluZGV4KTsKKyAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBTaW1wbGVBZGRyIHx8
IGtpbmQoKSA9PSBBZGRyIHx8IGtpbmQoKSA9PSBJbmRleCk7CiAgICAgICAgIHJldHVybiBtX2Jh
c2U7CiAgICAgfQogCkBAIC04NDQsNiArODk5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEJp
Z0ltbToKICAgICAgICAgY2FzZSBCaXRJbW06CiAgICAgICAgIGNhc2UgQml0SW1tNjQ6CisgICAg
ICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgogICAgICAgICBjYXNlIElu
ZGV4OgogICAgICAgICBjYXNlIFN0YWNrOgpAQCAtODUxLDYgKzkwNyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2Ug
RG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNp
YWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTg3MiwxMCArOTI5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAg
ICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBT
dGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6
CiAgICAgICAgIGNhc2UgSW52YWxpZDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGNhc2UgSW5k
ZXg6CiAgICAgICAgIGNhc2UgU3RhY2s6CkBAIC0xMDQ5LDYgKzExMDgsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gaXNWYWxpZEJpdEltbUZvcm0odmFsdWUoKSk7CiAgICAgICAgIGNh
c2UgQml0SW1tNjQ6CiAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZEJpdEltbTY0Rm9ybSh2YWx1
ZSgpKTsKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgY2FzZSBTdGFjazoKICAgICAgICAgY2FzZSBD
YWxsQXJnOgpAQCAtMTA1OCw2ICsxMTE5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFJlbENv
bmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAg
ICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgY2Fz
ZSBXaWR0aEFyZzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTA3MCw2ICsxMTMyLDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3dpdGNoIChtX2tpbmQpIHsKICAgICAgICAgY2Fz
ZSBUbXA6CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgogICAg
ICAgICAgICAgZnVuY3RvcihtX2Jhc2UpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTEwLDYg
KzExNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQoaXNBbnlVc2UoYXJnUm9sZSkg
fHwgaXNBbnlEZWYoYXJnUm9sZSkpOwogICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIGFyZ1Jv
bGUsIGFyZ0JhbmssIGFyZ1dpZHRoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgICAgIGZ1bmN0b3IobV9i
YXNlLCBVc2UsIEdQLCBhcmdSb2xlID09IFVzZUFkZHIgPyBhcmdXaWR0aCA6IHBvaW50ZXJXaWR0
aCgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE0NCw5ICsxMjA4LDExIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIEFTU0VSVChpc0ltbSgpKTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXJWYWx1ZSgpKTsKICAgICB9Ci0KKyAgICAKICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhc0FkZHJlc3MoKSBjb25zdAogICAgIHsKKyAgICAgICAg
aWYgKGlzU2ltcGxlQWRkcigpKQorICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG1fYmFzZS5ncHIoKSk7CiAgICAgICAgIEFTU0VSVChpc0FkZHIoKSk7CiAgICAgICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UuZ3ByKCksIHN0YXRpY19jYXN0
PGludDMyX3Q+KG1fb2Zmc2V0KSk7CiAgICAgfQpAQCAtMTE3Nyw2ICsxMjQzLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25k
aXRpb24+KG1fb2Zmc2V0KTsKICAgICB9CiAgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OlN0YXR1
c0NvbmRpdGlvbiBhc1N0YXR1c0NvbmRpdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQoaXNTdGF0dXNDb25kKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3Nl
bWJsZXI6OlN0YXR1c0NvbmRpdGlvbj4obV9vZmZzZXQpOworICAgIH0KKyAgICAKICAgICAvLyBU
ZWxscyB5b3UgaWYgdGhlIEFyZyBpcyBpbnZlcnRpYmxlLiBPbmx5IGNvbmRpdGlvbiBhcmd1bWVu
dHMgYXJlIGludmVydGlibGUsIGFuZCBldmVuIGZvciB0aG9zZSwgdGhlcmUKICAgICAvLyBhcmUg
YSBmZXcgZXhjZXB0aW9ucyAtIG5vdGFibHkgT3ZlcmZsb3cgYW5kIFNpZ25lZC4KICAgICBib29s
IGlzSW52ZXJ0aWJsZSgpIGNvbnN0CkBAIC0xMTg0LDYgKzEyNTYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2Fz
ZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyOjppc0ludmVydGlibGUoYXNSZXN1bHRDb25kaXRpb24oKSk7CkBAIC0xMjA0LDYg
KzEyNzcsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gcmVzQ29uZChNYWNyb0Fzc2Vt
Ymxlcjo6aW52ZXJ0KGFzUmVzdWx0Q29uZGl0aW9uKCkpKTsKICAgICAgICAgY2FzZSBEb3VibGVD
b25kOgogICAgICAgICAgICAgcmV0dXJuIGRvdWJsZUNvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVy
dChhc0RvdWJsZUNvbmRpdGlvbigpKSk7CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNTdGF0dXND
b25kaXRpb24oKSkpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24g
MjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNSw2ICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsgbmFtZXNwYWNlCiAKIGNvbnN0IGNoYXIqIGNvbnN0IEJhc2ljQmxvY2s6OmR1bXBQcmVm
aXggPSAiIyI7CiAKK3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxv
Y2sgdGFyZ2V0KQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMSk7CisgICAgbV9zdWNjZXNz
b3JzWzBdID0gdGFyZ2V0OworfQorCit2b2lkIEJhc2ljQmxvY2s6OnNldFN1Y2Nlc3NvcnMoRnJl
cXVlbnRlZEJsb2NrIHRha2VuLCBGcmVxdWVudGVkQmxvY2sgbm90VGFrZW4pCit7CisgICAgbV9z
dWNjZXNzb3JzLnJlc2l6ZSgyKTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0gPSB0YWtlbjsKKyAgICBt
X3N1Y2Nlc3NvcnNbMV0gPSBub3RUYWtlbjsKK30KKwogYm9vbCBCYXNpY0Jsb2NrOjphZGRQcmVk
ZWNlc3NvcihCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICByZXR1cm4gQjM6OmFkZFByZWRlY2Vz
c29yKHRoaXMsIGJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDcgKzMzLDEx
IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFz
cyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CisKK25hbWVzcGFjZSBBaXIgewogCiBjbGFzcyBC
bG9ja0luc2VydGlvblNldDsKIGNsYXNzIENvZGU7CkBAIC05OSw2ICsxMDMsOSBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1f
c3VjY2Vzc29yczsgfQogICAgIFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3NvcnMoKSB7IHJldHVybiBt
X3N1Y2Nlc3NvcnM7IH0KIAorICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sp
OworICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2ssIEZyZXF1ZW50ZWRCbG9j
ayk7CisKICAgICBCYXNpY0Jsb2NrKiBzdWNjZXNzb3JCbG9jayh1bnNpZ25lZCBpbmRleCkgY29u
c3QgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAgQmFzaWNCbG9jayom
IHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBzdWNjZXNzb3IoaW5kZXgp
LmJsb2NrKCk7IH0KICAgICBTdWNjZXNzb3JDb2xsZWN0aW9uPEJhc2ljQmxvY2ssIFN1Y2Nlc3Nv
ckxpc3Q+IHN1Y2Nlc3NvckJsb2NrcygpCkBAIC0xMzMsNiArMTQwLDcgQEAgcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgZnJpZW5kIGNsYXNzIENvZGU7
CiAgICAgZnJpZW5kIGNsYXNzIEluc2VydGlvblNldDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4g
ZnJpZW5kIGNsYXNzIEIzOjpHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgCiAgICAgQmFz
aWNCbG9jayh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxv
Y2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCisKKyNpZiBFTkFCTEUoQjNf
SklUKQorCisjaW5jbHVkZSAiQWlyQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkFpckNvZGUuaCIK
KyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK0Jsb2NrSW5zZXJ0aW9uU2V0OjpCbG9ja0luc2VydGlv
blNldChDb2RlICZjb2RlKQorICAgIDogR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KGNvZGUubV9i
bG9ja3MpCit7Cit9CisKK0Jsb2NrSW5zZXJ0aW9uU2V0Ojp+QmxvY2tJbnNlcnRpb25TZXQoKQor
eworfQorCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFC
TEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2Nr
SW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJCbG9ja0luc2VydGlvblNldC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUg
PHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworY2xhc3MgSW5zZXJ0aW9uU2V0
OworCit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPjo6QmxvY2tJ
bnNlcnRpb24gQmxvY2tJbnNlcnRpb247CisKK2NsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IDogcHVi
bGljIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPiB7CitwdWJsaWM6CisgICAg
QmxvY2tJbnNlcnRpb25TZXQoQ29kZSYpOworICAgIH5CbG9ja0luc2VydGlvblNldCgpOworICAg
IAorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZXZlbnR1YWxseSBpbXBsZW1lbnQgQjM6OkJsb2Nr
SW5zZXJ0aW9uU2V0J3Mgc3BsaXRGb3J3YXJkKCkuCit9OworCit9IH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5jcHAJKHJldmlzaW9uIDIxMzM3OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuY3BwCShub25leGlz
dGVudCkKQEAgLTEsMjQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQWlyRHVt
cEFzSlMuaCIKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRlICJBaXJDb2RlLmgiCi0j
aW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7IG5hbWVzcGFjZSBBaXIgewotCi1uYW1lc3BhY2UgewotCi1DU3RyaW5nIHZhck5hbWVGb3JC
bG9ja0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgcmV0dXJuIHRvQ1N0cmluZygiYmIi
LCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShCYXNpY0Jsb2NrKiBibG9jaykKLXsKLSAg
ICByZXR1cm4gdmFyTmFtZUZvckJsb2NrQXRJbmRleChibG9jay0+aW5kZXgoKSk7Ci19Ci0KLUNT
dHJpbmcgdmFyTmFtZUZvclN0YWNrU2xvdEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAg
cmV0dXJuIHRvQ1N0cmluZygic2xvdCIsIGluZGV4KTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKFN0
YWNrU2xvdCogc2xvdCkKLXsKLSAgICByZXR1cm4gdmFyTmFtZUZvclN0YWNrU2xvdEF0SW5kZXgo
c2xvdC0+aW5kZXgoKSk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShSZWcgcmVnKQotewotICAgIHJl
dHVybiB0b0NTdHJpbmcoIlJlZy4iLCByZWcuZGVidWdOYW1lKCkpOwotfQotCi1DU3RyaW5nIHZh
ck5hbWVGb3JUbXBXaXRoQmFua0FuZEluZGV4KEJhbmsgYmFuaywgdW5zaWduZWQgaW5kZXgpCi17
Ci0gICAgcmV0dXJuIHRvQ1N0cmluZyhiYW5rID09IEZQID8gImYiIDogIiIsICJ0bXAiLCBpbmRl
eCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShUbXAgdG1wKQotewotICAgIGlmICh0bXAuaXNSZWco
KSkKLSAgICAgICAgcmV0dXJuIHZhck5hbWUodG1wLnJlZygpKTsKLSAgICByZXR1cm4gdmFyTmFt
ZUZvclRtcFdpdGhCYW5rQW5kSW5kZXgoQXJnKHRtcCkuYmFuaygpLCB0bXAudG1wSW5kZXgoKSk7
Ci19Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi12b2lkIGR1bXBBc0pTKENvZGUmIGNv
ZGUsIFByaW50U3RyZWFtJiBvdXQpCi17Ci0gICAgb3V0LnByaW50bG4oImxldCBjb2RlID0gbmV3
IENvZGUoKTsiKTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZS5zaXpl
KCk7ICsraSkKLSAgICAgICAgb3V0LnByaW50bG4oImxldCAiLCB2YXJOYW1lRm9yQmxvY2tBdElu
ZGV4KGkpLCAiID0gY29kZS5hZGRCbG9jaygpOyIpOwotICAgIAotICAgIG91dC5wcmludGxuKCJs
ZXQgaGFzaDsiKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlLnN0YWNrU2xv
dHMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBTdGFja1Nsb3QqIHNsb3QgPSBjb2RlLnN0YWNr
U2xvdHMoKVtpXTsKLSAgICAgICAgaWYgKHNsb3QpIHsKLSAgICAgICAgICAgIG91dC5wcmludGxu
KCJsZXQgIiwgdmFyTmFtZShzbG90KSwgIiA9IGNvZGUuYWRkU3RhY2tTbG90KCIsIHNsb3QtPmJ5
dGVTaXplKCksICIsICIsIHNsb3QtPmtpbmQoKSwgIik7Iik7Ci0gICAgICAgICAgICBpZiAoc2xv
dC0+b2Zmc2V0RnJvbUZQKCkpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShz
bG90KSwgIi5zZXRPZmZzZXRGcm9tRlAoIiwgc2xvdC0+b2Zmc2V0RnJvbUZQKCksICIpOyIpOwot
ICAgICAgICAgICAgb3V0LnByaW50bG4oImhhc2ggPSAiLCB2YXJOYW1lKHNsb3QpLCAiLmhhc2go
KTsiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJpZiAoaGFzaCAhPSAiLCBzbG90LT5qc0hh
c2goKSwgIikiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCIgICAgdGhyb3cgbmV3IEVycm9y
KFwiQmFkIGhhc2g6IFwiICsgaGFzaCk7Iik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
b3V0LnByaW50bG4oImNvZGUuYWRkU3RhY2tTbG90KDEsIFNwaWxsKTsiKTsKLSAgICB9Ci0gICAg
Ci0gICAgZm9yRWFjaEJhbmsoCi0gICAgICAgIFsmXSAoQmFuayBiYW5rKSB7Ci0gICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlLm51bVRtcHMoYmFuayk7IGktLTspIHsKLSAgICAgICAg
ICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgImxldCAiLCB2YXJOYW1l
Rm9yVG1wV2l0aEJhbmtBbmRJbmRleChiYW5rLCBpKSwgIiA9IGNvZGUubmV3VG1wKCIsIGJhbmss
ICIpOyIpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAKLSAgICBvdXQucHJpbnRs
bigibGV0IGluc3Q7Iik7Ci0gICAgb3V0LnByaW50bG4oImxldCBhcmc7Iik7Ci0gICAgCi0gICAg
Zm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKLSAgICAgICAgZm9yIChGcmVxdWVudGVk
QmxvY2sgc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgb3V0
LnByaW50bG4oCi0gICAgICAgICAgICAgICAgdmFyTmFtZShibG9jayksICIuc3VjY2Vzc29ycy5w
dXNoKG5ldyBGcmVxdWVudGVkQmxvY2soIiwKLSAgICAgICAgICAgICAgICB2YXJOYW1lKHN1Y2Nl
c3Nvci5ibG9jaygpKSwgIiwgIiwgc3VjY2Vzc29yLmZyZXF1ZW5jeSgpLCAiKSk7Iik7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBi
bG9jay0+cHJlZGVjZXNzb3JzKCkpCi0gICAgICAgICAgICBvdXQucHJpbnRsbih2YXJOYW1lKGJs
b2NrKSwgIi5wcmVkZWNlc3NvcnMucHVzaCgiLCB2YXJOYW1lKHByZWRlY2Vzc29yKSwgIik7Iik7
Ci0gICAgICAgIAotICAgICAgICBmb3IgKEluc3QmIGluc3QgOiAqYmxvY2spIHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBkbyBzb21ldGhpbmcgZm9yIGZsYWdzLgotICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjc1MQot
ICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QgPSBuZXcgSW5zdCgiLCBpbnN0LmtpbmQub3Bj
b2RlLCAiKTsiKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAot
ICAgICAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSwgQmFuaywgV2lkdGgpIHsK
LSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhcmcua2luZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgQXJnOjpJbnZhbGlkOgotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpU
bXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0
ZVRtcCgiLCB2YXJOYW1lKGFyZy50bXAoKSksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBcmc6OkltbToKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcg
PSBBcmcuY3JlYXRlSW1tKCIsIGFyZy52YWx1ZSgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQXJnOjpCaWdJbW06Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRs
bigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUJpZ0ltbSgi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52
YWx1ZSgpKSwgIiwgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnQzMl90PihhcmcudmFsdWUoKSA+PiAzMiksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBcmc6OkJpdEltbToKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJh
cmcgPSBBcmcuY3JlYXRlQml0SW1tKCIsIGFyZy52YWx1ZSgpLCAiKTsiKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpCaXRJbW02NDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRl
Qml0SW1tNjQoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQz
Ml90PihhcmcudmFsdWUoKSksICIsICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkgPj4gMzIpLCAiKTsiKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpBZGRyOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnBy
aW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVBZGRy
KCIsIHZhck5hbWUoYXJnLmJhc2UoKSksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U3RhY2s6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNy
ZWF0ZVN0YWNrKCIsIHZhck5hbWUoYXJnLnN0YWNrU2xvdCgpKSwgIiwgIiwgYXJnLm9mZnNldCgp
LCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpDYWxsQXJnOgotICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVDYWxsQXJnKCIs
IGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6SW5k
ZXg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUluZGV4KCIsIHZhck5hbWUoYXJnLmJhc2Uo
KSksICIsICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyTmFtZShhcmcuaW5kZXgo
KSksICIsICIsIGFyZy5zY2FsZSgpLCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OlJlbENvbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVJlbENvbmQoIiwgYXJnLmFzUmVsYXRpb25h
bENvbmRpdGlvbigpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpSZXND
b25kOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVh
dGVSZXNDb25kKCIsIGFyZy5hc1Jlc3VsdENvbmRpdGlvbigpLCAiKTsiKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpEb3VibGVDb25kOgotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVEb3VibGVDb25kKCIsIGFyZy5hc0RvdWJsZUNv
bmRpdGlvbigpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpTcGVjaWFs
OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVT
cGVjaWFsKCk7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6V2lkdGhBcmc6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVdpZHRo
QXJnKCIsIGFyZy53aWR0aCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5hcmdzLnB1c2goYXJnKTsiKTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNv
ZGUgPT0gUGF0Y2gpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5zdC5oYXNOb25BcmdFZmZlY3Rz
KCkpCi0gICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LnBhdGNoSGFzTm9uQXJn
RWZmZWN0cyA9IHRydWU7Iik7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0
LnByaW50bG4oImluc3QuZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MgPSBuZXcgU2V0KCk7Iik7Ci0g
ICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFDbG9iYmVyZWRSZWdzID0gbmV3
IFNldCgpOyIpOwotICAgICAgICAgICAgICAgIGluc3QuZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3Mo
KS5mb3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdz
LmFkZCgiLCB2YXJOYW1lKHJlZyksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICBpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncygpLmZvckVhY2goCi0gICAgICAg
ICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50bG4oImluc3QuZXh0cmFDbG9iYmVyZWRSZWdzLmFkZCgiLCB2YXJOYW1lKHJlZyksICIp
OyIpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5wYXRjaEFyZ0RhdGEgPSBbXTsiKTsKLSAgICAgICAg
ICAgICAgICBpbnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoQXJnJiwg
QXJnOjpSb2xlIHJvbGUsIEJhbmsgYmFuaywgV2lkdGggd2lkdGgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0
LnBhdGNoQXJnRGF0YS5wdXNoKHtyb2xlOiBBcmcuIiwgcm9sZSwgIiwgdHlwZTogIiwgYmFuaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCB3aWR0aDogIiwgd2lkdGgsICJ9KTsiKTsK
LSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IENDYWxsIHx8IGluc3Qua2luZC5vcGNv
ZGUgPT0gQ29sZENDYWxsKSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuY0Nh
bGxUeXBlID0gIiwgaW5zdC5vcmlnaW4tPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgb3V0LnBy
aW50bG4oImluc3QuY0NhbGxBcmdUeXBlcyA9IFtdOyIpOwotICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDE7IGkgPCBpbnN0Lm9yaWdpbi0+bnVtQ2hpbGRyZW4oKTsgKytpKQotICAg
ICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5jQ2FsbEFyZ1R5cGVzLnB1c2goIiwg
aW5zdC5vcmlnaW4tPmNoaWxkKGkpLT50eXBlKCksICIpOyIpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBvdXQucHJpbnRsbigiaGFzaCA9IGluc3QuaGFzaCgpOyIp
OwotICAgICAgICAgICAgb3V0LnByaW50bG4oImlmIChoYXNoICE9ICIsIGluc3QuanNIYXNoKCks
ICIpIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiICAgIHRocm93IG5ldyBFcnJvcihcIkJh
ZCBoYXNoOiBcIiArIGhhc2gpOyIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBvdXQucHJp
bnRsbih2YXJOYW1lKGJsb2NrKSwgIi5hcHBlbmQoaW5zdCk7Iik7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKLQotI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFz
SlMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBB
c0pTLmgJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRHVtcEFzSlMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoQjNfSklUKQotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKLQotY2xhc3MgQ29kZTsKLQot
Ly8gVGhpcyBpcyB1c2VkIGZvciBiZW5jaG1hcmtpbmcuIFZhcmlvdXMgb3BlcmF0aW9ucyBvbiBB
aXIgYXJlIGludGVyZXN0aW5nIGZyb20gYSBiZW5jaG1hcmtpbmcKLS8vIHN0YW5kcG9pbnQuIFdl
IGNhbiB3cml0ZSBzb21lIEFpciBwaGFzZXMgaW4gSlMgYW5kIHRoZW4gdXNlIHRoYXQgdG8gYmVu
Y2htYXJrIEpTLiBUaGUgYmVuY2htYXJrCi0vLyBpcyBjYWxsZWQgSlNBaXIsIGFuZCBpdCdzIGlu
IFBlcmZvcm1hbmNlVGVzdHMvSlNBaXIuCi12b2lkIGR1bXBBc0pTKENvZGUmLCBQcmludFN0cmVh
bSYpOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCi0KLSNlbmRpZiAvLyBFTkFC
TEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5h
dGVEZWFkQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsNiArMTE4LDggQEAgYm9vbCBlbGltaW5hdGVEZWFkQ29kZShDb2RlJiBjb2Rl
KQogICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAodW5zaWduZWQgYmxvY2tJ
bmRleCA9IGNvZGUuc2l6ZSgpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBibG9jayA9IGNvZGVbYmxvY2tJbmRleF07CisgICAgICAgICAgICBpZiAoIWJsb2NrKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnN0
SW5kZXggPSBibG9jay0+c2l6ZSgpOyBpbnN0SW5kZXgtLTspCiAgICAgICAgICAgICAgICAgaGFu
ZGxlSW5zdChibG9jay0+YXQoaW5zdEluZGV4KSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTMzNzkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBaXJBbGxvY2F0ZVJlZ2lzdGVy
c0J5R3JhcGhDb2xvcmluZy5oIgogI2luY2x1ZGUgIkFpckFsbG9jYXRlU3RhY2suaCIKICNpbmNs
dWRlICJBaXJDb2RlLmgiCi0jaW5jbHVkZSAiQWlyRHVtcEFzSlMuaCIKICNpbmNsdWRlICJBaXJF
bGltaW5hdGVEZWFkQ29kZS5oIgogI2luY2x1ZGUgIkFpckZpeE9idmlvdXNTcGlsbHMuaCIKICNp
bmNsdWRlICJBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKQEAgLTYyLDE3ICs2MSwxOSBA
QCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiB7CiAgICAgVGltaW5nU2Nv
cGUgdGltaW5nU2NvcGUoIkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24iKTsKICAgICAKKyAgICAv
LyBJZiB3ZSdyZSBkb2luZyBzdXBlciB2ZXJib3NlIGR1bXBpbmcsIHRoZSBwaGFzZSBzY29wZSBv
ZiBhbnkgcGhhc2Ugd2lsbCBhbHJlYWR5IGRvIGEgZHVtcC4KKyAgICBpZiAoc2hvdWxkRHVtcElS
KEFpck1vZGUpICYmICFzaG91bGREdW1wSVJBdEVhY2hQaGFzZShBaXJNb2RlKSkgeworICAgICAg
ICBkYXRhTG9nKCJJbml0aWFsIGFpcjpcbiIpOworICAgICAgICBkYXRhTG9nKGNvZGUpOworICAg
IH0KKyAgICAKICAgICAvLyBXZSBkb24ndCBleHBlY3QgdGhlIGluY29taW5nIGNvZGUgdG8gaGF2
ZSBwcmVkZWNlc3NvcnMgY29tcHV0ZWQuCiAgICAgY29kZS5yZXNldFJlYWNoYWJpbGl0eSgpOwog
ICAgIAogICAgIGlmIChzaG91bGRWYWxpZGF0ZUlSKCkpCiAgICAgICAgIHZhbGlkYXRlKGNvZGUp
OwogCi0gICAgLy8gSWYgd2UncmUgZG9pbmcgc3VwZXIgdmVyYm9zZSBkdW1waW5nLCB0aGUgcGhh
c2Ugc2NvcGUgb2YgYW55IHBoYXNlIHdpbGwgYWxyZWFkeSBkbyBhIGR1bXAuCi0gICAgaWYgKHNo
b3VsZER1bXBJUihBaXJNb2RlKSAmJiAhc2hvdWxkRHVtcElSQXRFYWNoUGhhc2UoQWlyTW9kZSkp
IHsKLSAgICAgICAgZGF0YUxvZygiSW5pdGlhbCBhaXI6XG4iKTsKLSAgICAgICAgZGF0YUxvZyhj
b2RlKTsKLSAgICB9CisgICAgc2ltcGxpZnlDRkcoY29kZSk7CiAKICAgICBsb3dlck1hY3Jvcyhj
b2RlKTsKIApAQCAtMTA3LDIzICsxMDgsMTEgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihD
b2RlJiBjb2RlKQogICAgIC8vIGRvZXMgdGhpbmdzIGxpa2UgaWRlbnRpZnkgd2hpY2ggY2FsbGVl
LXNhdmVzIHdlJ3JlIHVzaW5nIGFuZCBzYXZlcyB0aGVtLgogICAgIGhhbmRsZUNhbGxlZVNhdmVz
KGNvZGUpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpkdW1wQWlyQXNKU0JlZm9yZUFsbG9jYXRl
U3RhY2soKSkgewotICAgICAgICBkYXRhTG9nKCJEdW1waW5nIEFpciBhcyBKUyBiZWZvcmUgYWxs
b2NhdGVTdGFjazpcbiIpOwotICAgICAgICBkdW1wQXNKUyhjb2RlLCBXVEY6OmRhdGFGaWxlKCkp
OwotICAgICAgICBkYXRhTG9nKCJBaXIgaGFzaDogIiwgY29kZS5qc0hhc2goKSwgIlxuIik7Ci0g
ICAgfQotCiAgICAgLy8gVGhpcyB0dXJucyBhbGwgU3RhY2sgYW5kIENhbGxBcmcgQXJncyBpbnRv
IEFkZHIgYXJncyB0aGF0IHVzZSB0aGUgZnJhbWUgcG9pbnRlci4gSXQgZG9lcwogICAgIC8vIHRo
aXMgYnkgZmlyc3QtZml0IGFsbG9jYXRpbmcgc3RhY2sgc2xvdHMuIEl0IHNob3VsZCBiZSBwcmV0
dHkgZGFybiBjbG9zZSB0byBvcHRpbWFsLCBzbyB3ZQogICAgIC8vIHNob3VsZG4ndCBoYXZlIHRv
IHdvcnJ5IGFib3V0IHRoaXMgdmVyeSBtdWNoLgogICAgIGFsbG9jYXRlU3RhY2soY29kZSk7CiAg
ICAgCi0gICAgaWYgKE9wdGlvbnM6OmR1bXBBaXJBZnRlckFsbG9jYXRlU3RhY2soKSkgewotICAg
ICAgICBkYXRhTG9nKCJEdW1waW5nIEFpciBhZnRlciBhbGxvY2F0ZVN0YWNrOlxuIik7Ci0gICAg
ICAgIGRhdGFMb2coY29kZSk7Ci0gICAgICAgIGRhdGFMb2coIkFpciBoYXNoOiAiLCBjb2RlLmpz
SGFzaCgpLCAiXG4iKTsKLSAgICB9Ci0KICAgICAvLyBJZiB3ZSBjb2FsZXNjZWQgbW92ZXMgdGhl
biB3ZSBjYW4gdW5icmVhayBjcml0aWNhbCBlZGdlcy4gVGhpcyBpcyB0aGUgbWFpbiByZWFzb24g
Zm9yIHRoaXMKICAgICAvLyBwaGFzZS4KICAgICBzaW1wbGlmeUNGRyhjb2RlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHJldmlzaW9u
IDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3Nyw3MyBAQCBpbmxpbmUgYm9vbCBpc1g4NlVE
aXY2NFZhbGlkKGNvbnN0IEluc3QmCiAgICAgcmV0dXJuIGlzWDg2RGl2SGVscGVyVmFsaWQoaW5z
dCk7CiB9CiAKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoY29uc3QgSW5zdCYg
aW5zdCkKK3sKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgIHN3aXRjaCAoaW5zdC5h
cmdzLnNpemUoKSkgeworICAgIGNhc2UgMzoKKyAgICAgICAgcmV0dXJuIGluc3QuYXJnc1swXSA9
PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIGNhc2UgNToKKyAgICAgICAgcmV0dXJuIGlu
c3QuYXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZWxzZSAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KQorICAgIFVOVVNFRF9QQVJBTShpbnN0KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYgLy8g
Q1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9taWNT
dHJvbmdDQVNWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworI2lmIENQVShYODYpIHx8IENQVShY
ODZfNjQpCisgICAgcmV0dXJuIGluc3QuYXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgp
OworI2Vsc2UgLy8gQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICBVTlVTRURfUEFSQU0oaW5z
dCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8vIENQVShYODYpIHx8IENQVShYODZfNjQp
Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTOFZhbGlkKGNvbnN0IEluc3QmIGlu
c3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lu
bGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTMTZWYWxpZChjb25zdCBJbnN0JiBpbnN0KQorewor
ICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9v
bCBpc0F0b21pY1N0cm9uZ0NBUzMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1
cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNBdG9t
aWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRv
bWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRvbWlj
U3Ryb25nQ0FTOFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJhbmNo
QXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRv
bWljU3Ryb25nQ0FTMTZWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0Jy
YW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5j
aEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4g
aXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNC
cmFuY2hBdG9taWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0
dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKIH0gfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHJldmlz
aW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9w
Y29kZXMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMTcsNiArMTE3LDcgQEAgQWRkMzIgVTpHOjMyLCBVWkQ6RzozMgog
ICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAg
ICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAgIHg4NjogVG1wLCBJbmRl
eAogCkBAIC0xMzUsOSArMTM2LDEyIEBAIHg4NjogQWRkMTYgVTpHOjE2LCBVRDpHOjE2CiA2NDog
QWRkNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgor
ICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAg
ICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRl
eAogCiA2NDogQWRkNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIEltbSwgVG1wLCBUbXAK
QEAgLTE2Niw5ICsxNzAsMTIgQEAgeDg2OiBBZGRGbG9hdCBVOkY6MzIsIFVEOkY6MzIKIFN1YjMy
IFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAg
eDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4
NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAK
IGFybTY0OiBTdWIzMiBVOkc6MzIsIFU6RzozMiwgRDpHOjMyCiAgICAgVG1wLCBUbXAsIFRtcApA
QCAtMTc2LDkgKzE4MywxMiBAQCBhcm02NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIsIEQ6RzozMgog
NjQ6IFN1YjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFk
ZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1w
CisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwg
SW5kZXgKIAogYXJtNjQ6IFN1YjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRt
cCwgVG1wCkBAIC0yMDQsOSArMjE0LDEyIEBAIHg4NjogU3ViRmxvYXQgVTpGOjMyLCBVRDpGOjMy
CiBOZWczMiBVWkQ6RzozMgogICAgIFRtcAogICAgIHg4NjogQWRkcgorICAgIHg4NjogSW5kZXgK
IAogNjQ6IE5lZzY0IFVEOkc6NjQKICAgICBUbXAKKyAgICB4ODY6IEFkZHIKKyAgICB4ODY6IElu
ZGV4CiAKIGFybTY0OiBOZWdhdGVEb3VibGUgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcApA
QCAtMzMwLDggKzM0MywxMSBAQCBBbmQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAK
ICAgICB4ODY6IEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5k
ZXgKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogSW1t
LCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAKIDY0OiBBbmQ2NCBVOkc6NjQsIFU6Rzo2NCwg
RDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMzM5LDcgKzM1NSwxMyBAQCBBbmQzMiBVOkc6
MzIsIFVaRDpHOjMyCiAKIHg4Nl82NDogQW5kNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBU
bXAKLSAgICB4ODY6IEltbSwgVG1wCisgICAgSW1tLCBUbXAKKyAgICBJbW0sIEFkZHIKKyAgICBJ
bW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorICAgIEFkZHIsIFRtcAor
ICAgIEluZGV4LCBUbXAKIAogQW5kRG91YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6NjQKICAgICBU
bXAsIFRtcCwgVG1wCkBAIC00NTksOCArNDgxLDExIEBAIE9yMzIgVTpHOjMyLCBVWkQ6RzozMgog
ICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAg
eDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAK
ICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogCiA2NDogT3I2NCBVOkc6
NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDY5LDYgKzQ5NCwxMiBA
QCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBPcjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRt
cCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJ
bW0sIEluZGV4CisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4
ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogCiBYb3IzMiBVOkc6MzIsIFU6Rzoz
MiwgWkQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ4MCw4ICs1MTEsMTEgQEAgWG9yMzIg
VTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4
NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAg
ICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRl
eAogCiA2NDogWG9yNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAK
QEAgLTQ5MCw2ICs1MjQsMTEgQEAgWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogNjQ6IFhvcjY0IFU6
Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6
IFRtcCwgSW5kZXgKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAg
IHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJbW0sIFRtcAog
CiBhcm02NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCkBAIC00OTgsMTMgKzUzNywxNSBAQCBhcm02
NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCiB4ODY6IE5vdDMyIFVaRDpHOjMyCiAgICAgVG1wCiAg
ICAgQWRkcgorICAgIEluZGV4CiAKIGFybTY0OiBOb3Q2NCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRt
cCwgVG1wCiAKLXg4NjogTm90NjQgVUQ6Rzo2NAoreDg2XzY0OiBOb3Q2NCBVRDpHOjY0CiAgICAg
VG1wCiAgICAgQWRkcgorICAgIEluZGV4CiAKIGFybTY0OiBBYnNEb3VibGUgVTpGOjY0LCBEOkY6
NjQKICAgICBUbXAsIFRtcApAQCAtNjY4LDI3ICs3MDksMzc3IEBAIExvYWQ4IFU6Rzo4LCBaRDpH
OjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOCBVOkc6OCwgWkQ6
RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisg
ICAgU2ltcGxlQWRkciwgVG1wCisKIFN0b3JlOCBVOkc6OCwgRDpHOjgKICAgICBUbXAsIEluZGV4
CiAgICAgVG1wLCBBZGRyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJbW0sIEFkZHIK
IAorU3RvcmVSZWw4IFU6Rzo4LCBEOkc6OCAvZWZmZWN0cworICAgIHg4NjogVG1wLCBJbmRleAor
ICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFk
ZHIKKyAgICBUbXAsIFNpbXBsZUFkZHIKKwogTG9hZDhTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBa
RDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOFNpZ25lZEV4
dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6IEFkZHIsIFRtcAorICAg
IHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAorCiBMb2FkMTYgVTpHOjE2LCBa
RDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTYgVTpHOjE2
LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBU
bXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwogTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYs
IFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3ExNlNpZ25l
ZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAK
KyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwogU3RvcmUxNiBVOkc6
MTYsIEQ6RzoxNgogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKKyAgICB4ODY6IEltbSwg
SW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorCitTdG9yZVJlbDE2IFU6RzoxNiwgRDpHOjE2IC9l
ZmZlY3RzCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6
IEltbSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIFRtcCwgU2ltcGxlQWRkcgorCitM
b2FkQWNxMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAg
ICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworU3RvcmVSZWwzMiBVOkc6
MzIsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJ
bmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgVG1wLCBT
aW1wbGVBZGRyCisKKzY0OiBMb2FkQWNxNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCisgICAg
eDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAK
KworNjQ6IFN0b3JlUmVsNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCisgICAgeDg2OiBUbXAs
IEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4Njog
SW1tLCBJbmRleAorICAgIFRtcCwgU2ltcGxlQWRkcgorCisjIFRoZSBmaXJzdCBvcGVyYW5kIGlz
IHJheC4KKyMgRklYTUU6IFRoaXMgZm9ybXVsYXRpb24gbWVhbnMgdGhhdCB0aGUgYm9vbGVhbiBy
ZXN1bHQgY2Fubm90IGJlIHB1dCBpbiBlYXgsIGV2ZW4gdGhvdWdoIGFsbCB1c2VycworIyBvZiB0
aGlzIHdvdWxkIGJlIE9LIHdpdGggdGhhdC4KK3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIs
IFVEOkc6OCwgVTpHOjgsIFVEOkc6OCwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwg
VG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBU
bXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6
RzoxNiwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBU
bXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNT
dHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiwgWkQ6Rzo4IC9lZmZl
Y3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2XzY0OiBBdG9taWNTdHJvbmdDQVM2NCBVOkc6
MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU3RhdHVz
Q29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIElu
ZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVM4IFVEOkc6OCwgVTpHOjgsIFVEOkc6OCAv
ZWZmZWN0cworICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNTdHJvbmdDQVMxNiBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYgL2VmZmVjdHMKKyAg
ICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3Ry
b25nQ0FTMzIgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAgVG1wKiwgVG1w
LCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1N0cm9uZ0NBUzY0
IFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIFRtcCosIFRtcCwgQWRkcgor
ICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM4IFU6Rzoz
MiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4IC9icmFuY2ggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4
NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6
MTYgL2JyYW5jaCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAg
IFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdD
QVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiAvYnJhbmNoIC9lZmZlY3RzCisg
ICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1w
LCBJbmRleAorCit4ODZfNjQ6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0IFU6RzozMiwgVUQ6Rzo2
NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2ggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAq
LCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRv
bWljQWRkOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQxNiBV
Okc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDMyIFU6RzozMiwg
VUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAs
IEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljQWRkNjQgVTpHOjY0LCBVRDpH
OjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWI4IFU6Rzo4LCBVRDpHOjggL2VmZmVj
dHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODY6IEF0b21pY1N1YjE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogQXRvbWljU3ViMzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
XzY0OiBBdG9taWNTdWI2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIK
KyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0
b21pY0FuZDggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMTYg
VTpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAor
ICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBbmQzMiBVOkc6MzIs
IFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY0FuZDY0IFU6Rzo2NCwgVUQ6
Rzo2NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3I4IFU6Rzo4LCBVRDpHOjggL2VmZmVj
dHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODY6IEF0b21pY09yMTYgVTpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2OiBBdG9taWNPcjMyIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRk
cgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82
NDogQXRvbWljT3I2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21p
Y1hvcjggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9yMTYgVTpH
OjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYb3IzMiBVOkc6MzIsIFVE
Okc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hvcjY0IFU6Rzo2NCwgVUQ6Rzo2
NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljTmVnOCBVRDpHOjggL2VmZmVjdHMKKyAgICBB
ZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOZWcxNiBVRDpHOjE2IC9lZmZlY3RzCisgICAg
QWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTmVnMzIgVUQ6RzozMiAvZWZmZWN0cworICAg
IEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0b21pY05lZzY0IFVEOkc6NjQgL2VmZmVjdHMK
KyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3Q4IFVEOkc6OCAvZWZmZWN0cwor
ICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDE2IFVEOkc6MTYgL2VmZmVjdHMK
KyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QzMiBVRDpHOjMyIC9lZmZlY3Rz
CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Nl82NDogQXRvbWljTm90NjQgVUQ6Rzo2NCAvZWZm
ZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQ4IFVEOkc6OCwg
VUQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0
b21pY1hjaGdBZGQxNiBVRDpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQzMiBVRDpHOjMyLCBVRDpHOjMyIC9l
ZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hj
aGdBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODY6IEF0b21pY1hjaGc4IFVEOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGcxNiBVRDpHOjE2LCBV
RDpHOjE2IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0
b21pY1hjaGczMiBVRDpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hjaGc2NCBVRDpHOjY0LCBVRDpHOjY0IC9lZmZl
Y3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCithcm02NDogTG9hZExpbms4IFU6
Rzo4LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRM
aW5rQWNxOCBVOkc6OCwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKKyMg
U3VwZXIgY29uZnVzaW5nIGZhY3Q6IHRoaXMgcmV0dXJucyAwIHRvIG1lYW4gc3VjY2VzcywgMSB0
byBtZWFuIGZhaWx1cmUuCithcm02NDogU3RvcmVDb25kOCBVOkc6OCwgRDpHOjgsIEVaRDpHOjgg
L2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVs
OCBVOkc6OCwgRDpHOjgsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRt
cAorCithcm02NDogTG9hZExpbmsxNiBVOkc6MTYsIFpEOkc6MTYgL2VmZmVjdHMKKyAgICBTaW1w
bGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMTYgVTpHOjE2LCBaRDpHOjE2IC9lZmZl
Y3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQxNiBVOkc6MTYsIEQ6
RzoxNiwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0
OiBTdG9yZUNvbmRSZWwxNiBVOkc6MTYsIEQ6RzoxNiwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRt
cCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGluazMyIFU6RzozMiwgWkQ6RzozMiAv
ZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmtBY3EzMiBVOkc6
MzIsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3Jl
Q29uZDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVB
ZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4
IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rNjQg
VTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBM
b2FkTGlua0FjcTY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRt
cAorCithcm02NDogU3RvcmVDb25kNjQgVTpHOjY0LCBEOkc6NjQsIEVaRDpHOjggL2VmZmVjdHMK
KyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsNjQgVTpHOjY0
LCBEOkc6NjQsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCith
cm02NDogRGVwZW5kMzIgVTpHOjMyLCBEOkc6MzIKKyAgICBUbXAsIFRtcAorCithcm02NDogRGVw
ZW5kNjQgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcAogCiBDb21wYXJlMzIgVTpHOjMyLCBV
Okc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxv
Y2tPcmRlci5jcHAJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3Nyw2
ICsxNzcsMTAgQEAgdm9pZCBvcHRpbWl6ZUJsb2NrT3JkZXIoQ29kZSYgY29kZSkKICAgICAgICAg
Y2FzZSBCcmFuY2hTdWI2NDoKICAgICAgICAgY2FzZSBCcmFuY2hOZWczMjoKICAgICAgICAgY2Fz
ZSBCcmFuY2hOZWc2NDoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVM4OgorICAg
ICAgICBjYXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2OgorICAgICAgICBjYXNlIEJyYW5jaEF0
b21pY1N0cm9uZ0NBUzMyOgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0Ogog
ICAgICAgICAgICAgaWYgKGNvZGUuZmluZE5leHRCbG9jayhibG9jaykgPT0gYmxvY2stPnN1Y2Nl
c3NvckJsb2NrKDApICYmIGJyYW5jaC5hcmdzWzBdLmlzSW52ZXJ0aWJsZSgpKSB7CiAgICAgICAg
ICAgICAgICAgc3RkOjpzd2FwKGJsb2NrLT5zdWNjZXNzb3IoMCksIGJsb2NrLT5zdWNjZXNzb3Io
MSkpOwogICAgICAgICAgICAgICAgIGJyYW5jaC5hcmdzWzBdID0gYnJhbmNoLmFyZ3NbMF0uaW52
ZXJ0ZWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJm
ZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
clBhZEludGVyZmVyZW5jZS5jcHAJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNiArNDgsNyBAQCB2b2lkIHBhZEludGVyZmVyZW5jZShDb2RlJiBjb2RlKQogICAgICAgICAg
ICAgICAgIFsmXSAoQXJnJiwgQXJnOjpSb2xlIHJvbGUsIEJhbmssIFdpZHRoKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAocm9sZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6RWFybHlEZWY6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBoYXNFYXJseURlZiA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVVc2U6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2
ZXJ5dGhpbmcuY3BwCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsx
NTUsNyBAQCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFyZzo6TGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpTY3JhdGNoOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlEZWY6CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKFJlZyByZWcgOiBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoYmFuaykpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNldEJlZm9yZS5nZXQocmVnKSAmJiAhc2V0
QWZ0ZXIuZ2V0KHJlZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWZ0
ZXIuc2V0KHJlZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9n
ZW5lcmF0b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9v
cGNvZGVfZ2VuZXJhdG9yLnJiCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE0
ICs1MSw0OSBAQCBjbGFzcyBBcmcKICAgICAgICAgQGJhbmsgPSBiYW5rCiAgICAgICAgIEB3aWR0
aCA9IHdpZHRoCiAgICAgZW5kCi0KLSAgICBkZWYgd2lkdGhDb2RlCisgICAgCisgICAgZGVmIHNl
bGYud2lkdGhDb2RlKHdpZHRoKQogICAgICAgICBpZiB3aWR0aCA9PSAiUHRyIgogICAgICAgICAg
ICAgInBvaW50ZXJXaWR0aCgpIgogICAgICAgICBlbHNlCiAgICAgICAgICAgICAiV2lkdGgje3dp
ZHRofSIKICAgICAgICAgZW5kCiAgICAgZW5kCisKKyAgICBkZWYgd2lkdGhDb2RlCisgICAgICAg
IEFyZy53aWR0aENvZGUod2lkdGgpCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYucm9sZUNv
ZGUocm9sZSkKKyAgICAgICAgY2FzZSByb2xlCisgICAgICAgIHdoZW4gIlUiCisgICAgICAgICAg
ICAiVXNlIgorICAgICAgICB3aGVuICJEIgorICAgICAgICAgICAgIkRlZiIKKyAgICAgICAgd2hl
biAiWkQiCisgICAgICAgICAgICAiWkRlZiIKKyAgICAgICAgd2hlbiAiVUQiCisgICAgICAgICAg
ICAiVXNlRGVmIgorICAgICAgICB3aGVuICJVWkQiCisgICAgICAgICAgICAiVXNlWkRlZiIKKyAg
ICAgICAgd2hlbiAiVUEiCisgICAgICAgICAgICAiVXNlQWRkciIKKyAgICAgICAgd2hlbiAiUyIK
KyAgICAgICAgICAgICJTY3JhdGNoIgorICAgICAgICB3aGVuICJFRCIKKyAgICAgICAgICAgICJF
YXJseURlZiIKKyAgICAgICAgd2hlbiAiRVpEIgorICAgICAgICAgICAgIkVhcmx5WkRlZiIKKyAg
ICAgICAgd2hlbiAiTFUiCisgICAgICAgICAgICAiTGF0ZVVzZSIKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmFpc2UKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIHJvbGVD
b2RlCisgICAgICAgIEFyZy5yb2xlQ29kZShyb2xlKQorICAgIGVuZAogZW5kCiAKIGNsYXNzIE92
ZXJsb2FkCkBAIC0xODIsNyArMjE3LDcgQEAgZGVmIGxleChzdHIsIGZpbGVOYW1lKQogZW5kCiAK
IGRlZiBpc1JvbGUodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoWkQpfChV
WkQpfChVQSl8KFMpKVxaLworICAgIHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpE
KXwoVUEpfChTKXwoRUQpfChFWkQpfChMVSkpXFovCiBlbmQKIAogZGVmIGlzR0YodG9rZW4pCkBA
IC0xOTAsNyArMjI1LDcgQEAgZGVmIGlzR0YodG9rZW4pCiBlbmQKIAogZGVmIGlzS2luZCh0b2tl
bikKLSAgICB0b2tlbiA9fiAvXEEoKFRtcCl8KEltbSl8KEJpZ0ltbSl8KEJpdEltbSl8KEJpdElt
bTY0KXwoQWRkcil8KEluZGV4KXwoUmVsQ29uZCl8KFJlc0NvbmQpfChEb3VibGVDb25kKSlcWi8K
KyAgICB0b2tlbiA9fiAvXEEoKFRtcCl8KEltbSl8KEJpZ0ltbSl8KEJpdEltbSl8KEJpdEltbTY0
KXwoU2ltcGxlQWRkcil8KEFkZHIpfChJbmRleCl8KFJlbENvbmQpfChSZXNDb25kKXwoRG91Ymxl
Q29uZCl8KFN0YXR1c0NvbmQpKVxaLwogZW5kCiAKIGRlZiBpc0FyY2godG9rZW4pCkBAIC0yNjQs
NyArMjk5LDcgQEAgY2xhc3MgUGFyc2VyCiAKICAgICBkZWYgY29uc3VtZUtpbmQKICAgICAgICAg
cmVzdWx0ID0gdG9rZW4uc3RyaW5nCi0gICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGtpbmQg
KEltbSwgQmlnSW1tLCBCaXRJbW0sIEJpdEltbTY0LCBUbXAsIEFkZHIsIEluZGV4LCBSZWxDb25k
LCBSZXNDb25kLCBvciBEb3VibGVDb25kKSIpIHVubGVzcyBpc0tpbmQocmVzdWx0KQorICAgICAg
ICBwYXJzZUVycm9yKCJFeHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02
NCwgVG1wLCBTaW1wbGVBZGRyLCBBZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgRG91Ymxl
Q29uZCwgb3IgU3RhdHVzQ29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKICAgICAgICAgYWR2
YW5jZQogICAgICAgICByZXN1bHQKICAgICBlbmQKQEAgLTYzNCwyOCArNjY5LDcgQEAgd3JpdGVI
KCJPcGNvZGVVdGlscyIpIHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3ZlcmxvYWQuc2ln
bmF0dXJlLmVhY2hfd2l0aF9pbmRleCB7CiAgICAgICAgICAgICAgICAgfCBhcmcsIGluZGV4IHwK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByb2xlID0gbmlsCi0gICAgICAgICAg
ICAgICAgY2FzZSBhcmcucm9sZQotICAgICAgICAgICAgICAgIHdoZW4gIlUiCi0gICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAgICAgICAgIHdoZW4gIkQiCi0gICAgICAg
ICAgICAgICAgICAgIHJvbGUgPSAiRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlpEIgotICAg
ICAgICAgICAgICAgICAgICByb2xlID0gIlpEZWYiCi0gICAgICAgICAgICAgICAgd2hlbiAiVUQi
Ci0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgotICAgICAgICAgICAgICAgIHdo
ZW4gIlVaRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VaRGVmIgotICAgICAgICAg
ICAgICAgIHdoZW4gIlVBIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZUFkZHIiCi0g
ICAgICAgICAgICAgICAgd2hlbiAiUyIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3Jh
dGNoIgotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAg
ICAgICAgICAgICAgICBlbmQKLQotICAgICAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3Rvcihh
cmdzWyN7aW5kZXh9XSwgQXJnOjoje3JvbGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRoQ29k
ZX0pOyIKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0s
IEFyZzo6I3thcmcucm9sZUNvZGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRoQ29kZX0pOyIK
ICAgICAgICAgICAgIH0KICAgICAgICAgZW5kCiAgICAgfQpAQCAtODA0LDYgKzgxOCw5IEBAIHdy
aXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgIHdoZW4gIkJpdEltbTY0
IgogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlkQml0SW1t
NjRGb3JtKGFyZ3NbI3tpbmRleH1dLnZhbHVlKCkpKSIKICAgICAgICAgICAgICAgICAgICAgb3V0
cC5wdXRzICJPUEdFTl9SRVRVUk4oZmFsc2UpOyIKKyAgICAgICAgICAgICAgICB3aGVuICJTaW1w
bGVBZGRyIgorICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghYXJnc1sje2luZGV4
fV0udG1wKCkuaXNHUCgpKSIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJPUEdFTl9S
RVRVUk4oZmFsc2UpOyIKICAgICAgICAgICAgICAgICB3aGVuICJBZGRyIgogICAgICAgICAgICAg
ICAgICAgICBpZiBhcmcucm9sZSA9PSAiVUEiCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRw
LnB1dHMgImlmIChhcmdzWyN7aW5kZXh9XS5pc1N0YWNrKCkgJiYgYXJnc1sje2luZGV4fV0uc3Rh
Y2tTbG90KCktPmlzU3BpbGwoKSkiCkBAIC04MTksNiArODM2LDcgQEAgd3JpdGVIKCJPcGNvZGVH
ZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgd2hlbiAiUmVsQ29uZCIKICAgICAgICAgICAg
ICAgICB3aGVuICJSZXNDb25kIgogICAgICAgICAgICAgICAgIHdoZW4gIkRvdWJsZUNvbmQiCisg
ICAgICAgICAgICAgICAgd2hlbiAiU3RhdHVzQ29uZCIKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkIGtpbmQ6ICN7a2luZC5uYW1lfSIK
ICAgICAgICAgICAgICAgICBlbmQKQEAgLTEwOTUsNyArMTExMyw3IEBAIHdyaXRlSCgiT3Bjb2Rl
R2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5k
ZXh9XS5hc1RydXN0ZWRJbW0zMigpIgogICAgICAgICAgICAgICAgIHdoZW4gIkJpZ0ltbSIsICJC
aXRJbW02NCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0u
YXNUcnVzdGVkSW1tNjQoKSIKLSAgICAgICAgICAgICAgICB3aGVuICJBZGRyIgorICAgICAgICAg
ICAgICAgIHdoZW4gIlNpbXBsZUFkZHIiLCAiQWRkciIKICAgICAgICAgICAgICAgICAgICAgb3V0
cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNBZGRyZXNzKCkiCiAgICAgICAgICAgICAgICAgd2hl
biAiSW5kZXgiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1d
LmFzQmFzZUluZGV4KCkiCkBAIC0xMTA1LDYgKzExMjMsOCBAQCB3cml0ZUgoIk9wY29kZUdlbmVy
YXRlZCIpIHsKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0u
YXNSZXN1bHRDb25kaXRpb24oKSIKICAgICAgICAgICAgICAgICB3aGVuICJEb3VibGVDb25kIgog
ICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc0RvdWJsZUNv
bmRpdGlvbigpIgorICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCisgICAgICAgICAg
ICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzU3RhdHVzQ29uZGl0aW9uKCki
CiAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICB9CiAKQEAgLTExNDgsMjcgKzExNjgs
NyBAQCBGaWxlLm9wZW4oIkpTQWlyX29wY29kZS5qcyIsICJ3IikgewogICAgICAgICAgICAgICAg
IG91dHAucHV0cyAiY2FzZSAje292ZXJsb2FkLnNpZ25hdHVyZS5sZW5ndGh9OiIgaWYgbmVlZE92
ZXJsb2FkU3dpdGNoCiAgICAgICAgICAgICAgICAgb3ZlcmxvYWQuc2lnbmF0dXJlLmVhY2hfd2l0
aF9pbmRleCB7CiAgICAgICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8Ci0gICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSBuaWwKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBhcmcucm9sZQot
ICAgICAgICAgICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9s
ZSA9ICJVc2UiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIkQiCi0gICAgICAgICAgICAgICAg
ICAgICAgICByb2xlID0gIkRlZiIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiWkQiCi0gICAg
ICAgICAgICAgICAgICAgICAgICByb2xlID0gIlpEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdo
ZW4gIlVEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VEZWYiCi0gICAgICAg
ICAgICAgICAgICAgIHdoZW4gIlVaRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAi
VXNlWkRlZiIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVUEiCi0gICAgICAgICAgICAgICAg
ICAgICAgICByb2xlID0gIlVzZUFkZHIiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlMiCi0g
ICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlNjcmF0Y2giCi0gICAgICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAg
ICAgIGVuZAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgb3V0cC5w
dXRzICJpbnN0LnZpc2l0QXJnKCN7aW5kZXh9LCBmdW5jLCBBcmcuI3tyb2xlfSwgI3thcmcuYmFu
a31QLCAje2FyZy53aWR0aH0pOyIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpbnN0
LnZpc2l0QXJnKCN7aW5kZXh9LCBmdW5jLCBBcmcuI3thcmcucm9sZUNvZGV9LCAje2FyZy5iYW5r
fVAsICN7YXJnLndpZHRofSk7IgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBv
dXRwLnB1dHMgImJyZWFrOyIKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcAkocmV2
aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02
NC9BNjRET3Bjb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBzdHJ1Y3Qg
T3Bjb2RlR3JvdXBJbml0aWFsaXplciB7CiAKIHN0YXRpYyBPcGNvZGVHcm91cEluaXRpYWxpemVy
IG9wY29kZUdyb3VwTGlzdFtdID0gewogICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDA4LCBBNjRE
T3Bjb2RlTG9hZFN0b3JlUmVnaXN0ZXJQYWlyKSwKKyAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgw
OCwgQTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZSksCiAgICAgT1BDT0RFX0dST1VQX0VOVFJZ
KDB4MDksIEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3RlclBhaXIpLAogICAgIE9QQ09ERV9HUk9V
UF9FTlRSWSgweDBhLCBBNjRET3Bjb2RlTG9naWNhbFNoaWZ0ZWRSZWdpc3RlciksCiAgICAgT1BD
T0RFX0dST1VQX0VOVFJZKDB4MGIsIEE2NERPcGNvZGVBZGRTdWJ0cmFjdEV4dGVuZGVkUmVnaXN0
ZXIpLApAQCAtOTEwLDYgKzkxMSw1OSBAQCBjb25zdCBjaGFyKiBBNjRET3Bjb2RlRG1iOjpmb3Jt
YXQoKQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorY29uc3QgY2hhciogY29uc3Qg
QTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6c19vcE5hbWVzWzY0XSA9IHsKKyAgICAic3R4
cmIiLCAic3RseHJiIiwgMCwgMCwgImxkeHJiIiwgImxkYXhyYiIsIDAsIDAsCisgICAgMCwgInN0
bHJiIiwgMCwgMCwgMCwgImxkYXJiIiwgMCwgMCwKKyAgICAic3R4cmgiLCAic3RseHJoIiwgMCwg
MCwgImxkeHJoIiwgImxkYXhyaCIsIDAsIDAsCisgICAgMCwgInN0bHJoIiwgMCwgMCwgMCwgImxk
YXJoIiwgMCwgMCwKKyAgICAic3R4ciIsICJzdGx4ciIsICJzdHhwIiwgInN0bHhwIiwgImxkeHIi
LCAibGRheHIiLCAibGR4cCIsICJsZGF4cCIsCisgICAgMCwgInN0bHIiLCAwLCAwLCAwLCAibGRh
ciIsIDAsIDAsCisgICAgInN0eHIiLCAic3RseHIiLCAic3R4cCIsICJzdGx4cCIsICJsZHhyIiwg
ImxkYXhyIiwgImxkeHAiLCAibGRheHAiLAorICAgIDAsICJzdGxyIiwgMCwgMCwgMCwgImxkYXIi
LCAwLCAwCit9OworCitjb25zdCBjaGFyKiBBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlOjpm
b3JtYXQoKQoreworICAgIGlmIChvMigpICYmICFvMSgpICYmICFvMCgpKQorICAgICAgICByZXR1
cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAgICBpZiAobzIoKSAmJiBvMSgpKQorICAgICAg
ICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAgICBpZiAoKHNpemUoKSA8IDIpICYm
IG8xKCkpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGlmIChs
b2FkQml0KCkgJiYgKHJzKCkgIT0gMHgxZikpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpm
b3JtYXQoKTsKKworICAgIGlmICghaXNQYWlyT3AoKSAmJiAocnQyKCkgIT0gMHgxZikpCisgICAg
ICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGNvbnN0IGNoYXIqIHRoaXNP
cE5hbWUgPSBvcE5hbWUoKTsKKworICAgIGlmICghdGhpc09wTmFtZSkKKyAgICAgICAgcmV0dXJu
IEE2NERPcGNvZGU6OmZvcm1hdCgpOworCisgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKHRoaXNP
cE5hbWUpOworCisgICAgaWYgKCFsb2FkQml0KCkpIHsKKyAgICAgICAgYXBwZW5kWlJPclJlZ2lz
dGVyTmFtZShycygpLCBzaXplKCkgPT0gMHgzKTsKKyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7
CisgICAgfQorCisgICAgYXBwZW5kWlJPclJlZ2lzdGVyTmFtZShydCgpLCBzaXplKCkgPT0gMHgz
KTsKKyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBpZiAoaXNQYWlyT3AoKSkgeworICAgICAg
ICBhcHBlbmRaUk9yUmVnaXN0ZXJOYW1lKHJ0MigpLCBzaXplKCkgPT0gMHgzKTsKKyAgICAgICAg
YXBwZW5kU2VwYXJhdG9yKCk7CisgICAgfQorICAgIGFwcGVuZENoYXJhY3RlcignWycpOworICAg
IGFwcGVuZFNQT3JSZWdpc3Rlck5hbWUocm4oKSk7CisgICAgYXBwZW5kQ2hhcmFjdGVyKCddJyk7
CisKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisKIC8vIEEgemVybyBpbiBhbiBlbnRy
eSBvZiB0aGUgdGFibGUgbWVhbnMgdGhlIGluc3RydWN0aW9uIGlzIFVuYWxsb2NhdGVkCiBjb25z
dCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlTG9hZFN0b3JlOjpzX29wTmFtZXNbMzJdID0gewogICAg
ICJzdHJiIiwgImxkcmIiLCAibGRyc2IiLCAibGRyc2IiLCAic3RyIiwgImxkciIsICJzdHIiLCAi
bGRyIiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0
RE9wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJs
ZXIvQVJNNjQvQTY0RE9wY29kZS5oCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTg1LDYgKzU4NSwzMyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpczY0Qml0UlQoKSB7IHJl
dHVybiAoKG9wTnVtYmVyKCkgJiAweDE3KSA9PSAweDAyKSB8fCAoKG9wTnVtYmVyKCkgJiAweDFl
KSA9PSAweDE4KTsgfQogfTsKIAorY2xhc3MgQTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZSA6
IHB1YmxpYyBBNjRET3Bjb2RlTG9hZFN0b3JlIHsKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IHNfb3BOYW1lc1s2NF07CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Qg
dWludDMyX3QgbWFzayA9IDB4M2YwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHBh
dHRlcm4gPSAweDA4MDAwMDAwOworCisgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29k
ZUxvYWRTdG9yZUV4Y2x1c2l2ZSwgdGhpc09iaik7CisKKyAgICBjb25zdCBjaGFyKiBmb3JtYXQo
KTsKKworICAgIGNvbnN0IGNoYXIqIG9wTmFtZSgpCisgICAgeworICAgICAgICByZXR1cm4gc19v
cE5hbWVzW29wTnVtYmVyKCldOworICAgIH0KKworICAgIHVuc2lnbmVkIHJzKCkgeyByZXR1cm4g
cm0oKTsgfQorICAgIHVuc2lnbmVkIHJ0MigpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxMCkgJiAw
eDFmOyB9CisgICAgdW5zaWduZWQgbzAoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTUpICYgMHgx
OyB9CisgICAgdW5zaWduZWQgbzEoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjEpICYgMHgxOyB9
CisgICAgdW5zaWduZWQgbzIoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjMpICYgMHgxOyB9Cisg
ICAgdW5zaWduZWQgbG9hZEJpdCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAyMikgJiAweDE7IH0K
KyAgICB1bnNpZ25lZCBvcE51bWJlcigpIHsgcmV0dXJuIChzaXplKCkgPDwgNCApIHwgKG8yKCkg
PDwgMykgfCAobG9hZEJpdCgpIDw8IDIpIHwgKG8xKCkgPDwgMSkgfCBvMCgpOyB9CisgICAgYm9v
bCBpc1BhaXJPcCgpIHsgcmV0dXJuIChzaXplKCkgJiAweDEwKSAmJiBvMSgpOyB9Cit9OworCiBj
bGFzcyBBNjRET3Bjb2RlTG9hZFN0b3JlSW1tZWRpYXRlIDogcHVibGljIEE2NERPcGNvZGVMb2Fk
U3RvcmUgewogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc191bnByaXZp
bGVnZWRPcE5hbWVzWzMyXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDE3LDkgKzQxNyw2IEBAIHR5cGVkZWYgY29u
c3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYoYm9vbCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0
ZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgZXhwb3NlSW50ZXJuYWxN
b2R1bGVMb2FkZXIsIGZhbHNlLCBOb3JtYWwsICJleHBvc2UgdGhlIGludGVybmFsIG1vZHVsZSBs
b2FkZXIgb2JqZWN0IHRvIHRoZSBnbG9iYWwgc3BhY2UgZm9yIGRlYnVnZ2luZyIpIFwKICAgICBc
Ci0gICAgdihib29sLCBkdW1wQWlyQXNKU0JlZm9yZUFsbG9jYXRlU3RhY2ssIGZhbHNlLCBOb3Jt
YWwsIG51bGxwdHIpIFwKLSAgICB2KGJvb2wsIGR1bXBBaXJBZnRlckFsbG9jYXRlU3RhY2ssIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICBcCiAgICAgdihib29sLCB1c2VTdXBlclNhbXBs
ZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdihib29sLCByZXBvcnRM
TEludFN0YXRzLCBmYWxzZSwgQ29uZmlndXJhYmxlLCAiUmVwb3J0cyBMTEludCBzdGF0aXN0aWNz
IikgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303369</attachid>
            <date>2017-03-03 18:00:27 -0800</date>
            <delta_ts>2017-03-04 10:13:15 -0800</delta_ts>
            <desc>passes all tests on arm</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>352644</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTMzNzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxNCBAQAogCQkwRjJDNjNCMDFFNjBB
RTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87IH07
CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgz
OSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIz
V2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2MUU2
MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNCQzFF
NjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAv
KiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4
MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAv
KiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87
IH07CisJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQzMx
RTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggKi87IH07CiAJCTBGMkQ0
REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8q
IERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERTgxOTgz
MkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlz
U3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDUsOCArMjI1Myw2IEBACiAJCURDMjE0MzA4MUNBMzJF
NTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAq
LzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIwOTFEMzQzMTYxMDBC
QTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREMzRDJCMEIxRDM0
Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRCOEMxRDAwRTgyMjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5j
cHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM0NTRCOEIxRDAw
RTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1QjVEMUNFMjZFQTAw
MDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2
ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1
QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4
IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgKi87
IH07CkBAIC0yNzcxLDYgKzI3NzcsMTQgQEAKIAkJMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5IC8q
IEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0
aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRDFF
NjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7IHBhdGggPSBiMy9C
M1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0IzMUU2MzQzRTgw
MEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAv
KiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRv
bWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4Mzkg
LyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJsb2Nr
SW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkEx
RTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIv
QWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
QzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MxMUU2NjRBNUEwMEMxMzgz
OSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRpdmVUcmFpdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQzMxRTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFs
dWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTWVtb3J5VmFs
dWVJbmxpbmVzLmg7IHBhdGggPSBiMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQjE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJT
Y29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1Z2dlclNj
b3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREMxOTgzMkQzNDAw
N0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGVidWdnZXJTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENERE
RjE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFR5cGVQcm9maWxlckxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
Nzg3LDggKzQ4MDEsNiBAQAogCQlEQzIxNDMwNjFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURDM0QyQjA5MUQzNDMxNjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwQ2VsbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwQjFEMzQzNzZFMDBCQTkxOEMgLyogSGVhcENlbGwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcENlbGwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEQzQ1NEI4QTFEMDBFODFGMDA0QzE4QUYgLyog
QWlyRHVtcEFzSlMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWly
RHVtcEFzSlMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pT
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckR1bXBBc0pTLmg7IHBhdGgg
PSBiMy9haXIvQWlyRHVtcEFzSlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2
MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJFdmVudC5jcHA7IHBhdGggPSBwcm9maWxl
ci9Qcm9maWxlckV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVC
NUExQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJFdmVudC5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYwNUI1QjFDRTI2RTk4MDA1
OTM3MTggLyogUHJvZmlsZXJVSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gUHJvZmlsZXJVSUQuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMwNiw2ICs1MzE4LDggQEAKIAkJCQkwRkVD
ODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4
MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNFODAw
QzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4
MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNC
YW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9jay5j
cHAgKi8sCkBAIC01MzY4LDYgKzUzODIsNyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQgLyog
QjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4
MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3
NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTM5MCw4ICs1NDA1LDEwIEBACiAJCQkJNDNBQjI2
QzUxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5oICovLAogCQkJCTBGRUM4NEQ1MUJE
QUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRENjFCREFD
REFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5oICovLAorCQkJCTBGMkM2M0MzMUU2OUVGOTIw
MEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oICovLAogCQkJCTBGMzM4RTAzMUJGMDI3
NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuY3BwICovLAogCQkJCTBGMzM4RTA0MUJGMDI3
NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuaCAqLywKKwkJCQkwRjJDNjNDMTFFNjY0QTVB
MDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLywKIAkJCQkwRjMzOEUwNTFCRjAyNzZDMDAx
M0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3QuaCAqLywKIAkJCQkwRjMzOEUwNjFCRjAyNzZDMDAx
M0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmNwcCAqLywKIAkJCQkwRjMzOEUwNzFCRjAyNzZD
MDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmggKi8sCkBAIC01NDgzLDYgKzU1MDAsOCBA
QAogCQkJCTBGNjRFQUYyMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggKi8sCiAJ
CQkJMEZFQzg1NEMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suY3BwICovLAogCQkJ
CTBGRUM4NTREMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmggKi8sCisJCQkJMEYy
QzYzQjkxRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLywKKwkJ
CQkwRjJDNjNCQTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLywK
IAkJCQkwRkIzODc4QjFCRkJDNDREMDBFM0FCMUUgLyogQWlyQmxvY2tXb3JrbGlzdC5oICovLAog
CQkJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3Bw
ICovLAogCQkJCTBGNjE4MzIxMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRp
b24uaCAqLywKQEAgLTU0OTQsOCArNTUxMyw2IEBACiAJCQkJMEYxMEYxQTIxQzQyMEJGMDAwMUMw
N0QyIC8qIEFpckN1c3RvbS5oICovLAogCQkJCTc5QUJCMTdCMUU1Q0NCNTcwMDQ1QjlBNiAvKiBB
aXJEaXNhc3NlbWJsZXIuY3BwICovLAogCQkJCTc5QUJCMTdDMUU1Q0NCNTcwMDQ1QjlBNiAvKiBB
aXJEaXNhc3NlbWJsZXIuaCAqLywKLQkJCQlEQzQ1NEI4QTFEMDBFODFGMDA0QzE4QUYgLyogQWly
RHVtcEFzSlMuY3BwICovLAotCQkJCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1w
QXNKUy5oICovLAogCQkJCTBGNDU3MDM2MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVE
ZWFkQ29kZS5jcHAgKi8sCiAJCQkJMEY0NTcwMzcxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1p
bmF0ZURlYWRDb2RlLmggKi8sCiAJCQkJMEY2MTgzMjMxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVt
aXRTaHVmZmxlLmNwcCAqLywKQEAgLTczNDUsNiArNzM2Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMUZFNTFCMTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9y
dFJlYXNvbi5oICovLAorCQkJCTBGMkM2M0JGMUU2NjBFQTUwMEMxMzgzOSAvKiBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmNwcCAqLywKIAkJCQk4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyogQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oICovLAogCQkJCTBGMzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAv
KiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAqLywKIAkJCQk4NjQwOTIzQjE1NkVF
RDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLywKQEAgLTczNzMsOCArNzM5MSw4IEBA
CiAJCQkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICov
LAogCQkJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIu
Y3BwICovLAogCQkJCUZFNjhDNjM2MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclBy
aW50ZXIuaCAqLywKLQkJCQk4NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODYuaCAqLywKIAkJCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODZfNjQuaCAqLywKKwkJCQk4NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3Nl
bWJsZXJYODYuaCAqLywKIAkJCQlBN0E0QUUwNzE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uY3BwICovLAogCQkJCTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovLAogCQkJCTY1ODYwMTc3MTg1QThGNUUwMDAzMEVF
RSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oICovLApAQCAtNzk2NCw3ICs3OTgy
LDYgQEAKIAkJCQkwRkVDODU3NDFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU3NjFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3Rv
bS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREM0NTRCOEQxRDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1
bXBBc0pTLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4MzJEMUM0NUJG
MDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0REUx
Q0YxQzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuaCBpbiBIZWFkZXJzICov
LApAQCAtNzk3Nyw2ICs3OTk0LDcgQEAKIAkJCQkwRkVDODU4MDFCREFDREM3MDA4MEZGNzQgLyog
QWlySW5zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1ODExQkRBQ0RDNzAwODBGRjc0IC8q
IEFpckluc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRGNjdENzFEOURDNDQyMDAx
Qjk4MjUgLyogQWlyS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQkMxRTYzNDQwQzAw
QzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0
RDQzODFDMDAxNjFDMDA4MUQ2NjMgLyogQWlyTGl2ZW5lc3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRTM0QzFBMUM0QjM5QUUwMDAzQTUxMiAvKiBBaXJMb2dSZWdpc3RlclByZXNzdXJlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjYxODMyRjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyTG93ZXJBZnRl
clJlZ0FsbG9jLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNjgsNiArODA4Niw3IEBACiAJCQkJNDM0
MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODVCMzFCREVEOTU3MDA4MEZGNzQgLyogQjNDb25zdFB0clZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjMzOERGNjFCRTkzRDU1MDAxM0M4OEYgLyogQjNDb25zdHJhaW5l
ZFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCODFFNjM0M0Y3MDBDMTM4MzkgLyog
QjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4RTBF
MUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjMzRkNGQzFDMTYyNUJFMDAzMjNGNjcgLyogQjNEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjZCOEFEOTFDNEVEREEyMDA5NjkwNTIgLyogQjNEdXBsaWNhdGVUYWlscy5oIGluIEhl
YWRlcnMgKi8sCkBAIC04MjU4LDYgKzgyNzcsNyBAQAogCQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4
REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDREOTAzMTdB
MEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzA0RDkwNDE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBC
M05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzcxNDNGQ0QzRjAwNjhC
NzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDNFNDAyMUI2
MThBQUYwMEM4MEUxRSAvKiBERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMThEM0QwMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLApAQCAtODM4OCw2ICs4
NDA4LDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4NDQ3MjggLyogREZHT1NSRXhpdEZ1enou
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFRTE3MTc4RTcz
MDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50b21JbnNlcnRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMxNEVGOTBBRjAwQzcyNTMyIC8qIERGR1Bo
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFQjE5RDBCQTdEMDBCMUQxQjUgLyogREZH
UGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAtODgwNiw2ICs4ODI3LDcgQEAKIAkJCQk3
OUI4MTk5MzFERDI1Q0Y1MDBEREM3MTQgLyogSlNHbG9iYWxPYmplY3RJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTEwMDdDMTE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1
MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2Jq
ZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZB
Q0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKQEAgLTk4MTcsNiArOTgzOSw3IEBACiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNB
OTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQzAxRTY2MEVB
NzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtOTgyNyw3ICs5ODUwLDYgQEAKIAkJCQkwRkVDODU3MzFCREFDREM3MDA4MEZGNzQgLyog
QWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTc1MUJEQUNEQzcw
MDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjE4MzJCMUM0NUJG
MDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJREM0NTRCOEMx
RDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0UxQzRDMUI1NDAwNEQ2QzExIC8qIEFpckZp
eE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI3NCw2ICsxMDI5Niw3IEBA
CiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVk
U2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAv
KiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYz
NDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4
RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQwRTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJ
bmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMjkyLDYgKzEwMzE1
LDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJF
RDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBBMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNl
cnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMx
IC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyogSW50ZXJuYWxGdW5jdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
Njk0LDYgKzY5NCwyMSBAQCBwcml2YXRlOgogICAgICAgICBMZHJMaXRlcmFsT3BfTERSU1cgPSAy
LAogICAgICAgICBMZHJMaXRlcmFsT3BfMTI4QklUID0gMgogICAgIH07CisgICAgCisgICAgZW51
bSBFeG90aWNMb2FkRmVuY2UgeworICAgICAgICBFeG90aWNMb2FkRmVuY2VfTm9uZSwKKyAgICAg
ICAgRXhvdGljTG9hZEZlbmNlX0FjcXVpcmUKKyAgICB9OworICAgIAorICAgIGVudW0gRXhvdGlj
TG9hZEF0b21pYyB7CisgICAgICAgIEV4b3RpY0xvYWRBdG9taWNfTGluaywKKyAgICAgICAgRXhv
dGljTG9hZEF0b21pY19Ob25lCisgICAgfTsKKworICAgIGVudW0gRXhvdGljU3RvcmVGZW5jZSB7
CisgICAgICAgIEV4b3RpY1N0b3JlRmVuY2VfTm9uZSwKKyAgICAgICAgRXhvdGljU3RvcmVGZW5j
ZV9SZWxlYXNlLAorICAgIH07CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbWVtUGFpck9mZnNldFNo
aWZ0KGJvb2wgViwgTWVtUGFpck9wU2l6ZSBzaXplKQogICAgIHsKQEAgLTE1MzEsNiArMTU0Niw0
OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbnNuKDB4ZDUwMzNhYmYpOwogICAgIH0KKyAg
ICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBsZGFyKFJlZ2lzdGVySUQg
ZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7Cisg
ICAgICAgIGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUsIEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJl
LCBFeG90aWNMb2FkQXRvbWljX05vbmUsIGRzdCwgc3JjKSk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgbGR4cihSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJ
RCBzcmMpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGV4
b3RpY0xvYWQoTUVNT1BTSVpFLCBFeG90aWNMb2FkRmVuY2VfTm9uZSwgRXhvdGljTG9hZEF0b21p
Y19MaW5rLCBkc3QsIHNyYykpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4K
KyAgICB2b2lkIGxkYXhyKFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7Cisg
ICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZXhvdGljTG9hZChNRU1PUFNJ
WkUsIEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlLCBFeG90aWNMb2FkQXRvbWljX0xpbmssIGRzdCwg
c3JjKSk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lk
IHN0eHIoUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkK
KyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZXhvdGljU3Rv
cmUoTUVNT1BTSVpFLCBFeG90aWNTdG9yZUZlbmNlX05vbmUsIHJlc3VsdCwgc3JjLCBkc3QpKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdGxyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpF
KCk7CisgICAgICAgIGluc24oc3RvcmVSZWxlYXNlKE1FTU9QU0laRSwgc3JjLCBkc3QpKTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdGx4cihSZWdpc3Rl
cklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihleG90aWNTdG9yZShNRU1PUFNJWkUs
IEV4b3RpY1N0b3JlRmVuY2VfUmVsZWFzZSwgcmVzdWx0LCBzcmMsIGRzdCkpOworICAgIH0KIAog
ICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3JuKFJl
Z2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCkBAIC0zMjkyLDcgKzMz
NDksNyBAQCBwcml2YXRlOgogICAgIH0KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgZXhj
ZXBuR2VuZXJhdGlvbkltbU1hc2soKQogICAgIHsKLSAgICAgICAgdWludDE2X3QgaW1tMTYgPSAg
c3RkOjpudW1lcmljX2xpbWl0PHVpbnQxNl90Pjo6bWF4KCk7CisgICAgICAgIHVpbnQxNl90IGlt
bTE2ID0gIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKTsKICAgICAgICAgcmV0
dXJuIChzdGF0aWNfY2FzdDxpbnQ+KGltbTE2KSA8PCA1KTsKICAgICB9CiAKQEAgLTM2MDEsNyAr
MzY1OCwyMiBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBpbnQgb3A0ID0gMDsKICAgICAgICAg
cmV0dXJuICgweGQ2MDAwMDAwIHwgb3BjIDw8IDIxIHwgb3AyIDw8IDE2IHwgb3AzIDw8IDEwIHwg
eE9yWnIocm4pIDw8IDUgfCBvcDQpOwogICAgIH0KLQorICAgIAorICAgIHN0YXRpYyBpbnQgZXhv
dGljTG9hZChNZW1PcFNpemUgc2l6ZSwgRXhvdGljTG9hZEZlbmNlIGZlbmNlLCBFeG90aWNMb2Fk
QXRvbWljIGF0b21pYywgUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc3JjKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIDB4MDg1ZjdjMDAgfCBzaXplIDw8IDMwIHwgZmVuY2UgPDwgMTUgfCBhdG9t
aWMgPDwgMjMgfCBzcmMgPDwgNSB8IGRzdDsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGludCBz
dG9yZVJlbGVhc2UoTWVtT3BTaXplIHNpemUsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRz
dCkKKyAgICB7CisgICAgICAgIHJldHVybiAweDA4OWZmYzAwIHwgc2l6ZSA8PCAzMCB8IGRzdCA8
PCA1IHwgc3JjOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgaW50IGV4b3RpY1N0b3JlKE1lbU9w
U2l6ZSBzaXplLCBFeG90aWNTdG9yZUZlbmNlIGZlbmNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIDB4MDgw
MDdjMDAgfCBzaXplIDw8IDMwIHwgcmVzdWx0IDw8IDE2IHwgZmVuY2UgPDwgMTUgfCBkc3QgPDwg
NSB8IHNyYzsKKyAgICB9CisgICAgCiAgICAgLy8gV29ya2Fyb3VuZCBmb3IgQ29ydGV4LUE1MyBl
cnJhdHVtICg4MzU3NjkpLiBFbWl0IGFuIGV4dHJhIG5vcCBpZiB0aGUKICAgICAvLyBsYXN0IGlu
c3RydWN0aW9uIGluIHRoZSBidWZmZXIgaXMgYSBsb2FkLCBzdG9yZSBvciBwcmVmZXRjaC4gTmVl
ZGVkCiAgICAgLy8gYmVmb3JlIDY0LWJpdCBtdWx0aXBseS1hY2N1bXVsYXRlIGluc3RydWN0aW9u
cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyLmgiIC8vIEhhdmUgdG8gYnJlYWsgd2l0aCBzdHlsZSBiZWNhdXNlIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaCBpcyBhIHNoYWR5IGhlYWRlci4KKworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisK
KyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sK
KyAgICBzd2l0Y2ggKGNvbmRpdGlvbikgeworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ckJhc2U6OlN1Y2Nlc3M6CisgICAgICAgIG91dC5wcmludCgiU3VjY2VzcyIpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6RmFpbHVyZToKKyAg
ICAgICAgb3V0LnByaW50KCJGYWlsdXJlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
KyNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlz
aW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUmFuZG9tLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtNTAsOCArNTEsMjggQEAgbmFtZXNwYWNlIERGRyB7CiBzdHJ1Y3Qg
T1NSRXhpdDsKIH0KIAorY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgeworcHVibGlj
OgorICAgIGVudW0gU3RhdHVzQ29uZGl0aW9uIHsKKyAgICAgICAgU3VjY2VzcywKKyAgICAgICAg
RmFpbHVyZQorICAgIH07CisgICAgCisgICAgc3RhdGljIFN0YXR1c0NvbmRpdGlvbiBpbnZlcnQo
U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZGl0
aW9uKSB7CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBGYWlsdXJl
OworICAgICAgICBjYXNlIEZhaWx1cmU6CisgICAgICAgICAgICByZXR1cm4gU3VjY2VzczsKKyAg
ICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gU3VjY2VzczsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZSA8Y2xhc3MgQXNzZW1ibGVyVHlw
ZSwgY2xhc3MgTWFjcm9Bc3NlbWJsZXJUeXBlPgotY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ciB7CitjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyIDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXJCYXNlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI8QXNzZW1ibGVyVHlwZSwgTWFjcm9Bc3NlbWJsZXJUeXBlPiBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyVHlwZTsKICAgICB0eXBlZGVmIEFzc2VtYmxlclR5cGUgQXNzZW1ibGVyVHlwZV9UOwpAQCAt
MTEwOCwzICsxMTI5LDE2IEBAIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZSwg
TWEKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2lmIEVOQUJMRShBU1NFTUJMRVIpCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0
cmVhbTsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN0YXR1c0NvbmRpdGlvbik7CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjEz
Mzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgZG91YmxlIHR3b1RvVGhlMzI7IC8vIFRoaXMgaXMgc3VwZXIgdXNlZnVsIGZv
ciBzb21lIGRvdWJsZSBjb2RlLgogCiAgICAgLy8gVXRpbGl0aWVzIHVzZWQgYnkgdGhlIERGRyBK
SVQuCisgICAgdXNpbmcgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OmludmVydDsKICAgICB1
c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmludmVydDsKICAgICAKICAgICBzdGF0aWMgRG91Ymxl
Q29uZGl0aW9uIGludmVydChEb3VibGVDb25kaXRpb24gY29uZCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShy
ZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMzM3NSw3ICszMzc1LDIyOSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5kbWJJU0goKTsKICAgICB9Ci0KKyAg
ICAKKyAgICB2b2lkIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRhcjw4
PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihhZGRyZXNzLCBkZXN0KTsK
KyAgICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKDB4ZmYpLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Rscjw4PihzcmMsIGV4dHJhY3RTaW1wbGVB
ZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTZTaWduZWRF
eHRlbmRUbzMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sZGFyPDE2PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVz
cyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkQWNxMTZT
aWduZWRFeHRlbmRUbzMyKGFkZHJlc3MsIGRlc3QpOworICAgICAgICBhbmQzMihUcnVzdGVkSW1t
MzIoMHhmZmZmKSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdp
c3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdGxyPDE2PihzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXI8MzI+KGRlc3Qs
IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXI8NjQ+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNz
KGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFJlZ2lzdGVySUQg
ZGVzdCwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zdGxyPDMyPihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3RlcklEIGRlc3QsIEltcGxpY2l0QWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Rscjw2ND4oZGVzdCwgZXh0
cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRM
aW5rOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubGR4cjw4PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRy
ZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmtBY3E4KEltcGxpY2l0QWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
ZGF4cjw4PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgc3RvcmVDb25kOChSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4
cjw4PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDgoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN0bHhyPDg+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7
CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmsxNihJbXBsaWNpdEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGR4cjwxNj4o
ZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRMaW5rQWNxMTYoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXhyPDE2PihkZXN0LCBleHRyYWN0U2lt
cGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kMTYo
UmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0eHI8MTY+KHJlc3VsdCwgc3JjLCBleHRy
YWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVD
b25kUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPDE2PihyZXN1bHQs
IHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRMaW5rMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8MzI+KGRlc3QsIGV4dHJhY3RTaW1wbGVB
ZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGlua0FjcTMyKElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sZGF4cjwzMj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZDMyKFJlZ2lzdGVySUQgc3JjLCBJbXBs
aWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zdHhyPDMyPihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRk
cmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDMyKFJlZ2lzdGVySUQg
c3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjwzMj4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVB
ZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGluazY0KEltcGxp
Y2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sZHhyPDY0PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmtBY3E2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8NjQ+
KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBzdG9yZUNvbmQ2NChSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4cjw2ND4o
cmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBzdG9yZUNvbmRSZWw2NChSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3RseHI8NjQ+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUzw4Pihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAg
ICBhdG9taWNTdHJvbmdDQVM8MTY+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwg
YWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMz
MihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTPDY0Pihjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNSZWxheGVkU3Ry
b25nQ0FTPDg+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVkU3Ryb25nQ0FTMTYoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgewor
ICAgICAgICBhdG9taWNSZWxheGVkU3Ryb25nQ0FTPDE2Pihjb25kLCBleHBlY3RlZEFuZFJlc3Vs
dCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljUmVsYXhlZFN0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzwz
Mj4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM2NChTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM8NjQ+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdW
YWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNo
QXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNXZWFrQ0FTPDg+KGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0
IGJyYW5jaEF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1dlYWtDQVM8MTY+KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IEp1bXBMaXN0IGJyYW5jaEF0b21pY1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1dlYWtDQVM8MzI+
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1dl
YWtDQVM8NjQ+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTOChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTPDg+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0
b21pY1JlbGF4ZWRXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzwxNj4oY29u
ZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21p
Y1JlbGF4ZWRXZWFrQ0FTPDMyPihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNSZWxheGVk
V2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM8NjQ+KGNvbmQsIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZGVwZW5kMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmVvcjwzMj4oZGVzdCwgc3JjLCBzcmMpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGRlcGVuZDY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5lb3I8NjQ+KGRlc3QsIHNyYywgc3JjKTsKKyAgICB9CisgICAgCiAg
ICAgLy8gTWlzYyBoZWxwZXIgZnVuY3Rpb25zLgogCiAgICAgLy8gSW52ZXJ0IGEgcmVsYXRpb25h
bCBjb25kaXRpb24sIGUuZy4gPT0gYmVjb21lcyAhPSwgPCBiZWNvbWVzID49LCBldGMuCkBAIC0z
ODc3LDYgKzQwOTksMTU4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBs
b2FkTGluayhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubGR4cjxkYXRhc2l6ZT4oZGVzdCwgc3JjKTsKKyAgICB9CisgICAgCisgICAg
dGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgbG9hZExpbmtBY3EoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXhyPGRh
dGFzaXplPihkZXN0LCBzcmMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNp
emU+CisgICAgdm9pZCBzdG9yZUNvbmQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwg
UmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdHhyPGRhdGFz
aXplPihzcmMsIGRlc3QsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBk
YXRhc2l6ZT4KKyAgICB2b2lkIHN0b3JlQ29uZFJlbChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0LCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0
bHhyPGRhdGFzaXplPihzcmMsIGRlc3QsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHRlbXBs
YXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIHNpZ25FeHRlbmQoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKKyAgICB9Cisg
ICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEp1bXAgYnJhbmNoKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0KTsKKyAgICB9Cisg
ICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgc2lnbkV4dGVuZDxkYXRhc2l6ZT4oZXhwZWN0ZWRBbmRSZXN1bHQsIGV4cGVj
dGVkQW5kUmVzdWx0KTsKKyAgICAgICAgCisgICAgICAgIFJlZ2lzdGVySUQgc2ltcGxlQWRkcmVz
cyA9IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpOworICAgICAgICBSZWdpc3RlcklEIHRt
cCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAg
CisgICAgICAgIExhYmVsIHJlbG9vcCA9IGxhYmVsKCk7CisgICAgICAgIGxvYWRMaW5rQWNxPGRh
dGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXApOworICAgICAgICBKdW1wIGZhaWx1cmUgPSBicmFu
Y2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBlY3RlZEFuZFJlc3VsdCwgdG1wKTsKKyAgICAgICAg
CisgICAgICAgIHN0b3JlQ29uZFJlbDxkYXRhc2l6ZT4obmV3VmFsdWUsIHNpbXBsZUFkZHJlc3Ms
IHJlc3VsdCk7CisgICAgICAgIGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXN1bHQpLmxpbmtUbyhy
ZWxvb3AsIHRoaXMpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjb25kID09IFN1Y2Nlc3Mp
LCByZXN1bHQpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIAorICAgICAg
ICBmYWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAgIG1vdmUodG1wLCBleHBlY3RlZEFuZFJlc3Vs
dCk7CisgICAgICAgIHN0b3JlQ29uZFJlbDxkYXRhc2l6ZT4odG1wLCBzaW1wbGVBZGRyZXNzLCBy
ZXN1bHQpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9uWmVybywgcmVzdWx0KS5saW5rVG8ocmVs
b29wLCB0aGlzKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoY29uZCA9PSBGYWlsdXJlKSwg
cmVzdWx0KTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluayh0aGlzKTsKKyAgICB9CisgICAg
CisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgYXRvbWljUmVsYXhlZFN0cm9u
Z0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4cGVjdGVkQW5kUmVzdWx0LCBl
eHBlY3RlZEFuZFJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIHNpbXBsZUFk
ZHJlc3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAg
ICAgIAorICAgICAgICBMYWJlbCByZWxvb3AgPSBsYWJlbCgpOworICAgICAgICBsb2FkTGluazxk
YXRhc2l6ZT4oc2ltcGxlQWRkcmVzcywgdG1wKTsKKyAgICAgICAgSnVtcCBmYWlsdXJlID0gYnJh
bmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHRtcCk7CisgICAgICAg
IAorICAgICAgICBzdG9yZUNvbmQ8ZGF0YXNpemU+KG5ld1ZhbHVlLCBzaW1wbGVBZGRyZXNzLCBy
ZXN1bHQpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9uWmVybywgcmVzdWx0KS5saW5rVG8ocmVs
b29wLCB0aGlzKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoY29uZCA9PSBTdWNjZXNzKSwg
cmVzdWx0KTsKKyAgICAgICAgSnVtcCBkb25lID0ganVtcCgpOworICAgICAgICAKKyAgICAgICAg
ZmFpbHVyZS5saW5rKHRoaXMpOworICAgICAgICBtb3ZlKHRtcCwgZXhwZWN0ZWRBbmRSZXN1bHQp
OworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjb25kID09IEZhaWx1cmUpLCByZXN1bHQpOwor
ICAgICAgICAKKyAgICAgICAgZG9uZS5saW5rKHRoaXMpOworICAgIH0KKyAgICAKKyAgICB0ZW1w
bGF0ZTxpbnQgZGF0YXNpemU+CisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljV2Vha0NBUyhTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgc2lnbkV4dGVu
ZDxkYXRhc2l6ZT4oZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKTsK
KyAgICAgICAgCisgICAgICAgIFJlZ2lzdGVySUQgc2ltcGxlQWRkcmVzcyA9IGV4dHJhY3RTaW1w
bGVBZGRyZXNzKGFkZHJlc3MpOworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgCisgICAgICAgIEp1bXBM
aXN0IHN1Y2Nlc3M7CisgICAgICAgIEp1bXBMaXN0IGZhaWx1cmU7CisKKyAgICAgICAgbG9hZExp
bmtBY3E8ZGF0YXNpemU+KHNpbXBsZUFkZHJlc3MsIHRtcCk7CisgICAgICAgIGZhaWx1cmUuYXBw
ZW5kKGJyYW5jaDxkYXRhc2l6ZT4oTm90RXF1YWwsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCB0bXAp
KTsKKyAgICAgICAgc3RvcmVDb25kUmVsPGRhdGFzaXplPihuZXdWYWx1ZSwgc2ltcGxlQWRkcmVz
cywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpOworICAgICAgICAKKyAgICAgICAgc3dpdGNoIChjb25k
KSB7CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAgICAgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGJy
YW5jaFRlc3QzMihaZXJvLCBleHBlY3RlZEFuZENsb2JiZXJlZCkpOworICAgICAgICAgICAgZmFp
bHVyZS5saW5rKHRoaXMpOworICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgICAgIGNh
c2UgRmFpbHVyZToKKyAgICAgICAgICAgIGZhaWx1cmUuYXBwZW5kKGJyYW5jaFRlc3QzMihOb25a
ZXJvLCBleHBlY3RlZEFuZENsb2JiZXJlZCkpOworICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmU7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBKdW1wTGlz
dCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgc2lnbkV4dGVuZDxkYXRhc2l6ZT4oZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKTsKKyAgICAgICAgCisgICAgICAgIFJlZ2lz
dGVySUQgc2ltcGxlQWRkcmVzcyA9IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpOworICAg
ICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKTsKKyAgICAgICAgCisgICAgICAgIEp1bXBMaXN0IHN1Y2Nlc3M7CisgICAgICAgIEp1
bXBMaXN0IGZhaWx1cmU7CisKKyAgICAgICAgbG9hZExpbms8ZGF0YXNpemU+KHNpbXBsZUFkZHJl
c3MsIHRtcCk7CisgICAgICAgIGZhaWx1cmUuYXBwZW5kKGJyYW5jaDxkYXRhc2l6ZT4oTm90RXF1
YWwsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCB0bXApKTsKKyAgICAgICAgc3RvcmVDb25kPGRhdGFz
aXplPihuZXdWYWx1ZSwgc2ltcGxlQWRkcmVzcywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpOworICAg
ICAgICAKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAg
ICAgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBleHBlY3RlZEFuZENs
b2JiZXJlZCkpOworICAgICAgICAgICAgZmFpbHVyZS5saW5rKHRoaXMpOworICAgICAgICAgICAg
cmV0dXJuIHN1Y2Nlc3M7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAgIGZhaWx1
cmUuYXBwZW5kKGJyYW5jaFRlc3QzMihOb25aZXJvLCBleHBlY3RlZEFuZENsb2JiZXJlZCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIFJlZ2lzdGVy
SUQgZXh0cmFjdFNpbXBsZUFkZHJlc3MoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3Mu
YmFzZTsKKyAgICAgICAgCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihh
ZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpKTsKKyAgICAgICAgYWRkNjQoYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICByZXR1cm4gbWVtb3J5VGVtcFJlZ2lzdGVyOworICAgIH0KIAogICAgIEp1bXAganVt
cEFmdGVyRmxvYXRpbmdQb2ludENvbXBhcmUoRG91YmxlQ29uZGl0aW9uIGNvbmQpCiAgICAgewpA
QCAtMzk4OSw2ICs0MzYzLDI0IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBNYWNyb0Fzc2VtYmxlckFS
TTY0OjoKICAgICBtX2Fzc2VtYmxlci5zdHVyaChydCwgcm4sIHNpbW0pOwogfQogCit0ZW1wbGF0
ZTw+CitpbmxpbmUgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDg+KFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCit7CisgICAgc2lnbkV4dGVuZDhUbzMyKHNyYywg
ZGVzdCk7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnNpZ25FeHRlbmQ8MTY+KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCit7CisgICAg
c2lnbkV4dGVuZDE2VG8zMihzcmMsIGRlc3QpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgTWFj
cm9Bc3NlbWJsZXJBUk02NDo6SnVtcCBNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2g8NjQ+KFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0
KQoreworICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmgJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTcx
LDYgKzE3MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfbXIoc3JjLm9m
ZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYWRkMzIoQmFzZUluZGV4
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkbF9t
cihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAg
IH0KKwogICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
KTsKQEAgLTI1MSwxNiArMjU2LDcxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5k
bF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYW5k
MzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kbF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRl
c3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZDgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIGFuZDgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0
LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIo
QWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LmFuZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQg
YW5kMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYW5kbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2Nh
bGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRk
cmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9pbShpbW0ubV92
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBh
bmQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
YW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYW5kd19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kMTYoVHJ1
c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5hbmR3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCBhbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0u
bV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZv
aWQgYW5kOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZGJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSks
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQg
b3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAob3AxID09IG9wMikKQEAg
LTQ1Niw2ICs1MTYsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5uZWdsX20oc3Jj
RGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBuZWczMihCYXNl
SW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2xfbShzcmNEZXN0
Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsKKyAg
ICB9CisKKyAgICB2b2lkIG5lZzE2KEFkZHJlc3Mgc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLm5lZ3dfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsKKyAgICB9CisK
KyAgICB2b2lkIG5lZzE2KEJhc2VJbmRleCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubmVnd19tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UsIHNyY0Rlc3QuaW5kZXgs
IHNyY0Rlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnOChBZGRyZXNzIHNyY0Rlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdiX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rl
c3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWc4KEJhc2VJbmRleCBzcmNEZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnYl9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJh
c2UsIHNyY0Rlc3QuaW5kZXgsIHNyY0Rlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3Iz
MihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIub3JsX3JyKHNyYywgZGVzdCk7CkBAIC00NzEsMTYgKzU1Niw3MSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwog
ICAgIH0KIAorICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoUmVn
aXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9y
d19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3Ix
NihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5vcndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJ
bmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX3JtKHNyYywgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAg
dm9pZCBvcjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5vcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAor
ICAgIHZvaWQgb3IzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5vcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKGlt
bS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2
b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5vcmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZv
aWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5vcndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1
c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5vcndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5vcmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92
YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQg
b3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIub3JiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsK
KyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAob3AxID09IG9wMikKQEAgLTY1NCwx
NiArNzk0LDcxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBz
dWIxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zdWJ3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBzdWI4KFRydXN0
ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN1YmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX2lt
KGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19p
bShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZv
aWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSks
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJh
c2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9tcihzcmMub2Zmc2V0
LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZv
aWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLnN1Ymxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAK
KyAgICB2b2lkIHN1YjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5zdWJ3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7Cisg
ICAgfQorCisgICAgdm9pZCBzdWI4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBz
dWIxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdWJ3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwg
ZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBzdWI4KFJlZ2lzdGVySUQgc3JjLCBCYXNl
SW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmJfcm0oc3JjLCBkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAg
ICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci54b3JsX3JyKHNyYywgZGVzdCk7CkBAIC02NzcsNiArODcyLDUwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfaW0oaW1tLm1fdmFsdWUsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgeG9yMzIoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpZiAoaW1tLm1fdmFsdWUg
PT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RsX20oZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnhvcmxfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBz
dGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChpbW0ubV92YWx1
ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yd19pbShp
bW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4
b3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIGlt
bS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBp
ZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZv
aWQgeG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBp
bW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBp
ZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgeG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSk7
CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
Lm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9pbShpbW0ubV92YWx1
ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCkBAIC02OTAsMTEgKzkyOSw0MSBA
QCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwg
ZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgc3JjLCBCYXNl
SW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfcm0oc3JjLCBkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIHhvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci54b3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci54b3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4KFJlZ2lz
dGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3Ji
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhvcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54b3JsX21yKHNyYy5vZmZzZXQsIHNy
Yy5iYXNlLCBkZXN0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCB4b3IzMihCYXNlSW5kZXggc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JsX21yKHNy
Yy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQor
ICAgIAogICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAob3AxID09IG9wMikKQEAgLTc0MSw2ICsx
MDEwLDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgbm90MzIoQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RsX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwg
ZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBub3QxNihBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3QxNihCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0
LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDgoQWRkcmVzcyBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgIH0KKworICAgIHZvaWQgbm90OChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4
LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHNxcnREb3VibGUoRlBSZWdpc3RlcklE
IHNyYywgRlBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNxcnRz
ZF9ycihzcmMsIGRzdCk7CkBAIC0xMDcxLDQyICsxMzY1LDIzIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewotI2lm
IENQVShYODYpCi0gICAgICAgIC8vIE9uIDMyLWJpdCB4ODYgd2UgY2FuIG9ubHkgc3RvcmUgZnJv
bSB0aGUgZmlyc3QgNCByZWdpc3RlcnM7Ci0gICAgICAgIC8vIGVzcC4uZWRpIGFyZSBtYXBwZWQg
dG8gdGhlICdoJyByZWdpc3RlcnMhCi0gICAgICAgIGlmIChzcmMgPj0gNCkgewotICAgICAgICAg
ICAgLy8gUGljayBhIHRlbXBvcmFyeSByZWdpc3Rlci4KLSAgICAgICAgICAgIFJlZ2lzdGVySUQg
dGVtcCA9IGdldFVudXNlZFJlZ2lzdGVyKGFkZHJlc3MpOwotCi0gICAgICAgICAgICAvLyBTd2Fw
IHRvIHRoZSB0ZW1wb3JhcnkgcmVnaXN0ZXIgdG8gcGVyZm9ybSB0aGUgc3RvcmUuCi0gICAgICAg
ICAgICBzd2FwKHNyYywgdGVtcCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3JtKHRl
bXAsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOwotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybShzcmMsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
OwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRy
ZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAgICAgICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNh
biBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOwotICAgICAgICAvLyBlc3Au
LmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQotICAgICAgICBpZiAoc3JjID49
IDQpIHsKLSAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCi0gICAgICAg
ICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRSZWdpc3RlcihhZGRyZXNzKTsKLQotICAg
ICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhl
IHN0b3JlLgotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubW92d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKLSAgICAg
ICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
I2VuZGlmCiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlMTYoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X2lt
KHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBzdG9yZTE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUp
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CiAKICAgICAvLyBGbG9hdGlu
Zy1wb2ludCBvcGVyYXRpb246CiAgICAgLy8KQEAgLTI3NDUsNzQgKzMwMjAsOTAxIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwogICAgICAgICBtX2Fzc2VtYmxlci5vcmxf
aW0oMCwgMCwgWDg2UmVnaXN0ZXJzOjplc3ApOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CiAKLSAgICAvLyBXZSB0YWtl
IHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwgc3RvcmVzLiBT
bywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KLSAgICB2b2lkIHN0b3JlRmVuY2UoKQorICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQogICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBp
dCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4
Ni4KLSAgICB2b2lkIGxvYWRGZW5jZSgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBb
Jl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVt
cChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBk
ZXN0aW5hdGlvbikKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICBYODZB
c3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRy
ZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICBhdG9taWNT
dHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9Ci0gICAgCi0gICAgc3RhdGlj
IHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKworICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3Vs
dCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBwdHJkaWZm
X3QgcGF0Y2hhYmxlSnVtcFNpemUoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OnBhdGNoYWJsZUp1bXBTaXplKCk7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBt
X2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAgIH0KIAotICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzgoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgaWYgKHNfc3NlNF8xQ2hlY2tT
dGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpCi0gICAgICAgICAgICB1cGRhdGVF
YXgxRWN4RmxhZ3MoKTsKLSAgICAgICAgcmV0dXJuIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJ
RENoZWNrU3RhdGU6OlNldDsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
QVZYKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewotICAg
ICAgICAvLyBBVlggc3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVzc2lvbnMgYW5kIHRob3Nl
IHJlZ3Jlc3Npb25zIGNhbiBiZSBtYXNzaXZlLgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIu
Y21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCB1
cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQogICAgIHsKLSAgICAgICAgaW50IGZsYWdzID0gMDsKLSNpZiBDT01QSUxFUihNU1ZDKQotICAg
ICAgICBpbnQgY3B1SW5mb1s0XTsKLSAgICAgICAgX19jcHVpZChjcHVJbmZvLCAweDEpOwotICAg
ICAgICBmbGFncyA9IGNwdUluZm9bMl07Ci0jZWxpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCi0j
aWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgYXNtICgKLSAgICAgICAgICAgICJtb3ZsICQweDEsICUl
ZWF4OyIKLSAgICAgICAgICAgICJjcHVpZDsiCi0gICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7
IgotICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAg
IDogIiVlYXgiLCAiJWVieCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICApOwotI2Vsc2UK
LSAgICAgICAgYXNtICgKLSAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKLSAgICAgICAg
ICAgICJwdXNobCAlJWVieDsiCi0gICAgICAgICAgICAiY3B1aWQ7IgotICAgICAgICAgICAgInBv
cGwgJSVlYng7IgotICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDog
Ij1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlY3gi
LCAiJWVkeCIKLSAgICAgICAgICAgICk7Ci0jZW5kaWYKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
KGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTMTYoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJv
bmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQs
IFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAg
ICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29u
ZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJy
YW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hB
dG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVy
LmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hB
dG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQor
CisgICAgLy8gSWYgeW91IHVzZSB3ZWFrIENBUywgeW91IGNhbm5vdCByZWx5IG9uIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkIHRvIGhhdmUgYW55IHBhcnRpY3VsYXIgdmFsdWUgYWZ0ZXIKKyAgICAvLyB0
aGlzIGNvbXBsZXRlcy4gT24geDg2LCBpdCB3aWxsIGNvbnRhaW4gdGhlIHJlc3VsdCBvZiB0aGUg
c3Ryb25nIENBUy4gT24gQVJNLCBpdCB3aWxsIHN0aWxsIGhhdmUKKyAgICAvLyB0aGUgZXhwZWN0
ZWQgdmFsdWUuCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCBy
ZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzE2KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsK
KyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NB
UzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBh
dG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisg
ICAgdm9pZCBhdG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMy
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ry
b25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOwor
ICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVz
cyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJl
c3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hB
dG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTOChTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhl
ZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJ
RCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2
b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMx
Nihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAg
ICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NB
UzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRv
bWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29u
ZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3Mp
OworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM4KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRX
ZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9t
aWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJy
YW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNv
bmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljQWRkOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhZGQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQWRkOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFkZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQWRkMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YWRkMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQzMihpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhZGQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQz
MihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWI4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
c3ViOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFRydXN0ZWRJbW0zMiBpbW0s
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBzdWIxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N1YjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgc3ViMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNTdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIzMihSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWIzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMy
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNBbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBbmQ4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgYW5kMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNBbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYoaW1tLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
bmQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFJl
Z2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMyKGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQW5kMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMy
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljT3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I4KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgb3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljT3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihSZWdpc3Rl
cklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBvcjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljT3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3Iz
MihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMzIocmVnLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoUmVnaXN0ZXJJRCByZWcsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgeG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IxNihpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hvcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Ix
NihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgeG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNYb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihSZWdpc3RlcklEIHJlZywg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hv
cjMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNOZWc4KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnOChhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNOZWc4KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc4KGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY05lZzE2KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMTYoYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljTmVnMTYoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2KGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY05lZzMyKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMzIoYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljTmVnMzIoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMyKGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY05vdDgoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05vdDgoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTm90MTYoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBub3QxNihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNOb3QxNihCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTm90MzIoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBub3QzMihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNOb3QzMihCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFk
ZGJfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYY2hnQWRkOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDE2
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGR3X3JtKHJlZywgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0Fk
ZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZHdfcm0ocmVnLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMzIoUmVnaXN0ZXJJRCByZWcs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3Jt
KHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljWGNoZzgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnYl9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJl
c3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGcxNihSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGcxNihSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGd3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWGNoZzMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhj
aGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWGNoZzMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
eGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOChBZGRyZXNz
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDgoc3JjLCBkZXN0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBsb2FkOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDhTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4U2lnbmVkRXh0ZW5kVG8z
MihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNihBZGRyZXNzIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDE2KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKEJhc2VJbmRl
eCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNlNpZ25lZEV4dGVu
ZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMzIoQWRkcmVz
cyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQzMihzcmMsIGRlc3Qp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihCYXNlSW5kZXggc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7
CisgICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3Jl
UmVsOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9y
ZTgoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDgoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KGltbSwgZGVzdCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KGltbSwgZGVzdCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgc3RvcmUxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0
b3JlUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
c3RvcmUxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUxNihpbW0s
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KGltbSwgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHN0b3JlUmVsMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgc3RvcmUzMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3Jl
UmVsMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3Rv
cmUzMihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKGltbSwg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQg
cHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBzdG9yZXMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2
LgorICAgIHZvaWQgc3RvcmVGZW5jZSgpCisgICAgeworICAgIH0KKworICAgIC8vIFdlIHRha2Ug
dGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBsb2Fkcy4gU28s
IGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBsb2FkRmVuY2UoKQorICAgIHsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5z
dHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAg
ICAgICBYODZBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1
dGFibGVBZGRyZXNzKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
OworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3QgcGF0Y2hhYmxlSnVtcFNpemUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6cGF0Y2hhYmxlSnVtcFNpemUoKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpCisg
ICAgeworICAgICAgICBpZiAoc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6
Tm90Q2hlY2tlZCkKKyAgICAgICAgICAgIHVwZGF0ZUVheDFFY3hGbGFncygpOworICAgICAgICBy
ZXR1cm4gc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAgIH0K
KworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQVZYKCkKKyAgICB7CisgICAgICAgIC8vIEFWWCBz
dGlsbCBjYXVzZXMgbXlzdGVyaW91cyByZWdyZXNzaW9ucyBhbmQgdGhvc2UgcmVncmVzc2lvbnMg
Y2FuIGJlIG1hc3NpdmUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0
aWMgdm9pZCB1cGRhdGVFYXgxRWN4RmxhZ3MoKQorICAgIHsKKyAgICAgICAgaW50IGZsYWdzID0g
MDsKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgICAgICBpbnQgY3B1SW5mb1s0XTsKKyAgICAgICAg
X19jcHVpZChjcHVJbmZvLCAweDEpOworICAgICAgICBmbGFncyA9IGNwdUluZm9bMl07CisjZWxp
ZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgYXNtICgK
KyAgICAgICAgICAgICJtb3ZsICQweDEsICUlZWF4OyIKKyAgICAgICAgICAgICJjcHVpZDsiCisg
ICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAgICAgICAgICAgOiAiPWciIChmbGFncykK
KyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVlYXgiLCAiJWVieCIsICIlZWN4IiwgIiVl
ZHgiCisgICAgICAgICAgICApOworI2Vsc2UKKyAgICAgICAgYXNtICgKKyAgICAgICAgICAgICJt
b3ZsICQweDEsICUlZWF4OyIKKyAgICAgICAgICAgICJwdXNobCAlJWVieDsiCisgICAgICAgICAg
ICAiY3B1aWQ7IgorICAgICAgICAgICAgInBvcGwgJSVlYng7IgorICAgICAgICAgICAgIm1vdmwg
JSVlY3gsICUwOyIKKyAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCisgICAgICAgICAgICA6Cisg
ICAgICAgICAgICA6ICIlZWF4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICk7CisjZW5k
aWYKICNlbmRpZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCiAgICAgICAgIHNfc3NlNF8xQ2hl
Y2tTdGF0ZSA9IChmbGFncyAmICgxIDw8IDE5KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQ
VUlEQ2hlY2tTdGF0ZTo6Q2xlYXI7CiAgICAgICAgIHNfYXZ4Q2hlY2tTdGF0ZSA9IChmbGFncyAm
ICgxIDw8IDI4KSkgPyBDUFVJRENoZWNrU3RhdGU6OlNldCA6IENQVUlEQ2hlY2tTdGF0ZTo6Q2xl
YXI7CkBAIC0yODMzLDYgKzM5MzUsMTggQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8WDg2QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOwogICAgIH0KIAorICAgIFg4
NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihTdGF0dXNDb25kaXRpb24gY29uZCkK
KyAgICB7CisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6Cisg
ICAgICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25FOworICAgICAgICBjYXNl
IEZhaWx1cmU6CisgICAgICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25ORTsK
KyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25FOworICAgIH0KKwogICAgIHZvaWQgc2V0
MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICNpZiBDUFUoWDg2KQpAQCAtMjkyNyw2ICs0MDQxLDM1IEBAIHByb3RlY3RlZDoKICAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoc2l6ZU9mUmVnaXN0ZXIpLCBkc3QpOwogICAgICAgICBzcmNJc05v
blplcm8ubGluayh0aGlzKTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCByZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1
bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6
OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVuYygpOworICAg
ICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAg
IHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTKFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4
cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgZnVuYygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0
LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7Cisg
ICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhw
ZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgcmV0dXJuIEp1bXAo
bV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KIAogcHJpdmF0ZToK
ICAgICAvLyBPbmx5IE1hY3JvQXNzZW1ibGVyWDg2IHNob3VsZCBiZSB1c2luZyB0aGUgZm9sbG93
aW5nIG1ldGhvZDsgU1NFMiBpcyBhbHdheXMgYXZhaWxhYmxlIG9uCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjQs
MTEgKzI2NCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfbXIoc3JjLm9m
ZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYWRkNjQoQmFzZUluZGV4
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9t
cihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAg
IH0KKwogICAgIHZvaWQgYWRkNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwg
ZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFk
ZDY0KEFic29sdXRlQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihzcmMubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CkBAIC0z
MDYsNiArMzE2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfaW0o
aW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAg
IHZvaWQgYWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmlu
Y3FfbShhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9pbShp
bW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1t
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpAQCAtMzQyLDExICszNjAs
NDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX3JyKHNyYywgZGVzdCk7CiAg
ICAgfQogCisgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
YW5kNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOworICAgIH0KKworICAg
IHZvaWQgYW5kNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBz
cmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9p
cihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmQ2NChUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRx
X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kcV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhbmQ2NChUcnVz
dGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgaW50cHRy
X3QgaW50VmFsdWUgPSBpbW0uYXNJbnRwdHIoKTsKQEAgLTU1MiwxMSArNjAwLDUxIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVncV9yKGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQg
bmVnNjQoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVncV9tKGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnNjQoQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX20oZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjY0
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5vcnFfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJ
RCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I2NChSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5v
cnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwg
ZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9tcihzcmMub2Zmc2V0LCBzcmMu
YmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgb3I2
NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5vcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjY0
KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIGlm
IChpbW0ubV92YWx1ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKQpAQCAt
NjE5LDE2ICs3MDcsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ltKGlt
bS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2
b2lkIHN1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuc3VicV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAg
dm9pZCBzdWI2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIuc3VicV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCBzdWI2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5k
ZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3VicV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2Nh
bGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcnIoc3JjLCBkZXN0KTsKQEAg
LTY1MSw2ICs3NTQsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JxX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCB4b3I2NChSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54
b3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChCYXNlSW5kZXggc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9p
ZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci54b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAg
dm9pZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci54b3JxX2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0KTsKQEAgLTY2
Niw2ICs3OTQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5ub3RxX20oZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBub3Q2NChCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdHFfbShkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGxvYWQ2NChJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIubW92cV9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsK
QEAgLTcyNSw2ICs4NTgsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2kz
Mm0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAor
ICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAg
fQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF8zMl82NChpbW0ubV92
YWx1ZSkpIHsKQEAgLTEyOTQsNyArMTQzMiwyNzUgQEAgcHVibGljOgogICAgICAgICBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3Jh
dGNoUmVnaXN0ZXIoKSk7CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSksIG1hc2s4KTsKICAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0p
OworICAgIH0KIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRv
bWljU3Ryb25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
KGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJv
bmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVM2
NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9h
c3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1i
bGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9t
aWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAg
dm9pZCBhdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNz
LCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0KGNv
bmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAg
ICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9u
Z0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7Cisg
ICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
YXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVM2
NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KGNvbmQs
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAg
SnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAg
IH0KKworICAgIHZvaWQgYXRvbWljQWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2NChp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBhZGQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBzdWI2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1N1YjY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFu
ZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1
c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFuZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQW5kNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQocmVnLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChSZWdpc3RlcklEIHJlZywg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFuZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
T3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBvcjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljT3I2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjY0
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3Rl
ZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIHhvcjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWG9yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQocmVnLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChSZWdpc3RlcklEIHJlZywgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHhvcjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVn
NjQoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBuZWc2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc2
NChCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90
NjQoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBub3Q2NChhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q2
NChCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNo
Z0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRxX3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZ0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZHFfcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnNjQoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnNjQoUmVnaXN0ZXJJRCByZWcs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRBY3E2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbG9hZDY0KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTY0KEJh
c2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJRCBzcmMs
IEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlNjQoc3JjLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIHN0b3JlNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBzdG9yZVJlbDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7Cisg
ICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJl
bDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3Rv
cmU2NChpbW0sIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9V
aW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIuY3Z0dHNkMnNpcV9ycihzcmMsIGRlc3QpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAyMTMzNzkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTAsMTYgKzE5MCwyMCBAQCBwcml2YXRlOgogICAgICAgICBPUF9BRERf
RXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgwMSwKICAgICAgICAgT1BfQUREX0d2RXYgICAg
ICAgICAgICAgICAgICAgICA9IDB4MDMsCiAgICAgICAgIE9QX0FERF9FQVhJdiAgICAgICAgICAg
ICAgICAgICAgPSAweDA1LAorICAgICAgICBPUF9PUl9FdkdiICAgICAgICAgICAgICAgICAgICAg
ID0gMHgwOCwKICAgICAgICAgT1BfT1JfRXZHdiAgICAgICAgICAgICAgICAgICAgICA9IDB4MDks
CiAgICAgICAgIE9QX09SX0d2RXYgICAgICAgICAgICAgICAgICAgICAgPSAweDBCLAogICAgICAg
ICBPUF9PUl9FQVhJdiAgICAgICAgICAgICAgICAgICAgID0gMHgwRCwKICAgICAgICAgT1BfMkJZ
VEVfRVNDQVBFICAgICAgICAgICAgICAgICA9IDB4MEYsCisgICAgICAgIE9QX0FORF9FdkdiICAg
ICAgICAgICAgICAgICAgICAgPSAweDIwLAogICAgICAgICBPUF9BTkRfRXZHdiAgICAgICAgICAg
ICAgICAgICAgID0gMHgyMSwKICAgICAgICAgT1BfQU5EX0d2RXYgICAgICAgICAgICAgICAgICAg
ICA9IDB4MjMsCisgICAgICAgIE9QX1NVQl9FdkdiICAgICAgICAgICAgICAgICAgICAgPSAweDI4
LAogICAgICAgICBPUF9TVUJfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgyOSwKICAgICAg
ICAgT1BfU1VCX0d2RXYgICAgICAgICAgICAgICAgICAgICA9IDB4MkIsCiAgICAgICAgIE9QX1NV
Ql9FQVhJdiAgICAgICAgICAgICAgICAgICAgPSAweDJELAogICAgICAgICBQUkVfUFJFRElDVF9C
UkFOQ0hfTk9UX1RBS0VOICAgID0gMHgyRSwKKyAgICAgICAgT1BfWE9SX0V2R2IgICAgICAgICAg
ICAgICAgICAgICA9IDB4MzAsCiAgICAgICAgIE9QX1hPUl9Fdkd2ICAgICAgICAgICAgICAgICAg
ICAgPSAweDMxLAogICAgICAgICBPUF9YT1JfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgz
MywKICAgICAgICAgT1BfWE9SX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MzUsCkBAIC0y
MjMsNiArMjI3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfR1JPVVAxX0V2SWIgICAgICAgICAg
ICAgICAgICA9IDB4ODMsCiAgICAgICAgIE9QX1RFU1RfRWJHYiAgICAgICAgICAgICAgICAgICAg
PSAweDg0LAogICAgICAgICBPUF9URVNUX0V2R3YgICAgICAgICAgICAgICAgICAgID0gMHg4NSwK
KyAgICAgICAgT1BfWENIR19FdkdiICAgICAgICAgICAgICAgICAgICA9IDB4ODYsCiAgICAgICAg
IE9QX1hDSEdfRXZHdiAgICAgICAgICAgICAgICAgICAgPSAweDg3LAogICAgICAgICBPUF9NT1Zf
RWJHYiAgICAgICAgICAgICAgICAgICAgID0gMHg4OCwKICAgICAgICAgT1BfTU9WX0V2R3YgICAg
ICAgICAgICAgICAgICAgICA9IDB4ODksCkBAIC0yNTIsNiArMjU3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgUFJFX1NTRV9GMiAgICAgICAgICAgICAgICAgICAgICA9IDB4RjIsCiAgICAgICAgIFBS
RV9TU0VfRjMgICAgICAgICAgICAgICAgICAgICAgPSAweEYzLAogICAgICAgICBPUF9ITFQgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMHhGNCwKKyAgICAgICAgT1BfR1JPVVAzX0ViICAgICAg
ICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9QX0dST1VQM19FYkliICAgICAgICAgICAg
ICAgICAgPSAweEY2LAogICAgICAgICBPUF9HUk9VUDNfRXYgICAgICAgICAgICAgICAgICAgID0g
MHhGNywKICAgICAgICAgT1BfR1JPVVAzX0V2SXogICAgICAgICAgICAgICAgICA9IDB4RjcsIC8v
IE9QX0dST1VQM19FdiBoYXMgYW4gaW1tZWRpYXRlLCB3aGVuIGluc3RydWN0aW9uIGlzIGEgdGVz
dC4gCkBAIC0yOTAsNiArMjk2LDggQEAgcHJpdmF0ZToKICAgICAgICAgT1BfU0VUQ0MgICAgICAg
ICAgICA9IDB4OTAsCiAgICAgICAgIE9QMl8zQllURV9FU0NBUEVfQUUgPSAweEFFLAogICAgICAg
ICBPUDJfSU1VTF9HdkV2ICAgICAgID0gMHhBRiwKKyAgICAgICAgT1AyX0NNUFhDSEdiICAgICAg
ICA9IDB4QjAsCisgICAgICAgIE9QMl9DTVBYQ0hHICAgICAgICAgPSAweEIxLAogICAgICAgICBP
UDJfTU9WWlhfR3ZFYiAgICAgID0gMHhCNiwKICAgICAgICAgT1AyX0JTRiAgICAgICAgICAgICA9
IDB4QkMsCiAgICAgICAgIE9QMl9UWkNOVCAgICAgICAgICAgPSAweEJDLApAQCAtMjk4LDYgKzMw
Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9NT1ZTWF9HdkViICAgICAgPSAweEJFLAogICAg
ICAgICBPUDJfTU9WWlhfR3ZFdyAgICAgID0gMHhCNywKICAgICAgICAgT1AyX01PVlNYX0d2RXcg
ICAgICA9IDB4QkYsCisgICAgICAgIE9QMl9YQUREYiAgICAgICAgICAgPSAweEMwLAorICAgICAg
ICBPUDJfWEFERCAgICAgICAgICAgID0gMHhDMSwKICAgICAgICAgT1AyX1BFWFRSV19HZFVkSWIg
ICA9IDB4QzUsCiAgICAgICAgIE9QMl9QU0xMUV9VZHFJYiAgICAgPSAweDczLAogICAgICAgICBP
UDJfUFNSTFFfVWRxSWIgICAgID0gMHg3MywKQEAgLTQ0MCw2ICs0NTAsMTEgQEAgcHVibGljOgog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgb2Zm
c2V0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCBhZGRsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BRERfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAogI2lmICFDUFUoWDg2XzY0KQog
ICAgIHZvaWQgYWRkbF9tcihjb25zdCB2b2lkKiBhZGRyLCBSZWdpc3RlcklEIGRzdCkKICAgICB7
CkBAIC01NjIsMTEgKzU3NywyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDY0KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9p
ZCBhZGRxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICB9CisKICAgICB2b2lkIGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0FERF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBhZGRxX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0FERF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
ICAgICB2b2lkIGFkZHFfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtNTkxLDYgKzYxNiwxNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAgICAg
ICB9CiAgICAgfQorCisgICAgdm9pZCBhZGRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQURELCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQor
ICAgIH0KICNlbHNlCiAgICAgdm9pZCBhZGRsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIp
CiAgICAgewpAQCAtNjE0LDExICs2NTAsNDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFuZGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgYW5kbF9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICBhbmRsX3JtKHNyYywgb2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBhbmRsX3JtKHNyYywgb2Zmc2V0LCBiYXNl
LCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kYl9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgfQorCiAgICAgdm9pZCBhbmRsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTY0MSw2
ICs3MDksNTMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBhbmRsX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkp
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JP
VVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmR3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2b2lkIGFuZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lH
Tl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwg
R1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZv
aWQgYW5kYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9B
TkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICB9CisKKyAgICB2b2lkIGFuZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0p
OworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBhbmRxX3JyKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC02NTcsNiArNzcyLDQ4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAg
ICB9CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FO
RF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX21yKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBS
ZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0FORF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAg
ICB2b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FORF9Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FORF9Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFu
ZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZz
ZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmRxX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkp
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBH
Uk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBhbmRsX2lt
KGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewpAQCAtNzAzLDYgKzg2MCwxMSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDVf
RXYsIEdST1VQMV9PUF9BREQsIGJhc2UsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBpbmNx
X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDVfRXYs
IEdST1VQMV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5k
aWYgLy8gQ1BVKFg4Nl82NCkKIAogICAgIHZvaWQgbmVnbF9yKFJlZ2lzdGVySUQgZHN0KQpAQCAt
NzE1LDYgKzg3NywxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9ORUcsIGRzdCk7CiAgICAgfQorCisgICAg
dm9pZCBuZWdxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgbmVncV9tKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG5lZ2xfbShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCkBAIC03MjIsNiArODk0LDMzIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05F
RywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG5lZ2xfbShpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9ORUcsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3dfbShpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5lZ2xfbShvZmZzZXQsIGJhc2UpOworICAg
IH0KKworICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4
KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWdsX20ob2Zmc2V0LCBiYXNlLCBpbmRleCwg
c2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnYl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIs
IEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBuZWdiX20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9V
UDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9p
ZCBub3RsX3IoUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBkc3QpOwpAQCAtNzMyLDYgKzkzMSwz
MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYs
IEdST1VQM19PUF9OT1QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBub3RsX20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9V
UDNfT1BfTk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9p
ZCBub3R3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBub3RsX20ob2Zmc2V0
LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbm90bF9tKG9mZnNldCwg
YmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGJfbShpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAg
IHZvaWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
IH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBub3RxX3IoUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewpAQCAtNzQyLDYgKzk2OCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIG9mZnNl
dCk7CiAgICAgfQorCisgICAgdm9pZCBub3RxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgb3JsX3JyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTc1NCwxMSArOTg1LDQzIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0
KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAg
dm9pZCBvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSk7CisgICAgfQorCisg
ICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBvcmxfcm0oc3JjLCBvZmZzZXQs
IGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcmJfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQor
CisgICAgdm9pZCBvcmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKwogICAgIHZvaWQgb3JsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTc4NCwx
MiArMTA0NywxMDEgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBvcmxf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1t
KSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBH
Uk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBvcndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
dkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2b2lkIG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VY
VEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb3Ji
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX09SLCBiYXNl
LCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQor
CisgICAgdm9pZCBvcmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQor
CiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG9ycV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9F
dkd2LCBzcmMsIGRzdCk7CiAgICAgfQogCisgICAgdm9pZCBvcnFfbXIoaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX09SX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAg
ICB2b2lkIG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX09SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgb3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBi
YXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
R1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lk
IG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFf
RXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09Q
X09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBvcnFfaXIo
aW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhU
RU5EXzhfMzIoaW1tKSkgewpAQCAtODMxLDExICsxMTgzLDQzIEBAIHB1YmxpYzoKICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAg
ICAgfQogCisgICAgdm9pZCBzdWJsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2
b2lkIHN1Ymxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIHN1Yndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BF
UkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpF
KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAg
IH0KKworICAgIHZvaWQgc3ViYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3VibF9pcihpbnQgaW1tLCBSZWdpc3RlcklE
IGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBA
IC04NjEsNiArMTI0NSw1MyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lk
IHN1YmxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
dkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9T
VUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1YndfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBi
YXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc3Vid19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
MV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQor
CisgICAgdm9pZCBzdWJiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JP
VVAxX09QX1NVQiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgIH0KKworICAgIHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1NVQiwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGU4KGltbSk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIHN1YnFfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTg3MiwxMSArMTMwMywyMSBA
QCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9HdkV2LCBk
c3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJxX21yKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklE
IGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9HdkV2
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
YnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1NVQl9Fdkd2LCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YnFfaXIoaW50
IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgewpAQCAtOTAxLDYgKzEzNDIsMTcgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZv
aWQgc3VicV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9V
UDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAjZWxzZQogICAgIHZv
aWQgc3VibF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKQEAgLTkyNCwxMSAr
MTM3NiwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1Jf
R3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9ybF9tcihpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVn
aXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9S
X0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZv
aWQgeG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9Fdkd2LCBzcmMsIGJh
c2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHdiwgc3JjLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC05NDAsNiArMTQwMiw3NSBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHhvcmxfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2b2lkIHhvcndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVf
T1BFUkFORF9TSVpFKTsKKyAgICAgICAgeG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgeG9ybF9ybShzcmMs
IG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcndfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
MV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQor
CisgICAgdm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0V2R2Is
IHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcmJfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9Fdkdi
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhv
cmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
fQorCisgICAgdm9pZCB4b3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAg
ICB9CisKICAgICB2b2lkIHhvcmxfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewog
ICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTc0LDExICsxNTA1
LDQ3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICB2b2lkIHhvcnFfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdS
T1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgeG9ycV9pbShp
bnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JP
VVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgdm9pZCB4b3JxX3JtKFJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQp
OwogICAgIH0KIAorICAgIHZvaWQgeG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JxX21yKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYsIGRlc3QsIGJhc2UsIG9mZnNldCk7CisgICAg
fQorCisgICAgdm9pZCB4b3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfR3ZFdiwgZGVzdCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBsemNudF9ycihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNTg2LDExICsyMTUzLDM4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgZHN0
KTsKICAgICB9CiAKKyAgICB2b2lkIHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfWENIR19FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hn
Yl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWENIR19FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIHhjaGd3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRf
U0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhjaGd3X3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4Y2hnbF9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIHhjaGdxX3Jy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC0xNjA2LDYgKzIyMDAs
MTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
WENIR19Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCB4Y2hncV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
ICNlbmRpZgogCiAgICAgdm9pZCBtb3ZsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRz
dCkKQEAgLTE3MzEsNiArMjMzMCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDgoT1BfTU9WX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwog
ICAgIH0KIAorICAgIHZvaWQgbW92d19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SXosIEdST1VQ
MTFfTU9WLCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihp
bW0pOworICAgIH0KKworICAgIHZvaWQgbW92d19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAg
ICB9CisKICAgICB2b2lkIG1vdmxfRUFYbShjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX01PVl9PdkVBWCk7CkBAIC0xODAwLDYgKzI0MTMs
MTIgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAg
IH0KIAorICAgIHZvaWQgbW92cV9pMzJtKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxMV9Fdkl6LCBHUk9VUDExX01PViwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0p
OworICAgIH0KKwogICAgIHZvaWQgbW92cV9pNjRyKGludDY0X3QgaW1tLCBSZWdpc3RlcklEIGRz
dCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9FQVhJdiwg
ZHN0KTsKQEAgLTI3ODEsNiArMzQwMCw5MCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfTE9DSyk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY21weGNoZ2Jfcm0oUmVn
aXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX0NNUFhDSEdiLCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENIR2IsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGd3
X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGd3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgY21weGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hncV9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBjbXB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGJfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX1hBRERiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgeGFkZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNyYywgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGR3X3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5
dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IHhhZGR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnBy
ZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9Q
Ml9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCB4YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMs
IGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGxfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBz
cmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4
YWRkcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1hBREQsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkcV9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfWEFERCwgc3JjLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAogICAgIHZvaWQgbWZlbmNl
KCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wKE9QMl8zQllURV9FU0NB
UEVfQUUsIE9QM19NRkVOQ0UpOwpAQCAtMzc1Nyw2ICs0NDYwLDI0IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShncm91cE9wLCBybSk7CiAgICAgICAgIH0KIAor
ICAgICAgICB2b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywg
UmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5n
bGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAg
d3JpdGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBiYXNlKSwgcmVnLCAwLCBi
YXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQ
RSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAg
ICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgfQor
CisgICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVn
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNl
dCkKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIg
d3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1Jl
cXVpcmVzUmV4KHJlZykgfHwgcmVnUmVxdWlyZXNSZXgoaW5kZXgsIGJhc2UpLCByZWcsIGluZGV4
LCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VT
Q0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAg
ICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgICAgICB9CisKICAgICAgICAgLy8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KICAg
ICAgICAgLy8gQW4gaW1tZWRhaXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0
ZSBhZnRlciBhbiBvcCBoYXMgYmVlbiBlbWl0dGVkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUo
QjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworQXRvbWljVmFsdWU6
On5BdG9taWNWYWx1ZSgpCit7Cit9CisKK3ZvaWQgQXRvbWljVmFsdWU6OmR1bXBNZXRhKENvbW1h
UHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50
KGNvbW1hLCAid2lkdGggPSAiLCBtX3dpZHRoKTsKKyAgICAKKyAgICBNZW1vcnlWYWx1ZTo6ZHVt
cE1ldGEoY29tbWEsIG91dCk7Cit9CisKK1ZhbHVlKiBBdG9taWNWYWx1ZTo6Y2xvbmVJbXBsKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbmV3IEF0b21pY1ZhbHVlKCp0aGlzKTsKK30KKworQXRvbWlj
VmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgs
IFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5n
ZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2Vk
T3Bjb2RlLCBraW5kLCBvcGVyYW5kLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVu
Y2VSYW5nZSwgb3BlcmFuZCwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7CisgICAg
QVNTRVJUKGJlc3RUeXBlKEdQLCBhY2Nlc3NXaWR0aCgpKSA9PSBhY2Nlc3NUeXBlKCkpOworICAg
IAorICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoK
KyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2Fz
ZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21p
Y1hjaGc6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KK30KKworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2lu
ZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1
ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJh
bmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNv
ZGUsIGtpbmQsIGtpbmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0
ZWRWYWx1ZS0+dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UsIGV4cGVj
dGVkVmFsdWUsIG5ld1ZhbHVlLCBwb2ludGVyKQorICAgICwgbV93aWR0aCh3aWR0aCkKK3sKKyAg
ICBBU1NFUlQoYmVzdFR5cGUoR1AsIGFjY2Vzc1dpZHRoKCkpID09IGFjY2Vzc1R5cGUoKSk7CisK
KyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6Cisg
ICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1
ZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEF0b21pY1ZhbHVlIDogcHVibGljIE1lbW9y
eVZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBpc0F0b21pYyhraW5kLm9wY29kZSgpKTsKKyAgICB9CisgICAg
CisgICAgfkF0b21pY1ZhbHVlKCk7CisgICAgCisgICAgVHlwZSBhY2Nlc3NUeXBlKCkgY29uc3Qg
eyByZXR1cm4gY2hpbGQoMCktPnR5cGUoKTsgfQorICAgIAorICAgIFdpZHRoIGFjY2Vzc1dpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIAorcHJvdGVjdGVkOgorICAgIHZvaWQg
ZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAg
ICAKKyAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2lu
ZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90
IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5n
ZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQXRvbWljVmFsdWUo
S2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1
ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0g
SGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgp
KTsKKyAgICAKKyAgICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MCw3
IEBAIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogY2xhc3MgSW5zZXJ0aW9uU2V0OwogY2xhc3Mg
UHJvY2VkdXJlOwogY2xhc3MgVmFsdWU7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0OwogCiBjbGFzcyBCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShCYXNpY0Jsb2NrKTsKQEAgLTE1OCw2ICsxNTksNyBAQCBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgSW5zZXJ0
aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWU+IGZyaWVuZCBjbGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgCiAgICAgLy8g
SW5zdGFudGlhdGUgdmlhIFByb2NlZHVyZS4KICAgICBCYXNpY0Jsb2NrKHVuc2lnbmVkIGluZGV4
LCBkb3VibGUgZnJlcXVlbmN5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
NiwzNSArMzYsMTMgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBCbG9ja0lu
c2VydGlvblNldDo6QmxvY2tJbnNlcnRpb25TZXQoUHJvY2VkdXJlICZwcm9jKQotICAgIDogbV9w
cm9jKHByb2MpCisgICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQocHJvYy5tX2Jsb2NrcykK
KyAgICAsIG1fcHJvYyhwcm9jKQogewogfQogCiBCbG9ja0luc2VydGlvblNldDo6fkJsb2NrSW5z
ZXJ0aW9uU2V0KCkgeyB9CiAKLXZvaWQgQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydChCbG9ja0lu
c2VydGlvbiYmIGluc2VydGlvbikKLXsKLSAgICBtX2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUo
aW5zZXJ0aW9uKSk7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQo
dW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEJhc2ljQmxvY2s+IGJsb2NrKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsK
LSAgICBCYXNpY0Jsb2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsKLSAgICBpbnNlcnQoQmxvY2tJ
bnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2spKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEJlZm9yZShCYXNpY0Jsb2Nr
KiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChiZWZvcmUt
PmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZy
ZXF1ZW5jeSgpKTsKLX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEFm
dGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHJldHVybiBp
bnNlcnQoYWZ0ZXItPmluZGV4KCkgKyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVl
bmN5IDogYWZ0ZXItPmZyZXF1ZW5jeSgpKTsKLX0KLQogQmFzaWNCbG9jayogQmxvY2tJbnNlcnRp
b25TZXQ6OnNwbGl0Rm9yd2FyZCgKICAgICBCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQmIHZh
bHVlSW5kZXgsIEluc2VydGlvblNldCogaW5zZXJ0aW9uU2V0LCBkb3VibGUgZnJlcXVlbmN5KQog
ewpAQCAtMTAyLDMyICs4MCw2IEBAIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxp
dEZvcncKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEJsb2NrSW5zZXJ0aW9uU2V0Ojpl
eGVjdXRlKCkKLXsKLSAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIAotICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4g
dG8gdXMgaW4gYW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCi0gICAg
Ly8gcnVubmluZyBXVEY6OmV4ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBz
dGFibGUgc29ydCBhbmQgd2Ugd2FudCBpdCB0byBiZQotICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBi
dWJibGUgc29ydC4KLSAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2Vy
dGlvbnMuZW5kKCkpOwotCi0gICAgZXhlY3V0ZUluc2VydGlvbnMobV9wcm9jLm1fYmxvY2tzLCBt
X2luc2VydGlvbnMpOwotICAgIAotICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBUaGlz
IGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncwotICAgIC8vIGhlYWx0aHkgdG8ga2Vl
cCB0aGUgYmxvY2sgbGlzdCBmcm9tIGdyb3dpbmcuCi0gICAgbV9wcm9jLm1fYmxvY2tzLnJlbW92
ZUFsbE1hdGNoaW5nKAotICAgICAgICBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYg
YmxvY2tQdHIpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuICFibG9ja1B0cjsKLSAgICAg
ICAgfSk7Ci0gICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJsb2NrcyBrbm93IHRoZWly
IG5ldyBpbmRpY2VzLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Byb2MubV9ibG9j
a3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcHJvYy5tX2Jsb2Nrc1tpXS0+bV9pbmRleCA9IGk7
Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwog
CiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5j
bHVkZSA8d3RmL0luc2VydGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM1LDI2
ICszNiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgSW5zZXJ0
aW9uU2V0OwogCi10eXBlZGVmIFdURjo6SW5zZXJ0aW9uPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Js
b2NrPj4gQmxvY2tJbnNlcnRpb247Cit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxC
YXNpY0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CiAKLWNsYXNzIEJsb2Nr
SW5zZXJ0aW9uU2V0IHsKK2NsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNC
bG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPiB7CiBwdWJsaWM6CiAgICAgQmxvY2tJbnNlcnRp
b25TZXQoUHJvY2VkdXJlJik7CiAgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7CiAgICAgCi0gICAg
dm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJik7Ci0KLSAgICAvLyBJbnNlcnQgYSBuZXcgYmxv
Y2sgYXQgYSBnaXZlbiBpbmRleC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5k
ZXgsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBuZXcgYmxv
Y2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUg
ZnJlcXVlbmN5Ci0gICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVz
dCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxvY2suIFRoYXQncwotICAgIC8v
IHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFz
aWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNl
cnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KLSAgICBCYXNpY0Jsb2NrKiBp
bnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwot
CiAgICAgLy8gQSBoZWxwZXIgdG8gc3BsaXQgYSBibG9jayB3aGVuIGZvcndhcmQgaXRlcmF0aW5n
IG92ZXIgaXQuIEl0IGNyZWF0ZXMgYSBuZXcgYmxvY2sgdG8gaG9sZAogICAgIC8vIGV2ZXJ5dGhp
bmcgYmVmb3JlIHRoZSBpbnN0cnVjdGlvbiBhdCB2YWx1ZUluZGV4LiBUaGUgY3VycmVudCBibG9j
ayBpcyBsZWZ0IHdpdGgKICAgICAvLyBldmVyeXRoaW5nIGF0IGFuZCBhZnRlciB2YWx1ZUluZGV4
LiBJZiB0aGUgb3B0aW9uYWwgSW5zZXJ0aW9uU2V0IGlzIHByb3ZpZGVkLCBpdCB3aWxsIGdldApA
QCAtODAsMTIgKzY4LDkgQEAgcHVibGljOgogICAgIEJhc2ljQmxvY2sqIHNwbGl0Rm9yd2FyZCgK
ICAgICAgICAgQmFzaWNCbG9jayosIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQq
ID0gbnVsbHB0ciwKICAgICAgICAgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotICAgIAotICAg
IGJvb2wgZXhlY3V0ZSgpOwogCiBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwotICAg
IFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOwogfTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3Rz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNw
cAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Miw3ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50
ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAgICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQ
aW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3Jp
dGVzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8
IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBz
KG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZlbmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAog
Ym9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAt
OTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAg
ICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhlci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYg
cmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5uZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90
aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYg
cmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9
CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QK
QEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVjdHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChy
ZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAg
ICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYg
KHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAg
ICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2
aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNzEsNiArNzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBib29s
IHJlYWRzUGlubmVkIHsgZmFsc2UgfTsKICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07
CisgICAgCisgICAgLy8gTWVtb3J5IGZlbmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBl
YWNoIG90aGVyIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisg
ICAgLy8gaWYgdGhlIG9wZXJhdGlvbiBpcyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZlbmNl
IHsgZmFsc2UgfTsKIAogICAgIEhlYXBSYW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRz
OwpAQCAtODksNiArOTMsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5yZWFk
cyA9IEhlYXBSYW5nZTo6dG9wKCk7CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7
CiAgICAgICAgIHJlc3VsdC53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVu
Y2UgPSB0cnVlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcgKzEw
OCw3IEBAIHN0cnVjdCBFZmZlY3RzIHsKIAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVz
TG9jYWxTdGF0ZSB8fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4gdGVy
bWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3
cml0ZXNQaW5uZWQgfHwgZmVuY2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHJl
b3JkZXJpbmcgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxk
IGNoYW5nZSBwcm9ncmFtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCShyZXZpc2lvbiAy
MTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0cnVjdCBJbXB1
cmVCbG9ja0RhdGEgewogCiAgICAgUmFuZ2VTZXQ8SGVhcFJhbmdlPiByZWFkczsgLy8gVGhpcyBv
bmx5IGdldHMgdXNlZCBmb3IgZm9yd2FyZCBzdG9yZSBlbGltaW5hdGlvbi4KICAgICBSYW5nZVNl
dDxIZWFwUmFuZ2U+IHdyaXRlczsgLy8gVGhpcyBnZXRzIHVzZWQgZm9yIGJvdGggbG9hZCBhbmQg
c3RvcmUgZWxpbWluYXRpb24uCisgICAgYm9vbCBmZW5jZTsKIAogICAgIE1lbW9yeVZhbHVlTWFw
IHN0b3Jlc0F0SGVhZDsKICAgICBNZW1vcnlWYWx1ZU1hcCBtZW1vcnlWYWx1ZXNBdFRhaWw7CkBA
IC0xNzQsMTIgKzE3NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaWYgKG1lbW9yeSAmJiBtZW1vcnktPmlzU3RvcmUoKQogICAgICAgICAgICAgICAgICAg
ICAmJiAhZGF0YS5yZWFkcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCi0gICAgICAgICAgICAg
ICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpKQorICAgICAg
ICAgICAgICAgICAgICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQor
ICAgICAgICAgICAgICAgICAgICAmJiAoIWRhdGEuZmVuY2UgfHwgIW1lbW9yeS0+aGFzRmVuY2Uo
KSkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3RvcmVzQXRIZWFkLmFkZChtZW1vcnkpOwog
ICAgICAgICAgICAgICAgIGRhdGEucmVhZHMuYWRkKGVmZmVjdHMucmVhZHMpOwogCiAgICAgICAg
ICAgICAgICAgaWYgKEhlYXBSYW5nZSB3cml0ZXMgPSBlZmZlY3RzLndyaXRlcykKICAgICAgICAg
ICAgICAgICAgICAgY2xvYmJlcihkYXRhLCB3cml0ZXMpOworICAgICAgICAgICAgICAgIGRhdGEu
ZmVuY2UgfD0gZWZmZWN0cy5mZW5jZTsKIAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkpCiAg
ICAgICAgICAgICAgICAgICAgIGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkpOwpA
QCAtNDQ1LDggKzQ0OCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgZGF0YUxvZygiQmFkIG1lbW9yeSB2YWx1ZTogIiwgZGVlcER1bXAobV9w
cm9jLCBtX3ZhbHVlKSwgIlxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzgsNiAr
NDc5LDkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9v
bCBmaW5kU3RvcmVBZnRlckNsb2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25z
dCBGaWx0ZXImIGZpbHRlcikKICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
CiAgICAgICAgIC8vIFdlIGNhbiBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBh
dGggaGl0cyBhIHN0b3JlIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBo
aXR0aW5nIGFueSBvcGVyYXRpb24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNo
IHNlZW1zIGxpa2UgaXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRo
ZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRl
bHkgaGl0IGFuIApAQCAtNjE0LDYgKzYxOCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVy
Ym9zZSkKICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQg
Zm9yICIsICpwdHIsICIuLi5cbiIpOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFz
PE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxu
Iik7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIAogICAgICAg
ICBpZiAoTWVtb3J5VmFsdWUqIG1hdGNoID0gbV9kYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5k
KHB0ciwgZmlsdGVyKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTMzNzkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiQjNMb3dlclRvQWlyLmgiCiAjaW5jbHVkZSAi
QjNNb3ZlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKKyNpbmNsdWRlICJC
M1B1cmVDU0UuaCIKICNpbmNsdWRlICJCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCIKICNpbmNsdWRl
ICJCM1JlZHVjZVN0cmVuZ3RoLmgiCiAjaW5jbHVkZSAiQjNUaW1pbmdTY29wZS5oIgpAQCAtOTIs
NiArOTMsNyBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsCiAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MDcKICAg
ICB9CiAKKyAgICAvLyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgogICAgIGxvd2Vy
TWFjcm9zKHByb2NlZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9u
U2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiUHVyZU5hTi5oIgorI2luY2x1ZGUg
PHd0Zi9CdWJibGVTb3J0Lmg+CisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNz
IEluc2VydGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9jaz4KK2NsYXNzIEdl
bmVyaWNCbG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBXVEY6Okluc2Vy
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOworICAgIAor
ICAgIEdlbmVyaWNCbG9ja0luc2VydGlvblNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+PiYgYmxvY2tzKQorICAgICAgICA6IG1fYmxvY2tzKGJsb2NrcykKKyAgICB7CisgICAg
fQorICAgIAorICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5zZXJ0aW9uKQorICAg
IHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOworICAg
IH0KKworICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGluZGV4LgorICAgIEJh
c2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
CisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3IEJh
c2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOworICAgICAgICBCYXNpY0Jsb2NrKiByZXN1
bHQgPSBibG9jay5nZXQoKTsKKyAgICAgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBX
VEZNb3ZlKGJsb2NrKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8v
IEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ug
d2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5CisgICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5h
TiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxv
Y2suIFRoYXQncworICAgIC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KKyAgICBCYXNpY0Jsb2Nr
KiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5h
TikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVu
Y3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7CisgICAg
fQorCisgICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxvY2suCisg
ICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVx
dWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChhZnRlci0+aW5kZXgo
KSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBhZnRlci0+ZnJlcXVl
bmN5KCkpOworICAgIH0KKworICAgIGJvb2wgZXhlY3V0ZSgpCisgICAgeworICAgICAgICBpZiAo
bV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4g
YW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCisgICAgICAgIC8vIHJ1
bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxl
IHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKKyAgICAgICAgLy8gZmFzdCwgc28gd2UgdXNlIGJ1
YmJsZSBzb3J0LgorICAgICAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2lu
c2VydGlvbnMuZW5kKCkpOworICAgICAgICAKKyAgICAgICAgZXhlY3V0ZUluc2VydGlvbnMobV9i
bG9ja3MsIG1faW5zZXJ0aW9ucyk7CisgICAgICAgIAorICAgICAgICAvLyBQcnVuZSBvdXQgZW1w
dHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MKKyAgICAg
ICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KKyAgICAg
ICAgbV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAgICBbJl0gKHN0ZDo6dW5p
cXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+IGJvb2wgeworICAgICAgICAgICAgICAg
IHJldHVybiAhYmxvY2tQdHI7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgbV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOworICAgICAgICAKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFz
aWNCbG9jaz4+JiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1faW5z
ZXJ0aW9uczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCShy
ZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdlIG9wZXJhdG9yfChj
b25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlYXBS
YW5nZSgKKyAgICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1fYmVnaW4pLAorICAg
ICAgICAgICAgc3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAgfQorICAgIAogICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1fZW5k
OyB9CiAKICAgICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNp
b24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJbnNlcnRpb25TZXQ6
Omluc2VydEJvdHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9tKGluZGV4LCBsaWtl
VmFsdWUtPm9yaWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1ZhbHVlKiBJbnNlcnRp
b25TZXQ6Omluc2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVlKQoreworICAgIHJl
dHVybiBpbnNlcnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFsdWUpKTsKK30KKwog
dm9pZCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgYnVi
YmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTMz
NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogCiAgICAgVmFsdWUqIGluc2VydEJv
dHRvbShzaXplX3QgaW5kZXgsIE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGluc2VydEJvdHRv
bShzaXplX3QgaW5kZXgsIFZhbHVlKik7CisgICAgCisgICAgVmFsdWUqIGluc2VydENsb25lKHNp
emVfdCBpbmRleCwgVmFsdWUqKTsKIAogICAgIHZvaWQgZXhlY3V0ZShCYXNpY0Jsb2NrKik7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTGVnYWxpemVNZW1v
cnlPZmZzZXRzLmNwcAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSAr
MjgsOCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkFpckFyZy5oIgogI2lu
Y2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgotI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUu
aCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzUGhhc2VT
Y29wZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFs
dWVJbmxpbmVzLmgiCkBAIC00OSwyMCArNDgsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCBydW4o
KQogICAgIHsKLSAgICAgICAgaWYgKCFpc0FSTTY0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
KyAgICAgICAgLy8gRklYTUU6IFBlcmhhcHMgdGhpcyBzaG91bGQgYmUgbW92ZWQgdG8gbG93ZXJN
YWNyb3MsIGFuZCBxdWlya3MgbW9kZSBjYW4gaW1wb3NlIHRoZSByZXF1aXJlbWVudAorICAgICAg
ICAvLyB0aGF0IHRoZSBvZmZzZXQgaXMgbGVnYWwuIEJ1dCBmb3Igbm93IHRoaXMgaXMgc29ydCBv
ZiBPSyBiZWNhdXNlIHdlIHJ1biBwdXJlQ1NFIAorICAgICAgICAKICAgICAgICAgZm9yIChCYXNp
Y0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRl
eCA9IDA7IGluZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbmRleCkgewogICAgICAgICAgICAgICAg
IE1lbW9yeVZhbHVlKiBtZW1vcnlWYWx1ZSA9IGJsb2NrLT5hdChpbmRleCktPmFzPE1lbW9yeVZh
bHVlPigpOwogICAgICAgICAgICAgICAgIGlmICghbWVtb3J5VmFsdWUpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBtZW1v
cnlWYWx1ZS0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBtZW1vcnlW
YWx1ZS0+YWNjZXNzV2lkdGgoKTsKLSAgICAgICAgICAgICAgICBpZiAoIUFpcjo6QXJnOjppc1Zh
bGlkQWRkckZvcm0ob2Zmc2V0LCB3aWR0aCkpIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBpZiAoIW1lbW9yeVZhbHVlLT5pc0xlZ2FsT2Zmc2V0KG1lbW9yeVZhbHVlLT5vZmZz
ZXQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIGJhc2UgPSBtZW1vcnlWYWx1ZS0+
bGFzdENoaWxkKCk7Ci0gICAgICAgICAgICAgICAgICAgIFZhbHVlKiBvZmZzZXRWYWx1ZSA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KGluZGV4LCBtZW1vcnlWYWx1ZS0+b3JpZ2lu
KCksIHBvaW50ZXJUeXBlKCksIG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBv
ZmZzZXRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KGluZGV4LCBtZW1v
cnlWYWx1ZS0+b3JpZ2luKCksIHBvaW50ZXJUeXBlKCksIG1lbW9yeVZhbHVlLT5vZmZzZXQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByZXNvbHZlZEFkZHJlc3MgPSBtX3Byb2MuYWRk
PFZhbHVlPihBZGQsIG1lbW9yeVZhbHVlLT5vcmlnaW4oKSwgYmFzZSwgb2Zmc2V0VmFsdWUpOwog
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRWYWx1ZShpbmRleCwgcmVz
b2x2ZWRBZGRyZXNzKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJN
YWNyb3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
TWFjcm9zLmNwcAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTkgKzI5LDIyIEBACiAj
aWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxv
Y2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCbG9ja0luc2VydGlvblNldC5oIgogI2luY2x1ZGUg
IkIzQ0NhbGxWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQ2FzZUNvbGxlY3Rpb25JbmxpbmVzLmgiCiAj
aW5jbHVkZSAiQjNDb25zdFB0clZhbHVlLmgiCisjaW5jbHVkZSAiQjNGZW5jZVZhbHVlLmgiCiAj
aW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCi0jaW5jbHVkZSAiQjNNZW1vcnlWYWx1
ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQYXRj
aHBvaW50VmFsdWUuaCIKICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1By
b2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5o
IgogI2luY2x1ZGUgIkIzU3dpdGNoVmFsdWUuaCIKICNpbmNsdWRlICJCM1Vwc2lsb25WYWx1ZS5o
IgorI2luY2x1ZGUgIkIzVXNlQ291bnRzLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCkBAIC01
OCwxMSArNjEsMTQgQEAgcHVibGljOgogICAgICAgICA6IG1fcHJvYyhwcm9jKQogICAgICAgICAs
IG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAgICAgLCBtX2luc2VydGlvblNldChwcm9j
KQorICAgICAgICAsIG1fdXNlQ291bnRzKHByb2MpCiAgICAgewogICAgIH0KIAogICAgIGJvb2wg
cnVuKCkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Byb2MuaGFzUXVpcmtzKCkp
OworICAgICAgICAKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewog
ICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwogICAgICAgICAgICAgcHJvY2Vzc0N1cnJlbnRC
bG9jaygpOwpAQCAtNzIsNiArNzgsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9wcm9jLnJl
c2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgICAgICAgICBtX3Byb2MuaW52YWxpZGF0ZUNGRygpOwog
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHdlJ3Zl
IAorICAgICAgICBtX3Byb2Muc2V0SGFzUXVpcmtzKHRydWUpOworICAgICAgICAKICAgICAgICAg
cmV0dXJuIG1fY2hhbmdlZDsKICAgICB9CiAgICAgCkBAIC0xODUsNyArMTk1LDExOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNl
IERlcGVuZDogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIENyZWF0ZSBhIGxvYWQtbG9hZCBmZW5jZS4gVGhpcyBjb2RlZ2VucyB0byBub3Ro
aW5nIG9uIFg4Ni4gV2UgdXNlIGl0IHRvIHRlbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIC8v
IGNvbXBpbGVyIG5vdCB0byBibG9jayBsb2FkIG1vdGlvbi4KKyAgICAgICAgICAgICAgICAgICAg
RmVuY2VWYWx1ZSogZmVuY2UgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8RmVuY2VWYWx1ZT4obV9p
bmRleCwgbV9vcmlnaW4pOworICAgICAgICAgICAgICAgICAgICBmZW5jZS0+cmVhZCA9IEhlYXBS
YW5nZSgpOworICAgICAgICAgICAgICAgICAgICBmZW5jZS0+d3JpdGUgPSBIZWFwUmFuZ2U6OnRv
cCgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gS2lsbCB0
aGUgRGVwZW5kLCB3aGljaCBzaG91bGQgdW5sb2NrIGEgYnVuY2ggb2YgY29kZSBzaW1wbGlmaWNh
dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhCb3R0b20obV9p
bnNlcnRpb25TZXQsIG1faW5kZXgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vh
a0NBUzoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOiB7CisgICAgICAgICAgICAg
ICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxB
dG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+YWNj
ZXNzV2lkdGgoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNDYW5v
bmljYWxXaWR0aCh3aWR0aCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIFZhbHVlKiBleHBlY3RlZFZhbHVlID0gYXRvbWljLT5j
aGlsZCgwKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBPbiBBUk0sIHRo
ZSBsb2FkIHBhcnQgb2YgdGhlIENBUyBkb2VzIGEgbG9hZCB3aXRoIHplcm8gZXh0ZW5zaW9uLiBU
aGVyZWZvcmUsIHdlIG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0byB6ZXJvLWV4dGVuZCB0aGUg
aW5wdXQuCisgICAgICAgICAgICAgICAgVmFsdWUqIG1hc2tlZEV4cGVjdGVkVmFsdWUgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBC
aXRBbmQsIG1fb3JpZ2luLCBleHBlY3RlZFZhbHVlLAorICAgICAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChtX2luZGV4LCBleHBlY3RlZFZhbHVlLCBtYXNr
KHdpZHRoKSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF0b21pYy0+Y2hp
bGQoMCkgPSBtYXNrZWRFeHBlY3RlZFZhbHVlOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoK
KyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAgICAgIC8vIE9uIFg4
NiwgdGhlc2UgbWF5IGFjdHVhbGx5IHJldHVybiBnYXJiYWdlIGluIHRoZSBoaWdoIGJpdHMuIE9u
IEFSTTY0LCB0aGVzZSBzb3J0YQorICAgICAgICAgICAgICAgIC8vIHplcm8tZXh0ZW5kIHRoZWly
IGhpZ2ggYml0cywgZXhjZXB0IHRoYXQgdGhlIGhpZ2ggYml0cyBtaWdodCBnZXQgcG9sbHV0ZWQg
YnkgaGlnaAorICAgICAgICAgICAgICAgIC8vIGJpdHMgaW4gdGhlIG9wZXJhbmQuIC4gU28sIGVp
dGhlciB3YXksIHdlIG5lZWQgdG8gdGhyb3cgYSBzaWduLWV4dGVuZCBvbiB0aGVzZQorICAgICAg
ICAgICAgICAgIC8vIHRoaW5ncy4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBp
ZiAoaXNYODYoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+b3Bjb2RlKCkg
PT0gQXRvbWljWGNoZ1N1YiAmJiBtX3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBPbiB4ODYsIHhjaGdhZGQgaXMgYmV0dGVyIHRoYW4geGNo
Z3N1YiBpZiBpdCBoYXMgYW55IHVzZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1
ZS0+c2V0T3Bjb2RlVW5zYWZlbHkoQXRvbWljWGNoZ0FkZCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5jaGlsZCgwKSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgTmVnLCBtX29yaWdpbiwgbV92YWx1
ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICBib29sIGV4ZW1wdCA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hn
T3I6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhl
bXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZW1wdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRv
bWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPmFjY2Vz
c1dpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzQ2Fub25p
Y2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3VmFsdWUgPSBtX2luc2VydGlvblNldC5p
bnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBzaWduRXh0ZW5kT3Bj
b2RlKHdpZHRoKSwgbV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydENsb25lKG1faW5kZXgsIGF0b21pYykpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAg
ICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIExvYWQ4WjoKKyAg
ICAgICAgICAgIGNhc2UgTG9hZDE2WjogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFN1Yi13aWR0
aCBsb2FkLWFjcSBvbiBBUk02NCBhbHdheXMgc2lnbiBleHRlbmRzLgorICAgICAgICAgICAgICAg
IFZhbHVlKiBuZXdMb2FkID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRleCwgbWVt
b3J5KTsKKyAgICAgICAgICAgICAgICBuZXdMb2FkLT5zZXRPcGNvZGVVbnNhZmVseShtZW1vcnkt
Pm9wY29kZSgpID09IExvYWQ4WiA/IExvYWQ4UyA6IExvYWQxNlMpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4s
IG5ld0xvYWQsCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENv
bnN0YW50KAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgbV9vcmlnaW4sIEludDMy
LCBtYXNrKG1lbW9yeS0+YWNjZXNzV2lkdGgoKSkpKTsKIAorICAgICAgICAgICAgICAgIG1fdmFs
dWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAgICAgICAgICAgIG1fY2hh
bmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpAQCAtNDcwLDYgKzU5Miw3IEBAIHByaXZhdGU6CiAgICAgUHJvY2Vk
dXJlJiBtX3Byb2M7CiAgICAgQmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsK
ICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CisgICAgVXNlQ291bnRzIG1fdXNlQ291
bnRzOwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKICAg
ICBWYWx1ZSogbV92YWx1ZTsKQEAgLTQ3NywyMSArNjAwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2NoYW5nZWQgeyBmYWxzZSB9OwogfTsKIAotYm9vbCBsb3dlck1hY3Jvc0ltcGwoUHJvY2Vk
dXJlJiBwcm9jKQotewotICAgIExvd2VyTWFjcm9zIGxvd2VyTWFjcm9zKHByb2MpOwotICAgIHJl
dHVybiBsb3dlck1hY3Jvcy5ydW4oKTsKLX0KLQogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAK
IGJvb2wgbG93ZXJNYWNyb3MoUHJvY2VkdXJlJiBwcm9jKQogewotICAgIFBoYXNlU2NvcGUgcGhh
c2VTY29wZShwcm9jLCAibG93ZXJNYWNyb3MiKTsKLSAgICBib29sIHJlc3VsdCA9IGxvd2VyTWFj
cm9zSW1wbChwcm9jKTsKLSAgICBpZiAoc2hvdWxkVmFsaWRhdGVJUigpKQotICAgICAgICBSRUxF
QVNFX0FTU0VSVCghbG93ZXJNYWNyb3NJbXBsKHByb2MpKTsKLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIExvd2VyTWFjcm9zIGxvd2VyTWFjcm9zKHByb2MpOworICAgIHJldHVybiBsb3dlck1hY3Jv
cy5ydW4oKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnMuY3BwCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNTYsMTUgKzE1NiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBSb3RMOiB7CiAg
ICAgICAgICAgICAgICAgLy8gQVJNNjQgZG9lc24ndCBoYXZlIGEgcm90YXRlIGxlZnQuCiAgICAg
ICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNB
Uk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCks
IG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3Rh
dGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUt
Pm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPiht
X2luZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAg
ICAgICAgICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFs
dWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwg
bmV3U2hpZnQpOworICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50
aXR5KHJvdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAko
cmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwxNCBAQAogCiAjaWYgRU5BQkxFKEIz
X0pJVCkKIAorI2luY2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWly
Q0NhbGxTcGVjaWFsLmgiCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpckluc2Vy
dGlvblNldC5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyU3Rh
Y2tTbG90LmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNB
dG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRl
ICJCM0Jsb2NrV29ya2xpc3QuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTQxLDcg
KzQzLDcgQEAKICNpbmNsdWRlICJCM0NvbW11dGF0aXZpdHkuaCIKICNpbmNsdWRlICJCM0RvbWlu
YXRvcnMuaCIKICNpbmNsdWRlICJCM0ZlbmNlVmFsdWUuaCIKLSNpbmNsdWRlICJCM01lbW9yeVZh
bHVlLmgiCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1Bh
dGNocG9pbnRTcGVjaWFsLmgiCiAjaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKICNpbmNs
dWRlICJCM1BoYXNlU2NvcGUuaCIKQEAgLTcyLDYgKzc0LDE2IEBAIG5hbWVzcGFjZSB7CiAKIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCisvLyBGSVhNRTogV2Ugd291bGRuJ3QgbmVlZCB0
aGlzIGlmIEFpciBzdXBwb3J0ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFpcjo6S2luZC4KKy8vIE9P
UFMhISEgKG5lZWQgYSBidWcgVVJMKQorI2RlZmluZSBPUENPREVfRk9SX1dJRFRIKG9wY29kZSwg
d2lkdGgpICggXAorICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDggOiBcCisgICAg
KHdpZHRoKSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAorICAgICh3aWR0aCkgPT0gV2lk
dGgzMiA/IG9wY29kZSAjIyAzMiA6IFwKKyAgICBvcGNvZGUgIyMgNjQpCisjZGVmaW5lIE9QQ09E
RV9GT1JfQ0FOT05JQ0FMX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAorICAgICh3aWR0aCkgPT0g
V2lkdGg2NCA/IG9wY29kZSAjIyA2NCA6IG9wY29kZSAjIyAzMikKKwogY2xhc3MgTG93ZXJUb0Fp
ciB7CiBwdWJsaWM6CiAgICAgTG93ZXJUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSkKQEAgLTgz
LDYgKzk1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RvbWluYXRvcnMocHJvY2VkdXJlLmRv
bWluYXRvcnMoKSkKICAgICAgICAgLCBtX3Byb2NlZHVyZShwcm9jZWR1cmUpCiAgICAgICAgICwg
bV9jb2RlKHByb2NlZHVyZS5jb2RlKCkpCisgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldCht
X2NvZGUpCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICAgICAgLCBtX2VheChYODZS
ZWdpc3RlcnM6OmVheCkKKyAgICAgICAgLCBtX2VjeChYODZSZWdpc3RlcnM6OmVjeCkKKyAgICAg
ICAgLCBtX2VkeChYODZSZWdpc3RlcnM6OmVkeCkKKyNlbmRpZgogICAgIHsKICAgICB9CiAKQEAg
LTEyNCwxNCArMTQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3RlZCBhZGRyZXNzIGV4
cHJlc3Npb24gYmVmb3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhlIGxvb3AuCiAgICAg
ICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUuYmxvY2tzSW5QcmVP
cmRlcigpKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAgICAgICAgICAvLyBS
ZXNldCBzb21lIHN0YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CiAKICAgICAg
ICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAKICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nIEJsb2Nr
ICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBNYWtlIHN1
cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KKyAgICAgICAgICAg
IGZvciAoQjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygp
KSB7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCku
YXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2Nr
VG9CbG9ja1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOworICAg
ICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBpbiByZXZlcnNlIG9y
ZGVyIHNvIHdlIHNlZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBhbGxvd3MgdXMKICAg
ICAgICAgICAgIC8vIHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5LgogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAtMTQ5LDE5ICsxNzEs
MTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRhaW5zIHRo
ZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAgICAgICAgLy8gaXQgaW4g
cmV2ZXJzZS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBp
LS07KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0c1tpXSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBlbmRJbnN0KFdURk1v
dmUoaW5zdCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhh
dCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAgICAgICAgIGZvciAo
QjM6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0g
ICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCkuYXBwZW5k
KAotICAgICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrVG9CbG9j
a1tzdWNjZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG1fYmxvY2tUb0Js
b2NrW2Jsb2NrXSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fYmxvY2tJbnNlcnRp
b25TZXQuZXhlY3V0ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0IGluc2VydGlvblNl
dChtX2NvZGUpOwogICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xvZ3VlKQpAQCAtNDQ4
LDEyICs0NjEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJldHVybiBzY2FsZTsKICAgICB9Ci0KKyAgICAKICAgICAvLyBUaGlzIHR1cm5z
IHRoZSBnaXZlbiBvcGVyYW5kIGludG8gYW4gYWRkcmVzcy4KICAgICBBcmcgZWZmZWN0aXZlQWRk
cihWYWx1ZSogYWRkcmVzcywgaW50MzJfdCBvZmZzZXQsIFdpZHRoIHdpZHRoKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgd2lkdGgpKTsKLQorICAg
ICAgICAKICAgICAgICAgYXV0byBmYWxsYmFjayA9IFsmXSAoKSAtPiBBcmcgewogICAgICAgICAg
ICAgcmV0dXJuIEFyZzo6YWRkcih0bXAoYWRkcmVzcyksIG9mZnNldCk7CiAgICAgICAgIH07CkBA
IC01MzUsMTIgKzU0OCwxNSBAQCBwcml2YXRlOgogICAgICAgICBNZW1vcnlWYWx1ZSogdmFsdWUg
PSBtZW1vcnlWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CiAgICAgICAgIGlmICghdmFsdWUpCiAg
ICAgICAgICAgICByZXR1cm4gQXJnKCk7CisgICAgICAgIAorICAgICAgICBpZiAodmFsdWUtPnJl
cXVpcmVzU2ltcGxlQWRkcigpKQorICAgICAgICAgICAgcmV0dXJuIEFyZzo6c2ltcGxlQWRkcih0
bXAodmFsdWUtPmxhc3RDaGlsZCgpKSk7CiAKICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB2YWx1
ZS0+b2Zmc2V0KCk7CiAgICAgICAgIFdpZHRoIHdpZHRoID0gdmFsdWUtPmFjY2Vzc1dpZHRoKCk7
CiAKICAgICAgICAgQXJnIHJlc3VsdCA9IGVmZmVjdGl2ZUFkZHIodmFsdWUtPmxhc3RDaGlsZCgp
LCBvZmZzZXQsIHdpZHRoKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5pc1ZhbGlkRm9ybSh3aWR0
aCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuaXNWYWxpZEZvcm0od2lkdGgpKTsK
IAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTU2MSwxMSArNTc3LDE5IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgQXJnUHJvbWlzZSBsb2FkUHJvbWlzZUFueU9wY29kZShWYWx1ZSog
bG9hZFZhbHVlKQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobG9hZFZhbHVlLT5hczxN
ZW1vcnlWYWx1ZT4oKSk7CiAgICAgICAgIGlmICghY2FuQmVJbnRlcm5hbChsb2FkVmFsdWUpKQog
ICAgICAgICAgICAgcmV0dXJuIEFyZygpOwogICAgICAgICBpZiAoY3Jvc3Nlc0ludGVyZmVyZW5j
ZShsb2FkVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwotICAgICAgICBBcmdQcm9t
aXNlIHJlc3VsdChhZGRyKGxvYWRWYWx1ZSksIGxvYWRWYWx1ZSk7CisgICAgICAgIC8vIE9uIHg4
NiwgYWxsIGxvYWRzIGhhdmUgZmVuY2VzLiBEb2luZyB0aGlzIGtpbmQgb2YgaW5zdHJ1Y3Rpb24g
c2VsZWN0aW9uIHdpbGwgbW92ZSB0aGUgbG9hZCwKKyAgICAgICAgLy8gYnV0IHRoYXQncyBmaW5l
IGJlY2F1c2Ugb3VyIGludGVyZmVyZW5jZSBhbmFseXNpcyBzdG9wcyB0aGUgbW90aW9uIG9mIGZl
bmNlcyBhcm91bmQgb3RoZXIKKyAgICAgICAgLy8gZmVuY2VzLiBTbywgYW55IGxvYWQgbW90aW9u
IHdlIGludHJvZHVjZSBoZXJlIHdvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLgorICAgICAgICBpZiAo
IWlzWDg2KCkgJiYgbG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAg
ICAgICAgICAgIHJldHVybiBBcmcoKTsKKyAgICAgICAgQXJnIGxvYWRBZGRyID0gYWRkcihsb2Fk
VmFsdWUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkQWRkcik7CisgICAgICAgIEFyZ1By
b21pc2UgcmVzdWx0KGxvYWRBZGRyLCBsb2FkVmFsdWUpOwogICAgICAgICBpZiAobG9hZFZhbHVl
LT50cmFwcygpKQogICAgICAgICAgICAgcmVzdWx0LnNldFRyYXBzKHRydWUpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtNzM4LDcgKzc2Miw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQotCisgICAgCiAgICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2Rl
MzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBvcGNvZGVEb3VibGUsIEFpcjo6
T3Bjb2RlIG9wY29kZUZsb2F0LCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21t
dXRhdGl2ZT4KICAgICB2b2lkIGFwcGVuZEJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQp
CiAgICAgewpAQCAtODk3LDExICs5MjEsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAgICAgICBhcHBl
bmQoTW92ZSwgdG1wKHZhbHVlKSwgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUs
IHRtcChhbW91bnQpLCBUbXAoWDg2UmVnaXN0ZXJzOjplY3gpKTsKLSAgICAgICAgYXBwZW5kKG9w
Y29kZSwgVG1wKFg4NlJlZ2lzdGVyczo6ZWN4KSwgdG1wKG1fdmFsdWUpKTsKLSNlbmRpZgorICAg
ICAgICBhcHBlbmQoTW92ZSwgdG1wKGFtb3VudCksIG1fZWN4KTsKKyAgICAgICAgYXBwZW5kKG9w
Y29kZSwgbV9lY3gsIHRtcChtX3ZhbHVlKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8QWlyOjpP
cGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0PgpAQCAtOTMwLDEwICs5NTIsMTYg
QEAgcHJpdmF0ZToKICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9w
Y29kZTY0LCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZT4KICAg
ICBib29sIHRyeUFwcGVuZFN0b3JlQmluT3AoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkKICAg
ICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsK
KyAgICAgICAgCiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUo
b3Bjb2RlMzIsIG9wY29kZTY0LCBsZWZ0LT50eXBlKCkpOwogICAgICAgICBpZiAob3Bjb2RlID09
IEFpcjo6T29wcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCisgICAgICAg
IC8vIE9uIHg4NiwgYWxsIHN0b3JlcyBoYXZlIGZlbmNlcywgYW5kIHRoaXMgaXNuJ3QgcmVvcmRl
cmluZyB0aGUgc3RvcmUgaXRzZWxmLgorICAgICAgICBpZiAoIWlzWDg2KCkgJiYgbV92YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIAogICAgICAgICBBcmcgc3RvcmVBZGRyID0gYWRkcihtX3ZhbHVlKTsKICAgICAg
ICAgQVNTRVJUKHN0b3JlQWRkcik7CiAKQEAgLTk5MywxMSArMTAyMSw1MCBAQCBwcml2YXRlOgog
CiAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFsdWUsIHRtcCh2YWx1ZSksIGRlc3QpOwog
ICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShXaWR0aCB3aWR0aCwgQmFu
ayBiYW5rLCBib29sIHJlbGVhc2UpCisgICAgeworICAgICAgICBzd2l0Y2ggKHdpZHRoKSB7Cisg
ICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9PSBH
UCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsOCA6IEFpcjo6U3RvcmU4
OworICAgICAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5r
ID09IEdQKTsKKyAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwxNiA6IEFpcjo6
U3RvcmUxNjsKKyAgICAgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICAgICAgc3dpdGNoIChiYW5r
KSB7CisgICAgICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNl
ID8gU3RvcmVSZWwzMiA6IE1vdmUzMjsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBN
b3ZlRmxvYXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBXaWR0aDY0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM2NEJpdCgpKTsKKyAgICAg
ICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsNjQgOiBNb3ZlOworICAgICAgICAgICAgY2Fz
ZSBGUDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIE1vdmVEb3VibGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShWYWx1ZSogdmFsdWUpCisg
ICAgeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVl
PigpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtZW1vcnktPmlzU3RvcmUoKSk7CisgICAgICAg
IHJldHVybiBzdG9yZU9wY29kZShtZW1vcnktPmFjY2Vzc1dpZHRoKCksIG1lbW9yeS0+YWNjZXNz
QmFuaygpLCBtZW1vcnktPmhhc0ZlbmNlKCkpOworICAgIH0KIAogICAgIEluc3QgY3JlYXRlU3Rv
cmUoVmFsdWUqIHZhbHVlLCBjb25zdCBBcmcmIGRlc3QpCiAgICAgewotICAgICAgICBBaXI6Ok9w
Y29kZSBtb3ZlT3Bjb2RlID0gbW92ZUZvclR5cGUodmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgIHJl
dHVybiBjcmVhdGVTdG9yZShtb3ZlT3Bjb2RlLCB2YWx1ZSwgZGVzdCk7CisgICAgICAgIEFpcjo6
T3Bjb2RlIG1vdmVPcGNvZGUgPSBzdG9yZU9wY29kZSh2YWx1ZSk7CisgICAgICAgIHJldHVybiBj
cmVhdGVTdG9yZShtb3ZlT3Bjb2RlLCB2YWx1ZS0+Y2hpbGQoMCksIGRlc3QpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CkBAIC0xMDA1LDcgKzEwNzIsNyBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVT
dG9yZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSk7CiAgICAgfQotCisgICAgCiAgICAg
QWlyOjpPcGNvZGUgbW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CkBAIC0xMDcyLDcgKzExMzksNDEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IG1faW5zdHMubGFzdCgpLmFwcGVuZChpbnN0KTsKICAgICB9CisgICAgCisgICAgdm9pZCBmaW5p
c2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMoQWlyOjpCYXNpY0Jsb2NrKiB0YXJnZXQpCisgICAgewor
ICAgICAgICAvLyBOb3cgYXBwZW5kIHRoZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMgY29udGFpbnMg
dGhlbSBpbiByZXZlcnNlIG9yZGVyLCBzbyB3ZSBwcm9jZXNzCisgICAgICAgIC8vIGl0IGluIHJl
dmVyc2UuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7
CisgICAgICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX2luc3RzW2ldKQorICAgICAgICAgICAg
ICAgIHRhcmdldC0+YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKKyAgICAgICAgfQorICAgICAg
ICBtX2luc3RzLnJlc2l6ZSgwKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpCYXNpY0Jsb2NrKiBu
ZXdCbG9jaygpCisgICAgeworICAgICAgICByZXR1cm4gbV9ibG9ja0luc2VydGlvblNldC5pbnNl
cnRBZnRlcihtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXSk7CisgICAgfQogCisgICAgLy8gTk9URTog
VGhpcyB3aWxsIGNyZWF0ZSBhIGNvbnRpbnVhdGlvbiBibG9jayAoYG5leHRCbG9ja2ApICphZnRl
ciogYW55IGJsb2NrcyB5b3UndmUgY3JlYXRlZCB1c2luZworICAgIC8vIG5ld0Jsb2NrKCkuIFNv
LCBpdCdzIHByZWZlcmFibGUgdG8gY3JlYXRlIGFsbCBvZiB5b3VyIGJsb2NrcyB1cGZyb250IHVz
aW5nIG5ld0Jsb2NrKCkuIEFsc28gbm90ZQorICAgIC8vIHRoYXQgYW55IGNvZGUgeW91IGVtaXQg
YmVmb3JlIHRoaXMgd2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIGNvbnRpbnVhdGlvbiwgYW5kIGFu
eSBjb2RlIHlvdSBlbWl0CisgICAgLy8gYWZ0ZXIgdGhpcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRo
ZSBwcmV2aW91cyBibG9jay4KKyAgICB2b2lkIHNwbGl0QmxvY2soQWlyOjpCYXNpY0Jsb2NrKiYg
cHJldmlvdXNCbG9jaywgQWlyOjpCYXNpY0Jsb2NrKiYgbmV4dEJsb2NrKQorICAgIHsKKyAgICAg
ICAgQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdOworICAg
ICAgICAKKyAgICAgICAgcHJldmlvdXNCbG9jayA9IGJsb2NrOworICAgICAgICBuZXh0QmxvY2sg
PSBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKGJsb2NrKTsKKyAgICAgICAgCisgICAg
ICAgIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyhuZXh0QmxvY2spOworICAgICAgICBuZXh0
QmxvY2stPnN1Y2Nlc3NvcnMoKSA9IGJsb2NrLT5zdWNjZXNzb3JzKCk7CisgICAgICAgIGJsb2Nr
LT5zdWNjZXNzb3JzKCkuY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIG1faW5zdHMuYXBwZW5k
KFZlY3RvcjxJbnN0PigpKTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIFQqIGVuc3VyZVNwZWNpYWwoVComIGZpZWxkLCBB
cmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewpAQCAtMTEyMiw3ICsxMjIzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6
OlN0YWNrQXJndW1lbnQ6CiAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjpjYWxsQXJnKHZhbHVl
LnJlcCgpLm9mZnNldEZyb21TUCgpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1
ZS52YWx1ZSgpLCBhcmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1vdmVGb3JUeXBl
KHZhbHVlLnZhbHVlKCktPnR5cGUoKSksIHZhbHVlLnZhbHVlKCksIGFyZyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTYwLDYgKzIwNjEsMzEzIEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kWDg2RGl2KEIz
OjpPcGNvZGUgb3ApCisgICAgeworICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVX
b3JkOworICAgICAgICBBaXI6Ok9wY29kZSBkaXY7CisgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+
dHlwZSgpKSB7CisgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICBjb252ZXJ0VG9Eb3Vi
bGVXb3JkID0gWDg2Q29udmVydFRvRG91YmxlV29yZDMyOworICAgICAgICAgICAgZGl2ID0gWDg2
RGl2MzI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAg
ICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0OworICAgICAg
ICAgICAgZGl2ID0gWDg2RGl2NjQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8IG9wID09
IE1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9PSBEaXYgPyBtX2VheCA6IG1fZWR4Owor
CisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBtX2VheCk7Cisg
ICAgICAgIGFwcGVuZChjb252ZXJ0VG9Eb3VibGVXb3JkLCBtX2VheCwgbV9lZHgpOworICAgICAg
ICBhcHBlbmQoZGl2LCBtX2VheCwgbV9lZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOworICAg
ICAgICBhcHBlbmQoTW92ZSwgcmVzdWx0LCB0bXAobV92YWx1ZSkpOworICAgIH0KKworICAgIHZv
aWQgYXBwZW5kWDg2VURpdihCMzo6T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgQWlyOjpPcGNv
ZGUgZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0
OworCisgICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVNb2QpOworICAgICAgICBU
bXAgcmVzdWx0ID0gb3AgPT0gVURpdiA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5k
KE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKFhv
cjY0LCBtX2VkeCwgbV9lZHgpOworICAgICAgICBhcHBlbmQoZGl2LCBtX2VheCwgbV9lZHgsIHRt
cChtX3ZhbHVlLT5jaGlsZCgxKSkpOworICAgICAgICBhcHBlbmQoTW92ZSwgcmVzdWx0LCB0bXAo
bV92YWx1ZSkpOworICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBsb2FkTGlua09wY29kZShX
aWR0aCB3aWR0aCwgYm9vbCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmZW5jZSA/IE9Q
Q09ERV9GT1JfV0lEVEgoTG9hZExpbmtBY3EsIHdpZHRoKSA6IE9QQ09ERV9GT1JfV0lEVEgoTG9h
ZExpbmssIHdpZHRoKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVDb25kT3Bj
b2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZlbmNl
ID8gT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmRSZWwsIHdpZHRoKSA6IE9QQ09ERV9GT1JfV0lE
VEgoU3RvcmVDb25kLCB3aWR0aCk7CisgICAgfQorICAgIAorICAgIC8vIFRoaXMgY2FuIGVtaXQg
Y29kZSBmb3IgdGhlIGZvbGxvd2luZyBwYXR0ZXJuczoKKyAgICAvLyBBdG9taWNXZWFrQ0FTCisg
ICAgLy8gQml0WG9yKEF0b21pY1dlYWtDQVMsIDEpCisgICAgLy8gQXRvbWljU3Ryb25nQ0FTCisg
ICAgLy8gRXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkKKyAgICAvLyBOb3RFcXVhbChB
dG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKQorICAgIC8vIEJyYW5jaChBdG9taWNXZWFrQ0FTKQor
ICAgIC8vIEJyYW5jaChFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKSkKKyAgICAvLyBC
cmFuY2goTm90RXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAgLy8KKyAgICAv
LyBJdCBhc3N1bWVzIHRoYXQgYXRvbWljVmFsdWUgcG9pbnRzIHRvIHRoZSBDQVMsIGFuZCBtX3Zh
bHVlIHBvaW50cyB0byB0aGUgaW5zdHJ1Y3Rpb24gYmVpbmcKKyAgICAvLyBnZW5lcmF0ZWQuIEl0
IGFzc3VtZXMgdGhhdCB5b3UndmUgY29uc3VtZWQgZXZlcnl0aGluZyB0aGF0IG5lZWRzIHRvIGJl
IGNvbnN1bWVkLgorICAgIHZvaWQgYXBwZW5kQ0FTKFZhbHVlKiBhdG9taWNWYWx1ZSwgYm9vbCBp
bnZlcnQpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gYXRvbWljVmFsdWUt
PmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChhdG9taWMpOworICAg
ICAgICAKKyAgICAgICAgYm9vbCBpc0JyYW5jaCA9IG1fdmFsdWUtPm9wY29kZSgpID09IEJyYW5j
aDsKKyAgICAgICAgYm9vbCBpc1N0cm9uZyA9IGF0b21pYy0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ry
b25nQ0FTOworICAgICAgICBib29sIHJldHVybnNPbGRWYWx1ZSA9IG1fdmFsdWUtPm9wY29kZSgp
ID09IEF0b21pY1N0cm9uZ0NBUzsKKyAgICAgICAgYm9vbCBoYXNGZW5jZSA9IGF0b21pYy0+aGFz
RmVuY2UoKTsKKyAgICAgICAgCisgICAgICAgIFdpZHRoIHdpZHRoID0gYXRvbWljLT5hY2Nlc3NX
aWR0aCgpOworICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKworICAgICAgICBU
bXAgdmFsdWVSZXN1bHRUbXA7CisgICAgICAgIFRtcCBib29sUmVzdWx0VG1wOworICAgICAgICBp
ZiAocmV0dXJuc09sZFZhbHVlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghaW52ZXJ0
KTsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOworICAgICAgICAg
ICAgYm9vbFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICB9IGVsc2UgaWYg
KGlzQnJhbmNoKSB7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAo
R1ApOworICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1w
KEdQKTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSB0bXAobV92YWx1ZSk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIFRtcCBzdWNjZXNzQm9vbFJlc3VsdFRtcDsKKyAgICAgICAg
aWYgKGlzU3Ryb25nICYmICFpc0JyYW5jaCkKKyAgICAgICAgICAgIHN1Y2Nlc3NCb29sUmVzdWx0
VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN1Y2Nl
c3NCb29sUmVzdWx0VG1wID0gYm9vbFJlc3VsdFRtcDsKKworICAgICAgICBUbXAgZXhwZWN0ZWRW
YWx1ZVRtcCA9IHRtcChhdG9taWMtPmNoaWxkKDApKTsKKyAgICAgICAgVG1wIG5ld1ZhbHVlVG1w
ID0gdG1wKGF0b21pYy0+Y2hpbGQoMSkpOworICAgICAgICAKKyAgICAgICAgQWlyOjpGcmVxdWVu
dGVkQmxvY2sgc3VjY2VzczsKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sgZmFpbHVyZTsK
KyAgICAgICAgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gbV9ibG9ja1Rv
QmxvY2tbbV9ibG9ja10tPnN1Y2Nlc3NvcihpbnZlcnQpOworICAgICAgICAgICAgZmFpbHVyZSA9
IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoIWludmVydCk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBhcHBlbmQocmVs
YXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+YWNjZXNzVHlwZSgpKSwgaW1tT3JUbXAoYXRvbWljLT5j
aGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdHJvbmdDQVMsIHdp
ZHRoKSwgbV9lYXgsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBhcHBl
bmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+YWNjZXNzVHlwZSgpKSwgbV9lYXgsIHZhbHVl
UmVzdWx0VG1wKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAg
ICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChCcmFuY2hBdG9taWNTdHJvbmdDQVMsIHdp
ZHRoKSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgsIG5l
d1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1ttX2Js
b2NrXS0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCBmYWlsdXJlKTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0cm9uZ0NB
Uywgd2lkdGgpLCBBcmc6OnN0YXR1c0NvbmQoaW52ZXJ0ID8gTWFjcm9Bc3NlbWJsZXI6OkZhaWx1
cmUgOiBNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCB0bXAoYXRvbWljLT5jaGlsZCgx
KSksIGFkZHJlc3MsIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOworICAgICAg
ICAvLyBXZSB3aXNoIHRvIGVtaXQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJsb2NrICNyZWxv
b3A6CisgICAgICAgIC8vICAgICBMb2FkTGluaworICAgICAgICAvLyAgICAgQnJhbmNoIE5vdEVx
dWFsCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogVGhlbjojZmFpbCwgRWxzZTogI3N0b3JlCisg
ICAgICAgIC8vIEJsb2NrICNzdG9yZToKKyAgICAgICAgLy8gICAgIFN0b3JlQ29uZAorICAgICAg
ICAvLyAgICAgWG9yICQxLCAlcmVzdWx0ICAgIDwtLS0gb25seSBpZiAhaW52ZXJ0CisgICAgICAg
IC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAgICAgICAgLy8g
QmxvY2sgI2ZhaWw6CisgICAgICAgIC8vICAgICBNb3ZlICRpbnZlcnQsICVyZXN1bHQKKyAgICAg
ICAgLy8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAgICAv
LyBCbG9jayAjZG9uZToKKyAgICAgICAgCisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogcmVsb29w
QmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0b3JlQmxvY2sg
PSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN1Y2Nlc3NCbG9jayA9IG51
bGxwdHI7CisgICAgICAgIGlmICghaXNCcmFuY2ggJiYgaXNTdHJvbmcpCisgICAgICAgICAgICBz
dWNjZXNzQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGZhaWxC
bG9jayA9IG51bGxwdHI7CisgICAgICAgIGlmICghaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIGZh
aWxCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgICAgICBmYWlsdXJlID0gZmFpbEJsb2NrOwor
ICAgICAgICB9CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3Ryb25nRmFpbEJsb2NrOworICAg
ICAgICBpZiAoaXNTdHJvbmcgJiYgaGFzRmVuY2UpCisgICAgICAgICAgICBzdHJvbmdGYWlsQmxv
Y2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBjb21wYXJpc29u
RmFpbCA9IGZhaWx1cmU7CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIHdlYWtGYWlsOwor
ICAgICAgICBpZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgIGlmIChoYXNGZW5jZSkKKyAgICAg
ICAgICAgICAgICBjb21wYXJpc29uRmFpbCA9IHN0cm9uZ0ZhaWxCbG9jazsKKyAgICAgICAgICAg
IHdlYWtGYWlsID0gcmVsb29wQmxvY2s7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgIHdl
YWtGYWlsID0gZmFpbHVyZTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOwor
ICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhi
ZWdpbkJsb2NrLCBkb25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFpcjo6SnVt
cCk7CisgICAgICAgIGJlZ2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAg
ICAgICAKKyAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChsb2FkTGlua09wY29kZSh3aWR0aCwg
YXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgYWRkcmVzcywgdmFsdWVSZXN1bHRUbXApOwor
ICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEJy
YW5jaCwgd2lkdGgpLCBtX3ZhbHVlLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsKSwgdmFsdWVSZXN1bHRUbXAsIGV4cGVjdGVkVmFsdWVUbXApOworICAgICAgICByZWxvb3BC
bG9jay0+c2V0U3VjY2Vzc29ycyhjb21wYXJpc29uRmFpbCwgc3RvcmVCbG9jayk7CisgICAgICAg
IAorICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9t
aWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZVRtcCwgYWRkcmVzcywgc3VjY2Vzc0Jv
b2xSZXN1bHRUbXApOworICAgICAgICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHN0b3Jl
QmxvY2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fz
c2VtYmxlcjo6WmVybyksIGJvb2xSZXN1bHRUbXAsIGJvb2xSZXN1bHRUbXApOworICAgICAgICAg
ICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCB3ZWFrRmFpbCk7CisgICAgICAg
ICAgICBkb25lQmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigpOworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWRvbmVCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGRvbmVCbG9jay0+YXBw
ZW5kKEFpcjo6T29wcywgbV92YWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
ZiAoaXNTdHJvbmcpIHsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNo
VGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBzdWNj
ZXNzQm9vbFJlc3VsdFRtcCwgc3VjY2Vzc0Jvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgICAg
IHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMoc3VjY2Vzc0Jsb2NrLCByZWxvb3BCbG9jayk7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5hcHBlbmQoTW92
ZSwgbV92YWx1ZSwgQXJnOjppbW0oIWludmVydCksIGJvb2xSZXN1bHRUbXApOworICAgICAgICAg
ICAgICAgIHN1Y2Nlc3NCbG9jay0+YXBwZW5kKEFpcjo6SnVtcCwgbV92YWx1ZSk7CisgICAgICAg
ICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghaW52ZXJ0KQorICAgICAgICAgICAg
ICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoWG9yMzIsIG1fdmFsdWUsIEFyZzo6Yml0SW1tKDEp
LCBib29sUmVzdWx0VG1wLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKE1vdmUs
IG1fdmFsdWUsIEFyZzo6aW1tKGludmVydCksIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAg
ZmFpbEJsb2NrLT5hcHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgIGZhaWxC
bG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoaXNTdHJvbmcgJiYgaGFzRmVuY2UpIHsKKyAgICAgICAgICAgIFRtcCB0bXAgPSBt
X2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKHN0
b3JlQ29uZE9wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgdmFsdWVS
ZXN1bHRUbXAsIGFkZHJlc3MsIHRtcCk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPmFw
cGVuZChCcmFuY2hUZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6
WmVybyksIHRtcCwgdG1wKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+c2V0U3VjY2Vz
c29ycyhmYWlsdXJlLCByZWxvb3BCbG9jayk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
Ym9vbCBhcHBlbmRWb2lkQXRvbWljKEFpcjo6T3Bjb2RlIGF0b21pY09wY29kZSkKKyAgICB7Cisg
ICAgICAgIGlmIChtX3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKG1fdmFsdWUp
OworICAgICAgICAKKyAgICAgICAgaWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwgQXJnOjpJ
bW0sIGFkZHJlc3Mua2luZCgpKSAmJiBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAg
ICAgICBhcHBlbmQoYXRvbWljT3Bjb2RlLCBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRyZXNz
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAoaXNWYWxpZEZvcm0oYXRvbWljT3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkp
KSB7CisgICAgICAgICAgICBhcHBlbmQoYXRvbWljT3Bjb2RlLCB0bXAobV92YWx1ZS0+Y2hpbGQo
MCkpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5k
R2VuZXJhbEF0b21pYyhBaXI6Ok9wY29kZSBvcGNvZGUsIENvbW11dGF0aXZpdHkgY29tbXV0YXRp
dml0eSA9IE5vdENvbW11dGF0aXZlKQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21p
YyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAKKyAgICAgICAgQXJnIGFk
ZHJlc3MgPSBhZGRyKG1fdmFsdWUpOworICAgICAgICBUbXAgb2xkVmFsdWUgPSBtX2NvZGUubmV3
VG1wKEdQKTsKKyAgICAgICAgVG1wIG5ld1ZhbHVlID0gb3Bjb2RlID09IEFpcjo6Tm9wID8gdG1w
KGF0b21pYy0+Y2hpbGQoMCkpIDogbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIAorICAgICAg
ICAvLyBXZSBuZWVkIGEgQ0FTIGxvb3Agb3IgYSBMTC9TQyBsb29wLiBVc2luZyBwcmVwYXJlL2F0
dGVtcHQgamFyZ29uLCB3ZSB3YW50OgorICAgICAgICAvLworICAgICAgICAvLyBCbG9jayAjcmVs
b29wOgorICAgICAgICAvLyAgICAgUHJlcGFyZQorICAgICAgICAvLyAgICAgb3Bjb2RlCisgICAg
ICAgIC8vICAgICBBdHRlbXB0CisgICAgICAgIC8vICAgU3VjY2Vzc29yczogVGhlbjojZG9uZSwg
RWxzZTojcmVsb29wCisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAgICAvLyAgICAgTW92
ZSBvbGRWYWx1ZSwgcmVzdWx0CisgICAgICAgIAorICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVG
b3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgb2xkVmFsdWUsIHRtcChhdG9taWMpKTsKKyAgICAgICAg
CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogcmVsb29wQmxvY2sgPSBuZXdCbG9jaygpOworICAg
ICAgICBBaXI6OkJhc2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFpcjo6QmFzaWNCbG9j
ayogZG9uZUJsb2NrOworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ssIGRvbmVCbG9jayk7
CisgICAgICAgIAorICAgICAgICBhcHBlbmQoQWlyOjpKdW1wKTsKKyAgICAgICAgYmVnaW5CbG9j
ay0+c2V0U3VjY2Vzc29ycyhyZWxvb3BCbG9jayk7CisgICAgICAgIAorICAgICAgICBBaXI6Ok9w
Y29kZSBwcmVwYXJlT3Bjb2RlOworICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAg
c3dpdGNoIChhdG9taWMtPmFjY2Vzc1dpZHRoKCkpIHsKKyAgICAgICAgICAgIGNhc2UgV2lkdGg4
OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoMTY6CisgICAg
ICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IExvYWQxNlNpZ25lZEV4dGVuZFRvMzI7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgICAg
ICAgICAgcHJlcGFyZU9wY29kZSA9IE1vdmUzMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0g
TW92ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAg
ICBwcmVwYXJlT3Bjb2RlID0gbG9hZExpbmtPcGNvZGUoYXRvbWljLT5hY2Nlc3NXaWR0aCgpLCBh
dG9taWMtPmhhc0ZlbmNlKCkpOworICAgICAgICB9CisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBl
bmQocHJlcGFyZU9wY29kZSwgbV92YWx1ZSwgYWRkcmVzcywgb2xkVmFsdWUpOworICAgICAgICAK
KyAgICAgICAgaWYgKG9wY29kZSAhPSBBaXI6Ok5vcCkgeworICAgICAgICAgICAgLy8gRklYTUU6
IElmIHdlIGV2ZXIgaGF2ZSB0byB3cml0ZSB0aGlzIGFnYWluLCB3ZSBuZWVkIHRvIGZpbmQgYSB3
YXkgdG8gc2hhcmUgdGhlIGNvZGUgd2l0aAorICAgICAgICAgICAgLy8gYXBwZW5kQmluT3AuCisg
ICAgICAgICAgICBpZiAoY29tbXV0YXRpdml0eSA9PSBDb21tdXRhdGl2ZSAmJiBpbW0oYXRvbWlj
LT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpUbXAsIEFy
Zzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92
YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgICAg
ICAgICAgZWxzZSBpZiAoaW1tKGF0b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29k
ZSwgQXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29w
QmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIG9sZFZhbHVlLCBpbW0oYXRvbWljLT5jaGls
ZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbW11dGF0aXZpdHkgPT0g
Q29tbXV0YXRpdmUgJiYgYml0SW1tKGF0b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9w
Y29kZSwgQXJnOjpCaXRJbW0sIEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAg
cmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIGJpdEltbShhdG9taWMtPmNoaWxk
KDApKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzVmFsaWRG
b3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAg
ICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIG9sZFZhbHVlLCB0bXAoYXRv
bWljLT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlw
ZSgpKSwgbV92YWx1ZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAo
aW1tKGF0b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpJbW0sIEFy
Zzo6VG1wKSkKKyAgICAgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUs
IG1fdmFsdWUsIGltbShhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUs
IG1fdmFsdWUsIHRtcChhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIEFpcjo6
T3Bjb2RlIGNhc09wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNoQXRvbWljU3Ryb25nQ0FT
LCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVu
ZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBtX3ZhbHVlLCBvbGRWYWx1ZSwg
bV9lYXgpOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChjYXNPcGNvZGUsIG1fdmFs
dWUsIEFyZzo6c3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCBuZXdW
YWx1ZSwgYWRkcmVzcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpc0FSTTY0KCkpOworICAgICAgICAgICAgVG1wIGJvb2xSZXN1bHQgPSBtX2NvZGUubmV3
VG1wKEdQKTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2Rl
KGF0b21pYy0+YWNjZXNzV2lkdGgoKSwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgbmV3
VmFsdWUsIGFkZHJlc3MsIGJvb2xSZXN1bHQpOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFw
cGVuZChCcmFuY2hUZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6
WmVybyksIGJvb2xSZXN1bHQsIGJvb2xSZXN1bHQpOworICAgICAgICB9CisgICAgICAgIHJlbG9v
cEJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jaywgcmVsb29wQmxvY2spOworICAgIH0KKyAg
ICAKICAgICB2b2lkIGxvd2VyKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bj
b2RlKCkpIHsKQEAgLTE5NzAsMzAgKzIzNzgsNTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgTG9hZDogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBw
aW5nSW5zdChtX3ZhbHVlLCBtb3ZlRm9yVHlwZShtX3ZhbHVlLT50eXBlKCkpLCBtX3ZhbHVlLCBh
ZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9IEFpcjo6T29wczsKKyAgICAgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNl
KCkpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG1lbW9yeS0+dHlwZSgpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFj
cTMyOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIElu
dDY0OgorICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNxNjQ7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIG9wY29kZSA9IG1vdmVGb3JUeXBlKG1lbW9yeS0+dHlwZSgpKTsKKyAgICAgICAgICAg
IGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFs
dWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgTG9hZDhTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJh
cHBpbmdJbnN0KG1fdmFsdWUsIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkciht
X3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUg
PSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4U2lnbmVk
RXh0ZW5kVG8zMiA6IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0
cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAo
bV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNh
c2UgTG9hZDhaOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExv
YWQ4LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAg
IEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5j
ZSgpID8gTG9hZEFjcTggOiBMb2FkODsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3Qo
bV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2Uzog
ewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTZTaWduZWRF
eHRlbmRUbzMyLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAg
ICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5o
YXNGZW5jZSgpID8gTG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiA6IExvYWQxNlNpZ25lZEV4dGVu
ZFRvMzI7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwg
bV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQxNlo6IHsKLSAgICAgICAgICAgIGFw
cGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDE2LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUp
LCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFs
dWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcTE2IDogTG9hZDE2Owor
ICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUs
IGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFkZDogewogICAgICAgICAgICAg
aWYgKHRyeUFwcGVuZExlYSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwOTEsNyAr
MjUxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNDaGlsbCgpKQog
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CiAgICAgICAgICAgICBp
ZiAoaXNJbnQobV92YWx1ZS0+dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAg
bG93ZXJYODZEaXYoRGl2KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZEaXYoRGl2KTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQo
IWlzWDg2KCkgfHwgaXNGbG9hdChtX3ZhbHVlLT50eXBlKCkpKTsKQEAgLTIxMDIsNyArMjUzMCw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBVRGl2OiB7CiAgICAgICAgICAgICBpZiAoaXNJ
bnQobV92YWx1ZS0+dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJY
ODZVRGl2KFVEaXYpOworICAgICAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVURpdik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0yMTE2LDEzICsyNTQ0LDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTW9kOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpc1g4NigpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZhbHVlLT5pc0No
aWxsKCkpOwotICAgICAgICAgICAgbG93ZXJYODZEaXYoTW9kKTsKKyAgICAgICAgICAgIGFwcGVu
ZFg4NkRpdihNb2QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBVTW9kOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4NigpKTsKLSAgICAg
ICAgICAgIGxvd2VyWDg2VURpdihVTW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVU1v
ZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjE2MSwxMCArMjU4OSwy
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8Tm90MzIsIE5vdDY0Piht
X3ZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGlzIHBhdHRlcm4gaXMgc3VwZXIgdXNl
ZnVsIG9uIGJvdGggeDg2IGFuZCBBUk02NCwgc2luY2UgdGhlIGludmVyc2lvbiBvZiB0aGUgQ0FT
IHJlc3VsdAorICAgICAgICAgICAgLy8gY2FuIGJlIGRvbmUgd2l0aCB6ZXJvIGNvc3Qgb24geDg2
IChqdXN0IGZsaXAgdGhlIHNldCBmcm9tIEUgdG8gTkUpIGFuZCBpdCdzIGEgcHJvZ3Jlc3Npb24K
KyAgICAgICAgICAgIC8vIG9uIEFSTTY0IChzaW5jZSBTVFggcmV0dXJucyAwIG9uIHN1Y2Nlc3Ms
IHNvIG9yZGluYXJpbHkgd2UgaGF2ZSB0byBmbGlwIGl0KS4KKyAgICAgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgxKS0+aXNJbnQoMSkKKyAgICAgICAgICAgICAgICAmJiBpc0F0b21pY0NBUyht
X3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRl
cm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5h
bChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUt
PmNoaWxkKDApLCB0cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPFhvcjMyLCBYb3I2NCwgWG9y
RG91YmxlLCBYb3JGbG9hdCwgQ29tbXV0YXRpdmU+KAogICAgICAgICAgICAgICAgIG1fdmFsdWUt
PmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAgICAgICAgIGFwcGVuZFVuT3A8RGVwZW5k
MzIsIERlcGVuZDY0PihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KIAogICAgICAgICBjYXNlIFNobDogewogICAgICAgICAgICAgaWYgKG1fdmFsdWUt
PmNoaWxkKDEpLT5pc0ludDMyKDEpKSB7CkBAIC0yMjY1LDcgKzI3MTEsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5kU3Rv
cmUodmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3Jl
KG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTIyODYsNyArMjczMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcHBl
bmRTdG9yZShBaXI6OlN0b3JlOCwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAg
ICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIzMDcsNyArMjc1Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBhcHBlbmRTdG9yZShBaXI6OlN0b3JlMTYsIHZhbHVlVG9TdG9yZSwgYWRk
cihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFs
dWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDE1LDcgKzI4NjEs
MjIgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAg
IGNhc2UgTm90RXF1YWw6CisgICAgICAgIGNhc2UgTm90RXF1YWw6IHsKKyAgICAgICAgICAgIGlm
IChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAgICAg
ICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApID09IG1fdmFsdWUtPmNoaWxk
KDEpCisgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkp
IHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUtPmNo
aWxkKDApLT5jaGlsZCgxKSkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29u
dGFpbnMobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBjb21taXRJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAg
YXBwZW5kQ0FTKG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBOb3RFcXVh
bCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNyZWF0ZUNvbXBhcmUobV92
YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBMZXNzVGhhbjoKICAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAgICAg
Y2FzZSBMZXNzRXF1YWw6CkBAIC0yNzI2LDYgKzMxODcsNDAgQEAgcHJpdmF0ZToKICAgICAgICAg
fQogCiAgICAgICAgIGNhc2UgQnJhbmNoOiB7CisgICAgICAgICAgICBpZiAoY2FuQmVJbnRlcm5h
bChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogYnJhbmNoQ2hp
bGQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyYW5jaENo
aWxkLT5vcGNvZGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAg
ICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQsIGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNl
IEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICAgICAgLy8gQSBicmFuY2ggaXMgYSBj
b21wYXJpc29uIHRvIHplcm8uCisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+
Y2hpbGQoMCktPmlzSW50KDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRl
cm5hbChicmFuY2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJh
bmNoQ2hpbGQsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEVxdWFsOgorICAgICAgICAgICAgICAgIGNh
c2UgTm90RXF1YWw6CisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQo
MCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICAgICAgICAg
JiYgY2FuQmVJbnRlcm5hbChicmFuY2hDaGlsZC0+Y2hpbGQoMCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAmJiBicmFuY2hDaGlsZC0+Y2hpbGQoMCktPmNoaWxkKDApID09IGJyYW5jaENoaWxk
LT5jaGlsZCgxKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJh
bmNoQ2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNo
Q2hpbGQtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFu
Y2hDaGlsZC0+Y2hpbGQoMCksIGJyYW5jaENoaWxkLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnN0cy5s
YXN0KCkuYXBwZW5kKGNyZWF0ZUJyYW5jaChtX3ZhbHVlLT5jaGlsZCgwKSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNzgzLDcgKzMyNzgsODEgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGFwcGVuZChBaXI6OkVudHJ5U3dpdGNoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAg
ICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgIGFwcGVuZENBUyhtX3Zh
bHVlLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVl
KiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChh
cHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQWRkLCBhdG9taWMtPmFjY2Vz
c1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgb3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnQWRkLCBhdG9taWMtPmFjY2Vz
c1dpZHRoKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAs
IGFkZHJlc3Mua2luZCgpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZv
clR5cGUoYXRvbWljLT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9taWMp
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVzcyk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBh
cHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEFkZCwgYXRvbWlj
LT5hY2Nlc3NXaWR0aCgpKSwgQ29tbXV0YXRpdmUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOiB7CisgICAgICAgICAgICBBdG9t
aWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAg
ICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1N1YiwgYXRvbWlj
LT5hY2Nlc3NXaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
CisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJ
RFRIKFN1YiwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6IHsKKyAg
ICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4o
KTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRv
bWljQW5kLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZP
Ul9DQU5PTklDQUxfV0lEVEgoQW5kLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpLCBDb21tdXRhdGl2
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEF0b21pY1hjaGdPcjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9
IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRB
dG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNPciwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBl
bmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKE9yLCBhdG9taWMtPmFj
Y2Vzc1dpZHRoKCkpLCBDb21tdXRhdGl2ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6IHsKKyAgICAgICAg
ICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAg
ICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWG9y
LCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5P
TklDQUxfV0lEVEgoWG9yLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpLCBDb21tdXRhdGl2ZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IEF0b21pY1hjaGc6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVl
LT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXJnIGFkZHJl
c3MgPSBhZGRyKGF0b21pYyk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENP
REVfRk9SX1dJRFRIKEF0b21pY1hjaGcsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSk7CisgICAgICAg
ICAgICBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7
CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUo
KSksIHRtcChhdG9taWMtPmNoaWxkKDApKSwgdG1wKGF0b21pYykpOworICAgICAgICAgICAgICAg
IGFwcGVuZChvcGNvZGUsIHRtcChhdG9taWMpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdl
bmVyYWxBdG9taWMoQWlyOjpOb3ApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0yNzkxLDY0ICszMzYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgZGF0YUxvZygiRkFU
QUw6IGNvdWxkIG5vdCBsb3dlciAiLCBkZWVwRHVtcChtX3Byb2NlZHVyZSwgbV92YWx1ZSksICJc
biIpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLQotICAg
IHZvaWQgbG93ZXJYODZEaXYoQjM6Ok9wY29kZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwg
Q1BVKFg4Nl82NCkKLSAgICAgICAgVG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0g
ICAgICAgIFRtcCBlZHggPSBUbXAoWDg2UmVnaXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6
T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKLSAg
ICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBJbnQzMjoKLSAg
ICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7
Ci0gICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEludDY0OgotICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZl
cnRUb1F1YWRXb3JkNjQ7Ci0gICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFT
U0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKLSAgICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdp
c3RlcklEIHJlc3VsdCA9IG9wID09IERpdiA/IFg4NlJlZ2lzdGVyczo6ZWF4IDogWDg2UmVnaXN0
ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSks
IGVheCk7Ci0gICAgICAgIGFwcGVuZChjb252ZXJ0VG9Eb3VibGVXb3JkLCBlYXgsIGVkeCk7Ci0g
ICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAg
ICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOwotCi0jZWxzZQot
ICAgICAgICBVTlVTRURfUEFSQU0ob3ApOwotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgbG93ZXJYODZVRGl2KEIzOjpPcGNvZGUg
b3ApCi0gICAgewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXgg
PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lz
dGVyczo6ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkg
PT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7Ci0KLSAgICAgICAgQVNTRVJUKG9wID09
IFVEaXYgfHwgb3AgPT0gVU1vZCk7Ci0gICAgICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCBy
ZXN1bHQgPSBvcCA9PSBVRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBYODZSZWdpc3RlcnM6OmVk
eDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgZWF4KTsK
LSAgICAgICAgYXBwZW5kKFhvcjY0LCBlZHgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVh
eCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRt
cChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9w
KTsKLSAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0K
KyAgICAKICAgICBJbmRleFNldDxWYWx1ZT4gbV9sb2NrZWQ7IC8vIFRoZXNlIGFyZSB2YWx1ZXMg
dGhhdCB3aWxsIGhhdmUgbm8gVG1wIGluIEFpci4KICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBt
X3ZhbHVlVG9UbXA7IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCBtdXN0IGhhdmUgYSBUbXAgaW4g
QWlyLiBXZSBzYXkgdGhhdCBhIFZhbHVlKiB3aXRoIGEgbm9uLW51bGwgVG1wIGlzICJwaW5uZWQi
LgogICAgIEluZGV4TWFwPFZhbHVlLCBUbXA+IG1fcGhpVG9UbXA7IC8vIEVhY2ggUGhpIGdldHMg
aXRzIG93biBUbXAuCkBAIC0yODYzLDcgKzMzNzUsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9y
PFZlY3RvcjxJbnN0LCA0Pj4gbV9pbnN0czsKICAgICBWZWN0b3I8SW5zdD4gbV9wcm9sb2d1ZTsK
LQorICAgIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBtX2Jsb2NrOwogICAgIGJvb2wgbV9pc1JhcmU7
CiAgICAgdW5zaWduZWQgbV9pbmRleDsKQEAgLTI4NzQsNiArMzM4NiwxMiBAQCBwcml2YXRlOgog
CiAgICAgUHJvY2VkdXJlJiBtX3Byb2NlZHVyZTsKICAgICBDb2RlJiBtX2NvZGU7CisKKyAgICBB
aXI6OkJsb2NrSW5zZXJ0aW9uU2V0IG1fYmxvY2tJbnNlcnRpb25TZXQ7CisKKyAgICBUbXAgbV9l
YXg7CisgICAgVG1wIG1fZWN4OworICAgIFRtcCBtX2VkeDsKIH07CiAKIH0gLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuaAko
cmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsKIGNsYXNzIFByb2NlZHVyZTsKIG5hbWVzcGFjZSBBaXIgeyBjbGFzcyBDb2Rl
OyB9CiAKLS8vIFRoaXMgbG93ZXJzIHRoZSBjdXJyZW50IEIzIHByb2NlZHVyZSB0byBhbiBBaXIg
Y29kZS4KKy8vIFRoaXMgbG93ZXJzIHRoZSBjdXJyZW50IEIzIHByb2NlZHVyZSB0byBhbiBBaXIg
Y29kZS4gTm90ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGF0IHRoZSBwcm9jZWR1cmUgaXMgaW4KKy8v
IHF1aXJrcyBtb2RlLCBidXQgaXQgZG9lcyBub3QgYXNzZXJ0IHRoaXMsIHRvIHNpbXBsaWZ5IGhv
dyB3ZSB3cml0ZSB0ZXN0cy4KIAogSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBsb3dlclRvQWlyKFBy
b2NlZHVyZSYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFs
dWUuY3BwCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNN
ZW1vcnlWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDM2ICsyOCwzNyBAQAogCiAjaWYg
RU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKKyNpbmNsdWRlICJC
M01lbW9yeVZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCisKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBNZW1vcnlWYWx1ZTo6fk1lbW9yeVZhbHVl
KCkKIHsKIH0KIAotc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0Citi
b29sIE1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0KGludDY0X3Qgb2Zmc2V0KSBjb25zdAogewot
ICAgIHN3aXRjaCAob3Bjb2RlKCkpIHsKLSAgICBjYXNlIExvYWQ4WjoKLSAgICBjYXNlIExvYWQ4
UzoKLSAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgY2FzZSBMb2FkMTZa
OgotICAgIGNhc2UgTG9hZDE2UzoKLSAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIHJldHVybiAy
OwotICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmV0dXJuIHNpemVvZlR5cGUodHlwZSgpKTsKLSAg
ICBjYXNlIFN0b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZShjaGlsZCgwKS0+dHlwZSgp
KTsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgcmV0dXJuIEIzOjppc1JlcHJlc2VudGFibGVB
czxpbnQzMl90PihvZmZzZXQpICYmIGlzTGVnYWxPZmZzZXQoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
b2Zmc2V0KSk7Cit9CisKK1R5cGUgTWVtb3J5VmFsdWU6OmFjY2Vzc1R5cGUoKSBjb25zdAorewor
ICAgIGlmIChpc0xvYWQoKSkKKyAgICAgICAgcmV0dXJuIHR5cGUoKTsKKyAgICAvLyBUaGlzIGhh
cHBlbnMgdG8gd29yayBmb3IgYXRvbWljcywgdG9vLiBUaGF0J3Mgd2h5IEF0b21pY1ZhbHVlIGRv
ZXMgbm90IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy4KKyAgICByZXR1cm4gY2hpbGQoMCktPnR5cGUo
KTsKIH0KIAotV2lkdGggTWVtb3J5VmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKK0JhbmsgTWVt
b3J5VmFsdWU6OmFjY2Vzc0JhbmsoKSBjb25zdAogewotICAgIHJldHVybiB3aWR0aEZvckJ5dGVz
KGFjY2Vzc0J5dGVTaXplKCkpOworICAgIHJldHVybiBiYW5rRm9yVHlwZShhY2Nlc3NUeXBlKCkp
OworfQorCitzaXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gYnl0ZXMoYWNjZXNzV2lkdGgoKSk7CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1
bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02
NSw4ICs2NiwxMSBAQCB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImCiAg
ICAgaWYgKG1fb2Zmc2V0KQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJvZmZzZXQgPSAiLCBt
X29mZnNldCk7CiAgICAgaWYgKChpc0xvYWQoKSAmJiBlZmZlY3RzKCkucmVhZHMgIT0gcmFuZ2Uo
KSkKLSAgICAgICAgfHwgKGlzU3RvcmUoKSAmJiBlZmZlY3RzKCkud3JpdGVzICE9IHJhbmdlKCkp
KQorICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVmZmVjdHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkK
KyAgICAgICAgfHwgaXNFeG90aWMoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicmFuZ2Ug
PSAiLCByYW5nZSgpKTsKKyAgICBpZiAoaXNFeG90aWMoKSkKKyAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiZmVuY2VSYW5nZSA9ICIsIGZlbmNlUmFuZ2UoKSk7CiB9CiAKIFZhbHVlKiBNZW1vcnlW
YWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKQEAgLTc0LDYgKzc4LDYyIEBAIFZhbHVlKiBNZW1vcnlW
YWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKICAgICByZXR1cm4gbmV3IE1lbW9yeVZhbHVlKCp0aGlz
KTsKIH0KIAorLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4
Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAorLy8gZGVzY3Jp
YmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtp
bmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zm
c2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIDogVmFsdWUo
Q2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQorICAgICwgbV9vZmZz
ZXQob2Zmc2V0KQorICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICAsIG1fZmVuY2VSYW5nZShmZW5j
ZVJhbmdlKQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAo
a2luZC5vcGNvZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNl
IExvYWQxNlo6CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAgICAgIEFTU0VSVCh0eXBl
ID09IEludDMyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0b3JlODoKKyAg
ICAgICAgY2FzZSBTdG9yZTE2OgorICAgICAgICBjYXNlIFN0b3JlOgorICAgICAgICAgICAgQVNT
RVJUKHR5cGUgPT0gVm9pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQor
CisvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1w
bGllZC4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4s
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFu
Z2UgZmVuY2VSYW5nZSkKKyAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBv
aW50ZXIsIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UpCit7CisgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2Ug
TG9hZDhaOgorICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAg
ICAgICBjYXNlIExvYWQxNlM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQor
CisvLyBVc2UgdGhpcyBmb3JtIGZvciBzdG9yZXMuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUo
S2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBp
bnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKKyAg
ICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50
ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgLCBtX3JhbmdlKHJhbmdlKQorICAgICwg
bV9mZW5jZVJhbmdlKGZlbmNlUmFuZ2UpCit7CisgICAgQVNTRVJUKEIzOjppc1N0b3JlKGtpbmQu
b3Bjb2RlKCkpKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBF
TkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFs
dWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1
ZS5oCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1v
cnlWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMjcgKzI3LDg2IEBACiAKICNpZiBFTkFC
TEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWlyQXJnLmgiCisjaW5jbHVkZSAiQjNCYW5rLmgiCiAj
aW5jbHVkZSAiQjNIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxvdyBmZW5j
ZWQgbWVtb3J5IGFjY2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVtb3J5VmFs
dWUgOiBwdWJsaWMgVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2lu
ZCBraW5kKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAg
IGNhc2UgTG9hZDhaOgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBMb2FkMTZa
OgotICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgY2Fz
ZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNTdG9yZShL
aW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAg
ICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9y
ZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNM
b2FkKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQpICYmICFp
c1N0b3JlKGtpbmQpOworICAgICAgICByZXR1cm4gaXNNZW1vcnlBY2Nlc3Moa2luZC5vcGNvZGUo
KSk7CiAgICAgfQogCiAgICAgfk1lbW9yeVZhbHVlKCk7CiAKICAgICBpbnQzMl90IG9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRPZmZzZXQoaW50MzJfdCBv
ZmZzZXQpIHsgbV9vZmZzZXQgPSBvZmZzZXQ7IH0KKyAgICAKKyAgICAvLyBZb3UgZG9uJ3QgaGF2
ZSB0byB3b3JyeSBhYm91dCB1c2luZyBsZWdhbCBvZmZzZXRzIHVubGVzcyB5b3UndmUgZW50ZXJl
ZCBxdWlya3MgbW9kZS4KKyAgICBib29sIGlzTGVnYWxPZmZzZXQoaW50MzJfdCBvZmZzZXQpIGNv
bnN0OworICAgIGJvb2wgaXNMZWdhbE9mZnNldChpbnQ2NF90IG9mZnNldCkgY29uc3Q7CisgICAg
CisgICAgLy8gQSBuZWNlc3NhcnkgY29uc2VxdWVuY2Ugb2YgTWVtb3J5VmFsdWUgaGF2aW5nIGFu
IG9mZnNldCBpcyB0aGF0IGl0IHBhcnRpY2lwYXRlcyBpbiBpbnN0cnVjdGlvbgorICAgIC8vIHNl
bGVjdGlvbi4gVGhpcyB0ZWxscyB5b3UgaWYgdGhpcyB3aWxsIGdldCBsb3dlcmVkIHRvIHNvbWV0
aGluZyB0aGF0IHJlcXVpcmVzIGFuIG9mZnNldGxlc3MKKyAgICAvLyBhZGRyZXNzLgorICAgIGJv
b2wgcmVxdWlyZXNTaW1wbGVBZGRyKCkgY29uc3Q7CiAKICAgICBjb25zdCBIZWFwUmFuZ2UmIHJh
bmdlKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZTsgfQogICAgIHZvaWQgc2V0UmFuZ2UoY29uc3Qg
SGVhcFJhbmdlJiByYW5nZSkgeyBtX3JhbmdlID0gcmFuZ2U7IH0KKyAgICAKKyAgICAvLyBUaGlz
IGlzIGFuIGFsaWFzIGZvciByYW5nZS4KKyAgICBjb25zdCBIZWFwUmFuZ2UmIGFjY2Vzc1Jhbmdl
KCkgY29uc3QgeyByZXR1cm4gcmFuZ2UoKTsgfQorICAgIHZvaWQgc2V0QWNjZXNzUmFuZ2UoY29u
c3QgSGVhcFJhbmdlJiByYW5nZSkgeyBzZXRSYW5nZShyYW5nZSk7IH0KKyAgICAKKyAgICBjb25z
dCBIZWFwUmFuZ2UmIGZlbmNlUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2ZlbmNlUmFuZ2U7IH0K
KyAgICB2b2lkIHNldEZlbmNlUmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5nZSkgeyBtX2ZlbmNl
UmFuZ2UgPSByYW5nZTsgfQorCisgICAgYm9vbCBpc1N0b3JlKCkgY29uc3QgeyByZXR1cm4gQjM6
OmlzU3RvcmUob3Bjb2RlKCkpOyB9CisgICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiBC
Mzo6aXNMb2FkKG9wY29kZSgpKTsgfQogCi0gICAgYm9vbCBpc1N0b3JlKCkgY29uc3QgeyByZXR1
cm4gdHlwZSgpID09IFZvaWQ7IH0KLSAgICBib29sIGlzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSAhPSBWb2lkOyB9CisgICAgYm9vbCBoYXNGZW5jZSgpIGNvbnN0IHsgcmV0dXJuICEhZmVu
Y2VSYW5nZSgpOyB9CisgICAgYm9vbCBpc0V4b3RpYygpIGNvbnN0IHsgcmV0dXJuIGhhc0ZlbmNl
KCkgfHwgaXNBdG9taWMob3Bjb2RlKCkpOyB9CiAKKyAgICBUeXBlIGFjY2Vzc1R5cGUoKSBjb25z
dDsKKyAgICBCYW5rIGFjY2Vzc0JhbmsoKSBjb25zdDsKICAgICBzaXplX3QgYWNjZXNzQnl0ZVNp
emUoKSBjb25zdDsKKyAgICAKICAgICBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0OwogCiBwcm90
ZWN0ZWQ6Ci0gICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVh
bSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJp
bnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZhbHVlKiBjbG9uZUltcGwoKSBjb25z
dCBvdmVycmlkZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBN
ZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2lu
IG9yaWdpbiwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNl
UmFuZ2UsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogVmFsdWUoQ2hlY2tlZE9w
Y29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBhcmd1bWVudHMuLi4pCisgICAgICAgICwgbV9vZmZz
ZXQob2Zmc2V0KQorICAgICAgICAsIG1fcmFuZ2UocmFuZ2UpCisgICAgICAgICwgbV9mZW5jZVJh
bmdlKGZlbmNlUmFuZ2UpCisgICAgeworICAgIH0KKyAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFByb2NlZHVyZTsKLQorICAgIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQg
KGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEg
c3VmZml4IHRoYXQKICAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgotICAgIE1l
bW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9p
bnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUs
IGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKLSAgICAgICAgLCBtX29mZnNldChvZmZzZXQp
Ci0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQotICAgIHsKLSAgICAgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkg
ewotICAgICAgICAgICAgY2FzZSBMb2FkOgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgICAg
IGNhc2UgTG9hZDE2WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAgICAgICAg
ICBBU1NFUlQodHlwZSA9PSBJbnQzMik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAg
IGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gVm9pZCk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQor
ICAgIE1lbW9yeVZhbHVlKEtpbmQsIFR5cGUsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMy
X3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJh
bmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZv
ciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KLSAgICBNZW1vcnlWYWx1
ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNl
dCA9IDApCi0gICAgICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRl
ciwgb2Zmc2V0KQotICAgIHsKLSAgICB9CisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBW
YWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFw
UmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKIAogICAg
IC8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQs
IE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zm
c2V0ID0gMCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBvcmln
aW4sIHZhbHVlLCBwb2ludGVyKQotICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAgICAg
LCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCi0gICAgewotICAgICAgICBpZiAoIUFTU0VSVF9E
SVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAg
ICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAg
IGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCisgICAgTWVtb3J5VmFs
dWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9m
ZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBm
ZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkpOworICAgIAogICAgIGludDMyX3QgbV9vZmZzZXQgeyAw
IH07Ci0gICAgSGVhcFJhbmdlIG1fcmFuZ2U7CisgICAgSGVhcFJhbmdlIG1fcmFuZ2UgeyBIZWFw
UmFuZ2U6OnRvcCgpIH07CisgICAgSGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhlYXBSYW5nZSgp
IH07CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNs
dWRlICJBaXJBcmcuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgeworCitpbmxpbmUgYm9vbCBNZW1vcnlWYWx1ZTo6aXNMZWdhbE9m
ZnNldChpbnQzMl90IG9mZnNldCkgY29uc3QKK3sKKyAgICAvLyBOT1RFOiBUaGlzIGlzIGlubGlu
ZSBiZWNhdXNlIGl0IGNvbnN0YW50LWZvbGRzIHRvIHRydWUgb24geDg2IQorICAgIAorICAgIC8v
IFNvIGZhciBvbmx5IFg4NiBhbGxvd3MgZXhvdGljIGxvYWRzIHRvIGhhdmUgYW4gb2Zmc2V0Lgor
ICAgIGlmIChyZXF1aXJlc1NpbXBsZUFkZHIoKSkKKyAgICAgICAgcmV0dXJuICFvZmZzZXQ7Cisg
ICAgCisgICAgcmV0dXJuIEFpcjo6QXJnOjppc1ZhbGlkQWRkckZvcm0ob2Zmc2V0LCBhY2Nlc3NX
aWR0aCgpKTsKK30KKworaW5saW5lIGJvb2wgTWVtb3J5VmFsdWU6OnJlcXVpcmVzU2ltcGxlQWRk
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc1g4NigpICYmIGlzRXhvdGljKCk7Cit9CisKK2lu
bGluZSBXaWR0aCBNZW1vcnlWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAoreworICAgIHN3aXRj
aCAob3Bjb2RlKCkpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBj
YXNlIFN0b3JlODoKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKKyAgICBjYXNlIExvYWQxNlo6Cisg
ICAgY2FzZSBMb2FkMTZTOgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICAgICAgcmV0dXJuIFdpZHRo
MTY7CisgICAgY2FzZSBMb2FkOgorICAgICAgICByZXR1cm4gd2lkdGhGb3JUeXBlKHR5cGUoKSk7
CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZShjaGlsZCgwKS0+
dHlwZSgpKTsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdD
QVM6CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAg
ICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBB
dG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIGFzPEF0
b21pY1ZhbHVlPigpLT5hY2Nlc3NXaWR0aCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXaWR0aDg7CisgICAgfQor
fQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3Bw
CShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNb3ZlQ29u
c3RhbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkIz
QmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKICNpbmNsdWRl
ICJCM0luc2VydGlvblNldElubGluZXMuaCIKLSNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisj
aW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1BoYXNlU2NvcGUu
aCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5s
aW5lcy5oIgpAQCAtMjAzLDEyICsyMDMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZVBvaW50ZXItPmhhc0ludFB0cigpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
cHRyX3Qgb2Zmc2V0ID0gZGVzaXJlZE9mZnNldChjYW5kaWRhdGVQb2ludGVyKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFCMzo6aXNSZXByZXNlbnRhYmxlQXM8aW50MzJf
dD4oc3RhdGljX2Nhc3Q8aW50NjRfdD4ob2Zmc2V0KSkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBBaXI6OkFyZzo6aXNWYWxpZEFkZHJGb3JtKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoRm9yQnl0ZXMobWVtb3J5VmFsdWUtPmFj
Y2Vzc0J5dGVTaXplKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf
dCBvZmZzZXQgPSBkZXNpcmVkT2Zmc2V0KGNhbmRpZGF0ZVBvaW50ZXIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3J5VmFsdWUtPmlzTGVnYWxPZmZzZXQob2Zm
c2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJlc3RQb2ludGVyKSB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFpdHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFpdHMuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFpdHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNs
dWRlICJCM0JhbmsuaCIKKyNpbmNsdWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgi
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IE5hdGl2ZVRyYWl0czsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGlu
dDhfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29u
c3QgV2lkdGggd2lkdGggPSBXaWR0aDg7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IElu
dDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQ4X3Q+IHsKKyAg
ICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdp
ZHRoID0gV2lkdGg4OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxpbnQxNl90PiB7CisgICAgc3RhdGljIGNv
bnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRo
MTY7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQxNl90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsg
YmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoMTY7CisgICAg
c3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
TmF0aXZlVHJhaXRzPGludDMyX3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7
CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAgICBzdGF0aWMgY29u
c3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFp
dHM8dWludDMyX3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3Rh
dGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0
eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50NjRf
dD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3Qg
V2lkdGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQ2
NDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czx1aW50NjRfdD4geworICAg
IHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lk
dGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQ2NDsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxmbG9hdD4geworICAgIHN0YXRpYyBjb25z
dCBCYW5rIGJhbmsgPSBGUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDMy
OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBGbG9hdDsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IE5hdGl2ZVRyYWl0czxkb3VibGU+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5r
ID0gRlA7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg2NDsKKyAgICBzdGF0
aWMgY29uc3QgVHlwZSB0eXBlID0gRG91YmxlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNPcGNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM09wY29kZS5jcHAJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM09wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw2ICs2OCwyMyBAQCBz
dGQ6Om9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJlKE9wCiAgICAgfQogfQogCitPcGNv
ZGUgc3RvcmVPcGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKGJh
bmspIHsKKyAgICBjYXNlIEdQOgorICAgICAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgICAgIGNh
c2UgV2lkdGg4OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlODsKKyAgICAgICAgY2FzZSBXaWR0
aDE2OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlMTY7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgICAgIH0KKyAgICBjYXNlIEZQOgorICAgICAgICBy
ZXR1cm4gU3RvcmU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFt
ZXNwYWNlIFdURiB7CkBAIC0yNjMsNiArMjgwLDMzIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBPcGMKICAgICBjYXNlIFN0b3JlOgogICAgICAgICBvdXQucHJpbnQoIlN0
b3JlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAg
IG91dC5wcmludCgiQXRvbWljV2Vha0NBUyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
dG9taWNTdHJvbmdDQVM6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljU3Ryb25nQ0FTIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgIG91dC5wcmlu
dCgiQXRvbWljWGNoZ0FkZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hn
QW5kOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdBbmQiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdP
ciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICBv
dXQucHJpbnQoIkF0b21pY1hjaGdTdWIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRv
bWljWGNoZ1hvcjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnWG9yIik7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIG91dC5wcmludCgiQXRvbWlj
WGNoZyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgIG91dC5w
cmludCgiRGVwZW5kIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFdhc21BZGRyZXNzOgog
ICAgICAgICBvdXQucHJpbnQoIldhc21BZGRyZXNzIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYg
KzI4LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNUeXBlLmgiCisjaW5j
bHVkZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtODIsNyArODMsNiBAQCBlbnVtIE9wY29kZSA6IGludDE2
X3QgewogICAgIE1vZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBhcyB0byB3aGF0IHdpbGwgaGFwcGVu
IHdoZW4geW91IGV4ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEgYW5kIHglMC4KICAgICBVTW9kLAog
Ci0KICAgICAvLyBQb2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90ZSB0aGF0IHdlIG9ubHkgbmVlZCB0
aGlzIGZvciBmbG9hdGluZyBwb2ludCwgc2luY2UgaW50ZWdlciBuZWdhdGlvbgogICAgIC8vIGlz
IGV4YWN0bHkgbGlrZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mgbm90IHRydWUgZm9yIGZsb2F0aW5n
IHBvaW50LiBTdWIoMCwgMCkgaXMgMCwgd2hpbGUKICAgICAvLyBOZWcoMCkgaXMgLTAuIEFsc28s
IHdlIGNhbm9uaWNhbGl6ZSBTdWIoMCwgeCkgaW50byBOZWcoeCkgaW4gY2FzZSBvZiBpbnRlZ2Vy
cy4KQEAgLTE2Miw2ICsxNjIsMTA3IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgU3Rv
cmUxNiwKICAgICAvLyBUaGlzIGlzIGEgcG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2
NCwgRmxvYXQsIGFuZCBEb3VibGUuCiAgICAgU3RvcmUsCisgICAgCisgICAgLy8gQXRvbWljIGNv
bXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIGEgYm9vbGVhbi4gTWF5IGNob29zZSB0byBkbyBu
b3RoaW5nIGFuZCByZXR1cm4gZmFsc2UuIFlvdSBjYW4KKyAgICAvLyB1c3VhbGx5IGFzc3VtZSB0
aGF0IHRoaXMgaXMgZmFzdGVyIGFuZCByZXN1bHRzIGluIGxlc3MgY29kZSB0aGFuIEF0b21pY1N0
cm9uZ0NBUywgdGhvdWdoIHRoYXQncworICAgIC8vIG5vdCBuZWNlc3NhcmlseSB0cnVlIG9uIElu
dGVsLCBpZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gZG9lcyBpdHMgam9iLiBJbWFnaW5lIHRoYXQg
dGhpcyBvcGNvZGUgaXMKKyAgICAvLyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAg
ICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gYm9vbCBBdG9taWNXZWFr
Q0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAv
LyAgICAgaWYgKCFyYW5kKCkpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFJlYWwg
d29ybGQgZXhhbXBsZSBvZiB0aGlzOiBjb250ZXh0IHN3aXRjaCBvbiBBUk0gd2hpbGUgZG9pbmcg
Q0FTLgorICAgIC8vICAgICBpZiAoKnB0ciAhPSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIC8vICAgICAqcHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAg
IHJldHVybiB0cnVlOworICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBhbGwgYXRv
bWljcyBwdXQgdGhlIHBvaW50ZXIgbGFzdCB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IGxvYWRz
IGFuZCBzdG9yZXMgd29yay4gVGhpcworICAgIC8vIGlzIGEgZ29vZnkgdHJhZGl0aW9uLCBidXQg
aXQncyBoYXJtbGVzcywgYW5kIGJldHRlciB0aGFuIGJlaW5nIGluY29uc2lzdGVudC4KKyAgICAv
LworICAgIC8vIE5vdGUgdGhhdCB3ZWFrIENBUyBoYXMgbm8gZmVuY2luZyBndWFyYW50ZWVzIHdo
ZW4gaXQgZmFpbHMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nCisgICAgLy8gdHJhbnNm
b3JtYXRpb24gaXMgYWx3YXlzIHZhbGlkOgorICAgIC8vCisgICAgLy8gQmVmb3JlOgorICAgIC8v
CisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIp
KQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAg
ICAvLworICAgIC8vIEFmdGVyOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goRXF1YWwo
TG9hZChwdHIpLCBleHBlY3RlZCkpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojYXR0
ZW1wdCwgRWxzZTojZmFpbAorICAgIC8vICAgICBCQiNhdHRlbXB0OgorICAgIC8vICAgICAgICAg
QnJhbmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBT
dWNjZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBCb3Ro
IGtpbmRzIG9mIENBUyBmb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgx
NikgaWdub3JlIHRoZSBpcnJlbGV2YW50IGJpdHMgb2YgdGhlCisgICAgLy8gaW5wdXQuCisgICAg
QXRvbWljV2Vha0NBUywKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0
IHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2ZSB0aGUgbm9uZGV0ZXJtaW5pc20g
b2YgV2Vha0NBUy4KKyAgICAvLyBUaGlzIGlzIGEgYml0IG1vcmUgY29kZSBhbmQgYSBiaXQgc2xv
d2VyIGluIHNvbWUgY2FzZXMsIHRob3VnaCBub3QgYnkgYSBsb3QuIEltYWdpbmUgdGhhdCB0aGlz
CisgICAgLy8gb3Bjb2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8v
CisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBUIEF0b21pY1N0cm9uZ0NBUyhU
IGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7CisgICAgLy8gICAg
IFQgb2xkVmFsdWUgPSAqcHRyOworICAgIC8vICAgICBpZiAob2xkVmFsdWUgPT0gZXhwZWN0ZWRW
YWx1ZSkKKyAgICAvLyAgICAgICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJu
IG9sZFZhbHVlCisgICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IEF0b21pY1dlYWtD
QVMgYW5kIEF0b21pY1N0cm9uZ0NBUyBzb3J0IG9mIGhhdmUgdGhpcyBraW5kIG9mIGVxdWl2YWxl
bmNlOgorICAgIC8vCisgICAgLy8gQXRvbWljV2Vha0NBUyhAZXhwLCBAbmV3LCBAcHRyKSA9PSBF
cXVhbChBdG9taWNTdHJvbmdDQVMoQGV4cCwgQG5ldywgQHB0ciksIEBleHApCisgICAgLy8KKyAg
ICAvLyBBc3N1bWluZyB0aGF0IHRoZSBXZWFrQ0FTIGRvZXMgbm90IHNwdXJpb3VzbHkgZmFpbCwg
b2YgY291cnNlLgorICAgIEF0b21pY1N0cm9uZ0NBUywKKyAgICAKKyAgICAvLyBBdG9taWNhbGx5
IF9fXyBhIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRoZSBvbGQgdmFsdWUuIFN5bnRheDoK
KyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGdfX18oQG9wZXJhbmQsIEBwdHIp
CisgICAgLy8KKyAgICAvLyBGb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lk
dGgxNiksIHRoZXNlIHJldHVybiBzaWduLWV4dGVuZGVkIHJlc3VsdHMgYW5kIGlnbm9yZSB0aGUK
KyAgICAvLyBpcnJlbGV2YW50IGJpdHMgb2YgdGhlaXIgaW5wdXRzLgorICAgIEF0b21pY1hjaGdB
ZGQsCisgICAgQXRvbWljWGNoZ0FuZCwKKyAgICBBdG9taWNYY2hnT3IsCisgICAgQXRvbWljWGNo
Z1N1YiwKKyAgICBBdG9taWNYY2hnWG9yLAorICAgIAorICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBz
aG91bGQgaGF2ZSBBdG9taWNYY2hnTmVnIGFuZCBBdG9taWNYY2hnTm90LgorICAgIAorICAgIC8v
IEF0b21pY2FsbHkgZXhjaGFuZ2UgYSB2YWx1ZSB3aXRoIGEgbWVtb3J5IGxvY2F0aW9uLiBTeW50
YXg6CisgICAgLy8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNYY2hnKEBuZXdWYWx1ZSwgQHB0
cikKKyAgICBBdG9taWNYY2hnLAorICAgIAorICAgIC8vIEludHJvZHVjZSBhbiBpbnZpc2libGUg
ZGVwZW5kZW5jeSBmb3IgYmxvY2tpbmcgbW90aW9uIG9mIGxvYWRzIHdpdGggcmVzcGVjdCB0byBl
YWNoIG90aGVyLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gRGVwZW5kKEBwaGFu
dG9tKQorICAgIC8vCisgICAgLy8gVGhpcyBpcyBldmVudHVhbGx5IGNvZGVnZW5lcmF0ZWQgdG8g
aGF2ZSBsb2NhbCBzZW1hbnRpY3MgYXMgaWYgd2UgZGlkOgorICAgIC8vCisgICAgLy8gQHJlc3Vs
dCA9ICQwCisgICAgLy8KKyAgICAvLyBCdXQgaXQgZW5zdXJlcyB0aGF0IHRoZSB1c2VycyBvZiBA
cmVzdWx0IGNhbm5vdCBleGVjdXRlIHVudGlsIEBwaGFudG9tIGlzIGNvbXB1dGVkLgorICAgIC8v
CisgICAgLy8gVGhlIGNvbXBpbGVyIGlzIG5vdCBhbGxvd2VkIHRvIHJlYXNvbiBhYm91dCB0aGUg
ZmFjdCB0aGF0IERlcGVuZCBjb2RlZ2VuZXJhdGVzIHRoaXMgd2F5LiBBbnkga2luZAorICAgIC8v
IG9mIHRyYW5zZm9ybWF0aW9uIG9yIGFuYWx5c2lzIHRoYXQgcmVsaWVzIG9uIHRoZSBpbnNpZ2h0
IHRoYXQgRGVwZW5kIGlzIHJlYWxseSB6ZXJvIGlzIHVuc291bmQsCisgICAgLy8gYmVjYXVzZSBp
dCB1bmxvY2tzIHJlb3JkZXJpbmcgb2YgdXNlcnMgb2YgQHJlc3VsdCBhbmQgQHBoYW50b20uCisg
ICAgLy8KKyAgICAvLyBPbiBYODYsIHRoaXMgaXMgbG93ZXJlZCB0byBhIGxvYWQtbG9hZCBmZW5j
ZSBhbmQgQHJlc3VsdCB1c2VzIEBwaGFudG9tIGRpcmVjdGx5LgorICAgIC8vCisgICAgLy8gT24g
QVJNLCB0aGlzIGlzIGxvd2VyZWQgYXMgaWYgbGlrZToKKyAgICAvLworICAgIC8vIEByZXN1bHQg
PSBCaXRYb3IoQHBoYW50b20sIEBwaGFudG9tKQorICAgIC8vCisgICAgLy8gRXhjZXB0IHRoYXQg
dGhlIGNvbXBpbGVyIG5ldmVyIGdldHMgYW4gb3Bwb3J0dW5pdHkgdG8gc2ltcGxpZnkgb3V0IHRo
ZSBCaXRYb3IuCisgICAgRGVwZW5kLAogCiAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGNvbXB1dGUg
dGhlIGFjdHVhbCBhZGRyZXNzIG9mIGEgV2FzbSBtZW1vcnkgb3BlcmF0aW9uLiBJdCB0YWtlcyBh
biBJbnRQdHIKICAgICAvLyBhbmQgYSBwaW5uZWQgcmVnaXN0ZXIgdGhlbiBjb21wdXRlcyB0aGUg
YXBwcm9wcmlhdGUgSW50UHRyIGFkZHJlc3MuIEZvciB0aGUgdXNlLWNhc2Ugb2YKQEAgLTMwMSw2
ICs0MDIsMTEyIEBAIGlubGluZSBib29sIGlzRGVmaW5pdGVseVRlcm1pbmFsKE9wY29kZSAKICAg
ICB9CiB9CiAKK2lubGluZSBib29sIGlzTG9hZChPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRj
aCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2Fz
ZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9
CisKK2lubGluZSBib29sIGlzU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9w
Y29kZSkgeworICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0
b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0xvYWRTdG9yZShPcGNvZGUgb3Bjb2Rl
KQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBM
b2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExv
YWQ6CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljKE9wY29kZSBvcGNvZGUpCit7Cisg
ICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBB
dG9taWNTdHJvbmdDQVM6CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWlj
WGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6
CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKworaW5saW5lIGJvb2wgaXNBdG9taWNDQVMoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0
Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0
cm9uZ0NBUzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNYY2hnKE9wY29kZSBv
cGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6
CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNh
c2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9t
aWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc01lbW9yeUFjY2VzcyhPcGNvZGUg
b3Bjb2RlKQoreworICAgIHJldHVybiBpc0F0b21pYyhvcGNvZGUpIHx8IGlzTG9hZFN0b3JlKG9w
Y29kZSk7Cit9CisKK2lubGluZSBPcGNvZGUgc2lnbkV4dGVuZE9wY29kZShXaWR0aCB3aWR0aCkK
K3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVy
biBTRXh0ODsKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgIHJldHVybiBTRXh0MTY7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIE9vcHM7CisgICAgfQorfQorCitKU19FWFBPUlRfUFJJVkFURSBPcGNvZGUgc3RvcmVP
cGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
MwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1By
b2NlZHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJv
Y2VkdXJlLmNwcAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiw4IEBAIHZvaWQg
UHJvY2VkdXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGMKICAgICAgICAgfQogICAgICAgICBk
YXRhTG9nKCIgICAgIiwgZGVlcER1bXAoKnRoaXMsIHZhbHVlKSwgIlxuIik7CiAgICAgfQorICAg
IGlmIChoYXNRdWlya3MoKSkKKyAgICAgICAgb3V0LnByaW50KCJIYXMgUXVpcmtzOiBUcnVlXG4i
KTsKICAgICBpZiAodmFyaWFibGVzKCkuc2l6ZSgpKSB7CiAgICAgICAgIG91dC5wcmludCgiVmFy
aWFibGVzOlxuIik7CiAgICAgICAgIGZvciAoVmFyaWFibGUqIHZhcmlhYmxlIDogdmFyaWFibGVz
KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkocmV2aXNpb24g
MjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGljOgogICAgIFZhbHVlKiBhZGRJbnRD
b25zdGFudChPcmlnaW4sIFR5cGUsIGludDY0X3QgdmFsdWUpOwogICAgIFZhbHVlKiBhZGRJbnRD
b25zdGFudChWYWx1ZSosIGludDY0X3QgdmFsdWUpOwogCisgICAgLy8gWW91J3JlIGd1YXJhbnRl
ZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAgICBWYWx1ZSogYWRkQm90dG9tKE9yaWdpbiwgVHlw
ZSk7CiAgICAgVmFsdWUqIGFkZEJvdHRvbShWYWx1ZSopOwogCkBAIC0xOTUsNiArMTk2LDE3IEBA
IHB1YmxpYzoKICAgICAvLyBhbGl2ZS4gR3JlYXQgZm9yIGNvbXBpbGVyLWdlbmVyYXRlZCBkYXRh
IHNlY3Rpb25zLCBsaWtlIHN3aXRjaCBqdW1wIHRhYmxlcyBhbmQgY29uc3RhbnQgcG9vbHMuCiAg
ICAgLy8gVGhpcyByZXR1cm5zIG1lbW9yeSB0aGF0IGhhcyBiZWVuIHplcm8taW5pdGlhbGl6ZWQu
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWRkRGF0YVNlY3Rpb24oc2l6ZV90KTsKKyAg
ICAKKyAgICAvLyBTb21lIG9wZXJhdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBCMyBJUiB0byBiZWhh
dmUgb25lIHdheSBidXQgb24gdGhpcyBnaXZlbiBDUFUgdGhleSBiZWhhdmUgYQorICAgIC8vIGRp
ZmZlcmVudCB3YXkuIFdoZW4gdHJ1ZSwgdGhvc2UgQjMgSVIgb3BzIHN3aXRjaCB0byBiZWhhdmlu
ZyB0aGUgQ1BVIHdheSwgYW5kIHRoZSBvcHRpbWl6ZXIgbWF5CisgICAgLy8gc3RhcnQgdGFraW5n
IGFkdmFudGFnZSBvZiBpdC4KKyAgICAvLworICAgIC8vIE9uZSB3YXkgdG8gdGhpbmsgb2YgaXQg
aXMgbGlrZSB0aGlzLiBJbWFnaW5lIHRoYXQgeW91IGZpbmQgdGhhdCB0aGUgY2xlYW5lc3Qgd2F5
IG9mIGxvd2VyaW5nCisgICAgLy8gc29tZXRoaW5nIGluIGxvd2VyTWFjcm9zIGlzIHRvIHVuY29u
ZGl0aW9uYWxseSByZXBsYWNlIG9uZSBvcGNvZGUgd2l0aCBhbm90aGVyLiBUaGlzIGlzIGEgc2hv
cnRjdXQKKyAgICAvLyB3aGVyZSB5b3UgaW5zdGVhZCBrZWVwIHRoZSBzYW1lIG9wY29kZSwgYnV0
IHJlbHkgb24gdGhlIG9wY29kZSdzIG1lYW5pbmcgY2hhbmdlcyBvbmNlIGxvd2VyTWFjcm9zCisg
ICAgLy8gc2V0cyBoYXNRdWlya3MuCisgICAgYm9vbCBoYXNRdWlya3MoKSBjb25zdCB7IHJldHVy
biBtX2hhc1F1aXJrczsgfQorICAgIHZvaWQgc2V0SGFzUXVpcmtzKGJvb2wgdmFsdWUpIHsgbV9o
YXNRdWlya3MgPSB2YWx1ZTsgfQogCiAgICAgT3BhcXVlQnlwcm9kdWN0cyYgYnlwcm9kdWN0cygp
IHsgcmV0dXJuICptX2J5cHJvZHVjdHM7IH0KIApAQCAtMjUyLDYgKzI2NCw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChQcmludFN0cmVhbSYsIE9yaWdpbik+PiBtX29y
aWdpblByaW50ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9mcm9udGVuZERhdGE7CiAgICAgUENUb09y
aWdpbk1hcCBtX3BjVG9PcmlnaW5NYXA7CisgICAgYm9vbCBtX2hhc1F1aXJrcyB7IGZhbHNlIH07
CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1B1cmVDU0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1B1cmVDU0UuY3BwCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQdXJlQ1NFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgorI2luY2x1ZGUgIkIz
UGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkIzVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CkBAIC04OSw2ICs5MCwyMyBAQCBib29sIFB1cmVDU0U6OnByb2Nlc3MoVmFs
dWUqIHZhbHVlLCBEb21pCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIHB1cmVDU0UoUHJv
Y2VkdXJlJiBwcm9jKQoreworICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jLCAicHVyZUNT
RSIpOworICAgIAorICAgIERvbWluYXRvcnMmIGRvbWluYXRvcnMgPSBwcm9jLmRvbWluYXRvcnMo
KTsKKyAgICBQdXJlQ1NFIHB1cmVDU0U7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogcHJvYy5ibG9ja3NJblByZU9yZGVyKCkpIHsKKyAgICAg
ICAgZm9yIChWYWx1ZSogdmFsdWUgOiAqYmxvY2spIHsKKyAgICAgICAgICAgIHJlc3VsdCB8PSB2
YWx1ZS0+cGVyZm9ybVN1YnN0aXR1dGlvbigpOworICAgICAgICAgICAgcmVzdWx0IHw9IHB1cmVD
U0UucHJvY2Vzcyh2YWx1ZSwgZG9taW5hdG9ycyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVy
ZUNTRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0Uu
aAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNT
RS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1h
cDxWYWx1ZUtleSwgTWF0Y2hlcz4gbV9tYXA7CiB9OwogCitib29sIHB1cmVDU0UoUHJvY2VkdXJl
Jik7CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJ
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5j
cHAJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZVN0cmVuZ3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDEyICsyOCwxMyBAQAogCiAjaWYg
RU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJC
M0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCbG9ja0luc2VydGlvblNldC5oIgog
I2luY2x1ZGUgIkIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaCIKICNpbmNsdWRlICJCM0RvbWluYXRv
cnMuaCIKICNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKLSNpbmNsdWRlICJCM01l
bW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1BoaUNoaWxkcmVuLmgiCiAjaW5jbHVkZSAi
QjNQcm9jZWR1cmVJbmxpbmVzLmgiCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgYnJlYWs7Ci0KKyAgICAgICAgICAgIAogICAgICAgICBj
YXNlIE5lZzoKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogTmVnKGNvbnN0YW50KQogICAgICAg
ICAgICAgLy8gSW50byB0aGlzOiAtY29uc3RhbnQKQEAgLTEyOTUsNiArMTI5NiwxNiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhhc1F1aXJr
cygpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0OChBdG9taWNYY2hnX19f
KQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXworICAgICAgICAg
ICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQorICAg
ICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFsdWU+KCkt
PmFjY2Vzc1dpZHRoKCkgPT0gV2lkdGg4KSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VX
aXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIFNFeHQxNjoKQEAgLTEzNDMsNiArMTM1NCwxNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhhc1F1aXJrcygpKSB7CisgICAgICAgICAg
ICAgICAgLy8gVHVybiB0aGlzOiBTRXh0MTYoQXRvbWljWGNoZ19fXykKKyAgICAgICAgICAgICAg
ICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBpZiAoaXNBdG9t
aWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAgICAg
JiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5hY2Nlc3NXaWR0aCgpID09
IFdpZHRoMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJZGVudGl0eShtX3Zh
bHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
U0V4dDMyOgpAQCAtMjEwMSwyMiArMjEyMiwyNSBAQCBwcml2YXRlOgogICAgICAgICBBU1NFUlQo
bV92YWx1ZS0+bnVtQ2hpbGRyZW4oKSA+PSAyKTsKICAgICAgICAgCiAgICAgICAgIC8vIExlYXZl
IGl0IGFsb25lIGlmIHRoZSByaWdodCBjaGlsZCBpcyBhIGNvbnN0YW50LgotICAgICAgICBpZiAo
bV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKSkKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNo
aWxkKDEpLT5pc0NvbnN0YW50KCkKKyAgICAgICAgICAgIHx8IG1fdmFsdWUtPmNoaWxkKDApLT5v
cGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IAotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQoKSkgeworICAgICAg
ICBhdXRvIHN3YXAgPSBbJl0gKCkgewogICAgICAgICAgICAgc3RkOjpzd2FwKG1fdmFsdWUtPmNo
aWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVl
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICAgICAgfTsKKyAgICAgICAg
CisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNDb25zdGFudCgpKQorICAgICAgICAg
ICAgcmV0dXJuIHN3YXAoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgx
KS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQorICAgICAgICAgICAgcmV0dXJuIHN3YXAo
KTsKKyAgICAgICAgCiAgICAgICAgIC8vIFNvcnQgdGhlIG9wZXJhbmRzLiBUaGlzIGlzIGFuIGlt
cG9ydGFudCBjYW5vbmljYWxpemF0aW9uLiBXZSB1c2UgdGhlIGluZGV4IGluc3RlYWQgb2YKICAg
ICAgICAgLy8gdGhlIGFkZHJlc3MgdG8gbWFrZSB0aGlzIGF0IGxlYXN0IHNsaWdodGx5IGRldGVy
bWluaXN0aWMuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5kZXgoKSA+IG1fdmFs
dWUtPmNoaWxkKDEpLT5pbmRleCgpKSB7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAobV92YWx1ZS0+
Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRy
dWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1fdmFsdWUt
PmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4KCkpCisgICAgICAg
ICAgICByZXR1cm4gc3dhcCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBy
ZWFsbHkgYmUgYSBmb3J3YXJkIGFuYWx5c2lzLiBJbnN0ZWFkLCB3ZSB1c2VzIGEgYm91bmRlZC1z
ZWFyY2ggYmFja3dhcmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUu
Y3BwCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxp
ZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJB
aXJDb2RlLmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNB
dG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRl
ICJCM0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCkBAIC0zNDYsNiAr
MzQ3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGls
ZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAg
ICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBMb2FkOgpAQCAtMzUzLDYgKzM1NSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgw
KS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZh
bGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBTdG9yZTg6CkBAIC0zNjIsNiArMzY1LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlw
ZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRl
U3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBTdG9yZToKQEAgLTM2OSw4ICszNzMsNDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRl
clR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFs
aWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2
YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1dl
YWtDQVM6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgp
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1D
aGlsZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSkt
PnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0lu
dCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7
CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMywg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgp
ID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCks
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUt
PnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAg
dmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdB
bmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRv
bWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAg
IGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQo
KS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50
eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAgICAgIHZh
bGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5k
KCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlw
ZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZh
bHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgICAgICAgICBWQUxJREFURSgh
dmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1
ZSkpOwpAQCAtNTM3LDYgKzU4MiwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUZlbmNlKFZhbHVlKiB2YWx1
ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5
VmFsdWU+KCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICBW
QUxJREFURShtZW1vcnktPmFjY2Vzc0JhbmsoKSA9PSBHUCwgKCJGZW5jZSBhdCAiLCAqbWVtb3J5
KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVBdG9taWMoVmFsdWUqIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IHZhbHVlLT5hczxBdG9taWNWYWx1
ZT4oKTsKKyAgICAgICAgCisgICAgICAgIFZBTElEQVRFKGJlc3RUeXBlKEdQLCBhdG9taWMtPmFj
Y2Vzc1dpZHRoKCkpID09IGF0b21pYy0+YWNjZXNzVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgIH0KIAogICAgIHZvaWQgdmFsaWRhdGVTdGFja0FjY2VzcyhWYWx1ZSogdmFsdWUpCiAgICAg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkocmV2aXNpb24gMjEzMzc5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJCM0Fy
Z3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAi
QjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQm90dG9tUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTUxMCw2ICs1MTEsNyBAQCBib29sIFZhbHVlOjpy
ZXR1cm5zQm9vbCgpIGNvbnN0CiAgICAgY2FzZSBBYm92ZUVxdWFsOgogICAgIGNhc2UgQmVsb3dF
cXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CisgICAgY2FzZSBBdG9taWNXZWFrQ0FT
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFBoaToKICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBoYXZlIGEgc3RvcnkgaGVyZS4KQEAgLTU4OSw2ICs1OTEsNyBAQCBFZmZlY3Rz
IFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIEJlbG93RXF1YWw6CiAgICAgY2FzZSBF
cXVhbE9yVW5vcmRlcmVkOgogICAgIGNhc2UgU2VsZWN0OgorICAgIGNhc2UgRGVwZW5kOgogICAg
ICAgICBicmVhazsKICAgICBjYXNlIERpdjoKICAgICBjYXNlIFVEaXY6CkBAIC02MDAsMTYgKzYw
Myw0NCBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIExvYWQ4UzoK
ICAgICBjYXNlIExvYWQxNlo6CiAgICAgY2FzZSBMb2FkMTZTOgotICAgIGNhc2UgTG9hZDoKLSAg
ICAgICAgcmVzdWx0LnJlYWRzID0gYXM8TWVtb3J5VmFsdWU+KCktPnJhbmdlKCk7CisgICAgY2Fz
ZSBMb2FkOiB7CisgICAgICAgIGNvbnN0IE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlW
YWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5yYW5nZSgpOworICAgICAg
ICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICByZXN1bHQud3JpdGVzID0g
bWVtb3J5LT5mZW5jZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwor
ICAgICAgICB9CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKICAgICAg
ICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgU3RvcmU4OgogICAgIGNhc2UgU3RvcmUxNjoKLSAg
ICBjYXNlIFN0b3JlOgotICAgICAgICByZXN1bHQud3JpdGVzID0gYXM8TWVtb3J5VmFsdWU+KCkt
PnJhbmdlKCk7CisgICAgY2FzZSBTdG9yZTogeworICAgICAgICBjb25zdCBNZW1vcnlWYWx1ZSog
bWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC53cml0ZXMgPSBtZW1v
cnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgpOworICAgICAgICAgICAgcmVz
dWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQuY29udHJvbERlcGVu
ZGVudCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEF0b21pY1dlYWtD
QVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgor
ICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNl
IEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWlj
WGNoZzogeworICAgICAgICBjb25zdCBBdG9taWNWYWx1ZSogYXRvbWljID0gYXM8QXRvbWljVmFs
dWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IGF0b21pYy0+cmFuZ2UoKSB8IGF0b21pYy0+
ZmVuY2VSYW5nZSgpOworICAgICAgICByZXN1bHQud3JpdGVzID0gYXRvbWljLT5yYW5nZSgpIHwg
YXRvbWljLT5mZW5jZVJhbmdlKCk7CisgICAgICAgIGlmIChhdG9taWMtPmhhc0ZlbmNlKCkpCisg
ICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICByZXN1bHQuY29udHJvbERl
cGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFdhc21BZGRy
ZXNzOgogICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVlOwogICAgICAgICBicmVhazsK
QEAgLTYxNywxOCArNjQ4LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAg
ICAgIGNvbnN0IEZlbmNlVmFsdWUqIGZlbmNlID0gYXM8RmVuY2VWYWx1ZT4oKTsKICAgICAgICAg
cmVzdWx0LnJlYWRzID0gZmVuY2UtPnJlYWQ7CiAgICAgICAgIHJlc3VsdC53cml0ZXMgPSBmZW5j
ZS0+d3JpdGU7Ci0gICAgICAgIAotICAgICAgICAvLyBQcmV2ZW50IGtpbGxpbmcgb2YgZmVuY2Vz
IHRoYXQgY2xhaW0gbm90IHRvIHdyaXRlIGFueXRoaW5nLiBJdCdzIGEgYml0IHdlaXJkIHRoYXQg
d2UgdXNlCi0gICAgICAgIC8vIGxvY2FsIHN0YXRlIGFzIHRoZSB3YXkgdG8gZG8gdGhpcywgYnV0
IGl0IGhhcHBlbnMgdG8gd29yazogd2UgbXVzdCBhc3N1bWUgdGhhdCB3ZSBjYW5ub3QKLSAgICAg
ICAgLy8ga2lsbCB3cml0ZXNMb2NhbFN0YXRlIHVubGVzcyB3ZSB1bmRlcnN0YW5kcyBleGFjdGx5
IHdoYXQgdGhlIGluc3RydWN0aW9uIGlzIGRvaW5nIChsaWtlCi0gICAgICAgIC8vIHRoZSB3YXkg
dGhhdCBmaXhTU0EgdW5kZXJzdGFuZHMgU2V0L0dldCBhbmQgdGhlIHdheSB0aGF0IHJlZHVjZVN0
cmVuZ3RoIGFuZCBvdGhlcnMKLSAgICAgICAgLy8gdW5kZXJzdGFuZCBVcHNpbG9uKS4gVGhpcyB3
b3VsZCBvbmx5IGJlY29tZSBhIHByb2JsZW0gaWYgd2UgaGFkIHNvbWUgYW5hbHlzaXMgdGhhdCB3
YXMKLSAgICAgICAgLy8gbG9va2luZyB0byB1c2UgdGhlIHdyaXRlc0xvY2FsU3RhdGUgYml0IHRv
IGludmFsaWRhdGUgYSBDU0Ugb3ZlciBsb2NhbCBzdGF0ZSBvcGVyYXRpb25zLgotICAgICAgICAv
LyBUaGVuIGEgRmVuY2Ugd291bGQgbG9vayBibG9jaywgc2F5LCB0aGUgZWxpbWluYXRpb24gb2Yg
YSByZWR1bmRhbnQgR2V0LiBCdXQgaXQgbGlrZQotICAgICAgICAvLyB0aGF0J3Mgbm90IGF0IGFs
bCBob3cgb3VyIG9wdGltaXphdGlvbnMgZm9yIFNldC9HZXQvVXBzaWxvbi9QaGkgd29yayAtIHRo
ZXkgZ3JvayB0aGVpcgotICAgICAgICAvLyBvcGVyYXRpb25zIGRlZXBseSBlbm91Z2ggdGhhdCB0
aGV5IGhhdmUgbm8gbmVlZCB0byBjaGVjayB0aGlzIGJpdCAtIHNvIHRoaXMgY2hlYXQgaXMKLSAg
ICAgICAgLy8gZmluZS4KLSAgICAgICAgcmVzdWx0LndyaXRlc0xvY2FsU3RhdGUgPSB0cnVlOwor
ICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBDQ2FsbDoKQEAgLTY5NCw2ICs3MTQsNyBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5KCkgY29u
c3QKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgY2FzZSBOZWc6
CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIHJldHVybiBWYWx1ZUtleShraW5kKCksIHR5cGUo
KSwgY2hpbGQoMCkpOwogICAgIGNhc2UgQWRkOgogICAgIGNhc2UgU3ViOgpAQCAtNzQ2LDEyICs3
NjcsMTYgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFZh
bHVlOjpwZXJmb3JtU3Vic3RpdHV0aW9uKCkKK2Jvb2wgVmFsdWU6OnBlcmZvcm1TdWJzdGl0dXRp
b24oKQogeworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgZm9yIChWYWx1ZSomIGNoaWxk
IDogY2hpbGRyZW4oKSkgewotICAgICAgICB3aGlsZSAoY2hpbGQtPm9wY29kZSgpID09IElkZW50
aXR5KQorICAgICAgICB3aGlsZSAoY2hpbGQtPm9wY29kZSgpID09IElkZW50aXR5KSB7CisgICAg
ICAgICAgICByZXN1bHQgPSB0cnVlOwogICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC0+Y2hpbGQo
MCk7CisgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBWYWx1
ZTo6aXNGcmVlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2
aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTEgQEAgcHVibGljOgogICAgIAogICAgIE9wY29kZSBv
cGNvZGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkub3Bjb2RlKCk7IH0KICAgICAKKyAgICAvLyBO
b3RlIHRoYXQgdGhlIGtpbmQgaXMgbWVhbnQgdG8gYmUgaW1tdXRhYmxlLiBEbyB0aGlzIHdoZW4g
eW91IGtub3cgdGhhdCB0aGlzIGlzIHNhZmUuIEl0J3Mgbm90CisgICAgLy8gdXN1YWxseSBzYWZl
LgorICAgIHZvaWQgc2V0S2luZFVuc2FmZWx5KEtpbmQga2luZCkgeyBtX2tpbmQgPSBraW5kOyB9
CisgICAgdm9pZCBzZXRPcGNvZGVVbnNhZmVseShPcGNvZGUgb3Bjb2RlKSB7IG1fa2luZC5zZXRP
cGNvZGUob3Bjb2RlKTsgfQorICAgIAogICAgIC8vIEl0J3MgZ29vZCBwcmFjdGljZSB0byBtaXJy
b3IgS2luZCBtZXRob2RzIGhlcmUsIHNvIHlvdSBjYW4gc2F5IHZhbHVlLT5pc0JsYWgoKQogICAg
IC8vIGluc3RlYWQgb2YgdmFsdWUtPmtpbmQoKS5pc0JsYWgoKS4KICAgICBib29sIGlzQ2hpbGwo
KSBjb25zdCB7IHJldHVybiBraW5kKCkuaXNDaGlsbCgpOyB9CkBAIC0xMDcsNiArMTEyLDggQEAg
cHVibGljOgogICAgIC8vIHZhbHVlcyB3aXRoIElkZW50aXRpZXMgb24gYm90dG9tIGNvbnN0YW50
cy4gRm9yIHRoaXMgcmVhc29uLCB0aGlzIHRha2VzIGEgY2FsbGJhY2sgdGhhdCBpcwogICAgIC8v
IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBib3R0b21zLiBUaGVyZSdzIGEgdXRpbGl0eSBmb3Ig
dGhpcywgc2VlIEIzQm90dG9tUHJvdmlkZXIuaC4gWW91CiAgICAgLy8gY2FuIGFsc28gYWNjZXNz
IHRoYXQgdXRpbGl0eSB1c2luZyByZXBsYWNlV2l0aEJvdHRvbShJbnNlcnRpb25TZXQmLCBzaXpl
X3QpLgorICAgIC8vCisgICAgLy8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0b20gaXMgemVy
by4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCb3R0b21Qcm92aWRlcj4KICAgICB2b2lkIHJlcGxh
Y2VXaXRoQm90dG9tKGNvbnN0IEJvdHRvbVByb3ZpZGVyJik7CiAgICAgCkBAIC0yNTYsNyArMjYz
LDcgQEAgcHVibGljOgogICAgIC8vIE1ha2VzIHN1cmUgdGhhdCBub25lIG9mIHRoZSBjaGlsZHJl
biBhcmUgSWRlbnRpdHkncy4gSWYgYSBjaGlsZCBwb2ludHMgdG8gSWRlbnRpdHksIHRoaXMgd2ls
bAogICAgIC8vIHJlcG9pbnQgaXQgYXQgdGhlIElkZW50aXR5J3MgY2hpbGQuIEZvciBzaW1wbGlj
aXR5LCB0aGlzIHdpbGwgZm9sbG93IGFyYml0cmFyaWx5IGxvbmcgY2hhaW5zCiAgICAgLy8gb2Yg
SWRlbnRpdHkncy4KLSAgICB2b2lkIHBlcmZvcm1TdWJzdGl0dXRpb24oKTsKKyAgICBib29sIHBl
cmZvcm1TdWJzdGl0dXRpb24oKTsKICAgICAKICAgICAvLyBGcmVlIHZhbHVlcyBhcmUgdGhvc2Ug
d2hvc2UgcHJlc2VuY2UgaXMgZ3VhcmFudGVlZCBub3QgdG8gaHVydCBjb2RlLiBXZSBjb25zaWRl
ciBjb25zdGFudHMsCiAgICAgLy8gSWRlbnRpdGllcywgYW5kIE5vcHMgdG8gYmUgZnJlZS4gQ29u
c3RhbnRzIGFyZSBmcmVlIGJlY2F1c2Ugd2UgaG9pc3QgdGhlbSB0byBhbiBvcHRpbWFsIHBsYWNl
LgpAQCAtMzIxLDYgKzMyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSVRvRjoKICAgICAg
ICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgY2FzZSBCcmFuY2g6CisgICAgICAgIGNhc2Ug
RGVwZW5kOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3MgIT0gMSkpCiAgICAgICAg
ICAgICAgICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkocmV2aXNpb24gMjEzMzc5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCwzOCBAQAogCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGgg
d2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgIGNh
c2UgV2lkdGgxNjoKKyAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgIHN3aXRjaCAoYmFuaykgewor
ICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDMyOworICAgICAgICBjYXNl
IEZQOgorICAgICAgICAgICAgcmV0dXJuIEZsb2F0OworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lkOworICAgIGNhc2Ug
V2lkdGg2NDoKKyAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNhc2UgR1A6CisgICAg
ICAgICAgICByZXR1cm4gSW50NjQ7CisgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICByZXR1
cm4gRG91YmxlOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBWb2lkOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBWb2lkOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKKwogbmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBKU0M6OkIzOjpXaWR0aCB3aWR0aCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1dpZHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lk
dGguaAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lk
dGguaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTggQEAgaW5saW5lIFdpZHRoIHdpZHRo
Rm9yVHlwZShUeXBlIHR5cGUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2lubGlu
ZSBXaWR0aCBjYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gc3RkOjpt
YXgoV2lkdGgzMiwgd2lkdGgpOworfQorCitpbmxpbmUgYm9vbCBpc0Nhbm9uaWNhbFdpZHRoKFdp
ZHRoIHdpZHRoKQoreworICAgIHJldHVybiB3aWR0aCA+PSBXaWR0aDMyOworfQorCitUeXBlIGJl
c3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpOworCiBpbmxpbmUgV2lkdGggY29uc2VydmF0
aXZlV2lkdGgoQmFuayBiYW5rKQogewogICAgIHJldHVybiBiYW5rID09IEdQID8gcG9pbnRlcldp
ZHRoKCkgOiBXaWR0aDY0OwpAQCAtOTMsNiArMTA1LDIwIEBAIGlubGluZSBXaWR0aCB3aWR0aEZv
ckJ5dGVzKHVuc2lnbmVkIGJ5dGUKICAgICB9CiB9CiAKK2lubGluZSB1aW50NjRfdCBtYXNrKFdp
ZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAg
ICAgICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAwMDBmZmxsdTsKKyAgICBjYXNlIFdpZHRoMTY6Cisg
ICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMGZmZmZsbHU7CisgICAgY2FzZSBXaWR0aDMyOgor
ICAgICAgICByZXR1cm4gMHgwMDAwMDAwMGZmZmZmZmZmbGx1OworICAgIGNhc2UgV2lkdGg2NDoK
KyAgICAgICAgcmV0dXJuIDB4ZmZmZmZmZmZmZmZmZmZmZmxsdTsKKyAgICB9Cit9CisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkFpclZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlLmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNB
dG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRl
ICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCkBAIC00NCw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiQjNNYXRoRXh0cmFzLmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzTW92ZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgIkIzTmF0aXZlVHJh
aXRzLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlICJCM1JlZHVjZVN0cmVu
Z3RoLmgiCiAjaW5jbHVkZSAiQjNTbG90QmFzZVZhbHVlLmgiCkBAIC0yOTcsNiArMjk5LDI0IEBA
IHZvaWQgdGVzdExvYWQ0MigpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09
IDQyKTsKIH0KIAordm9pZCB0ZXN0TG9hZEFjcTQyKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCB4ID0gNDI7
CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmeCksCisgICAgICAgICAgICAw
LCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21w
aWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAibGRhIik7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUpID09IDQyKTsK
K30KKwogdm9pZCB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKGludDMyX3Qgb2Zmc2V0NjQsIGludDMy
X3Qgb2Zmc2V0MzIpCiB7CiAgICAgewpAQCAtNTc0OCw2ICs1NzY4LDM1IEBAIHZvaWQgdGVzdFN0
b3JlQWRkTG9hZDMyKGludCBhbW91bnQpCiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7
CiB9CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTMyKGludCBhbW91bnQpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBpbnQgc2xvdCA9IDM3OworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQs
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhl
YXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5n
ZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNv
bXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29k
ZSwgInN0bCIpOworICAgIH0KKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkp
OworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCiB2b2lkIHRlc3RTdG9yZUFk
ZExvYWRJbW0zMihpbnQgYW1vdW50KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTc5Miw2
ICs1ODQxLDc0IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZDgoaW50IGFtb3VudCwgQjM6Ok8KICAg
ICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKIH0KIAordm9pZCB0ZXN0U3RvcmVSZWxBZGRM
b2FkQWNxOChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBp
bnQ4X3Qgc2xvdCA9IDM3OworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTgsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBS
YW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0
MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBp
bGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbigqY29kZSwgImxkYSIpOworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
InN0bCIpOworICAgIH0KKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOwor
ICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCit2b2lkIHRlc3RTdG9yZVJlbEFk
ZEZlbmNlTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgaW50OF90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAg
VmFsdWUqIGxvYWRlZFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgcHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0Miks
IEhlYXBSYW5nZSg0MikpOworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3Qt
PmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBw
YXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICBB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAg
ICAgICBqaXQuc3RvcmU4KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4YmVlZiksICZzbG90
KTsKKyAgICAgICAgfSk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUo
KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3RzLmZlbmNlID0gdHJ1ZTsKKyAgICByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTgsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIGxvYWRlZFZhbHVlLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBS
YW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1VzZXNJ
bnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigq
Y29kZSwgInN0bCIpOworICAgIH0KKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3Vu
dCkpOworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCiB2b2lkIHRlc3RTdG9y
ZUFkZExvYWRJbW04KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKIHsKICAgICBQ
cm9jZWR1cmUgcHJvYzsKQEAgLTU4MzYsNiArNTk1MywzNSBAQCB2b2lkIHRlc3RTdG9yZUFkZExv
YWQxNihpbnQgYW1vdW50LCBCMzo6CiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7CiB9
CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUg
bG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDE2X3Qgc2xvdCA9IDM3OworICAgIENvbnN0UHRy
VmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAg
ICBwcm9jLCBTdG9yZTE2LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUs
IE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAg
ICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkp
IHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWlu
dm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50
KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tMTYoaW50IGFtb3VudCwgQjM6Ok9wY29k
ZSBsb2FkT3Bjb2RlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTg3OCw2ICs2MDI0LDMz
IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZDY0KGludCBhbW91bnQpCiAgICAgQ0hFQ0soc2xvdCA9
PSAzNzAwMDAwMDAwMGxsICsgYW1vdW50KTsKIH0KIAordm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2Fk
QWNxNjQoaW50IGFtb3VudCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDY0X3Qgc2xvdCA9IDM3MDAwMDAwMDAw
bGw7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVh
cFJhbmdlKDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICBzbG90
UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+
KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3MDAwMDAwMDAwbGwgKyBhbW91
bnQpOworfQorCiB2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW02NChpbnQ2NF90IGFtb3VudCkKIHsK
ICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTEzNzkxLDcgKzEzOTY0LDcgQEAgdm9pZCB0ZXN0VHJh
cHBpbmdTdG9yZUVsaW1pbmF0aW9uKCkKICAgICBjb21waWxlQW5kUnVuPGludD4ocHJvYyk7CiAg
ICAgdW5zaWduZWQgc3RvcmVDb3VudCA9IDA7CiAgICAgZm9yIChWYWx1ZSogdmFsdWUgOiBwcm9j
LnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChNZW1vcnlWYWx1ZTo6aXNTdG9yZSh2YWx1ZS0+b3Bj
b2RlKCkpKQorICAgICAgICBpZiAoaXNTdG9yZSh2YWx1ZS0+b3Bjb2RlKCkpKQogICAgICAgICAg
ICAgc3RvcmVDb3VudCsrOwogICAgIH0KICAgICBDSEVDS19FUShzdG9yZUNvdW50LCAydSk7CkBA
IC0xMzk5Nyw2ICsxNDE3MCw3IEBAIHZvaWQgdGVzdFg4NkxlYUFkZEFkZCgpCiAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwogICAgIAog
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0
cl90PigqY29kZSwgMSwgMiksICgxICsgMikgKyAxMDApOwogICAgIGNoZWNrRGlzYXNzZW1ibHko
CiAgICAgICAgICpjb2RlLAogICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5KSAt
PiBib29sIHsKQEAgLTE0MDA0LDcgKzE0MTc4LDYgQEAgdm9pZCB0ZXN0WDg2TGVhQWRkQWRkKCkK
ICAgICAgICAgICAgICAgICB8fCBzdHJzdHIoZGlzYXNzZW1ibHksICJsZWEgMHg2NCglcnNpLCVy
ZGkpLCAlcmF4Iik7CiAgICAgICAgIH0sCiAgICAgICAgICJFeHBlY3RlZCB0byBmaW5kIHNvbWV0
aGluZyBsaWtlIGxlYSAweDY0KCVyZGksJXJzaSksICVyYXggYnV0IGRpZG4ndCEiKTsKLSAgICBD
SEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwgKDEgKyAyKSArIDEwMCk7CiB9
CiAKIHZvaWQgdGVzdFg4NkxlYUFkZFNobFJpZ2h0KCkKQEAgLTE0MDQxLDYgKzE0MjE0LDcgQEAg
dm9pZCB0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlMSgpCiAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwogICAgIAogICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGUocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90PigqY29kZSwg
MSwgMiksIDEgKyAyKTsKICAgICBjaGVja0Rpc2Fzc2VtYmx5KAogICAgICAgICAqY29kZSwKICAg
ICAgICAgWyZdIChjb25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CkBAIC0xNDA0OCw3
ICsxNDIyMiw2IEBAIHZvaWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTEoKQogICAgICAgICAg
ICAgICAgIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgImxlYSAoJXJzaSwlcmRpKSwgJXJheCIpOwog
ICAgICAgICB9LAogICAgICAgICAiRXhwZWN0ZWQgdG8gZmluZCBzb21ldGhpbmcgbGlrZSBsZWEg
KCVyZGksJXJzaSksICVyYXggYnV0IGRpZG4ndCEiKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50
cHRyX3Q+KCpjb2RlLCAxLCAyKSwgMSArIDIpOwogfQogCiB2b2lkIHRlc3RYODZMZWFBZGRTaGxM
ZWZ0U2NhbGUyKCkKQEAgLTE0Mjc3LDYgKzE0NDUwLDYxOCBAQCB2b2lkIHRlc3RPcHRpbWl6ZU1h
dGVyaWFsaXphdGlvbigpCiAgICAgQ0hFQ0soZm91bmQpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgordm9pZCB0ZXN0QXRvbWljV2Vha0NBUygpCit7CisgICAgVHlwZSB0eXBlID0gTmF0aXZl
VHJhaXRzPFQ+Ojp0eXBlOworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3aWR0
aDsKKyAgICAKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRpb24m
IGNvbXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAgICAgICBpZiAoaXNYODYoKSkgeworICAg
ICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsb2NrIik7CisgICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImNtcHhjaGciKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsKKyAgICAgICAgICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgiKTsKKyAgICAgICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0bHgiKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGls
YXRpb24sICJsZHgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21w
aWxhdGlvbiwgInN0eCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKyAgICAK
KyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiByZWxvb3AgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9yaWdpbigpKTsKKyAgICAgICAgcm9v
dC0+c2V0U3VjY2Vzc29ycyhyZWxvb3ApOworICAgICAgICAKKyAgICAgICAgcmVsb29wLT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcmVs
b29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAg
ICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyKSk7CisgICAgICAgIHJlbG9vcC0+c2V0U3Vj
Y2Vzc29ycyhkb25lLCByZWxvb3ApOworICAgICAgICAKKyAgICAgICAgZG9uZS0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVl
WzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lkPigq
Y29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4o
MHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNr
TXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlbG9vcCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAg
ICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAg
IFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3Jz
KHJlbG9vcCk7CisgICAgICAgIAorICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcmVsb29wLT5h
cHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtD
QVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcmVsb29w
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAg
ICAgICAgICAgICBwdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKSk7CisgICAgICAg
IHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25lLCByZWxvb3ApOworICAgICAgICAKKyAgICAgICAg
ZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAg
CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07
CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAg
IGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwg
c3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7
CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgZmFsc2UpOworICAgIH0KKyAgICAK
KyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRC
bG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAg
ICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0cikpOworICAgICAgICByb290LT5zZXRTdWNj
ZXNzb3JzKHN1Y2MsIGZhaWwpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9y
aWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFp
bC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisg
ICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07Cisg
ICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdo
aWxlICh2YWx1ZVswXSA9PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFs
dWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGlj
X2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0
cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9j
ayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywg
QXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwg
MHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcHRyKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgSW50MzIsIDApKSk7CisgICAgICAg
IHJvb3QtPnNldFN1Y2Nlc3NvcnMoZmFpbCwgc3VjYyk7CisgICAgICAgIAorICAgICAgICBzdWNj
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUo
R1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAg
IHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAg
IAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkp
OworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAg
VCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAx
MzsKKyAgICAgICAgd2hpbGUgKHZhbHVlWzBdID09IDQyKQorICAgICAgICAgICAgaW52b2tlPHZv
aWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2Fz
dDxUPigxMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFs
dWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUs
IHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNz
ZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0
MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7Cisg
ICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZh
bHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOwor
ICAgICAgICB3aGlsZSAoIWludm9rZTxib29sPigqY29kZSwgdmFsdWUpKSB7IH0KKyAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVD
S19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICAKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNf
Y2FzdDxUPigzMDApOworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgq
Y29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0
b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3Jp
Z2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpKTsKKyAgICAgICAgCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAg
ICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxl
IChpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVl
WzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0s
IDEzKTsKKyAgICAgICAgCisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsK
KyAgICAgICAgQ0hFQ0soaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBDSEVD
S19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Cisg
ICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9t
aWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAgICAgNDIpKTsKKyAg
ICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFs
dWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7Cisg
ICAgICAgIHdoaWxlICghaW52b2tlPGJvb2w+KCpjb2RlLCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+
KHZhbHVlKSAtIDQyKSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2Fz
dDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAg
CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0so
IWludm9rZTxib29sPigqY29kZSwgYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZSkgLSA0Mikp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgq
Y29kZSwgdHJ1ZSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0
QXRvbWljU3Ryb25nQ0FTKCkKK3sKKyAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5
cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOworICAgIAorICAg
IGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChDb21waWxhdGlvbiYgY29tcGlsYXRpb24s
IGJvb2wgZmVuY2VkKSB7CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsKKyAgICAgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAiY21weGNoZyIpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgKGZlbmNlZCkgeworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0lu
c3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGRheCIpOworICAgICAgICAgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3RseCIpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkeCIp
OworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3R4
Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIHsKKyAgICAg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
ICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAg
ICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmln
aW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAg
cHRyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmln
aW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFp
bCk7CisgICAgICAgIAorICAgICAgICBzdWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAg
ICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwK
KyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0g
PSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2Rl
LCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDAp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBz
dGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNv
ZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNp
Y0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWls
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBw
cm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAg
ICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciwgMCwgSGVhcFJhbmdlKDQy
KSwgSGVhcFJhbmdlKCkpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29y
cyhzdWNjLCBmYWlsKTsKKyAgICAgICAgCisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGZhaWwtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAg
ICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZva2U8
dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19j
YXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2
YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29k
ZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAw
KSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNh
c3NlbWJseSgqY29kZSwgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNp
Y0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUq
IHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAg
ICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQo
cHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDQyKSkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2MpOwor
ICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAg
c3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAg
ICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNv
bXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7
CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFs
dWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGlj
X2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0
cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4
YmVlZiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgICAgIAorICAg
ICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAg
ICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBDSEVD
S19FUShpbnZva2U8VD4oKmNvZGUsIHZhbHVlKSwgNDIpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFd
LCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIHN0YXRpY19jYXN0PFQ+KDMwMCkpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29k
ZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9j
LCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21p
Y1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmln
aW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAg
ICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIENIRUNL
KGludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0s
IHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNL
KCFpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsK
KyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisg
ICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBw
cm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNT
dHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisg
ICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCA0MikpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAwKSkpOworICAgICAgICAgICAgCisgICAgICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBd
ID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIENIRUNLKGludm9rZTxib29s
PigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0
PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2
YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKCFpbnZva2U8Ym9v
bD4oKmNvZGUsICZ2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nh
c3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNo
ZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgordm9pZCB0ZXN0QXRvbWljWGNoZyhCMzo6T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBU
eXBlIHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRp
dmVUcmFpdHM8VD46OndpZHRoOworICAgIAorICAgIGF1dG8gZG9UaGVNYXRoID0gWyZdIChUJiBt
ZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7CisgICAgICAgIFQgb2xkVmFsdWUgPSBtZW1vcnk7Cisg
ICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAg
ICAgICAgICAgIG1lbW9yeSArPSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIG1lbW9yeSAmPSBvcGVyYW5kOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAg
bWVtb3J5IHw9IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdG9t
aWNYY2hnU3ViOgorICAgICAgICAgICAgbWVtb3J5IC09IG9wZXJhbmQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgbWVtb3J5IF49
IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnOgor
ICAgICAgICAgICAgbWVtb3J5ID0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAgfTsKKyAgICAKKyAgICBhdXRv
IG9sZFZhbHVlID0gWyZdIChUIG1lbW9yeSwgVCBvcGVyYW5kKSAtPiBUIHsKKyAgICAgICAgcmV0
dXJuIGRvVGhlTWF0aChtZW1vcnksIG9wZXJhbmQpOworICAgIH07CisgICAgCisgICAgYXV0byBu
ZXdWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7CisgICAgICAgIGRvVGhl
TWF0aChtZW1vcnksIG9wZXJhbmQpOworICAgICAgICByZXR1cm4gbWVtb3J5OworICAgIH07Cisg
ICAgCisgICAgYXV0byBjaGVja015RGlzYXNzZW1ibHkgPSBbJl0gKENvbXBpbGF0aW9uJiBjb21w
aWxhdGlvbiwgYm9vbCBmZW5jZWQpIHsKKyAgICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBpZiAoZmVuY2VkKSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsZGF4Iik7CisgICAgICAgICAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJzdGx4Iik7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGR4
Iik7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJz
dHgiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgeworICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWlj
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRoLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCAxKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAKKyAgICAg
ICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAg
ICAgdmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIG9sZFZhbHVlKDUsIDEpKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMF0sIG5ld1ZhbHVlKDUsIDEpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MV0sIDEwMCk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAg
fQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUs
IE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSkpOworICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAg
ICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDU7CisgICAgICAgIHZhbHVlWzFdID0g
MTAwOworICAgICAgICBDSEVDS19FUShpbnZva2U8VD4oKmNvZGUsIHZhbHVlKSwgb2xkVmFsdWUo
NSwgNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIG5ld1ZhbHVlKDUsIDQyKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMDApOworICAgICAgICBjaGVja015RGlzYXNzZW1i
bHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgcHJvYywgb3Bjb2Rl
LCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsK
KyAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1
ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAg
ICAgICAgaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBuZXdWYWx1ZSg1LCA0MikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTAwKTsKKyAg
ICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBS
YW5nZSgpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAg
ICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsxXSA9
IDEwMDsKKyAgICAgICAgaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0MikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwg
MTAwKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCBmYWxzZSk7CisgICAgfQor
fQorCiB2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQogewogICAgIFBy
b2NlZHVyZSBwcm9jOwpAQCAtMTQzNzAsNiArMTUxNTUsMTMgQEAgZG91YmxlIG5lZ2F0aXZlWmVy
bygpCiAgICAgcmV0dXJuIC16ZXJvKCk7CiB9CiAKKyNkZWZpbmUgUlVOX05PVyh0ZXN0KSBkbyB7
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiLi4uXG4iKTsgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgdGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgZGF0YUxvZygjdGVzdCAiOiBPSyFcbiIpOyAgICAgICAgICAgICAgIFwKKyAgICB9
IHdoaWxlIChmYWxzZSkKICNkZWZpbmUgUlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAg
LTE0NDIxLDEyICsxNTIxMywxMSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAg
ICAgIHJldHVybiAhZmlsdGVyIHx8ICEhc3RyY2FzZXN0cih0ZXN0TmFtZSwgZmlsdGVyKTsKICAg
ICB9OwogCi0gICAgLy8gV2UgcnVuIHRoaXMgdGVzdCBmaXJzdCBiZWNhdXNlIGl0IGZpZGRsZXMg
d2l0aCBzb21lCi0gICAgLy8gSlNDIG9wdGlvbnMuCi0gICAgdGVzdFRlcm1pbmFsUGF0Y2hwb2lu
dFRoYXROZWVkc1RvQmVTcGlsbGVkMigpOworICAgIFJVTl9OT1codGVzdFRlcm1pbmFsUGF0Y2hw
b2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpKTsKIAogICAgIFJVTih0ZXN0NDIoKSk7CiAgICAg
UlVOKHRlc3RMb2FkNDIoKSk7CisgICAgUlVOKHRlc3RMb2FkQWNxNDIoKSk7CiAgICAgUlVOKHRl
c3RMb2FkT2Zmc2V0SW1tOU1heCgpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1
c09uZSgpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3bygpKTsKQEAgLTE1
MDk5LDE2ICsxNTg5MCwyMyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVO
KHRlc3ROZWczMig1MikpOwogICAgIFJVTih0ZXN0TmVnUHRyKDUzKSk7CiAgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWQzMig0NikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIoNDYp
KTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTMyKDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9y
ZUFkZExvYWQ2NCg0NjAwKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E2NCg0NjAw
KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW02NCg0NjAwKSk7CiAgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWQ4KDQsIExvYWQ4WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNx
OCg0LCBMb2FkOFopKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkRmVuY2VMb2FkQWNxOCg0LCBM
b2FkOFopKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgoNCwgTG9hZDhaKSk7CiAgICAg
UlVOKHRlc3RTdG9yZUFkZExvYWQ4KDQsIExvYWQ4UykpOworICAgIFJVTih0ZXN0U3RvcmVSZWxB
ZGRMb2FkQWNxOCg0LCBMb2FkOFMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgoNCwg
TG9hZDhTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQxNig2LCBMb2FkMTZaKSk7CisgICAg
UlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQx
Nig2LCBMb2FkMTZTKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBMb2Fk
MTZTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZTKSk7CiAgICAg
UlVOKHRlc3RTdG9yZUFkZExvYWQzMkluZGV4KDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExv
YWRJbW0zMkluZGV4KDQ2KSk7CkBAIC0xNTgzMSw2ICsxNjYyOSwzOSBAQCB2b2lkIHJ1bihjb25z
dCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQyKCkpOwogICAg
IFJVTih0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RPcHRpbWl6ZU1h
dGVyaWFsaXphdGlvbigpKTsKKyAgICAKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50OF90
PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50MTZfdD4oKSk7CisgICAgUlVOKHRl
c3RBdG9taWNXZWFrQ0FTPGludDMyX3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxp
bnQ2NF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ4X3Q+KCkpOworICAg
IFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDE2X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWlj
U3Ryb25nQ0FTPGludDMyX3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDY0
X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdBZGQpKTsK
KyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ0FkZCkpOworICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RB
dG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hj
aGc8aW50OF90PihBdG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2
X3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRv
bWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hn
QW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ09yKSk7Cisg
ICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJVTih0
ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGlu
dDhfdD4oQXRvbWljWGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihB
dG9taWNYY2hnU3ViKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hj
aGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ1N1Yikp
OworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBS
VU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0ZXN0
QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNY
Y2hnPGludDY0X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50
OF90PihBdG9taWNYY2hnKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21p
Y1hjaGcpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZykpOwor
ICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnKSk7CiAKICAgICBSVU4o
dGVzdFdhc21Cb3VuZHNDaGVjaygwKSk7CiAgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soMTAw
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCShyZXZpc2lv
biAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCB1bnNpZ25lZCBBcmc6OmpzSGFzaCgpIGNv
bnN0CiAgICAgY2FzZSBSZWxDb25kOgogICAgIGNhc2UgUmVzQ29uZDoKICAgICBjYXNlIERvdWJs
ZUNvbmQ6CisgICAgY2FzZSBTdGF0dXNDb25kOgogICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAg
IHJlc3VsdCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpOwogICAgICAgICBicmVh
azsKQEAgLTExMCw2ICsxMTEsOSBAQCB1bnNpZ25lZCBBcmc6OmpzSGFzaCgpIGNvbnN0CiAgICAg
ICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpOwogICAgICAgICBy
ZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0ID4+IDMyKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTaW1wbGVBZGRyOgorICAgICAgICByZXN1bHQgKz0gbV9iYXNlLmlu
dGVybmFsVmFsdWUoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBZGRyOgogICAgICAgICBy
ZXN1bHQgKz0gbV9vZmZzZXQ7CiAgICAgICAgIHJlc3VsdCArPSBtX2Jhc2UuaW50ZXJuYWxWYWx1
ZSgpOwpAQCAtMTUwLDYgKzE1NCw5IEBAIHZvaWQgQXJnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiAgICAgY2FzZSBCaXRJbW02NDoKICAgICAgICAgb3V0LnByaW50ZigiJDB4JWxseCIs
IHN0YXRpY19jYXN0PGxvbmcgbG9uZyB1bnNpZ25lZD4obV9vZmZzZXQpKTsKICAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgU2ltcGxlQWRkcjoKKyAgICAgICAgb3V0LnByaW50KCIoIiwgYmFzZSgp
LCAiKSIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBZGRyOgogICAgICAgICBpZiAob2Zm
c2V0KCkpCiAgICAgICAgICAgICBvdXQucHJpbnQob2Zmc2V0KCkpOwpAQCAtMTgyLDYgKzE4OSw5
IEBAIHZvaWQgQXJnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgY2FzZSBEb3Vi
bGVDb25kOgogICAgICAgICBvdXQucHJpbnQoYXNEb3VibGVDb25kaXRpb24oKSk7CiAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIFN0YXR1c0NvbmQ6CisgICAgICAgIG91dC5wcmludChhc1N0YXR1
c0NvbmRpdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgU3BlY2lhbDoKICAgICAg
ICAgb3V0LnByaW50KHBvaW50ZXJEdW1wKHNwZWNpYWwoKSkpOwogICAgICAgICByZXR1cm47CkBA
IC0yMjAsNiArMjMwLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFy
ZwogICAgIGNhc2UgQXJnOjpCaXRJbW02NDoKICAgICAgICAgb3V0LnByaW50KCJCaXRJbW02NCIp
OwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlNpbXBsZUFkZHI6CisgICAgICAgIG91
dC5wcmludCgiU2ltcGxlQWRkciIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OkFk
ZHI6CiAgICAgICAgIG91dC5wcmludCgiQWRkciIpOwogICAgICAgICByZXR1cm47CkBAIC0yNDEs
NiArMjU0LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAg
IGNhc2UgQXJnOjpEb3VibGVDb25kOgogICAgICAgICBvdXQucHJpbnQoIkRvdWJsZUNvbmQiKTsK
ICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJnOjpTdGF0dXNDb25kOgorICAgICAgICBvdXQu
cHJpbnQoIlN0YXR1c0NvbmQiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpTcGVj
aWFsOgogICAgICAgICBvdXQucHJpbnQoIlNwZWNpYWwiKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
Mjg1LDYgKzMwMSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmcK
ICAgICBjYXNlIEFyZzo6RWFybHlEZWY6CiAgICAgICAgIG91dC5wcmludCgiRWFybHlEZWYiKTsK
ICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CisgICAgICAgIG91dC5w
cmludCgiRWFybHlaRGVmIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFyZzo6U2NyYXRj
aDoKICAgICAgICAgb3V0LnByaW50KCJTY3JhdGNoIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAkocmV2aXNpb24gMjEzMzc5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAkod29ya2luZyBjb3B5KQpAQCAt
NzIsNiArNzIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gVGhlc2UgYXJlIHRoZSBhZGRyZXNz
ZXMuIEluc3RydWN0aW9ucyBtYXkgbG9hZCBmcm9tIChVc2UpLCBzdG9yZSB0byAoRGVmKSwgb3Ig
ZXZhbHVhdGUKICAgICAgICAgLy8gKFVzZUFkZHIpIGFkZHJlc3Nlcy4KKyAgICAgICAgU2ltcGxl
QWRkciwKICAgICAgICAgQWRkciwKICAgICAgICAgU3RhY2ssCiAgICAgICAgIENhbGxBcmcsCkBA
IC04Miw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVsQ29uZCwKICAgICAgICAgUmVzQ29u
ZCwKICAgICAgICAgRG91YmxlQ29uZCwKKyAgICAgICAgU3RhdHVzQ29uZCwKICAgICAgICAgU3Bl
Y2lhbCwKICAgICAgICAgV2lkdGhBcmcKICAgICB9OwpAQCAtMTUxLDYgKzE1Myw4IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gYXMgVXNlIGhhcyB1bmRlZmluZWQgYmVoYXZpb3I6IHRoZSB1c2UgbWF5
IGhhcHBlbiBiZWZvcmUgdGhlIGRlZiwgb3IgaXQgbWF5IGhhcHBlbiBhZnRlcgogICAgICAgICAv
LyBpdC4KICAgICAgICAgRWFybHlEZWYsCisgICAgICAgICAgICAKKyAgICAgICAgRWFybHlaRGVm
LAogCiAgICAgICAgIC8vIFNvbWUgaW5zdHJ1Y3Rpb25zIG5lZWQgYSBzY3JhdGNoIHJlZ2lzdGVy
LiBXZSBtb2RlbCB0aGlzIGJ5IHNheWluZyB0aGF0IHRoZSB0ZW1wb3JhcnkgaXMKICAgICAgICAg
Ly8gZGVmaW5lZCBlYXJseSBhbmQgdXNlZCBsYXRlLiBUaGlzIHJvbGUgaW1wbGllcyB0aGF0LgpA
QCAtMTg2LDYgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBj
YXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHla
RGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjA2LDYgKzIxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2Fz
ZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6
CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI4LDYgKzIzNCw3IEBA
IHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAg
ICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAg
ICAgcmV0dXJuIHJvbGU7CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICAgICAgcmV0dXJuIENv
bGRVc2U7CkBAIC0yNTMsNiArMjYwLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIExhdGVDb2xk
VXNlOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAg
ICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjc0LDYgKzI4Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNh
c2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjk0
LDYgKzMwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVz
ZVpEZWY6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgog
ICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMzE1LDYgKzMyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAg
ICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMzAsNiArMzQxLDcgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToKICAgICAgICAgY2FzZSBFYXJs
eURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAg
ICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1
OCw2ICszNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRl
ZjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtNDE2LDYgKzQyOSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBiaWdJbW0oYml0d2lzZV9jYXN0PGludHB0cl90PihhZGRyZXNzKSk7CiAgICAgfQogCisgICAg
c3RhdGljIEFyZyBzaW1wbGVBZGRyKEFpcjo6VG1wIHB0cikKKyAgICB7CisgICAgICAgIEFTU0VS
VChwdHIuaXNHUCgpKTsKKyAgICAgICAgQXJnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2lu
ZCA9IFNpbXBsZUFkZHI7CisgICAgICAgIHJlc3VsdC5tX2Jhc2UgPSBwdHI7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgc3RhdGljIEFyZyBhZGRyKEFpcjo6VG1wIGJhc2Us
IGludDMyX3Qgb2Zmc2V0ID0gMCkKICAgICB7CiAgICAgICAgIEFTU0VSVChiYXNlLmlzR1AoKSk7
CkBAIC01MzMsNiArNTU1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKKyAgICBzdGF0aWMgQXJnIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0Nv
bmRpdGlvbiBjb25kaXRpb24pCisgICAgeworICAgICAgICBBcmcgcmVzdWx0OworICAgICAgICBy
ZXN1bHQubV9raW5kID0gU3RhdHVzQ29uZDsKKyAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gY29u
ZGl0aW9uOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHN0YXRpYyBBcmcg
c3BlY2lhbChBaXI6OlNwZWNpYWwqIHNwZWNpYWwpCiAgICAgewogICAgICAgICBBcmcgcmVzdWx0
OwpAQCAtNjA4LDYgKzYzOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBi
b29sIGlzU2ltcGxlQWRkcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ga2luZCgpID09
IFNpbXBsZUFkZHI7CisgICAgfQorCiAgICAgYm9vbCBpc0FkZHIoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIGtpbmQoKSA9PSBBZGRyOwpAQCAtNjMxLDYgKzY2Niw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzTWVtb3J5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCgp
KSB7CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgogICAgICAg
ICBjYXNlIFN0YWNrOgogICAgICAgICBjYXNlIENhbGxBcmc6CkBAIC02NDEsNiArNjc3LDEzIEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlz
IGlzIGFuIGlkaW9tYXRpYyBzdGFjayByZWZlcmVuY2UuIEl0IG1heSByZXR1cm4gZmFsc2UgZm9y
IHNvbWUga2luZHMgb2YKKyAgICAvLyBzdGFjayByZWZlcmVuY2VzLiBUaGUgZm9sbG93aW5nIGlk
aW9tcyBhcmUgcmVjb2duaXplZDoKKyAgICAvLyAtIHRoZSBTdGFjayBraW5kCisgICAgLy8gLSB0
aGUgQ2FsbEFyZyBraW5kCisgICAgLy8gLSB0aGUgQWRkciBraW5kIHdpdGggdGhlIGJhc2UgYmVp
bmcgZWl0aGVyIFNQIG9yIEZQCisgICAgLy8gQ2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uIGFyZSBh
bGxvd2VkIHRvIGV4cGVjdCB0aGF0IGlmIGl0IHJldHVybnMgdHJ1ZSwgdGhlbiBpdCBtdXN0IGJl
IG9uZSBvZgorICAgIC8vIHRoZXNlIGVhc3ktdG8tcmVjb2duaXplIGtpbmRzLiBTbywgbWFraW5n
IHRoaXMgZnVuY3Rpb24gcmVjb2duaXplIG1vcmUga2luZHMgY291bGQgYnJlYWsgdGhpbmdzLgog
ICAgIGJvb2wgaXNTdGFja01lbW9yeSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc1JlbENvbmQoKSBj
b25zdApAQCAtNjU4LDEyICs3MDEsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4ga2luZCgp
ID09IERvdWJsZUNvbmQ7CiAgICAgfQogCisgICAgYm9vbCBpc1N0YXR1c0NvbmQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBTdGF0dXNDb25kOworICAgIH0KKwogICAg
IGJvb2wgaXNDb25kaXRpb24oKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChraW5kKCkp
IHsKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAg
IGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC03NzQsMTAgKzgyMywxNiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChraW5kKCkgPT0g
QmlnSW1tKTsKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KG1fb2Zmc2V0KSk7CiAgICAgfQorICAgIAorICAgIEFpcjo6VG1wIHB0cigpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQoa2luZCgpID09IFNpbXBsZUFkZHIpOworICAgICAg
ICByZXR1cm4gbV9iYXNlOworICAgIH0KIAogICAgIEFpcjo6VG1wIGJhc2UoKSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBBZGRyIHx8IGtpbmQoKSA9PSBJbmRleCk7Cisg
ICAgICAgIEFTU0VSVChraW5kKCkgPT0gU2ltcGxlQWRkciB8fCBraW5kKCkgPT0gQWRkciB8fCBr
aW5kKCkgPT0gSW5kZXgpOwogICAgICAgICByZXR1cm4gbV9iYXNlOwogICAgIH0KIApAQCAtODQ0
LDYgKzg5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBCaWdJbW06CiAgICAgICAgIGNhc2Ug
Qml0SW1tOgogICAgICAgICBjYXNlIEJpdEltbTY0OgorICAgICAgICBjYXNlIFNpbXBsZUFkZHI6
CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgY2FzZSBJbmRleDoKICAgICAgICAgY2FzZSBT
dGFjazoKQEAgLTg1MSw2ICs5MDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoK
ICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAg
IGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdp
ZHRoQXJnOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04NzIsMTAgKzkyOSwxMiBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAg
ICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAg
Y2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICBjYXNlIEludmFs
aWQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoK
ICAgICAgICAgY2FzZSBBZGRyOgogICAgICAgICBjYXNlIEluZGV4OgogICAgICAgICBjYXNlIFN0
YWNrOgpAQCAtMTA0OSw2ICsxMTA4LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGlz
VmFsaWRCaXRJbW1Gb3JtKHZhbHVlKCkpOwogICAgICAgICBjYXNlIEJpdEltbTY0OgogICAgICAg
ICAgICAgcmV0dXJuIGlzVmFsaWRCaXRJbW02NEZvcm0odmFsdWUoKSk7CisgICAgICAgIGNhc2Ug
U2ltcGxlQWRkcjoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIEFkZHI6
CiAgICAgICAgIGNhc2UgU3RhY2s6CiAgICAgICAgIGNhc2UgQ2FsbEFyZzoKQEAgLTEwNTgsNiAr
MTExOSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJl
c0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25k
OgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNzAsNiArMTEzMiw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgICAgIGNhc2UgVG1wOgorICAgICAgICBjYXNl
IFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgICAgIGZ1bmN0b3IobV9i
YXNlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTExMCw2ICsxMTczLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgQVNTRVJUKGlzQW55VXNlKGFyZ1JvbGUpIHx8IGlzQW55RGVmKGFyZ1JvbGUp
KTsKICAgICAgICAgICAgIGZ1bmN0b3IobV9iYXNlLCBhcmdSb2xlLCBhcmdCYW5rLCBhcmdXaWR0
aCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAg
ICBjYXNlIEFkZHI6CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwgVXNlLCBHUCwgYXJnUm9s
ZSA9PSBVc2VBZGRyID8gYXJnV2lkdGggOiBwb2ludGVyV2lkdGgoKSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTExNDQsOSArMTIwOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQo
aXNJbW0oKSk7CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihw
b2ludGVyVmFsdWUoKSk7CiAgICAgfQotCisgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MgYXNBZGRyZXNzKCkgY29uc3QKICAgICB7CisgICAgICAgIGlmIChpc1NpbXBsZUFkZHIoKSkK
KyAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UuZ3ByKCkp
OwogICAgICAgICBBU1NFUlQoaXNBZGRyKCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MobV9iYXNlLmdwcigpLCBzdGF0aWNfY2FzdDxpbnQzMl90PihtX29mZnNldCkp
OwogICAgIH0KQEAgLTExNzcsNiArMTI0MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uPihtX29mZnNldCk7CiAg
ICAgfQogICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gYXNTdGF0dXND
b25kaXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU3RhdHVzQ29uZCgpKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRp
b24+KG1fb2Zmc2V0KTsKKyAgICB9CisgICAgCiAgICAgLy8gVGVsbHMgeW91IGlmIHRoZSBBcmcg
aXMgaW52ZXJ0aWJsZS4gT25seSBjb25kaXRpb24gYXJndW1lbnRzIGFyZSBpbnZlcnRpYmxlLCBh
bmQgZXZlbiBmb3IgdGhvc2UsIHRoZXJlCiAgICAgLy8gYXJlIGEgZmV3IGV4Y2VwdGlvbnMgLSBu
b3RhYmx5IE92ZXJmbG93IGFuZCBTaWduZWQuCiAgICAgYm9vbCBpc0ludmVydGlibGUoKSBjb25z
dApAQCAtMTE4NCw2ICsxMjU2LDcgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkg
ewogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAg
ICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNh
c2UgUmVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6aXNJbnZlcnRp
YmxlKGFzUmVzdWx0Q29uZGl0aW9uKCkpOwpAQCAtMTIwNCw2ICsxMjc3LDggQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIHJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1Jlc3Vs
dENvbmRpdGlvbigpKSk7CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgICAgIHJl
dHVybiBkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNEb3VibGVDb25kaXRpb24o
KSkpOworICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CisgICAgICAgICAgICByZXR1cm4gc3RhdHVz
Q29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzU3RhdHVzQ29uZGl0aW9uKCkpKTsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICByZXR1cm4gQXJnKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckJhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUs
NiArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogCiBj
b25zdCBjaGFyKiBjb25zdCBCYXNpY0Jsb2NrOjpkdW1wUHJlZml4ID0gIiMiOwogCit2b2lkIEJh
c2ljQmxvY2s6OnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrIHRhcmdldCkKK3sKKyAgICBt
X3N1Y2Nlc3NvcnMucmVzaXplKDEpOworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRhcmdldDsKK30K
Kwordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YWtlbiwg
RnJlcXVlbnRlZEJsb2NrIG5vdFRha2VuKQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMik7
CisgICAgbV9zdWNjZXNzb3JzWzBdID0gdGFrZW47CisgICAgbV9zdWNjZXNzb3JzWzFdID0gbm90
VGFrZW47Cit9CisKIGJvb2wgQmFzaWNCbG9jazo6YWRkUHJlZGVjZXNzb3IoQmFzaWNCbG9jayog
YmxvY2spCiB7CiAgICAgcmV0dXJuIEIzOjphZGRQcmVkZWNlc3Nvcih0aGlzLCBibG9jayk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkocmV2
aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Js
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMywxMSBAQAogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKLW5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0OworCituYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiBj
bGFzcyBDb2RlOwpAQCAtOTksNiArMTAzLDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN1Y2Nlc3Nv
ckxpc3QmIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KICAgICBT
dWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAKKyAg
ICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKTsKKyAgICB2b2lkIHNldFN1Y2Nl
c3NvcnMoRnJlcXVlbnRlZEJsb2NrLCBGcmVxdWVudGVkQmxvY2spOworCiAgICAgQmFzaWNCbG9j
ayogc3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3Nv
cihpbmRleCkuYmxvY2soKTsgfQogICAgIEJhc2ljQmxvY2sqJiBzdWNjZXNzb3JCbG9jayh1bnNp
Z25lZCBpbmRleCkgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAgU3Vj
Y2Vzc29yQ29sbGVjdGlvbjxCYXNpY0Jsb2NrLCBTdWNjZXNzb3JMaXN0PiBzdWNjZXNzb3JCbG9j
a3MoKQpAQCAtMTMzLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2Nr
SW5zZXJ0aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBDb2RlOwogICAgIGZyaWVuZCBjbGFzcyBJ
bnNlcnRpb25TZXQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBCMzo6R2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIAogICAgIEJhc2ljQmxvY2sodW5zaWduZWQgaW5k
ZXgsIGRvdWJsZSBmcmVxdWVuY3kpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBaXJC
bG9ja0luc2VydGlvblNldC5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFp
ckJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0J1YmJs
ZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIg
eworCitCbG9ja0luc2VydGlvblNldDo6QmxvY2tJbnNlcnRpb25TZXQoQ29kZSAmY29kZSkKKyAg
ICA6IEdlbmVyaWNCbG9ja0luc2VydGlvblNldChjb2RlLm1fYmxvY2tzKQoreworfQorCitCbG9j
a0luc2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KCkKK3sKK30KKworfSB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25T
ZXQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJs
b2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0luc2VydGlvblNl
dC5oIgorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CisKK2NsYXNzIEluc2VydGlvblNldDsKKwordHlwZWRlZiBHZW5lcmlj
QmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5zZXJ0
aW9uOworCitjbGFzcyBCbG9ja0luc2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQ8QmFzaWNCbG9jaz4geworcHVibGljOgorICAgIEJsb2NrSW5zZXJ0aW9uU2V0KENv
ZGUmKTsKKyAgICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGV2ZW50dWFsbHkgaW1wbGVtZW50IEIzOjpCbG9ja0luc2VydGlvblNldCdzIHNwbGl0
Rm9yd2FyZCgpLgorfTsKKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRHVtcEFzSlMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRHVtcEFzSlMuY3BwCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI0NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFpckR1bXBBc0pTLmgiCi0KLSNpZiBFTkFC
TEUoQjNfSklUKQotCi0jaW5jbHVkZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFpckluc3RJbmxp
bmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsK
LQotbmFtZXNwYWNlIHsKLQotQ1N0cmluZyB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KHVuc2lnbmVk
IGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoImJiIiwgaW5kZXgpOwotfQotCi1DU3Ry
aW5nIHZhck5hbWUoQmFzaWNCbG9jayogYmxvY2spCi17Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JC
bG9ja0F0SW5kZXgoYmxvY2stPmluZGV4KCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWVGb3JTdGFj
a1Nsb3RBdEluZGV4KHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoInNs
b3QiLCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShTdGFja1Nsb3QqIHNsb3QpCi17Ci0g
ICAgcmV0dXJuIHZhck5hbWVGb3JTdGFja1Nsb3RBdEluZGV4KHNsb3QtPmluZGV4KCkpOwotfQot
Ci1DU3RyaW5nIHZhck5hbWUoUmVnIHJlZykKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJSZWcu
IiwgcmVnLmRlYnVnTmFtZSgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lRm9yVG1wV2l0aEJhbmtB
bmRJbmRleChCYW5rIGJhbmssIHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJp
bmcoYmFuayA9PSBGUCA/ICJmIiA6ICIiLCAidG1wIiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZh
ck5hbWUoVG1wIHRtcCkKLXsKLSAgICBpZiAodG1wLmlzUmVnKCkpCi0gICAgICAgIHJldHVybiB2
YXJOYW1lKHRtcC5yZWcoKSk7Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZElu
ZGV4KEFyZyh0bXApLmJhbmsoKSwgdG1wLnRtcEluZGV4KCkpOwotfQotCi19IC8vIGFub255bW91
cyBuYW1lc3BhY2UKLQotdm9pZCBkdW1wQXNKUyhDb2RlJiBjb2RlLCBQcmludFN0cmVhbSYgb3V0
KQotewotICAgIG91dC5wcmludGxuKCJsZXQgY29kZSA9IG5ldyBDb2RlKCk7Iik7Ci0gICAgCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGUuc2l6ZSgpOyArK2kpCi0gICAgICAgIG91
dC5wcmludGxuKCJsZXQgIiwgdmFyTmFtZUZvckJsb2NrQXRJbmRleChpKSwgIiA9IGNvZGUuYWRk
QmxvY2soKTsiKTsKLSAgICAKLSAgICBvdXQucHJpbnRsbigibGV0IGhhc2g7Iik7Ci0KLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZS5zdGFja1Nsb3RzKCkuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgU3RhY2tTbG90KiBzbG90ID0gY29kZS5zdGFja1Nsb3RzKClbaV07Ci0gICAgICAg
IGlmIChzbG90KSB7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZhck5hbWUoc2xv
dCksICIgPSBjb2RlLmFkZFN0YWNrU2xvdCgiLCBzbG90LT5ieXRlU2l6ZSgpLCAiLCAiLCBzbG90
LT5raW5kKCksICIpOyIpOwotICAgICAgICAgICAgaWYgKHNsb3QtPm9mZnNldEZyb21GUCgpKQot
ICAgICAgICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoc2xvdCksICIuc2V0T2Zmc2V0RnJv
bUZQKCIsIHNsb3QtPm9mZnNldEZyb21GUCgpLCAiKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmlu
dGxuKCJoYXNoID0gIiwgdmFyTmFtZShzbG90KSwgIi5oYXNoKCk7Iik7Ci0gICAgICAgICAgICBv
dXQucHJpbnRsbigiaWYgKGhhc2ggIT0gIiwgc2xvdC0+anNIYXNoKCksICIpIik7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRsbigiICAgIHRocm93IG5ldyBFcnJvcihcIkJhZCBoYXNoOiBcIiArIGhh
c2gpOyIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJjb2RlLmFk
ZFN0YWNrU2xvdCgxLCBTcGlsbCk7Iik7Ci0gICAgfQotICAgIAotICAgIGZvckVhY2hCYW5rKAot
ICAgICAgICBbJl0gKEJhbmsgYmFuaykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
Y29kZS5udW1UbXBzKGJhbmspOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Ci0gICAgICAgICAgICAgICAgICAgICJsZXQgIiwgdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5kSW5k
ZXgoYmFuaywgaSksICIgPSBjb2RlLm5ld1RtcCgiLCBiYW5rLCAiKTsiKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSk7Ci0gICAgCi0gICAgb3V0LnByaW50bG4oImxldCBpbnN0OyIpOwotICAg
IG91dC5wcmludGxuKCJsZXQgYXJnOyIpOwotICAgIAotICAgIGZvciAoQmFzaWNCbG9jayogYmxv
Y2sgOiBjb2RlKSB7Ci0gICAgICAgIGZvciAoRnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJs
b2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAg
ICAgICAgIHZhck5hbWUoYmxvY2spLCAiLnN1Y2Nlc3NvcnMucHVzaChuZXcgRnJlcXVlbnRlZEJs
b2NrKCIsCi0gICAgICAgICAgICAgICAgdmFyTmFtZShzdWNjZXNzb3IuYmxvY2soKSksICIsICIs
IHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSwgIikpOyIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycygp
KQotICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayksICIucHJlZGVjZXNzb3Jz
LnB1c2goIiwgdmFyTmFtZShwcmVkZWNlc3NvciksICIpOyIpOwotICAgICAgICAKLSAgICAgICAg
Zm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgZG8gc29tZXRoaW5nIGZvciBmbGFncy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3NTEKLSAgICAgICAgICAgIG91dC5wcmlu
dGxuKCJpbnN0ID0gbmV3IEluc3QoIiwgaW5zdC5raW5kLm9wY29kZSwgIik7Iik7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAgICBbJl0g
KEFyZyYgYXJnLCBBcmc6OlJvbGUsIEJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAoYXJnLmtpbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6SW52
YWxpZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VG1wOgotICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVUbXAoIiwgdmFyTmFtZShhcmcu
dG1wKCkpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbW06Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUltbSgiLCBh
cmcudmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6QmlnSW1t
OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVCaWdJbW0oIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSksICIsICIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkg
Pj4gMzIpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaXRJbW06Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUJpdElt
bSgiLCBhcmcudmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
Qml0SW1tNjQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUJpdEltbTY0KCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkpLCAi
LCAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFy
Zy52YWx1ZSgpID4+IDMyKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
QWRkcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlQWRkcigiLCB2YXJOYW1lKGFyZy5iYXNl
KCkpLCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBcmc6OlN0YWNrOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVTdGFjaygiLCB2YXJOYW1l
KGFyZy5zdGFja1Nsb3QoKSksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFyZzo6Q2FsbEFyZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlQ2FsbEFyZygiLCBhcmcub2Zmc2V0KCksICIpOyIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkluZGV4OgotICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9
IEFyZy5jcmVhdGVJbmRleCgiLCB2YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhck5hbWUoYXJnLmluZGV4KCkpLCAiLCAiLCBhcmcuc2NhbGUo
KSwgIiwgIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
QXJnOjpSZWxDb25kOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9
IEFyZy5jcmVhdGVSZWxDb25kKCIsIGFyZy5hc1JlbGF0aW9uYWxDb25kaXRpb24oKSwgIik7Iik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6UmVzQ29uZDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlUmVzQ29uZCgiLCBhcmcuYXNS
ZXN1bHRDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
RG91YmxlQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBB
cmcuY3JlYXRlRG91YmxlQ29uZCgiLCBhcmcuYXNEb3VibGVDb25kaXRpb24oKSwgIik7Iik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U3BlY2lhbDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlU3BlY2lhbCgpOyIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OldpZHRoQXJnOgotICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVXaWR0aEFyZygiLCBhcmcud2lkdGgoKSwg
Iik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50
bG4oImluc3QuYXJncy5wdXNoKGFyZyk7Iik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGluc3QuaGFzTm9uQXJnRWZmZWN0cygpKQotICAgICAgICAgICAgICAg
ICAgICBvdXQucHJpbnRsbigiaW5zdC5wYXRjaEhhc05vbkFyZ0VmZmVjdHMgPSB0cnVlOyIpOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJh
RWFybHlDbG9iYmVyZWRSZWdzID0gbmV3IFNldCgpOyIpOwotICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKCJpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncyA9IG5ldyBTZXQoKTsiKTsKLSAgICAgICAg
ICAgICAgICBpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkuZm9yRWFjaCgKLSAgICAgICAg
ICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbigiaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcp
LCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgaW5zdC5l
eHRyYUNsb2JiZXJlZFJlZ3MoKS5mb3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0gKFJl
ZyByZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJh
Q2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAiKTsiKTsKLSAgICAgICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Imluc3QucGF0Y2hBcmdEYXRhID0gW107Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNo
QXJnKAotICAgICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5r
IGJhbmssIFdpZHRoIHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRs
bigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdC5wYXRjaEFyZ0RhdGEucHVzaCh7
cm9sZTogQXJnLiIsIHJvbGUsICIsIHR5cGU6ICIsIGJhbmssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiwgd2lkdGg6ICIsIHdpZHRoLCAifSk7Iik7Ci0gICAgICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5zdC5r
aW5kLm9wY29kZSA9PSBDQ2FsbCB8fCBpbnN0LmtpbmQub3Bjb2RlID09IENvbGRDQ2FsbCkgewot
ICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsVHlwZSA9ICIsIGluc3Qub3Jp
Z2luLT50eXBlKCkpOwotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsQXJn
VHlwZXMgPSBbXTsiKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwg
aW5zdC5vcmlnaW4tPm51bUNoaWxkcmVuKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50bG4oImluc3QuY0NhbGxBcmdUeXBlcy5wdXNoKCIsIGluc3Qub3JpZ2luLT5jaGlsZChp
KS0+dHlwZSgpLCAiKTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgb3V0LnByaW50bG4oImhhc2ggPSBpbnN0Lmhhc2goKTsiKTsKLSAgICAgICAgICAgIG91dC5w
cmludGxuKCJpZiAoaGFzaCAhPSAiLCBpbnN0LmpzSGFzaCgpLCAiKSIpOwotICAgICAgICAgICAg
b3V0LnByaW50bG4oIiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgaGFzaDogXCIgKyBoYXNoKTsi
KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayks
ICIuYXBwZW5kKGluc3QpOyIpOwotICAgICAgICB9Ci0gICAgfQotfQotCi19IH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMzo6QWlyCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5oCShyZXZpc2lvbiAyMTMz
NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQotI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsgbmFtZXNwYWNlIEFpciB7Ci0KLWNsYXNzIENvZGU7Ci0KLS8vIFRoaXMgaXMgdXNlZCBmb3Ig
YmVuY2htYXJraW5nLiBWYXJpb3VzIG9wZXJhdGlvbnMgb24gQWlyIGFyZSBpbnRlcmVzdGluZyBm
cm9tIGEgYmVuY2htYXJraW5nCi0vLyBzdGFuZHBvaW50LiBXZSBjYW4gd3JpdGUgc29tZSBBaXIg
cGhhc2VzIGluIEpTIGFuZCB0aGVuIHVzZSB0aGF0IHRvIGJlbmNobWFyayBKUy4gVGhlIGJlbmNo
bWFyawotLy8gaXMgY2FsbGVkIEpTQWlyLCBhbmQgaXQncyBpbiBQZXJmb3JtYW5jZVRlc3RzL0pT
QWlyLgotdm9pZCBkdW1wQXNKUyhDb2RlJiwgUHJpbnRTdHJlYW0mKTsKLQotfSB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENv
ZGUuY3BwCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw4
IEBAIGJvb2wgZWxpbWluYXRlRGVhZENvZGUoQ29kZSYgY29kZSkKICAgICAgICAgY2hhbmdlZCA9
IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggPSBjb2RlLnNpemUoKTsg
YmxvY2tJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBjb2RlW2Js
b2NrSW5kZXhdOworICAgICAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5zdEluZGV4ID0gYmxvY2stPnNpemUo
KTsgaW5zdEluZGV4LS07KQogICAgICAgICAgICAgICAgIGhhbmRsZUluc3QoYmxvY2stPmF0KGlu
c3RJbmRleCkpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckdlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckdlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw3ICsz
MSw2IEBACiAjaW5jbHVkZSAiQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuaCIK
ICNpbmNsdWRlICJBaXJBbGxvY2F0ZVN0YWNrLmgiCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgotI2lu
Y2x1ZGUgIkFpckR1bXBBc0pTLmgiCiAjaW5jbHVkZSAiQWlyRWxpbWluYXRlRGVhZENvZGUuaCIK
ICNpbmNsdWRlICJBaXJGaXhPYnZpb3VzU3BpbGxzLmgiCiAjaW5jbHVkZSAiQWlyRml4UGFydGlh
bFJlZ2lzdGVyU3RhbGxzLmgiCkBAIC02MiwxNyArNjEsMTkgQEAgdm9pZCBwcmVwYXJlRm9yR2Vu
ZXJhdGlvbihDb2RlJiBjb2RlKQogewogICAgIFRpbWluZ1Njb3BlIHRpbWluZ1Njb3BlKCJBaXI6
OnByZXBhcmVGb3JHZW5lcmF0aW9uIik7CiAgICAgCisgICAgLy8gSWYgd2UncmUgZG9pbmcgc3Vw
ZXIgdmVyYm9zZSBkdW1waW5nLCB0aGUgcGhhc2Ugc2NvcGUgb2YgYW55IHBoYXNlIHdpbGwgYWxy
ZWFkeSBkbyBhIGR1bXAuCisgICAgaWYgKHNob3VsZER1bXBJUihBaXJNb2RlKSAmJiAhc2hvdWxk
RHVtcElSQXRFYWNoUGhhc2UoQWlyTW9kZSkpIHsKKyAgICAgICAgZGF0YUxvZygiSW5pdGlhbCBh
aXI6XG4iKTsKKyAgICAgICAgZGF0YUxvZyhjb2RlKTsKKyAgICB9CisgICAgCiAgICAgLy8gV2Ug
ZG9uJ3QgZXhwZWN0IHRoZSBpbmNvbWluZyBjb2RlIHRvIGhhdmUgcHJlZGVjZXNzb3JzIGNvbXB1
dGVkLgogICAgIGNvZGUucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAKICAgICBpZiAoc2hvdWxk
VmFsaWRhdGVJUigpKQogICAgICAgICB2YWxpZGF0ZShjb2RlKTsKIAotICAgIC8vIElmIHdlJ3Jl
IGRvaW5nIHN1cGVyIHZlcmJvc2UgZHVtcGluZywgdGhlIHBoYXNlIHNjb3BlIG9mIGFueSBwaGFz
ZSB3aWxsIGFscmVhZHkgZG8gYSBkdW1wLgotICAgIGlmIChzaG91bGREdW1wSVIoQWlyTW9kZSkg
JiYgIXNob3VsZER1bXBJUkF0RWFjaFBoYXNlKEFpck1vZGUpKSB7Ci0gICAgICAgIGRhdGFMb2co
IkluaXRpYWwgYWlyOlxuIik7Ci0gICAgICAgIGRhdGFMb2coY29kZSk7Ci0gICAgfQorICAgIHNp
bXBsaWZ5Q0ZHKGNvZGUpOwogCiAgICAgbG93ZXJNYWNyb3MoY29kZSk7CiAKQEAgLTEwNywyMyAr
MTA4LDExIEBAIHZvaWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAvLyBk
b2VzIHRoaW5ncyBsaWtlIGlkZW50aWZ5IHdoaWNoIGNhbGxlZS1zYXZlcyB3ZSdyZSB1c2luZyBh
bmQgc2F2ZXMgdGhlbS4KICAgICBoYW5kbGVDYWxsZWVTYXZlcyhjb2RlKTsKICAgICAKLSAgICBp
ZiAoT3B0aW9uczo6ZHVtcEFpckFzSlNCZWZvcmVBbGxvY2F0ZVN0YWNrKCkpIHsKLSAgICAgICAg
ZGF0YUxvZygiRHVtcGluZyBBaXIgYXMgSlMgYmVmb3JlIGFsbG9jYXRlU3RhY2s6XG4iKTsKLSAg
ICAgICAgZHVtcEFzSlMoY29kZSwgV1RGOjpkYXRhRmlsZSgpKTsKLSAgICAgICAgZGF0YUxvZygi
QWlyIGhhc2g6ICIsIGNvZGUuanNIYXNoKCksICJcbiIpOwotICAgIH0KLQogICAgIC8vIFRoaXMg
dHVybnMgYWxsIFN0YWNrIGFuZCBDYWxsQXJnIEFyZ3MgaW50byBBZGRyIGFyZ3MgdGhhdCB1c2Ug
dGhlIGZyYW1lIHBvaW50ZXIuIEl0IGRvZXMKICAgICAvLyB0aGlzIGJ5IGZpcnN0LWZpdCBhbGxv
Y2F0aW5nIHN0YWNrIHNsb3RzLiBJdCBzaG91bGQgYmUgcHJldHR5IGRhcm4gY2xvc2UgdG8gb3B0
aW1hbCwgc28gd2UKICAgICAvLyBzaG91bGRuJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGlzIHZl
cnkgbXVjaC4KICAgICBhbGxvY2F0ZVN0YWNrKGNvZGUpOwogICAgIAotICAgIGlmIChPcHRpb25z
OjpkdW1wQWlyQWZ0ZXJBbGxvY2F0ZVN0YWNrKCkpIHsKLSAgICAgICAgZGF0YUxvZygiRHVtcGlu
ZyBBaXIgYWZ0ZXIgYWxsb2NhdGVTdGFjazpcbiIpOwotICAgICAgICBkYXRhTG9nKGNvZGUpOwot
ICAgICAgICBkYXRhTG9nKCJBaXIgaGFzaDogIiwgY29kZS5qc0hhc2goKSwgIlxuIik7Ci0gICAg
fQotCiAgICAgLy8gSWYgd2UgY29hbGVzY2VkIG1vdmVzIHRoZW4gd2UgY2FuIHVuYnJlYWsgY3Jp
dGljYWwgZWRnZXMuIFRoaXMgaXMgdGhlIG1haW4gcmVhc29uIGZvciB0aGlzCiAgICAgLy8gcGhh
c2UuCiAgICAgc2ltcGxpZnlDRkcoY29kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3Nyw2ICsyNzcsNzMgQEAgaW5saW5lIGJvb2wgaXNYODZVRGl2NjRWYWxpZChjb25zdCBJbnN0
JgogICAgIHJldHVybiBpc1g4NkRpdkhlbHBlclZhbGlkKGluc3QpOwogfQogCitpbmxpbmUgYm9v
bCBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisjaWYgQ1BVKFg4
NikgfHwgQ1BVKFg4Nl82NCkKKyAgICBzd2l0Y2ggKGluc3QuYXJncy5zaXplKCkpIHsKKyAgICBj
YXNlIDM6CisgICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMF0gPT0gVG1wKFg4NlJlZ2lzdGVyczo6
ZWF4KTsKKyAgICBjYXNlIDU6CisgICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMV0gPT0gVG1wKFg4
NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorI2Vsc2UgLy8gQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICBVTlVTRURfUEFSQU0o
aW5zdCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8vIENQVShYODYpIHx8IENQVShYODZf
NjQpCit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoY29uc3Qg
SW5zdCYgaW5zdCkKK3sKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgIHJldHVybiBp
bnN0LmFyZ3NbMV0gPT0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyNlbHNlIC8vIENQVShYODYp
IHx8IENQVShYODZfNjQpCisgICAgVU5VU0VEX1BBUkFNKGluc3QpOworICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZiAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorfQorCitpbmxpbmUgYm9vbCBp
c0F0b21pY1N0cm9uZ0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBp
c0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0
cm9uZ0NBUzE2VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNBdG9taWNT
dHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVMz
MlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FT
VmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTNjRWYWxpZChj
b25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGlu
c3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzhWYWxpZChjb25z
dCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlk
KGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzE2VmFsaWQo
Y29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNW
YWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVMzMlZh
bGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25n
Q0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FT
NjRWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0
cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWly
CiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE3
LDYgKzExNyw3IEBAIEFkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICB4ODY6IEltbSwgSW5kZXgK
ICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAg
ICAgeDg2OiBUbXAsIEFkZHIKICAgICB4ODY6IFRtcCwgSW5kZXgKIApAQCAtMTM1LDkgKzEzNiwx
MiBAQCB4ODY6IEFkZDE2IFU6RzoxNiwgVUQ6RzoxNgogNjQ6IEFkZDY0IFU6Rzo2NCwgVUQ6Rzo2
NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgK
ICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAg
ICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKIAogNjQ6IEFkZDY0IFU6Rzo2
NCwgVTpHOjY0LCBEOkc6NjQKICAgICBJbW0sIFRtcCwgVG1wCkBAIC0xNjYsOSArMTcwLDEyIEBA
IHg4NjogQWRkRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiBTdWIzMiBVOkc6MzIsIFVaRDpHOjMyCiAg
ICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAg
IEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4
ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogCiBhcm02NDogU3ViMzIgVTpHOjMy
LCBVOkc6MzIsIEQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTE3Niw5ICsxODMsMTIgQEAg
YXJtNjQ6IFN1YjMyIFU6RzozMiwgVTpHOjMyLCBEOkc6MzIKIDY0OiBTdWI2NCBVOkc6NjQsIFVE
Okc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIElu
ZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRt
cAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAKIGFybTY0OiBTdWI2
NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMjA0LDkgKzIx
NCwxMiBAQCB4ODY6IFN1YkZsb2F0IFU6RjozMiwgVUQ6RjozMgogTmVnMzIgVVpEOkc6MzIKICAg
ICBUbXAKICAgICB4ODY6IEFkZHIKKyAgICB4ODY6IEluZGV4CiAKIDY0OiBOZWc2NCBVRDpHOjY0
CiAgICAgVG1wCisgICAgeDg2OiBBZGRyCisgICAgeDg2OiBJbmRleAogCiBhcm02NDogTmVnYXRl
RG91YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAgLTMzMCw4ICszNDMsMTEgQEAg
QW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAog
ICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBU
bXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1t
LCBJbmRleAogCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1w
LCBUbXAKQEAgLTMzOSw3ICszNTUsMTMgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogCiB4ODZf
NjQ6IEFuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCi0gICAgeDg2OiBJbW0sIFRt
cAorICAgIEltbSwgVG1wCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwg
QWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCiAKIEFu
ZERvdWJsZSBVOkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDU5
LDggKzQ4MSwxMSBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4
NjogSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogICAg
IHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIK
KyAgICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IE9yNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAog
ICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ2OSw2ICs0OTQsMTIgQEAgT3IzMiBVOkc6MzIsIFVaRDpH
OjMyCiA2NDogT3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1t
LCBUbXAKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4Njog
VG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4
ODY6IEluZGV4LCBUbXAKIAogWG9yMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAs
IFRtcCwgVG1wCkBAIC00ODAsOCArNTExLDExIEBAIFhvcjMyIFU6RzozMiwgVVpEOkc6MzIKICAg
ICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4
NjogVG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAg
ICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IFhvcjY0IFU6Rzo2
NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00OTAsNiArNTI0LDExIEBA
IFhvcjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBYb3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBU
bXAsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2
OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICB4ODY6IEltbSwgQWRkcgorICAg
IHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBUbXAKIAogYXJtNjQ6IE5vdDMyIFU6Rzoz
MiwgWkQ6RzozMgpAQCAtNDk4LDEzICs1MzcsMTUgQEAgYXJtNjQ6IE5vdDMyIFU6RzozMiwgWkQ6
RzozMgogeDg2OiBOb3QzMiBVWkQ6RzozMgogICAgIFRtcAogICAgIEFkZHIKKyAgICBJbmRleAog
CiBhcm02NDogTm90NjQgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcAogCi14ODY6IE5vdDY0
IFVEOkc6NjQKK3g4Nl82NDogTm90NjQgVUQ6Rzo2NAogICAgIFRtcAogICAgIEFkZHIKKyAgICBJ
bmRleAogCiBhcm02NDogQWJzRG91YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAg
LTY2OCwyNyArNzA5LDM3NyBAQCBMb2FkOCBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAog
ICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTggVTpHOjgsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4
ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAor
CiBTdG9yZTggVTpHOjgsIEQ6Rzo4CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgogICAg
IHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBBZGRyCiAKK1N0b3JlUmVsOCBVOkc6OCwg
RDpHOjggL2VmZmVjdHMKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IFRtcCwgQWRkcgor
ICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgVG1wLCBTaW1wbGVB
ZGRyCisKIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRt
cAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpH
OjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAg
ICBTaW1wbGVBZGRyLCBUbXAKKwogTG9hZDE2IFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRt
cAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTE2IFU6RzoxNiwgWkQ6RzozMiAvZWZmZWN0cwor
ICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwg
VG1wCisKIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwg
VG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwg
WkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1w
CisgICAgU2ltcGxlQWRkciwgVG1wCisKIFN0b3JlMTYgVTpHOjE2LCBEOkc6MTYKICAgICBUbXAs
IEluZGV4CiAgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0s
IEFkZHIKKworU3RvcmVSZWwxNiBVOkc6MTYsIEQ6RzoxNiAvZWZmZWN0cworICAgIHg4NjogVG1w
LCBJbmRleAorICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2
OiBJbW0sIEFkZHIKKyAgICBUbXAsIFNpbXBsZUFkZHIKKworTG9hZEFjcTMyIFU6RzozMiwgWkQ6
RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisg
ICAgU2ltcGxlQWRkciwgVG1wCisKK1N0b3JlUmVsMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZlY3Rz
CisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwg
QWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIFRtcCwgU2ltcGxlQWRkcgorCis2NDogTG9h
ZEFjcTY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAg
eDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisKKzY0OiBTdG9yZVJlbDY0IFU6
Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAs
IEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICBUbXAs
IFNpbXBsZUFkZHIKKworIyBUaGUgZmlyc3Qgb3BlcmFuZCBpcyByYXguCisjIEZJWE1FOiBUaGlz
IGZvcm11bGF0aW9uIG1lYW5zIHRoYXQgdGhlIGJvb2xlYW4gcmVzdWx0IGNhbm5vdCBiZSBwdXQg
aW4gZWF4LCBldmVuIHRob3VnaCBhbGwgdXNlcnMKKyMgb2YgdGhpcyB3b3VsZCBiZSBPSyB3aXRo
IHRoYXQuCit4ODY6IEF0b21pY1N0cm9uZ0NBUzggVTpHOjMyLCBVRDpHOjgsIFU6Rzo4LCBVRDpH
OjgsIFpEOkc6OCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1w
CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogQXRvbWljU3Ry
b25nQ0FTMTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYsIFpEOkc6OCAvZWZmZWN0
cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwg
VG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMzIgVTpHOjMyLCBV
RDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIsIFpEOkc6OCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQs
IFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwg
VG1wCisKK3g4Nl82NDogQXRvbWljU3Ryb25nQ0FTNjQgVTpHOjMyLCBVRDpHOjY0LCBVOkc6NjQs
IFVEOkc6NjQsIFpEOkc6OCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRk
ciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogQXRv
bWljU3Ryb25nQ0FTOCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBUbXAqLCBU
bXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMTYg
VUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2IC9lZmZlY3RzCisgICAgVG1wKiwgVG1wLCBBZGRyCisg
ICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzMyIFVEOkc6MzIsIFU6
RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRt
cCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNTdHJvbmdDQVM2NCBVRDpHOjY0LCBVOkc6NjQsIFVE
Okc6NjQgL2VmZmVjdHMKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4
CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIsIFVEOkc6OCwgVTpHOjgsIFVE
Okc6OCAvYnJhbmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisg
ICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEJyYW5jaEF0b21pY1N0cm9u
Z0NBUzE2IFU6RzozMiwgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2IC9icmFuY2ggL2VmZmVjdHMK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBU
bXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIgVTpHOjMyLCBVRDpHOjMy
LCBVOkc6MzIsIFVEOkc6MzIgL2JyYW5jaCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCos
IFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2XzY0OiBC
cmFuY2hBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCAv
YnJhbmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3Rh
dHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDggVTpHOjgsIFVEOkc6
OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQWRkMTYgVTpHOjE2LCBVRDpHOjE2IC9lZmZl
Y3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQzMiBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAg
ICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODZfNjQ6IEF0b21pY0FkZDY0IFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIElt
bSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisK
K3g4NjogQXRvbWljU3ViOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNTdWIxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjMy
IFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljU3ViNjQgVTpH
OjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBbmQ4IFU6Rzo4LCBVRDpH
OjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZm
ZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisg
ICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2XzY0OiBBdG9taWNBbmQ2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBJ
bW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IEF0b21pY09yOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNPcjE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3IzMiBV
Okc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY09yNjQgVTpHOjY0
LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYb3I4IFU6Rzo4LCBVRDpHOjgg
L2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0
cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogQXRvbWljWG9yMzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2XzY0OiBBdG9taWNYb3I2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBJbW0s
IEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODY6IEF0b21pY05lZzggVUQ6Rzo4IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4
NjogQXRvbWljTmVnMTYgVUQ6RzoxNiAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4
ODY6IEF0b21pY05lZzMyIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKwor
eDg2XzY0OiBBdG9taWNOZWc2NCBVRDpHOjY0IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4
CisKK3g4NjogQXRvbWljTm90OCBVRDpHOjggL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgK
KworeDg2OiBBdG9taWNOb3QxNiBVRDpHOjE2IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4
CisKK3g4NjogQXRvbWljTm90MzIgVUQ6RzozMiAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRl
eAorCit4ODZfNjQ6IEF0b21pY05vdDY0IFVEOkc6NjQgL2VmZmVjdHMKKyAgICBBZGRyCisgICAg
SW5kZXgKKworeDg2OiBBdG9taWNYY2hnQWRkOCBVRDpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnQWRkMTYgVUQ6Rzox
NiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNYY2hnQWRkMzIgVUQ6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYY2hnQWRkNjQgVUQ6Rzo2NCwgVUQ6
Rzo2NCAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNYY2hnOCBVRDpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNYY2hnMTYgVUQ6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnMzIgVUQ6RzozMiwg
VUQ6RzozMiAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0
OiBBdG9taWNYY2hnNjQgVUQ6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIFRtcCwgQWRkcgor
ICAgIFRtcCwgSW5kZXgKKworYXJtNjQ6IExvYWRMaW5rOCBVOkc6OCwgWkQ6Rzo4IC9lZmZlY3Rz
CisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTggVTpHOjgsIFpEOkc6
OCAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCisjIFN1cGVyIGNvbmZ1c2luZyBmYWN0
OiB0aGlzIHJldHVybnMgMCB0byBtZWFuIHN1Y2Nlc3MsIDEgdG8gbWVhbiBmYWlsdXJlLgorYXJt
NjQ6IFN0b3JlQ29uZDggVTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBT
aW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDggVTpHOjgsIEQ6Rzo4LCBFWkQ6
Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5r
MTYgVTpHOjE2LCBaRDpHOjE2IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0
OiBMb2FkTGlua0FjcTE2IFU6RzoxNiwgWkQ6RzoxNiAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIs
IFRtcAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjggL2VmZmVj
dHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMTYgVTpH
OjE2LCBEOkc6MTYsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAor
Cithcm02NDogTG9hZExpbmszMiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICBTaW1wbGVB
ZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZlY3Rz
CisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQzMiBVOkc6MzIsIEQ6Rzoz
MiwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBT
dG9yZUNvbmRSZWwzMiBVOkc6MzIsIEQ6RzozMiwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwg
U2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGluazY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZm
ZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmtBY3E2NCBVOkc6NjQs
IFpEOkc6NjQgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29u
ZDY0IFU6Rzo2NCwgRDpHOjY0LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRy
LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDY0IFU6Rzo2NCwgRDpHOjY0LCBFWkQ6Rzo4IC9l
ZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IERlcGVuZDMyIFU6Rzoz
MiwgRDpHOjMyCisgICAgVG1wLCBUbXAKKworYXJtNjQ6IERlcGVuZDY0IFU6Rzo2NCwgRDpHOjY0
CisgICAgVG1wLCBUbXAKIAogQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6
MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCShyZXZpc2lv
biAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxv
Y2tPcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzcsNiArMTc3LDEwIEBAIHZvaWQgb3B0
aW1pemVCbG9ja09yZGVyKENvZGUmIGNvZGUpCiAgICAgICAgIGNhc2UgQnJhbmNoU3ViNjQ6CiAg
ICAgICAgIGNhc2UgQnJhbmNoTmVnMzI6CiAgICAgICAgIGNhc2UgQnJhbmNoTmVnNjQ6CisgICAg
ICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTODoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9t
aWNTdHJvbmdDQVMxNjoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMjoKKyAg
ICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVM2NDoKICAgICAgICAgICAgIGlmIChjb2Rl
LmZpbmROZXh0QmxvY2soYmxvY2spID09IGJsb2NrLT5zdWNjZXNzb3JCbG9jaygwKSAmJiBicmFu
Y2guYXJnc1swXS5pc0ludmVydGlibGUoKSkgewogICAgICAgICAgICAgICAgIHN0ZDo6c3dhcChi
bG9jay0+c3VjY2Vzc29yKDApLCBibG9jay0+c3VjY2Vzc29yKDEpKTsKICAgICAgICAgICAgICAg
ICBicmFuY2guYXJnc1swXSA9IGJyYW5jaC5hcmdzWzBdLmludmVydGVkKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3Bw
CShyZXZpc2lvbiAyMTMzNzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBh
ZEludGVyZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgdm9pZCBw
YWRJbnRlcmZlcmVuY2UoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFy
Zzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KHJvbGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAg
ICAgaGFzRWFybHlEZWYgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlVXNlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNp
b24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5
dGhpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBzcGlsbEV2
ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVD
b2xkVXNlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNl
IEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDog
Y29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKGJhbmspKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFzZXRCZWZvcmUuZ2V0KHJlZykgJiYgIXNldEFmdGVyLmdldChyZWcpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgko
cmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVf
Z2VuZXJhdG9yLnJiCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNCArNTEsNDkgQEAgY2xhc3MgQXJn
CiAgICAgICAgIEBiYW5rID0gYmFuawogICAgICAgICBAd2lkdGggPSB3aWR0aAogICAgIGVuZAot
Ci0gICAgZGVmIHdpZHRoQ29kZQorICAgIAorICAgIGRlZiBzZWxmLndpZHRoQ29kZSh3aWR0aCkK
ICAgICAgICAgaWYgd2lkdGggPT0gIlB0ciIKICAgICAgICAgICAgICJwb2ludGVyV2lkdGgoKSIK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgIldpZHRoI3t3aWR0aH0iCiAgICAgICAgIGVuZAog
ICAgIGVuZAorCisgICAgZGVmIHdpZHRoQ29kZQorICAgICAgICBBcmcud2lkdGhDb2RlKHdpZHRo
KQorICAgIGVuZAorICAgIAorICAgIGRlZiBzZWxmLnJvbGVDb2RlKHJvbGUpCisgICAgICAgIGNh
c2Ugcm9sZQorICAgICAgICB3aGVuICJVIgorICAgICAgICAgICAgIlVzZSIKKyAgICAgICAgd2hl
biAiRCIKKyAgICAgICAgICAgICJEZWYiCisgICAgICAgIHdoZW4gIlpEIgorICAgICAgICAgICAg
IlpEZWYiCisgICAgICAgIHdoZW4gIlVEIgorICAgICAgICAgICAgIlVzZURlZiIKKyAgICAgICAg
d2hlbiAiVVpEIgorICAgICAgICAgICAgIlVzZVpEZWYiCisgICAgICAgIHdoZW4gIlVBIgorICAg
ICAgICAgICAgIlVzZUFkZHIiCisgICAgICAgIHdoZW4gIlMiCisgICAgICAgICAgICAiU2NyYXRj
aCIKKyAgICAgICAgd2hlbiAiRUQiCisgICAgICAgICAgICAiRWFybHlEZWYiCisgICAgICAgIHdo
ZW4gIkVaRCIKKyAgICAgICAgICAgICJFYXJseVpEZWYiCisgICAgICAgIHdoZW4gIkxVIgorICAg
ICAgICAgICAgIkxhdGVVc2UiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisgICAg
ICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiByb2xlQ29kZQorICAgICAgICBBcmcucm9s
ZUNvZGUocm9sZSkKKyAgICBlbmQKIGVuZAogCiBjbGFzcyBPdmVybG9hZApAQCAtMTgyLDcgKzIx
Nyw3IEBAIGRlZiBsZXgoc3RyLCBmaWxlTmFtZSkKIGVuZAogCiBkZWYgaXNSb2xlKHRva2VuKQot
ICAgIHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEpfChTKSlcWi8KKyAg
ICB0b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUyl8KEVEKXwoRVpE
KXwoTFUpKVxaLwogZW5kCiAKIGRlZiBpc0dGKHRva2VuKQpAQCAtMTkwLDcgKzIyNSw3IEBAIGRl
ZiBpc0dGKHRva2VuKQogZW5kCiAKIGRlZiBpc0tpbmQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xB
KChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8KEFkZHIpfChJbmRleCl8
KFJlbENvbmQpfChSZXNDb25kKXwoRG91YmxlQ29uZCkpXFovCisgICAgdG9rZW4gPX4gL1xBKChU
bXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8KFNpbXBsZUFkZHIpfChBZGRy
KXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpfChTdGF0dXNDb25kKSlc
Wi8KIGVuZAogCiBkZWYgaXNBcmNoKHRva2VuKQpAQCAtMjY0LDcgKzI5OSw3IEBAIGNsYXNzIFBh
cnNlcgogCiAgICAgZGVmIGNvbnN1bWVLaW5kCiAgICAgICAgIHJlc3VsdCA9IHRva2VuLnN0cmlu
ZwotICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwgQml0SW1t
LCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgb3IgRG91Ymxl
Q29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKKyAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0
ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgU2ltcGxlQWRkciwg
QWRkciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIERvdWJsZUNvbmQsIG9yIFN0YXR1c0NvbmQp
IikgdW5sZXNzIGlzS2luZChyZXN1bHQpCiAgICAgICAgIGFkdmFuY2UKICAgICAgICAgcmVzdWx0
CiAgICAgZW5kCkBAIC02MzQsMjggKzY2OSw3IEBAIHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5k
ZXggewogICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUK
LSAgICAgICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVz
ZSIKLSAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAgICAgICByb2xlID0g
IkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJaRCIKLSAgICAgICAgICAgICAgICAgICAgcm9s
ZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlVEIgotICAgICAgICAgICAgICAgICAg
ICByb2xlID0gIlVzZURlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJVWkQiCi0gICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJVQSIKLSAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAgICAgICAgIHdoZW4g
IlMiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2NyYXRjaCIKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgZW5kCi0K
LSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0sIEFyZzo6
I3tyb2xlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCisgICAgICAgICAgICAg
ICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7YXJnLnJvbGVDb2Rl
fSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCiAgICAgICAgICAgICB9CiAgICAg
ICAgIGVuZAogICAgIH0KQEAgLTgwNCw2ICs4MTgsOSBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRl
ZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJCaXRJbW02NCIKICAgICAgICAgICAgICAgICAg
ICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZEJpdEltbTY0Rm9ybShhcmdzWyN7aW5kZXh9
XS52YWx1ZSgpKSkiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJO
KGZhbHNlKTsiCisgICAgICAgICAgICAgICAgd2hlbiAiU2ltcGxlQWRkciIKKyAgICAgICAgICAg
ICAgICAgICAgb3V0cC5wdXRzICJpZiAoIWFyZ3NbI3tpbmRleH1dLnRtcCgpLmlzR1AoKSkiCisg
ICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAg
ICAgICAgICAgICAgd2hlbiAiQWRkciIKICAgICAgICAgICAgICAgICAgICAgaWYgYXJnLnJvbGUg
PT0gIlVBIgogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoYXJnc1sje2lu
ZGV4fV0uaXNTdGFjaygpICYmIGFyZ3NbI3tpbmRleH1dLnN0YWNrU2xvdCgpLT5pc1NwaWxsKCkp
IgpAQCAtODE5LDYgKzgzNiw3IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAg
ICAgICAgICAgIHdoZW4gIlJlbENvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiUmVzQ29uZCIK
ICAgICAgICAgICAgICAgICB3aGVuICJEb3VibGVDb25kIgorICAgICAgICAgICAgICAgIHdoZW4g
IlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBy
YWlzZSAiVW5leHBlY3RlZCBraW5kOiAje2tpbmQubmFtZX0iCiAgICAgICAgICAgICAgICAgZW5k
CkBAIC0xMDk1LDcgKzExMTMsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAg
ICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNUcnVzdGVkSW1tMzIo
KSIKICAgICAgICAgICAgICAgICB3aGVuICJCaWdJbW0iLCAiQml0SW1tNjQiCiAgICAgICAgICAg
ICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzVHJ1c3RlZEltbTY0KCkiCi0g
ICAgICAgICAgICAgICAgd2hlbiAiQWRkciIKKyAgICAgICAgICAgICAgICB3aGVuICJTaW1wbGVB
ZGRyIiwgIkFkZHIiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRl
eH1dLmFzQWRkcmVzcygpIgogICAgICAgICAgICAgICAgIHdoZW4gIkluZGV4IgogICAgICAgICAg
ICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc0Jhc2VJbmRleCgpIgpAQCAt
MTEwNSw2ICsxMTIzLDggQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAg
ICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzUmVzdWx0Q29uZGl0aW9uKCki
CiAgICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29uZCIKICAgICAgICAgICAgICAgICAgICAg
b3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNEb3VibGVDb25kaXRpb24oKSIKKyAgICAgICAg
ICAgICAgICB3aGVuICJTdGF0dXNDb25kIgorICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50
ICJhcmdzWyN7aW5kZXh9XS5hc1N0YXR1c0NvbmRpdGlvbigpIgogICAgICAgICAgICAgICAgIGVu
ZAogICAgICAgICAgICAgfQogCkBAIC0xMTQ4LDI3ICsxMTY4LDcgQEAgRmlsZS5vcGVuKCJKU0Fp
cl9vcGNvZGUuanMiLCAidyIpIHsKICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tv
dmVybG9hZC5zaWduYXR1cmUubGVuZ3RofToiIGlmIG5lZWRPdmVybG9hZFN3aXRjaAogICAgICAg
ICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAg
ICAgICAgICAgICB8IGFyZywgaW5kZXggfAotICAgICAgICAgICAgICAgICAgICByb2xlID0gbmls
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUKLSAgICAgICAgICAgICAgICAgICAg
d2hlbiAiVSIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAg
ICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYi
Ci0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlpEIgotICAgICAgICAgICAgICAgICAgICAgICAg
cm9sZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVRCIKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJV
WkQiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZVpEZWYiCi0gICAgICAgICAg
ICAgICAgICAgIHdoZW4gIlVBIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VB
ZGRyIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJTIgotICAgICAgICAgICAgICAgICAgICAg
ICAgcm9sZSA9ICJTY3JhdGNoIgotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygj
e2luZGV4fSwgZnVuYywgQXJnLiN7cm9sZX0sICN7YXJnLmJhbmt9UCwgI3thcmcud2lkdGh9KTsi
CisgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwg
ZnVuYywgQXJnLiN7YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aH0pOyIK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJicmVhazsiCiAg
ICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FS
TTY0L0E2NERPcGNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
aXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAJKHJldmlzaW9uIDIxMzM3OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgc3RydWN0IE9wY29kZUdyb3VwSW5pdGlhbGl6
ZXIgewogCiBzdGF0aWMgT3Bjb2RlR3JvdXBJbml0aWFsaXplciBvcGNvZGVHcm91cExpc3RbXSA9
IHsKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgwOCwgQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lz
dGVyUGFpciksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MDgsIEE2NERPcGNvZGVMb2FkU3Rv
cmVFeGNsdXNpdmUpLAogICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDA5LCBBNjRET3Bjb2RlTG9h
ZFN0b3JlUmVnaXN0ZXJQYWlyKSwKICAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgwYSwgQTY0RE9w
Y29kZUxvZ2ljYWxTaGlmdGVkUmVnaXN0ZXIpLAogICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDBi
LCBBNjRET3Bjb2RlQWRkU3VidHJhY3RFeHRlbmRlZFJlZ2lzdGVyKSwKQEAgLTkxMCw2ICs5MTEs
NTkgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZURtYjo6Zm9ybWF0KCkKICAgICByZXR1cm4gbV9m
b3JtYXRCdWZmZXI7CiB9CiAKK2NvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVMb2FkU3RvcmVF
eGNsdXNpdmU6OnNfb3BOYW1lc1s2NF0gPSB7CisgICAgInN0eHJiIiwgInN0bHhyYiIsIDAsIDAs
ICJsZHhyYiIsICJsZGF4cmIiLCAwLCAwLAorICAgIDAsICJzdGxyYiIsIDAsIDAsIDAsICJsZGFy
YiIsIDAsIDAsCisgICAgInN0eHJoIiwgInN0bHhyaCIsIDAsIDAsICJsZHhyaCIsICJsZGF4cmgi
LCAwLCAwLAorICAgIDAsICJzdGxyaCIsIDAsIDAsIDAsICJsZGFyaCIsIDAsIDAsCisgICAgInN0
eHIiLCAic3RseHIiLCAic3R4cCIsICJzdGx4cCIsICJsZHhyIiwgImxkYXhyIiwgImxkeHAiLCAi
bGRheHAiLAorICAgIDAsICJzdGxyIiwgMCwgMCwgMCwgImxkYXIiLCAwLCAwLAorICAgICJzdHhy
IiwgInN0bHhyIiwgInN0eHAiLCAic3RseHAiLCAibGR4ciIsICJsZGF4ciIsICJsZHhwIiwgImxk
YXhwIiwKKyAgICAwLCAic3RsciIsIDAsIDAsIDAsICJsZGFyIiwgMCwgMAorfTsKKworY29uc3Qg
Y2hhciogQTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6Zm9ybWF0KCkKK3sKKyAgICBpZiAo
bzIoKSAmJiAhbzEoKSAmJiAhbzAoKSkKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1h
dCgpOworCisgICAgaWYgKG8yKCkgJiYgbzEoKSkKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6
OmZvcm1hdCgpOworCisgICAgaWYgKChzaXplKCkgPCAyKSAmJiBvMSgpKQorICAgICAgICByZXR1
cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAgICBpZiAobG9hZEJpdCgpICYmIChycygpICE9
IDB4MWYpKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAgICBpZiAo
IWlzUGFpck9wKCkgJiYgKHJ0MigpICE9IDB4MWYpKQorICAgICAgICByZXR1cm4gQTY0RE9wY29k
ZTo6Zm9ybWF0KCk7CisKKyAgICBjb25zdCBjaGFyKiB0aGlzT3BOYW1lID0gb3BOYW1lKCk7CisK
KyAgICBpZiAoIXRoaXNPcE5hbWUpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQo
KTsKKworICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZSh0aGlzT3BOYW1lKTsKKworICAgIGlmICgh
bG9hZEJpdCgpKSB7CisgICAgICAgIGFwcGVuZFpST3JSZWdpc3Rlck5hbWUocnMoKSwgc2l6ZSgp
ID09IDB4Myk7CisgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgIH0KKworICAgIGFwcGVu
ZFpST3JSZWdpc3Rlck5hbWUocnQoKSwgc2l6ZSgpID09IDB4Myk7CisgICAgYXBwZW5kU2VwYXJh
dG9yKCk7CisgICAgaWYgKGlzUGFpck9wKCkpIHsKKyAgICAgICAgYXBwZW5kWlJPclJlZ2lzdGVy
TmFtZShydDIoKSwgc2l6ZSgpID09IDB4Myk7CisgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOwor
ICAgIH0KKyAgICBhcHBlbmRDaGFyYWN0ZXIoJ1snKTsKKyAgICBhcHBlbmRTUE9yUmVnaXN0ZXJO
YW1lKHJuKCkpOworICAgIGFwcGVuZENoYXJhY3RlcignXScpOworCisgICAgcmV0dXJuIG1fZm9y
bWF0QnVmZmVyOworfQorCiAvLyBBIHplcm8gaW4gYW4gZW50cnkgb2YgdGhlIHRhYmxlIG1lYW5z
IHRoZSBpbnN0cnVjdGlvbiBpcyBVbmFsbG9jYXRlZAogY29uc3QgY2hhciogY29uc3QgQTY0RE9w
Y29kZUxvYWRTdG9yZTo6c19vcE5hbWVzWzMyXSA9IHsKICAgICAic3RyYiIsICJsZHJiIiwgImxk
cnNiIiwgImxkcnNiIiwgInN0ciIsICJsZHIiLCAic3RyIiwgImxkciIsCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUu
aAkocmV2aXNpb24gMjEzMzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9BUk02NC9BNjRET3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4NSw2ICs1ODUsMzMgQEAg
cHJvdGVjdGVkOgogICAgIGJvb2wgaXM2NEJpdFJUKCkgeyByZXR1cm4gKChvcE51bWJlcigpICYg
MHgxNykgPT0gMHgwMikgfHwgKChvcE51bWJlcigpICYgMHgxZSkgPT0gMHgxOCk7IH0KIH07CiAK
K2NsYXNzIEE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmUgOiBwdWJsaWMgQTY0RE9wY29kZUxv
YWRTdG9yZSB7Citwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX29wTmFt
ZXNbNjRdOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IG1hc2sgPSAweDNm
MDAwMDAwOworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBwYXR0ZXJuID0gMHgwODAwMDAwMDsK
KworICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmUs
IHRoaXNPYmopOworCisgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisKKyAgICBjb25zdCBjaGFy
KiBvcE5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNfb3BOYW1lc1tvcE51bWJlcigpXTsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCBycygpIHsgcmV0dXJuIHJtKCk7IH0KKyAgICB1bnNpZ25l
ZCBydDIoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTApICYgMHgxZjsgfQorICAgIHVuc2lnbmVk
IG8wKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDE1KSAmIDB4MTsgfQorICAgIHVuc2lnbmVkIG8x
KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDIxKSAmIDB4MTsgfQorICAgIHVuc2lnbmVkIG8yKCkg
eyByZXR1cm4gKG1fb3Bjb2RlID4+IDIzKSAmIDB4MTsgfQorICAgIHVuc2lnbmVkIGxvYWRCaXQo
KSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjIpICYgMHgxOyB9CisgICAgdW5zaWduZWQgb3BOdW1i
ZXIoKSB7IHJldHVybiAoc2l6ZSgpIDw8IDQgKSB8IChvMigpIDw8IDMpIHwgKGxvYWRCaXQoKSA8
PCAyKSB8IChvMSgpIDw8IDEpIHwgbzAoKTsgfQorICAgIGJvb2wgaXNQYWlyT3AoKSB7IHJldHVy
biAoc2l6ZSgpICYgMHgxMCkgJiYgbzEoKTsgfQorfTsKKwogY2xhc3MgQTY0RE9wY29kZUxvYWRT
dG9yZUltbWVkaWF0ZSA6IHB1YmxpYyBBNjRET3Bjb2RlTG9hZFN0b3JlIHsKIHByaXZhdGU6CiAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfdW5wcml2aWxlZ2VkT3BOYW1lc1szMl07Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyMTMz
NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxNyw5ICs0MTcsNiBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmlu
ZzsKICAgICB2KGJvb2wsIGR1bXBNb2R1bGVMb2FkaW5nU3RhdGUsIGZhbHNlLCBOb3JtYWwsIG51
bGxwdHIpIFwKICAgICB2KGJvb2wsIGV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyLCBmYWxzZSwg
Tm9ybWFsLCAiZXhwb3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUgbG9hZGVyIG9iamVjdCB0byB0aGUg
Z2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dpbmciKSBcCiAgICAgXAotICAgIHYoYm9vbCwgZHVtcEFp
ckFzSlNCZWZvcmVBbGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAg
dihib29sLCBkdW1wQWlyQWZ0ZXJBbGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRy
KSBcCi0gICAgXAogICAgIHYoYm9vbCwgdXNlU3VwZXJTYW1wbGVyLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgXAogICAgIHYoYm9vbCwgcmVwb3J0TExJbnRTdGF0cywgZmFsc2UsIENv
bmZpZ3VyYWJsZSwgIlJlcG9ydHMgTExJbnQgc3RhdGlzdGljcyIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303396</attachid>
            <date>2017-03-04 10:13:15 -0800</date>
            <delta_ts>2017-03-04 10:20:28 -0800</delta_ts>
            <desc>voila!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>383276</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyMyBA
QAorMjAxNy0wMy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzIHNob3VsZCBoYXZlIGNvbXByZWhlbnNpdmUgc3VwcG9ydCBmb3IgYXRvbWljIG9wZXJhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBhZGRzIHRoZSBmb2xsb3dpbmcgY2FwYWJpbGl0aWVzIHRvIEIzOgorICAgICAgICAK
KyAgICAgICAgLSBBdG9taWMgd2VhayBjb21wYXJlLWFuZC1zd2FwCisgICAgICAgIC0gQXRvbWlj
IHN0cm9uZyBjb21wYXJlLWFuZC1zd2FwCisgICAgICAgIC0gQXRvbWljIGFkZHMvc3ViL29yL2Fu
ZC94b3IveGhnCisgICAgICAgIC0gQWNxdWlyZS9yZWxlYXNlIGZlbmNpbmcgb24gbG9hZHMvc3Rv
cmVzCisgICAgICAgIC0gRmVuY2VsZXNzIGxvYWQtbG9hZCBkZXBlbmRlbmNpZXMKKyAgICAgICAg
CisgICAgICAgIFRoaXMgYWRkcyBsb3dlcmluZyB0byB0aGUgZm9sbG93aW5nIGluc3RydWN0aW9u
cyBvbiB4ODY6CisgICAgICAgIAorICAgICAgICAtIGxvY2sgY21weGNoZworICAgICAgICAtIGxv
Y2sgeGFkZAorICAgICAgICAtIGxvY2sgYWRkL3N1Yi9vci9hbmQveG9yL3hjaGcKKyAgICAgICAg
CisgICAgICAgIFRoaXMgYWRkcyBsb3dlcmluZyB0byB0aGUgZm9sbG93aW5nIGluc3RydWN0aW9u
cyBvbiBBUk02NDoKKyAgICAgICAgCisgICAgICAgIC0gbGRhciBhbmQgZnJpZW5kcworICAgICAg
ICAtIHN0bHIgYW5kIGZyaWVuZHMKKyAgICAgICAgLSBsZHhyIGFuZCBmcmllbmRzICh1bmZlbmNl
ZCBMTCkKKyAgICAgICAgLSBzdHhyIGFuZCBmcmllbmRzICh1bmZlbmRlZCBTQykKKyAgICAgICAg
LSBsZGF4ciBhbmQgZnJpZW5kcyAoZmVuY2VkIExMKQorICAgICAgICAtIHN0bHhyIGFuZCBmcmll
bmRzIChmZW5jZWQgU0MpCisgICAgICAgIC0gZW9yIGFzIGEgZmVuY2VsZXNzIGxvYWQtbG9hZCBk
ZXBlbmRlbmN5CisgICAgICAgIAorICAgICAgICBUaGlzIGRvZXMgaW5zdHJ1Y3Rpb24gc2VsZWN0
aW9uIHBhdHRlcm4gbWF0Y2hpbmcgdG8gZW5zdXJlIHRoYXQgd2Vhay9zdHJvbmcgQ0FTIGFuZCBh
bGwgb2YgdGhlCisgICAgICAgIHZhcmlhbnRzIG9mIGZlbmNlcyBhbmQgYXRvbWljIG1hdGggb3Bz
IGdldCBsb3dlcmVkIHRvIHRoZSBiZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIHNlcXVlbmNlLgor
ICAgICAgICBGb3IgZXhhbXBsZSwgd2Ugc3VwcG9ydCB0aGUgRXF1YWwoQXRvbWljU3Ryb25nQ0FT
KGV4cGVjdGVkLCAuLi4pLCBleHBlY3RlZCkgcGF0dGVybiBhbmQgYSBidW5jaAorICAgICAgICBv
ZiBpdHMgZnJpZW5kcy4gWW91IGNhbiBzYXkgQnJhbmNoKEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhl
eHBlY3RlZCwgLi4uKSwgZXhwZWN0ZWQpKSBhbmQgaXQgd2lsbAorICAgICAgICBnZW5lcmF0ZSB0
aGUgYmVzdCBwb3NzaWJsZSBicmFuY2ggc2VxdWVuY2Ugb24geDg2IGFuZCBBUk02NC4KKyAgICAg
ICAgCisgICAgICAgIEIzIG5vdyBrbm93cyBob3cgdG8gbW9kZWwgYWxsIG9mIHRoZSBraW5kcyBv
ZiBmZW5jaW5nLiBJdCBrbm93cyB0aGF0IGFjcSBsb2FkcyBhcmUgb3JkZXJlZCB3aXRoCisgICAg
ICAgIHJlc3BlY3QgdG8gZWFjaCBvdGhlciBhbmQgd2l0aCByZXNwZWN0IHRvIHJlbCBzdG9yZXMs
IGNyZWF0aW5nIHNlcXVlbnRpYWwgY29uc2lzdGVuY3kgdGhhdAorICAgICAgICB0cmFuc2NlbmRz
IGp1c3QgdGhlIGFjcS9yZWwgZmVuY2VzIHRoZW1zZWx2ZXMgKHNlZSBFZmZlY3RzOjpmZW5jZSku
IEl0IGtub3dzIHRoYXQgdGhlIHBoYW50b20KKyAgICAgICAgZmVuY2UgZWZmZWN0cyBtYXkgb25s
eSB0YXJnZXQgc29tZSBhYnN0cmFjdCBoZWFwcyBidXQgbm90IG90aGVycywgc28gdGhhdCBsb2Fk
IGVsaW1pbmF0aW9uIGFuZAorICAgICAgICBzdG9yZSBzaW5raW5nIGNhbiBzdGlsbCBvcGVyYXRl
IGFjcm9zcyBmZW5jZXMgaWYgeW91IGp1c3QgdGVsbCBCMyB0aGF0IHRoZSBmZW5jZSBkb2VzIG5v
dCBhbGlhcworICAgICAgICB0aG9zZSBhY2Nlc3Nlcy4gVGhpcyBtYWtlcyBpdCBzdXBlciBlYXN5
IHRvIHRlYWNoIEIzIHRoYXQgc29tZSBvZiB5b3VyIGhlYXAgaXMgdGhyZWFkLWxvY2FsLgorICAg
ICAgICBFdmVuIGJldHRlciwgaXQgbGV0cyB5b3UgZXhwcmVzcyBmaW5lLWdyYWluZWQgZGVwZW5k
ZW5jaWVzIHdoZXJlIHRoZSBhdG9taWNzIHRoYXQgYWZmZWN0IG9uZQorICAgICAgICBwcm9wZXJ0
eSBpbiBzaGFyZWQgbWVtb3J5IGRvIG5vdCBjbG9iYmVyIG5vbi1hdG9taWNzIHRoYXQgZmZlY3Qg
c29tZSBvdGhlciBwcm9wZXJ0eSBpbiBzaGFyZWQKKyAgICAgICAgbWVtb3J5LgorICAgICAgICAK
KyAgICAgICAgT25lIG9mIG15IGZhdm9yaXRlIGZlYXR1cmVzIGlzIERlcGVuZCwgd2hpY2ggYWxs
b3dzIHlvdSB0byBleHByZXNzIGxvYWQtbG9hZCBkZXBlbmRlbmNpZXMuIE9uCisgICAgICAgIHg4
NiBpdCBsb3dlcnMgdG8gbm90aGluZywgd2hpbGUgb24gQVJNNjQgaXQgbG93ZXJzIHRvIGVvci4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgYWxzbyBleHBvc2VzIGEgY29tbW9uIGF0b21pY1dlYWtD
QVMgQVBJIHRvIHRoZSB4ODZfNjQvQVJNNjQgTWFjcm9Bc3NlbWJsZXJzLiBTYW1lIGZvcgorICAg
ICAgICBhY3EvcmVsLiBKU0MncyA2NC1iaXQgSklUcyBhcmUgbm93IGEgaGFwcHkgY29uY3VycmVu
Y3kgcGxheWdyb3VuZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZG9lc24ndCB5ZXQgZXhwb3Nl
IHRoZSBmdW5jdGlvbmFsaXR5IHRvIEpTIG9yIHdhc20uIFNBQiBzdGlsbCB1c2VzIHRoZSBub24t
aW50cmluc2ljCisgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgQXRvbWljcyBvYmplY3Qs
IGZvciBub3cuCisgICAgICAgIAorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNz
ZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjps
ZGFyKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmxkeHIpOgorICAgICAgICAoSlND
OjpBUk02NEFzc2VtYmxlcjo6bGRheHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6
c3R4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdGxyKToKKyAgICAgICAgKEpT
Qzo6QVJNNjRBc3NlbWJsZXI6OnN0bHhyKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6
OmV4Y2VwbkdlbmVyYXRpb25JbW1NYXNrKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6
OmV4b3RpY0xvYWQpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6c3RvcmVSZWxlYXNl
KToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmV4b3RpY1N0b3JlKToKKyAgICAgICAg
KiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6aW52
ZXJ0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpsb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OnN0b3JlUmVsOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omxv
YWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0Ojpsb2FkQWNxMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9y
ZVJlbDE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZEFjcTMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZEFjcTY0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVSZWwzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlUmVsNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpsb2FkTGluazgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
Ojpsb2FkTGlua0FjcTgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9y
ZUNvbmQ4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVDb25kUmVs
OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rMTYpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkTGlua0FjcTE2KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVDb25kMTYpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmRSZWwxNik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0Ojpsb2FkTGlua0FjcTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6c3RvcmVDb25kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9y
ZUNvbmRSZWwzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5r
NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkTGlua0FjcTY0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVDb25kNjQpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmRSZWw2NCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmF0b21pY1N0cm9uZ0NBUzgpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphdG9taWNTdHJvbmdDQVMxNik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmF0b21pY1N0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6YXRvbWljU3Ryb25nQ0FTNjQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTY0OjphdG9taWNSZWxheGVkU3Ryb25nQ0FTOCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmF0b21pY1JlbGF4ZWRTdHJvbmdDQVMxNik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmF0b21pY1JlbGF4ZWRTdHJvbmdDQVMzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmF0b21pY1JlbGF4ZWRTdHJvbmdD
QVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJyYW5jaEF0b21pY1dl
YWtDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoQXRvbWlj
V2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoQXRv
bWljV2Vha0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNo
QXRvbWljV2Vha0NBUzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJh
bmNoQXRvbWljUmVsYXhlZFdlYWtDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMxNik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzY0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6ZGVwZW5kMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpkZXBlbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6bG9hZExpbmtBY3EpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpz
dG9yZUNvbmQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmRS
ZWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6YXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUyk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJyYW5jaEF0b21pY1dlYWtDQVMpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmV4dHJhY3RTaW1wbGVBZGRyZXNzKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c2lnbkV4dGVuZDw4Pik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNpZ25FeHRlbmQ8MTY+KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoPDY0Pik6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjphZGQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjphbmQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphbmQxNik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphbmQ4KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om5lZzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246Om5lZzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246Om5lZzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjE2KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yOCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdWIxNik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpzdWI4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnhvcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnhvcjE2KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnhvcjgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bm90MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6bm90MTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bm90OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpzdG9yZTE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21p
Y1N0cm9uZ0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRv
bWljU3Ryb25nQ0FTMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YXRvbWljU3Ryb25nQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6YnJhbmNoQXRvbWljU3Ryb25nQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hBdG9taWNTdHJvbmdDQVMxNik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBdG9taWNTdHJvbmdDQVMzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNXZWFrQ0FTOCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNXZWFrQ0FTMTYpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljV2Vha0NBUzMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1dlYWtDQVM4KToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1dlYWtDQVMx
Nik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBdG9taWNX
ZWFrQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWlj
UmVsYXhlZFdlYWtDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmF0b21pY1JlbGF4ZWRXZWFrQ0FTMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6YXRvbWljUmVsYXhlZFdlYWtDQVMzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMx
Nik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBdG9taWNS
ZWxheGVkV2Vha0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmF0b21pY0FkZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRv
bWljQWRkMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWlj
QWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Vi
OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdWIxNik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdWIzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBbmQ4KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY0FuZDE2KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY0FuZDMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY09yOCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNPcjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmF0b21pY09yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6YXRvbWljWG9yOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjphdG9taWNYb3IxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjphdG9taWNYb3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjphdG9taWNOZWc4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmF0b21pY05lZzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0
b21pY05lZzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21p
Y05vdDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTm90
MTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTm90MzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljWGNoZ0FkZDgp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljWGNoZ0FkZDE2
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGdBZGQz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnOCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnMTYpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljWGNoZzMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3E4KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkQWNxMTYpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZEFjcTE2U2lnbmVkRXh0ZW5k
VG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkQWNxMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3RvcmVSZWw4KToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlUmVsMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3RvcmVSZWwzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZUZlbmNlKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRGZW5jZSk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpwYXRjaGFibGVKdW1wU2l6ZSk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3Vu
ZGluZyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdXBwb3J0c0FW
WCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp1cGRhdGVFYXgxRWN4
RmxhZ3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eDg2Q29uZGl0
aW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N0cm9u
Z0NBUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBdG9t
aWNTdHJvbmdDQVMpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YWRkNjQpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YW5kNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4Nl82NDo6bmVnNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82
NDo6b3I2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp4b3I2NCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpub3Q2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2XzY0OjpzdG9yZTY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
OmF0b21pY1N0cm9uZ0NBUzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
OmJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZfNjQ6OmF0b21pY1dlYWtDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpicmFuY2hBdG9taWNXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4Nl82NDo6YXRvbWljUmVsYXhlZFdlYWtDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2XzY0OjpicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmF0b21pY0FkZDY0KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZfNjQ6OmF0b21pY1N1YjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OmF0b21pY0FuZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZfNjQ6OmF0b21pY09yNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YXRvbWljWG9yNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWlj
TmVnNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljTm90NjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljWGNoZ0FkZDY0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmF0b21pY1hjaGc2NCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpsb2FkQWNxNjQpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6c3RvcmVSZWw2NCk6CisgICAgICAgICogYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmFkZGxfbXIpOgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmFkZHFfbXIpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6OmFkZHFfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmFkZHFfaW0p
OgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmFuZGxfbXIpOgorICAgICAgICAoSlNDOjpY
ODZBc3NlbWJsZXI6OmFuZGxfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmFuZHdf
cm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmFuZGJfcm0pOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6OmFuZGxfaW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmFu
ZHdfaW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmFuZGJfaW0pOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OmFuZHFfbXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6
OmFuZHFfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmFuZHFfaW0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6OmluY3FfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bmVncV9tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdsX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5lZ3dfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bmVnYl9tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpub3RsX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdHdfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bm90Yl9tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpub3RxX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9ybF9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcndfcm0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JsX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcndfaW0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JxX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcnFfcm0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9ycV9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6c3VibF9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c3VibF9ybSk6CisgICAg
ICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c3Vid19ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6c3ViYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c3VibF9pbSk6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c3Vid19pbSk6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6c3ViYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c3VicV9tcik6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c3VicV9ybSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6c3VicV9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eG9ybF9t
cik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eG9ybF9ybSk6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6eG9ybF9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eG9y
d19ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eG9yd19pbSk6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6eG9yYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
eG9yYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eG9ycV9pbSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6eG9ycV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6eG9ycV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGNoZ2Jfcm0pOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnhjaGd3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjp4Y2hnbF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGNoZ3Ffcm0p
OgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdndfaW0pOgorICAgICAgICAoSlNDOjpY
ODZBc3NlbWJsZXI6Om1vdnFfaTMybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6Y21w
eGNoZ2Jfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmNtcHhjaGd3X3JtKToKKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hnbF9ybSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6Y21weGNoZ3Ffcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Onhh
ZGRiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4YWRkd19ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZGxfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6OnhhZGRxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlv
bkZvcm1hdHRlcjo6U2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXI6Om1lbW9yeU1vZFJNKToK
KyAgICAgICAgKiBiMy9CM0F0b21pY1ZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkIz
OjpBdG9taWNWYWx1ZTo6fkF0b21pY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6OkF0b21pY1Zh
bHVlOjpkdW1wTWV0YSk6CisgICAgICAgIChKU0M6OkIzOjpBdG9taWNWYWx1ZTo6Y2xvbmVJbXBs
KToKKyAgICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZSk6CisgICAgICAg
ICogYjMvQjNBdG9taWNWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiMy9CM0Jhc2ljQmxvY2su
aDoKKyAgICAgICAgKiBiMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6OkJsb2NrSW5zZXJ0aW9uU2V0OjpCbG9ja0luc2VydGlvblNldCk6CisgICAgICAgIChKU0M6
OkIzOjpCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRCZWZvcmUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEFmdGVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkJsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBiMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgICogYjMvQjNFZmZlY3RzLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkVmZmVjdHM6OmludGVyZmVyZXMpOgorICAgICAgICAoSlND
OjpCMzo6RWZmZWN0czo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkIzOjpFZmZlY3RzOjpk
dW1wKToKKyAgICAgICAgKiBiMy9CM0VmZmVjdHMuaDoKKyAgICAgICAgKEpTQzo6QjM6OkVmZmVj
dHM6OmZvckNhbGwpOgorICAgICAgICAoSlNDOjpCMzo6RWZmZWN0czo6bXVzdEV4ZWN1dGUpOgor
ICAgICAgICAqIGIzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwOgorICAgICAg
ICAqIGIzL0IzR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Z2VuZXJhdGVUb0Fpcik6
CisgICAgICAgICogYjMvQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkIzOjpHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ6OkdlbmVyaWNCbG9ja0luc2Vy
dGlvblNldCk6CisgICAgICAgIChKU0M6OkIzOjpHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ6Omlu
c2VydCk6CisgICAgICAgIChKU0M6OkIzOjpHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ6Omluc2Vy
dEJlZm9yZSk6CisgICAgICAgIChKU0M6OkIzOjpHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ6Omlu
c2VydEFmdGVyKToKKyAgICAgICAgKEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6
ZXhlY3V0ZSk6CisgICAgICAgICogYjMvQjNIZWFwUmFuZ2UuaDoKKyAgICAgICAgKEpTQzo6QjM6
OkhlYXBSYW5nZTo6b3BlcmF0b3J8KToKKyAgICAgICAgKiBiMy9CM0luc2VydGlvblNldC5jcHA6
CisgICAgICAgIChKU0M6OkIzOjpJbnNlcnRpb25TZXQ6Omluc2VydENsb25lKToKKyAgICAgICAg
KiBiMy9CM0luc2VydGlvblNldC5oOgorICAgICAgICAqIGIzL0IzTGVnYWxpemVNZW1vcnlPZmZz
ZXRzLmNwcDoKKyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9zLmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6Omxvd2VyTWFjcm9zKToKKyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmNwcDoKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjpMb3dlclRvQWlyKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6cnVuKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
ZWZmZWN0aXZlQWRkcik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFkZHIp
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb2FkUHJvbWlzZUFueU9wY29k
ZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFNoaWZ0KToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5QXBwZW5kU3RvcmVCaW5PcCk6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlT3Bjb2RlKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlU3RvcmUpOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMpOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpuZXdCbG9jayk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OnNwbGl0QmxvY2spOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpmaWxsU3RhY2ttYXApOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjphcHBlbmRYODZEaXYpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjph
cHBlbmRYODZVRGl2KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG9hZExp
bmtPcGNvZGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzdG9yZUNvbmRP
cGNvZGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRDQVMpOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRWb2lkQXRvbWljKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kR2VuZXJhbEF0b21pYyk6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXJYODZEaXYpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb3dlclg4NlVEaXYpOiBEZWxldGVkLgorICAgICAgICAq
IGIzL0IzTG93ZXJUb0Fpci5oOgorICAgICAgICAqIGIzL0IzTWVtb3J5VmFsdWUuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXQpOgorICAgICAgICAoSlND
OjpCMzo6TWVtb3J5VmFsdWU6OmFjY2Vzc1R5cGUpOgorICAgICAgICAoSlNDOjpCMzo6TWVtb3J5
VmFsdWU6OmFjY2Vzc0JhbmspOgorICAgICAgICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6OmFjY2Vz
c0J5dGVTaXplKToKKyAgICAgICAgKEpTQzo6QjM6Ok1lbW9yeVZhbHVlOjpkdW1wTWV0YSk6Cisg
ICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUpOgorICAgICAgICAoSlND
OjpCMzo6TWVtb3J5VmFsdWU6OmFjY2Vzc1dpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9C
M01lbW9yeVZhbHVlLmg6CisgICAgICAgICogYjMvQjNNZW1vcnlWYWx1ZUlubGluZXMuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldCk6CisgICAg
ICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6cmVxdWlyZXNTaW1wbGVBZGRyKToKKyAgICAgICAg
KEpTQzo6QjM6Ok1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCk6CisgICAgICAgICogYjMvQjNNb3Zl
Q29uc3RhbnRzLmNwcDoKKyAgICAgICAgKiBiMy9CM05hdGl2ZVRyYWl0cy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBiMy9CM09wY29kZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpzdG9yZU9wY29kZSk6
CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmg6
CisgICAgICAgIChKU0M6OkIzOjppc0xvYWQpOgorICAgICAgICAoSlNDOjpCMzo6aXNTdG9yZSk6
CisgICAgICAgIChKU0M6OkIzOjppc0xvYWRTdG9yZSk6CisgICAgICAgIChKU0M6OkIzOjppc0F0
b21pYyk6CisgICAgICAgIChKU0M6OkIzOjppc0F0b21pY0NBUyk6CisgICAgICAgIChKU0M6OkIz
Ojppc0F0b21pY1hjaGcpOgorICAgICAgICAoSlNDOjpCMzo6aXNNZW1vcnlBY2Nlc3MpOgorICAg
ICAgICAoSlNDOjpCMzo6c2lnbkV4dGVuZE9wY29kZSk6CisgICAgICAgICogYjMvQjNQcm9jZWR1
cmUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpkdW1wKToKKyAgICAgICAgKiBi
My9CM1Byb2NlZHVyZS5oOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpoYXNRdWlya3Mp
OgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpzZXRIYXNRdWlya3MpOgorICAgICAgICAq
IGIzL0IzUHVyZUNTRS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpwdXJlQ1NFKToKKyAgICAgICAg
KiBiMy9CM1B1cmVDU0UuaDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAg
ICAgICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjpyZXR1cm5zQm9vbCk6CisgICAgICAgIChKU0M6OkIzOjpW
YWx1ZTo6ZWZmZWN0cyk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6a2V5KToKKyAgICAgICAg
KEpTQzo6QjM6OlZhbHVlOjpwZXJmb3JtU3Vic3RpdHV0aW9uKToKKyAgICAgICAgKEpTQzo6QjM6
OlZhbHVlOjp0eXBlRm9yKToKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6CisgICAgICAgICogYjMv
QjNXaWR0aC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpiZXN0VHlwZSk6CisgICAgICAgICogYjMv
QjNXaWR0aC5oOgorICAgICAgICAoSlNDOjpCMzo6Y2Fub25pY2FsV2lkdGgpOgorICAgICAgICAo
SlNDOjpCMzo6aXNDYW5vbmljYWxXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjptYXNrKToKKyAg
ICAgICAgKiBiMy9haXIvQWlyQXJnLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpq
c0hhc2gpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmR1bXApOgorICAgICAgICAoV1RG
OjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6OkFyZzo6aXNBbnlVc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6
OmlzQ29sZFVzZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6Y29vbGVkKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc0Vhcmx5VXNlKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6QXJnOjppc0xhdGVVc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzQW55RGVm
KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc0Vhcmx5RGVmKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc0xhdGVEZWYpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6
OmlzWkRlZik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6c2ltcGxlQWRkcik6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6c3RhdHVzQ29uZCk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6OkFyZzo6aXNTaW1wbGVBZGRyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc01l
bW9yeSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNTdGF0dXNDb25kKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc0NvbmRpdGlvbik6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6OkFyZzo6cHRyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpiYXNlKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc0dQKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJn
Ojppc0ZQKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkRm9ybSk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6Zm9yRWFjaFRtcEZhc3QpOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpBcmc6OmZvckVhY2hUbXApOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmFz
QWRkcmVzcyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6YXNTdGF0dXNDb25kaXRpb24p
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzSW52ZXJ0aWJsZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6OkFyZzo6aW52ZXJ0ZWQpOgorICAgICAgICAqIGIzL2Fpci9BaXJCYXNpY0Js
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QmFzaWNCbG9jazo6c2V0U3VjY2Vzc29y
cyk6CisgICAgICAgICogYjMvYWlyL0FpckJhc2ljQmxvY2suaDoKKyAgICAgICAgKiBiMy9haXIv
QWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6QmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCk6CisgICAgICAgICog
YjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0Lmg6IEFkZGVkLgorICAgICAgICAqIGIzL2Fpci9B
aXJEdW1wQXNKUy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYjMvYWlyL0FpckR1bXBBc0pTLmg6
IFJlbW92ZWQuCisgICAgICAgICogYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6ZWxpbWluYXRlRGVhZENvZGUpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJHZW5lcmF0ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnByZXBhcmVGb3JHZW5l
cmF0aW9uKToKKyAgICAgICAgKiBiMy9haXIvQWlySW5zdElubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVNWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6OmlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQpOgorICAgICAgICAoSlNDOjpCMzo6QWly
Ojppc0F0b21pY1N0cm9uZ0NBUzhWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmlzQXRv
bWljU3Ryb25nQ0FTMTZWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmlzQXRvbWljU3Ry
b25nQ0FTMzJWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmlzQXRvbWljU3Ryb25nQ0FT
NjRWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmlzQnJhbmNoQXRvbWljU3Ryb25nQ0FT
OFZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNTdHJvbmdDQVMx
NlZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNTdHJvbmdDQVMz
MlZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNTdHJvbmdDQVM2
NFZhbGlkKToKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAgICog
YjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
Om9wdGltaXplQmxvY2tPcmRlcik6CisgICAgICAgICogYjMvYWlyL0FpclBhZEludGVyZmVyZW5j
ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnBhZEludGVyZmVyZW5jZSk6CisgICAgICAg
ICogYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
OnNwaWxsRXZlcnl0aGluZyk6CisgICAgICAgICogYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmI6
CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkQWNx
NDIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkTG9hZEFjcTMyKToKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KToKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RTdG9yZVJlbEFkZEZlbmNlTG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0
b3JlUmVsQWRkTG9hZEFjcTE2KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZVJlbEFkZExv
YWRBY3E2NCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0VHJhcHBpbmdTdG9yZUVsaW1pbmF0aW9u
KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RYODZMZWFBZGRBZGQpOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTEpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEF0
b21pY1dlYWtDQVMpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEF0b21pY1N0cm9uZ0NBUyk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljWGNoZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
RGVwZW5kMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdERlcGVuZDY0KToKKyAgICAgICAgKEpT
Qzo6QjM6OnJ1bik6CisgICAgICAgICogZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3Bw
OgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9yZUV4
Y2x1c2l2ZTo6Zm9ybWF0KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29k
ZS5oOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9y
ZUV4Y2x1c2l2ZTo6b3BOYW1lKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2
NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6OnJzKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNh
c3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6OnJ0Mik6CisgICAgICAgIChK
U0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlOjpvMCk6
CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9hZFN0b3JlRXhj
bHVzaXZlOjpvMSk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2Rl
TG9hZFN0b3JlRXhjbHVzaXZlOjpvMik6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVy
OjpBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlOjpsb2FkQml0KToKKyAgICAgICAgKEpTQzo6
QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6Om9wTnVtYmVy
KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVF
eGNsdXNpdmU6OmlzUGFpck9wKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAx
Ny0wMy0wNCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFtBUk1dIFVucmV2aWV3ZWQgYnVpbGRmaXggYWZ0ZXIgcjIxMzM3Ni4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIEFQSS9PcGFxdWVKU1N0cmluZy5jcHAK
IAogICAgIGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwCisgICAgYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwCiAgICAgYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCiAgICAgYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAogICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TS5jcHAKQEAgLTc2LDYgKzc3LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBi
My9haXIvQWlyQWxsb2NhdGVTdGFjay5jcHAKICAgICBiMy9haXIvQWlyQXJnLmNwcAogICAgIGIz
L2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAorICAgIGIzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5j
cHAKICAgICBiMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcAogICAgIGIzL2Fpci9BaXJDQ2FsbGlu
Z0NvbnZlbnRpb24uY3BwCiAgICAgYjMvYWlyL0FpckNvZGUuY3BwCkBAIC0xMTAsNiArMTEyLDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiMy9haXIvQWlyVmFsaWRhdGUuY3Bw
CiAKICAgICBiMy9CM0FyZ3VtZW50UmVnVmFsdWUuY3BwCisgICAgYjMvQjNBdG9taWNWYWx1ZS5j
cHAKICAgICBiMy9CM0JhbmsuY3BwCiAgICAgYjMvQjNCYXNpY0Jsb2NrLmNwcAogICAgIGIzL0Iz
QmxvY2tJbnNlcnRpb25TZXQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3NCw2ICsyNzQs
MTQgQEAKIAkJMEYyQzYzQjAxRTYwQUU0MzAwQzEzODM5IC8qIEIzQmFuay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQUMxRTYwQUUzQzAwQzEz
ODM5IC8qIEIzQmFuay5oICovOyB9OwogCQkwRjJDNjNCMTFFNjBBRTQ1MDBDMTM4MzkgLyogQjNX
aWR0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi87IH07CiAJCTBGMkM2M0Iy
MUU2MEFFNDcwMEMxMzgzOSAvKiBCM1dpZHRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5o
ICovOyB9OworCQkwRjJDNjNCNjFFNjM0M0VBMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCMzFF
NjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi87IH07CisJCTBGMkM2M0I3MUU2
MzQzRUQwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCNDFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9t
aWNWYWx1ZS5oICovOyB9OworCQkwRjJDNjNCODFFNjM0M0Y3MDBDMTM4MzkgLyogQjNHZW5lcmlj
QmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2Vy
dGlvblNldC5oICovOyB9OworCQkwRjJDNjNCQjFFNjM0NDBBMDBDMTM4MzkgLyogQWlyQmxvY2tJ
bnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyQzYzQjkxRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNw
cCAqLzsgfTsKKwkJMEYyQzYzQkMxRTYzNDQwQzAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9u
U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJD
NjNCQTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLzsgfTsKKwkJ
MEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQkYxRTY2
MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwICovOyB9OworCQkwRjJD
NjNDMjFFNjY0QTVDMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0MxMUU2NjRBNUEwMEMxMzgzOSAv
KiBCM05hdGl2ZVRyYWl0cy5oICovOyB9OworCQkwRjJDNjNDNDFFNjlFRjk0MDBDMTM4MzkgLyog
QjNNZW1vcnlWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMkM2M0MzMUU2OUVGOTIwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5s
aW5lcy5oICovOyB9OwogCQkwRjJENERERDE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29w
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJE
NEREQjE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5jcHAgKi87IH07CiAJCTBGMkQ0
RERFMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENEREQzE5ODMyRDM0MDA3RDRCMTkgLyog
RGVidWdnZXJTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTUxOTgz
MkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi87IH07CkBAIC0yMjQ5LDggKzIyNTcs
NiBAQAogCQlEQzIxNDMwODFDQTMyRTU4MDAwQTg4NjkgLyogSUNTdGF0cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzIxNDMwNTFDQTMyRTUyMDAw
QTg4NjkgLyogSUNTdGF0cy5jcHAgKi87IH07CiAJCURDM0QyQjBBMUQzNDMxNjIwMEJBOTE4QyAv
KiBIZWFwQ2VsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREMzRDJCMDkxRDM0MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREMzRDJCMEMxRDM0Mzc3MDAwQkE5
MThDIC8qIEhlYXBDZWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERDM0QyQjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5jcHAgKi87IH07
Ci0JCURDNDU0QjhDMUQwMEU4MjIwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzQ1NEI4QTFEMDBFODFGMDA0
QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovOyB9OwotCQlEQzQ1NEI4RDFEMDBFODI0MDA0QzE4
QUYgLyogQWlyRHVtcEFzSlMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oICovOyB9
OwogCQlEQzYwNUI1RDFDRTI2RUEwMDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzYwNUI1OTFDRTI2RTk4
MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAgKi87IH07CiAJCURDNjA1QjVFMUNFMjZFQTIw
MDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEQzYwNUI1QTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURD
NjA1QjVGMUNFMjZFQTUwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzYwNUI1QjFDRTI2RTk4MDA1OTM3MTgg
LyogUHJvZmlsZXJVSUQuY3BwICovOyB9OwpAQCAtMjc3NSw2ICsyNzgxLDE0IEBACiAJCTBGMkM2
M0FDMUU2MEFFM0MwMEMxMzgzOSAvKiBCM0JhbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNCYW5rLmg7IHBhdGggPSBiMy9CM0JhbmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyQzYzQUQxRTYwQUUzQzAwQzEzODM5IC8qIEIzV2lkdGguY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXaWR0aC5jcHA7IHBhdGggPSBiMy9C
M1dpZHRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzYzQUUxRTYwQUUz
RDAwQzEzODM5IC8qIEIzV2lkdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QjNXaWR0aC5oOyBwYXRoID0gYjMvQjNXaWR0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjJDNjNCMzFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0F0b21pY1ZhbHVlLmNwcDsgcGF0aCA9
IGIzL0IzQXRvbWljVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJD
NjNCNDFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM0F0b21pY1ZhbHVlLmg7IHBhdGggPSBiMy9CM0F0b21pY1ZhbHVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I1MUU2MzQzRTgwMEMxMzgz
OSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBwYXRoID0gYjMvQjNHZW5l
cmljQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
QzYzQjkxRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsg
cGF0aCA9IGIzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlv
blNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJCbG9ja0luc2VydGlv
blNldC5oOyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0JGMUU2NjBFQTUwMEMxMzgzOSAvKiBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjJDNjNDMTFFNjY0QTVBMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQjNOYXRpdmVUcmFpdHMuaDsgcGF0aCA9IGIzL0IzTmF0aXZl
VHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MzMUU2OUVGOTIw
MEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM01lbW9yeVZhbHVlSW5saW5lcy5oOyBwYXRoID0gYjMvQjNNZW1vcnlWYWx1
ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIxOTgzMkQz
NDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxv
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDc5NSw4ICs0ODA5LDYgQEAKIAkJREMyMTQzMDYxQ0EzMkU1
MjAwMEE4ODY5IC8qIElDU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SUNTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwOTFEMzQzMTYx
MDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGVhcENlbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMzRDJCMEIxRDM0Mzc2
RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhlYXBDZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRC
OEExRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEFpckR1bXBBc0pTLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJEdW1w
QXNKUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDNDU0QjhCMUQwMEU4MUYw
MDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBBaXJEdW1wQXNKUy5oOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyRXZl
bnQuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCURDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuaDsgcGF0
aCA9IHByb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJREM2MDVCNUIxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyVUlELmNwcDsgcGF0aCA9IHByb2Zp
bGVyL1Byb2ZpbGVyVUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMTQs
NiArNTMyNiw4IEBACiAJCQkJMEZFQzg0QjMxQkRBQ0Q4ODAwODBGRjc0IC8qIGFpciAqLywKIAkJ
CQkwRkVDODRCNDFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcCAqLywK
IAkJCQkwRkVDODRCNTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmggKi8s
CisJCQkJMEYyQzYzQjMxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwICovLAor
CQkJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8sCiAJCQkJ
MEYyQzYzQUIxRTYwQUUzQzAwQzEzODM5IC8qIEIzQmFuay5jcHAgKi8sCiAJCQkJMEYyQzYzQUMx
RTYwQUUzQzAwQzEzODM5IC8qIEIzQmFuay5oICovLAogCQkJCTBGRUM4NEI2MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0Jhc2ljQmxvY2suY3BwICovLApAQCAtNTM3Niw2ICs1MzkwLDcgQEAKIAkJCQkw
RkVDODRDRDFCREFDREFDMDA4MEZGNzQgLyogQjNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkw
RkVDODRDRTFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg0
Q0YxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJhdGUuaCAqLywKKwkJCQkwRjJDNjNCNTFFNjM0
M0U4MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkVD
ODREMDFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJ
CQkJMEZFQzg1QkYxQkUxNjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmNwcCAqLywKIAkJCQkw
RkVDODVDMDFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLywKQEAgLTUzOTgsOCAr
NTQxMywxMCBAQAogCQkJCTQzQUIyNkM1MUMxQTUyRjcwMEQ4MkFFNiAvKiBCM01hdGhFeHRyYXMu
aCAqLywKIAkJCQkwRkVDODRENTFCREFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5jcHAg
Ki8sCiAJCQkJMEZFQzg0RDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuaCAqLywK
KwkJCQkwRjJDNjNDMzFFNjlFRjkyMDBDMTM4MzkgLyogQjNNZW1vcnlWYWx1ZUlubGluZXMuaCAq
LywKIAkJCQkwRjMzOEUwMzFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmNwcCAq
LywKIAkJCQkwRjMzOEUwNDFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRzLmggKi8s
CisJCQkJMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi8sCiAJ
CQkJMEYzMzhFMDUxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0LmggKi8sCiAJ
CQkJMEYzMzhFMDYxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5jcHAgKi8s
CiAJCQkJMEYzMzhFMDcxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5oICov
LApAQCAtNTQ5MSw2ICs1NTA4LDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyog
QWlyQXJnSW5saW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJC
YXNpY0Jsb2NrLmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFz
aWNCbG9jay5oICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0lu
c2VydGlvblNldC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJs
b2NrSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFp
ckJsb2NrV29ya2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIgLyogQWly
Q0NhbGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3MjQ1MEIg
LyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC01NTAyLDggKzU1MjEsNiBAQAogCQkJ
CTBGMTBGMUEyMUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAqLywKIAkJCQk3OUFCQjE3
QjFFNUNDQjU3MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQk3OUFCQjE3
QzFFNUNDQjU3MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmggKi8sCi0JCQkJREM0NTRCOEEx
RDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLywKLQkJCQlEQzQ1NEI4QjFEMDBF
ODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuaCAqLywKIAkJCQkwRjQ1NzAzNjFCRTQ0QzkxMDA2
MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICovLAogCQkJCTBGNDU3MDM3MUJFNDRD
OTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovLAogCQkJCTBGNjE4MzIzMUM0
NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5jcHAgKi8sCkBAIC03MzU1LDYgKzczNzIs
NyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFGRTUxQjE5
MjJBM0JDMDA2OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRjFFNjYwRUE1
MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYwMTYxREYw
RjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJCQkwRjM3
MzA5MDFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgg
Ki8sCiAJCQkJODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8s
CkBAIC03MzgzLDggKzc0MDEsOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyog
TWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJD
QjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNBODNDMTAw
Rjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNBODNDMTAw
Rjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAwRjNBODND
MTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcxNzk3M0Iy
NjAwNTYxMkIxIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4NjAxNjFF
MjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywKIAkJCQk2
NTg2MDE3NzE4NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwu
aCAqLywKQEAgLTc5NzcsNyArNzk5NSw2IEBACiAJCQkJMEZFQzg1NzQxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckNDYWxsU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzYxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTBGMUEzMUM0MjBC
RjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAotCQkJCURDNDU0QjhEMUQw
MEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NTcw
MzkxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjYxODMyRDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNERFMUNGMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3Vz
U3BpbGxzLmggaW4gSGVhZGVycyAqLywKQEAgLTc5OTAsNiArODAwNyw3IEBACiAJCQkJMEZFQzg1
ODAxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4
NTgxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZERjY3RDcxRDlEQzQ0MjAwMUI5ODI1IC8qIEFpcktpbmQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMkM2M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUzNEMxQTFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9n
UmVnaXN0ZXJQcmVzc3VyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkYxQzQ1QkYwNzAw
NzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDgx
LDYgKzgwOTksNyBAQAogCQkJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0Rmxv
YXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QjMxQkRFRDk1NzAwODBGRjc0IC8q
IEIzQ29uc3RQdHJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5M0Q1NTAw
MTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYz
QjgxRTYzNDNGNzAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjMzOEUwRTFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRkMxQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5h
dG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjhBRDkxQzRFRERBMjAwOTY5MDUyIC8qIEIz
RHVwbGljYXRlVGFpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtODI3MSw2ICs4MjkwLDcgQEAKIAkJ
CQlBNzdBNDIzRTE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnBy
ZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjND
MjFFNjY0QTVDMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNjIwMTc3MTQzRkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkQzRTQwMjFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4RDNEMDFC
NTVBNkUwMDAyQzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTg0MDIsNiArODQyMiw3IEBACiAJCQkJMEYzOTJDOEExQjQ2MTg4NDAwODQ0
NzI4IC8qIERGR09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlBQjE2ODFB
M0I2MDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyMzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWlj
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJFQSAvKiBE
RkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRF
RjkwQUYwMEM3MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIx
OUQwQkE3RDAwQjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKQEAgLTg4
MjAsNiArODg0MSw3IEBACiAJCQkJNzlCODE5OTMxREQyNUNGNTAwRERDNzE0IC8qIEpTR2xvYmFs
T2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxMDA3QzExODdDQzNDNjAwQjM4
ODc5IC8qIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTUwRTRCNjQxODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFn
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNDNDFFNjlFRjk0MDBDMTM4MzkgLyogQjNN
ZW1vcnlWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTJBMTg4RjEwNTkw
MDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMyMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODMxLDYgKzk4NTMs
NyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJ
CTBGRkE1NDk3MTZCODgzNTAwMEIzQTk4MiAvKiBBNjRET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGMkM2M0MwMUU2NjBFQTcwMEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFENDkzN0MzMUREQkU2MTQwMDc3QzgwNyAvKiBBYnN0
cmFjdE1vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU1RjBGNDE0RDEwNjM5
MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzcwQjRGNTFC
RjI2MjAyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk4NDEsNyArOTg2NCw2IEBACiAJCQkJMEZFQzg1
NzMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckNDYWxsU3BlY2lhbC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkVDODU3NTFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjYxODMyQjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCURDNDU0QjhDMUQwMEU4MjIwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjQ1NzAzODFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWlu
YXRlRGVhZENvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MTgzMkMxQzQ1QkYwNzAwNzI0
NTBCIC8qIEFpckVtaXRTaHVmZmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNERFMUNFMUM0
QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMTAyODksNiArMTAzMTEsNyBAQAogCQkJCTlFNzI5NDA3MTkwRjAxQTUwMDFBOTFCNSAvKiBJ
bml0aWFsaXplVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTNFNUI3MTg1QjhC
RDMwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTE0
QjJDMjE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGMkM2M0I2MUU2MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1OEUzNTkxMTg2MERFQ0YwMDFGMjRGRSAvKiBJbmplY3RlZFNj
cmlwdEhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1Q0ExODVGOTYyNDAwN0U5NUFE
IC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTg0MEUy
MDE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0xMDMwNyw2ICsxMDMzMCw3IEBACiAJCQkJRTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJB
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNTMyNDM4QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1MEU0QjYxMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQkIxRTYzNDQwQTAw
QzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
NTE2NUQyMUJERjBCOTgwMDNCNzVDMSAvKiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0YxMDdFQzM3NjAwNDI3QTQ4
IC8qIEludGVybmFsRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCShyZXZpc2lvbiAy
MTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5NCw2ICs2OTQsMjEgQEAgcHJpdmF0ZToKICAgICAgICAg
TGRyTGl0ZXJhbE9wX0xEUlNXID0gMiwKICAgICAgICAgTGRyTGl0ZXJhbE9wXzEyOEJJVCA9IDIK
ICAgICB9OworICAgIAorICAgIGVudW0gRXhvdGljTG9hZEZlbmNlIHsKKyAgICAgICAgRXhvdGlj
TG9hZEZlbmNlX05vbmUsCisgICAgICAgIEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlCisgICAgfTsK
KyAgICAKKyAgICBlbnVtIEV4b3RpY0xvYWRBdG9taWMgeworICAgICAgICBFeG90aWNMb2FkQXRv
bWljX0xpbmssCisgICAgICAgIEV4b3RpY0xvYWRBdG9taWNfTm9uZQorICAgIH07CisKKyAgICBl
bnVtIEV4b3RpY1N0b3JlRmVuY2UgeworICAgICAgICBFeG90aWNTdG9yZUZlbmNlX05vbmUsCisg
ICAgICAgIEV4b3RpY1N0b3JlRmVuY2VfUmVsZWFzZSwKKyAgICB9OwogCiAgICAgc3RhdGljIHVu
c2lnbmVkIG1lbVBhaXJPZmZzZXRTaGlmdChib29sIFYsIE1lbVBhaXJPcFNpemUgc2l6ZSkKICAg
ICB7CkBAIC0xNTMxLDYgKzE1NDYsNDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaW5zbigw
eGQ1MDMzYWJmKTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAg
IHZvaWQgbGRhcihSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzcmMpCisgICAgeworICAgICAg
ICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGV4b3RpY0xvYWQoTUVNT1BTSVpFLCBF
eG90aWNMb2FkRmVuY2VfQWNxdWlyZSwgRXhvdGljTG9hZEF0b21pY19Ob25lLCBkc3QsIHNyYykp
OworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxkeHIoUmVn
aXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc3JjKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJ
WkUoKTsKKyAgICAgICAgaW5zbihleG90aWNMb2FkKE1FTU9QU0laRSwgRXhvdGljTG9hZEZlbmNl
X05vbmUsIEV4b3RpY0xvYWRBdG9taWNfTGluaywgZHN0LCBzcmMpKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBsZGF4cihSZWdpc3RlcklEIGRzdCwgUmVn
aXN0ZXJJRCBzcmMpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBp
bnNuKGV4b3RpY0xvYWQoTUVNT1BTSVpFLCBFeG90aWNMb2FkRmVuY2VfQWNxdWlyZSwgRXhvdGlj
TG9hZEF0b21pY19MaW5rLCBkc3QsIHNyYykpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxp
bnQgZGF0YXNpemU+CisgICAgdm9pZCBzdHhyKFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOwor
ICAgICAgICBpbnNuKGV4b3RpY1N0b3JlKE1FTU9QU0laRSwgRXhvdGljU3RvcmVGZW5jZV9Ob25l
LCByZXN1bHQsIHNyYywgZHN0KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXpl
PgorICAgIHZvaWQgc3RscihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKHN0b3JlUmVsZWFzZShNRU1P
UFNJWkUsIHNyYywgZHN0KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgor
ICAgIHZvaWQgc3RseHIoUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24o
ZXhvdGljU3RvcmUoTUVNT1BTSVpFLCBFeG90aWNTdG9yZUZlbmNlX1JlbGVhc2UsIHJlc3VsdCwg
c3JjLCBkc3QpKTsKKyAgICB9CiAKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIG9ybihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3Rl
cklEIHJtKQpAQCAtMzYwMSw3ICszNjU4LDIyIEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IGlu
dCBvcDQgPSAwOwogICAgICAgICByZXR1cm4gKDB4ZDYwMDAwMDAgfCBvcGMgPDwgMjEgfCBvcDIg
PDwgMTYgfCBvcDMgPDwgMTAgfCB4T3JacihybikgPDwgNSB8IG9wNCk7CiAgICAgfQotCisgICAg
CisgICAgc3RhdGljIGludCBleG90aWNMb2FkKE1lbU9wU2l6ZSBzaXplLCBFeG90aWNMb2FkRmVu
Y2UgZmVuY2UsIEV4b3RpY0xvYWRBdG9taWMgYXRvbWljLCBSZWdpc3RlcklEIGRzdCwgUmVnaXN0
ZXJJRCBzcmMpCisgICAgeworICAgICAgICByZXR1cm4gMHgwODVmN2MwMCB8IHNpemUgPDwgMzAg
fCBmZW5jZSA8PCAxNSB8IGF0b21pYyA8PCAyMyB8IHNyYyA8PCA1IHwgZHN0OworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgaW50IHN0b3JlUmVsZWFzZShNZW1PcFNpemUgc2l6ZSwgUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIDB4MDg5ZmZjMDAg
fCBzaXplIDw8IDMwIHwgZHN0IDw8IDUgfCBzcmM7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBp
bnQgZXhvdGljU3RvcmUoTWVtT3BTaXplIHNpemUsIEV4b3RpY1N0b3JlRmVuY2UgZmVuY2UsIFJl
Z2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICByZXR1cm4gMHgwODAwN2MwMCB8IHNpemUgPDwgMzAgfCByZXN1bHQgPDwgMTYgfCBm
ZW5jZSA8PCAxNSB8IGRzdCA8PCA1IHwgc3JjOworICAgIH0KKyAgICAKICAgICAvLyBXb3JrYXJv
dW5kIGZvciBDb3J0ZXgtQTUzIGVycmF0dW0gKDgzNTc2OSkuIEVtaXQgYW4gZXh0cmEgbm9wIGlm
IHRoZQogICAgIC8vIGxhc3QgaW5zdHJ1Y3Rpb24gaW4gdGhlIGJ1ZmZlciBpcyBhIGxvYWQsIHN0
b3JlIG9yIHByZWZldGNoLiBOZWVkZWQKICAgICAvLyBiZWZvcmUgNjQtYml0IG11bHRpcGx5LWFj
Y3VtdWxhdGUgaW5zdHJ1Y3Rpb25zLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIgLy8gSGF2ZSB0byBicmVhayB3aXRoIHN0eWxlIGJl
Y2F1c2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGlzIGEgc2hhZHkgaGVhZGVyLgorCisjaWYg
RU5BQkxFKEFTU0VNQkxFUikKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdGF0dXNDb25k
aXRpb24gY29uZGl0aW9uKQoreworICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7CisgICAgY2FzZSBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6U3VjY2VzczoKKyAgICAgICAgb3V0LnByaW50KCJT
dWNjZXNzIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXJCYXNlOjpGYWlsdXJlOgorICAgICAgICBvdXQucHJpbnQoIkZhaWx1cmUiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8
d3RmL1NoYXJlZFRhc2suaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtSYW5kb20uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MCw4ICs1MSwyOCBAQCBuYW1l
c3BhY2UgREZHIHsKIHN0cnVjdCBPU1JFeGl0OwogfQogCitjbGFzcyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyQmFzZSB7CitwdWJsaWM6CisgICAgZW51bSBTdGF0dXNDb25kaXRpb24geworICAgICAg
ICBTdWNjZXNzLAorICAgICAgICBGYWlsdXJlCisgICAgfTsKKyAgICAKKyAgICBzdGF0aWMgU3Rh
dHVzQ29uZGl0aW9uIGludmVydChTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICAgICAgY2FzZSBTdWNjZXNzOgorICAgICAg
ICAgICAgcmV0dXJuIEZhaWx1cmU7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAg
IHJldHVybiBTdWNjZXNzOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgIH0KK307CisKIHRlbXBsYXRl
IDxjbGFzcyBBc3NlbWJsZXJUeXBlLCBjbGFzcyBNYWNyb0Fzc2VtYmxlclR5cGU+Ci1jbGFzcyBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyIHsKK2NsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgewogcHVibGljOgogICAgIHR5cGVkZWYg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlLCBNYWNyb0Fzc2VtYmxlclR5cGU+
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJUeXBlOwogICAgIHR5cGVkZWYgQXNzZW1ibGVyVHlwZSBB
c3NlbWJsZXJUeXBlX1Q7CkBAIC0xMTA4LDMgKzExMjksMTYgQEAgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlcjxBc3NlbWJsZXJUeXBlLCBNYQogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQworCisjaWYgRU5BQkxFKEFTU0VNQkxFUikKKworbmFtZXNwYWNlIFdU
RiB7CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6U3RhdHVzQ29uZGl0aW9u
KTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzYsNiArMTM2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgdHdvVG9UaGUzMjsgLy8gVGhp
cyBpcyBzdXBlciB1c2VmdWwgZm9yIHNvbWUgZG91YmxlIGNvZGUuCiAKICAgICAvLyBVdGlsaXRp
ZXMgdXNlZCBieSB0aGUgREZHIEpJVC4KKyAgICB1c2luZyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
QmFzZTo6aW52ZXJ0OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6aW52ZXJ0OwogICAg
IAogICAgIHN0YXRpYyBEb3VibGVDb25kaXRpb24gaW52ZXJ0KERvdWJsZUNvbmRpdGlvbiBjb25k
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Mzc1LDcgKzMzNzUsMjI5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmRt
YklTSCgpOwogICAgIH0KLQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRFeHRlbmRUbzMy
KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sZGFyPDg+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZEFjcThTaWduZWRFeHRlbmRU
bzMyKGFkZHJlc3MsIGRlc3QpOworICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoMHhmZiksIGRl
c3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChSZWdpc3RlcklEIHNyYywgSW1w
bGljaXRBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdGxyPDg+
KHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXI8MTY+KGRlc3Qs
IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkQWNxMTYoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoYWRkcmVzcywgZGVzdCk7CisgICAg
ICAgIGFuZDMyKFRydXN0ZWRJbW0zMigweGZmZmYpLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHI8MTY+KHNyYywgZXh0cmFjdFNpbXBsZUFk
ZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihJbXBsaWNp
dEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubGRhcjwzMj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRhcjw2ND4oZGVzdCwg
ZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0
b3JlUmVsMzIoUmVnaXN0ZXJJRCBkZXN0LCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHI8MzI+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNz
KGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0KFJlZ2lzdGVySUQg
ZGVzdCwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zdGxyPDY0PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgbG9hZExpbms4KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhyPDg+KGRlc3QsIGV4dHJh
Y3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGlu
a0FjcTgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxkYXhyPDg+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFk
ZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmQ4KFJlZ2lzdGVySUQgc3Jj
LCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5zdHhyPDg+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVz
cyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kUmVsOChSZWdpc3Rl
cklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RseHI8OD4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1w
bGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGluazE2KElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sZHhyPDE2PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7
CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmtBY3ExNihJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8
MTY+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBzdG9yZUNvbmQxNihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJl
c3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4cjwx
Nj4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBzdG9yZUNvbmRSZWwxNihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRy
ZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuc3RseHI8MTY+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7
CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmszMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGR4cjwzMj4o
ZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRMaW5rQWNxMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXhyPDMyPihkZXN0LCBleHRyYWN0U2lt
cGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kMzIo
UmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0eHI8MzI+KHJlc3VsdCwgc3JjLCBleHRy
YWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVD
b25kUmVsMzIoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPDMyPihyZXN1bHQs
IHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRMaW5rNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8NjQ+KGRlc3QsIGV4dHJhY3RTaW1wbGVB
ZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGlua0FjcTY0KElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sZGF4cjw2ND4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZDY0KFJlZ2lzdGVySUQgc3JjLCBJbXBs
aWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zdHhyPDY0PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRk
cmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDY0KFJlZ2lzdGVySUQg
c3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjw2ND4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVB
ZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTPDg+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBu
ZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzwxNj4oY29uZCwgZXhwZWN0ZWRB
bmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTPDMyPihjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdD
QVM8NjQ+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVkU3Ryb25nQ0FTOChTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5l
d1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1Jl
bGF4ZWRTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM8MTY+KGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVkU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9t
aWNSZWxheGVkU3Ryb25nQ0FTPDMyPihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUs
IGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljUmVsYXhlZFN0
cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVz
dWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzw2ND4oY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAK
KyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1dlYWtDQVM8
OD4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
V2Vha0NBUzwxNj4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljV2Vha0NBUzMyKFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJh
bmNoQXRvbWljV2Vha0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVl
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBy
ZXR1cm4gYnJhbmNoQXRvbWljV2Vha0NBUzw2ND4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRv
bWljUmVsYXhlZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM8OD4oY29uZCwg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgSnVtcExpc3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1Jl
bGF4ZWRXZWFrQ0FTPDE2Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNSZWxheGVkV2Vh
a0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICByZXR1cm4gYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM8MzI+KGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0
IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NB
Uzw2ND4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBkZXBlbmQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZW9yPDMyPihkZXN0LCBzcmMsIHNyYyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgZGVwZW5kNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmVvcjw2ND4oZGVzdCwgc3JjLCBz
cmMpOworICAgIH0KKyAgICAKICAgICAvLyBNaXNjIGhlbHBlciBmdW5jdGlvbnMuCiAKICAgICAv
LyBJbnZlcnQgYSByZWxhdGlvbmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJl
Y29tZXMgPj0sIGV0Yy4KQEAgLTM4NzcsNiArNDA5OSwxNTggQEAgcHJpdmF0ZToKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBk
YXRhc2l6ZT4KKyAgICB2b2lkIGxvYWRMaW5rKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhyPGRhdGFzaXplPihkZXN0LCBzcmMp
OworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBsb2Fk
TGlua0FjcShSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubGRheHI8ZGF0YXNpemU+KGRlc3QsIHNyYyk7CisgICAgfQorICAgIAorICAg
IHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIHN0b3JlQ29uZChSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnN0eHI8ZGF0YXNpemU+KHNyYywgZGVzdCwgcmVzdWx0KTsKKyAgICB9CisgICAg
CisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgc3RvcmVDb25kUmVsKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuc3RseHI8ZGF0YXNpemU+KHNyYywgZGVzdCwgcmVzdWx0KTsKKyAg
ICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgc2lnbkV4dGVu
ZChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShz
cmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAg
SnVtcCBicmFuY2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJl
Z2lzdGVySUQgcmlnaHQpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVm
dCwgcmlnaHQpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAg
dm9pZCBhdG9taWNTdHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVn
aXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBzaWduRXh0ZW5kPGRhdGFzaXplPihleHBl
Y3RlZEFuZFJlc3VsdCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICAKKyAgICAgICAgUmVn
aXN0ZXJJRCBzaW1wbGVBZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcyk7Cisg
ICAgICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52
YWxpZGF0ZSgpOworICAgICAgICAKKyAgICAgICAgTGFiZWwgcmVsb29wID0gbGFiZWwoKTsKKyAg
ICAgICAgbG9hZExpbmtBY3E8ZGF0YXNpemU+KHNpbXBsZUFkZHJlc3MsIHRtcCk7CisgICAgICAg
IEp1bXAgZmFpbHVyZSA9IGJyYW5jaDxkYXRhc2l6ZT4oTm90RXF1YWwsIGV4cGVjdGVkQW5kUmVz
dWx0LCB0bXApOworICAgICAgICAKKyAgICAgICAgc3RvcmVDb25kUmVsPGRhdGFzaXplPihuZXdW
YWx1ZSwgc2ltcGxlQWRkcmVzcywgcmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKE5vblpl
cm8sIHJlc3VsdCkubGlua1RvKHJlbG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGNvbmQgPT0gU3VjY2VzcyksIHJlc3VsdCk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKKyAgICAgICAgCisgICAgICAgIGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgbW92ZSh0
bXAsIGV4cGVjdGVkQW5kUmVzdWx0KTsKKyAgICAgICAgc3RvcmVDb25kUmVsPGRhdGFzaXplPih0
bXAsIHNpbXBsZUFkZHJlc3MsIHJlc3VsdCk7CisgICAgICAgIGJyYW5jaFRlc3QzMihOb25aZXJv
LCByZXN1bHQpLmxpbmtUbyhyZWxvb3AsIHRoaXMpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0z
Mihjb25kID09IEZhaWx1cmUpLCByZXN1bHQpOworICAgICAgICAKKyAgICAgICAgZG9uZS5saW5r
KHRoaXMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9p
ZCBhdG9taWNSZWxheGVkU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgc2lnbkV4dGVuZDxkYXRhc2l6ZT4o
ZXhwZWN0ZWRBbmRSZXN1bHQsIGV4cGVjdGVkQW5kUmVzdWx0KTsKKyAgICAgICAgCisgICAgICAg
IFJlZ2lzdGVySUQgc2ltcGxlQWRkcmVzcyA9IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3Mp
OworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKTsKKyAgICAgICAgCisgICAgICAgIExhYmVsIHJlbG9vcCA9IGxhYmVsKCk7
CisgICAgICAgIGxvYWRMaW5rPGRhdGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXApOworICAgICAg
ICBKdW1wIGZhaWx1cmUgPSBicmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBlY3RlZEFuZFJl
c3VsdCwgdG1wKTsKKyAgICAgICAgCisgICAgICAgIHN0b3JlQ29uZDxkYXRhc2l6ZT4obmV3VmFs
dWUsIHNpbXBsZUFkZHJlc3MsIHJlc3VsdCk7CisgICAgICAgIGJyYW5jaFRlc3QzMihOb25aZXJv
LCByZXN1bHQpLmxpbmtUbyhyZWxvb3AsIHRoaXMpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0z
Mihjb25kID09IFN1Y2Nlc3MpLCByZXN1bHQpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7
CisgICAgICAgIAorICAgICAgICBmYWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAgIG1vdmUodG1w
LCBleHBlY3RlZEFuZFJlc3VsdCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGNvbmQgPT0g
RmFpbHVyZSksIHJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBkb25lLmxpbmsodGhpcyk7Cisg
ICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBKdW1wTGlzdCBicmFu
Y2hBdG9taWNXZWFrQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBzaWduRXh0ZW5kPGRhdGFzaXplPihleHBlY3RlZEFuZENsb2JiZXJlZCwgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQpOworICAgICAgICAKKyAgICAgICAgUmVnaXN0ZXJJRCBzaW1wbGVB
ZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcyk7CisgICAgICAgIFJlZ2lzdGVy
SUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAg
ICAgICAKKyAgICAgICAgSnVtcExpc3Qgc3VjY2VzczsKKyAgICAgICAgSnVtcExpc3QgZmFpbHVy
ZTsKKworICAgICAgICBsb2FkTGlua0FjcTxkYXRhc2l6ZT4oc2ltcGxlQWRkcmVzcywgdG1wKTsK
KyAgICAgICAgZmFpbHVyZS5hcHBlbmQoYnJhbmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIHRtcCkpOworICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNpemU+KG5l
d1ZhbHVlLCBzaW1wbGVBZGRyZXNzLCBleHBlY3RlZEFuZENsb2JiZXJlZCk7CisgICAgICAgIAor
ICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICAgICAgY2FzZSBTdWNjZXNzOgorICAgICAgICAg
ICAgc3VjY2Vzcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
KSk7CisgICAgICAgICAgICBmYWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAgICAgICByZXR1cm4g
c3VjY2VzczsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAgICAgZmFpbHVyZS5hcHBl
bmQoYnJhbmNoVGVzdDMyKE5vblplcm8sIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKSk7CisgICAgICAg
ICAgICByZXR1cm4gZmFpbHVyZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRh
dGFzaXplPgorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTKFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBzaWduRXh0ZW5kPGRh
dGFzaXplPihleHBlY3RlZEFuZENsb2JiZXJlZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpOworICAg
ICAgICAKKyAgICAgICAgUmVnaXN0ZXJJRCBzaW1wbGVBZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFk
ZHJlc3MoYWRkcmVzcyk7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAgICAgICAKKyAgICAgICAgSnVtcExpc3Qg
c3VjY2VzczsKKyAgICAgICAgSnVtcExpc3QgZmFpbHVyZTsKKworICAgICAgICBsb2FkTGluazxk
YXRhc2l6ZT4oc2ltcGxlQWRkcmVzcywgdG1wKTsKKyAgICAgICAgZmFpbHVyZS5hcHBlbmQoYnJh
bmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIHRtcCkpOworICAg
ICAgICBzdG9yZUNvbmQ8ZGF0YXNpemU+KG5ld1ZhbHVlLCBzaW1wbGVBZGRyZXNzLCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCk7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICAg
ICAgY2FzZSBTdWNjZXNzOgorICAgICAgICAgICAgc3VjY2Vzcy5hcHBlbmQoYnJhbmNoVGVzdDMy
KFplcm8sIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKSk7CisgICAgICAgICAgICBmYWlsdXJlLmxpbmso
dGhpcyk7CisgICAgICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICAgICAgY2FzZSBGYWlsdXJl
OgorICAgICAgICAgICAgZmFpbHVyZS5hcHBlbmQoYnJhbmNoVGVzdDMyKE5vblplcm8sIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkKSk7CisgICAgICAgICAgICByZXR1cm4gZmFpbHVyZTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisgICAgCisgICAgUmVnaXN0ZXJJRCBleHRyYWN0U2ltcGxlQWRkcmVzcyhJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQpCisgICAgICAg
ICAgICByZXR1cm4gYWRkcmVzcy5iYXNlOworICAgICAgICAKKyAgICAgICAgc2lnbkV4dGVuZDMy
VG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBhZGQ2NChhZGRyZXNzLmJhc2UsIG1l
bW9yeVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBtZW1vcnlUZW1wUmVnaXN0ZXI7Cisg
ICAgfQogCiAgICAgSnVtcCBqdW1wQWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFyZShEb3VibGVDb25k
aXRpb24gY29uZCkKICAgICB7CkBAIC0zOTg5LDYgKzQzNjMsMjQgQEAgQUxXQVlTX0lOTElORSB2
b2lkIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OgogICAgIG1fYXNzZW1ibGVyLnN0dXJoKHJ0LCBybiwg
c2ltbSk7CiB9CiAKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnNpZ25FeHRlbmQ8OD4oUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKK3sKKyAgICBz
aWduRXh0ZW5kOFRvMzIoc3JjLCBkZXN0KTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIHZvaWQg
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c2lnbkV4dGVuZDwxNj4oUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKK3sKKyAgICBzaWduRXh0ZW5kMTZUbzMyKHNyYywgZGVzdCk7Cit9CisKK3Rl
bXBsYXRlPD4KK2lubGluZSBNYWNyb0Fzc2VtYmxlckFSTTY0OjpKdW1wIE1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmJyYW5jaDw2ND4oUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIFJlZ2lzdGVySUQgcmlnaHQpCit7CisgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQs
IHJpZ2h0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoQVNT
RU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzEsNiArMTcxLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAg
dm9pZCBhZGQzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNy
Yy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhZGQzMihSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbF9ybShzcmMsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwpAQCAtMjUxLDE2ICsyNTYsNzEgQEAgcHVibGljOgogICAg
ICAgICBtX2Fzc2VtYmxlci5hbmRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAg
ICAgfQogCisgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQxNihS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YW5kd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQg
YW5kMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYW5kd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kOChSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kOChSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCiAgICAgdm9pZCBhbmQzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7
CiAgICAgfQogCisgICAgdm9pZCBhbmQzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhbmQzMihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
ICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9pbShpbW0ubV92YWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorCisgICAgdm9pZCBhbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X2ltKHN0YXRpY19jYXN0PGludDE2
X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQor
CisgICAgdm9pZCBhbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1t
Lm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZEltbTMyIGltbSwg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9pbShzdGF0
aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9pbShzdGF0aWNfY2FzdDxp
bnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhbmQzMihSZWdpc3Rl
cklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGlmIChvcDEgPT0gb3AyKQpAQCAtNDU2LDYgKzUxNiwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
YXNzZW1ibGVyLm5lZ2xfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsKICAgICB9CiAK
KyAgICB2b2lkIG5lZzMyKEJhc2VJbmRleCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UsIHNyY0Rlc3QuaW5kZXgs
IHNyY0Rlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnMTYoQWRkcmVzcyBzcmNEZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnd19tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNE
ZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnMTYoQmFzZUluZGV4IHNyY0Rlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3Qu
YmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBu
ZWc4KEFkZHJlc3Mgc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2JfbShz
cmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZzgoQmFz
ZUluZGV4IHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdiX20oc3JjRGVz
dC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcnIoc3JjLCBkZXN0KTsKQEAgLTQ3MSwxNiAr
NTU2LDcxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHNyYywgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KworICAgIHZvaWQgb3IxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7Cisg
ICAgfQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3I4KFJlZ2lz
dGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmJf
cm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChS
ZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5vcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFz
ZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9tcihzcmMub2Zmc2V0LCBz
cmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQg
b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5vcmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UpOwogICAgIH0KIAorICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbShpbW0ubV92YWx1ZSwg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19pbShzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0u
bV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFk
ZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9pbShzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90
PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIG9w
MSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChv
cDEgPT0gb3AyKQpAQCAtNjU0LDE2ICs3OTQsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWJsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
ICAgICB9CiAKKyAgICB2b2lkIHN1YjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50MTZf
dD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisK
KyAgICB2b2lkIHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3Zh
bHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBz
dWIzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
c3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJ3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCBzdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9pbShzdGF0aWNfY2FzdDxp
bnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihBZGRyZXNz
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9t
cihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBzdWIzMihC
YXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zdWJsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVz
dCk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yndfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoUmVnaXN0ZXJJRCBzcmMs
IEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmJfcm0oc3JjLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFJlZ2lzdGVy
SUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Ymxf
cm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsK
KyAgICB9CisKKyAgICB2b2lkIHN1YjE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1Yjgo
UmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuc3ViYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfcnIoc3JjLCBkZXN0KTsK
QEAgLTY3Nyw2ICs4NzIsNTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9y
bF9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAg
dm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAg
ICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vdGxf
bShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9pbShpbW0ubV92YWx1ZSwgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisg
ICAgdm9pZCB4b3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAg
ICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKTsKKyAg
ICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90
d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3J3X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0u
bV92YWx1ZSk7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yd19pbShp
bW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50OF90PihpbW0u
bV92YWx1ZSk7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxp
bnQ4X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3Qu
aW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci54b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4
LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkK
QEAgLTY5MCwxMSArOTI5LDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9y
bShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgeG9yMzIo
UmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueG9ybF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3Mg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfcm0oc3JjLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfcm0oc3JjLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisK
KyAgICB2b2lkIHhvcjgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhvcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAg
ICB9CisKKyAgICB2b2lkIHhvcjgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoQWRk
cmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhv
cmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KICAgICAKKyAgICB2b2lk
IHhvcjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnhvcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNj
YWxlLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIG9wMSwg
UmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChvcDEg
PT0gb3AyKQpAQCAtNzQxLDYgKzEwMTAsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5ub3RsX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBub3Qz
MihCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdGxfbShkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5vdDE2KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5v
dHdfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDE2KEJh
c2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZv
aWQgbm90OChBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20o
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3Q4KEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgc3Fy
dERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIuc3FydHNkX3JyKHNyYywgZHN0KTsKQEAgLTEwNzEsNDIgKzEzNjUsMjMg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
YWRkcmVzcykKICAgICB7Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAgLy8gT24gMzItYml0IHg4NiB3
ZSBjYW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKLSAgICAgICAgLy8g
ZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEKLSAgICAgICAgaWYgKHNy
YyA+PSA0KSB7Ci0gICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLgotICAg
ICAgICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRkcmVzcyk7Ci0K
LSAgICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0byBwZXJmb3Jt
IHRoZSBzdG9yZS4KLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm1vdndfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7Ci0gICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3Z3X3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotI2lmIENQVShYODYpCi0gICAgICAgIC8v
IE9uIDMyLWJpdCB4ODYgd2UgY2FuIG9ubHkgc3RvcmUgZnJvbSB0aGUgZmlyc3QgNCByZWdpc3Rl
cnM7Ci0gICAgICAgIC8vIGVzcC4uZWRpIGFyZSBtYXBwZWQgdG8gdGhlICdoJyByZWdpc3RlcnMh
Ci0gICAgICAgIGlmIChzcmMgPj0gNCkgewotICAgICAgICAgICAgLy8gUGljayBhIHRlbXBvcmFy
eSByZWdpc3Rlci4KLSAgICAgICAgICAgIFJlZ2lzdGVySUQgdGVtcCA9IGdldFVudXNlZFJlZ2lz
dGVyKGFkZHJlc3MpOwotCi0gICAgICAgICAgICAvLyBTd2FwIHRvIHRoZSB0ZW1wb3JhcnkgcmVn
aXN0ZXIgdG8gcGVyZm9ybSB0aGUgc3RvcmUuCi0gICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3JtKHRlbXAsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UpOwotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybShz
cmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3Rv
cmUxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm1vdndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0aWNfY2FzdDxp
bnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAg
IH0KIAogICAgIC8vIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbjoKICAgICAvLwpAQCAtMjc0NSw3
NCArMzAyMCw5MDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLm9ybF9pbSgwLCAwLCBYODZSZWdpc3RlcnM6OmVzcCk7CiAgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NB
Uyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAg
IH0KIAotICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9u
IG9mIG5vcm1hbCBzdG9yZXMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgotICAgIHZvaWQgc3Rv
cmVGZW5jZSgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNl
SW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAgICBhdG9taWNT
dHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICAvLyBXZSB0YWtl
IHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwgbG9hZHMuIFNv
LCBpdCdzIGEgbm8tb3Agb24geDg2LgotICAgIHZvaWQgbG9hZEZlbmNlKCkKKyAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQogICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQs
IENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
MTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkK
ICAgICB7Ci0gICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9u
U3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAg
IH0KLSAgICAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQor
CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBYODZBc3NlbWJs
ZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGds
X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCisgICAgdm9pZCBhdG9t
aWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6cGF0Y2hhYmxl
SnVtcFNpemUoKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsg
fSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50Um91bmRp
bmcoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAg
ICBpZiAoc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hlY2tlZCkK
LSAgICAgICAgICAgIHVwZGF0ZUVheDFFY3hGbGFncygpOwotICAgICAgICByZXR1cm4gc19zc2U0
XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAgICAgICBhdG9taWNTdHJv
bmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAgfQogCi0gICAg
c3RhdGljIGJvb2wgc3VwcG9ydHNBVlgoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcykKICAgICB7Ci0gICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlzdGVyaW91cyBy
ZWdyZXNzaW9ucyBhbmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUuCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0
LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hGbGFncygpCisgICAgdm9pZCBhdG9taWNT
dHJvbmdDQVMxNihSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAgICBpbnQgZmxhZ3MgPSAwOwotI2lm
IENPTVBJTEVSKE1TVkMpCi0gICAgICAgIGludCBjcHVJbmZvWzRdOwotICAgICAgICBfX2NwdWlk
KGNwdUluZm8sIDB4MSk7Ci0gICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsKLSNlbGlmIENPTVBJ
TEVSKEdDQ19PUl9DTEFORykKLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICBhc20gKAotICAgICAg
ICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgotICAgICAgICAgICAgImNwdWlkOyIKLSAgICAgICAg
ICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAgICAg
ICAgICAgOgotICAgICAgICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3giLCAiJWVkeCIKLSAg
ICAgICAgICAgICk7Ci0jZWxzZQotICAgICAgICBhc20gKAotICAgICAgICAgICAgIm1vdmwgJDB4
MSwgJSVlYXg7IgotICAgICAgICAgICAgInB1c2hsICUlZWJ4OyIKLSAgICAgICAgICAgICJjcHVp
ZDsiCi0gICAgICAgICAgICAicG9wbCAlJWVieDsiCi0gICAgICAgICAgICAibW92bCAlJWVjeCwg
JTA7IgotICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgIDoKLSAgICAgICAg
ICAgIDogIiVlYXgiLCAiJWVjeCIsICIlZWR4IgotICAgICAgICAgICAgKTsKLSNlbmRpZgorICAg
ICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVy
LmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NB
UyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FT
OChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9h
c3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5j
aEF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3Vs
dCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9
CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FT
KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICAvLyBJZiB5b3UgdXNlIHdlYWsgQ0FTLCB5b3UgY2Fu
bm90IHJlbHkgb24gZXhwZWN0ZWRBbmRDbG9iYmVyZWQgdG8gaGF2ZSBhbnkgcGFydGljdWxhciB2
YWx1ZSBhZnRlcgorICAgIC8vIHRoaXMgY29tcGxldGVzLiBPbiB4ODYsIGl0IHdpbGwgY29udGFp
biB0aGUgcmVzdWx0IG9mIHRoZSBzdHJvbmcgQ0FTLiBPbiBBUk0sIGl0IHdpbGwgc3RpbGwgaGF2
ZQorICAgIC8vIHRoZSBleHBlY3RlZCB2YWx1ZS4KKyAgICB2b2lkIGF0b21pY1dlYWtDQVM4KFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
bmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNXZWFr
Q0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVz
dWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBh
dG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisg
ICAgdm9pZCBhdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywg
cmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVMzMihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVl
LCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJl
dHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBu
ZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FT
OChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBy
ZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
bmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBy
ZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtD
QVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dl
YWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNX
ZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
UmVsYXhlZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisg
ICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRl
eCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9u
Z0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1
bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1
ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFr
Q0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihj
b25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7Cisg
ICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBh
dG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFk
ZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vh
a0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxh
eGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0
b21pY1JlbGF4ZWRXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYo
Y29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisK
KyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJv
bmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOwor
ICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FkZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgYWRkOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YWRkMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihS
ZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYocmVnLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFkZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
QWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMzIo
cmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIGFkZDMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjgoaW1tLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWI4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViOChS
ZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjgocmVnLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHN1YjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Vi
MTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMTYocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIHN1YjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWIzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMy
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljU3ViMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
QW5kOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChpbW0sIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoUmVnaXN0ZXJJRCBy
ZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhbmQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
bmQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFJl
Z2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljQW5kMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihyZWcsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFRydXN0ZWRJbW0zMiBpbW0s
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgYW5kMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNB
bmQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQzMihy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFJlZ2lzdGVy
SUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYW5kMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9y
OChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yOChSZWdpc3Rl
cklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNPcjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IxNihp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3Ix
NihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljT3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IzMihpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
b3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoUmVn
aXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBvcjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICB4b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9y
OChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgocmVnLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHhvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMTYo
cmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIHhvcjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IzMihpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICB4b3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hv
cjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWG9yMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IzMihyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzgoQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc4KGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzgoQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzgoYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMTYoQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWcxNihhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMTYoYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMzIoQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWczMihhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnMzIoYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDgoYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90OChhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QxNihBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDE2KGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QxNihhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QzMihBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDMyKGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QzMihhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkOChSZWdpc3RlcklEIHJlZywg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4KFJlZ2lzdGVySUQgcmVn
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFk
ZHdfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxl
ci54YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQz
MihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9ybShyZWcsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdB
ZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRsX3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGd3X3JtKHJlZywg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3dfcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIoUmVnaXN0ZXJJRCByZWcs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRBY3E4KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBsb2FkOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEJhc2VJ
bmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4KHNyYywgZGVz
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKEFkZHJl
c3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkOFNpZ25lZEV4dGVu
ZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOFNpZ25lZEV4
dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZDhTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
bG9hZEFjcTE2KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBs
b2FkMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTYoQmFzZUlu
ZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDE2KHNyYywgZGVz
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihBZGRy
ZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDE2U2lnbmVkRXh0
ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNlNpZ25l
ZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGxvYWRBY3EzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbG9hZDMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTMyKEJh
c2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQzMihzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkK
KyAgICB7CisgICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IHN0b3JlUmVsOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAg
ICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDgoVHJ1
c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTgoaW1t
LCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNyYywgZGVzdCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBzdG9yZTE2KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVS
ZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0
b3JlMTYoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFJlZ2lz
dGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYywgZGVz
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdpc3RlcklEIHNyYywgQmFz
ZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYywgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBzdG9yZTMyKGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7Cisg
ICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgLy8gV2UgdGFrZSB0
aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIHN0b3Jlcy4gU28s
IGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBzdG9yZUZlbmNlKCkKKyAgICB7CisgICAg
fQorCisgICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24g
b2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KKyAgICB2b2lkIGxvYWRG
ZW5jZSgpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0
aW5hdGlvbikKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGlu
c3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJs
ZUFkZHJlc3MoKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjptYXhK
dW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBwYXRj
aGFibGVKdW1wU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpwYXRj
aGFibGVKdW1wU2l6ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRp
bmdQb2ludFJvdW5kaW5nKCkKKyAgICB7CisgICAgICAgIGlmIChzX3NzZTRfMUNoZWNrU3RhdGUg
PT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQorICAgICAgICAgICAgdXBkYXRlRWF4MUVj
eEZsYWdzKCk7CisgICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVj
a1N0YXRlOjpTZXQ7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNBVlgoKQorICAg
IHsKKyAgICAgICAgLy8gQVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3VzIHJlZ3Jlc3Npb25zIGFu
ZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4gYmUgbWFzc2l2ZS4KKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hGbGFncygpCisgICAgewor
ICAgICAgICBpbnQgZmxhZ3MgPSAwOworI2lmIENPTVBJTEVSKE1TVkMpCisgICAgICAgIGludCBj
cHVJbmZvWzRdOworICAgICAgICBfX2NwdWlkKGNwdUluZm8sIDB4MSk7CisgICAgICAgIGZsYWdz
ID0gY3B1SW5mb1syXTsKKyNlbGlmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyNpZiBDUFUoWDg2
XzY0KQorICAgICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgorICAg
ICAgICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCisgICAgICAg
ICAgICA6ICI9ZyIgKGZsYWdzKQorICAgICAgICAgICAgOgorICAgICAgICAgICAgOiAiJWVheCIs
ICIlZWJ4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICk7CisjZWxzZQorICAgICAgICBh
c20gKAorICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgorICAgICAgICAgICAgInB1c2hs
ICUlZWJ4OyIKKyAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAgICAicG9wbCAlJWVieDsi
CisgICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAgICAgICAgICAgOiAiPWciIChmbGFn
cykKKyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVlYXgiLCAiJWVjeCIsICIlZWR4Igor
ICAgICAgICAgICAgKTsKKyNlbmRpZgogI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19PUl9DTEFORykK
ICAgICAgICAgc19zc2U0XzFDaGVja1N0YXRlID0gKGZsYWdzICYgKDEgPDwgMTkpKSA/IENQVUlE
Q2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKICAgICAgICAgc19hdnhD
aGVja1N0YXRlID0gKGZsYWdzICYgKDEgPDwgMjgpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDog
Q1BVSURDaGVja1N0YXRlOjpDbGVhcjsKQEAgLTI4MzMsNiArMzkzNSwxOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29u
ZCk7CiAgICAgfQogCisgICAgWDg2QXNzZW1ibGVyOjpDb25kaXRpb24geDg2Q29uZGl0aW9uKFN0
YXR1c0NvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kKSB7CisgICAg
ICAgIGNhc2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRp
dGlvbkU7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAgIHJldHVybiBYODZBc3Nl
bWJsZXI6OkNvbmRpdGlvbk5FOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkU7Cisg
ICAgfQorCiAgICAgdm9pZCBzZXQzMihYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogI2lmIENQVShYODYpCkBAIC0yOTI3LDYgKzQwNDEsMzUgQEAg
cHJvdGVjdGVkOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihzaXplT2ZSZWdpc3RlciksIGRz
dCk7CiAgICAgICAgIHNyY0lzTm9uWmVyby5saW5rKHRoaXMpOwogICAgIH0KKyAgICAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTKFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIHJl
c3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRS
ZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lz
dGVyczo6ZWF4KTsKKyAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNvbmQpLCByZXN1bHQpOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBhdG9taWNTdHJv
bmdDQVMoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAg
ICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3
YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTKFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBjb25zdCBG
dW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVn
aXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGZ1bmMo
KTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOwor
ICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7
CisgICAgfQogCiBwcml2YXRlOgogICAgIC8vIE9ubHkgTWFjcm9Bc3NlbWJsZXJYODYgc2hvdWxk
IGJlIHVzaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kOyBTU0UyIGlzIGFsd2F5cyBhdmFpbGFibGUg
b24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2NCwxMSArMjY0LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAg
dm9pZCBhZGQ2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5hZGRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNy
Yy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9ybShzcmMsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYWRkNjQoUmVnaXN0ZXJJ
RCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9y
bShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKwogICAgIHZvaWQgYWRkNjQoQWJzb2x1dGVBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNyYy5tX3B0ciksIHNjcmF0
Y2hSZWdpc3RlcigpKTsKQEAgLTMwNiw2ICszMTYsMTQgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYWRkcV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuaW5jcV9tKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5hZGRxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFk
ZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIo
KSk7CkBAIC0zNDIsMTEgKzM2MCw0MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFu
ZHFfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRx
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwg
ZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX21yKHNyYy5vZmZzZXQsIHNy
Yy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBh
bmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5hbmRxX2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2ltKGltbS5tX3ZhbHVlLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisK
ICAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAg
ICAgewogICAgICAgICBpbnRwdHJfdCBpbnRWYWx1ZSA9IGltbS5hc0ludHB0cigpOwpAQCAtNTUy
LDExICs2MDAsNTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX3IoZGVzdCk7
CiAgICAgfQogCisgICAgdm9pZCBuZWc2NChBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5uZWdxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAg
dm9pZCBuZWc2NChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5l
Z3FfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAg
ICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ycihzcmMsIGRlc3QpOwogICAgIH0KIAorICAg
IHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIub3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQor
CisgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRl
c3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3I2NChBZGRyZXNzIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX21yKHNy
Yy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoQmFzZUlu
ZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3Jx
X21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7Cisg
ICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX2ltKGltbS5tX3Zh
bHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAg
ICB9CisKICAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTY0IGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0
KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpCkBAIC02MTksMTYgKzcwNywzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
YXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ltKGltbS5tX3ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNyYy5vZmZzZXQsIHNyYy5i
YXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KEJhc2VJbmRleCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfbXIoc3JjLm9mZnNl
dCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2
b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQog
CisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwg
ZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3I2NChSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9y
cV9ycihzcmMsIGRlc3QpOwpAQCAtNjUxLDYgKzc1NCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
YXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAK
KyAgICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBk
ZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KEFkZHJlc3Mg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KEJh
c2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhvcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0
KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JxX2lt
KGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaXIoaW1tLm1fdmFs
dWUsIHNyY0Rlc3QpOwpAQCAtNjY2LDYgKzc5NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm5vdHFfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lk
IG5vdDY0KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90cV9t
KGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KwogICAgIHZvaWQgbG9hZDY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGRlc3QpOwpAQCAtNzI1LDYgKzg1OCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92cV9pMzJtKGlt
bS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0IGlt
bSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzMyXzY0KGltbS5tX3ZhbHVlKSkgewpAQCAtMTI5NCw3ICsxNDMyLDI3NSBAQCBwdWJs
aWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKFRydXN0ZWRJbW1QdHIo
YWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdp
c3RlcigpKSwgbWFzazgpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1
bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQogCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2
NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBy
ZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7Cisg
ICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVy
LmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7
CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJy
YW5jaEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRv
bWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAg
ICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9u
Z0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVz
dWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
YXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzY0
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM2
NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBy
ZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFr
Q0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBh
dG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM2NChj
b25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7Cisg
ICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRv
bWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRy
ZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdW
YWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNBZGQ2NChUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFkZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2NChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBzdWI2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1N1YjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2
NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFRydXN0
ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYW5kNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNBbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChSZWdpc3RlcklEIHJlZywg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0Fu
ZDY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChpbW0s
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNPcjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgeG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNYb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNOZWc2NChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY05lZzY0KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc2NChhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNOb3Q2NChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY05vdDY0KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q2NChhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYY2hnQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueGFkZHFfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fz
c2VtYmxlci54YWRkcV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hj
aGc2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hj
aGc2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBsb2FkQWNxNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbG9hZDY0KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVS
ZWw2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU2
NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJ
RCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU2NChzcmMsIGRlc3Qp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRk
cmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU2NChpbW0sIGRlc3QpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3Qp
CisgICAgeworICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQorICAgIAogICAgIHZv
aWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5jdnR0c2Qyc2lxX3JyKHNyYywgZGVzdCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MCwxNiArMTkwLDIwIEBAIHByaXZh
dGU6CiAgICAgICAgIE9QX0FERF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDAxLAogICAg
ICAgICBPUF9BRERfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgwMywKICAgICAgICAgT1Bf
QUREX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MDUsCisgICAgICAgIE9QX09SX0V2R2Ig
ICAgICAgICAgICAgICAgICAgICAgPSAweDA4LAogICAgICAgICBPUF9PUl9Fdkd2ICAgICAgICAg
ICAgICAgICAgICAgID0gMHgwOSwKICAgICAgICAgT1BfT1JfR3ZFdiAgICAgICAgICAgICAgICAg
ICAgICA9IDB4MEIsCiAgICAgICAgIE9QX09SX0VBWEl2ICAgICAgICAgICAgICAgICAgICAgPSAw
eDBELAogICAgICAgICBPUF8yQllURV9FU0NBUEUgICAgICAgICAgICAgICAgID0gMHgwRiwKKyAg
ICAgICAgT1BfQU5EX0V2R2IgICAgICAgICAgICAgICAgICAgICA9IDB4MjAsCiAgICAgICAgIE9Q
X0FORF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDIxLAogICAgICAgICBPUF9BTkRfR3ZF
diAgICAgICAgICAgICAgICAgICAgID0gMHgyMywKKyAgICAgICAgT1BfU1VCX0V2R2IgICAgICAg
ICAgICAgICAgICAgICA9IDB4MjgsCiAgICAgICAgIE9QX1NVQl9Fdkd2ICAgICAgICAgICAgICAg
ICAgICAgPSAweDI5LAogICAgICAgICBPUF9TVUJfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0g
MHgyQiwKICAgICAgICAgT1BfU1VCX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MkQsCiAg
ICAgICAgIFBSRV9QUkVESUNUX0JSQU5DSF9OT1RfVEFLRU4gICAgPSAweDJFLAorICAgICAgICBP
UF9YT1JfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgzMCwKICAgICAgICAgT1BfWE9SX0V2
R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MzEsCiAgICAgICAgIE9QX1hPUl9HdkV2ICAgICAg
ICAgICAgICAgICAgICAgPSAweDMzLAogICAgICAgICBPUF9YT1JfRUFYSXYgICAgICAgICAgICAg
ICAgICAgID0gMHgzNSwKQEAgLTIyMyw2ICsyMjcsNyBAQCBwcml2YXRlOgogICAgICAgICBPUF9H
Uk9VUDFfRXZJYiAgICAgICAgICAgICAgICAgID0gMHg4MywKICAgICAgICAgT1BfVEVTVF9FYkdi
ICAgICAgICAgICAgICAgICAgICA9IDB4ODQsCiAgICAgICAgIE9QX1RFU1RfRXZHdiAgICAgICAg
ICAgICAgICAgICAgPSAweDg1LAorICAgICAgICBPUF9YQ0hHX0V2R2IgICAgICAgICAgICAgICAg
ICAgID0gMHg4NiwKICAgICAgICAgT1BfWENIR19Fdkd2ICAgICAgICAgICAgICAgICAgICA9IDB4
ODcsCiAgICAgICAgIE9QX01PVl9FYkdiICAgICAgICAgICAgICAgICAgICAgPSAweDg4LAogICAg
ICAgICBPUF9NT1ZfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHg4OSwKQEAgLTI1Miw2ICsy
NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBQUkVfU1NFX0YyICAgICAgICAgICAgICAgICAgICAg
ID0gMHhGMiwKICAgICAgICAgUFJFX1NTRV9GMyAgICAgICAgICAgICAgICAgICAgICA9IDB4RjMs
CiAgICAgICAgIE9QX0hMVCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweEY0LAorICAgICAg
ICBPUF9HUk9VUDNfRWIgICAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAgT1BfR1JP
VVAzX0ViSWIgICAgICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9QX0dST1VQM19FdiAg
ICAgICAgICAgICAgICAgICAgPSAweEY3LAogICAgICAgICBPUF9HUk9VUDNfRXZJeiAgICAgICAg
ICAgICAgICAgID0gMHhGNywgLy8gT1BfR1JPVVAzX0V2IGhhcyBhbiBpbW1lZGlhdGUsIHdoZW4g
aW5zdHJ1Y3Rpb24gaXMgYSB0ZXN0LiAKQEAgLTI5MCw2ICsyOTYsOCBAQCBwcml2YXRlOgogICAg
ICAgICBPUF9TRVRDQyAgICAgICAgICAgID0gMHg5MCwKICAgICAgICAgT1AyXzNCWVRFX0VTQ0FQ
RV9BRSA9IDB4QUUsCiAgICAgICAgIE9QMl9JTVVMX0d2RXYgICAgICAgPSAweEFGLAorICAgICAg
ICBPUDJfQ01QWENIR2IgICAgICAgID0gMHhCMCwKKyAgICAgICAgT1AyX0NNUFhDSEcgICAgICAg
ICA9IDB4QjEsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkViICAgICAgPSAweEI2LAogICAgICAgICBP
UDJfQlNGICAgICAgICAgICAgID0gMHhCQywKICAgICAgICAgT1AyX1RaQ05UICAgICAgICAgICA9
IDB4QkMsCkBAIC0yOTgsNiArMzA2LDggQEAgcHJpdmF0ZToKICAgICAgICAgT1AyX01PVlNYX0d2
RWIgICAgICA9IDB4QkUsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkV3ICAgICAgPSAweEI3LAogICAg
ICAgICBPUDJfTU9WU1hfR3ZFdyAgICAgID0gMHhCRiwKKyAgICAgICAgT1AyX1hBRERiICAgICAg
ICAgICA9IDB4QzAsCisgICAgICAgIE9QMl9YQUREICAgICAgICAgICAgPSAweEMxLAogICAgICAg
ICBPUDJfUEVYVFJXX0dkVWRJYiAgID0gMHhDNSwKICAgICAgICAgT1AyX1BTTExRX1VkcUliICAg
ICA9IDB4NzMsCiAgICAgICAgIE9QMl9QU1JMUV9VZHFJYiAgICAgPSAweDczLApAQCAtNDQwLDYg
KzQ1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BRERf
R3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGFkZGxfbXIo
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUs
IFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0FERF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAg
CiAjaWYgIUNQVShYODZfNjQpCiAgICAgdm9pZCBhZGRsX21yKGNvbnN0IHZvaWQqIGFkZHIsIFJl
Z2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTU2MiwxMSArNTc3LDIxIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0
KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9
CiAKKyAgICB2b2lkIGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9pcihpbnQgaW1tLCBSZWdpc3RlcklE
IGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBA
IC01OTEsNiArNjE2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGFkZHFfaW0oaW50IGlt
bSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9P
UF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQURELCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUz
MihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2b2lkIGFkZGxfaW0oaW50IGlt
bSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC02MTQsMTEgKzY1MCw0MyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgYW5kbF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAg
fQogCisgICAgdm9pZCBhbmRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFuZGxfcm0oc3JjLCBvZmZzZXQsIGJhc2Up
OworICAgIH0KKworICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFuZGxf
cm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBh
bmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfaXIoaW50IGlt
bSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgewpAQCAtNjQxLDYgKzcwOSw1MyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9
CiAKKyAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXos
IEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2
b2lkIGFuZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9V
UDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kd19pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDFfRWJJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgYW5kYl9pbShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JP
VVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lk
IGFuZHFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTY1Nyw2
ICs3NzIsNDggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIo
aW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisK
KyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lk
IGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQ
MV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB2b2lkIGFuZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vs
c2UKICAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBA
IC03MDMsNiArODYwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CisKKyAgICB2b2lkIGluY3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgIH0KICNlbmRpZiAvLyBDUFUoWDg2XzY0KQogCiAgICAgdm9pZCBuZWdsX3Io
UmVnaXN0ZXJJRCBkc3QpCkBAIC03MTUsNiArODc3LDE2IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05FRywg
ZHN0KTsKICAgICB9CisKKyAgICB2b2lkIG5lZ3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYs
IEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBuZWdxX20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdS
T1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYK
IAogICAgIHZvaWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKQEAgLTcyMiw2
ICs4OTQsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQg
bmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19F
diwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVnbF9t
KG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWd3X20oaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5lZ2xfbShv
ZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWdiX20oaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CisKKyAgICB2b2lkIG5lZ2JfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CisKICAgICB2b2lkIG5vdGxfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGRz
dCk7CkBAIC03MzIsNiArOTMxLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9
CiAKKyAgICB2b2lkIG5vdGxfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIG5vdGxfbShvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90d19tKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICBub3RsX20ob2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZv
aWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2UsIG9m
ZnNldCk7CisgICAgfQorCisgICAgdm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIG5vdHFf
cihSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC03NDIsNiArOTY4LDExIEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAz
X09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CisKKyAgICB2b2lkIG5vdHFfbShpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09Q
X05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAg
dm9pZCBvcmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtNzU0LDExICs5
ODUsNDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfR3ZF
diwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX21yKGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9HdkV2
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIG9y
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFzZSwgb2Zm
c2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcndfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgb3JsX3JtKHNyYywgb2Zmc2V0
LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfaXIoaW50IGlt
bSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgewpAQCAtNzg0LDEyICsxMDQ3LDEwMSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICB2b2lkIG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6
LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2
b2lkIG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGlm
IChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAx
X09QX09SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb3J3X2ltKGludCBpbW0sIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdm9pZCBvcmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkli
LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX09S
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgb3JxX3JyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9y
cV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNlLCBv
ZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0d2RXYsIGRzdCwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAg
fQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMy
KGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBvZmZz
ZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHZvaWQgb3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dS
T1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9
CisKICAgICB2b2lkIG9ycV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAg
ICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC04MzEsMTEgKzExODMsNDMg
QEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYsIGRz
dCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YmxfbXIoaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQg
ZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9HdkV2LCBk
c3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1Ymxf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZz
ZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vid19ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lk
IHN1Yndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
U1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAg
IHZvaWQgc3ViYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBzcmMs
IGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHYiwgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJsX2ly
KGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VY
VEVORF84XzMyKGltbSkpIHsKQEAgLTg2MSw2ICsxMjQ1LDUzIEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KIAorICAgIHZvaWQgc3VibF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlm
IChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZvaWQgc3Vid19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdWJ3X2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5E
X1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VC
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOworICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9F
YkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQog
ICAgIHZvaWQgc3VicV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpA
QCAtODcyLDExICsxMzAzLDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lk
IHN1YnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgIH0KKwogICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
U1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YnFfcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwog
ICAgIHZvaWQgc3VicV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC05MDEsNiArMTM0MiwxNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAgICAg
ICB9CiAgICAgfQorCisgICAgdm9pZCBzdWJxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQor
ICAgIH0KICNlbHNlCiAgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIp
CiAgICAgewpAQCAtOTI0LDExICsxMzc2LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisg
ICAgdm9pZCB4b3JsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9YT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcmxf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX1hPUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
ICAgICB2b2lkIHhvcmxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQog
ICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTk0MCw2
ICsxNDAyLDc1IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgeG9ybF9p
bShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0p
KSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdS
T1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yd19ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICB4b3JsX3JtKHNyYywg
b2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcndfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwor
ICAgICAgICB4b3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0K
KworICAgIHZvaWQgeG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3X2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5E
X1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9S
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfWE9SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0Vi
SWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcmJfaW0oaW50IGltbSwgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9P
UF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogICAgIHZvaWQgeG9ybF9pcihpbnQgaW1tLCBSZWdp
c3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0p
KSB7CkBAIC05NzQsMTEgKzE1MDUsNDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAg
IAorICAgIHZvaWQgeG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9Y
T1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJ
eiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
ICAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9Fdkd2
LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4b3JxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9F
dkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lk
IHhvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfR3ZFdiwgZGVzdCwg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcnFfbXIoaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2LCBk
ZXN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2
b2lkIGx6Y250X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTE1ODYsMTEg
KzIxNTMsMzggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X1hDSEdfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgeGNoZ2Jfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNo
Z3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4
KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENI
R19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2
b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMs
IGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnbF9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBz
cmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0
KQogICAgIHZvaWQgeGNoZ3FfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAg
IHsKQEAgLTE2MDYsNiArMjIwMCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9
CisKKyAgICB2b2lkIHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG1vdmxfcnIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTczMSw2ICsyMzMwLDIwIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRXZHdiwgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBtb3Z3X2ltKGludCBpbW0sIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnBy
ZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCisgICAgdm9pZCBtb3Z3X2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxMV9Fdkl6LCBHUk9VUDEx
X01PViwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGlhdGUxNihpbW0pOworICAgIH0KKwogICAgIHZvaWQgbW92bF9FQVhtKGNvbnN0IHZvaWQq
IGFkZHIpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX092RUFY
KTsKQEAgLTE4MDAsNiArMjQxMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTMyKGltbSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX2kzMm0oaW50IGltbSwgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDExX0V2SXosIEdS
T1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZxX2k2NHIoaW50NjRf
dCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfTU9WX0VBWEl2LCBkc3QpOwpAQCAtMjc4MSw2ICszNDAwLDkwIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9MT0NLKTsKICAgICB9CiAgICAgCisgICAg
dm9pZCBjbXB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01QWENIR2Is
IHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnYl9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9Q
Ml9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFO
RF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hHLCBzcmMs
IGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5E
X1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhj
aGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNy
YywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNt
cHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3JjLCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9DTVBY
Q0hHLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNyYywg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQUREYiwg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
eGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29C
eXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCB4YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHhhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChP
UDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRx
X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVP
cDY0KE9QMl9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9Cisg
ICAgCiAgICAgdm9pZCBtZmVuY2UoKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudGhyZWVC
eXRlT3AoT1AyXzNCWVRFX0VTQ0FQRV9BRSwgT1AzX01GRU5DRSk7CkBAIC0zNzU3LDYgKzQ0NjAs
MjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKGdyb3VwT3As
IHJtKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bjb2Rl
SUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1
ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChy
ZWcsIGJhc2UpLCByZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNo
ZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVj
a2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBv
ZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNv
ZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0
cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVy
LmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCByZWdSZXF1aXJlc1JleChpbmRl
eCwgYmFzZSksIHJlZywgaW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBJbW1lZGlh
dGVzOgogICAgICAgICAvLwogICAgICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFwcGVu
ZGVkIHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFs
dWUuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgeworCitBdG9taWNWYWx1ZTo6fkF0b21pY1ZhbHVlKCkKK3sKK30KKwordm9pZCBBdG9taWNW
YWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKK3sKKyAgICBvdXQucHJpbnQoY29tbWEsICJ3aWR0aCA9ICIsIG1fd2lkdGgpOworICAgIAor
ICAgIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShjb21tYSwgb3V0KTsKK30KKworVmFsdWUqIEF0b21p
Y1ZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAoreworICAgIHJldHVybiBuZXcgQXRvbWljVmFsdWUo
KnRoaXMpOworfQorCitBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4g
b3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQz
Ml90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKKyAgICA6
IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIG9wZXJhbmQtPnR5cGUoKSwgb3JpZ2lu
LCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlLCBvcGVyYW5kLCBwb2ludGVyKQorICAgICwgbV93
aWR0aCh3aWR0aCkKK3sKKyAgICBBU1NFUlQoYmVzdFR5cGUoR1AsIGFjY2Vzc1dpZHRoKCkpID09
IGFjY2Vzc1R5cGUoKSk7CisgICAgCisgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAg
Y2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0
b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hn
WG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCitBdG9taWNWYWx1ZTo6
QXRvbWljVmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUq
IGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qg
b2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIDogTWVt
b3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwga2luZC5vcGNvZGUoKSA9PSBBdG9taWNXZWFr
Q0FTID8gSW50MzIgOiBleHBlY3RlZFZhbHVlLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCByYW5n
ZSwgZmVuY2VSYW5nZSwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUsIHBvaW50ZXIpCisgICAgLCBt
X3dpZHRoKHdpZHRoKQoreworICAgIEFTU0VSVChiZXN0VHlwZShHUCwgYWNjZXNzV2lkdGgoKSkg
PT0gYWNjZXNzVHlwZSgpKTsKKworICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNh
c2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
fQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNp
bmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQXRvbWlj
VmFsdWUgOiBwdWJsaWMgTWVtb3J5VmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIGFj
Y2VwdHMoS2luZCBraW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzQXRvbWljKGtpbmQub3Bj
b2RlKCkpOworICAgIH0KKyAgICAKKyAgICB+QXRvbWljVmFsdWUoKTsKKyAgICAKKyAgICBUeXBl
IGFjY2Vzc1R5cGUoKSBjb25zdCB7IHJldHVybiBjaGlsZCgwKS0+dHlwZSgpOyB9CisgICAgCisg
ICAgV2lkdGggYWNjZXNzV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIAorICAgIFZhbHVlKiBjbG9uZUltcGwoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICAKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKKyAgICAK
KyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFs
dWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJh
bmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKTsKKyAg
ICAKKyAgICBBdG9taWNWYWx1ZShLaW5kLCBPcmlnaW4sIFdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRW
YWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAw
LCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5n
ZSA9IEhlYXBSYW5nZTo6dG9wKCkpOworICAgIAorICAgIFdpZHRoIG1fd2lkdGg7Cit9OworCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIxMzQy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiBjbGFzcyBJ
bnNlcnRpb25TZXQ7CiBjbGFzcyBQcm9jZWR1cmU7CiBjbGFzcyBWYWx1ZTsKK3RlbXBsYXRlPHR5
cGVuYW1lPiBjbGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CiAKIGNsYXNzIEJhc2ljQmxv
Y2sgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhc2ljQmxvY2spOwpAQCAtMTU4LDYgKzE1
OSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogICAg
IGZyaWVuZCBjbGFzcyBJbnNlcnRpb25TZXQ7CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlv
blNldDsKICAgICAKICAgICAvLyBJbnN0YW50aWF0ZSB2aWEgUHJvY2VkdXJlLgogICAgIEJhc2lj
QmxvY2sodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24g
MjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDM1ICszNiwxMyBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7CiAKIEJsb2NrSW5zZXJ0aW9uU2V0OjpCbG9ja0luc2VydGlvblNldChQcm9jZWR1
cmUgJnByb2MpCi0gICAgOiBtX3Byb2MocHJvYykKKyAgICA6IEdlbmVyaWNCbG9ja0luc2VydGlv
blNldChwcm9jLm1fYmxvY2tzKQorICAgICwgbV9wcm9jKHByb2MpCiB7CiB9CiAKIEJsb2NrSW5z
ZXJ0aW9uU2V0Ojp+QmxvY2tJbnNlcnRpb25TZXQoKSB7IH0KIAotdm9pZCBCbG9ja0luc2VydGlv
blNldDo6aW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5zZXJ0aW9uKQotewotICAgIG1faW5zZXJ0
aW9ucy5hcHBlbmQoV1RGTW92ZShpbnNlcnRpb24pKTsKLX0KLQotQmFzaWNCbG9jayogQmxvY2tJ
bnNlcnRpb25TZXQ6Omluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSkKLXsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3IEJhc2ljQmxvY2soVUlO
VF9NQVgsIGZyZXF1ZW5jeSkpOwotICAgIEJhc2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdldCgp
OwotICAgIGluc2VydChCbG9ja0luc2VydGlvbihpbmRleCwgV1RGTW92ZShibG9jaykpKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5z
ZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICBy
ZXR1cm4gaW5zZXJ0KGJlZm9yZS0+aW5kZXgoKSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZy
ZXF1ZW5jeSA6IGJlZm9yZS0+ZnJlcXVlbmN5KCkpOwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0lu
c2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVu
Y3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChhZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5jeSA9
PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBhZnRlci0+ZnJlcXVlbmN5KCkpOwotfQotCiBCYXNp
Y0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3YXJkKAogICAgIEJhc2ljQmxvY2sq
IGJsb2NrLCB1bnNpZ25lZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0KiBpbnNlcnRpb25TZXQs
IGRvdWJsZSBmcmVxdWVuY3kpCiB7CkBAIC0xMDIsMzIgKzgwLDYgQEAgQmFzaWNCbG9jayogQmxv
Y2tJbnNlcnRpb25TZXQ6OnNwbGl0Rm9ydwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wg
QmxvY2tJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoKQotewotICAgIGlmIChtX2luc2VydGlvbnMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgLy8gV2UgYWxsb3cgaW5z
ZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3JkZXIuIFNvLCB3ZSBuZWVkIHRvIHNv
cnQgdGhlbSBiZWZvcmUKLSAgICAvLyBydW5uaW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMuIFdl
IHN0cm9uZ2x5IHByZWZlciBhIHN0YWJsZSBzb3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCi0gICAg
Ly8gZmFzdCwgc28gd2UgdXNlIGJ1YmJsZSBzb3J0LgotICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRp
b25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7Ci0KLSAgICBleGVjdXRlSW5zZXJ0aW9u
cyhtX3Byb2MubV9ibG9ja3MsIG1faW5zZXJ0aW9ucyk7Ci0gICAgCi0gICAgLy8gUHJ1bmUgb3V0
IGVtcHR5IGVudHJpZXMuIFRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzCi0g
ICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KLSAgICBt
X3Byb2MubV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCi0gICAgICAgIFsmXSAoc3RkOjp1bmlx
dWVfcHRyPEJhc2ljQmxvY2s+JiBibG9ja1B0cikgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1
cm4gIWJsb2NrUHRyOwotICAgICAgICB9KTsKLSAgICAKLSAgICAvLyBNYWtlIHN1cmUgdGhhdCB0
aGUgYmxvY2tzIGtub3cgdGhlaXIgbmV3IGluZGljZXMuCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fcHJvYy5tX2Jsb2Nrcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9wcm9jLm1fYmxv
Y2tzW2ldLT5tX2luZGV4ID0gaTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCShyZXZpc2lv
biAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJ
VCkKIAorI2luY2x1ZGUgIkIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAi
QjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtMzUsMjYgKzM2LDEzIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgewogCiBjbGFzcyBJbnNlcnRpb25TZXQ7CiAKLXR5cGVkZWYgV1RGOjpJbnNlcnRpb248c3Rk
Ojp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBCbG9ja0luc2VydGlvbjsKK3R5cGVkZWYgR2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+OjpCbG9ja0luc2VydGlvbiBCbG9ja0luc2Vy
dGlvbjsKIAotY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgeworY2xhc3MgQmxvY2tJbnNlcnRpb25T
ZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+IHsKIHB1Ymxp
YzoKICAgICBCbG9ja0luc2VydGlvblNldChQcm9jZWR1cmUmKTsKICAgICB+QmxvY2tJbnNlcnRp
b25TZXQoKTsKICAgICAKLSAgICB2b2lkIGluc2VydChCbG9ja0luc2VydGlvbiYmKTsKLQotICAg
IC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGluZGV4LgotICAgIEJhc2ljQmxvY2sq
IGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCi0gICAg
Ly8gSW5zZXJ0cyBhIG5ldyBibG9jayBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlv
dSB3aWxsIG5vdCBwYXNzIHRoZSBmcmVxdWVuY3kKLSAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQ
TmFOIGNhdXNlcyB1cyB0byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBi
bG9jay4gVGhhdCdzCi0gICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3YW50LgotICAgIEJhc2ljQmxv
Y2sqIGluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQ
TmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYWZ0ZXIgdGhlIGdpdmVuIGJsb2Nr
LgotICAgIEJhc2ljQmxvY2sqIGluc2VydEFmdGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUg
ZnJlcXVlbmN5ID0gUE5hTik7Ci0KICAgICAvLyBBIGhlbHBlciB0byBzcGxpdCBhIGJsb2NrIHdo
ZW4gZm9yd2FyZCBpdGVyYXRpbmcgb3ZlciBpdC4gSXQgY3JlYXRlcyBhIG5ldyBibG9jayB0byBo
b2xkCiAgICAgLy8gZXZlcnl0aGluZyBiZWZvcmUgdGhlIGluc3RydWN0aW9uIGF0IHZhbHVlSW5k
ZXguIFRoZSBjdXJyZW50IGJsb2NrIGlzIGxlZnQgd2l0aAogICAgIC8vIGV2ZXJ5dGhpbmcgYXQg
YW5kIGFmdGVyIHZhbHVlSW5kZXguIElmIHRoZSBvcHRpb25hbCBJbnNlcnRpb25TZXQgaXMgcHJv
dmlkZWQsIGl0IHdpbGwgZ2V0CkBAIC04MCwxMiArNjgsOSBAQCBwdWJsaWM6CiAgICAgQmFzaWNC
bG9jayogc3BsaXRGb3J3YXJkKAogICAgICAgICBCYXNpY0Jsb2NrKiwgdW5zaWduZWQmIHZhbHVl
SW5kZXgsIEluc2VydGlvblNldCogPSBudWxscHRyLAogICAgICAgICBkb3VibGUgZnJlcXVlbmN5
ID0gUE5hTik7Ci0gICAgCi0gICAgYm9vbCBleGVjdXRlKCk7CiAKIHByaXZhdGU6CiAgICAgUHJv
Y2VkdXJlJiBtX3Byb2M7Ci0gICAgVmVjdG9yPEJsb2NrSW5zZXJ0aW9uLCA4PiBtX2luc2VydGlv
bnM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0VmZmVjdHMuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgyLDcgKzgyLDgg
QEAgYm9vbCBFZmZlY3RzOjppbnRlcmZlcmVzKGNvbnN0IEVmZmVjdHMmIAogICAgICAgICB8fCBp
bnRlcmZlcmVzV2l0aFdyaXRlc1Bpbm5lZChvdGhlciwgKnRoaXMpCiAgICAgICAgIHx8IHdyaXRl
cy5vdmVybGFwcyhvdGhlci53cml0ZXMpCiAgICAgICAgIHx8IHdyaXRlcy5vdmVybGFwcyhvdGhl
ci5yZWFkcykKLSAgICAgICAgfHwgcmVhZHMub3ZlcmxhcHMob3RoZXIud3JpdGVzKTsKKyAgICAg
ICAgfHwgcmVhZHMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQorICAgICAgICB8fCAoZmVuY2UgJiYg
b3RoZXIuZmVuY2UpOwogfQogCiBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0
cyYgb3RoZXIpIGNvbnN0CkBAIC05NSw3ICs5Niw4IEBAIGJvb2wgRWZmZWN0czo6b3BlcmF0b3I9
PShjb25zdCBFZmZlY3RzJiAKICAgICAgICAgJiYgd3JpdGVzUGlubmVkID09IG90aGVyLndyaXRl
c1Bpbm5lZAogICAgICAgICAmJiByZWFkc1Bpbm5lZCA9PSBvdGhlci5yZWFkc1Bpbm5lZAogICAg
ICAgICAmJiB3cml0ZXMgPT0gb3RoZXIud3JpdGVzCi0gICAgICAgICYmIHJlYWRzID09IG90aGVy
LnJlYWRzOworICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkcworICAgICAgICAmJiBmZW5j
ZSA9PSBvdGhlci5mZW5jZTsKIH0KIAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvciE9KGNvbnN0IEVm
ZmVjdHMmIG90aGVyKSBjb25zdApAQCAtMTIwLDYgKzEyMiw4IEBAIHZvaWQgRWZmZWN0czo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb24KICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVz
UGlubmVkIik7CiAgICAgaWYgKHJlYWRzUGlubmVkKQogICAgICAgICBvdXQucHJpbnQoY29tbWEs
ICJSZWFkc1Bpbm5lZCIpOworICAgIGlmIChmZW5jZSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAiRmVuY2UiKTsKICAgICBpZiAod3JpdGVzKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJX
cml0ZXM6Iiwgd3JpdGVzKTsKICAgICBpZiAocmVhZHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNFZmZlY3RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzRWZmZWN0cy5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNFZmZlY3RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MSw2ICs3MSwxMCBAQCBzdHJ1
Y3QgRWZmZWN0cyB7CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzE3MwogICAgIGJvb2wgcmVhZHNQaW5uZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgd3Jp
dGVzUGlubmVkIHsgZmFsc2UgfTsKKyAgICAKKyAgICAvLyBNZW1vcnkgZmVuY2VzIGNhbm5vdCBi
ZSByZW9yZGVyZWQgYXJvdW5kIGVhY2ggb3RoZXIgcmVnYXJkbGVzcyBvZiB0aGVpciBlZmZlY3Rz
LiBUaGlzIGlzIGZsYWdnZWQKKyAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIGEgbWVtb3J5IGZl
bmNlLgorICAgIGJvb2wgZmVuY2UgeyBmYWxzZSB9OwogCiAgICAgSGVhcFJhbmdlIHdyaXRlczsK
ICAgICBIZWFwUmFuZ2UgcmVhZHM7CkBAIC04OSw2ICs5Myw3IEBAIHN0cnVjdCBFZmZlY3RzIHsK
ICAgICAgICAgcmVzdWx0LnJlYWRzID0gSGVhcFJhbmdlOjp0b3AoKTsKICAgICAgICAgcmVzdWx0
LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LndyaXRlc1Bpbm5lZCA9IHRydWU7
CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCkBAIC0xMDMsNyArMTA4LDcgQEAgc3RydWN0IEVmZmVjdHMgewogCiAgICAgYm9vbCBt
dXN0RXhlY3V0ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhp
dHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQ7
CisgICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2Fs
U3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZCB8fCBmZW5jZTsKICAgICB9CiAKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgcmVvcmRlcmluZyBpbnN0cnVjdGlvbnMgd2l0aCB0aGVzZSByZXNw
ZWN0aXZlIGVmZmVjdHMgd291bGQgY2hhbmdlIHByb2dyYW0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNz
aW9ucy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDIsNiAr
MTQyLDcgQEAgc3RydWN0IEltcHVyZUJsb2NrRGF0YSB7CiAKICAgICBSYW5nZVNldDxIZWFwUmFu
Z2U+IHJlYWRzOyAvLyBUaGlzIG9ubHkgZ2V0cyB1c2VkIGZvciBmb3J3YXJkIHN0b3JlIGVsaW1p
bmF0aW9uLgogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gd3JpdGVzOyAvLyBUaGlzIGdldHMgdXNl
ZCBmb3IgYm90aCBsb2FkIGFuZCBzdG9yZSBlbGltaW5hdGlvbi4KKyAgICBib29sIGZlbmNlOwog
CiAgICAgTWVtb3J5VmFsdWVNYXAgc3RvcmVzQXRIZWFkOwogICAgIE1lbW9yeVZhbHVlTWFwIG1l
bW9yeVZhbHVlc0F0VGFpbDsKQEAgLTE3NCwxMiArMTc1LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5ICYmIG1lbW9yeS0+aXNTdG9yZSgp
CiAgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLnJlYWRzLm92ZXJsYXBzKG1lbW9yeS0+cmFu
Z2UoKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBzKG1lbW9y
eS0+cmFuZ2UoKSkpCisgICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFw
cyhtZW1vcnktPnJhbmdlKCkpCisgICAgICAgICAgICAgICAgICAgICYmICghZGF0YS5mZW5jZSB8
fCAhbWVtb3J5LT5oYXNGZW5jZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdG9yZXNB
dEhlYWQuYWRkKG1lbW9yeSk7CiAgICAgICAgICAgICAgICAgZGF0YS5yZWFkcy5hZGQoZWZmZWN0
cy5yZWFkcyk7CiAKICAgICAgICAgICAgICAgICBpZiAoSGVhcFJhbmdlIHdyaXRlcyA9IGVmZmVj
dHMud3JpdGVzKQogICAgICAgICAgICAgICAgICAgICBjbG9iYmVyKGRhdGEsIHdyaXRlcyk7Cisg
ICAgICAgICAgICAgICAgZGF0YS5mZW5jZSB8PSBlZmZlY3RzLmZlbmNlOwogCiAgICAgICAgICAg
ICAgICAgaWYgKG1lbW9yeSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlWYWx1ZXNB
dFRhaWwuYWRkKG1lbW9yeSk7CkBAIC00NDUsOCArNDQ4LDYgQEAgcHJpdmF0ZToKICAgICAgICAg
fQogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBkYXRhTG9nKCJCYWQgbWVtb3J5IHZh
bHVlOiAiLCBkZWVwRHVtcChtX3Byb2MsIG1fdmFsdWUpLCAiXG4iKTsKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgIH0KQEAgLTQ3OCw2ICs0NzksOSBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZpbHRlcj4KICAgICBib29sIGZpbmRTdG9yZUFmdGVyQ2xvYmJlcihWYWx1ZSogcHRyLCBI
ZWFwUmFuZ2UgcmFuZ2UsIGNvbnN0IEZpbHRlciYgZmlsdGVyKQogICAgIHsKKyAgICAgICAgaWYg
KG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAKICAgICAgICAgLy8gV2UgY2FuIGVsaW1pbmF0ZSBhIHN0b3Jl
IGlmIGV2ZXJ5IGZvcndhcmQgcGF0aCBoaXRzIGEgc3RvcmUgdG8gdGhlIHNhbWUgbG9jYXRpb24g
YmVmb3JlCiAgICAgICAgIC8vIGhpdHRpbmcgYW55IG9wZXJhdGlvbiB0aGF0IG9ic2VydmVzIHRo
ZSBzdG9yZS4gVGhpcyBzZWFyY2ggc2VlbXMgbGlrZSBpdCBzaG91bGQgYmUKICAgICAgICAgLy8g
ZXhwZW5zaXZlLCBidXQgaW4gdGhlIG92ZXJ3aGVsbWluZyBtYWpvcml0eSBvZiBjYXNlcyBpdCB3
aWxsIGFsbW9zdCBpbW1lZGlhdGVseSBoaXQgYW4gCkBAIC02MTQsNiArNjE4LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygqbV92YWx1ZSwg
IjogbG9va2luZyBiYWNrd2FyZCBmb3IgIiwgKnB0ciwgIi4uLlxuIik7CiAgICAgICAgIAorICAg
ICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpIHsKKyAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHaXZpbmcg
dXAgYmVjYXVzZSBmZW5jZXMuXG4iKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIGlmIChNZW1vcnlWYWx1ZSogbWF0Y2ggPSBtX2RhdGEubWVt
b3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7CiAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgIiwgKm1hdGNoLCAiIGxv
Y2FsbHkuXG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJ
KHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJCM0xvd2Vy
VG9BaXIuaCIKICNpbmNsdWRlICJCM01vdmVDb25zdGFudHMuaCIKICNpbmNsdWRlICJCM1Byb2Nl
ZHVyZS5oIgorI2luY2x1ZGUgIkIzUHVyZUNTRS5oIgogI2luY2x1ZGUgIkIzUmVkdWNlRG91Ymxl
VG9GbG9hdC5oIgogI2luY2x1ZGUgIkIzUmVkdWNlU3RyZW5ndGguaCIKICNpbmNsdWRlICJCM1Rp
bWluZ1Njb3BlLmgiCkBAIC05Miw2ICs5Myw3IEBAIHZvaWQgZ2VuZXJhdGVUb0FpcihQcm9jZWR1
cmUmIHByb2NlZHVyZSwKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MDUwNwogICAgIH0KIAorICAgIC8vIFRoaXMgcHV0cyB0aGUgSVIgaW4gcXVp
cmtzIG1vZGUuCiAgICAgbG93ZXJNYWNyb3MocHJvY2VkdXJlKTsKIAogICAgIGlmIChvcHRMZXZl
bCA+PSAxKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmljQmxvY2tJ
bnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNH
ZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJQ
dXJlTmFOLmgiCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKyNpbmNsdWRlIDx3dGYvSW5z
ZXJ0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsKKworY2xhc3MgSW5zZXJ0aW9uU2V0OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBC
YXNpY0Jsb2NrPgorY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0IHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIFdURjo6SW5zZXJ0aW9uPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4gQmxv
Y2tJbnNlcnRpb247CisgICAgCisgICAgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBibG9ja3MpCisgICAgICAgIDogbV9ibG9ja3Mo
YmxvY2tzKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRp
b24mJiBpbnNlcnRpb24pCisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKFdURk1v
dmUoaW5zZXJ0aW9uKSk7CisgICAgfQorCisgICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEg
Z2l2ZW4gaW5kZXguCisgICAgQmFzaWNCbG9jayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3Vi
bGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNp
Y0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgZnJlcXVlbmN5KSk7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdldCgpOworICAgICAgICBpbnNlcnQoQmxv
Y2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2spKSk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBiZWZvcmUgdGhlIGdpdmVu
IGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNzIHRoZSBmcmVxdWVuY3kKKyAgICAvLyBh
cmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5
IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCisgICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3
YW50LgorICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRv
dWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChiZWZv
cmUtPmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUt
PmZyZXF1ZW5jeSgpKTsKKyAgICB9CisKKyAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVy
IHRoZSBnaXZlbiBibG9jay4KKyAgICBCYXNpY0Jsb2NrKiBpbnNlcnRBZnRlcihCYXNpY0Jsb2Nr
KiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pCisgICAgeworICAgICAgICByZXR1cm4g
aW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1
ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7CisgICAgfQorCisgICAgYm9vbCBleGVjdXRlKCkK
KyAgICB7CisgICAgICAgIGlmIChtX2luc2VydGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgLy8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0
byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3JkZXIuIFNvLCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBi
ZWZvcmUKKyAgICAgICAgLy8gcnVubmluZyBXVEY6OmV4ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJv
bmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBhbmQgd2Ugd2FudCBpdCB0byBiZQorICAgICAgICAv
LyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCisgICAgICAgIGJ1YmJsZVNvcnQobV9pbnNl
cnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7CisgICAgICAgIAorICAgICAgICBl
eGVjdXRlSW5zZXJ0aW9ucyhtX2Jsb2NrcywgbV9pbnNlcnRpb25zKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBUaGlzIGlzbid0IHN0cmljdGx5IG5lY2Vz
c2FyeSBidXQgaXQncworICAgICAgICAvLyBoZWFsdGh5IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3Qg
ZnJvbSBncm93aW5nLgorICAgICAgICBtX2Jsb2Nrcy5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAg
ICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+JiBibG9ja1B0cikgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFibG9ja1B0cjsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJsb2NrcyBrbm93IHRoZWly
IG5ldyBpbmRpY2VzLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3Mu
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX2Jsb2Nrc1tpXS0+bV9pbmRleCA9IGk7CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4mIG1fYmxvY2tzOworICAgIFZlY3RvcjxCbG9j
a0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzSGVhcFJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzSGVhcFJhbmdlLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0hlYXBSYW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg4LDYgKzg4LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KICAgICAKKyAgICBI
ZWFwUmFuZ2Ugb3BlcmF0b3J8KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gSGVhcFJhbmdlKAorICAgICAgICAgICAgc3RkOjptaW4obV9iZWdpbiwg
b3RoZXIubV9iZWdpbiksCisgICAgICAgICAgICBzdGQ6Om1heChtX2VuZCwgb3RoZXIubV9lbmQp
KTsKKyAgICB9CisgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuIG1fYmVnaW4gIT0gbV9lbmQ7IH0KIAogICAgIHVuc2lnbmVkIGJlZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9iZWdpbjsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0
aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNl
cnRpb25TZXQuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsMTEgQEAg
VmFsdWUqIEluc2VydGlvblNldDo6aW5zZXJ0Qm90dG9tKHNpemVfdAogICAgIHJldHVybiBpbnNl
cnRCb3R0b20oaW5kZXgsIGxpa2VWYWx1ZS0+b3JpZ2luKCksIGxpa2VWYWx1ZS0+dHlwZSgpKTsK
IH0KIAorVmFsdWUqIEluc2VydGlvblNldDo6aW5zZXJ0Q2xvbmUoc2l6ZV90IGluZGV4LCBWYWx1
ZSogdmFsdWUpCit7CisgICAgcmV0dXJuIGluc2VydFZhbHVlKGluZGV4LCBtX3Byb2NlZHVyZS5j
bG9uZSh2YWx1ZSkpOworfQorCiB2b2lkIEluc2VydGlvblNldDo6ZXhlY3V0ZShCYXNpY0Jsb2Nr
KiBibG9jaykKIHsKICAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2Vy
dGlvbnMuZW5kKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9u
U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9u
U2V0LmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0lu
c2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAK
ICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVfdCBpbmRleCwgT3JpZ2luLCBUeXBlKTsKICAg
ICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVfdCBpbmRleCwgVmFsdWUqKTsKKyAgICAKKyAgICBW
YWx1ZSogaW5zZXJ0Q2xvbmUoc2l6ZV90IGluZGV4LCBWYWx1ZSopOwogCiAgICAgdm9pZCBleGVj
dXRlKEJhc2ljQmxvY2sqKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTGVn
YWxpemVNZW1vcnlPZmZzZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi0jaW5j
bHVkZSAiQWlyQXJnLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCi0jaW5j
bHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKQEAgLTQ5LDIwICs0OCwxOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHJ1bigpCiAgICAgewotICAgICAgICBpZiAoIWlzQVJNNjQoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQorICAgICAgICAvLyBGSVhNRTogUGVyaGFwcyB0aGlzIHNob3Vs
ZCBiZSBtb3ZlZCB0byBsb3dlck1hY3JvcywgYW5kIHF1aXJrcyBtb2RlIGNhbiBpbXBvc2UgdGhl
IHJlcXVpcmVtZW50CisgICAgICAgIC8vIHRoYXQgdGhlIG9mZnNldCBpcyBsZWdhbC4gQnV0IGZv
ciBub3cgdGhpcyBpcyBzb3J0IG9mIE9LIGJlY2F1c2Ugd2UgcnVuIHB1cmVDU0UgCisgICAgICAg
IAogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBibG9jay0+c2l6ZSgpOyArK2luZGV4
KSB7CiAgICAgICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeVZhbHVlID0gYmxvY2stPmF0
KGluZGV4KS0+YXM8TWVtb3J5VmFsdWU+KCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtZW1vcnlW
YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICBp
bnQzMl90IG9mZnNldCA9IG1lbW9yeVZhbHVlLT5vZmZzZXQoKTsKLSAgICAgICAgICAgICAgICBX
aWR0aCB3aWR0aCA9IG1lbW9yeVZhbHVlLT5hY2Nlc3NXaWR0aCgpOwotICAgICAgICAgICAgICAg
IGlmICghQWlyOjpBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQsIHdpZHRoKSkgeworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICghbWVtb3J5VmFsdWUtPmlzTGVnYWxPZmZz
ZXQobWVtb3J5VmFsdWUtPm9mZnNldCgpKSkgewogICAgICAgICAgICAgICAgICAgICBWYWx1ZSog
YmFzZSA9IG1lbW9yeVZhbHVlLT5sYXN0Q2hpbGQoKTsKLSAgICAgICAgICAgICAgICAgICAgVmFs
dWUqIG9mZnNldFZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQoaW5kZXgs
IG1lbW9yeVZhbHVlLT5vcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgICAgICAgICAgVmFsdWUqIG9mZnNldFZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50
Q29uc3RhbnQoaW5kZXgsIG1lbW9yeVZhbHVlLT5vcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwgbWVt
b3J5VmFsdWUtPm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc29sdmVk
QWRkcmVzcyA9IG1fcHJvYy5hZGQ8VmFsdWU+KEFkZCwgbWVtb3J5VmFsdWUtPm9yaWdpbigpLCBi
YXNlLCBvZmZzZXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydFZhbHVlKGluZGV4LCByZXNvbHZlZEFkZHJlc3MpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yOSwxOSArMjksMjIgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgog
I2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0
aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDYXNlQ29s
bGVjdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKKyNpbmNsdWRl
ICJCM0ZlbmNlVmFsdWUuaCIKICNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKLSNp
bmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29w
ZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1ZS5oIgogI2luY2x1
ZGUgIkIzVXBzaWxvblZhbHVlLmgiCisjaW5jbHVkZSAiQjNVc2VDb3VudHMuaCIKICNpbmNsdWRl
ICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUg
IkxpbmtCdWZmZXIuaCIKQEAgLTU4LDExICs2MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9w
cm9jKHByb2MpCiAgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChwcm9jKQogICAgICAgICAs
IG1faW5zZXJ0aW9uU2V0KHByb2MpCisgICAgICAgICwgbV91c2VDb3VudHMocHJvYykKICAgICB7
CiAgICAgfQogCiAgICAgYm9vbCBydW4oKQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fcHJvYy5oYXNRdWlya3MoKSk7CisgICAgICAgIAogICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IGJsb2NrIDogbV9wcm9jKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAgICAgICAg
ICAgICBwcm9jZXNzQ3VycmVudEJsb2NrKCk7CkBAIC03Miw2ICs3OCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX3Byb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAgICAgIG1fcHJv
Yy5pbnZhbGlkYXRlQ0ZHKCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMg
aW5kaWNhdGVzIHRoYXQgd2UndmUgCisgICAgICAgIG1fcHJvYy5zZXRIYXNRdWlya3ModHJ1ZSk7
CisgICAgICAgIAogICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwogICAgIH0KICAgICAKQEAgLTE4
NSw3ICsxOTUsMTE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1sb2FkIGZlbmNlLiBU
aGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8gdGVsbCB0aGUKKyAg
ICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxvYWQgbW90aW9uLgor
ICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAgICAgICAgICAgICAg
IGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT53
cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1bmxvY2sgYSBidW5j
aCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5y
ZXBsYWNlV2l0aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdD
QVM6IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0
b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgICAgIFdpZHRo
IHdpZHRoID0gYXRvbWljLT5hY2Nlc3NXaWR0aCgpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIGV4cGVj
dGVkVmFsdWUgPSBhdG9taWMtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIC8vIE9uIEFSTSwgdGhlIGxvYWQgcGFydCBvZiB0aGUgQ0FTIGRvZXMgYSBsb2FkIHdp
dGggemVybyBleHRlbnNpb24uIFRoZXJlZm9yZSwgd2UgbmVlZAorICAgICAgICAgICAgICAgIC8v
IHRvIHplcm8tZXh0ZW5kIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFza2Vk
RXhwZWN0ZWRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIGV4cGVjdGVkVmFsdWUsCisgICAg
ICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KG1faW5kZXgs
IGV4cGVjdGVkVmFsdWUsIG1hc2sod2lkdGgpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgYXRvbWljLT5jaGlsZCgwKSA9IG1hc2tlZEV4cGVjdGVkVmFsdWU7CisgICAgICAg
ICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0Fk
ZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIGNhc2UgQXRv
bWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAg
Y2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAg
ICAgICAgICAgICAgLy8gT24gWDg2LCB0aGVzZSBtYXkgYWN0dWFsbHkgcmV0dXJuIGdhcmJhZ2Ug
aW4gdGhlIGhpZ2ggYml0cy4gT24gQVJNNjQsIHRoZXNlIHNvcnRhCisgICAgICAgICAgICAgICAg
Ly8gemVyby1leHRlbmQgdGhlaXIgaGlnaCBiaXRzLCBleGNlcHQgdGhhdCB0aGUgaGlnaCBiaXRz
IG1pZ2h0IGdldCBwb2xsdXRlZCBieSBoaWdoCisgICAgICAgICAgICAgICAgLy8gYml0cyBpbiB0
aGUgb3BlcmFuZC4gLiBTbywgZWl0aGVyIHdheSwgd2UgbmVlZCB0byB0aHJvdyBhIHNpZ24tZXh0
ZW5kIG9uIHRoZXNlCisgICAgICAgICAgICAgICAgLy8gdGhpbmdzLgorICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChtX3ZhbHVlLT5vcGNvZGUoKSA9PSBBdG9taWNYY2hnU3ViICYmIG1fdXNlQ291bnRzLm51bVVz
ZXMobV92YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9uIHg4NiwgeGNoZ2Fk
ZCBpcyBiZXR0ZXIgdGhhbiB4Y2hnc3ViIGlmIGl0IGhhcyBhbnkgdXNlcnMuCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX3ZhbHVlLT5zZXRPcGNvZGVVbnNhZmVseShBdG9taWNYY2hnQWRkKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBO
ZWcsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGJvb2wgZXhlbXB0ID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgICAg
ICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNY
Y2hnU3ViOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAg
ICAgICAgICAgICAgICAgICBleGVtcHQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBp
ZiAoZXhlbXB0KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9t
aWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBXaWR0aCB3
aWR0aCA9IGF0b21pYy0+YWNjZXNzV2lkdGgoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBpZiAoaXNDYW5vbmljYWxXaWR0aCh3aWR0aCkpCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdWYWx1
ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIG1f
aW5kZXgsIHNpZ25FeHRlbmRPcGNvZGUod2lkdGgpLCBtX29yaWdpbiwKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRleCwgYXRvbWljKSk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0
eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGNhc2UgTG9hZDhaOgorICAgICAgICAgICAgY2FzZSBMb2FkMTZaOiB7CisgICAgICAgICAg
ICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBtX3ZhbHVlLT5h
czxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1lbW9yeS0+aGFzRmVuY2Uo
KSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgLy8gU3ViLXdpZHRoIGxvYWQtYWNxIG9uIEFSTTY0IGFsd2F5cyBzaWduIGV4dGVu
ZHMuCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld0xvYWQgPSBtX2luc2VydGlvblNldC5pbnNl
cnRDbG9uZShtX2luZGV4LCBtZW1vcnkpOworICAgICAgICAgICAgICAgIG5ld0xvYWQtPnNldE9w
Y29kZVVuc2FmZWx5KG1lbW9yeS0+b3Bjb2RlKCkgPT0gTG9hZDhaID8gTG9hZDhTIDogTG9hZDE2
Uyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1ZhbHVlID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRl
eCwgQml0QW5kLCBtX29yaWdpbiwgbmV3TG9hZCwKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lu
ZGV4LCBtX29yaWdpbiwgSW50MzIsIG1hc2sobWVtb3J5LT5hY2Nlc3NXaWR0aCgpKSkpOwogCisg
ICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShuZXdWYWx1ZSk7Cisg
ICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00NzAsNiArNTkyLDcgQEAg
cHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKICAgICBCbG9ja0luc2VydGlvblNldCBt
X2Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKKyAg
ICBVc2VDb3VudHMgbV91c2VDb3VudHM7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKICAgICB1
bnNpZ25lZCBtX2luZGV4OwogICAgIFZhbHVlKiBtX3ZhbHVlOwpAQCAtNDc3LDIxICs2MDAsMTIg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hhbmdlZCB7IGZhbHNlIH07CiB9OwogCi1ib29sIGxv
d2VyTWFjcm9zSW1wbChQcm9jZWR1cmUmIHByb2MpCi17Ci0gICAgTG93ZXJNYWNyb3MgbG93ZXJN
YWNyb3MocHJvYyk7Ci0gICAgcmV0dXJuIGxvd2VyTWFjcm9zLnJ1bigpOwotfQotCiB9IC8vIGFu
b255bW91cyBuYW1lc3BhY2UKIAogYm9vbCBsb3dlck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCiB7
Ci0gICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHByb2MsICJsb3dlck1hY3JvcyIpOwotICAgIGJv
b2wgcmVzdWx0ID0gbG93ZXJNYWNyb3NJbXBsKHByb2MpOwotICAgIGlmIChzaG91bGRWYWxpZGF0
ZUlSKCkpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsb3dlck1hY3Jvc0ltcGwocHJvYykpOwot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgTG93ZXJNYWNyb3MgbG93ZXJNYWNyb3MocHJvYyk7Cisg
ICAgcmV0dXJuIGxvd2VyTWFjcm9zLnJ1bigpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1NiwxNSArMTU2LDE0IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBjYXNlIFJvdEw6IHsKICAgICAgICAgICAgICAgICAvLyBBUk02NCBkb2Vzbid0IGhhdmUg
YSByb3RhdGUgbGVmdC4KICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZh
bHVlKiBuZXdTaGlmdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTmVn
LCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9p
bmRleCwgUm90UiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLCBuZXdTaGlm
dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5
KHJvdGF0ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlv
blNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFs
dWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJvdGF0ZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90UiwgbV92YWx1ZS0+b3JpZ2luKCks
IG1fdmFsdWUtPmNoaWxkKDApLCBuZXdTaGlmdCk7CisgICAgICAgICAgICAgICAgICAgIG1fdmFs
dWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocm90YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTIgKzI4LDE0
IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRpb25T
ZXQuaCIKICNpbmNsdWRlICJBaXJDQ2FsbFNwZWNpYWwuaCIKICNpbmNsdWRlICJBaXJDb2RlLmgi
CiAjaW5jbHVkZSAiQWlySW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMu
aCIKICNpbmNsdWRlICJBaXJTdGFja1Nsb3QuaCIKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFs
dWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2Nr
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkIzQ0Nh
bGxWYWx1ZS5oIgpAQCAtNDEsNyArNDMsNyBAQAogI2luY2x1ZGUgIkIzQ29tbXV0YXRpdml0eS5o
IgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzRmVuY2VWYWx1ZS5oIgot
I2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFNwZWNpYWwuaCIKICNpbmNsdWRlICJCM1BhdGNo
cG9pbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgpAQCAtNzIsNiArNzQsMTYg
QEAgbmFtZXNwYWNlIHsKIAogY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKKy8vIEZJWE1F
OiBXZSB3b3VsZG4ndCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRlZCBXaWR0aCBtb2RpZmllcnMg
aW4gQWlyOjpLaW5kLgorLy8gT09QUyEhISAobmVlZCBhIGJ1ZyBVUkwpCisjZGVmaW5lIE9QQ09E
RV9GT1JfV0lEVEgob3Bjb2RlLCB3aWR0aCkgKCBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDggPyBv
cGNvZGUgIyMgOCA6IFwKKyAgICAod2lkdGgpID09IFdpZHRoMTYgPyBvcGNvZGUgIyMgMTYgOiBc
CisgICAgKHdpZHRoKSA9PSBXaWR0aDMyID8gb3Bjb2RlICMjIDMyIDogXAorICAgIG9wY29kZSAj
IyA2NCkKKyNkZWZpbmUgT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgob3Bjb2RlLCB3aWR0aCkg
KCBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDY0ID8gb3Bjb2RlICMjIDY0IDogb3Bjb2RlICMjIDMy
KQorCiBjbGFzcyBMb3dlclRvQWlyIHsKIHB1YmxpYzoKICAgICBMb3dlclRvQWlyKFByb2NlZHVy
ZSYgcHJvY2VkdXJlKQpAQCAtODMsNiArOTUsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fZG9t
aW5hdG9ycyhwcm9jZWR1cmUuZG9taW5hdG9ycygpKQogICAgICAgICAsIG1fcHJvY2VkdXJlKHBy
b2NlZHVyZSkKICAgICAgICAgLCBtX2NvZGUocHJvY2VkdXJlLmNvZGUoKSkKKyAgICAgICAgLCBt
X2Jsb2NrSW5zZXJ0aW9uU2V0KG1fY29kZSkKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQor
ICAgICAgICAsIG1fZWF4KFg4NlJlZ2lzdGVyczo6ZWF4KQorICAgICAgICAsIG1fZWN4KFg4NlJl
Z2lzdGVyczo6ZWN4KQorICAgICAgICAsIG1fZWR4KFg4NlJlZ2lzdGVyczo6ZWR4KQorI2VuZGlm
CiAgICAgewogICAgIH0KIApAQCAtMTI0LDE0ICsxNDIsMTggQEAgcHVibGljOgogICAgICAgICAv
LyBob2lzdGVkIGFkZHJlc3MgZXhwcmVzc2lvbiBiZWZvcmUgd2UgZHVwbGljYXRlIGl0IGJhY2sg
aW50byB0aGUgbG9vcC4KICAgICAgICAgZm9yIChCMzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX3By
b2NlZHVyZS5ibG9ja3NJblByZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9j
azsKLSAgICAgICAgICAgIC8vIFJlc2V0IHNvbWUgc3RhdGUuCi0gICAgICAgICAgICBtX2luc3Rz
LnJlc2l6ZSgwKTsKIAogICAgICAgICAgICAgbV9pc1JhcmUgPSAhbV9mYXN0V29ya2xpc3Quc2F3
KGJsb2NrKTsKIAogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiTG93ZXJpbmcgQmxvY2sgIiwgKmJsb2NrLCAiOlxuIik7CiAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQgdXAgY29y
cmVjdGx5LgorICAgICAgICAgICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6
IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1ti
bG9ja10tPnN1Y2Nlc3NvcnMoKS5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIEFpcjo6RnJl
cXVlbnRlZEJsb2NrKG1fYmxvY2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygpXSwgc3VjY2Vzc29y
LmZyZXF1ZW5jeSgpKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIFByb2Nlc3Mg
YmxvY2tzIGluIHJldmVyc2Ugb3JkZXIgc28gd2Ugc2VlIHVzZXMgYmVmb3JlIGRlZnMuIFRoYXQn
cyB3aGF0IGFsbG93cyB1cwogICAgICAgICAgICAgLy8gdG8gbWF0Y2ggcGF0dGVybnMgZWZmZWN0
aXZlbHkuCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+c2l6ZSgpOyBpLS07
KSB7CkBAIC0xNDksMTkgKzE3MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBOb3cgYXBwZW5kIHRoZSBpbnN0cnVjdGlvbnMu
IG1faW5zdHMgY29udGFpbnMgdGhlbSBpbiByZXZlcnNlIG9yZGVyLCBzbyB3ZSBwcm9jZXNzCi0g
ICAgICAgICAgICAvLyBpdCBpbiByZXZlcnNlLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9pbnN0cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICBmb3IgKEluc3QmIGlu
c3QgOiBtX2luc3RzW2ldKQotICAgICAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9j
a10tPmFwcGVuZEluc3QoV1RGTW92ZShpbnN0KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQgdXAgY29ycmVjdGx5
LgotICAgICAgICAgICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2Nr
LT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10t
PnN1Y2Nlc3NvcnMoKS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIEFpcjo6RnJlcXVlbnRl
ZEJsb2NrKG1fYmxvY2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygpXSwgc3VjY2Vzc29yLmZyZXF1
ZW5jeSgpKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5pc2hBcHBlbmRpbmdJbnN0
cnVjdGlvbnMobV9ibG9ja1RvQmxvY2tbYmxvY2tdKTsKICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgbV9ibG9ja0luc2VydGlvblNldC5leGVjdXRlKCk7CiAKICAgICAgICAgQWlyOjpJbnNl
cnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fY29kZSk7CiAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6
IG1fcHJvbG9ndWUpCkBAIC00NDgsMTIgKzQ2MSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHNjYWxlOwogICAgIH0KLQorICAg
IAogICAgIC8vIFRoaXMgdHVybnMgdGhlIGdpdmVuIG9wZXJhbmQgaW50byBhbiBhZGRyZXNzLgog
ICAgIEFyZyBlZmZlY3RpdmVBZGRyKFZhbHVlKiBhZGRyZXNzLCBpbnQzMl90IG9mZnNldCwgV2lk
dGggd2lkdGgpCiAgICAgewogICAgICAgICBBU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0ob2Zm
c2V0LCB3aWR0aCkpOwotCisgICAgICAgIAogICAgICAgICBhdXRvIGZhbGxiYWNrID0gWyZdICgp
IC0+IEFyZyB7CiAgICAgICAgICAgICByZXR1cm4gQXJnOjphZGRyKHRtcChhZGRyZXNzKSwgb2Zm
c2V0KTsKICAgICAgICAgfTsKQEAgLTUzNSwxMiArNTQ4LDE1IEBAIHByaXZhdGU6CiAgICAgICAg
IE1lbW9yeVZhbHVlKiB2YWx1ZSA9IG1lbW9yeVZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKICAg
ICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICh2YWx1ZS0+cmVxdWlyZXNTaW1wbGVBZGRyKCkpCisgICAgICAgICAgICByZXR1
cm4gQXJnOjpzaW1wbGVBZGRyKHRtcCh2YWx1ZS0+bGFzdENoaWxkKCkpKTsKIAogICAgICAgICBp
bnQzMl90IG9mZnNldCA9IHZhbHVlLT5vZmZzZXQoKTsKICAgICAgICAgV2lkdGggd2lkdGggPSB2
YWx1ZS0+YWNjZXNzV2lkdGgoKTsKIAogICAgICAgICBBcmcgcmVzdWx0ID0gZWZmZWN0aXZlQWRk
cih2YWx1ZS0+bGFzdENoaWxkKCksIG9mZnNldCwgd2lkdGgpOwotICAgICAgICBBU1NFUlQocmVz
dWx0LmlzVmFsaWRGb3JtKHdpZHRoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5p
c1ZhbGlkRm9ybSh3aWR0aCkpOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAt
NTYxLDExICs1NzcsMTkgQEAgcHJpdmF0ZToKICAgICAKICAgICBBcmdQcm9taXNlIGxvYWRQcm9t
aXNlQW55T3Bjb2RlKFZhbHVlKiBsb2FkVmFsdWUpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKICAgICAgICAgaWYgKCFjYW5CZUlu
dGVybmFsKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAgIGlm
IChjcm9zc2VzSW50ZXJmZXJlbmNlKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJn
KCk7Ci0gICAgICAgIEFyZ1Byb21pc2UgcmVzdWx0KGFkZHIobG9hZFZhbHVlKSwgbG9hZFZhbHVl
KTsKKyAgICAgICAgLy8gT24geDg2LCBhbGwgbG9hZHMgaGF2ZSBmZW5jZXMuIERvaW5nIHRoaXMg
a2luZCBvZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gd2lsbCBtb3ZlIHRoZSBsb2FkLAorICAgICAg
ICAvLyBidXQgdGhhdCdzIGZpbmUgYmVjYXVzZSBvdXIgaW50ZXJmZXJlbmNlIGFuYWx5c2lzIHN0
b3BzIHRoZSBtb3Rpb24gb2YgZmVuY2VzIGFyb3VuZCBvdGhlcgorICAgICAgICAvLyBmZW5jZXMu
IFNvLCBhbnkgbG9hZCBtb3Rpb24gd2UgaW50cm9kdWNlIGhlcmUgd291bGQgbm90IGJlIG9ic2Vy
dmFibGUuCisgICAgICAgIGlmICghaXNYODYoKSAmJiBsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVl
PigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuIEFyZygpOworICAgICAgICBBcmcg
bG9hZEFkZHIgPSBhZGRyKGxvYWRWYWx1ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxvYWRB
ZGRyKTsKKyAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQobG9hZEFkZHIsIGxvYWRWYWx1ZSk7CiAg
ICAgICAgIGlmIChsb2FkVmFsdWUtPnRyYXBzKCkpCiAgICAgICAgICAgICByZXN1bHQuc2V0VHJh
cHModHJ1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03MzgsNyArNzYyLDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KKyAgICAKICAgICB0ZW1wbGF0
ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIEFpcjo6T3Bjb2Rl
IG9wY29kZURvdWJsZSwgQWlyOjpPcGNvZGUgb3Bjb2RlRmxvYXQsIENvbW11dGF0aXZpdHkgY29t
bXV0YXRpdml0eSA9IE5vdENvbW11dGF0aXZlPgogICAgIHZvaWQgYXBwZW5kQmluT3AoVmFsdWUq
IGxlZnQsIFZhbHVlKiByaWdodCkKICAgICB7CkBAIC04OTcsMTEgKzkyMSw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotI2lmIENQVShYODYpIHx8IENQVShY
ODZfNjQpCiAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAodmFsdWUpLCB0bXAobV92YWx1ZSkpOwot
ICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKGFtb3VudCksIFRtcChYODZSZWdpc3RlcnM6OmVjeCkp
OwotICAgICAgICBhcHBlbmQob3Bjb2RlLCBUbXAoWDg2UmVnaXN0ZXJzOjplY3gpLCB0bXAobV92
YWx1ZSkpOwotI2VuZGlmCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1vdW50KSwgbV9lY3gp
OworICAgICAgICBhcHBlbmQob3Bjb2RlLCBtX2VjeCwgdG1wKG1fdmFsdWUpKTsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQ+
CkBAIC05MzAsMTAgKzk1MiwxNiBAQCBwcml2YXRlOgogICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9
IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVCaW5PcChWYWx1ZSogbGVm
dCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV92YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCkpOworICAgICAgICAKICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2Rl
ID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIGxlZnQtPnR5cGUoKSk7CiAg
ICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAKKyAgICAgICAgLy8gT24geDg2LCBhbGwgc3RvcmVzIGhhdmUgZmVuY2VzLCBh
bmQgdGhpcyBpc24ndCByZW9yZGVyaW5nIHRoZSBzdG9yZSBpdHNlbGYuCisgICAgICAgIGlmICgh
aXNYODYoKSAmJiBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIEFyZyBzdG9yZUFkZHIgPSBh
ZGRyKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlQoc3RvcmVBZGRyKTsKIApAQCAtOTkzLDExICsx
MDIxLDUwIEBAIHByaXZhdGU6CiAKICAgICAgICAgcmV0dXJuIEluc3QobW92ZSwgbV92YWx1ZSwg
dG1wKHZhbHVlKSwgZGVzdCk7CiAgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bj
b2RlKFdpZHRoIHdpZHRoLCBCYW5rIGJhbmssIGJvb2wgcmVsZWFzZSkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAod2lkdGgpIHsKKyAgICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3Rv
cmVSZWw4IDogQWlyOjpTdG9yZTg7CisgICAgICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2Ug
PyBTdG9yZVJlbDE2IDogQWlyOjpTdG9yZTE2OworICAgICAgICBjYXNlIFdpZHRoMzI6CisgICAg
ICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDMyIDogTW92ZTMyOworICAgICAgICAgICAg
Y2FzZSBGUDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIE1vdmVGbG9hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpczY0Qml0KCkpOworICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgICAgICBj
YXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWw2NCA6IE1v
dmU7CisgICAgICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFyZWxlYXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bj
b2RlKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2
YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lbW9yeS0+
aXNTdG9yZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0b3JlT3Bjb2RlKG1lbW9yeS0+YWNjZXNzV2lk
dGgoKSwgbWVtb3J5LT5hY2Nlc3NCYW5rKCksIG1lbW9yeS0+aGFzRmVuY2UoKSk7CisgICAgfQog
CiAgICAgSW5zdCBjcmVhdGVTdG9yZShWYWx1ZSogdmFsdWUsIGNvbnN0IEFyZyYgZGVzdCkKICAg
ICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBtb3ZlRm9yVHlwZSh2YWx1ZS0+
dHlwZSgpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUsIHZhbHVlLCBk
ZXN0KTsKKyAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IHN0b3JlT3Bjb2RlKHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUsIHZhbHVlLT5jaGlsZCgw
KSwgZGVzdCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KQEAgLTEw
MDUsNyArMTA3Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBhcHBlbmQodHJhcHBpbmdJ
bnN0KG1fdmFsdWUsIGNyZWF0ZVN0b3JlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpKTsK
ICAgICB9Ci0KKyAgICAKICAgICBBaXI6Ok9wY29kZSBtb3ZlRm9yVHlwZShUeXBlIHR5cGUpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEwNzIsNyArMTEzOSw0MSBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGluc3QpOwogICAgIH0K
KyAgICAKKyAgICB2b2lkIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyhBaXI6OkJhc2ljQmxv
Y2sqIHRhcmdldCkKKyAgICB7CisgICAgICAgIC8vIE5vdyBhcHBlbmQgdGhlIGluc3RydWN0aW9u
cy4gbV9pbnN0cyBjb250YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIsIHNvIHdlIHByb2Nlc3MK
KyAgICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9p
bnN0cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1faW5z
dHNbaV0pCisgICAgICAgICAgICAgICAgdGFyZ2V0LT5hcHBlbmRJbnN0KFdURk1vdmUoaW5zdCkp
OworICAgICAgICB9CisgICAgICAgIG1faW5zdHMucmVzaXplKDApOworICAgIH0KKyAgICAKKyAg
ICBBaXI6OkJhc2ljQmxvY2sqIG5ld0Jsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Js
b2NrSW5zZXJ0aW9uU2V0Lmluc2VydEFmdGVyKG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdKTsKKyAg
ICB9CiAKKyAgICAvLyBOT1RFOiBUaGlzIHdpbGwgY3JlYXRlIGEgY29udGludWF0aW9uIGJsb2Nr
IChgbmV4dEJsb2NrYCkgKmFmdGVyKiBhbnkgYmxvY2tzIHlvdSd2ZSBjcmVhdGVkIHVzaW5nCisg
ICAgLy8gbmV3QmxvY2soKS4gU28sIGl0J3MgcHJlZmVyYWJsZSB0byBjcmVhdGUgYWxsIG9mIHlv
dXIgYmxvY2tzIHVwZnJvbnQgdXNpbmcgbmV3QmxvY2soKS4gQWxzbyBub3RlCisgICAgLy8gdGhh
dCBhbnkgY29kZSB5b3UgZW1pdCBiZWZvcmUgdGhpcyB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUg
Y29udGludWF0aW9uLCBhbmQgYW55IGNvZGUgeW91IGVtaXQKKyAgICAvLyBhZnRlciB0aGlzIHdp
bGwgYmUgYXBwZW5kZWQgdG8gdGhlIHByZXZpb3VzIGJsb2NrLgorICAgIHZvaWQgc3BsaXRCbG9j
ayhBaXI6OkJhc2ljQmxvY2sqJiBwcmV2aW91c0Jsb2NrLCBBaXI6OkJhc2ljQmxvY2sqJiBuZXh0
QmxvY2spCisgICAgeworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJsb2NrID0gbV9ibG9ja1Rv
QmxvY2tbbV9ibG9ja107CisgICAgICAgIAorICAgICAgICBwcmV2aW91c0Jsb2NrID0gYmxvY2s7
CisgICAgICAgIG5leHRCbG9jayA9IG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QWZ0ZXIoYmxv
Y2spOworICAgICAgICAKKyAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG5leHRC
bG9jayk7CisgICAgICAgIG5leHRCbG9jay0+c3VjY2Vzc29ycygpID0gYmxvY2stPnN1Y2Nlc3Nv
cnMoKTsKKyAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigpOworICAgICAgICAKKyAg
ICAgICAgbV9pbnN0cy5hcHBlbmQoVmVjdG9yPEluc3Q+KCkpOworICAgIH0KKyAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgVCogZW5zdXJl
U3BlY2lhbChUKiYgZmllbGQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CkBAIC0x
MTIyLDcgKzEyMjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoKICAgICAgICAgICAgICAgICBhcmcg
PSBBcmc6OmNhbGxBcmcodmFsdWUucmVwKCkub2Zmc2V0RnJvbVNQKCkpOwotICAgICAgICAgICAg
ICAgIGFwcGVuZFN0b3JlKHZhbHVlLnZhbHVlKCksIGFyZyk7CisgICAgICAgICAgICAgICAgYXBw
ZW5kU3RvcmUobW92ZUZvclR5cGUodmFsdWUudmFsdWUoKS0+dHlwZSgpKSwgdmFsdWUudmFsdWUo
KSwgYXJnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE5NjAsNiAr
MjA2MSwzMTMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAg
dm9pZCBhcHBlbmRYODZEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFpcjo6T3Bj
b2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7CisgICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKKyAgICAg
ICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAg
ICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7Cisg
ICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEludDY0OgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRU
b1F1YWRXb3JkNjQ7CisgICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VS
VChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKKyAgICAgICAgVG1wIHJlc3VsdCA9IG9wID09IERp
diA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5j
aGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdvcmQsIG1f
ZWF4LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFs
dWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVl
KSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpPcGNvZGUgb3ApCisgICAg
eworICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBY
ODZVRGl2MzIgOiBYODZVRGl2NjQ7CisKKyAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3Ag
PT0gVU1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gbV9lYXggOiBtX2Vk
eDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgbV9lYXgp
OworICAgICAgICBhcHBlbmQoWG9yNjQsIG1fZWR4LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChk
aXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVu
ZChNb3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bj
b2RlIGxvYWRMaW5rT3Bjb2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZlbmNlID8gT1BDT0RFX0ZPUl9XSURUSChMb2FkTGlua0FjcSwgd2lkdGgpIDog
T1BDT0RFX0ZPUl9XSURUSChMb2FkTGluaywgd2lkdGgpOworICAgIH0KKyAgICAKKyAgICBBaXI6
Ok9wY29kZSBzdG9yZUNvbmRPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVuY2UpCisgICAgewor
ICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZFJlbCwgd2lk
dGgpIDogT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmQsIHdpZHRoKTsKKyAgICB9CisgICAgCisg
ICAgLy8gVGhpcyBjYW4gZW1pdCBjb2RlIGZvciB0aGUgZm9sbG93aW5nIHBhdHRlcm5zOgorICAg
IC8vIEF0b21pY1dlYWtDQVMKKyAgICAvLyBCaXRYb3IoQXRvbWljV2Vha0NBUywgMSkKKyAgICAv
LyBBdG9taWNTdHJvbmdDQVMKKyAgICAvLyBFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVk
KQorICAgIC8vIE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gQnJh
bmNoKEF0b21pY1dlYWtDQVMpCisgICAgLy8gQnJhbmNoKEVxdWFsKEF0b21pY1N0cm9uZ0NBUywg
ZXhwZWN0ZWQpKQorICAgIC8vIEJyYW5jaChOb3RFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVj
dGVkKSkKKyAgICAvLworICAgIC8vIEl0IGFzc3VtZXMgdGhhdCBhdG9taWNWYWx1ZSBwb2ludHMg
dG8gdGhlIENBUywgYW5kIG1fdmFsdWUgcG9pbnRzIHRvIHRoZSBpbnN0cnVjdGlvbiBiZWluZwor
ICAgIC8vIGdlbmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBjb25zdW1lZCBldmVyeXRo
aW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc3VtZWQuCisgICAgdm9pZCBhcHBlbmRDQVMoVmFsdWUq
IGF0b21pY1ZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBh
dG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGF0b21pYyk7CisgICAgICAgIAorICAgICAgICBib29sIGlzQnJhbmNoID0gbV92YWx1
ZS0+b3Bjb2RlKCkgPT0gQnJhbmNoOworICAgICAgICBib29sIGlzU3Ryb25nID0gYXRvbWljLT5v
cGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wgcmV0dXJuc09sZFZhbHVl
ID0gbV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTOworICAgICAgICBib29sIGhh
c0ZlbmNlID0gYXRvbWljLT5oYXNGZW5jZSgpOworICAgICAgICAKKyAgICAgICAgV2lkdGggd2lk
dGggPSBhdG9taWMtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihh
dG9taWMpOworCisgICAgICAgIFRtcCB2YWx1ZVJlc3VsdFRtcDsKKyAgICAgICAgVG1wIGJvb2xS
ZXN1bHRUbXA7CisgICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUpIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFpbnZlcnQpOworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSB0bXAo
bV92YWx1ZSk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7
CisgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0
VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gbV9j
b2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YWx1ZVJlc3Vs
dFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IHRt
cChtX3ZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVG1wIHN1Y2Nlc3NCb29s
UmVzdWx0VG1wOworICAgICAgICBpZiAoaXNTdHJvbmcgJiYgIWlzQnJhbmNoKQorICAgICAgICAg
ICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBib29sUmVzdWx0VG1wOworCisg
ICAgICAgIFRtcCBleHBlY3RlZFZhbHVlVG1wID0gdG1wKGF0b21pYy0+Y2hpbGQoMCkpOworICAg
ICAgICBUbXAgbmV3VmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGlsZCgxKSk7CisgICAgICAgIAor
ICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzOworICAgICAgICBBaXI6OkZyZXF1
ZW50ZWRCbG9jayBmYWlsdXJlOworICAgICAgICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAg
IHN1Y2Nlc3MgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29yKGludmVydCk7Cisg
ICAgICAgICAgICBmYWlsdXJlID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9ja10tPnN1Y2Nlc3Nvcigh
aW52ZXJ0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAg
ICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5hY2Nlc3NUeXBlKCkp
LCBpbW1PclRtcChhdG9taWMtPmNoaWxkKDApKSwgbV9lYXgpOworICAgICAgICAgICAgaWYgKHJl
dHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRI
KEF0b21pY1N0cm9uZ0NBUywgd2lkdGgpLCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3MpOwor
ICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5hY2Nlc3NU
eXBlKCkpLCBtX2VheCwgdmFsdWVSZXN1bHRUbXApOworICAgICAgICAgICAgfSBlbHNlIGlmIChp
c0JyYW5jaCkgeworICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEJyYW5j
aEF0b21pY1N0cm9uZ0NBUywgd2lkdGgpLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6
OlN1Y2Nlc3MpLCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgICAg
IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIGZhaWx1cmUp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1Jf
V0lEVEgoQXRvbWljU3Ryb25nQ0FTLCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChpbnZlcnQgPyBN
YWNyb0Fzc2VtYmxlcjo6RmFpbHVyZSA6IE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgs
IHRtcChhdG9taWMtPmNoaWxkKDEpKSwgYWRkcmVzcywgYm9vbFJlc3VsdFRtcCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGlzQVJNNjQoKSk7CisgICAgICAgIC8vIFdlIHdpc2ggdG8gZW1pdDoKKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIExvYWRMaW5rCisgICAgICAg
IC8vICAgICBCcmFuY2ggTm90RXF1YWwKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVuOiNm
YWlsLCBFbHNlOiAjc3RvcmUKKyAgICAgICAgLy8gQmxvY2sgI3N0b3JlOgorICAgICAgICAvLyAg
ICAgU3RvcmVDb25kCisgICAgICAgIC8vICAgICBYb3IgJDEsICVyZXN1bHQgICAgPC0tLSBvbmx5
IGlmICFpbnZlcnQKKyAgICAgICAgLy8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3Jz
OiAjZG9uZQorICAgICAgICAvLyBCbG9jayAjZmFpbDoKKyAgICAgICAgLy8gICAgIE1vdmUgJGlu
dmVydCwgJXJlc3VsdAorICAgICAgICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3Nv
cnM6ICNkb25lCisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAgICAKKyAgICAgICAgQWly
OjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFz
aWNCbG9jayogc3RvcmVCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9j
ayogc3VjY2Vzc0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCAmJiBpc1N0
cm9uZykKKyAgICAgICAgICAgIHN1Y2Nlc3NCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFp
cjo6QmFzaWNCbG9jayogZmFpbEJsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5j
aCkgeworICAgICAgICAgICAgZmFpbEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgICAgIGZh
aWx1cmUgPSBmYWlsQmxvY2s7CisgICAgICAgIH0KKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBz
dHJvbmdGYWlsQmxvY2s7CisgICAgICAgIGlmIChpc1N0cm9uZyAmJiBoYXNGZW5jZSkKKyAgICAg
ICAgICAgIHN0cm9uZ0ZhaWxCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6RnJlcXVl
bnRlZEJsb2NrIGNvbXBhcmlzb25GYWlsID0gZmFpbHVyZTsKKyAgICAgICAgQWlyOjpGcmVxdWVu
dGVkQmxvY2sgd2Vha0ZhaWw7CisgICAgICAgIGlmIChpc1N0cm9uZykgeworICAgICAgICAgICAg
aWYgKGhhc0ZlbmNlKQorICAgICAgICAgICAgICAgIGNvbXBhcmlzb25GYWlsID0gc3Ryb25nRmFp
bEJsb2NrOworICAgICAgICAgICAgd2Vha0ZhaWwgPSByZWxvb3BCbG9jazsKKyAgICAgICAgfSBl
bHNlIAorICAgICAgICAgICAgd2Vha0ZhaWwgPSBmYWlsdXJlOworICAgICAgICBBaXI6OkJhc2lj
QmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogZG9uZUJsb2NrOwor
ICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ssIGRvbmVCbG9jayk7CisgICAgICAgIAorICAg
ICAgICBhcHBlbmQoQWlyOjpKdW1wKTsKKyAgICAgICAgYmVnaW5CbG9jay0+c2V0U3VjY2Vzc29y
cyhyZWxvb3BCbG9jayk7CisgICAgICAgIAorICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKGxv
YWRMaW5rT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCBhZGRyZXNz
LCB2YWx1ZVJlc3VsdFRtcCk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoT1BDT0RFX0ZP
Ul9DQU5PTklDQUxfV0lEVEgoQnJhbmNoLCB3aWR0aCksIG1fdmFsdWUsIEFyZzo6cmVsQ29uZChN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpLCB2YWx1ZVJlc3VsdFRtcCwgZXhwZWN0ZWRWYWx1ZVRt
cCk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5zZXRTdWNjZXNzb3JzKGNvbXBhcmlzb25GYWlsLCBz
dG9yZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChzdG9yZUNv
bmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIG5ld1ZhbHVlVG1w
LCBhZGRyZXNzLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCk7CisgICAgICAgIGlmIChpc0JyYW5jaCkg
eworICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwg
QXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3VsdFRtcCwgYm9vbFJl
c3VsdFRtcCk7CisgICAgICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3Ms
IHdlYWtGYWlsKTsKKyAgICAgICAgICAgIGRvbmVCbG9jay0+c3VjY2Vzc29ycygpLmNsZWFyKCk7
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghZG9uZUJsb2NrLT5zaXplKCkpOworICAgICAg
ICAgICAgZG9uZUJsb2NrLT5hcHBlbmQoQWlyOjpPb3BzLCBtX3ZhbHVlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGlmIChpc1N0cm9uZykgeworICAgICAgICAgICAgICAgIHN0b3Jl
QmxvY2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fz
c2VtYmxlcjo6WmVybyksIHN1Y2Nlc3NCb29sUmVzdWx0VG1wLCBzdWNjZXNzQm9vbFJlc3VsdFRt
cCk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzQmxv
Y2ssIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzdWNj
ZXNzQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6OmltbSghaW52ZXJ0KSwgYm9vbFJl
c3VsdFRtcCk7CisgICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5hcHBlbmQoQWlyOjpKdW1w
LCBtX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPnNldFN1Y2Nlc3NvcnMo
ZG9uZUJsb2NrKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFp
bnZlcnQpCisgICAgICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChYb3IzMiwgbV92
YWx1ZSwgQXJnOjpiaXRJbW0oMSksIGJvb2xSZXN1bHRUbXAsIGJvb2xSZXN1bHRUbXApOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChBaXI6Okp1
bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMo
ZG9uZUJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmFp
bEJsb2NrLT5hcHBlbmQoTW92ZSwgbV92YWx1ZSwgQXJnOjppbW0oaW52ZXJ0KSwgYm9vbFJlc3Vs
dFRtcCk7CisgICAgICAgICAgICBmYWlsQmxvY2stPmFwcGVuZChBaXI6Okp1bXAsIG1fdmFsdWUp
OworICAgICAgICAgICAgZmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1N0cm9uZyAmJiBoYXNGZW5jZSkgeworICAg
ICAgICAgICAgVG1wIHRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgc3Ryb25n
RmFpbEJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNl
KCkpLCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcywgdG1wKTsKKyAgICAgICAgICAg
IHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwgQXJnOjpyZXND
b25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgdG1wLCB0bXApOworICAgICAgICAgICAgc3Ryb25n
RmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGZhaWx1cmUsIHJlbG9vcEJsb2NrKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICBib29sIGFwcGVuZFZvaWRBdG9taWMoQWlyOjpPcGNvZGUgYXRv
bWljT3Bjb2RlKQorICAgIHsKKyAgICAgICAgaWYgKG1fdXNlQ291bnRzLm51bVVzZXMobV92YWx1
ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBBcmcgYWRk
cmVzcyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNWYWxpZEZvcm0o
YXRvbWljT3Bjb2RlLCBBcmc6OkltbSwgYWRkcmVzcy5raW5kKCkpICYmIGltbShtX3ZhbHVlLT5j
aGlsZCgwKSkpIHsKKyAgICAgICAgICAgIGFwcGVuZChhdG9taWNPcGNvZGUsIGltbShtX3ZhbHVl
LT5jaGlsZCgwKSksIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1ZhbGlkRm9ybShhdG9taWNPcGNvZGUsIEFyZzo6
VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgIGFwcGVuZChhdG9taWNPcGNvZGUs
IHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhcHBlbmRHZW5lcmFsQXRvbWljKEFpcjo6T3Bjb2RlIG9wY29kZSwgQ29t
bXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmUpCisgICAgeworICAgICAg
ICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAg
ICAgIAorICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAgIFRtcCBv
bGRWYWx1ZSA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICBUbXAgbmV3VmFsdWUgPSBvcGNv
ZGUgPT0gQWlyOjpOb3AgPyB0bXAoYXRvbWljLT5jaGlsZCgwKSkgOiBtX2NvZGUubmV3VG1wKEdQ
KTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIG5lZWQgYSBDQVMgbG9vcCBvciBhIExML1NDIGxv
b3AuIFVzaW5nIHByZXBhcmUvYXR0ZW1wdCBqYXJnb24sIHdlIHdhbnQ6CisgICAgICAgIC8vCisg
ICAgICAgIC8vIEJsb2NrICNyZWxvb3A6CisgICAgICAgIC8vICAgICBQcmVwYXJlCisgICAgICAg
IC8vICAgICBvcGNvZGUKKyAgICAgICAgLy8gICAgIEF0dGVtcHQKKyAgICAgICAgLy8gICBTdWNj
ZXNzb3JzOiBUaGVuOiNkb25lLCBFbHNlOiNyZWxvb3AKKyAgICAgICAgLy8gQmxvY2sgI2RvbmU6
CisgICAgICAgIC8vICAgICBNb3ZlIG9sZFZhbHVlLCByZXN1bHQKKyAgICAgICAgCisgICAgICAg
IGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwgdG1w
KGF0b21pYykpOworICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9j
ayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAg
ICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVn
aW5CbG9jaywgZG9uZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChBaXI6Okp1bXAp
OworICAgICAgICBiZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAg
ICAgCisgICAgICAgIEFpcjo6T3Bjb2RlIHByZXBhcmVPcGNvZGU7CisgICAgICAgIGlmIChpc1g4
NigpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGF0b21pYy0+YWNjZXNzV2lkdGgoKSkgeworICAg
ICAgICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IExv
YWQ4U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgV2lkdGgxNjoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDE2U2ln
bmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
V2lkdGgzMjoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTW92ZTMyOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAgICAg
ICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNB
Uk02NCgpKTsKKyAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBsb2FkTGlua09wY29kZShhdG9t
aWMtPmFjY2Vzc1dpZHRoKCksIGF0b21pYy0+aGFzRmVuY2UoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgcmVsb29wQmxvY2stPmFwcGVuZChwcmVwYXJlT3Bjb2RlLCBtX3ZhbHVlLCBhZGRyZXNzLCBv
bGRWYWx1ZSk7CisgICAgICAgIAorICAgICAgICBpZiAob3Bjb2RlICE9IEFpcjo6Tm9wKSB7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZXZlciBoYXZlIHRvIHdyaXRlIHRoaXMgYWdhaW4s
IHdlIG5lZWQgdG8gZmluZCBhIHdheSB0byBzaGFyZSB0aGUgY29kZSB3aXRoCisgICAgICAgICAg
ICAvLyBhcHBlbmRCaW5PcC4KKyAgICAgICAgICAgIGlmIChjb21tdXRhdGl2aXR5ID09IENvbW11
dGF0aXZlICYmIGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFy
Zzo6SW1tLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2Nr
LT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG9sZFZhbHVl
LCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChpbW0oYXRvbWljLT5jaGlsZCgwKSkg
JiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6VG1wKSkKKyAg
ICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgb2xkVmFs
dWUsIGltbShhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAgZWxzZSBp
ZiAoY29tbXV0YXRpdml0eSA9PSBDb21tdXRhdGl2ZSAmJiBiaXRJbW0oYXRvbWljLT5jaGlsZCgw
KSkgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkJpdEltbSwgQXJnOjpUbXAsIEFyZzo6VG1w
KSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwg
Yml0SW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgICAgICAg
ICAgZWxzZSBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6
VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1
ZSwgb2xkVmFsdWUsIHRtcChhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChyZWxheGVkTW92
ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBtX3ZhbHVlLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwor
ICAgICAgICAgICAgICAgIGlmIChpbW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0o
b3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICByZWxvb3BC
bG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdW
YWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZWxvb3BC
bG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdW
YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNYODYoKSkg
eworICAgICAgICAgICAgQWlyOjpPcGNvZGUgY2FzT3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChC
cmFuY2hBdG9taWNTdHJvbmdDQVMsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSk7CisgICAgICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSks
IG1fdmFsdWUsIG9sZFZhbHVlLCBtX2VheCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBw
ZW5kKGNhc09wY29kZSwgbV92YWx1ZSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpT
dWNjZXNzKSwgbV9lYXgsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBUbXAgYm9v
bFJlc3VsdCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFw
cGVuZChzdG9yZUNvbmRPcGNvZGUoYXRvbWljLT5hY2Nlc3NXaWR0aCgpLCBhdG9taWMtPmhhc0Zl
bmNlKCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZSwgYWRkcmVzcywgYm9vbFJlc3VsdCk7CisgICAgICAg
ICAgICByZWxvb3BCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwgQXJnOjpyZXND
b25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3VsdCwgYm9vbFJlc3VsdCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmVsb29wQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrLCByZWxv
b3BCbG9jayk7CisgICAgfQorICAgIAogICAgIHZvaWQgbG93ZXIoKQogICAgIHsKICAgICAgICAg
c3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewpAQCAtMTk3MCwzMCArMjM3OCw1MCBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOiB7Ci0gICAg
ICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG1vdmVGb3JUeXBlKG1fdmFsdWUt
PnR5cGUoKSksIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAg
ICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOwor
ICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gQWlyOjpPb3BzOworICAgICAgICAgICAg
aWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAobWVtb3J5
LT50eXBlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAg
ICAgICBvcGNvZGUgPSBMb2FkQWNxMzI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgSW50NjQ6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExv
YWRBY3E2NDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgb3Bjb2RlID0gbW92ZUZvclR5cGUobWVtb3J5LT50
eXBlKCkpOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUs
IG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOFM6IHsKLSAg
ICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDhTaWduZWRFeHRlbmRU
bzMyLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAg
IEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5j
ZSgpID8gTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIDogTG9hZDhTaWduZWRFeHRlbmRUbzMyOwor
ICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUs
IGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkOFo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFw
cGluZ0luc3QobV92YWx1ZSwgTG9hZDgsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3Zh
bHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVt
b3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOCA6IExvYWQ4OworICAgICAgICAgICAg
YXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1
ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBMb2FkMTZTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1f
dmFsdWUsIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRt
cChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+
YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMy
IDogTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0lu
c3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2
WjogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTYsIG1f
dmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpP
cGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBM
b2FkQWNxMTYgOiBMb2FkMTY7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFs
dWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
QWRkOiB7CiAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjA5MSw3ICsyNTE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICht
X3ZhbHVlLT5pc0NoaWxsKCkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02
NCgpKTsKICAgICAgICAgICAgIGlmIChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkp
IHsKLSAgICAgICAgICAgICAgICBsb3dlclg4NkRpdihEaXYpOworICAgICAgICAgICAgICAgIGFw
cGVuZFg4NkRpdihEaXYpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIEFTU0VSVCghaXNYODYoKSB8fCBpc0Zsb2F0KG1fdmFsdWUtPnR5cGUoKSkp
OwpAQCAtMjEwMiw3ICsyNTMwLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIFVEaXY6IHsK
ICAgICAgICAgICAgIGlmIChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAg
ICAgICAgICAgICAgICBsb3dlclg4NlVEaXYoVURpdik7CisgICAgICAgICAgICAgICAgYXBwZW5k
WDg2VURpdihVRGl2KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
QEAgLTIxMTYsMTMgKzI1NDQsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNb2Q6IHsKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzWDg2KCkpOwogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIW1fdmFsdWUtPmlzQ2hpbGwoKSk7Ci0gICAgICAgICAgICBsb3dlclg4NkRpdihNb2Qp
OworICAgICAgICAgICAgYXBwZW5kWDg2RGl2KE1vZCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAogICAgICAgICBjYXNlIFVNb2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzWDg2KCkpOwotICAgICAgICAgICAgbG93ZXJYODZVRGl2KFVNb2QpOworICAgICAgICAg
ICAgYXBwZW5kWDg2VURpdihVTW9kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC0yMTYxLDEwICsyNTg5LDI4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYXBwZW5k
VW5PcDxOb3QzMiwgTm90NjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoaXMg
cGF0dGVybiBpcyBzdXBlciB1c2VmdWwgb24gYm90aCB4ODYgYW5kIEFSTTY0LCBzaW5jZSB0aGUg
aW52ZXJzaW9uIG9mIHRoZSBDQVMgcmVzdWx0CisgICAgICAgICAgICAvLyBjYW4gYmUgZG9uZSB3
aXRoIHplcm8gY29zdCBvbiB4ODYgKGp1c3QgZmxpcCB0aGUgc2V0IGZyb20gRSB0byBORSkgYW5k
IGl0J3MgYSBwcm9ncmVzc2lvbgorICAgICAgICAgICAgLy8gb24gQVJNNjQgKHNpbmNlIFNUWCBy
ZXR1cm5zIDAgb24gc3VjY2Vzcywgc28gb3JkaW5hcmlseSB3ZSBoYXZlIHRvIGZsaXAgaXQpLgor
ICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludCgxKQorICAgICAgICAgICAg
ICAgICYmIGlzQXRvbWljQ0FTKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAg
ICAgICAgICAmJiBjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAg
ICBhcHBlbmRDQVMobV92YWx1ZS0+Y2hpbGQoMCksIHRydWUpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgYXBwZW5kQmlu
T3A8WG9yMzIsIFhvcjY0LCBYb3JEb3VibGUsIFhvckZsb2F0LCBDb21tdXRhdGl2ZT4oCiAgICAg
ICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRGVw
ZW5kOiB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOworICAgICAgICAg
ICAgYXBwZW5kVW5PcDxEZXBlbmQzMiwgRGVwZW5kNjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU2hsOiB7CiAgICAg
ICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50MzIoMSkpIHsKQEAgLTIyNjUsNyAr
MjcxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAg
ICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjI4Niw3ICsyNzMyLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFpcjo6U3RvcmU4LCB2YWx1ZVRvU3RvcmUsIGFk
ZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjMwNyw3ICsyNzUz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFpcjo6U3RvcmUx
NiwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3Jl
KG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTI0MTUsNyArMjg2MSwyMiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBFcXVhbDoKLSAgICAgICAgY2FzZSBOb3RFcXVhbDoKKyAgICAgICAgY2FzZSBOb3RFcXVh
bDogeworICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9t
aWNTdHJvbmdDQVMKKyAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQo
MCkgPT0gbV92YWx1ZS0+Y2hpbGQoMSkKKyAgICAgICAgICAgICAgICAmJiBjYW5CZUludGVybmFs
KG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQu
Y29udGFpbnMobV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpKSk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgxKSkpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDAp
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUt
Pm9wY29kZSgpID09IE5vdEVxdWFsKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBl
bmQoY3JlYXRlQ29tcGFyZShtX3ZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIExlc3NUaGFuOgogICAgICAgICBjYXNlIEdy
ZWF0ZXJUaGFuOgogICAgICAgICBjYXNlIExlc3NFcXVhbDoKQEAgLTI3MjYsNiArMzE4Nyw0MCBA
QCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBCcmFuY2g6IHsKKyAgICAgICAg
ICAgIGlmIChjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAg
ICAgIFZhbHVlKiBicmFuY2hDaGlsZCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAg
ICAgIHN3aXRjaCAoYnJhbmNoQ2hpbGQtPm9wY29kZSgpKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFu
Y2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZCwgZmFs
c2UpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICAgICAgICAgICAg
ICAvLyBBIGJyYW5jaCBpcyBhIGNvbXBhcmlzb24gdG8gemVyby4KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+aXNJbnQoMCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgRXF1YWw6
CisgICAgICAgICAgICAgICAgY2FzZSBOb3RFcXVhbDoKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAg
ICAgICAgICAgICAgICAgICAgICAmJiBjYW5CZUludGVybmFsKGJyYW5jaENoaWxkLT5jaGlsZCgw
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+Y2hp
bGQoMCkgPT0gYnJhbmNoQ2hpbGQtPmNoaWxkKDEpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb21taXRJbnRlcm5hbChicmFuY2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b21taXRJbnRlcm5hbChicmFuY2hDaGlsZC0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLT5jaGlsZCgwKSwgYnJhbmNoQ2hpbGQtPm9wY29k
ZSgpID09IE5vdEVxdWFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoY3JlYXRlQnJhbmNoKG1fdmFsdWUtPmNo
aWxkKDApKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI3ODMsNyArMzI3
OCw4MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYXBwZW5kKEFpcjo6RW50cnlTd2l0Y2gpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzogeworICAgICAg
ICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDogeworICAg
ICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigp
OworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9t
aWNBZGQsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7Cisg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hj
aGdBZGQsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZEZv
cm0ob3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAgICAgICAgICAg
YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIHRtcChhdG9taWMtPmNo
aWxkKDApKSwgdG1wKGF0b21pYykpOworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRt
cChhdG9taWMpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklD
QUxfV0lEVEgoQWRkLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpLCBDb21tdXRhdGl2ZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6
IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNW
YWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lE
VEgoQXRvbWljU3ViLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BD
T0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoU3ViLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
QXRvbWljWGNoZ0FuZDogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFs
dWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMo
T1BDT0RFX0ZPUl9XSURUSChBdG9taWNBbmQsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2Vu
ZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChBbmQsIGF0b21pYy0+YWNjZXNz
V2lkdGgoKSksIENvbW11dGF0aXZlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOiB7CisgICAgICAgICAgICBB
dG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAg
ICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY09yLCBhdG9t
aWMtPmFjY2Vzc1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxf
V0lEVEgoT3IsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSksIENvbW11dGF0aXZlKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWlj
WGNoZ1hvcjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFz
PEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RF
X0ZPUl9XSURUSChBdG9taWNYb3IsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0
b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChYb3IsIGF0b21pYy0+YWNjZXNzV2lkdGgo
KSksIENvbW11dGF0aXZlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAgQXRvbWljVmFs
dWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAgICAgICAgICAgIEFpcjo6
T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZywgYXRvbWljLT5hY2Nl
c3NXaWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1w
LCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVG
b3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0bXAoYXRvbWlj
KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyksIGFkZHJlc3Mp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhBaXI6Ok5vcCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI3OTEsNjQgKzMzNjAsNyBAQCBwcml2YXRlOgog
ICAgICAgICBkYXRhTG9nKCJGQVRBTDogY291bGQgbm90IGxvd2VyICIsIGRlZXBEdW1wKG1fcHJv
Y2VkdXJlLCBtX3ZhbHVlKSwgIlxuIik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQotCi0gICAgdm9pZCBsb3dlclg4NkRpdihCMzo6T3Bjb2RlIG9wKQotICAg
IHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4
NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVk
eCk7Ci0KLSAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKLSAgICAgICAg
QWlyOjpPcGNvZGUgZGl2OwotICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgewotICAg
ICAgICBjYXNlIEludDMyOgotICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNv
bnZlcnRUb0RvdWJsZVdvcmQzMjsKLSAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50NjQ6Ci0gICAgICAgICAgICBjb252ZXJ0VG9E
b3VibGVXb3JkID0gWDg2Q29udmVydFRvUXVhZFdvcmQ2NDsKLSAgICAgICAgICAgIGRpdiA9IFg4
NkRpdjY0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOwotICAgICAg
ICBYODZSZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gRGl2ID8gWDg2UmVnaXN0
ZXJzOjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwgdG1w
KG1fdmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJs
ZVdvcmQsIGVheCwgZWR4KTsKLSAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcChtX3Zh
bHVlLT5jaGlsZCgxKSkpOwotICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRtcCht
X3ZhbHVlKSk7Ci0KLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVO
UkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlmCi0gICAgfQotCi0gICAgdm9pZCBsb3dl
clg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82
NCkKLSAgICAgICAgVG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRt
cCBlZHggPSBUbXAoWDg2UmVnaXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGRp
diA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsKLQot
ICAgICAgICBBU1NFUlQob3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKLSAgICAgICAgWDg2UmVn
aXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09IFVEaXYgPyBYODZSZWdpc3RlcnM6OmVh
eCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1
ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBlbmQoWG9yNjQsIGVkeCwgZWR4KTsKLSAg
ICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOwotICAg
ICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7Ci0jZWxzZQotICAg
ICAgICBVTlVTRURfUEFSQU0ob3ApOwotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKLSNlbmRpZgotICAgIH0KLQorICAgIAogICAgIEluZGV4U2V0PFZhbHVlPiBtX2xvY2tlZDsg
Ly8gVGhlc2UgYXJlIHZhbHVlcyB0aGF0IHdpbGwgaGF2ZSBubyBUbXAgaW4gQWlyLgogICAgIElu
ZGV4TWFwPFZhbHVlLCBUbXA+IG1fdmFsdWVUb1RtcDsgLy8gVGhlc2UgYXJlIHZhbHVlcyB0aGF0
IG11c3QgaGF2ZSBhIFRtcCBpbiBBaXIuIFdlIHNheSB0aGF0IGEgVmFsdWUqIHdpdGggYSBub24t
bnVsbCBUbXAgaXMgInBpbm5lZCIuCiAgICAgSW5kZXhNYXA8VmFsdWUsIFRtcD4gbV9waGlUb1Rt
cDsgLy8gRWFjaCBQaGkgZ2V0cyBpdHMgb3duIFRtcC4KQEAgLTI4NjMsNyArMzM3NSw3IEBAIHBy
aXZhdGU6CiAKICAgICBWZWN0b3I8VmVjdG9yPEluc3QsIDQ+PiBtX2luc3RzOwogICAgIFZlY3Rv
cjxJbnN0PiBtX3Byb2xvZ3VlOwotCisgICAgCiAgICAgQjM6OkJhc2ljQmxvY2sqIG1fYmxvY2s7
CiAgICAgYm9vbCBtX2lzUmFyZTsKICAgICB1bnNpZ25lZCBtX2luZGV4OwpAQCAtMjg3NCw2ICsz
Mzg2LDEyIEBAIHByaXZhdGU6CiAKICAgICBQcm9jZWR1cmUmIG1fcHJvY2VkdXJlOwogICAgIENv
ZGUmIG1fY29kZTsKKworICAgIEFpcjo6QmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2VydGlv
blNldDsKKworICAgIFRtcCBtX2VheDsKKyAgICBUbXAgbV9lY3g7CisgICAgVG1wIG1fZWR4Owog
fTsKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw4IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogY2xhc3MgUHJvY2VkdXJlOwogbmFtZXNw
YWNlIEFpciB7IGNsYXNzIENvZGU7IH0KIAotLy8gVGhpcyBsb3dlcnMgdGhlIGN1cnJlbnQgQjMg
cHJvY2VkdXJlIHRvIGFuIEFpciBjb2RlLgorLy8gVGhpcyBsb3dlcnMgdGhlIGN1cnJlbnQgQjMg
cHJvY2VkdXJlIHRvIGFuIEFpciBjb2RlLiBOb3RlIHRoYXQgdGhpcyBhc3N1bWVzIHRoYXQgdGhl
IHByb2NlZHVyZSBpcyBpbgorLy8gcXVpcmtzIG1vZGUsIGJ1dCBpdCBkb2VzIG5vdCBhc3NlcnQg
dGhpcywgdG8gc2ltcGxpZnkgaG93IHdlIHdyaXRlIHRlc3RzLgogCiBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGxvd2VyVG9BaXIoUHJvY2VkdXJlJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
MzYgKzI4LDM3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNBdG9taWNW
YWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiQjNW
YWx1ZUlubGluZXMuaCIKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIE1lbW9y
eVZhbHVlOjp+TWVtb3J5VmFsdWUoKQogewogfQogCi1zaXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vz
c0J5dGVTaXplKCkgY29uc3QKK2Jvb2wgTWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXQoaW50NjRf
dCBvZmZzZXQpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChvcGNvZGUoKSkgewotICAgIGNhc2UgTG9h
ZDhaOgotICAgIGNhc2UgTG9hZDhTOgotICAgIGNhc2UgU3RvcmU4OgotICAgICAgICByZXR1cm4g
MTsKLSAgICBjYXNlIExvYWQxNlo6Ci0gICAgY2FzZSBMb2FkMTZTOgotICAgIGNhc2UgU3RvcmUx
NjoKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAgY2FzZSBMb2FkOgotICAgICAgICByZXR1cm4gc2l6
ZW9mVHlwZSh0eXBlKCkpOwotICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJldHVybiBzaXplb2ZU
eXBlKGNoaWxkKDApLT50eXBlKCkpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICByZXR1cm4g
QjM6OmlzUmVwcmVzZW50YWJsZUFzPGludDMyX3Q+KG9mZnNldCkgJiYgaXNMZWdhbE9mZnNldChz
dGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpKTsKK30KKworVHlwZSBNZW1vcnlWYWx1ZTo6YWNj
ZXNzVHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzTG9hZCgpKQorICAgICAgICByZXR1cm4gdHlw
ZSgpOworICAgIC8vIFRoaXMgaGFwcGVucyB0byB3b3JrIGZvciBhdG9taWNzLCB0b28uIFRoYXQn
cyB3aHkgQXRvbWljVmFsdWUgZG9lcyBub3QgbmVlZCB0byBvdmVycmlkZSB0aGlzLgorICAgIHJl
dHVybiBjaGlsZCgwKS0+dHlwZSgpOwogfQogCi1XaWR0aCBNZW1vcnlWYWx1ZTo6YWNjZXNzV2lk
dGgoKSBjb25zdAorQmFuayBNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuaygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHdpZHRoRm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJuIGJhbmtG
b3JUeXBlKGFjY2Vzc1R5cGUoKSk7Cit9CisKK3NpemVfdCBNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0
ZVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBieXRlcyhhY2Nlc3NXaWR0aCgpKTsKIH0KIAog
dm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKQEAgLTY1LDggKzY2LDExIEBAIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBN
ZXRhKENvbW1hUHJpbnRlciYKICAgICBpZiAobV9vZmZzZXQpCiAgICAgICAgIG91dC5wcmludChj
b21tYSwgIm9mZnNldCA9ICIsIG1fb2Zmc2V0KTsKICAgICBpZiAoKGlzTG9hZCgpICYmIGVmZmVj
dHMoKS5yZWFkcyAhPSByYW5nZSgpKQotICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVmZmVjdHMo
KS53cml0ZXMgIT0gcmFuZ2UoKSkpCisgICAgICAgIHx8IChpc1N0b3JlKCkgJiYgZWZmZWN0cygp
LndyaXRlcyAhPSByYW5nZSgpKQorICAgICAgICB8fCBpc0V4b3RpYygpKQogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJyYW5nZSA9ICIsIHJhbmdlKCkpOworICAgIGlmIChpc0V4b3RpYygpKQor
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJmZW5jZVJhbmdlID0gIiwgZmVuY2VSYW5nZSgpKTsK
IH0KIAogVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdApAQCAtNzQsNiArNzgs
NjIgQEAgVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAogICAgIHJldHVybiBu
ZXcgTWVtb3J5VmFsdWUoKnRoaXMpOwogfQogCisvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChi
dXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1
ZmZpeCB0aGF0CisvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgorTWVtb3J5VmFsdWU6
Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSog
cG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNl
UmFuZ2UpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBv
aW50ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgLCBtX3JhbmdlKHJhbmdlKQorICAg
ICwgbV9mZW5jZVJhbmdlKGZlbmNlUmFuZ2UpCit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQp
IHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2UgTG9hZDoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBM
b2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAg
ICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU3RvcmU4OgorICAgICAgICBjYXNlIFN0b3JlMTY6CisgICAgICAgIGNhc2UgU3Rv
cmU6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBWb2lkKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRo
ZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQg
a2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFw
UmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIDogTWVtb3J5VmFsdWUoa2lu
ZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSkKK3sK
KyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2Rl
KCkpIHsKKyAgICAgICAgY2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAg
ICBjYXNlIExvYWQxNlo6CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KK01lbW9y
eVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1
ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBS
YW5nZSBmZW5jZVJhbmdlKQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwg
b3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1f
cmFuZ2UocmFuZ2UpCisgICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKK3sKKyAgICBBU1NF
UlQoQjM6OmlzU3RvcmUoa2luZC5vcGNvZGUoKSkpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyNyAr
MjcsODYgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJBaXJBcmcuaCIKKyNp
bmNsdWRlICJCM0JhbmsuaCIKICNpbmNsdWRlICJCM0hlYXBSYW5nZS5oIgogI2luY2x1ZGUgIkIz
VmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLS8vIEZJWE1FOiBX
ZSB3YW50IHRvIGFsbG93IGZlbmNlZCBtZW1vcnkgYWNjZXNzZXMgb24gQVJNLgotLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0OQotCiBjbGFzcyBKU19FWFBP
UlRfUFJJVkFURSBNZW1vcnlWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQu
b3Bjb2RlKCkpIHsKLSAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgIGNhc2UgTG9hZDhTOgot
ICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAgY2Fz
ZSBMb2FkOgotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9yZTE2OgotICAg
ICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBz
dGF0aWMgYm9vbCBpc1N0b3JlKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2lu
ZC5vcGNvZGUoKSkgewotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9yZTE2
OgotICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBzdGF0aWMgYm9vbCBpc0xvYWQoS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFjY2VwdHMoa2luZCkgJiYgIWlzU3RvcmUoa2luZCk7CisgICAgICAgIHJldHVybiBpc01lbW9y
eUFjY2VzcyhraW5kLm9wY29kZSgpKTsKICAgICB9CiAKICAgICB+TWVtb3J5VmFsdWUoKTsKIAog
ICAgIGludDMyX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICB2b2lk
IHNldE9mZnNldChpbnQzMl90IG9mZnNldCkgeyBtX29mZnNldCA9IG9mZnNldDsgfQorICAgIAor
ICAgIC8vIFlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHVzaW5nIGxlZ2FsIG9mZnNldHMg
dW5sZXNzIHlvdSd2ZSBlbnRlcmVkIHF1aXJrcyBtb2RlLgorICAgIGJvb2wgaXNMZWdhbE9mZnNl
dChpbnQzMl90IG9mZnNldCkgY29uc3Q7CisgICAgYm9vbCBpc0xlZ2FsT2Zmc2V0KGludDY0X3Qg
b2Zmc2V0KSBjb25zdDsKKyAgICAKKyAgICAvLyBBIG5lY2Vzc2FyeSBjb25zZXF1ZW5jZSBvZiBN
ZW1vcnlWYWx1ZSBoYXZpbmcgYW4gb2Zmc2V0IGlzIHRoYXQgaXQgcGFydGljaXBhdGVzIGluIGlu
c3RydWN0aW9uCisgICAgLy8gc2VsZWN0aW9uLiBUaGlzIHRlbGxzIHlvdSBpZiB0aGlzIHdpbGwg
Z2V0IGxvd2VyZWQgdG8gc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgYW4gb2Zmc2V0bGVzcworICAg
IC8vIGFkZHJlc3MuCisgICAgYm9vbCByZXF1aXJlc1NpbXBsZUFkZHIoKSBjb25zdDsKIAogICAg
IGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CiAgICAg
dm9pZCBzZXRSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fcmFuZ2UgPSByYW5nZTsg
fQorICAgIAorICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHJhbmdlLgorICAgIGNvbnN0IEhl
YXBSYW5nZSYgYWNjZXNzUmFuZ2UoKSBjb25zdCB7IHJldHVybiByYW5nZSgpOyB9CisgICAgdm9p
ZCBzZXRBY2Nlc3NSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IHNldFJhbmdlKHJhbmdl
KTsgfQorICAgIAorICAgIGNvbnN0IEhlYXBSYW5nZSYgZmVuY2VSYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmVuY2VSYW5nZTsgfQorICAgIHZvaWQgc2V0RmVuY2VSYW5nZShjb25zdCBIZWFwUmFu
Z2UmIHJhbmdlKSB7IG1fZmVuY2VSYW5nZSA9IHJhbmdlOyB9CisKKyAgICBib29sIGlzU3RvcmUo
KSBjb25zdCB7IHJldHVybiBCMzo6aXNTdG9yZShvcGNvZGUoKSk7IH0KKyAgICBib29sIGlzTG9h
ZCgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAgICBib29sIGlz
U3RvcmUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVm9pZDsgfQotICAgIGJvb2wgaXNMb2Fk
KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpICE9IFZvaWQ7IH0KKyAgICBib29sIGhhc0ZlbmNlKCkg
Y29uc3QgeyByZXR1cm4gISFmZW5jZVJhbmdlKCk7IH0KKyAgICBib29sIGlzRXhvdGljKCkgY29u
c3QgeyByZXR1cm4gaGFzRmVuY2UoKSB8fCBpc0F0b21pYyhvcGNvZGUoKSk7IH0KIAorICAgIFR5
cGUgYWNjZXNzVHlwZSgpIGNvbnN0OworICAgIEJhbmsgYWNjZXNzQmFuaygpIGNvbnN0OwogICAg
IHNpemVfdCBhY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0OworICAgIAogICAgIFdpZHRoIGFjY2Vzc1dp
ZHRoKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRl
ciYgY29tbWEsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0
YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmFs
dWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRzPgorICAgIE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2lu
ZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJh
bmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAg
ICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIGFyZ3VtZW50cy4u
LikKKyAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV9yYW5nZShyYW5nZSkK
KyAgICAgICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKKyAgICB7CisgICAgfQorICAgIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOwotCisgICAgCiAgICAgLy8gVXNl
IHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRo
ZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAogICAgIC8vIGRlc2NyaWJlcyB0aGUgcmV0
dXJuZWQgdHlwZSkuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdp
biBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDog
VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQotICAgICAg
ICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAgICAgLCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkp
Ci0gICAgewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgc3dp
dGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIExvYWQ4WjoKLSAgICAgICAgICAgIGNhc2Ug
TG9hZDhTOgotICAgICAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAgICAgICAgY2FzZSBMb2Fk
MTZTOgotICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IEludDMyKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBT
dG9yZTE2OgotICAgICAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgICAgICBBU1NFUlQo
dHlwZSA9PSBWb2lkKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9CisgICAgTWVtb3J5VmFsdWUoS2luZCwgVHlwZSwgT3JpZ2luLCBW
YWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFw
UmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKIAogICAg
IC8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBs
aWVkLgotICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJ
bnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpCi0gICAgewotICAgIH0KKyAgICBNZW1vcnlW
YWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhl
YXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0g
SGVhcFJhbmdlKCkpOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgotICAgIE1l
bW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSog
cG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNv
ZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpCi0gICAgICAgICwgbV9vZmZz
ZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSkKLSAgICB7Ci0g
ICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQu
b3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBT
dG9yZTE2OgotICAgICAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUq
IHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdl
Ojp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CisgICAgCiAgICAg
aW50MzJfdCBtX29mZnNldCB7IDAgfTsKLSAgICBIZWFwUmFuZ2UgbV9yYW5nZTsKKyAgICBIZWFw
UmFuZ2UgbV9yYW5nZSB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKyAgICBIZWFwUmFuZ2UgbV9mZW5j
ZVJhbmdlIHsgSGVhcFJhbmdlKCkgfTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWVJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWVJbmxpbmVz
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFs
dWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckFyZy5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFs
dWUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2lubGluZSBib29sIE1l
bW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0KGludDMyX3Qgb2Zmc2V0KSBjb25zdAoreworICAgIC8v
IE5PVEU6IFRoaXMgaXMgaW5saW5lIGJlY2F1c2UgaXQgY29uc3RhbnQtZm9sZHMgdG8gdHJ1ZSBv
biB4ODYhCisgICAgCisgICAgLy8gU28gZmFyIG9ubHkgWDg2IGFsbG93cyBleG90aWMgbG9hZHMg
dG8gaGF2ZSBhbiBvZmZzZXQuCisgICAgaWYgKHJlcXVpcmVzU2ltcGxlQWRkcigpKQorICAgICAg
ICByZXR1cm4gIW9mZnNldDsKKyAgICAKKyAgICByZXR1cm4gQWlyOjpBcmc6OmlzVmFsaWRBZGRy
Rm9ybShvZmZzZXQsIGFjY2Vzc1dpZHRoKCkpOworfQorCitpbmxpbmUgYm9vbCBNZW1vcnlWYWx1
ZTo6cmVxdWlyZXNTaW1wbGVBZGRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlzWDg2KCkgJiYg
aXNFeG90aWMoKTsKK30KKworaW5saW5lIFdpZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgp
IGNvbnN0Cit7CisgICAgc3dpdGNoIChvcGNvZGUoKSkgeworICAgIGNhc2UgTG9hZDhaOgorICAg
IGNhc2UgTG9hZDhTOgorICAgIGNhc2UgU3RvcmU4OgorICAgICAgICByZXR1cm4gV2lkdGg4Owor
ICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBTdG9yZTE2Ogor
ICAgICAgICByZXR1cm4gV2lkdGgxNjsKKyAgICBjYXNlIExvYWQ6CisgICAgICAgIHJldHVybiB3
aWR0aEZvclR5cGUodHlwZSgpKTsKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gd2lk
dGhGb3JUeXBlKGNoaWxkKDApLT50eXBlKCkpOworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAg
ICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2Fz
ZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWlj
WGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgor
ICAgICAgICByZXR1cm4gYXM8QXRvbWljVmFsdWU+KCktPmFjY2Vzc1dpZHRoKCk7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIFdpZHRoODsKKyAgICB9Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TW92ZUNvbnN0YW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTW92ZUNvbnN0YW50cy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw3IEBACiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzRG9t
aW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgotI2luY2x1ZGUg
IkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCkBAIC0yMDMsMTIgKzIwMyw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUG9pbnRlci0+
aGFzSW50UHRyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSBkZXNpcmVkT2Zmc2V0KGNhbmRpZGF0
ZVBvaW50ZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUIzOjppc1Jl
cHJlc2VudGFibGVBczxpbnQzMl90PihzdGF0aWNfY2FzdDxpbnQ2NF90PihvZmZzZXQpKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6QXJnOjppc1ZhbGlkQWRkckZvcm0o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90
PihvZmZzZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhGb3JC
eXRlcyhtZW1vcnlWYWx1ZS0+YWNjZXNzQnl0ZVNpemUoKSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9IGRlc2lyZWRPZmZzZXQoY2FuZGlkYXRlUG9p
bnRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcnlWYWx1
ZS0+aXNMZWdhbE9mZnNldChvZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YmVzdFBvaW50ZXIpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM05hdGl2ZVRy
YWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM05hdGl2ZVRy
YWl0cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM05hdGl2
ZVRyYWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzQmFuay5oIgorI2luY2x1ZGUgIkIzVHlwZS5oIgor
I2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTmF0aXZlVHJhaXRzOworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBOYXRpdmVUcmFpdHM8aW50OF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9
IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoODsKKyAgICBzdGF0aWMg
Y29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVU
cmFpdHM8dWludDhfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBz
dGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDg7CisgICAgc3RhdGljIGNvbnN0IFR5cGUg
dHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGludDE2
X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0
IFdpZHRoIHdpZHRoID0gV2lkdGgxNjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50
MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDE2X3Q+IHsKKyAg
ICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdp
ZHRoID0gV2lkdGgxNjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50MzJfdD4geworICAgIHN0YXRpYyBj
b25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0
aDMyOworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRl
PD4gc3RydWN0IE5hdGl2ZVRyYWl0czx1aW50MzJfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5r
IGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDMyOworICAg
IHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0
IE5hdGl2ZVRyYWl0czxpbnQ2NF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQ
OworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoNjQ7CisgICAgc3RhdGljIGNv
bnN0IFR5cGUgdHlwZSA9IEludDY0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJh
aXRzPHVpbnQ2NF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0
YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoNjQ7CisgICAgc3RhdGljIGNvbnN0IFR5cGUg
dHlwZSA9IEludDY0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGZsb2F0
PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEZQOworICAgIHN0YXRpYyBjb25zdCBX
aWR0aCB3aWR0aCA9IFdpZHRoMzI7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEZsb2F0
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGRvdWJsZT4geworICAgIHN0
YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBGUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGgg
PSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBEb3VibGU7Cit9OworCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkocmV2aXNpb24gMjEzNDI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTY4LDYgKzY4LDIzIEBAIHN0ZDo6b3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRlZENvbXBhcmUo
T3AKICAgICB9CiB9CiAKK09wY29kZSBzdG9yZU9wY29kZShCYW5rIGJhbmssIFdpZHRoIHdpZHRo
KQoreworICAgIHN3aXRjaCAoYmFuaykgeworICAgIGNhc2UgR1A6CisgICAgICAgIHN3aXRjaCAo
d2lkdGgpIHsKKyAgICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICByZXR1cm4gU3RvcmU4
OworICAgICAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgICAgICByZXR1cm4gU3RvcmUxNjsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTdG9yZTsKKyAgICAgICAgfQorICAg
IGNhc2UgRlA6CisgICAgICAgIHJldHVybiBTdG9yZTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTI2Myw2ICsyODAsMzMgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wYwogICAgIGNhc2UgU3RvcmU6CiAg
ICAgICAgIG91dC5wcmludCgiU3RvcmUiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRv
bWljV2Vha0NBUzoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNXZWFrQ0FTIik7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgb3V0LnByaW50KCJB
dG9taWNTdHJvbmdDQVMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ0Fk
ZDoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnQWRkIik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ0Fu
ZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgIG91
dC5wcmludCgiQXRvbWljWGNoZ09yIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21p
Y1hjaGdTdWI6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ1N1YiIpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICBvdXQucHJpbnQoIkF0b21p
Y1hjaGdYb3IiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAg
ICAgb3V0LnByaW50KCJBdG9taWNYY2hnIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIERl
cGVuZDoKKyAgICAgICAgb3V0LnByaW50KCJEZXBlbmQiKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIG91dC5wcmludCgiV2FzbUFkZHJlc3MiKTsKICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHJldmlz
aW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNs
dWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC04Miw3ICs4Myw2IEBA
IGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgTW9kLCAvLyBBbGwgYmV0cyBhcmUgb2ZmIGFz
IHRvIHdoYXQgd2lsbCBoYXBwZW4gd2hlbiB5b3UgZXhlY3V0ZSB0aGlzIGZvciAtMl4zMSUtMSBh
bmQgeCUwLgogICAgIFVNb2QsCiAKLQogICAgIC8vIFBvbHltb3JwaGljIG5lZ2F0aW9uLiBOb3Rl
IHRoYXQgd2Ugb25seSBuZWVkIHRoaXMgZm9yIGZsb2F0aW5nIHBvaW50LCBzaW5jZSBpbnRlZ2Vy
IG5lZ2F0aW9uCiAgICAgLy8gaXMgZXhhY3RseSBsaWtlIFN1YigwLCB4KS4gQnV0IHRoYXQncyBu
b3QgdHJ1ZSBmb3IgZmxvYXRpbmcgcG9pbnQuIFN1YigwLCAwKSBpcyAwLCB3aGlsZQogICAgIC8v
IE5lZygwKSBpcyAtMC4gQWxzbywgd2UgY2Fub25pY2FsaXplIFN1YigwLCB4KSBpbnRvIE5lZyh4
KSBpbiBjYXNlIG9mIGludGVnZXJzLgpAQCAtMTYyLDYgKzE2MiwxMDcgQEAgZW51bSBPcGNvZGUg
OiBpbnQxNl90IHsKICAgICBTdG9yZTE2LAogICAgIC8vIFRoaXMgaXMgYSBwb2x5bW9ycGhpYyBz
dG9yZSBmb3IgSW50MzIsIEludDY0LCBGbG9hdCwgYW5kIERvdWJsZS4KICAgICBTdG9yZSwKKyAg
ICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgYSBib29sZWFu
LiBNYXkgY2hvb3NlIHRvIGRvIG5vdGhpbmcgYW5kIHJldHVybiBmYWxzZS4gWW91IGNhbgorICAg
IC8vIHVzdWFsbHkgYXNzdW1lIHRoYXQgdGhpcyBpcyBmYXN0ZXIgYW5kIHJlc3VsdHMgaW4gbGVz
cyBjb2RlIHRoYW4gQXRvbWljU3Ryb25nQ0FTLCB0aG91Z2ggdGhhdCdzCisgICAgLy8gbm90IG5l
Y2Vzc2FyaWx5IHRydWUgb24gSW50ZWwsIGlmIGluc3RydWN0aW9uIHNlbGVjdGlvbiBkb2VzIGl0
cyBqb2IuIEltYWdpbmUgdGhhdCB0aGlzIG9wY29kZSBpcworICAgIC8vIGFzIGlmIHlvdSBkaWQg
dGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICAvLyBib29sIEF0b21pY1dlYWtDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBUKiBw
dHIpCisgICAgLy8geworICAgIC8vICAgICBpZiAoIXJhbmQoKSkKKyAgICAvLyAgICAgICAgIHJl
dHVybiBmYWxzZTsgLy8gUmVhbCB3b3JsZCBleGFtcGxlIG9mIHRoaXM6IGNvbnRleHQgc3dpdGNo
IG9uIEFSTSB3aGlsZSBkb2luZyBDQVMuCisgICAgLy8gICAgIGlmICgqcHRyICE9IGV4cGVjdGVk
VmFsdWUpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gICAgICpwdHIgPSBu
ZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gfQorICAgIC8vCisgICAg
Ly8gTm90ZSB0aGF0IGFsbCBhdG9taWNzIHB1dCB0aGUgcG9pbnRlciBsYXN0IHRvIGJlIGNvbnNp
c3RlbnQgd2l0aCBob3cgbG9hZHMgYW5kIHN0b3JlcyB3b3JrLiBUaGlzCisgICAgLy8gaXMgYSBn
b29meSB0cmFkaXRpb24sIGJ1dCBpdCdzIGhhcm1sZXNzLCBhbmQgYmV0dGVyIHRoYW4gYmVpbmcg
aW5jb25zaXN0ZW50LgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHdlYWsgQ0FTIGhhcyBubyBm
ZW5jaW5nIGd1YXJhbnRlZXMgd2hlbiBpdCBmYWlscy4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xs
b3dpbmcKKyAgICAvLyB0cmFuc2Zvcm1hdGlvbiBpcyBhbHdheXMgdmFsaWQ6CisgICAgLy8KKyAg
ICAvLyBCZWZvcmU6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FT
KGV4cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3Vj
Y2VzcywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQWZ0ZXI6CisgICAgLy8KKyAgICAvLyAg
ICAgICAgIEJyYW5jaChFcXVhbChMb2FkKHB0ciksIGV4cGVjdGVkKSkKKyAgICAvLyAgICAgICBT
dWNjZXNzb3JzOiBUaGVuOiNhdHRlbXB0LCBFbHNlOiNmYWlsCisgICAgLy8gICAgIEJCI2F0dGVt
cHQ6CisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBw
dHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwK
KyAgICAvLworICAgIC8vIEJvdGgga2luZHMgb2YgQ0FTIGZvciBub24tY2Fub25pY2FsIHdpZHRo
cyAoV2lkdGg4IGFuZCBXaWR0aDE2KSBpZ25vcmUgdGhlIGlycmVsZXZhbnQgYml0cyBvZiB0aGUK
KyAgICAvLyBpbnB1dC4KKyAgICBBdG9taWNXZWFrQ0FTLAorICAgIAorICAgIC8vIEF0b21pYyBj
b21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBEb2VzIG5vdCBoYXZl
IHRoZSBub25kZXRlcm1pbmlzbSBvZiBXZWFrQ0FTLgorICAgIC8vIFRoaXMgaXMgYSBiaXQgbW9y
ZSBjb2RlIGFuZCBhIGJpdCBzbG93ZXIgaW4gc29tZSBjYXNlcywgdGhvdWdoIG5vdCBieSBhIGxv
dC4gSW1hZ2luZSB0aGF0IHRoaXMKKyAgICAvLyBvcGNvZGUgaXMgYXMgaWYgeW91IGRpZCB0aGlz
IGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8v
IFQgQXRvbWljU3Ryb25nQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQor
ICAgIC8vIHsKKyAgICAvLyAgICAgVCBvbGRWYWx1ZSA9ICpwdHI7CisgICAgLy8gICAgIGlmIChv
bGRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgKnB0ciA9IG5ld1ZhbHVl
OworICAgIC8vICAgICByZXR1cm4gb2xkVmFsdWUKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBO
b3RlIHRoYXQgQXRvbWljV2Vha0NBUyBhbmQgQXRvbWljU3Ryb25nQ0FTIHNvcnQgb2YgaGF2ZSB0
aGlzIGtpbmQgb2YgZXF1aXZhbGVuY2U6CisgICAgLy8KKyAgICAvLyBBdG9taWNXZWFrQ0FTKEBl
eHAsIEBuZXcsIEBwdHIpID09IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhAZXhwLCBAbmV3LCBAcHRy
KSwgQGV4cCkKKyAgICAvLworICAgIC8vIEFzc3VtaW5nIHRoYXQgdGhlIFdlYWtDQVMgZG9lcyBu
b3Qgc3B1cmlvdXNseSBmYWlsLCBvZiBjb3Vyc2UuCisgICAgQXRvbWljU3Ryb25nQ0FTLAorICAg
IAorICAgIC8vIEF0b21pY2FsbHkgX19fIGEgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm4gdGhl
IG9sZCB2YWx1ZS4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWljWGNo
Z19fXyhAb3BlcmFuZCwgQHB0cikKKyAgICAvLworICAgIC8vIEZvciBub24tY2Fub25pY2FsIHdp
ZHRocyAoV2lkdGg4IGFuZCBXaWR0aDE2KSwgdGhlc2UgcmV0dXJuIHNpZ24tZXh0ZW5kZWQgcmVz
dWx0cyBhbmQgaWdub3JlIHRoZQorICAgIC8vIGlycmVsZXZhbnQgYml0cyBvZiB0aGVpciBpbnB1
dHMuCisgICAgQXRvbWljWGNoZ0FkZCwKKyAgICBBdG9taWNYY2hnQW5kLAorICAgIEF0b21pY1hj
aGdPciwKKyAgICBBdG9taWNYY2hnU3ViLAorICAgIEF0b21pY1hjaGdYb3IsCisgICAgCisgICAg
Ly8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBoYXZlIEF0b21pY1hjaGdOZWcgYW5kIEF0b21pY1hj
aGdOb3QuCisgICAgCisgICAgLy8gQXRvbWljYWxseSBleGNoYW5nZSBhIHZhbHVlIHdpdGggYSBt
ZW1vcnkgbG9jYXRpb24uIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21p
Y1hjaGcoQG5ld1ZhbHVlLCBAcHRyKQorICAgIEF0b21pY1hjaGcsCisgICAgCisgICAgLy8gSW50
cm9kdWNlIGFuIGludmlzaWJsZSBkZXBlbmRlbmN5IGZvciBibG9ja2luZyBtb3Rpb24gb2YgbG9h
ZHMgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBy
ZXN1bHQgPSBEZXBlbmQoQHBoYW50b20pCisgICAgLy8KKyAgICAvLyBUaGlzIGlzIGV2ZW50dWFs
bHkgY29kZWdlbmVyYXRlZCB0byBoYXZlIGxvY2FsIHNlbWFudGljcyBhcyBpZiB3ZSBkaWQ6Cisg
ICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gJDAKKyAgICAvLworICAgIC8vIEJ1dCBpdCBlbnN1cmVz
IHRoYXQgdGhlIHVzZXJzIG9mIEByZXN1bHQgY2Fubm90IGV4ZWN1dGUgdW50aWwgQHBoYW50b20g
aXMgY29tcHV0ZWQuCisgICAgLy8KKyAgICAvLyBUaGUgY29tcGlsZXIgaXMgbm90IGFsbG93ZWQg
dG8gcmVhc29uIGFib3V0IHRoZSBmYWN0IHRoYXQgRGVwZW5kIGNvZGVnZW5lcmF0ZXMgdGhpcyB3
YXkuIEFueSBraW5kCisgICAgLy8gb2YgdHJhbnNmb3JtYXRpb24gb3IgYW5hbHlzaXMgdGhhdCBy
ZWxpZXMgb24gdGhlIGluc2lnaHQgdGhhdCBEZXBlbmQgaXMgcmVhbGx5IHplcm8gaXMgdW5zb3Vu
ZCwKKyAgICAvLyBiZWNhdXNlIGl0IHVubG9ja3MgcmVvcmRlcmluZyBvZiB1c2VycyBvZiBAcmVz
dWx0IGFuZCBAcGhhbnRvbS4KKyAgICAvLworICAgIC8vIE9uIFg4NiwgdGhpcyBpcyBsb3dlcmVk
IHRvIGEgbG9hZC1sb2FkIGZlbmNlIGFuZCBAcmVzdWx0IHVzZXMgQHBoYW50b20gZGlyZWN0bHku
CisgICAgLy8KKyAgICAvLyBPbiBBUk0sIHRoaXMgaXMgbG93ZXJlZCBhcyBpZiBsaWtlOgorICAg
IC8vCisgICAgLy8gQHJlc3VsdCA9IEJpdFhvcihAcGhhbnRvbSwgQHBoYW50b20pCisgICAgLy8K
KyAgICAvLyBFeGNlcHQgdGhhdCB0aGUgY29tcGlsZXIgbmV2ZXIgZ2V0cyBhbiBvcHBvcnR1bml0
eSB0byBzaW1wbGlmeSBvdXQgdGhlIEJpdFhvci4KKyAgICBEZXBlbmQsCiAKICAgICAvLyBUaGlz
IGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIGFkZHJlc3Mgb2YgYSBXYXNtIG1lbW9yeSBv
cGVyYXRpb24uIEl0IHRha2VzIGFuIEludFB0cgogICAgIC8vIGFuZCBhIHBpbm5lZCByZWdpc3Rl
ciB0aGVuIGNvbXB1dGVzIHRoZSBhcHByb3ByaWF0ZSBJbnRQdHIgYWRkcmVzcy4gRm9yIHRoZSB1
c2UtY2FzZSBvZgpAQCAtMzAxLDYgKzQwMiwxMTIgQEAgaW5saW5lIGJvb2wgaXNEZWZpbml0ZWx5
VGVybWluYWwoT3Bjb2RlIAogICAgIH0KIH0KIAoraW5saW5lIGJvb2wgaXNMb2FkKE9wY29kZSBv
cGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBj
YXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2FkMTZTOgorICAgIGNh
c2UgTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNTdG9yZShPcGNvZGUgb3Bjb2Rl
KQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBT
dG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzTG9h
ZFN0b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNl
IExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBM
b2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNlIFN0b3Jl
MTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWMo
T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWlj
V2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdB
ZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAg
IGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBB
dG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY0NBUyhPcGNvZGUg
b3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FT
OgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBp
c0F0b21pY1hjaGcoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAg
IGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBB
dG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNo
Z1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlz
TWVtb3J5QWNjZXNzKE9wY29kZSBvcGNvZGUpCit7CisgICAgcmV0dXJuIGlzQXRvbWljKG9wY29k
ZSkgfHwgaXNMb2FkU3RvcmUob3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZSBzaWduRXh0ZW5k
T3Bjb2RlKFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdp
ZHRoODoKKyAgICAgICAgcmV0dXJuIFNFeHQ4OworICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAg
cmV0dXJuIFNFeHQxNjsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gT29wczsKKyAgICB9Cit9CisKK0pTX0VYUE9SVF9Q
UklWQVRFIE9wY29kZSBzdG9yZU9wY29kZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKTsKKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDIsNiArMjAyLDggQEAgdm9pZCBQcm9jZWR1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgYwog
ICAgICAgICB9CiAgICAgICAgIGRhdGFMb2coIiAgICAiLCBkZWVwRHVtcCgqdGhpcywgdmFsdWUp
LCAiXG4iKTsKICAgICB9CisgICAgaWYgKGhhc1F1aXJrcygpKQorICAgICAgICBvdXQucHJpbnQo
IkhhcyBRdWlya3M6IFRydWVcbiIpOwogICAgIGlmICh2YXJpYWJsZXMoKS5zaXplKCkpIHsKICAg
ICAgICAgb3V0LnByaW50KCJWYXJpYWJsZXM6XG4iKTsKICAgICAgICAgZm9yIChWYXJpYWJsZSog
dmFyaWFibGUgOiB2YXJpYWJsZXMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1Byb2NlZHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1By
b2NlZHVyZS5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQcm9jZWR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6
CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50KE9yaWdpbiwgVHlwZSwgaW50NjRfdCB2YWx1ZSk7
CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50KFZhbHVlKiwgaW50NjRfdCB2YWx1ZSk7CiAKKyAg
ICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIFZhbHVlKiBh
ZGRCb3R0b20oT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogYWRkQm90dG9tKFZhbHVlKik7CiAK
QEAgLTE5NSw2ICsxOTYsMTcgQEAgcHVibGljOgogICAgIC8vIGFsaXZlLiBHcmVhdCBmb3IgY29t
cGlsZXItZ2VuZXJhdGVkIGRhdGEgc2VjdGlvbnMsIGxpa2Ugc3dpdGNoIGp1bXAgdGFibGVzIGFu
ZCBjb25zdGFudCBwb29scy4KICAgICAvLyBUaGlzIHJldHVybnMgbWVtb3J5IHRoYXQgaGFzIGJl
ZW4gemVyby1pbml0aWFsaXplZC4KICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhZGREYXRh
U2VjdGlvbihzaXplX3QpOworICAgIAorICAgIC8vIFNvbWUgb3BlcmF0aW9ucyBhcmUgc3BlY2lm
aWVkIGluIEIzIElSIHRvIGJlaGF2ZSBvbmUgd2F5IGJ1dCBvbiB0aGlzIGdpdmVuIENQVSB0aGV5
IGJlaGF2ZSBhCisgICAgLy8gZGlmZmVyZW50IHdheS4gV2hlbiB0cnVlLCB0aG9zZSBCMyBJUiBv
cHMgc3dpdGNoIHRvIGJlaGF2aW5nIHRoZSBDUFUgd2F5LCBhbmQgdGhlIG9wdGltaXplciBtYXkK
KyAgICAvLyBzdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIGl0LgorICAgIC8vCisgICAgLy8gT25l
IHdheSB0byB0aGluayBvZiBpdCBpcyBsaWtlIHRoaXMuIEltYWdpbmUgdGhhdCB5b3UgZmluZCB0
aGF0IHRoZSBjbGVhbmVzdCB3YXkgb2YgbG93ZXJpbmcKKyAgICAvLyBzb21ldGhpbmcgaW4gbG93
ZXJNYWNyb3MgaXMgdG8gdW5jb25kaXRpb25hbGx5IHJlcGxhY2Ugb25lIG9wY29kZSB3aXRoIGFu
b3RoZXIuIFRoaXMgaXMgYSBzaG9ydGN1dAorICAgIC8vIHdoZXJlIHlvdSBpbnN0ZWFkIGtlZXAg
dGhlIHNhbWUgb3Bjb2RlLCBidXQgcmVseSBvbiB0aGUgb3Bjb2RlJ3MgbWVhbmluZyBjaGFuZ2Vz
IG9uY2UgbG93ZXJNYWNyb3MKKyAgICAvLyBzZXRzIGhhc1F1aXJrcy4KKyAgICBib29sIGhhc1F1
aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUXVpcmtzOyB9CisgICAgdm9pZCBzZXRIYXNRdWly
a3MoYm9vbCB2YWx1ZSkgeyBtX2hhc1F1aXJrcyA9IHZhbHVlOyB9CiAKICAgICBPcGFxdWVCeXBy
b2R1Y3RzJiBieXByb2R1Y3RzKCkgeyByZXR1cm4gKm1fYnlwcm9kdWN0czsgfQogCkBAIC0yNTIs
NiArMjY0LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFByaW50U3Ry
ZWFtJiwgT3JpZ2luKT4+IG1fb3JpZ2luUHJpbnRlcjsKICAgICBjb25zdCB2b2lkKiBtX2Zyb250
ZW5kRGF0YTsKICAgICBQQ1RvT3JpZ2luTWFwIG1fcGNUb09yaWdpbk1hcDsKKyAgICBib29sIG1f
aGFzUXVpcmtzIHsgZmFsc2UgfTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5jcHAJKHJldmlzaW9uIDIxMzQyNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNEb21pbmF0
b3JzLmgiCisjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZS5oIgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKQEAgLTg5LDYgKzkwLDIzIEBAIGJvb2wg
UHVyZUNTRTo6cHJvY2VzcyhWYWx1ZSogdmFsdWUsIERvbWkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK2Jvb2wgcHVyZUNTRShQcm9jZWR1cmUmIHByb2MpCit7CisgICAgUGhhc2VTY29wZSBwaGFz
ZVNjb3BlKHByb2MsICJwdXJlQ1NFIik7CisgICAgCisgICAgRG9taW5hdG9ycyYgZG9taW5hdG9y
cyA9IHByb2MuZG9taW5hdG9ycygpOworICAgIFB1cmVDU0UgcHVyZUNTRTsKKyAgICBib29sIHJl
c3VsdCA9IGZhbHNlOworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBwcm9jLmJsb2Nrc0lu
UHJlT3JkZXIoKSkgeworICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9jaykgeworICAg
ICAgICAgICAgcmVzdWx0IHw9IHZhbHVlLT5wZXJmb3JtU3Vic3RpdHV0aW9uKCk7CisgICAgICAg
ICAgICByZXN1bHQgfD0gcHVyZUNTRS5wcm9jZXNzKHZhbHVlLCBkb21pbmF0b3JzKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUHVyZUNTRS5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNQdXJlQ1NFLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDggQEAg
cHJpdmF0ZToKICAgICBIYXNoTWFwPFZhbHVlS2V5LCBNYXRjaGVzPiBtX21hcDsKIH07CiAKK2Jv
b2wgcHVyZUNTRShQcm9jZWR1cmUmKTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNl
bmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UmVkdWNlU3RyZW5ndGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgs
MTIgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNBdG9taWNW
YWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Js
b2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oIgog
I2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5l
cy5oIgotI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkIzUGhpQ2hp
bGRyZW4uaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKQEAgLTYwMiw3ICs2MDMs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBicmVhazsKLQorICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgTmVnOgogICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBO
ZWcoY29uc3RhbnQpCiAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IC1jb25zdGFudApAQCAtMTI5
NSw2ICsxMjk2LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgKCFtX3Byb2MuaGFzUXVpcmtzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6
IFNFeHQ4KEF0b21pY1hjaGdfX18pCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlzOiBBdG9t
aWNYY2hnX19fCisgICAgICAgICAgICAgICAgaWYgKGlzQXRvbWljWGNoZyhtX3ZhbHVlLT5jaGls
ZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDAp
LT5hczxBdG9taWNWYWx1ZT4oKS0+YWNjZXNzV2lkdGgoKSA9PSBXaWR0aDgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU0V4dDE2OgpAQCAtMTM0Myw2ICsx
MzU0LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFtX3Byb2MuaGFzUXVp
cmtzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNFeHQxNihBdG9taWNYY2hn
X19fKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXworICAgICAg
ICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQor
ICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFsdWU+
KCktPmFjY2Vzc1dpZHRoKCkgPT0gV2lkdGgxNikgeworICAgICAgICAgICAgICAgICAgICByZXBs
YWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBTRXh0MzI6CkBAIC0yMTAxLDIyICsyMTIyLDI1IEBAIHByaXZh
dGU6CiAgICAgICAgIEFTU0VSVChtX3ZhbHVlLT5udW1DaGlsZHJlbigpID49IDIpOwogICAgICAg
ICAKICAgICAgICAgLy8gTGVhdmUgaXQgYWxvbmUgaWYgdGhlIHJpZ2h0IGNoaWxkIGlzIGEgY29u
c3RhbnQuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNDb25zdGFudCgpKQorICAg
ICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKQorICAgICAgICAgICAgfHwg
bV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXND
b25zdGFudCgpKSB7CisgICAgICAgIGF1dG8gc3dhcCA9IFsmXSAoKSB7CiAgICAgICAgICAgICBz
dGQ6OnN3YXAobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAg
ICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQor
ICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pc0Nv
bnN0YW50KCkpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOworICAgICAgICAKKyAgICAgICAg
aWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMpCisgICAg
ICAgICAgICByZXR1cm4gc3dhcCgpOworICAgICAgICAKICAgICAgICAgLy8gU29ydCB0aGUgb3Bl
cmFuZHMuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGNhbm9uaWNhbGl6YXRpb24uIFdlIHVzZSB0aGUg
aW5kZXggaW5zdGVhZCBvZgogICAgICAgICAvLyB0aGUgYWRkcmVzcyB0byBtYWtlIHRoaXMgYXQg
bGVhc3Qgc2xpZ2h0bHkgZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxk
KDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4KCkpIHsKLSAgICAgICAgICAg
IHN0ZDo6c3dhcChtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmluZGV4KCkgPiBtX3ZhbHVlLT5jaGlsZCgx
KS0+aW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7CiAgICAgfQogCiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBhIGZvcndhcmQgYW5hbHlzaXMuIEluc3RlYWQs
IHdlIHVzZXMgYSBib3VuZGVkLXNlYXJjaCBiYWNrd2FyZHMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFs
dWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2Nr
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5
VmFsdWUuaCIKQEAgLTM0Niw2ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlw
ZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50
eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRh
dGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIExvYWQ6CkBAIC0z
NTMsNiArMzU1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5u
dW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpICE9IFZvaWQs
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7
CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFN0b3JlODoKQEAgLTM2Miw2ICszNjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBl
KCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAg
ICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFN0b3JlOgpAQCAtMzY5LDggKzM3Myw0OSBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQo
MSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2
YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFs
dWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgp
ID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpKSwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMiktPnR5cGUo
KSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZh
bGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNz
KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRvbWlj
U3Ryb25nQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hp
bGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+
bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1
ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMiktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgp
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVl
KTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgor
ICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgY2FzZSBBdG9taWNY
Y2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICAgICAgICAgIFZB
TElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUt
PmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7
CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIERlcGVuZDoKKyAgICAgICAgICAgICAgICBW
QUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0g
dmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigp
ID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CkBAIC01MzcsNiArNTgyLDIwIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlk
YXRlRmVuY2UoVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9y
eSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVu
Y2UoKSkKKyAgICAgICAgICAgIFZBTElEQVRFKG1lbW9yeS0+YWNjZXNzQmFuaygpID09IEdQLCAo
IkZlbmNlIGF0ICIsICptZW1vcnkpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUF0
b21pYyhWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0g
dmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAKKyAgICAgICAgVkFMSURBVEUoYmVz
dFR5cGUoR1AsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkgPT0gYXRvbWljLT5hY2Nlc3NUeXBlKCks
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgfQogCiAgICAgdm9pZCB2YWxpZGF0ZVN0YWNrQWNjZXNz
KFZhbHVlKiB2YWx1ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
Y3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEIzX0pJ
VCkKIAogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWlj
VmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNC
b3R0b21Qcm92aWRlci5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpAQCAtNTEwLDYgKzUx
MSw3IEBAIGJvb2wgVmFsdWU6OnJldHVybnNCb29sKCkgY29uc3QKICAgICBjYXNlIEFib3ZlRXF1
YWw6CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKKyAg
ICBjYXNlIEF0b21pY1dlYWtDQVM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgUGhp
OgogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBzdG9yeSBoZXJlLgpAQCAtNTg5
LDYgKzU5MSw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQmVs
b3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgY2FzZSBTZWxlY3Q6Cisg
ICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGl2OgogICAgIGNhc2Ug
VURpdjoKQEAgLTYwMCwxNiArNjAzLDQ0IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25z
dAogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgTG9hZDE2WjoKICAgICBjYXNlIExvYWQxNlM6
Ci0gICAgY2FzZSBMb2FkOgotICAgICAgICByZXN1bHQucmVhZHMgPSBhczxNZW1vcnlWYWx1ZT4o
KS0+cmFuZ2UoKTsKKyAgICBjYXNlIExvYWQ6IHsKKyAgICAgICAgY29uc3QgTWVtb3J5VmFsdWUq
IG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1v
cnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC53cml0ZXMgPSBtZW1vcnktPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgICAgIHJl
c3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBl
bmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBTdG9yZTg6CiAg
ICAgY2FzZSBTdG9yZTE2OgotICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJlc3VsdC53cml0ZXMg
PSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIFN0b3JlOiB7CisgICAgICAg
IGNvbnN0IE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAg
cmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+aGFz
RmVuY2UoKSkgeworICAgICAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5mZW5jZVJhbmdl
KCk7CisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOworICAgICAgICB9CisgICAgICAg
IHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBj
YXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRv
bWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdY
b3I6CisgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgIGNvbnN0IEF0b21pY1ZhbHVlKiBh
dG9taWMgPSBhczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gYXRvbWlj
LT5yYW5nZSgpIHwgYXRvbWljLT5mZW5jZVJhbmdlKCk7CisgICAgICAgIHJlc3VsdC53cml0ZXMg
PSBhdG9taWMtPnJhbmdlKCkgfCBhdG9taWMtPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgaWYgKGF0
b21pYy0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAg
ICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAg
fQogICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRy
dWU7CiAgICAgICAgIGJyZWFrOwpAQCAtNjE3LDE4ICs2NDgsNyBAQCBFZmZlY3RzIFZhbHVlOjpl
ZmZlY3RzKCkgY29uc3QKICAgICAgICAgY29uc3QgRmVuY2VWYWx1ZSogZmVuY2UgPSBhczxGZW5j
ZVZhbHVlPigpOwogICAgICAgICByZXN1bHQucmVhZHMgPSBmZW5jZS0+cmVhZDsKICAgICAgICAg
cmVzdWx0LndyaXRlcyA9IGZlbmNlLT53cml0ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIFByZXZl
bnQga2lsbGluZyBvZiBmZW5jZXMgdGhhdCBjbGFpbSBub3QgdG8gd3JpdGUgYW55dGhpbmcuIEl0
J3MgYSBiaXQgd2VpcmQgdGhhdCB3ZSB1c2UKLSAgICAgICAgLy8gbG9jYWwgc3RhdGUgYXMgdGhl
IHdheSB0byBkbyB0aGlzLCBidXQgaXQgaGFwcGVucyB0byB3b3JrOiB3ZSBtdXN0IGFzc3VtZSB0
aGF0IHdlIGNhbm5vdAotICAgICAgICAvLyBraWxsIHdyaXRlc0xvY2FsU3RhdGUgdW5sZXNzIHdl
IHVuZGVyc3RhbmRzIGV4YWN0bHkgd2hhdCB0aGUgaW5zdHJ1Y3Rpb24gaXMgZG9pbmcgKGxpa2UK
LSAgICAgICAgLy8gdGhlIHdheSB0aGF0IGZpeFNTQSB1bmRlcnN0YW5kcyBTZXQvR2V0IGFuZCB0
aGUgd2F5IHRoYXQgcmVkdWNlU3RyZW5ndGggYW5kIG90aGVycwotICAgICAgICAvLyB1bmRlcnN0
YW5kIFVwc2lsb24pLiBUaGlzIHdvdWxkIG9ubHkgYmVjb21lIGEgcHJvYmxlbSBpZiB3ZSBoYWQg
c29tZSBhbmFseXNpcyB0aGF0IHdhcwotICAgICAgICAvLyBsb29raW5nIHRvIHVzZSB0aGUgd3Jp
dGVzTG9jYWxTdGF0ZSBiaXQgdG8gaW52YWxpZGF0ZSBhIENTRSBvdmVyIGxvY2FsIHN0YXRlIG9w
ZXJhdGlvbnMuCi0gICAgICAgIC8vIFRoZW4gYSBGZW5jZSB3b3VsZCBsb29rIGJsb2NrLCBzYXks
IHRoZSBlbGltaW5hdGlvbiBvZiBhIHJlZHVuZGFudCBHZXQuIEJ1dCBpdCBsaWtlCi0gICAgICAg
IC8vIHRoYXQncyBub3QgYXQgYWxsIGhvdyBvdXIgb3B0aW1pemF0aW9ucyBmb3IgU2V0L0dldC9V
cHNpbG9uL1BoaSB3b3JrIC0gdGhleSBncm9rIHRoZWlyCi0gICAgICAgIC8vIG9wZXJhdGlvbnMg
ZGVlcGx5IGVub3VnaCB0aGF0IHRoZXkgaGF2ZSBubyBuZWVkIHRvIGNoZWNrIHRoaXMgYml0IC0g
c28gdGhpcyBjaGVhdCBpcwotICAgICAgICAvLyBmaW5lLgotICAgICAgICByZXN1bHQud3JpdGVz
TG9jYWxTdGF0ZSA9IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIENDYWxsOgpAQCAtNjk0LDYgKzcxNCw3IEBAIFZhbHVl
S2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBCaXR3aXNl
Q2FzdDoKICAgICBjYXNlIE5lZzoKKyAgICBjYXNlIERlcGVuZDoKICAgICAgICAgcmV0dXJuIFZh
bHVlS2V5KGtpbmQoKSwgdHlwZSgpLCBjaGlsZCgwKSk7CiAgICAgY2FzZSBBZGQ6CiAgICAgY2Fz
ZSBTdWI6CkBAIC03NDYsMTIgKzc2NywxNiBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5KCkgY29uc3QK
ICAgICB9CiB9CiAKLXZvaWQgVmFsdWU6OnBlcmZvcm1TdWJzdGl0dXRpb24oKQorYm9vbCBWYWx1
ZTo6cGVyZm9ybVN1YnN0aXR1dGlvbigpCiB7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAg
ICBmb3IgKFZhbHVlKiYgY2hpbGQgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgIHdoaWxlIChjaGls
ZC0+b3Bjb2RlKCkgPT0gSWRlbnRpdHkpCisgICAgICAgIHdoaWxlIChjaGlsZC0+b3Bjb2RlKCkg
PT0gSWRlbnRpdHkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAgICAgICBj
aGlsZCA9IGNoaWxkLT5jaGlsZCgwKTsKKyAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OwogfQogCiBib29sIFZhbHVlOjppc0ZyZWUoKSBjb25zdApAQCAtODAxLDYgKzgyNiw3IEBA
IFR5cGUgVmFsdWU6OnR5cGVGb3IoS2luZCBraW5kLCBWYWx1ZSogZmkKICAgICBjYXNlIENoZWNr
QWRkOgogICAgIGNhc2UgQ2hlY2tTdWI6CiAgICAgY2FzZSBDaGVja011bDoKKyAgICBjYXNlIERl
cGVuZDoKICAgICAgICAgcmV0dXJuIGZpcnN0Q2hpbGQtPnR5cGUoKTsKICAgICBjYXNlIEZyYW1l
UG9pbnRlcjoKICAgICAgICAgcmV0dXJuIHBvaW50ZXJUeXBlKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbHVlLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDExIEBAIHB1Ymxp
YzoKICAgICAKICAgICBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLm9wY29k
ZSgpOyB9CiAgICAgCisgICAgLy8gTm90ZSB0aGF0IHRoZSBraW5kIGlzIG1lYW50IHRvIGJlIGlt
bXV0YWJsZS4gRG8gdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgdGhpcyBpcyBzYWZlLiBJdCdzIG5v
dAorICAgIC8vIHVzdWFsbHkgc2FmZS4KKyAgICB2b2lkIHNldEtpbmRVbnNhZmVseShLaW5kIGtp
bmQpIHsgbV9raW5kID0ga2luZDsgfQorICAgIHZvaWQgc2V0T3Bjb2RlVW5zYWZlbHkoT3Bjb2Rl
IG9wY29kZSkgeyBtX2tpbmQuc2V0T3Bjb2RlKG9wY29kZSk7IH0KKyAgICAKICAgICAvLyBJdCdz
IGdvb2QgcHJhY3RpY2UgdG8gbWlycm9yIEtpbmQgbWV0aG9kcyBoZXJlLCBzbyB5b3UgY2FuIHNh
eSB2YWx1ZS0+aXNCbGFoKCkKICAgICAvLyBpbnN0ZWFkIG9mIHZhbHVlLT5raW5kKCkuaXNCbGFo
KCkuCiAgICAgYm9vbCBpc0NoaWxsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLmlzQ2hpbGwoKTsg
fQpAQCAtMTA3LDYgKzExMiw4IEBAIHB1YmxpYzoKICAgICAvLyB2YWx1ZXMgd2l0aCBJZGVudGl0
aWVzIG9uIGJvdHRvbSBjb25zdGFudHMuIEZvciB0aGlzIHJlYXNvbiwgdGhpcyB0YWtlcyBhIGNh
bGxiYWNrIHRoYXQgaXMKICAgICAvLyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYm90dG9tcy4g
VGhlcmUncyBhIHV0aWxpdHkgZm9yIHRoaXMsIHNlZSBCM0JvdHRvbVByb3ZpZGVyLmguIFlvdQog
ICAgIC8vIGNhbiBhbHNvIGFjY2VzcyB0aGF0IHV0aWxpdHkgdXNpbmcgcmVwbGFjZVdpdGhCb3R0
b20oSW5zZXJ0aW9uU2V0Jiwgc2l6ZV90KS4KKyAgICAvLworICAgIC8vIFlvdSdyZSBndWFyYW50
ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQm90dG9tUHJv
dmlkZXI+CiAgICAgdm9pZCByZXBsYWNlV2l0aEJvdHRvbShjb25zdCBCb3R0b21Qcm92aWRlciYp
OwogICAgIApAQCAtMjU2LDcgKzI2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBNYWtlcyBzdXJlIHRo
YXQgbm9uZSBvZiB0aGUgY2hpbGRyZW4gYXJlIElkZW50aXR5J3MuIElmIGEgY2hpbGQgcG9pbnRz
IHRvIElkZW50aXR5LCB0aGlzIHdpbGwKICAgICAvLyByZXBvaW50IGl0IGF0IHRoZSBJZGVudGl0
eSdzIGNoaWxkLiBGb3Igc2ltcGxpY2l0eSwgdGhpcyB3aWxsIGZvbGxvdyBhcmJpdHJhcmlseSBs
b25nIGNoYWlucwogICAgIC8vIG9mIElkZW50aXR5J3MuCi0gICAgdm9pZCBwZXJmb3JtU3Vic3Rp
dHV0aW9uKCk7CisgICAgYm9vbCBwZXJmb3JtU3Vic3RpdHV0aW9uKCk7CiAgICAgCiAgICAgLy8g
RnJlZSB2YWx1ZXMgYXJlIHRob3NlIHdob3NlIHByZXNlbmNlIGlzIGd1YXJhbnRlZWQgbm90IHRv
IGh1cnQgY29kZS4gV2UgY29uc2lkZXIgY29uc3RhbnRzLAogICAgIC8vIElkZW50aXRpZXMsIGFu
ZCBOb3BzIHRvIGJlIGZyZWUuIENvbnN0YW50cyBhcmUgZnJlZSBiZWNhdXNlIHdlIGhvaXN0IHRo
ZW0gdG8gYW4gb3B0aW1hbCBwbGFjZS4KQEAgLTMyMSw2ICszMjgsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIElUb0Y6CiAgICAgICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAgIGNhc2Ug
QnJhbmNoOgorICAgICAgICBjYXNlIERlcGVuZDoKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShu
dW1BcmdzICE9IDEpKQogICAgICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJncyk7CiAg
ICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRo
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAJ
KHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMzggQEAKIAogI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgogCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworVHlwZSBiZXN0
VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAg
ICBjYXNlIFdpZHRoODoKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgY2FzZSBXaWR0aDMyOgorICAg
ICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJldHVy
biBJbnQzMjsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBGbG9hdDsKKyAg
ICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gVm9pZDsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHN3aXRjaCAoYmFuaykgewor
ICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDY0OworICAgICAgICBjYXNl
IEZQOgorICAgICAgICAgICAgcmV0dXJuIERvdWJsZTsKKyAgICAgICAgfQorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICB9Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVm9pZDsKK30KKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKIG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6V2lkdGggd2lkdGgpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDE4
IEBAIGlubGluZSBXaWR0aCB3aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCitpbmxpbmUgV2lkdGggY2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgp
Cit7CisgICAgcmV0dXJuIHN0ZDo6bWF4KFdpZHRoMzIsIHdpZHRoKTsKK30KKworaW5saW5lIGJv
b2wgaXNDYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gd2lkdGggPj0g
V2lkdGgzMjsKK30KKworVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKTsKKwog
aW5saW5lIFdpZHRoIGNvbnNlcnZhdGl2ZVdpZHRoKEJhbmsgYmFuaykKIHsKICAgICByZXR1cm4g
YmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2NDsKQEAgLTkzLDYgKzEwNSwyMCBA
QCBpbmxpbmUgV2lkdGggd2lkdGhGb3JCeXRlcyh1bnNpZ25lZCBieXRlCiAgICAgfQogfQogCitp
bmxpbmUgdWludDY0X3QgbWFzayhXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7
CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMDAwZmZsbHU7
CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDBmZmZmbGx1
OworICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDBmZmZmZmZmZmxs
dTsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHJldHVybiAweGZmZmZmZmZmZmZmZmZmZmZs
bHU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdU
RiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24gMjEzNDI1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBaXJWYWxpZGF0ZS5oIgogI2luY2x1ZGUgIkFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdW
YWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxv
Y2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb21w
aWxhdGlvbi5oIgpAQCAtNDQsNiArNDUsNyBAQAogI2luY2x1ZGUgIkIzTWF0aEV4dHJhcy5oIgog
I2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKICNpbmNsdWRlICJCM01vdmVDb25zdGFudHMuaCIK
KyNpbmNsdWRlICJCM05hdGl2ZVRyYWl0cy5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAj
aW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgogI2luY2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5o
IgpAQCAtMjk3LDYgKzI5OSwyNCBAQCB2b2lkIHRlc3RMb2FkNDIoKQogICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50Pihwcm9jKSA9PSA0Mik7CiB9CiAKK3ZvaWQgdGVzdExvYWRBY3E0MigpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBpbnQgeCA9IDQyOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgJngpLAorICAgICAgICAgICAgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSkpOwor
CisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgIENIRUNLKGludm9r
ZTxpbnQ+KCpjb2RlKSA9PSA0Mik7Cit9CisKIHZvaWQgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbChp
bnQzMl90IG9mZnNldDY0LCBpbnQzMl90IG9mZnNldDMyKQogewogICAgIHsKQEAgLTU3NDgsNiAr
NTc2OCwzNSBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQzMihpbnQgYW1vdW50KQogICAgIENIRUNL
KHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3Ez
MihpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZh
bHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAg
cHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9y
aWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAgICAg
ICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7
CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsK
KyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hl
Y2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9r
ZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsK
K30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tMzIoaW50IGFtb3VudCkKIHsKICAgICBQcm9j
ZWR1cmUgcHJvYzsKQEAgLTU3OTIsNiArNTg0MSw3NCBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQ4
KGludCBhbW91bnQsIEIzOjpPCiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7CiB9CiAK
K3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2Fk
T3Bjb2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgaW50OF90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVl
KiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJv
YywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9yaWdp
bigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAgICAgICBz
bG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisK
KyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxp
bnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30K
Kwordm9pZCB0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4KGludCBhbW91bnQsIEIzOjpPcGNv
ZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDhfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQ
dHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJnNsb3QpOworICAgIFZhbHVlKiBsb2FkZWRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90
UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICBQYXRjaHBvaW50VmFs
dWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBW
b2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAg
ICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93
U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMigweGJlZWYpLCAmc2xvdCk7CisgICAgICAgIH0pOworICAgIHBhdGNocG9pbnQtPmVm
ZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5mZW5jZSA9
IHRydWU7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywg
U3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICBsb2FkZWRWYWx1ZSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAg
ICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkp
IHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWlu
dm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50
KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tOChpbnQgYW1vdW50LCBCMzo6T3Bjb2Rl
IGxvYWRPcGNvZGUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01ODM2LDYgKzU5NTMsMzUg
QEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkMTYoaW50IGFtb3VudCwgQjM6OgogICAgIENIRUNLKHNs
b3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNihp
bnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQxNl90IHNs
b3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUxNiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQy
KSwgSGVhcFJhbmdlKDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVh
cFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9j
KTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpj
b2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7
CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hF
Q0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTE2
KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKIHsKICAgICBQcm9jZWR1cmUgcHJv
YzsKQEAgLTU4NzgsNiArNjAyNCwzMyBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQ2NChpbnQgYW1v
dW50KQogICAgIENIRUNLKHNsb3QgPT0gMzcwMDAwMDAwMDBsbCArIGFtb3VudCk7CiB9CiAKK3Zv
aWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KGludCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQ2
NF90IHNsb3QgPSAzNzAwMDAwMDAwMGxsOworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSBy
b290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAg
ICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNsb3RQdHIs
IDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQy
KSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBp
ZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRh
Iik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQor
ICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9
PSAzNzAwMDAwMDAwMGxsICsgYW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1t
NjQoaW50NjRfdCBhbW91bnQpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzc5MSw3ICsx
Mzk2NCw3IEBAIHZvaWQgdGVzdFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCiAgICAgY29tcGls
ZUFuZFJ1bjxpbnQ+KHByb2MpOwogICAgIHVuc2lnbmVkIHN0b3JlQ291bnQgPSAwOwogICAgIGZv
ciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoTWVtb3J5VmFs
dWU6OmlzU3RvcmUodmFsdWUtPm9wY29kZSgpKSkKKyAgICAgICAgaWYgKGlzU3RvcmUodmFsdWUt
Pm9wY29kZSgpKSkKICAgICAgICAgICAgIHN0b3JlQ291bnQrKzsKICAgICB9CiAgICAgQ0hFQ0tf
RVEoc3RvcmVDb3VudCwgMnUpOwpAQCAtMTM5OTcsNiArMTQxNzAsNyBAQCB2b2lkIHRlc3RYODZM
ZWFBZGRBZGQoKQogICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcmVzdWx0KTsKICAgICAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAg
IENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAoMSArIDIpICsgMTAwKTsK
ICAgICBjaGVja0Rpc2Fzc2VtYmx5KAogICAgICAgICAqY29kZSwKICAgICAgICAgWyZdIChjb25z
dCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CkBAIC0xNDAwNCw3ICsxNDE3OCw2IEBAIHZv
aWQgdGVzdFg4NkxlYUFkZEFkZCgpCiAgICAgICAgICAgICAgICAgfHwgc3Ryc3RyKGRpc2Fzc2Vt
Ymx5LCAibGVhIDB4NjQoJXJzaSwlcmRpKSwgJXJheCIpOwogICAgICAgICB9LAogICAgICAgICAi
RXhwZWN0ZWQgdG8gZmluZCBzb21ldGhpbmcgbGlrZSBsZWEgMHg2NCglcmRpLCVyc2kpLCAlcmF4
IGJ1dCBkaWRuJ3QhIik7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90PigqY29kZSwgMSwg
MiksICgxICsgMikgKyAxMDApOwogfQogCiB2b2lkIHRlc3RYODZMZWFBZGRTaGxSaWdodCgpCkBA
IC0xNDA0MSw2ICsxNDIxNCw3IEBAIHZvaWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTEoKQog
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0
KTsKICAgICAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIENIRUNLX0VRKGlu
dm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgMik7CiAgICAgY2hlY2tEaXNhc3NlbWJs
eSgKICAgICAgICAgKmNvZGUsCiAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlzYXNzZW1ibHkp
IC0+IGJvb2wgewpAQCAtMTQwNDgsNyArMTQyMjIsNiBAQCB2b2lkIHRlc3RYODZMZWFBZGRTaGxM
ZWZ0U2NhbGUxKCkKICAgICAgICAgICAgICAgICB8fCBzdHJzdHIoZGlzYXNzZW1ibHksICJsZWEg
KCVyc2ksJXJkaSksICVyYXgiKTsKICAgICAgICAgfSwKICAgICAgICAgIkV4cGVjdGVkIHRvIGZp
bmQgc29tZXRoaW5nIGxpa2UgbGVhICglcmRpLCVyc2kpLCAlcmF4IGJ1dCBkaWRuJ3QhIik7Ci0g
ICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksIDEgKyAyKTsKIH0KIAog
dm9pZCB0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlMigpCkBAIC0xNDI3Nyw2ICsxNDQ1MCw2ODAg
QEAgdm9pZCB0ZXN0T3B0aW1pemVNYXRlcmlhbGl6YXRpb24oKQogICAgIENIRUNLKGZvdW5kKTsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1dlYWtDQVMoKQorewor
ICAgIFR5cGUgdHlwZSA9IE5hdGl2ZVRyYWl0czxUPjo6dHlwZTsKKyAgICBXaWR0aCB3aWR0aCA9
IE5hdGl2ZVRyYWl0czxUPjo6d2lkdGg7CisgICAgCisgICAgYXV0byBjaGVja015RGlzYXNzZW1i
bHkgPSBbJl0gKENvbXBpbGF0aW9uJiBjb21waWxhdGlvbiwgYm9vbCBmZW5jZWQpIHsKKyAgICAg
ICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBp
bGF0aW9uLCAibG9jayIpOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGls
YXRpb24sICJjbXB4Y2hnIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZmVu
Y2VkKSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24s
ICJsZGF4Iik7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRp
b24sICJzdGx4Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGR4Iik7CisgICAgICAgICAgICAgICAgY2hl
Y2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJzdHgiKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH07CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNC
bG9jayogcmVsb29wID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBkb25l
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBP
cmlnaW4oKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMocmVsb29wKTsKKyAgICAgICAg
CisgICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJy
YW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxBdG9taWNWYWx1
ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRo
LAorICAgICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0cikpOwor
ICAgICAgICByZWxvb3AtPnNldFN1Y2Nlc3NvcnMoZG9uZSwgcmVsb29wKTsKKyAgICAgICAgCisg
ICAgICAgIGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7Cisg
ICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZh
bHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOwor
ICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsx
XSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0K
KyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiByZWxvb3AgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9yaWdpbigpKTsKKyAgICAg
ICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhyZWxvb3ApOworICAgICAgICAKKyAgICAgICAgcmVsb29w
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAg
ICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAor
ICAgICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBI
ZWFwUmFuZ2UoKSkpOworICAgICAgICByZWxvb3AtPnNldFN1Y2Nlc3NvcnMoZG9uZSwgcmVsb29w
KTsKKyAgICAgICAgCisgICAgICAgIGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2Mp
OworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2
YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUs
IGZhbHNlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNC
bG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21p
Y1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwg
d2lkdGgsCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBwdHIpKTsK
KyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhzdWNjLCBmYWlsKTsKKyAgICAgICAgCisgICAg
ICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9y
ZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZElu
dENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsK
KyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsK
KyAgICAgICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOwor
ICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1
ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAodmFsdWVbMF0gPT0gNDIpCisgICAgICAgICAgICBp
bnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0
YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAg
ICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lk
PigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8
VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNr
TXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBW
YWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdp
bigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQo
cHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IEludDMyLCAwKSkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2MpOwor
ICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAg
c3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAg
ICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNv
bXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7
CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICh2YWx1ZVswXSA9PSA0MikK
KyAgICAgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19F
USh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVl
WzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAg
ICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsK
KyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisg
ICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9y
aWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZElu
dENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGls
ZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAg
ICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hpbGUgKCFpbnZva2U8Ym9vbD4oKmNvZGUs
IHZhbHVlKSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigw
eGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgCisgICAg
ICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0soIWludm9r
ZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRp
Y19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAg
ICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7Cisg
ICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHBy
b2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDApKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAg
ICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsx
XSA9IDEzOworICAgICAgICB3aGlsZSAoaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpIHsgfQor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIAorICAgICAgICB2YWx1ZVswXSA9
IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKGludm9rZTxib29sPigqY29kZSwg
dmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNz
ZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0
MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAg
ICAgICAgICAgICAgIDQyKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxl
KHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAg
ICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAoIWludm9rZTxib29sPigqY29kZSwg
Yml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZSkgLSA0MikpIHsgfQorICAgICAgICBDSEVDS19F
USh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzFdLCAxMyk7CisgICAgICAgIAorICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+
KDMwMCk7CisgICAgICAgIENIRUNLKCFpbnZva2U8Ym9vbD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxp
bnRwdHJfdD4odmFsdWUpIC0gNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRp
Y19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAg
ICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1N0cm9uZ0NBUygpCit7CisgICAgVHlwZSB0eXBl
ID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBlOworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRz
PFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29t
cGlsYXRpb24mIGNvbXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAgICAgICBpZiAoaXNYODYo
KSkgeworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsb2Nr
Iik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImNtcHhj
aGciKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsKKyAgICAg
ICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgiKTsKKyAg
ICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0bHgiKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oY29tcGlsYXRpb24sICJsZHgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbihjb21waWxhdGlvbiwgInN0eCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fTsKKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0g
cHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJv
bmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiks
CisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICByb290LT5z
ZXRTdWNjZXNzb3JzKHN1Y2MsIGZhaWwpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0
aCksIE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywg
T3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAg
ICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAg
ICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVb
Ml07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAg
ICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsw
XSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7
CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tl
PHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNf
Y2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAg
Y2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAg
ICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigK
KyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAg
ICBwdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAg
ICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7CisgICAgICAgIAorICAgICAgICBz
dWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNv
ZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAg
ICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAg
ICAgIAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAg
ICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0g
PSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAg
ICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIGZhbHNlKTsKKyAgICB9CisgICAg
CisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FT
LCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAg
ICAgICAgICAgICAgICAgICBwdHIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgcm9vdC0+c2V0U3Vj
Y2Vzc29ycyhmYWlsLCBzdWNjKTsKKyAgICAgICAgCisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdp
bigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGZh
aWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOwor
ICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBp
bnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0
YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAg
ICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lk
PigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8
VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNr
TXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0
aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHBy
b2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAg
ICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVb
MV0gPSAxMzsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIDQyKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19j
YXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFsdWUpLCBz
dGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19j
YXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBj
aGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2Ms
IEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwg
NDIpKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAg
ICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsx
XSA9IDEzOworICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxU
PigzMDApOworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENI
RUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwg
dHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBF
cXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwg
dHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3Rh
bnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRD
b25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpKTsKKyAgICAgICAg
ICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVl
WzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAg
ICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAg
ICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCAmdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAg
IH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1hjaGcoQjM6Ok9w
Y29kZSBvcGNvZGUpCit7CisgICAgVHlwZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBlOwor
ICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBhdXRv
IGRvVGhlTWF0aCA9IFsmXSAoVCYgbWVtb3J5LCBUIG9wZXJhbmQpIC0+IFQgeworICAgICAgICBU
IG9sZFZhbHVlID0gbWVtb3J5OworICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICBj
YXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBtZW1vcnkgKz0gb3BlcmFuZDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBt
ZW1vcnkgJj0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21p
Y1hjaGdPcjoKKyAgICAgICAgICAgIG1lbW9yeSB8PSBvcGVyYW5kOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIG1lbW9yeSAtPSBv
cGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoK
KyAgICAgICAgICAgIG1lbW9yeSBePSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgIG1lbW9yeSA9IG9wZXJhbmQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOwor
ICAgIH07CisgICAgCisgICAgYXV0byBvbGRWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3BlcmFu
ZCkgLT4gVCB7CisgICAgICAgIHJldHVybiBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5kKTsKKyAg
ICB9OworICAgIAorICAgIGF1dG8gbmV3VmFsdWUgPSBbJl0gKFQgbWVtb3J5LCBUIG9wZXJhbmQp
IC0+IFQgeworICAgICAgICBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5kKTsKKyAgICAgICAgcmV0
dXJuIG1lbW9yeTsKKyAgICB9OworICAgIAorICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0g
WyZdIChDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGJvb2wgZmVuY2VkKSB7CisgICAgICAgIGlm
IChpc1g4NigpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24s
ICJsb2NrIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGZlbmNlZCkgeworICAg
ICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGRheCIpOwor
ICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3RseCIp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbihjb21waWxhdGlvbiwgImxkeCIpOworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3Ry
dWN0aW9uKGNvbXBpbGF0aW9uLCAic3R4Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9OworICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNv
ZGUsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAg
ICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAgICAgICAgdmFsdWVbMV0g
PSAxMDA7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFsdWUpLCBvbGRWYWx1
ZSg1LCAxKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCAxKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMDApOworICAgICAgICBjaGVja015RGlzYXNzZW1i
bHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0g
Y29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1
OworICAgICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpj
b2RlLCB2YWx1ZSksIG9sZFZhbHVlKDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBd
LCBuZXdWYWx1ZSg1LCA0MikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTAwKTsKKyAg
ICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUo
cHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAgICAg
ICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAgIGludm9rZTxUPigqY29kZSwgdmFsdWUpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFsdWUoNSwgNDIpKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMV0sIDEwMCk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1
ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCB3
aWR0aCwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCA0MiksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAw
LCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9
IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0g
NTsKKyAgICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAgIGludm9rZTxUPigqY29kZSwgdmFs
dWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFsdWUoNSwgNDIpKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgq
Y29kZSwgZmFsc2UpOworICAgIH0KK30KKwordm9pZCB0ZXN0RGVwZW5kMzIoKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogZmlyc3QgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgcHRy
LCAwKTsKKyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
KyAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgcHRyLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBa
RXh0MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgRGVwZW5kLCBPcmlnaW4oKSwgZmlyc3QpKSksCisgICAgICAgIDQpOworICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmlyc3QsIHNl
Y29uZCkpOworICAgIAorICAgIGludDMyX3QgdmFsdWVzWzJdOworICAgIHZhbHVlc1swXSA9IDQy
OworICAgIHZhbHVlc1sxXSA9IDB4YmVlZjsKKyAgICAKKyAgICBhdXRvIGNvZGUgPSBjb21waWxl
KHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9u
KCpjb2RlLCAiZW9yIik7CisgICAgZWxzZSBpZiAoaXNYODYoKSkgeworICAgICAgICBjaGVja0Rv
ZXNOb3RVc2VJbnN0cnVjdGlvbigqY29kZSwgIm1mZW5jZSIpOworICAgICAgICBjaGVja0RvZXNO
b3RVc2VJbnN0cnVjdGlvbigqY29kZSwgImxvY2siKTsKKyAgICB9CisgICAgQ0hFQ0tfRVEoaW52
b2tlPGludDMyX3Q+KCpjb2RlLCB2YWx1ZXMpLCA0MiArIDB4YmVlZik7Cit9CisKK3ZvaWQgdGVz
dERlcGVuZDY0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgVmFsdWUqIGZpcnN0ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2Fk
LCBJbnQ2NCwgT3JpZ2luKCksIHB0ciwgMCk7CisgICAgVmFsdWUqIHNlY29uZCA9IHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFk
ZCwgT3JpZ2luKCksIHB0ciwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgRGVwZW5kLCBPcmlnaW4oKSwgZmlyc3QpKSwKKyAgICAgICAgOCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBmaXJzdCwgc2Vjb25k
KSk7CisgICAgCisgICAgaW50NjRfdCB2YWx1ZXNbMl07CisgICAgdmFsdWVzWzBdID0gNDI7Cisg
ICAgdmFsdWVzWzFdID0gMHhiZWVmOworICAgIAorICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJv
Yyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNv
ZGUsICJlb3IiKTsKKyAgICBlbHNlIGlmIChpc1g4NigpKSB7CisgICAgICAgIGNoZWNrRG9lc05v
dFVzZUluc3RydWN0aW9uKCpjb2RlLCAibWZlbmNlIik7CisgICAgICAgIGNoZWNrRG9lc05vdFVz
ZUluc3RydWN0aW9uKCpjb2RlLCAibG9jayIpOworICAgIH0KKyAgICBDSEVDS19FUShpbnZva2U8
aW50NjRfdD4oKmNvZGUsIHZhbHVlcyksIDQyICsgMHhiZWVmKTsKK30KKwogdm9pZCB0ZXN0V2Fz
bUJvdW5kc0NoZWNrKHVuc2lnbmVkIG9mZnNldCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAg
LTE0MzcwLDYgKzE1MjE3LDEzIEBAIGRvdWJsZSBuZWdhdGl2ZVplcm8oKQogICAgIHJldHVybiAt
emVybygpOwogfQogCisjZGVmaW5lIFJVTl9OT1codGVzdCkgZG8geyAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIGlmICghc2hvdWxkUnVuKCN0ZXN0KSkgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIGRhdGFMb2coI3Rlc3QgIi4uLlxuIik7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRl
c3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRhdGFMb2co
I3Rlc3QgIjogT0shXG4iKTsgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCiAj
ZGVmaW5lIFJVTih0ZXN0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
IGlmICghc2hvdWxkUnVuKCN0ZXN0KSkgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBi
cmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNDQyMSwxMiArMTUyNzUs
MTEgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgICAgICByZXR1cm4gIWZpbHRl
ciB8fCAhIXN0cmNhc2VzdHIodGVzdE5hbWUsIGZpbHRlcik7CiAgICAgfTsKIAotICAgIC8vIFdl
IHJ1biB0aGlzIHRlc3QgZmlyc3QgYmVjYXVzZSBpdCBmaWRkbGVzIHdpdGggc29tZQotICAgIC8v
IEpTQyBvcHRpb25zLgotICAgIHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3Bp
bGxlZDIoKTsKKyAgICBSVU5fTk9XKHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0Jl
U3BpbGxlZDIoKSk7CiAKICAgICBSVU4odGVzdDQyKCkpOwogICAgIFJVTih0ZXN0TG9hZDQyKCkp
OworICAgIFJVTih0ZXN0TG9hZEFjcTQyKCkpOwogICAgIFJVTih0ZXN0TG9hZE9mZnNldEltbTlN
YXgoKSk7CiAgICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1heFBsdXNPbmUoKSk7CiAgICAgUlVO
KHRlc3RMb2FkT2Zmc2V0SW1tOU1heFBsdXNUd28oKSk7CkBAIC0xNTA5OSwxNiArMTU5NTIsMjMg
QEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0TmVnMzIoNTIpKTsK
ICAgICBSVU4odGVzdE5lZ1B0cig1MykpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMzIoNDYp
KTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTMyKDQ2KSk7CiAgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWRJbW0zMig0NikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkNjQoNDYwMCkp
OworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxNjQoNDYwMCkpOwogICAgIFJVTih0ZXN0
U3RvcmVBZGRMb2FkSW1tNjQoNDYwMCkpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkOCg0LCBM
b2FkOFopKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoNCwgTG9hZDhaKSk7Cisg
ICAgUlVOKHRlc3RTdG9yZVJlbEFkZEZlbmNlTG9hZEFjcTgoNCwgTG9hZDhaKSk7CiAgICAgUlVO
KHRlc3RTdG9yZUFkZExvYWRJbW04KDQsIExvYWQ4WikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRM
b2FkOCg0LCBMb2FkOFMpKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoNCwgTG9h
ZDhTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW04KDQsIExvYWQ4UykpOwogICAgIFJV
Tih0ZXN0U3RvcmVBZGRMb2FkMTYoNiwgTG9hZDE2WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxB
ZGRMb2FkQWNxMTYoNiwgTG9hZDE2WikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tMTYo
NiwgTG9hZDE2WikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMTYoNiwgTG9hZDE2UykpOwor
ICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYoNiwgTG9hZDE2UykpOwogICAgIFJVTih0
ZXN0U3RvcmVBZGRMb2FkSW1tMTYoNiwgTG9hZDE2UykpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRM
b2FkMzJJbmRleCg0NikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tMzJJbmRleCg0Nikp
OwpAQCAtMTU4MzEsNiArMTY2OTEsNDEgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQog
ICAgIFJVTih0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MigpKTsKICAgICBSVU4odGVzdExvYWRCYXNl
SW5kZXhTaGlmdDMyKCkpOwogICAgIFJVTih0ZXN0T3B0aW1pemVNYXRlcmlhbGl6YXRpb24oKSk7
CisgICAgCisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDhfdD4oKSk7CisgICAgUlVOKHRl
c3RBdG9taWNXZWFrQ0FTPGludDE2X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxp
bnQzMl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50NjRfdD4oKSk7CisgICAg
UlVOKHRlc3RBdG9taWNTdHJvbmdDQVM8aW50OF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0
cm9uZ0NBUzxpbnQxNl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQzMl90
PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ2NF90PigpKTsKKyAgICBSVU4o
dGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9t
aWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8
aW50MzJfdD4oQXRvbWljWGNoZ0FkZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90
PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWlj
WGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hnQW5k
KSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAg
ICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0
ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJVTih0ZXN0QXRvbWlj
WGNoZzxpbnQxNl90PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50
MzJfdD4oQXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0
b21pY1hjaGdPcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdT
dWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ1N1YikpOwor
ICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnU3ViKSk7CisgICAgUlVO
KHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0
b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hn
PGludDE2X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJf
dD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9t
aWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZykp
OworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hnKSk7CisgICAgUlVO
KHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGcpKTsKKyAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZykpOworICAgIFJVTih0ZXN0RGVwZW5kMzIoKSk7Cisg
ICAgUlVOKHRlc3REZXBlbmQ2NCgpKTsKIAogICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDAp
KTsKICAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjaygxMDApKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYg
KzEwMiw3IEBAIHVuc2lnbmVkIEFyZzo6anNIYXNoKCkgY29uc3QKICAgICBjYXNlIFJlbENvbmQ6
CiAgICAgY2FzZSBSZXNDb25kOgogICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICBjYXNlIFN0YXR1
c0NvbmQ6CiAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX29mZnNldCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTEwLDYgKzExMSw5IEBA
IHVuc2lnbmVkIEFyZzo6anNIYXNoKCkgY29uc3QKICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX29mZnNldCk7CiAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9vZmZzZXQgPj4gMzIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbXBs
ZUFkZHI6CisgICAgICAgIHJlc3VsdCArPSBtX2Jhc2UuaW50ZXJuYWxWYWx1ZSgpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIEFkZHI6CiAgICAgICAgIHJlc3VsdCArPSBtX29mZnNldDsKICAg
ICAgICAgcmVzdWx0ICs9IG1fYmFzZS5pbnRlcm5hbFZhbHVlKCk7CkBAIC0xNTAsNiArMTU0LDkg
QEAgdm9pZCBBcmc6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNlIEJpdElt
bTY0OgogICAgICAgICBvdXQucHJpbnRmKCIkMHglbGx4Iiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25n
IHVuc2lnbmVkPihtX29mZnNldCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTaW1wbGVB
ZGRyOgorICAgICAgICBvdXQucHJpbnQoIigiLCBiYXNlKCksICIpIik7CisgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGlmIChvZmZzZXQoKSkKICAgICAgICAgICAgIG91
dC5wcmludChvZmZzZXQoKSk7CkBAIC0xODIsNiArMTg5LDkgQEAgdm9pZCBBcmc6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5w
cmludChhc0RvdWJsZUNvbmRpdGlvbigpKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3Rh
dHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KGFzU3RhdHVzQ29uZGl0aW9uKCkpOworICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBvdXQucHJpbnQocG9pbnRlckR1
bXAoc3BlY2lhbCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIyMCw2ICsyMzAsOSBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkJpdElt
bTY0OgogICAgICAgICBvdXQucHJpbnQoIkJpdEltbTY0Iik7CiAgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEFyZzo6U2ltcGxlQWRkcjoKKyAgICAgICAgb3V0LnByaW50KCJTaW1wbGVBZGRyIik7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFyZzo6QWRkcjoKICAgICAgICAgb3V0LnByaW50
KCJBZGRyIik7CiAgICAgICAgIHJldHVybjsKQEAgLTI0MSw2ICsyNTQsOSBAQCB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkRvdWJsZUNvbmQ6
CiAgICAgICAgIG91dC5wcmludCgiRG91YmxlQ29uZCIpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBBcmc6OlN0YXR1c0NvbmQ6CisgICAgICAgIG91dC5wcmludCgiU3RhdHVzQ29uZCIpOwor
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNwZWNpYWw6CiAgICAgICAgIG91dC5wcmlu
dCgiU3BlY2lhbCIpOwogICAgICAgICByZXR1cm47CkBAIC0yODUsNiArMzAxLDkgQEAgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpFYXJseURl
ZjoKICAgICAgICAgb3V0LnByaW50KCJFYXJseURlZiIpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBBcmc6OkVhcmx5WkRlZjoKKyAgICAgICAgb3V0LnByaW50KCJFYXJseVpEZWYiKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpTY3JhdGNoOgogICAgICAgICBvdXQucHJpbnQo
IlNjcmF0Y2giKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJBcmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFyZy5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFyZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoK
IAogICAgICAgICAvLyBUaGVzZSBhcmUgdGhlIGFkZHJlc3Nlcy4gSW5zdHJ1Y3Rpb25zIG1heSBs
b2FkIGZyb20gKFVzZSksIHN0b3JlIHRvIChEZWYpLCBvciBldmFsdWF0ZQogICAgICAgICAvLyAo
VXNlQWRkcikgYWRkcmVzc2VzLgorICAgICAgICBTaW1wbGVBZGRyLAogICAgICAgICBBZGRyLAog
ICAgICAgICBTdGFjaywKICAgICAgICAgQ2FsbEFyZywKQEAgLTgyLDYgKzgzLDcgQEAgcHVibGlj
OgogICAgICAgICBSZWxDb25kLAogICAgICAgICBSZXNDb25kLAogICAgICAgICBEb3VibGVDb25k
LAorICAgICAgICBTdGF0dXNDb25kLAogICAgICAgICBTcGVjaWFsLAogICAgICAgICBXaWR0aEFy
ZwogICAgIH07CkBAIC0xNTEsNiArMTUzLDggQEAgcHVibGljOgogICAgICAgICAvLyBhcyBVc2Ug
aGFzIHVuZGVmaW5lZCBiZWhhdmlvcjogdGhlIHVzZSBtYXkgaGFwcGVuIGJlZm9yZSB0aGUgZGVm
LCBvciBpdCBtYXkgaGFwcGVuIGFmdGVyCiAgICAgICAgIC8vIGl0LgogICAgICAgICBFYXJseURl
ZiwKKyAgICAgICAgICAgIAorICAgICAgICBFYXJseVpEZWYsCiAKICAgICAgICAgLy8gU29tZSBp
bnN0cnVjdGlvbnMgbmVlZCBhIHNjcmF0Y2ggcmVnaXN0ZXIuIFdlIG1vZGVsIHRoaXMgYnkgc2F5
aW5nIHRoYXQgdGhlIHRlbXBvcmFyeSBpcwogICAgICAgICAvLyBkZWZpbmVkIGVhcmx5IGFuZCB1
c2VkIGxhdGUuIFRoaXMgcm9sZSBpbXBsaWVzIHRoYXQuCkBAIC0xODYsNiArMTkwLDcgQEAgcHVi
bGljOgogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAg
Y2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0y
MDYsNiArMjExLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNh
c2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpE
ZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0yMjgsNiArMjM0LDcgQEAgcHVibGljOgogICAgICAgICBjYXNl
IFVzZUFkZHI6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoK
KyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gcm9sZTsKICAgICAg
ICAgY2FzZSBVc2U6CiAgICAgICAgICAgICByZXR1cm4gQ29sZFVzZTsKQEAgLTI1Myw2ICsyNjAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgIGNhc2UgU2Ny
YXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0yNzQsNiArMjgyLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFpEZWY6
CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAg
Y2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTQsNiArMzAzLDcgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlWkRlZjoKICAgICAgICAgY2FzZSBF
YXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMTUsNiArMzI1LDcgQEAg
cHVibGljOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAg
ICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
QEAgLTMzMCw2ICszNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAg
ICAgY2FzZSBMYXRlVXNlOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVh
cmx5WkRlZjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNl
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU4LDYgKzM3MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBj
YXNlIFVzZVpEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00MTYs
NiArNDI5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpZ0ltbShiaXR3aXNlX2Nhc3Q8
aW50cHRyX3Q+KGFkZHJlc3MpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgQXJnIHNpbXBsZUFkZHIo
QWlyOjpUbXAgcHRyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHB0ci5pc0dQKCkpOworICAgICAg
ICBBcmcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gU2ltcGxlQWRkcjsKKyAgICAg
ICAgcmVzdWx0Lm1fYmFzZSA9IHB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
ICAgICBzdGF0aWMgQXJnIGFkZHIoQWlyOjpUbXAgYmFzZSwgaW50MzJfdCBvZmZzZXQgPSAwKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGJhc2UuaXNHUCgpKTsKQEAgLTUzMyw2ICs1NTUsMTQgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHN0YXRpYyBBcmcg
c3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKKyAg
ICB7CisgICAgICAgIEFyZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBTdGF0dXND
b25kOworICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBjb25kaXRpb247CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCiAgICAgc3RhdGljIEFyZyBzcGVjaWFsKEFpcjo6U3BlY2lhbCog
c3BlY2lhbCkKICAgICB7CiAgICAgICAgIEFyZyByZXN1bHQ7CkBAIC02MDgsNiArNjM4LDExIEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIGJvb2wgaXNTaW1wbGVBZGRyKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0gU2ltcGxlQWRkcjsKKyAgICB9CisK
ICAgICBib29sIGlzQWRkcigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4ga2luZCgpID09
IEFkZHI7CkBAIC02MzEsNiArNjY2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNNZW1vcnkoKSBj
b25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKKyAgICAgICAgY2FzZSBTaW1w
bGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGNhc2UgU3RhY2s6CiAgICAgICAg
IGNhc2UgQ2FsbEFyZzoKQEAgLTY0MSw2ICs2NzcsMTMgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgfQogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYW4gaWRpb21hdGljIHN0YWNr
IHJlZmVyZW5jZS4gSXQgbWF5IHJldHVybiBmYWxzZSBmb3Igc29tZSBraW5kcyBvZgorICAgIC8v
IHN0YWNrIHJlZmVyZW5jZXMuIFRoZSBmb2xsb3dpbmcgaWRpb21zIGFyZSByZWNvZ25pemVkOgor
ICAgIC8vIC0gdGhlIFN0YWNrIGtpbmQKKyAgICAvLyAtIHRoZSBDYWxsQXJnIGtpbmQKKyAgICAv
LyAtIHRoZSBBZGRyIGtpbmQgd2l0aCB0aGUgYmFzZSBiZWluZyBlaXRoZXIgU1Agb3IgRlAKKyAg
ICAvLyBDYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gYXJlIGFsbG93ZWQgdG8gZXhwZWN0IHRoYXQg
aWYgaXQgcmV0dXJucyB0cnVlLCB0aGVuIGl0IG11c3QgYmUgb25lIG9mCisgICAgLy8gdGhlc2Ug
ZWFzeS10by1yZWNvZ25pemUga2luZHMuIFNvLCBtYWtpbmcgdGhpcyBmdW5jdGlvbiByZWNvZ25p
emUgbW9yZSBraW5kcyBjb3VsZCBicmVhayB0aGluZ3MuCiAgICAgYm9vbCBpc1N0YWNrTWVtb3J5
KCkgY29uc3Q7CiAKICAgICBib29sIGlzUmVsQ29uZCgpIGNvbnN0CkBAIC02NTgsMTIgKzcwMSwx
OCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBraW5kKCkgPT0gRG91YmxlQ29uZDsKICAgICB9
CiAKKyAgICBib29sIGlzU3RhdHVzQ29uZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
a2luZCgpID09IFN0YXR1c0NvbmQ7CisgICAgfQorCiAgICAgYm9vbCBpc0NvbmRpdGlvbigpIGNv
bnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAgICAgICBjYXNlIFJlbENv
bmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAg
ICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc3NCwxMCArODIzLDE2IEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBCaWdJbW0pOwogICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4obV9vZmZzZXQpKTsK
ICAgICB9CisgICAgCisgICAgQWlyOjpUbXAgcHRyKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChraW5kKCkgPT0gU2ltcGxlQWRkcik7CisgICAgICAgIHJldHVybiBtX2Jhc2U7CisgICAg
fQogCiAgICAgQWlyOjpUbXAgYmFzZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoa2lu
ZCgpID09IEFkZHIgfHwga2luZCgpID09IEluZGV4KTsKKyAgICAgICAgQVNTRVJUKGtpbmQoKSA9
PSBTaW1wbGVBZGRyIHx8IGtpbmQoKSA9PSBBZGRyIHx8IGtpbmQoKSA9PSBJbmRleCk7CiAgICAg
ICAgIHJldHVybiBtX2Jhc2U7CiAgICAgfQogCkBAIC04NDQsNiArODk5LDcgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIEJpZ0ltbToKICAgICAgICAgY2FzZSBCaXRJbW06CiAgICAgICAgIGNhc2Ug
Qml0SW1tNjQ6CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgog
ICAgICAgICBjYXNlIEluZGV4OgogICAgICAgICBjYXNlIFN0YWNrOgpAQCAtODUxLDYgKzkwNyw3
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6
CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAg
ICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTg3MiwxMCArOTI5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBS
ZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoK
KyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAg
IGNhc2UgV2lkdGhBcmc6CiAgICAgICAgIGNhc2UgSW52YWxpZDoKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CiAg
ICAgICAgIGNhc2UgSW5kZXg6CiAgICAgICAgIGNhc2UgU3RhY2s6CkBAIC0xMDQ5LDYgKzExMDgs
OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZEJpdEltbUZvcm0odmFsdWUo
KSk7CiAgICAgICAgIGNhc2UgQml0SW1tNjQ6CiAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZEJp
dEltbTY0Rm9ybSh2YWx1ZSgpKTsKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgY2FzZSBTdGFjazoK
ICAgICAgICAgY2FzZSBDYWxsQXJnOgpAQCAtMTA1OCw2ICsxMTE5LDcgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBE
b3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2UgU3BlY2lh
bDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MTA3MCw2ICsxMTMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3dpdGNoIChtX2tpbmQp
IHsKICAgICAgICAgY2FzZSBUbXA6CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAg
Y2FzZSBBZGRyOgogICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMTEwLDYgKzExNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQoaXNB
bnlVc2UoYXJnUm9sZSkgfHwgaXNBbnlEZWYoYXJnUm9sZSkpOwogICAgICAgICAgICAgZnVuY3Rv
cihtX2Jhc2UsIGFyZ1JvbGUsIGFyZ0JhbmssIGFyZ1dpZHRoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAg
ICAgIGZ1bmN0b3IobV9iYXNlLCBVc2UsIEdQLCBhcmdSb2xlID09IFVzZUFkZHIgPyBhcmdXaWR0
aCA6IHBvaW50ZXJXaWR0aCgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE0NCw5ICsxMjA4
LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVChpc0ltbSgpKTsKICAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXJWYWx1ZSgpKTsKICAgICB9
Ci0KKyAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhc0FkZHJlc3MoKSBjb25zdAog
ICAgIHsKKyAgICAgICAgaWYgKGlzU2ltcGxlQWRkcigpKQorICAgICAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5ncHIoKSk7CiAgICAgICAgIEFTU0VSVChpc0Fk
ZHIoKSk7CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UuZ3By
KCksIHN0YXRpY19jYXN0PGludDMyX3Q+KG1fb2Zmc2V0KSk7CiAgICAgfQpAQCAtMTE3Nyw2ICsx
MjQzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1i
bGVyOjpEb3VibGVDb25kaXRpb24+KG1fb2Zmc2V0KTsKICAgICB9CiAgICAgCisgICAgTWFjcm9B
c3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbiBhc1N0YXR1c0NvbmRpdGlvbigpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQoaXNTdGF0dXNDb25kKCkpOworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbj4obV9vZmZzZXQpOworICAgIH0K
KyAgICAKICAgICAvLyBUZWxscyB5b3UgaWYgdGhlIEFyZyBpcyBpbnZlcnRpYmxlLiBPbmx5IGNv
bmRpdGlvbiBhcmd1bWVudHMgYXJlIGludmVydGlibGUsIGFuZCBldmVuIGZvciB0aG9zZSwgdGhl
cmUKICAgICAvLyBhcmUgYSBmZXcgZXhjZXB0aW9ucyAtIG5vdGFibHkgT3ZlcmZsb3cgYW5kIFNp
Z25lZC4KICAgICBib29sIGlzSW52ZXJ0aWJsZSgpIGNvbnN0CkBAIC0xMTg0LDYgKzEyNTYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgUmVsQ29u
ZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjppc0ludmVydGlibGUoYXNSZXN1bHRDb25kaXRpb24o
KSk7CkBAIC0xMjA0LDYgKzEyNzcsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gcmVz
Q29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzUmVzdWx0Q29uZGl0aW9uKCkpKTsKICAgICAg
ICAgY2FzZSBEb3VibGVDb25kOgogICAgICAgICAgICAgcmV0dXJuIGRvdWJsZUNvbmQoTWFjcm9B
c3NlbWJsZXI6OmludmVydChhc0RvdWJsZUNvbmRpdGlvbigpKSk7CisgICAgICAgIGNhc2UgU3Rh
dHVzQ29uZDoKKyAgICAgICAgICAgIHJldHVybiBzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpp
bnZlcnQoYXNTdGF0dXNDb25kaXRpb24oKSkpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBBcmco
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2Nr
LmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw2ICszNSwxOSBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlCiAKIGNvbnN0IGNoYXIqIGNvbnN0IEJhc2lj
QmxvY2s6OmR1bXBQcmVmaXggPSAiIyI7CiAKK3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29y
cyhGcmVxdWVudGVkQmxvY2sgdGFyZ2V0KQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMSk7
CisgICAgbV9zdWNjZXNzb3JzWzBdID0gdGFyZ2V0OworfQorCit2b2lkIEJhc2ljQmxvY2s6OnNl
dFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrIHRha2VuLCBGcmVxdWVudGVkQmxvY2sgbm90VGFr
ZW4pCit7CisgICAgbV9zdWNjZXNzb3JzLnJlc2l6ZSgyKTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0g
PSB0YWtlbjsKKyAgICBtX3N1Y2Nlc3NvcnNbMV0gPSBub3RUYWtlbjsKK30KKwogYm9vbCBCYXNp
Y0Jsb2NrOjphZGRQcmVkZWNlc3NvcihCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICByZXR1cm4g
QjM6OmFkZFByZWRlY2Vzc29yKHRoaXMsIGJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMzLDcgKzMzLDExIEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5h
bWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK3RlbXBsYXRl
PHR5cGVuYW1lPiBjbGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CisKK25hbWVzcGFjZSBB
aXIgewogCiBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKIGNsYXNzIENvZGU7CkBAIC05OSw2ICsx
MDMsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIGNv
bnN0IHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQogICAgIFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3Nv
cnMoKSB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KIAorICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhG
cmVxdWVudGVkQmxvY2spOworICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2ss
IEZyZXF1ZW50ZWRCbG9jayk7CisKICAgICBCYXNpY0Jsb2NrKiBzdWNjZXNzb3JCbG9jayh1bnNp
Z25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAg
ICAgQmFzaWNCbG9jayomIHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBz
dWNjZXNzb3IoaW5kZXgpLmJsb2NrKCk7IH0KICAgICBTdWNjZXNzb3JDb2xsZWN0aW9uPEJhc2lj
QmxvY2ssIFN1Y2Nlc3Nvckxpc3Q+IHN1Y2Nlc3NvckJsb2NrcygpCkBAIC0xMzMsNiArMTQwLDcg
QEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgZnJp
ZW5kIGNsYXNzIENvZGU7CiAgICAgZnJpZW5kIGNsYXNzIEluc2VydGlvblNldDsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEIzOjpHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7
CiAgICAgCiAgICAgQmFzaWNCbG9jayh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25T
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxv
Y2tJbnNlcnRpb25TZXQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCisK
KyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQmFzaWNCbG9jay5oIgorI2luY2x1
ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK0Jsb2NrSW5zZXJ0aW9uU2V0
OjpCbG9ja0luc2VydGlvblNldChDb2RlICZjb2RlKQorICAgIDogR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0KGNvZGUubV9ibG9ja3MpCit7Cit9CisKK0Jsb2NrSW5zZXJ0aW9uU2V0Ojp+QmxvY2tJ
bnNlcnRpb25TZXQoKQoreworfQorCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisK
KyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKwor
I2luY2x1ZGUgIkIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiQWlyQ29k
ZS5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworY2xh
c3MgSW5zZXJ0aW9uU2V0OworCit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNp
Y0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CisKK2NsYXNzIEJsb2NrSW5z
ZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPiB7
CitwdWJsaWM6CisgICAgQmxvY2tJbnNlcnRpb25TZXQoQ29kZSYpOworICAgIH5CbG9ja0luc2Vy
dGlvblNldCgpOworICAgIAorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZXZlbnR1YWxseSBpbXBs
ZW1lbnQgQjM6OkJsb2NrSW5zZXJ0aW9uU2V0J3Mgc3BsaXRGb3J3YXJkKCkuCit9OworCit9IH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5jcHAJKHJl
dmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFz
SlMuY3BwCShub25leGlzdGVudCkKQEAgLTEsMjQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiQWlyRHVtcEFzSlMuaCIKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRl
ICJBaXJDb2RlLmgiCi0jaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKLQotbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewotCi1uYW1lc3BhY2UgewotCi1DU3Ry
aW5nIHZhck5hbWVGb3JCbG9ja0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgcmV0dXJu
IHRvQ1N0cmluZygiYmIiLCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShCYXNpY0Jsb2Nr
KiBibG9jaykKLXsKLSAgICByZXR1cm4gdmFyTmFtZUZvckJsb2NrQXRJbmRleChibG9jay0+aW5k
ZXgoKSk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZUZvclN0YWNrU2xvdEF0SW5kZXgodW5zaWduZWQg
aW5kZXgpCi17Ci0gICAgcmV0dXJuIHRvQ1N0cmluZygic2xvdCIsIGluZGV4KTsKLX0KLQotQ1N0
cmluZyB2YXJOYW1lKFN0YWNrU2xvdCogc2xvdCkKLXsKLSAgICByZXR1cm4gdmFyTmFtZUZvclN0
YWNrU2xvdEF0SW5kZXgoc2xvdC0+aW5kZXgoKSk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShSZWcg
cmVnKQotewotICAgIHJldHVybiB0b0NTdHJpbmcoIlJlZy4iLCByZWcuZGVidWdOYW1lKCkpOwot
fQotCi1DU3RyaW5nIHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZEluZGV4KEJhbmsgYmFuaywgdW5z
aWduZWQgaW5kZXgpCi17Ci0gICAgcmV0dXJuIHRvQ1N0cmluZyhiYW5rID09IEZQID8gImYiIDog
IiIsICJ0bXAiLCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShUbXAgdG1wKQotewotICAg
IGlmICh0bXAuaXNSZWcoKSkKLSAgICAgICAgcmV0dXJuIHZhck5hbWUodG1wLnJlZygpKTsKLSAg
ICByZXR1cm4gdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5kSW5kZXgoQXJnKHRtcCkuYmFuaygpLCB0
bXAudG1wSW5kZXgoKSk7Ci19Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi12b2lkIGR1
bXBBc0pTKENvZGUmIGNvZGUsIFByaW50U3RyZWFtJiBvdXQpCi17Ci0gICAgb3V0LnByaW50bG4o
ImxldCBjb2RlID0gbmV3IENvZGUoKTsiKTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY29kZS5zaXplKCk7ICsraSkKLSAgICAgICAgb3V0LnByaW50bG4oImxldCAiLCB2YXJO
YW1lRm9yQmxvY2tBdEluZGV4KGkpLCAiID0gY29kZS5hZGRCbG9jaygpOyIpOwotICAgIAotICAg
IG91dC5wcmludGxuKCJsZXQgaGFzaDsiKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb2RlLnN0YWNrU2xvdHMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBTdGFja1Nsb3QqIHNs
b3QgPSBjb2RlLnN0YWNrU2xvdHMoKVtpXTsKLSAgICAgICAgaWYgKHNsb3QpIHsKLSAgICAgICAg
ICAgIG91dC5wcmludGxuKCJsZXQgIiwgdmFyTmFtZShzbG90KSwgIiA9IGNvZGUuYWRkU3RhY2tT
bG90KCIsIHNsb3QtPmJ5dGVTaXplKCksICIsICIsIHNsb3QtPmtpbmQoKSwgIik7Iik7Ci0gICAg
ICAgICAgICBpZiAoc2xvdC0+b2Zmc2V0RnJvbUZQKCkpCi0gICAgICAgICAgICAgICAgb3V0LnBy
aW50bG4odmFyTmFtZShzbG90KSwgIi5zZXRPZmZzZXRGcm9tRlAoIiwgc2xvdC0+b2Zmc2V0RnJv
bUZQKCksICIpOyIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oImhhc2ggPSAiLCB2YXJOYW1l
KHNsb3QpLCAiLmhhc2goKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJpZiAoaGFzaCAh
PSAiLCBzbG90LT5qc0hhc2goKSwgIikiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCIgICAg
dGhyb3cgbmV3IEVycm9yKFwiQmFkIGhhc2g6IFwiICsgaGFzaCk7Iik7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgb3V0LnByaW50bG4oImNvZGUuYWRkU3RhY2tTbG90KDEsIFNwaWxsKTsi
KTsKLSAgICB9Ci0gICAgCi0gICAgZm9yRWFjaEJhbmsoCi0gICAgICAgIFsmXSAoQmFuayBiYW5r
KSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlLm51bVRtcHMoYmFuayk7IGkt
LTspIHsKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAg
ImxldCAiLCB2YXJOYW1lRm9yVG1wV2l0aEJhbmtBbmRJbmRleChiYW5rLCBpKSwgIiA9IGNvZGUu
bmV3VG1wKCIsIGJhbmssICIpOyIpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAK
LSAgICBvdXQucHJpbnRsbigibGV0IGluc3Q7Iik7Ci0gICAgb3V0LnByaW50bG4oImxldCBhcmc7
Iik7Ci0gICAgCi0gICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKLSAgICAgICAg
Zm9yIChGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewot
ICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgdmFyTmFtZShibG9jayks
ICIuc3VjY2Vzc29ycy5wdXNoKG5ldyBGcmVxdWVudGVkQmxvY2soIiwKLSAgICAgICAgICAgICAg
ICB2YXJOYW1lKHN1Y2Nlc3Nvci5ibG9jaygpKSwgIiwgIiwgc3VjY2Vzc29yLmZyZXF1ZW5jeSgp
LCAiKSk7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoQmFzaWNCbG9jayog
cHJlZGVjZXNzb3IgOiBibG9jay0+cHJlZGVjZXNzb3JzKCkpCi0gICAgICAgICAgICBvdXQucHJp
bnRsbih2YXJOYW1lKGJsb2NrKSwgIi5wcmVkZWNlc3NvcnMucHVzaCgiLCB2YXJOYW1lKHByZWRl
Y2Vzc29yKSwgIik7Iik7Ci0gICAgICAgIAotICAgICAgICBmb3IgKEluc3QmIGluc3QgOiAqYmxv
Y2spIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBkbyBzb21ldGhpbmcgZm9y
IGZsYWdzLgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2Mjc1MQotICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QgPSBuZXcgSW5zdCgi
LCBpbnN0LmtpbmQub3Bjb2RlLCAiKTsiKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW5z
dC5mb3JFYWNoQXJnKAotICAgICAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSwg
QmFuaywgV2lkdGgpIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhcmcua2luZCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbnZhbGlkOgotICAgICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQXJnOjpUbXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigi
YXJnID0gQXJnLmNyZWF0ZVRtcCgiLCB2YXJOYW1lKGFyZy50bXAoKSksICIpOyIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OkltbToKLSAgICAgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlSW1tKCIsIGFyZy52YWx1ZSgpLCAiKTsiKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaWdJbW06Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJn
LmNyZWF0ZUJpZ0ltbSgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PGludDMyX3Q+KGFyZy52YWx1ZSgpKSwgIiwgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSA+PiAzMiksICIpOyIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OkJpdEltbToKLSAgICAgICAgICAgICAgICAgICAgICAg
IG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlQml0SW1tKCIsIGFyZy52YWx1ZSgpLCAiKTsi
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaXRJbW02NDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJh
cmcgPSBBcmcuY3JlYXRlQml0SW1tNjQoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSksICIsICIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkgPj4gMzIpLCAiKTsi
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpBZGRyOgotICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9
IEFyZy5jcmVhdGVBZGRyKCIsIHZhck5hbWUoYXJnLmJhc2UoKSksICIsICIsIGFyZy5vZmZzZXQo
KSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U3RhY2s6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiYXJnID0gQXJnLmNyZWF0ZVN0YWNrKCIsIHZhck5hbWUoYXJnLnN0YWNrU2xvdCgpKSwgIiwg
IiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpD
YWxsQXJnOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5j
cmVhdGVDYWxsQXJnKCIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFyZzo6SW5kZXg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUluZGV4KCIsIHZh
ck5hbWUoYXJnLmJhc2UoKSksICIsICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy
TmFtZShhcmcuaW5kZXgoKSksICIsICIsIGFyZy5zY2FsZSgpLCAiLCAiLCBhcmcub2Zmc2V0KCks
ICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlJlbENvbmQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVJlbENvbmQoIiwg
YXJnLmFzUmVsYXRpb25hbENvbmRpdGlvbigpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
IGNhc2UgQXJnOjpSZXNDb25kOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
ImFyZyA9IEFyZy5jcmVhdGVSZXNDb25kKCIsIGFyZy5hc1Jlc3VsdENvbmRpdGlvbigpLCAiKTsi
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpEb3VibGVDb25kOgotICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVEb3VibGVDb25kKCIs
IGFyZy5hc0RvdWJsZUNvbmRpdGlvbigpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQXJnOjpTcGVjaWFsOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFy
ZyA9IEFyZy5jcmVhdGVTcGVjaWFsKCk7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6V2lkdGhBcmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0g
QXJnLmNyZWF0ZVdpZHRoQXJnKCIsIGFyZy53aWR0aCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5hcmdzLnB1c2goYXJn
KTsiKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYg
KGluc3Qua2luZC5vcGNvZGUgPT0gUGF0Y2gpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5zdC5o
YXNOb25BcmdFZmZlY3RzKCkpCi0gICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0
LnBhdGNoSGFzTm9uQXJnRWZmZWN0cyA9IHRydWU7Iik7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MgPSBu
ZXcgU2V0KCk7Iik7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFDbG9i
YmVyZWRSZWdzID0gbmV3IFNldCgpOyIpOwotICAgICAgICAgICAgICAgIGluc3QuZXh0cmFFYXJs
eUNsb2JiZXJlZFJlZ3MoKS5mb3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZyBy
ZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhRWFy
bHlDbG9iYmVyZWRSZWdzLmFkZCgiLCB2YXJOYW1lKHJlZyksICIpOyIpOwotICAgICAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncygpLmZv
ckVhY2goCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykgewotICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFDbG9iYmVyZWRSZWdzLmFkZCgiLCB2
YXJOYW1lKHJlZyksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5wYXRjaEFyZ0RhdGEgPSBb
XTsiKTsKLSAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICAgICAg
ICAgIFsmXSAoQXJnJiwgQXJnOjpSb2xlIHJvbGUsIEJhbmsgYmFuaywgV2lkdGggd2lkdGgpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJpbnN0LnBhdGNoQXJnRGF0YS5wdXNoKHtyb2xlOiBBcmcuIiwgcm9sZSwgIiwg
dHlwZTogIiwgYmFuaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCB3aWR0aDogIiwg
d2lkdGgsICJ9KTsiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IENDYWxsIHx8
IGluc3Qua2luZC5vcGNvZGUgPT0gQ29sZENDYWxsKSB7Ci0gICAgICAgICAgICAgICAgb3V0LnBy
aW50bG4oImluc3QuY0NhbGxUeXBlID0gIiwgaW5zdC5vcmlnaW4tPnR5cGUoKSk7Ci0gICAgICAg
ICAgICAgICAgb3V0LnByaW50bG4oImluc3QuY0NhbGxBcmdUeXBlcyA9IFtdOyIpOwotICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBpbnN0Lm9yaWdpbi0+bnVtQ2hpbGRy
ZW4oKTsgKytpKQotICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5jQ2FsbEFy
Z1R5cGVzLnB1c2goIiwgaW5zdC5vcmlnaW4tPmNoaWxkKGkpLT50eXBlKCksICIpOyIpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBvdXQucHJpbnRsbigiaGFzaCA9
IGluc3QuaGFzaCgpOyIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oImlmIChoYXNoICE9ICIs
IGluc3QuanNIYXNoKCksICIpIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiICAgIHRocm93
IG5ldyBFcnJvcihcIkJhZCBoYXNoOiBcIiArIGhhc2gpOyIpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBvdXQucHJpbnRsbih2YXJOYW1lKGJsb2NrKSwgIi5hcHBlbmQoaW5zdCk7Iik7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKLQot
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyRHVtcEFzSlMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckR1bXBBc0pTLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoQjNfSklUKQotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKLQot
Y2xhc3MgQ29kZTsKLQotLy8gVGhpcyBpcyB1c2VkIGZvciBiZW5jaG1hcmtpbmcuIFZhcmlvdXMg
b3BlcmF0aW9ucyBvbiBBaXIgYXJlIGludGVyZXN0aW5nIGZyb20gYSBiZW5jaG1hcmtpbmcKLS8v
IHN0YW5kcG9pbnQuIFdlIGNhbiB3cml0ZSBzb21lIEFpciBwaGFzZXMgaW4gSlMgYW5kIHRoZW4g
dXNlIHRoYXQgdG8gYmVuY2htYXJrIEpTLiBUaGUgYmVuY2htYXJrCi0vLyBpcyBjYWxsZWQgSlNB
aXIsIGFuZCBpdCdzIGluIFBlcmZvcm1hbmNlVGVzdHMvSlNBaXIuCi12b2lkIGR1bXBBc0pTKENv
ZGUmLCBQcmludFN0cmVhbSYpOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCi0K
LSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAJKHJldmlzaW9uIDIxMzQy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDggQEAgYm9vbCBlbGltaW5hdGVEZWFk
Q29kZShDb2RlJiBjb2RlKQogICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgYmxvY2tJbmRleCA9IGNvZGUuc2l6ZSgpOyBibG9ja0luZGV4LS07KSB7CiAgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IGNvZGVbYmxvY2tJbmRleF07CisgICAgICAgICAg
ICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnN0SW5kZXggPSBibG9jay0+c2l6ZSgpOyBpbnN0SW5kZXgtLTspCiAgICAg
ICAgICAgICAgICAgaGFuZGxlSW5zdChibG9jay0+YXQoaW5zdEluZGV4KSk7CiAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShy
ZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVy
YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBaXJB
bGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5oIgogI2luY2x1ZGUgIkFpckFsbG9jYXRl
U3RhY2suaCIKICNpbmNsdWRlICJBaXJDb2RlLmgiCi0jaW5jbHVkZSAiQWlyRHVtcEFzSlMuaCIK
ICNpbmNsdWRlICJBaXJFbGltaW5hdGVEZWFkQ29kZS5oIgogI2luY2x1ZGUgIkFpckZpeE9idmlv
dXNTcGlsbHMuaCIKICNpbmNsdWRlICJBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKQEAg
LTYyLDE3ICs2MSwxOSBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiB7
CiAgICAgVGltaW5nU2NvcGUgdGltaW5nU2NvcGUoIkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24i
KTsKICAgICAKKyAgICAvLyBJZiB3ZSdyZSBkb2luZyBzdXBlciB2ZXJib3NlIGR1bXBpbmcsIHRo
ZSBwaGFzZSBzY29wZSBvZiBhbnkgcGhhc2Ugd2lsbCBhbHJlYWR5IGRvIGEgZHVtcC4KKyAgICBp
ZiAoc2hvdWxkRHVtcElSKEFpck1vZGUpICYmICFzaG91bGREdW1wSVJBdEVhY2hQaGFzZShBaXJN
b2RlKSkgeworICAgICAgICBkYXRhTG9nKCJJbml0aWFsIGFpcjpcbiIpOworICAgICAgICBkYXRh
TG9nKGNvZGUpOworICAgIH0KKyAgICAKICAgICAvLyBXZSBkb24ndCBleHBlY3QgdGhlIGluY29t
aW5nIGNvZGUgdG8gaGF2ZSBwcmVkZWNlc3NvcnMgY29tcHV0ZWQuCiAgICAgY29kZS5yZXNldFJl
YWNoYWJpbGl0eSgpOwogICAgIAogICAgIGlmIChzaG91bGRWYWxpZGF0ZUlSKCkpCiAgICAgICAg
IHZhbGlkYXRlKGNvZGUpOwogCi0gICAgLy8gSWYgd2UncmUgZG9pbmcgc3VwZXIgdmVyYm9zZSBk
dW1waW5nLCB0aGUgcGhhc2Ugc2NvcGUgb2YgYW55IHBoYXNlIHdpbGwgYWxyZWFkeSBkbyBhIGR1
bXAuCi0gICAgaWYgKHNob3VsZER1bXBJUihBaXJNb2RlKSAmJiAhc2hvdWxkRHVtcElSQXRFYWNo
UGhhc2UoQWlyTW9kZSkpIHsKLSAgICAgICAgZGF0YUxvZygiSW5pdGlhbCBhaXI6XG4iKTsKLSAg
ICAgICAgZGF0YUxvZyhjb2RlKTsKLSAgICB9CisgICAgc2ltcGxpZnlDRkcoY29kZSk7CiAKICAg
ICBsb3dlck1hY3Jvcyhjb2RlKTsKIApAQCAtMTA3LDIzICsxMDgsMTEgQEAgdm9pZCBwcmVwYXJl
Rm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgIC8vIGRvZXMgdGhpbmdzIGxpa2UgaWRlbnRp
Znkgd2hpY2ggY2FsbGVlLXNhdmVzIHdlJ3JlIHVzaW5nIGFuZCBzYXZlcyB0aGVtLgogICAgIGhh
bmRsZUNhbGxlZVNhdmVzKGNvZGUpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpkdW1wQWlyQXNK
U0JlZm9yZUFsbG9jYXRlU3RhY2soKSkgewotICAgICAgICBkYXRhTG9nKCJEdW1waW5nIEFpciBh
cyBKUyBiZWZvcmUgYWxsb2NhdGVTdGFjazpcbiIpOwotICAgICAgICBkdW1wQXNKUyhjb2RlLCBX
VEY6OmRhdGFGaWxlKCkpOwotICAgICAgICBkYXRhTG9nKCJBaXIgaGFzaDogIiwgY29kZS5qc0hh
c2goKSwgIlxuIik7Ci0gICAgfQotCiAgICAgLy8gVGhpcyB0dXJucyBhbGwgU3RhY2sgYW5kIENh
bGxBcmcgQXJncyBpbnRvIEFkZHIgYXJncyB0aGF0IHVzZSB0aGUgZnJhbWUgcG9pbnRlci4gSXQg
ZG9lcwogICAgIC8vIHRoaXMgYnkgZmlyc3QtZml0IGFsbG9jYXRpbmcgc3RhY2sgc2xvdHMuIEl0
IHNob3VsZCBiZSBwcmV0dHkgZGFybiBjbG9zZSB0byBvcHRpbWFsLCBzbyB3ZQogICAgIC8vIHNo
b3VsZG4ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoaXMgdmVyeSBtdWNoLgogICAgIGFsbG9jYXRl
U3RhY2soY29kZSk7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OmR1bXBBaXJBZnRlckFsbG9jYXRl
U3RhY2soKSkgewotICAgICAgICBkYXRhTG9nKCJEdW1waW5nIEFpciBhZnRlciBhbGxvY2F0ZVN0
YWNrOlxuIik7Ci0gICAgICAgIGRhdGFMb2coY29kZSk7Ci0gICAgICAgIGRhdGFMb2coIkFpciBo
YXNoOiAiLCBjb2RlLmpzSGFzaCgpLCAiXG4iKTsKLSAgICB9Ci0KICAgICAvLyBJZiB3ZSBjb2Fs
ZXNjZWQgbW92ZXMgdGhlbiB3ZSBjYW4gdW5icmVhayBjcml0aWNhbCBlZGdlcy4gVGhpcyBpcyB0
aGUgbWFpbiByZWFzb24gZm9yIHRoaXMKICAgICAvLyBwaGFzZS4KICAgICBzaW1wbGlmeUNGRyhj
b2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxp
bmVzLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlySW5zdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3Nyw3MyBAQCBpbmxp
bmUgYm9vbCBpc1g4NlVEaXY2NFZhbGlkKGNvbnN0IEluc3QmCiAgICAgcmV0dXJuIGlzWDg2RGl2
SGVscGVyVmFsaWQoaW5zdCk7CiB9CiAKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTVmFs
aWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAg
IHN3aXRjaCAoaW5zdC5hcmdzLnNpemUoKSkgeworICAgIGNhc2UgMzoKKyAgICAgICAgcmV0dXJu
IGluc3QuYXJnc1swXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIGNhc2UgNToKKyAg
ICAgICAgcmV0dXJuIGluc3QuYXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZWxzZSAvLyBDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KQorICAgIFVOVVNFRF9QQVJBTShpbnN0KTsKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYgLy8gQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKK30KKworaW5saW5lIGJvb2wg
aXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworI2lmIENQ
VShYODYpIHx8IENQVShYODZfNjQpCisgICAgcmV0dXJuIGluc3QuYXJnc1sxXSA9PSBUbXAoWDg2
UmVnaXN0ZXJzOjplYXgpOworI2Vsc2UgLy8gQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICBV
TlVTRURfUEFSQU0oaW5zdCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8vIENQVShYODYp
IHx8IENQVShYODZfNjQpCit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTOFZhbGlk
KGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQo
aW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTMTZWYWxpZChjb25zdCBJ
bnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOwor
fQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzMyVmFsaWQoY29uc3QgSW5zdCYgaW5z
dCkKK3sKKyAgICByZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5s
aW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7Cisg
ICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29s
IGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTOFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAg
cmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBi
b29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTZWYWxpZChjb25zdCBJbnN0JiBpbnN0KQorewor
ICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxp
bmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkK
K3sKKyAgICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKwor
aW5saW5lIGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3QmIGlu
c3QpCit7CisgICAgcmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9
CisKIH0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShC
M19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNv
ZGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2Rl
Lm9wY29kZXMJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyT3Bjb2RlLm9wY29kZXMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENv
cHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTcsNiArMTE3LDcgQEAgQWRkMzIgVTpH
OjMyLCBVWkQ6RzozMgogICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2
OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAg
IHg4NjogVG1wLCBJbmRleAogCkBAIC0xMzUsOSArMTM2LDEyIEBAIHg4NjogQWRkMTYgVTpHOjE2
LCBVRDpHOjE2CiA2NDogQWRkNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4
ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2
OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAg
IHg4NjogVG1wLCBJbmRleAogCiA2NDogQWRkNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAg
IEltbSwgVG1wLCBUbXAKQEAgLTE2Niw5ICsxNzAsMTIgQEAgeDg2OiBBZGRGbG9hdCBVOkY6MzIs
IFVEOkY6MzIKIFN1YjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4Njog
SW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFk
ZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2
OiBUbXAsIEluZGV4CiAKIGFybTY0OiBTdWIzMiBVOkc6MzIsIFU6RzozMiwgRDpHOjMyCiAgICAg
VG1wLCBUbXAsIFRtcApAQCAtMTc2LDkgKzE4MywxMiBAQCBhcm02NDogU3ViMzIgVTpHOjMyLCBV
Okc6MzIsIEQ6RzozMgogNjQ6IFN1YjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAg
ICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAg
IHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIK
KyAgICB4ODY6IFRtcCwgSW5kZXgKIAogYXJtNjQ6IFN1YjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6
NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC0yMDQsOSArMjE0LDEyIEBAIHg4NjogU3ViRmxvYXQg
VTpGOjMyLCBVRDpGOjMyCiBOZWczMiBVWkQ6RzozMgogICAgIFRtcAogICAgIHg4NjogQWRkcgor
ICAgIHg4NjogSW5kZXgKIAogNjQ6IE5lZzY0IFVEOkc6NjQKICAgICBUbXAKKyAgICB4ODY6IEFk
ZHIKKyAgICB4ODY6IEluZGV4CiAKIGFybTY0OiBOZWdhdGVEb3VibGUgVTpGOjY0LCBEOkY6NjQK
ICAgICBUbXAsIFRtcApAQCAtMzMwLDggKzM0MywxMSBAQCBBbmQzMiBVOkc6MzIsIFVaRDpHOjMy
CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAg
ICB4ODY6IFRtcCwgSW5kZXgKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRt
cAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAKIDY0OiBBbmQ2NCBV
Okc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMzM5LDcgKzM1NSwx
MyBAQCBBbmQzMiBVOkc6MzIsIFVaRDpHOjMyCiAKIHg4Nl82NDogQW5kNjQgVTpHOjY0LCBVRDpH
OjY0CiAgICAgVG1wLCBUbXAKLSAgICB4ODY6IEltbSwgVG1wCisgICAgSW1tLCBUbXAKKyAgICBJ
bW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
ICAgIEFkZHIsIFRtcAorICAgIEluZGV4LCBUbXAKIAogQW5kRG91YmxlIFU6Rjo2NCwgVTpGOjY0
LCBEOkY6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00NTksOCArNDgxLDExIEBAIE9yMzIgVTpH
OjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4Njog
VG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4
ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAog
CiA2NDogT3I2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAt
NDY5LDYgKzQ5NCwxMiBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBPcjY0IFU6Rzo2NCwg
VUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAorICAgIHg4NjogSW1tLCBB
ZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRt
cCwgSW5kZXgKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogCiBYb3Iz
MiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ4MCw4ICs1
MTEsMTEgQEAgWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJ
bW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2
OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAg
IHg4NjogSW1tLCBJbmRleAogCiA2NDogWG9yNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAg
IFRtcCwgVG1wLCBUbXAKQEAgLTQ5MCw2ICs1MjQsMTEgQEAgWG9yMzIgVTpHOjMyLCBVWkQ6Rzoz
MgogNjQ6IFhvcjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBUbXAs
IEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4Njog
SW5kZXgsIFRtcAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAg
eDg2OiBJbW0sIFRtcAogCiBhcm02NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCkBAIC00OTgsMTMg
KzUzNywxNSBAQCBhcm02NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCiB4ODY6IE5vdDMyIFVaRDpH
OjMyCiAgICAgVG1wCiAgICAgQWRkcgorICAgIEluZGV4CiAKIGFybTY0OiBOb3Q2NCBVOkc6NjQs
IEQ6Rzo2NAogICAgIFRtcCwgVG1wCiAKLXg4NjogTm90NjQgVUQ6Rzo2NAoreDg2XzY0OiBOb3Q2
NCBVRDpHOjY0CiAgICAgVG1wCiAgICAgQWRkcgorICAgIEluZGV4CiAKIGFybTY0OiBBYnNEb3Vi
bGUgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcApAQCAtNjY4LDI3ICs3MDksMzc3IEBAIExv
YWQ4IFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2Fk
QWNxOCBVOkc6OCwgWkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2
OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisKIFN0b3JlOCBVOkc6OCwgRDpHOjgK
ICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAgICAg
eDg2OiBJbW0sIEFkZHIKIAorU3RvcmVSZWw4IFU6Rzo4LCBEOkc6OCAvZWZmZWN0cworICAgIHg4
NjogVG1wLCBJbmRleAorICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4Cisg
ICAgeDg2OiBJbW0sIEFkZHIKKyAgICBUbXAsIFNpbXBsZUFkZHIKKwogTG9hZDhTaWduZWRFeHRl
bmRUbzMyIFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitM
b2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6
IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAorCiBM
b2FkMTYgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitM
b2FkQWNxMTYgVTpHOjE2LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAg
ICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwogTG9hZDE2U2lnbmVkRXh0
ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAK
K0xvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyIC9lZmZlY3RzCisgICAg
eDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAK
KwogU3RvcmUxNiBVOkc6MTYsIEQ6RzoxNgogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIK
KyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorCitTdG9yZVJlbDE2IFU6
RzoxNiwgRDpHOjE2IC9lZmZlY3RzCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBUbXAs
IEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIFRtcCwg
U2ltcGxlQWRkcgorCitMb2FkQWNxMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2
OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwor
U3RvcmVSZWwzMiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6IFRtcCwgQWRkcgor
ICAgIHg4NjogVG1wLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIElu
ZGV4CisgICAgVG1wLCBTaW1wbGVBZGRyCisKKzY0OiBMb2FkQWNxNjQgVTpHOjY0LCBaRDpHOjY0
IC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBT
aW1wbGVBZGRyLCBUbXAKKworNjQ6IFN0b3JlUmVsNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3Rz
CisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwg
QWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIFRtcCwgU2ltcGxlQWRkcgorCisjIFRoZSBm
aXJzdCBvcGVyYW5kIGlzIHJheC4KKyMgRklYTUU6IFRoaXMgZm9ybXVsYXRpb24gbWVhbnMgdGhh
dCB0aGUgYm9vbGVhbiByZXN1bHQgY2Fubm90IGJlIHB1dCBpbiBlYXgsIGV2ZW4gdGhvdWdoIGFs
bCB1c2VycworIyBvZiB0aGlzIHdvdWxkIGJlIE9LIHdpdGggdGhhdC4KK3g4NjogQXRvbWljU3Ry
b25nQ0FTOCBVOkc6MzIsIFVEOkc6OCwgVTpHOjgsIFVEOkc6OCwgWkQ6Rzo4IC9lZmZlY3RzCisg
ICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAq
LCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6
MTYsIFU6RzozMiwgVUQ6RzoxNiwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1w
KiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAK
KworeDg2OiBBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6Rzoz
MiwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2XzY0OiBBdG9taWNT
dHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCwgWkQ6Rzo4IC9lZmZl
Y3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVM4IFVEOkc6OCwg
VTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRt
cCwgSW5kZXgKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6
MTYgL2VmZmVjdHMKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisK
K3g4NjogQXRvbWljU3Ryb25nQ0FTMzIgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3Rz
CisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0
b21pY1N0cm9uZ0NBUzY0IFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIFRt
cCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNT
dHJvbmdDQVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4IC9icmFuY2ggL2VmZmVjdHMK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBU
bXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYgVTpHOjMyLCBVRDpHOjE2
LCBVOkc6MzIsIFVEOkc6MTYgL2JyYW5jaCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCos
IFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFu
Y2hBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiAvYnJh
bmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVz
Q29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0
IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2ggL2VmZmVjdHMKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIElu
ZGV4CisKK3g4NjogQXRvbWljQWRkOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNBZGQxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21p
Y0FkZDMyIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljQWRk
NjQgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRl
eAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWI4IFU6Rzo4
LCBVRDpHOjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjE2IFU6RzoxNiwgVUQ6Rzox
NiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViMzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZl
Y3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNTdWI2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMK
KyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY0FuZDggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIEltbSwg
QWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4
NjogQXRvbWljQW5kMTYgVTpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNBbmQzMiBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY0Fu
ZDY0IFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3I4IFU6Rzo4
LCBVRDpHOjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yMTYgVTpHOjE2LCBVRDpHOjE2
IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgor
ICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNPcjMyIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0
cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4Nl82NDogQXRvbWljT3I2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAg
ICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODY6IEF0b21pY1hvcjggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIEltbSwgQWRk
cgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Njog
QXRvbWljWG9yMTYgVTpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNY
b3IzMiBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hvcjY0
IFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljTmVnOCBVRDpHOjgg
L2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOZWcxNiBVRDpHOjE2
IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTmVnMzIgVUQ6Rzoz
MiAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0b21pY05lZzY0IFVE
Okc6NjQgL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3Q4IFVE
Okc6OCAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDE2IFVE
Okc6MTYgL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QzMiBV
RDpHOjMyIC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Nl82NDogQXRvbWljTm90
NjQgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY1hj
aGdBZGQ4IFVEOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQxNiBVRDpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQzMiBVRDpH
OjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODZfNjQ6IEF0b21pY1hjaGdBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGc4IFVEOkc6OCwgVUQ6Rzo4
IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hj
aGcxNiBVRDpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY1hjaGczMiBVRDpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hjaGc2NCBVRDpHOjY0
LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCithcm02
NDogTG9hZExpbms4IFU6Rzo4LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAK
KworYXJtNjQ6IExvYWRMaW5rQWNxOCBVOkc6OCwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU2ltcGxl
QWRkciwgVG1wCisKKyMgU3VwZXIgY29uZnVzaW5nIGZhY3Q6IHRoaXMgcmV0dXJucyAwIHRvIG1l
YW4gc3VjY2VzcywgMSB0byBtZWFuIGZhaWx1cmUuCithcm02NDogU3RvcmVDb25kOCBVOkc6OCwg
RDpHOjgsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02
NDogU3RvcmVDb25kUmVsOCBVOkc6OCwgRDpHOjgsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAs
IFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmsxNiBVOkc6MTYsIFpEOkc6MTYgL2Vm
ZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMTYgVTpHOjE2
LCBaRDpHOjE2IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNv
bmQxNiBVOkc6MTYsIEQ6RzoxNiwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRk
ciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWwxNiBVOkc6MTYsIEQ6RzoxNiwgRVpEOkc6OCAv
ZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGluazMyIFU6
RzozMiwgWkQ6RzozMiAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9h
ZExpbmtBY3EzMiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAK
KworYXJtNjQ6IFN0b3JlQ29uZDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4IC9lZmZlY3RzCisg
ICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDMyIFU6RzozMiwg
RDpHOjMyLCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJt
NjQ6IExvYWRMaW5rNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwg
VG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAg
IFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kNjQgVTpHOjY0LCBEOkc6NjQsIEVa
RDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVD
b25kUmVsNjQgVTpHOjY0LCBEOkc6NjQsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBs
ZUFkZHIsIFRtcAorCithcm02NDogRGVwZW5kMzIgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBU
bXAKKworYXJtNjQ6IERlcGVuZDY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIFRtcCwgVG1wCiAKIENv
bXBhcmUzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29uZCwgVG1w
LCBUbXAsIFRtcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6
ZUJsb2NrT3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTc3LDYgKzE3NywxMCBAQCB2b2lkIG9wdGltaXplQmxvY2tPcmRlcihDb2Rl
JiBjb2RlKQogICAgICAgICBjYXNlIEJyYW5jaFN1YjY0OgogICAgICAgICBjYXNlIEJyYW5jaE5l
ZzMyOgogICAgICAgICBjYXNlIEJyYW5jaE5lZzY0OgorICAgICAgICBjYXNlIEJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzg6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTY6CisgICAg
ICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzI6CisgICAgICAgIGNhc2UgQnJhbmNoQXRv
bWljU3Ryb25nQ0FTNjQ6CiAgICAgICAgICAgICBpZiAoY29kZS5maW5kTmV4dEJsb2NrKGJsb2Nr
KSA9PSBibG9jay0+c3VjY2Vzc29yQmxvY2soMCkgJiYgYnJhbmNoLmFyZ3NbMF0uaXNJbnZlcnRp
YmxlKCkpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnN3YXAoYmxvY2stPnN1Y2Nlc3NvcigwKSwg
YmxvY2stPnN1Y2Nlc3NvcigxKSk7CiAgICAgICAgICAgICAgICAgYnJhbmNoLmFyZ3NbMF0gPSBi
cmFuY2guYXJnc1swXS5pbnZlcnRlZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkocmV2aXNpb24gMjEzNDI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHZvaWQgcGFkSW50ZXJmZXJlbmNlKENvZGUm
IGNvZGUpCiAgICAgICAgICAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywg
V2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyb2xlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OkVhcmx5WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vhcmx5RGVmID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6TGF0ZVVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
U3BpbGxFdmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUp
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlQ29sZFVzZToKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3JpdHlP
cmRlcihiYW5rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0QmVmb3Jl
LmdldChyZWcpICYmICFzZXRBZnRlci5nZXQocmVnKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRBZnRlci5zZXQocmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHJldmlzaW9uIDIxMzQyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsMTQgKzUxLDQ5IEBAIGNsYXNzIEFyZwogICAgICAgICBAYmFuayA9IGJh
bmsKICAgICAgICAgQHdpZHRoID0gd2lkdGgKICAgICBlbmQKLQotICAgIGRlZiB3aWR0aENvZGUK
KyAgICAKKyAgICBkZWYgc2VsZi53aWR0aENvZGUod2lkdGgpCiAgICAgICAgIGlmIHdpZHRoID09
ICJQdHIiCiAgICAgICAgICAgICAicG9pbnRlcldpZHRoKCkiCiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICJXaWR0aCN7d2lkdGh9IgogICAgICAgICBlbmQKICAgICBlbmQKKworICAgIGRlZiB3
aWR0aENvZGUKKyAgICAgICAgQXJnLndpZHRoQ29kZSh3aWR0aCkKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgc2VsZi5yb2xlQ29kZShyb2xlKQorICAgICAgICBjYXNlIHJvbGUKKyAgICAgICAgd2hl
biAiVSIKKyAgICAgICAgICAgICJVc2UiCisgICAgICAgIHdoZW4gIkQiCisgICAgICAgICAgICAi
RGVmIgorICAgICAgICB3aGVuICJaRCIKKyAgICAgICAgICAgICJaRGVmIgorICAgICAgICB3aGVu
ICJVRCIKKyAgICAgICAgICAgICJVc2VEZWYiCisgICAgICAgIHdoZW4gIlVaRCIKKyAgICAgICAg
ICAgICJVc2VaRGVmIgorICAgICAgICB3aGVuICJVQSIKKyAgICAgICAgICAgICJVc2VBZGRyIgor
ICAgICAgICB3aGVuICJTIgorICAgICAgICAgICAgIlNjcmF0Y2giCisgICAgICAgIHdoZW4gIkVE
IgorICAgICAgICAgICAgIkVhcmx5RGVmIgorICAgICAgICB3aGVuICJFWkQiCisgICAgICAgICAg
ICAiRWFybHlaRGVmIgorICAgICAgICB3aGVuICJMVSIKKyAgICAgICAgICAgICJMYXRlVXNlIgor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbmQKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgcm9sZUNvZGUKKyAgICAgICAgQXJnLnJvbGVDb2RlKHJvbGUpCisgICAgZW5k
CiBlbmQKIAogY2xhc3MgT3ZlcmxvYWQKQEAgLTE4Miw3ICsyMTcsNyBAQCBkZWYgbGV4KHN0ciwg
ZmlsZU5hbWUpCiBlbmQKIAogZGVmIGlzUm9sZSh0b2tlbikKLSAgICB0b2tlbiA9fiAvXEEoKFUp
fChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUykpXFovCisgICAgdG9rZW4gPX4gL1xBKChVKXwo
RCl8KFVEKXwoWkQpfChVWkQpfChVQSl8KFMpfChFRCl8KEVaRCl8KExVKSlcWi8KIGVuZAogCiBk
ZWYgaXNHRih0b2tlbikKQEAgLTE5MCw3ICsyMjUsNyBAQCBkZWYgaXNHRih0b2tlbikKIGVuZAog
CiBkZWYgaXNLaW5kKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1t
KXwoQml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8
KERvdWJsZUNvbmQpKVxaLworICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwo
Qml0SW1tKXwoQml0SW1tNjQpfChTaW1wbGVBZGRyKXwoQWRkcil8KEluZGV4KXwoUmVsQ29uZCl8
KFJlc0NvbmQpfChEb3VibGVDb25kKXwoU3RhdHVzQ29uZCkpXFovCiBlbmQKIAogZGVmIGlzQXJj
aCh0b2tlbikKQEAgLTI2NCw3ICsyOTksNyBAQCBjbGFzcyBQYXJzZXIKIAogICAgIGRlZiBjb25z
dW1lS2luZAogICAgICAgICByZXN1bHQgPSB0b2tlbi5zdHJpbmcKLSAgICAgICAgcGFyc2VFcnJv
cigiRXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgQWRk
ciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIG9yIERvdWJsZUNvbmQpIikgdW5sZXNzIGlzS2lu
ZChyZXN1bHQpCisgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGtpbmQgKEltbSwgQmlnSW1t
LCBCaXRJbW0sIEJpdEltbTY0LCBUbXAsIFNpbXBsZUFkZHIsIEFkZHIsIEluZGV4LCBSZWxDb25k
LCBSZXNDb25kLCBEb3VibGVDb25kLCBvciBTdGF0dXNDb25kKSIpIHVubGVzcyBpc0tpbmQocmVz
dWx0KQogICAgICAgICBhZHZhbmNlCiAgICAgICAgIHJlc3VsdAogICAgIGVuZApAQCAtNjM0LDI4
ICs2NjksNyBAQCB3cml0ZUgoIk9wY29kZVV0aWxzIikgewogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBvdmVybG9hZC5zaWduYXR1cmUuZWFjaF93aXRoX2luZGV4IHsKICAgICAgICAgICAgICAg
ICB8IGFyZywgaW5kZXggfAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHJvbGUg
PSBuaWwKLSAgICAgICAgICAgICAgICBjYXNlIGFyZy5yb2xlCi0gICAgICAgICAgICAgICAgd2hl
biAiVSIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2UiCi0gICAgICAgICAgICAgICAg
d2hlbiAiRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYiCi0gICAgICAgICAgICAg
ICAgd2hlbiAiWkQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiWkRlZiIKLSAgICAgICAg
ICAgICAgICB3aGVuICJVRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VEZWYiCi0g
ICAgICAgICAgICAgICAgd2hlbiAiVVpEIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVz
ZVpEZWYiCi0gICAgICAgICAgICAgICAgd2hlbiAiVUEiCi0gICAgICAgICAgICAgICAgICAgIHJv
bGUgPSAiVXNlQWRkciIKLSAgICAgICAgICAgICAgICB3aGVuICJTIgotICAgICAgICAgICAgICAg
ICAgICByb2xlID0gIlNjcmF0Y2giCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIGVuZAotCi0gICAgICAgICAgICAgICAgb3V0
cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7cm9sZX0sICN7YXJnLmJhbmt9
UCwgI3thcmcud2lkdGhDb2RlfSk7IgorICAgICAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3Rv
cihhcmdzWyN7aW5kZXh9XSwgQXJnOjoje2FyZy5yb2xlQ29kZX0sICN7YXJnLmJhbmt9UCwgI3th
cmcud2lkdGhDb2RlfSk7IgogICAgICAgICAgICAgfQogICAgICAgICBlbmQKICAgICB9CkBAIC04
MDQsNiArODE4LDkgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAg
ICAgd2hlbiAiQml0SW1tNjQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKCFB
cmc6OmlzVmFsaWRCaXRJbW02NEZvcm0oYXJnc1sje2luZGV4fV0udmFsdWUoKSkpIgogICAgICAg
ICAgICAgICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7IgorICAgICAgICAg
ICAgICAgIHdoZW4gIlNpbXBsZUFkZHIiCisgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAi
aWYgKCFhcmdzWyN7aW5kZXh9XS50bXAoKS5pc0dQKCkpIgorICAgICAgICAgICAgICAgICAgICBv
dXRwLnB1dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7IgogICAgICAgICAgICAgICAgIHdoZW4gIkFk
ZHIiCiAgICAgICAgICAgICAgICAgICAgIGlmIGFyZy5yb2xlID09ICJVQSIKICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKGFyZ3NbI3tpbmRleH1dLmlzU3RhY2soKSAmJiBh
cmdzWyN7aW5kZXh9XS5zdGFja1Nsb3QoKS0+aXNTcGlsbCgpKSIKQEAgLTgxOSw2ICs4MzYsNyBA
QCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJSZWxD
b25kIgogICAgICAgICAgICAgICAgIHdoZW4gIlJlc0NvbmQiCiAgICAgICAgICAgICAgICAgd2hl
biAiRG91YmxlQ29uZCIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQga2lu
ZDogI3traW5kLm5hbWV9IgogICAgICAgICAgICAgICAgIGVuZApAQCAtMTA5NSw3ICsxMTEzLDcg
QEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dHAu
cHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzVHJ1c3RlZEltbTMyKCkiCiAgICAgICAgICAgICAgICAg
d2hlbiAiQmlnSW1tIiwgIkJpdEltbTY0IgogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50
ICJhcmdzWyN7aW5kZXh9XS5hc1RydXN0ZWRJbW02NCgpIgotICAgICAgICAgICAgICAgIHdoZW4g
IkFkZHIiCisgICAgICAgICAgICAgICAgd2hlbiAiU2ltcGxlQWRkciIsICJBZGRyIgogICAgICAg
ICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc0FkZHJlc3MoKSIKICAg
ICAgICAgICAgICAgICB3aGVuICJJbmRleCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmlu
dCAiYXJnc1sje2luZGV4fV0uYXNCYXNlSW5kZXgoKSIKQEAgLTExMDUsNiArMTEyMyw4IEBAIHdy
aXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50
ICJhcmdzWyN7aW5kZXh9XS5hc1Jlc3VsdENvbmRpdGlvbigpIgogICAgICAgICAgICAgICAgIHdo
ZW4gIkRvdWJsZUNvbmQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tp
bmRleH1dLmFzRG91YmxlQ29uZGl0aW9uKCkiCisgICAgICAgICAgICAgICAgd2hlbiAiU3RhdHVz
Q29uZCIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNT
dGF0dXNDb25kaXRpb24oKSIKICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgIH0KIApA
QCAtMTE0OCwyNyArMTE2OCw3IEBAIEZpbGUub3BlbigiSlNBaXJfb3Bjb2RlLmpzIiwgInciKSB7
CiAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJjYXNlICN7b3ZlcmxvYWQuc2lnbmF0dXJlLmxl
bmd0aH06IiBpZiBuZWVkT3ZlcmxvYWRTd2l0Y2gKICAgICAgICAgICAgICAgICBvdmVybG9hZC5z
aWduYXR1cmUuZWFjaF93aXRoX2luZGV4IHsKICAgICAgICAgICAgICAgICAgICAgfCBhcmcsIGlu
ZGV4IHwKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAgICAgICAg
ICBjYXNlIGFyZy5yb2xlCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlUiCi0gICAgICAgICAg
ICAgICAgICAgICAgICByb2xlID0gIlVzZSIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiRCIK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiRGVmIgotICAgICAgICAgICAgICAgICAg
ICB3aGVuICJaRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiWkRlZiIKLSAgICAg
ICAgICAgICAgICAgICAgd2hlbiAiVUQiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0g
IlVzZURlZiIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVVpEIgotICAgICAgICAgICAgICAg
ICAgICAgICAgcm9sZSA9ICJVc2VaRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVQSIK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlQWRkciIKLSAgICAgICAgICAgICAg
ICAgICAgd2hlbiAiUyIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2NyYXRjaCIK
LSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UK
LSAgICAgICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICBvdXRwLnB1dHMgImluc3QudmlzaXRBcmcoI3tpbmRleH0sIGZ1bmMsIEFyZy4j
e3JvbGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRofSk7IgorICAgICAgICAgICAgICAgICAg
ICBvdXRwLnB1dHMgImluc3QudmlzaXRBcmcoI3tpbmRleH0sIGZ1bmMsIEFyZy4je2FyZy5yb2xl
Q29kZX0sICN7YXJnLmJhbmt9UCwgI3thcmcud2lkdGh9KTsiCiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIG91dHAucHV0cyAiYnJlYWs7IgogICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjEzNDI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MTcsOSArNDE3LDYgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAg
ICAgdihib29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgTm9ybWFsLCBudWxscHRy
KSBcCiAgICAgdihib29sLCBleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlciwgZmFsc2UsIE5vcm1h
bCwgImV4cG9zZSB0aGUgaW50ZXJuYWwgbW9kdWxlIGxvYWRlciBvYmplY3QgdG8gdGhlIGdsb2Jh
bCBzcGFjZSBmb3IgZGVidWdnaW5nIikgXAogICAgIFwKLSAgICB2KGJvb2wsIGR1bXBBaXJBc0pT
QmVmb3JlQWxsb2NhdGVTdGFjaywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIHYoYm9v
bCwgZHVtcEFpckFmdGVyQWxsb2NhdGVTdGFjaywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAot
ICAgIFwKICAgICB2KGJvb2wsIHVzZVN1cGVyU2FtcGxlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0
cikgXAogICAgIFwKICAgICB2KGJvb2wsIHJlcG9ydExMSW50U3RhdHMsIGZhbHNlLCBDb25maWd1
cmFibGUsICJSZXBvcnRzIExMSW50IHN0YXRpc3RpY3MiKSBcCkluZGV4OiBXZWJzaXRlcy93ZWJr
aXQub3JnL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQub3JnL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjEzNDI1KQorKysgV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0wNCAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEIzIHNob3VsZCBoYXZlIGNvbXByZWhlbnNp
dmUgc3VwcG9ydCBmb3IgYXRvbWljIG9wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgRG9jdW1lbnQgdGhlIG5ldyBvcGNvZGVz
IQorCisgICAgICAgICogZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbDoK
KwogMjAxNy0wMy0wMyAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCBtaW5vciB1cGRhdGVzIG9uIENTUyBHcmlkIExheW91dCBl
eGFtcGxlcy4KSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUt
cmVwcmVzZW50YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQub3JnL2Rv
Y3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwJKHJldmlzaW9uIDIxMzQyNSkK
KysrIFdlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRp
b24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCwyOCBAQAogCiAgICAgPHA+RWFj
aCBiYXNpYyBibG9jayBjb250YWlucyBhIFZlY3RvciZsdDtWYWx1ZSomZ3Q7IGFzIHRoZSBjb250
ZW50cyBvZiB0aGUgYmxvY2suIENvbnRyb2wKICAgICAgIGZsb3cgaW5zaWRlIHRoZSBibG9jayBp
cyBpbXBsaWNpdCBiYXNlZCBvbiB0aGUgb3JkZXIgb2YgVmFsdWVzIGluIHRoZSB2ZWN0b3IuPC9w
PgorICAgIAorICAgIDxoMj5NZW1vcnkgbW9kZWw8L2gyPgorICAgIAorICAgIDxwPkIzIHVzZXMg
YSBzZWNvbmRhcnkgYWRkcmVzcyBzcGFjZSBvZiA8aT5hYnN0cmFjdCBoZWFwczwvaT4gdG8gcmVh
c29uIGFib3V0IGFsaWFzaW5nIGFuZAorICAgICAgY29uY3VycmVuY3kuIFRoaXMgYWRkcmVzcyBz
cGFjZSBpcyAzMi1iaXQgYW5kIHdlIHBvaW50IGF0IGl0IHVzaW5nIHRoZSBIZWFwUmFuZ2UgdHlw
ZS4gSWYgeW91CisgICAgICBuZXZlciBzdXBwbHkgSGVhcFJhbmdlcyB0byB5b3VyIG1lbW9yeSBv
cGVyYXRpb25zICh0aGUgZGVmYXVsdCksIHRoZXkgd2lsbCBoYXZlIFswLCBVSU5UX01BWF0KKyAg
ICAgIGFzIHRoZWlyIHJhbmdlLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhdGlvbiBtYXkgY29u
c2VydmF0aXZlbHkgd3JpdGUgdG8gYWxsIDI8c3VwPjMyPC9zdXA+CisgICAgICBhYnN0cmFjdCBo
ZWFwcy4gVHdvIG1lbW9yeSBvcGVyYXRpb25zIGFyZSBzYWlkIHRvIGFsaWFzIGlmIHRoZXkgYWNj
ZXNzIHRoZSBzYW1lIGFic3RyYWN0IGhlYXBzLgorICAgICAgQSBzaW1wbGUgZXhhbXBsZSBvZiB1
c2luZyBIZWFwUmFuZ2VzIGlzIHdpdGggbG9hZHMgYW5kIHN0b3JlcywgYnV0IHlvdSBjYW4gYWxz
byBzdXBwbHkKKyAgICAgIEhlYXBSYW5nZXMgYXMgYm91bmRzIG9uIHRoZSBlZmZlY3RzIG9mIGNh
bGxzIGFuZCBwYXRjaHBvaW50cy48L3A+CisgICAgCisgICAgPHA+RmVuY2VzIGFyZSBtb2RlbGVk
IGFzIHBoYW50b20gZWZmZWN0cyB0aGF0IHdlIGNhbGwgPGk+ZmVuY2UgcmFuZ2VzPC9pPi4gRm9y
IGV4YW1wbGUsIGEgbG9hZAorICAgICAgZmVuY2UgY291bGQgYmUgcmVwcmVzZW50ZWQgYXMgYSBw
YXRjaHBvaW50IHRoYXQgd3JpdGVzIHRvIFswLCBVSU5UX01BWF0uIEIzIG1vZGVscyBsb2FkIGZl
bmNlcywKKyAgICAgIHN0b3JlIGZlbmNlcywgc3RvcmUtbG9hZCBmZW5jZXMsIGFjcXVpcmUgZmVu
Y2VzLCBhbmQgcmVsZWFzZSBmZW5jZXMgdXNpbmcgZmVuY2UgcmFuZ2VzLiBUaGUKKyAgICAgIGFi
c2VuY2Ugb2YgYSBmZW5jZSByYW5nZSBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIGZlbmNlLjwvcD4K
KyAgICAKKyAgICA8cD5BY3F1aXJlIGZlbmNlcyBhcmUgbW9kZWxlZCBhcyBwaGFudG9tIHdyaXRl
cyB0byBtZW1vcnksIHdoaWxlIHJlbGVhc2UgZmVuY2VzIGFyZSBtb2RlbGVkIGFzCisgICAgICBw
aGFudG9tIHJlYWRzIGZyb20gbWVtb3J5LiBCeSBpdHNlbGYgdGhpcyBkb2VzIG5vdCBwZXJtaXQg
QjMgdG8gZG8gYWxsIG9mIHRoZSByZW9yZGVyaW5ncyB0aGF0CisgICAgICBhY3F1aXJlL3JlbGVh
c2UgYWxsb3cuIEIzIGlzIHRoZXJlZm9yZSBhbGxvd2VkIHRvIHRyZWF0IGxvYWRzL3N0b3JlcyB3
aXRoIGZlbmNlIHJhbmdlcyBtb3JlCisgICAgICBwcmVjaXNlbHkuIFRoZSBwaGFudG9tIHdyaXRl
IGVmZmVjdHMgb2YgYSBmZW5jZWQgbG9hZCBjYW5ub3Qgd3JpdGUgdG8gYW55dGhpbmcgdGhhdCBp
cyByZWFkIG9yCisgICAgICB3cml0dGVuIGFmdGVyIHRoZSBmZW5jZS4gVGhlIHBoYW50b20gcmVh
ZCBlZmZlY3RzIG9mIGEgZmVuY2VkIHN0b3JlIGNhbm5vdCByZWFkIGFueXRoaW5nIHRoYXQKKyAg
ICAgIGlzIHdyaXR0ZW4gYWZ0ZXIgdGhlIGZlbmNlLjwvcD4KIAogICAgIDxoMj5PcGNvZGVzPC9o
Mj4KIApAQCAtNDM0LDEyICs0NTYsNTQgQEAKICAgICAgIDxkZD5TdG9yZXMgdGhlIHZhbHVlIGlu
IHRoZSBmaXJzdCBjaGlsZCBpbnRvIHRoZSBhZGRyZXNzIGNvbXB1dGVkIGJ5IGFkZGluZyB0aGUK
ICAgICAgICAgY29tcGlsZS10aW1lIDMyLWJpdCBzaWduZWQgaW50ZWdlciBvZmZzZXQgdG8gdGhl
IHNlY29uZCBjaGlsZC4gIE1pc2FsaWduZWQgc3RvcmVzIGFyZQogICAgICAgICBub3QgcGVuYWxp
emVkLiAgTXVzdCB1c2UgdGhlIE1lbW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBz
IGZsYWcgc2V0LjwvZGQ+CisgICAgICAKKyAgICAgIDxkdD5JbnQzMiBBdG9taWNXZWFrQ0FTKFQg
ZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgSW50UHRyIHB0cik8L2R0PgorICAgICAgPGRkPlBl
cmZvcm1zIGEgd2VhayA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21w
YXJlLWFuZC1zd2FwIj5DQVMKKyAgICAgICAgICAoY29tcGFyZS1hbmQtc3dhcCk8L2E+LiBSZXR1
cm5zIGEgYm9vbGVhbiAoMCBvciAxKSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0IChmYWlsdXJlIG9y
CisgICAgICAgIHN1Y2Nlc3MsIHJlc3BlY3RpdmVseSkuIE1heSBzcHVyaW91c2x5IGZhaWwsIGlu
IHdoaWNoIGNhc2UgaXQgd2lsbCBkbyBub3RoaW5nIGFuZCByZXR1cm4KKyAgICAgICAgMC4gWW91
IGNhbiBzdXBwbHkgYSBmZW5jZSByYW5nZSB0byBpbmRpY2F0ZSB0aGF0IHRoZSBDQVMgaXMgZmVu
Y2VkLiBGZW5jZWQgQ0FTIGhhcyBib3RoCisgICAgICAgIGFjcXVpcmUgYW5kIHJlbGVhc2UgZmVu
Y2VzLCBhbmQgY2xhaW1zIHRvIGJvdGggcmVhZCBhbmQgd3JpdGUgdGhlIGZ1bGwgZmVuY2UgcmFu
Z2UgaW4KKyAgICAgICAgYWRkaXRpb24gdG8gd2hhdGV2ZXIgcHJpbWFyeSByYW5nZSBpcyBzdXBw
bGllZCBmb3IgdGhlIENBUyBpdHNlbGYuIEF0b21pY1dlYWtDQVMgb25seQorICAgICAgICBoYXMg
ZmVuY2luZyBiZWhhdmlvciBpbiB0aGUgY2FzZSB0aGF0IGl0IHN1Y2NlZWRzLjwvZGQ+CisKKyAg
ICAgIDxkdD5UIEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIElu
dFB0ciBwdHIpPC9kdD4KKyAgICAgIDxkZD5QZXJmb3JtcyBhIHN0cm9uZyA8YSBocmVmPSJodHRw
czovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wYXJlLWFuZC1zd2FwIj5DQVMKKyAgICAgICAg
ICAoY29tcGFyZS1hbmQtc3dhcCk8L2E+LiBSZXR1cm5zIHRoZSBvbGQgdmFsdWUgYmVmb3JlIHRo
ZSBDQVMuIFRoZSBpbnN0cnVjdGlvbiBzZWxlY3RvcgorICAgICAgICBpcyBzbWFydCBhYm91dCBF
cXVhbChBdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWQsIC4uLiksIGV4cGVjdGVkKSBwYXR0ZXJucywg
c28gdGhpcyBvcGNvZGUKKyAgICAgICAgaXMgYWxzbyB0aGUgYmVzdCB3YXkgdG8gZG8gYSBzdHJv
bmcgQ0FTIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4gLSBqdXN0IHVzZSBFcXVhbCB0byBjb21wYXJl
CisgICAgICAgIHRoZSByZXN1bHQgdG8gZXhwZWN0ZWQuIFlvdSBjYW4gc3VwcGx5IGEgZmVuY2Ug
cmFuZ2UgdG8gaW5kaWNhdGUgdGhhdCB0aGUgQ0FTIGlzIGZlbmNlZC4KKyAgICAgICAgRmVuY2Vk
IENBUyBoYXMgYm90aCBhY3F1aXJlIGFuZCByZWxlYXNlIGZlbmNlcywgYW5kIGNsYWltcyB0byBi
b3RoIHJlYWQgYW5kIHdyaXRlIHRoZSBmdWxsCisgICAgICAgIGZlbmNlIHJhbmdlIGluIGFkZGl0
aW9uIHRvIHdoYXRldmVyIHByaW1hcnkgcmFuZ2UgaXMgc3VwcGxpZWQgZm9yIHRoZSBDQVMgaXRz
ZWxmLgorICAgICAgICBBdG9taWNTdHJvbmdDQVMgaGFzIHRoZSBzYW1lIGZlbmNpbmcgb24gZmFp
bHVyZSBhbmQgc3VjY2Vzcy48L2RkPgorICAgICAgCisgICAgICA8ZHQ+VCBBdG9taWNYY2hnQWRk
KFQsIEludFB0cik8L2R0PgorICAgICAgPGRkPkF0b21pY2FsbHkgYWRkcyBhIHZhbHVlIHRvIHRo
ZSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gSXMgYWxsb3dlZCB0
bworICAgICAgICBoYXZlIGEgZmVuY2UgcmFuZ2UsIHdoaWNoIGNhdXNlcyBpdCB0byBoYXZlIGFj
cXVpcmUvcmVsZWFzZSBmZW5jaW5nLjwvZGQ+CisKKyAgICAgIDxkdD5UIEF0b21pY1hjaGdBbmQo
VCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+QXRvbWljYWxseSBiaXR3aXNlLWFuZHMgYSB2YWx1
ZSB0byB0aGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5zIHRoZSBvbGQgdmFsdWUuIElzIGFs
bG93ZWQgdG8KKyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdlLCB3aGljaCBjYXVzZXMgaXQgdG8g
aGF2ZSBhY3F1aXJlL3JlbGVhc2UgZmVuY2luZy48L2RkPgorCisgICAgICA8ZHQ+VCBBdG9taWNY
Y2hnT3IoVCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+QXRvbWljYWxseSBiaXR3aXNlLW9ycyBh
IHZhbHVlIHRvIHRoZSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybnMgdGhlIG9sZCB2YWx1ZS4g
SXMgYWxsb3dlZCB0bworICAgICAgICBoYXZlIGEgZmVuY2UgcmFuZ2UsIHdoaWNoIGNhdXNlcyBp
dCB0byBoYXZlIGFjcXVpcmUvcmVsZWFzZSBmZW5jaW5nLjwvZGQ+CisKKyAgICAgIDxkdD5UIEF0
b21pY1hjaGdTdWIoVCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+QXRvbWljYWxseSBzdWJ0cmFj
dHMgYSB2YWx1ZSB0byB0aGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5zIHRoZSBvbGQgdmFs
dWUuIElzIGFsbG93ZWQgdG8KKyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdlLCB3aGljaCBjYXVz
ZXMgaXQgdG8gaGF2ZSBhY3F1aXJlL3JlbGVhc2UgZmVuY2luZy48L2RkPgorCisgICAgICA8ZHQ+
VCBBdG9taWNYY2hnWG9yKFQsIEludFB0cik8L2R0PgorICAgICAgPGRkPkF0b21pY2FsbHkgYml0
d2lzZS14b3JzIGEgdmFsdWUgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJucyB0aGUg
b2xkIHZhbHVlLiBJcyBhbGxvd2VkIHRvCisgICAgICAgIGhhdmUgYSBmZW5jZSByYW5nZSwgd2hp
Y2ggY2F1c2VzIGl0IHRvIGhhdmUgYWNxdWlyZS9yZWxlYXNlIGZlbmNpbmcuPC9kZD4KKworICAg
ICAgPGR0PlQgQXRvbWljWGNoZyhULCBJbnRQdHIpPC9kdD4KKyAgICAgIDxkZD5BdG9taWNhbGx5
IHN0b3JlcyBhIHZhbHVlIHRvIHRoZSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybnMgdGhlIG9s
ZCB2YWx1ZS4gSXMgYWxsb3dlZCB0bworICAgICAgICBoYXZlIGEgZmVuY2UgcmFuZ2UsIHdoaWNo
IGNhdXNlcyBpdCB0byBoYXZlIGFjcXVpcmUvcmVsZWFzZSBmZW5jaW5nLjwvZGQ+CiAKICAgICAg
IDxkdD5JbnRQdHIgV2FzbUFkZHJlc3MoSW50UHRyLCBwaW5uZWRHUFIpPC9kdD4KICAgICAgIDxk
ZD5UaGlzIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYWRkcmVzcyBvZiBhIHdhc20gbWVtb3J5IGxv
YWQgZnJvbSBhIHBpbm5lZCBiYXNlIEdQUi4KICAgICAgICAgTXVzdCB1c2UgdGhlIFdhc21BZGRy
ZXNzVmFsdWUgY2xhc3MuPC9kZD4KIAotCiAgICAgICA8ZHQ+Vm9pZCBGZW5jZSgpPC9kdD4KICAg
ICAgIDxkZD5BYnN0cmFjdHMgc3RhbmRhbG9uZSBkYXRhIGZlbmNlcyBvbiB4ODYgYW5kIEFSTS4g
TXVzdCB1c2UgdGhlIEZlbmNlVmFsdWUgY2xhc3MsIHdoaWNoIGhhcwogICAgICAgICB0d28gYWRk
aXRpb25hbCBtZW1iZXJzIHRoYXQgY29uZmlndXJlIHRoZSBwcmVjaXNlIG1lYW5pbmcgb2YgdGhl
IGZlbmNlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303397</attachid>
            <date>2017-03-04 10:20:28 -0800</date>
            <delta_ts>2017-03-04 13:29:46 -0800</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>383449</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyMiBA
QAorMjAxNy0wMy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzIHNob3VsZCBoYXZlIGNvbXByZWhlbnNpdmUgc3VwcG9ydCBmb3IgYXRvbWljIG9wZXJhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBhZGRzIHRoZSBmb2xsb3dpbmcgY2FwYWJpbGl0aWVzIHRvIEIzOgorICAgICAgICAK
KyAgICAgICAgLSBBdG9taWMgd2Vhay9zdHJvbmcgdW5mZW5jZWQvZmVuY2VkIGNvbXBhcmUtYW5k
LXN3YXAKKyAgICAgICAgLSBBdG9taWMgYWRkcy9zdWIvb3IvYW5kL3hvci94aGcKKyAgICAgICAg
LSBBY3F1aXJlL3JlbGVhc2UgZmVuY2luZyBvbiBsb2Fkcy9zdG9yZXMKKyAgICAgICAgLSBGZW5j
ZWxlc3MgbG9hZC1sb2FkIGRlcGVuZGVuY2llcworICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRz
IGxvd2VyaW5nIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIG9uIHg4NjoKKyAgICAgICAg
CisgICAgICAgIC0gbG9jayBjbXB4Y2hnCisgICAgICAgIC0gbG9jayB4YWRkCisgICAgICAgIC0g
bG9jayBhZGQvc3ViL29yL2FuZC94b3IveGNoZworICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRz
IGxvd2VyaW5nIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIG9uIEFSTTY0OgorICAgICAg
ICAKKyAgICAgICAgLSBsZGFyIGFuZCBmcmllbmRzCisgICAgICAgIC0gc3RsciBhbmQgZnJpZW5k
cworICAgICAgICAtIGxkeHIgYW5kIGZyaWVuZHMgKHVuZmVuY2VkIExMKQorICAgICAgICAtIHN0
eHIgYW5kIGZyaWVuZHMgKHVuZmVuZGVkIFNDKQorICAgICAgICAtIGxkYXhyIGFuZCBmcmllbmRz
IChmZW5jZWQgTEwpCisgICAgICAgIC0gc3RseHIgYW5kIGZyaWVuZHMgKGZlbmNlZCBTQykKKyAg
ICAgICAgLSBlb3IgYXMgYSBmZW5jZWxlc3MgbG9hZC1sb2FkIGRlcGVuZGVuY3kKKyAgICAgICAg
CisgICAgICAgIFRoaXMgZG9lcyBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gcGF0dGVybiBtYXRjaGlu
ZyB0byBlbnN1cmUgdGhhdCB3ZWFrL3N0cm9uZyBDQVMgYW5kIGFsbCBvZiB0aGUKKyAgICAgICAg
dmFyaWFudHMgb2YgZmVuY2VzIGFuZCBhdG9taWMgbWF0aCBvcHMgZ2V0IGxvd2VyZWQgdG8gdGhl
IGJlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UuCisgICAgICAgIEZvciBleGFtcGxl
LCB3ZSBzdXBwb3J0IHRoZSBFcXVhbChBdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWQsIC4uLiksIGV4
cGVjdGVkKSBwYXR0ZXJuIGFuZCBhIGJ1bmNoCisgICAgICAgIG9mIGl0cyBmcmllbmRzLiBZb3Ug
Y2FuIHNheSBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkLCAuLi4pLCBleHBl
Y3RlZCkpIGFuZCBpdCB3aWxsCisgICAgICAgIGdlbmVyYXRlIHRoZSBiZXN0IHBvc3NpYmxlIGJy
YW5jaCBzZXF1ZW5jZSBvbiB4ODYgYW5kIEFSTTY0LgorICAgICAgICAKKyAgICAgICAgQjMgbm93
IGtub3dzIGhvdyB0byBtb2RlbCBhbGwgb2YgdGhlIGtpbmRzIG9mIGZlbmNpbmcuIEl0IGtub3dz
IHRoYXQgYWNxIGxvYWRzIGFyZSBvcmRlcmVkIHdpdGgKKyAgICAgICAgcmVzcGVjdCB0byBlYWNo
IG90aGVyIGFuZCB3aXRoIHJlc3BlY3QgdG8gcmVsIHN0b3JlcywgY3JlYXRpbmcgc2VxdWVudGlh
bCBjb25zaXN0ZW5jeSB0aGF0CisgICAgICAgIHRyYW5zY2VuZHMganVzdCB0aGUgYWNxL3JlbCBm
ZW5jZXMgdGhlbXNlbHZlcyAoc2VlIEVmZmVjdHM6OmZlbmNlKS4gSXQga25vd3MgdGhhdCB0aGUg
cGhhbnRvbQorICAgICAgICBmZW5jZSBlZmZlY3RzIG1heSBvbmx5IHRhcmdldCBzb21lIGFic3Ry
YWN0IGhlYXBzIGJ1dCBub3Qgb3RoZXJzLCBzbyB0aGF0IGxvYWQgZWxpbWluYXRpb24gYW5kCisg
ICAgICAgIHN0b3JlIHNpbmtpbmcgY2FuIHN0aWxsIG9wZXJhdGUgYWNyb3NzIGZlbmNlcyBpZiB5
b3UganVzdCB0ZWxsIEIzIHRoYXQgdGhlIGZlbmNlIGRvZXMgbm90IGFsaWFzCisgICAgICAgIHRo
b3NlIGFjY2Vzc2VzLiBUaGlzIG1ha2VzIGl0IHN1cGVyIGVhc3kgdG8gdGVhY2ggQjMgdGhhdCBz
b21lIG9mIHlvdXIgaGVhcCBpcyB0aHJlYWQtbG9jYWwuCisgICAgICAgIEV2ZW4gYmV0dGVyLCBp
dCBsZXRzIHlvdSBleHByZXNzIGZpbmUtZ3JhaW5lZCBkZXBlbmRlbmNpZXMgd2hlcmUgdGhlIGF0
b21pY3MgdGhhdCBhZmZlY3Qgb25lCisgICAgICAgIHByb3BlcnR5IGluIHNoYXJlZCBtZW1vcnkg
ZG8gbm90IGNsb2JiZXIgbm9uLWF0b21pY3MgdGhhdCBmZmVjdCBzb21lIG90aGVyIHByb3BlcnR5
IGluIHNoYXJlZAorICAgICAgICBtZW1vcnkuCisgICAgICAgIAorICAgICAgICBPbmUgb2YgbXkg
ZmF2b3JpdGUgZmVhdHVyZXMgaXMgRGVwZW5kLCB3aGljaCBhbGxvd3MgeW91IHRvIGV4cHJlc3Mg
bG9hZC1sb2FkIGRlcGVuZGVuY2llcy4gT24KKyAgICAgICAgeDg2IGl0IGxvd2VycyB0byBub3Ro
aW5nLCB3aGlsZSBvbiBBUk02NCBpdCBsb3dlcnMgdG8gZW9yLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBhbHNvIGV4cG9zZXMgYSBjb21tb24gYXRvbWljV2Vha0NBUyBBUEkgdG8gdGhlIHg4Nl82
NC9BUk02NCBNYWNyb0Fzc2VtYmxlcnMuIFNhbWUgZm9yCisgICAgICAgIGFjcS9yZWwuIEpTQydz
IDY0LWJpdCBKSVRzIGFyZSBub3cgYSBoYXBweSBjb25jdXJyZW5jeSBwbGF5Z3JvdW5kLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBkb2Vzbid0IHlldCBleHBvc2UgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gSlMgb3Igd2FzbS4gU0FCIHN0aWxsIHVzZXMgdGhlIG5vbi1pbnRyaW5zaWMKKyAgICAgICAg
aW1wbGVtZW50YXRpb25zIG9mIHRoZSBBdG9taWNzIG9iamVjdCwgZm9yIG5vdy4KKyAgICAgICAg
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmxkYXIpOgorICAgICAgICAoSlND
OjpBUk02NEFzc2VtYmxlcjo6bGR4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjps
ZGF4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdHhyKToKKyAgICAgICAgKEpT
Qzo6QVJNNjRBc3NlbWJsZXI6OnN0bHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6
c3RseHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZXhjZXBuR2VuZXJhdGlvbklt
bU1hc2spOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZXhvdGljTG9hZCk6CisgICAg
ICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdG9yZVJlbGVhc2UpOgorICAgICAgICAoSlNDOjpB
Uk02NEFzc2VtYmxlcjo6ZXhvdGljU3RvcmUpOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRBY3E4
U2lnbmVkRXh0ZW5kVG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omxv
YWRBY3E4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVSZWw4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZEFjcTE2U2lnbmVkRXh0ZW5k
VG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRBY3ExNik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlUmVsMTYpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZVJlbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
c3RvcmVSZWw2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5r
OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxOCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZDgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmRSZWw4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbmsxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZUNvbmQxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlQ29uZFJlbDE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZExpbmszMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNx
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbms2NCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YXRvbWljU3Ryb25nQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmF0b21pY1N0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YXRvbWljU3Ryb25nQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphdG9taWNTdHJvbmdDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmF0b21pY1JlbGF4ZWRTdHJvbmdDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoQXRvbWljV2Vha0NBUzgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTNjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNSZWxheGVkV2Vh
a0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNS
ZWxheGVkV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJh
bmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpkZXBlbmQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmRlcGVuZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZExpbmspOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkTGlua0FjcSk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZFJlbCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNpZ25FeHRlbmQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpicmFuY2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphdG9taWNTdHJvbmdDQVMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojph
dG9taWNSZWxheGVkU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoQXRvbWljV2Vha0NBUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6ZXh0cmFjdFNpbXBsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDg+KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6c2lnbkV4dGVuZDwxNj4pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0OjpicmFuY2g8NjQ+KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFkZDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bmVnMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bmVnOCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMTYpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6b3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN1YjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnN1YjgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMTYpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpub3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
Ojpub3QxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpub3Q4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Ryb25nQ0FTOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdHJvbmdDQVMxNik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdHJvbmdDQVMzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBdG9taWNTdHJv
bmdDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0
b21pY1N0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmF0b21pY1dlYWtDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmF0b21pY1dlYWtDQVMxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjphdG9taWNXZWFrQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YnJhbmNoQXRvbWljV2Vha0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoQXRvbWljV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1dlYWtDQVMzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNSZWxheGVkV2Vha0NBUzgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljUmVsYXhlZFdlYWtD
QVMxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNSZWxh
eGVkV2Vha0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJy
YW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljQWRkOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBZGQxNik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBZGQzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdWI4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N1YjE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmF0b21pY0FuZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6YXRvbWljQW5kMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YXRvbWljQW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6YXRvbWljT3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OmF0b21pY09yMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YXRvbWljT3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9t
aWNYb3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hv
cjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hvcjMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY05lZzgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTmVnMTYpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTmVnMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTm90OCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNOb3QxNik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNOb3QzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnQWRkOCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnQWRkMTYpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljWGNoZ0FkZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGc4KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGcxNik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6bG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3ExNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3EzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZVJlbDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6c3RvcmVSZWwxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzdG9yZVJlbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN0b3JlRmVuY2UpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6bG9hZEZlbmNlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnBhdGNoYWJsZUp1bXBTaXplKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OnN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1cHBvcnRzQVZYKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnVwZGF0ZUVheDFFY3hGbGFncyk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp4ODZDb25kaXRpb24pOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1N0cm9uZ0NBUyk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjphZGQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0OjphbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpuZWc2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpvcjY0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN1YjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZfNjQ6OnhvcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om5vdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0b3JlNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljU3Ryb25nQ0FTNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoQXRvbWljU3Ryb25n
Q0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljV2Vha0NB
UzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaEF0b21pY1dl
YWtDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNSZWxh
eGVkV2Vha0NBUzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5j
aEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6YXRvbWljQWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YXRvbWljU3ViNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWlj
QW5kNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljT3I2NCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNYb3I2NCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNOZWc2NCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNOb3Q2NCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNYY2hnQWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljWGNoZzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OmxvYWRBY3E2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpzdG9yZVJlbDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6YWRkcV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkcV9ybSk6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkcV9pbSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6YW5kbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kbF9y
bSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kd19ybSk6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6YW5kYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5k
bF9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kd19pbSk6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6YW5kYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
YW5kcV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcV9ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcV9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6aW5jcV9tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdxX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5lZ2xfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bmVnd19tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdiX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdGxfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bm90d19tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpub3RiX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdHFfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JsX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfcm0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yd19ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfaW0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yd19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JiX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcnFfbXIpOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9ycV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX21yKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpzdWJ3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJiX3JtKToKKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjpzdWJ3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJiX2ltKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJxX21yKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpzdWJxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJxX2lt
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JsX21yKToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjp4b3JsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3Js
X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3J3X3JtKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjp4b3J3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4
b3JiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JiX2ltKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp4b3JxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX21yKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4Y2hnYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6eGNoZ3dfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnhjaGdsX3JtKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4Y2hncV9ybSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6bW92d19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92cV9p
MzJtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hnYl9ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6Y21weGNoZ3dfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6OmNtcHhjaGdsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hn
cV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZGJfcm0pOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OnhhZGR3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp4YWRkbF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZHFfcm0pOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGIzL0IzQXRv
bWljVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjp+QXRv
bWljVmFsdWUpOgorICAgICAgICAoSlNDOjpCMzo6QXRvbWljVmFsdWU6OmR1bXBNZXRhKToKKyAg
ICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjpjbG9uZUltcGwpOgorICAgICAgICAoSlNDOjpC
Mzo6QXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKToKKyAgICAgICAgKiBiMy9CM0F0b21pY1ZhbHVl
Lmg6IEFkZGVkLgorICAgICAgICAqIGIzL0IzQmFzaWNCbG9jay5oOgorICAgICAgICAqIGIzL0Iz
QmxvY2tJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJbnNlcnRpb25T
ZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6QjM6OkJsb2NrSW5zZXJ0aW9u
U2V0OjppbnNlcnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJbnNlcnRpb25T
ZXQ6Omluc2VydEJlZm9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpCbG9ja0luc2Vy
dGlvblNldDo6aW5zZXJ0QWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJ
bnNlcnRpb25TZXQ6OmV4ZWN1dGUpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzQmxvY2tJbnNl
cnRpb25TZXQuaDoKKyAgICAgICAgKiBiMy9CM0VmZmVjdHMuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6RWZmZWN0czo6aW50ZXJmZXJlcyk6CisgICAgICAgIChKU0M6OkIzOjpFZmZlY3RzOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKEpTQzo6QjM6OkVmZmVjdHM6OmR1bXApOgorICAgICAgICAqIGIz
L0IzRWZmZWN0cy5oOgorICAgICAgICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2FsbCk6CisgICAg
ICAgIChKU0M6OkIzOjpFZmZlY3RzOjptdXN0RXhlY3V0ZSk6CisgICAgICAgICogYjMvQjNFbGlt
aW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNHZW5lcmF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpnZW5lcmF0ZVRvQWlyKToKKyAgICAgICAgKiBiMy9CM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkdlbmVy
aWNCbG9ja0luc2VydGlvblNldDo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAg
KEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAg
KEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIpOgorICAgICAg
ICAoSlNDOjpCMzo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAg
KiBiMy9CM0hlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpCMzo6SGVhcFJhbmdlOjpvcGVyYXRv
cnwpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
Okluc2VydGlvblNldDo6aW5zZXJ0Q2xvbmUpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0
Lmg6CisgICAgICAgICogYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwOgorICAgICAgICAq
IGIzL0IzTG93ZXJNYWNyb3MuY3BwOgorICAgICAgICAoSlNDOjpCMzo6bG93ZXJNYWNyb3MpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAg
ICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6Okxvd2VyVG9BaXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpydW4p
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YWRkcik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlQW55T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9wKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6c3RvcmVPcGNvZGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpjcmVhdGVTdG9yZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6Om5ld0Jsb2NrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
c3BsaXRCbG9jayk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFj
a21hcCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NkRpdik6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NlVEaXYpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojpsb3dlclg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6Omxvd2VyWDg2VURpdik6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmg6
CisgICAgICAgICogYjMvQjNNZW1vcnlWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpNZW1v
cnlWYWx1ZTo6aXNMZWdhbE9mZnNldCk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6
YWNjZXNzVHlwZSk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuayk6
CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUpOgorICAgICAg
ICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6OmR1bXBNZXRhKToKKyAgICAgICAgKEpTQzo6QjM6Ok1l
bW9yeVZhbHVlOjpNZW1vcnlWYWx1ZSk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6
YWNjZXNzV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTWVtb3J5VmFsdWUuaDoKKyAg
ICAgICAgKiBiMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
QjM6Ok1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6QjM6Ok1lbW9y
eVZhbHVlOjpyZXF1aXJlc1NpbXBsZUFkZHIpOgorICAgICAgICAoSlNDOjpCMzo6TWVtb3J5VmFs
dWU6OmFjY2Vzc1dpZHRoKToKKyAgICAgICAgKiBiMy9CM01vdmVDb25zdGFudHMuY3BwOgorICAg
ICAgICAqIGIzL0IzTmF0aXZlVHJhaXRzLmg6IEFkZGVkLgorICAgICAgICAqIGIzL0IzT3Bjb2Rl
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnN0b3JlT3Bjb2RlKToKKyAgICAgICAgKFdURjo6cHJp
bnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAgKEpTQzo6QjM6
OmlzTG9hZCk6CisgICAgICAgIChKU0M6OkIzOjppc1N0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6
OmlzTG9hZFN0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6OmlzQXRvbWljKToKKyAgICAgICAgKEpT
Qzo6QjM6OmlzQXRvbWljQ0FTKToKKyAgICAgICAgKEpTQzo6QjM6OmlzQXRvbWljWGNoZyk6Cisg
ICAgICAgIChKU0M6OkIzOjppc01lbW9yeUFjY2Vzcyk6CisgICAgICAgIChKU0M6OkIzOjpzaWdu
RXh0ZW5kT3Bjb2RlKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpQcm9jZWR1cmU6OmR1bXApOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6Cisg
ICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Omhhc1F1aXJrcyk6CisgICAgICAgIChKU0M6OkIz
OjpQcm9jZWR1cmU6OnNldEhhc1F1aXJrcyk6CisgICAgICAgICogYjMvQjNQdXJlQ1NFLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OnB1cmVDU0UpOgorICAgICAgICAqIGIzL0IzUHVyZUNTRS5oOgor
ICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsaWRh
dGUuY3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFs
dWU6OnJldHVybnNCb29sKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnBl
cmZvcm1TdWJzdGl0dXRpb24pOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnR5cGVGb3IpOgor
ICAgICAgICAqIGIzL0IzVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM1dpZHRoLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OmJlc3RUeXBlKToKKyAgICAgICAgKiBiMy9CM1dpZHRoLmg6CisgICAgICAg
IChKU0M6OkIzOjpjYW5vbmljYWxXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjppc0Nhbm9uaWNh
bFdpZHRoKToKKyAgICAgICAgKEpTQzo6QjM6Om1hc2spOgorICAgICAgICAqIGIzL2Fpci9BaXJB
cmcuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmpzSGFzaCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6OkFyZzo6ZHVtcCk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpp
c0FueVVzZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNDb2xkVXNlKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpjb29sZWQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzRWFybHlVc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzTGF0ZVVzZSk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNBbnlEZWYpOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpBcmc6OmlzRWFybHlEZWYpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6Omlz
TGF0ZURlZik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNaRGVmKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjpzaW1wbGVBZGRyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjpzdGF0dXNDb25kKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1NpbXBsZUFk
ZHIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzTWVtb3J5KToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc1N0YXR1c0NvbmQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpwdHIpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmJhc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzR1ApOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRlApOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpBcmc6OmlzVmFsaWRGb3JtKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjpmb3JFYWNoVG1wRmFzdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6Zm9yRWFj
aFRtcCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6YXNBZGRyZXNzKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjphc1N0YXR1c0NvbmRpdGlvbik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OkFyZzo6aXNJbnZlcnRpYmxlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpp
bnZlcnRlZCk6CisgICAgICAgICogYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKToKKyAgICAgICAgKiBiMy9h
aXIvQWlyQmFzaWNCbG9jay5oOgorICAgICAgICAqIGIzL2Fpci9BaXJCbG9ja0luc2VydGlvblNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCbG9ja0luc2VydGlvblNldDo6
QmxvY2tJbnNlcnRpb25TZXQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCbG9ja0luc2VydGlv
blNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKiBiMy9haXIvQWlyQmxvY2tJbnNl
cnRpb25TZXQuaDogQWRkZWQuCisgICAgICAgICogYjMvYWlyL0FpckR1bXBBc0pTLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBiMy9haXIvQWlyRHVtcEFzSlMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBiMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjplbGltaW5hdGVEZWFkQ29kZSk6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24pOgorICAgICAgICAq
IGIzL2Fpci9BaXJJbnN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjppc0F0b21p
Y1N0cm9uZ0NBU1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNT
dHJvbmdDQVNWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmlzQXRvbWljU3Ryb25nQ0FT
OFZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVMxNlZhbGlk
KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVMzMlZhbGlkKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVM2NFZhbGlkKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNTdHJvbmdDQVM4VmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzE2VmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzY0VmFsaWQpOgorICAgICAgICAq
IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy9haXIvQWlyT3B0aW1pemVC
bG9ja09yZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6b3B0aW1pemVCbG9ja09yZGVy
KToKKyAgICAgICAgKiBiMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6cGFkSW50ZXJmZXJlbmNlKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6c3BpbGxFdmVyeXRoaW5nKToK
KyAgICAgICAgKiBiMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYjoKKyAgICAgICAgKiBiMy90ZXN0
YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRBY3E0Mik6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0
b3JlUmVsQWRkTG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkRmVu
Y2VMb2FkQWNxOCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdFg4NkxlYUFkZEFkZCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0WDg2TGVhQWRkU2hs
TGVmdFNjYWxlMSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljV2Vha0NBUyk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RBdG9taWNYY2hnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3REZXBlbmQzMik6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0RGVwZW5kNjQpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAg
ICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHA6CisgICAgICAgIChKU0M6OkFS
TTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlOjpmb3JtYXQpOgor
ICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmg6CisgICAgICAgIChKU0M6
OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlOjpvcE5hbWUp
OgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9yZUV4
Y2x1c2l2ZTo6cnMpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29k
ZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6cnQyKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJs
ZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6Om8wKToKKyAgICAgICAgKEpTQzo6QVJN
NjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6Om8xKToKKyAgICAg
ICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6
Om8yKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3Rv
cmVFeGNsdXNpdmU6OmxvYWRCaXQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6
QTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6b3BOdW1iZXIpOgorICAgICAgICAoSlNDOjpB
Uk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6aXNQYWlyT3Ap
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE3LTAzLTA0ICBDc2FiYSBPc3p0
cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0FSTV0gVW5yZXZpZXdlZCBi
dWlsZGZpeCBhZnRlciByMjEzMzc2LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAogCiAgICAgYXNzZW1ibGVyL0FS
TUFzc2VtYmxlci5jcHAKKyAgICBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAK
ICAgICBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuY3BwCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcApAQCAtNzYsMTIgKzc3
LDEyIEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYjMvYWlyL0FpckFsbG9jYXRl
U3RhY2suY3BwCiAgICAgYjMvYWlyL0FpckFyZy5jcHAKICAgICBiMy9haXIvQWlyQmFzaWNCbG9j
ay5jcHAKKyAgICBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCiAgICAgYjMvYWlyL0Fp
ckNDYWxsU3BlY2lhbC5jcHAKICAgICBiMy9haXIvQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcAog
ICAgIGIzL2Fpci9BaXJDb2RlLmNwcAogICAgIGIzL2Fpci9BaXJDdXN0b20uY3BwCiAgICAgYjMv
YWlyL0FpckRpc2Fzc2VtYmxlci5jcHAKLSAgICBiMy9haXIvQWlyRHVtcEFzSlMuY3BwCiAgICAg
YjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAogICAgIGIzL2Fpci9BaXJFbWl0U2h1ZmZs
ZS5jcHAKICAgICBiMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTExMCw2ICsxMTEs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGIzL2Fpci9BaXJWYWxpZGF0ZS5j
cHAKIAogICAgIGIzL0IzQXJndW1lbnRSZWdWYWx1ZS5jcHAKKyAgICBiMy9CM0F0b21pY1ZhbHVl
LmNwcAogICAgIGIzL0IzQmFuay5jcHAKICAgICBiMy9CM0Jhc2ljQmxvY2suY3BwCiAgICAgYjMv
QjNCbG9ja0luc2VydGlvblNldC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3
NCwxNCBAQAogCQkwRjJDNjNCMDFFNjBBRTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBD
MTM4MzkgLyogQjNCYW5rLmggKi87IH07CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBC
M1dpZHRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYz
QjIxRTYwQUU0NzAwQzEzODM5IC8qIEIzV2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRo
LmggKi87IH07CisJCTBGMkM2M0I2MUU2MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0Iz
MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcx
RTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmggKi87IH07CisJCTBGMkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggKi87IH07CisJCTBGMkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9j
a0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQu
Y3BwICovOyB9OworCQkwRjJDNjNCQzFFNjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRp
b25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9Owor
CQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFF
NjYwRUE1MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBG
MkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5
IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87IH07CisJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAv
KiBCM01lbW9yeVZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzYzQzMxRTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJ
bmxpbmVzLmggKi87IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNj
b3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYy
RDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5
ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDksOCArMjI1
Nyw2IEBACiAJCURDMjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIw
MDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThD
IC8qIEhlYXBDZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBC
QTkxOEMgLyogSGVhcENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsg
fTsKLQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYw
MDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRD
MThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87
IH07CiAJCURDNjA1QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZF
OTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVB
MjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
REM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5Mzcx
OCAvKiBQcm9maWxlclVJRC5jcHAgKi87IH07CkBAIC0yNzc1LDYgKzI3ODEsMTQgQEAKIAkJMEYy
QzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIz
L0IzV2lkdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBB
RTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBCM1dpZHRoLmg7IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRo
ID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEz
ODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0
aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0
aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMkM2M0MxMUU2NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCM05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRp
dmVUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQzMxRTY5RUY5
MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEIzTWVtb3J5VmFsdWVJbmxpbmVzLmg7IHBhdGggPSBiMy9CM01lbW9yeVZh
bHVlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQjE5ODMy
RDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEZWJ1Z2dlclNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyRDREREMxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXJTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJENERERjE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVy
TG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVQcm9maWxlckxvZy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Nzk1LDggKzQ4MDksNiBAQAogCQlEQzIxNDMwNjFDQTMy
RTUyMDAwQTg4NjkgLyogSUNTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJQ1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDM0QyQjA5MUQzNDMx
NjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIZWFwQ2VsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwQjFEMzQz
NzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSGVhcENlbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEQzQ1
NEI4QTFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyRHVtcEFzSlMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckR1
bXBBc0pTLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEIxRDAwRTgx
RjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEFpckR1bXBBc0pTLmg7IHBhdGggPSBiMy9haXIvQWlyRHVtcEFzSlMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVy
RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJF
dmVudC5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckV2ZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNUExQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJFdmVudC5oOyBw
YXRoID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEQzYwNUI1QjFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJVSUQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJVSUQuY3BwOyBwYXRoID0gcHJv
ZmlsZXIvUHJvZmlsZXJVSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMx
NCw2ICs1MzI2LDggQEAKIAkJCQkwRkVDODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAog
CQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICov
LAogCQkJCTBGRUM4NEI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAq
LywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8s
CisJCQkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJ
CQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNB
QzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzQmFzaWNCbG9jay5jcHAgKi8sCkBAIC01Mzc2LDYgKzUzOTAsNyBAQAogCQkJ
CTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJ
CTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVD
ODRDRjFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2
MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBG
RUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywK
IAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJ
CTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTM5OCw4
ICs1NDEzLDEwIEBACiAJCQkJNDNBQjI2QzUxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJh
cy5oICovLAogCQkJCTBGRUM4NEQ1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNw
cCAqLywKIAkJCQkwRkVDODRENjFCREFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5oICov
LAorCQkJCTBGMkM2M0MzMUU2OUVGOTIwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5o
ICovLAogCQkJCTBGMzM4RTAzMUJGMDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuY3Bw
ICovLAogCQkJCTBGMzM4RTA0MUJGMDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuaCAq
LywKKwkJCQkwRjJDNjNDMTFFNjY0QTVBMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLywK
IAkJCQkwRjMzOEUwNTFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3QuaCAqLywK
IAkJCQkwRjMzOEUwNjFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmNwcCAq
LywKIAkJCQkwRjMzOEUwNzFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmgg
Ki8sCkBAIC01NDkxLDYgKzU1MDgsOCBAQAogCQkJCTBGNjRFQUYyMUM0RUNEMDYwMDYyMUU5QiAv
KiBBaXJBcmdJbmxpbmVzLmggKi8sCiAJCQkJMEZFQzg1NEMxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
ckJhc2ljQmxvY2suY3BwICovLAogCQkJCTBGRUM4NTREMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJC
YXNpY0Jsb2NrLmggKi8sCisJCQkJMEYyQzYzQjkxRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2Nr
SW5zZXJ0aW9uU2V0LmNwcCAqLywKKwkJCQkwRjJDNjNCQTFFNjM0NDA4MDBDMTM4MzkgLyogQWly
QmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkIzODc4QjFCRkJDNDREMDBFM0FCMUUgLyog
QWlyQmxvY2tXb3JrbGlzdC5oICovLAogCQkJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBB
aXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTBGNjE4MzIxMUM0NUJGMDcwMDcyNDUw
QiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKQEAgLTU1MDIsOCArNTUyMSw2IEBACiAJ
CQkJMEYxMEYxQTIxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oICovLAogCQkJCTc5QUJC
MTdCMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuY3BwICovLAogCQkJCTc5QUJC
MTdDMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuaCAqLywKLQkJCQlEQzQ1NEI4
QTFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovLAotCQkJCURDNDU0QjhCMUQw
MEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oICovLAogCQkJCTBGNDU3MDM2MUJFNDRDOTEw
MDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgKi8sCiAJCQkJMEY0NTcwMzcxQkU0
NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi8sCiAJCQkJMEY2MTgzMjMx
QzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVtaXRTaHVmZmxlLmNwcCAqLywKQEAgLTczNTUsNiArNzM3
Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMUZFNTFC
MTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oICovLAorCQkJCTBGMkM2M0JGMUU2NjBF
QTUwMEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCAqLywKIAkJCQk4NjAxNjFE
RjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovLAogCQkJCTBG
MzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Uu
aCAqLywKIAkJCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAq
LywKQEAgLTczODMsOCArNzQwMSw4IEBACiAJCQkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8q
IE1hY3JvQXNzZW1ibGVyTUlQUy5oICovLAogCQkJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAv
KiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovLAogCQkJCUZFNjhDNjM2MUI5MERERDkwMDQy
QkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLywKLQkJCQk4NjAxNjFFMDBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQk4NjAxNjFFMTBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLywKKwkJCQk4NjAxNjFFMDBGM0E4
M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQlBN0E0QUUwNzE3OTcz
QjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwICovLAogCQkJCTg2MDE2
MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovLAogCQkJ
CTY1ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bC5oICovLApAQCAtNzk3Nyw3ICs3OTk1LDYgQEAKIAkJCQkwRkVDODU3NDFCREFDREM3MDA4MEZG
NzQgLyogQWlyQ0NhbGxTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU3NjFCREFD
REM3MDA4MEZGNzQgLyogQWlyQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMEYxQTMxQzQy
MEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREM0NTRCOEQx
RDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ1
NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNjE4MzJEMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0REUxQ0YxQzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlv
dXNTcGlsbHMuaCBpbiBIZWFkZXJzICovLApAQCAtNzk5MCw2ICs4MDA3LDcgQEAKIAkJCQkwRkVD
ODU4MDFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
Qzg1ODExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkRGNjdENzFEOURDNDQyMDAxQjk4MjUgLyogQWlyS2luZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYyQzYzQkMxRTYzNDQwQzAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyNjg0RDQzODFDMDAxNjFDMDA4MUQ2NjMgLyogQWlyTGl2ZW5l
c3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTM0QzFBMUM0QjM5QUUwMDAzQTUxMiAvKiBBaXJM
b2dSZWdpc3RlclByZXNzdXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyRjFDNDVCRjA3
MDA3MjQ1MEIgLyogQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmggaW4gSGVhZGVycyAqLywKQEAgLTgw
ODEsNiArODA5OSw3IEBACiAJCQkJNDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RG
bG9hdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVCMzFCREVEOTU3MDA4MEZGNzQg
LyogQjNDb25zdFB0clZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOERGNjFCRTkzRDU1
MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJD
NjNCODFFNjM0M0Y3MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMzM4RTBFMUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzRkNGQzFDMTYyNUJFMDAzMjNGNjcgLyogQjNEb21p
bmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCOEFEOTFDNEVEREEyMDA5NjkwNTIgLyog
QjNEdXBsaWNhdGVUYWlscy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MjcxLDYgKzgyOTAsNyBAQAog
CQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3MDREOTAzMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVy
cHJldGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwNDE3QTBCQUE4MDA2QkE1NTQgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2
M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2MjAxNzcxNDNGQ0QzRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRDNFNDAyMUI2MThBQUYwMEM4MEUxRSAvKiBERkdBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMThEM0Qw
MUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtODQwMiw2ICs4NDIyLDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4
NDQ3MjggLyogREZHT1NSRXhpdEZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4
MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9t
aWNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8q
IERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMx
NEVGOTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNF
QjE5RDBCQTdEMDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAt
ODgyMCw2ICs4ODQxLDcgQEAKIAkJCQk3OUI4MTk5MzFERDI1Q0Y1MDBEREM3MTQgLyogSlNHbG9i
YWxPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEwMDdDMTE4N0NDM0M2MDBC
Mzg4NzkgLyogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBC
M01lbW9yeVZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMkExODhGMTA1
OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTk4MzEsNiArOTg1
Myw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTg0MSw3ICs5ODY0LDYgQEAKIAkJCQkwRkVD
ODU3MzFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTc1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0Ux
QzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMDI4OSw2ICsxMDMxMSw3IEBACiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8q
IEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVC
OEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQw
RTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMzA3LDYgKzEwMzMwLDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBB
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdB
NDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9u
IDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjk0LDYgKzY5NCwyMSBAQCBwcml2YXRlOgogICAgICAg
ICBMZHJMaXRlcmFsT3BfTERSU1cgPSAyLAogICAgICAgICBMZHJMaXRlcmFsT3BfMTI4QklUID0g
MgogICAgIH07CisgICAgCisgICAgZW51bSBFeG90aWNMb2FkRmVuY2UgeworICAgICAgICBFeG90
aWNMb2FkRmVuY2VfTm9uZSwKKyAgICAgICAgRXhvdGljTG9hZEZlbmNlX0FjcXVpcmUKKyAgICB9
OworICAgIAorICAgIGVudW0gRXhvdGljTG9hZEF0b21pYyB7CisgICAgICAgIEV4b3RpY0xvYWRB
dG9taWNfTGluaywKKyAgICAgICAgRXhvdGljTG9hZEF0b21pY19Ob25lCisgICAgfTsKKworICAg
IGVudW0gRXhvdGljU3RvcmVGZW5jZSB7CisgICAgICAgIEV4b3RpY1N0b3JlRmVuY2VfTm9uZSwK
KyAgICAgICAgRXhvdGljU3RvcmVGZW5jZV9SZWxlYXNlLAorICAgIH07CiAKICAgICBzdGF0aWMg
dW5zaWduZWQgbWVtUGFpck9mZnNldFNoaWZ0KGJvb2wgViwgTWVtUGFpck9wU2l6ZSBzaXplKQog
ICAgIHsKQEAgLTE1MzEsNiArMTU0Niw0OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbnNu
KDB4ZDUwMzNhYmYpOwogICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+Cisg
ICAgdm9pZCBsZGFyKFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAg
ICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUs
IEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlLCBFeG90aWNMb2FkQXRvbWljX05vbmUsIGRzdCwgc3Jj
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgbGR4cihS
ZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzcmMpCisgICAgeworICAgICAgICBDSEVDS19EQVRB
U0laRSgpOworICAgICAgICBpbnNuKGV4b3RpY0xvYWQoTUVNT1BTSVpFLCBFeG90aWNMb2FkRmVu
Y2VfTm9uZSwgRXhvdGljTG9hZEF0b21pY19MaW5rLCBkc3QsIHNyYykpOworICAgIH0KKworICAg
IHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxkYXhyKFJlZ2lzdGVySUQgZHN0LCBS
ZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAg
IGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUsIEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlLCBFeG90
aWNMb2FkQXRvbWljX0xpbmssIGRzdCwgc3JjKSk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIHN0eHIoUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7
CisgICAgICAgIGluc24oZXhvdGljU3RvcmUoTUVNT1BTSVpFLCBFeG90aWNTdG9yZUZlbmNlX05v
bmUsIHJlc3VsdCwgc3JjLCBkc3QpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNp
emU+CisgICAgdm9pZCBzdGxyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oc3RvcmVSZWxlYXNlKE1F
TU9QU0laRSwgc3JjLCBkc3QpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+
CisgICAgdm9pZCBzdGx4cihSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5z
bihleG90aWNTdG9yZShNRU1PUFNJWkUsIEV4b3RpY1N0b3JlRmVuY2VfUmVsZWFzZSwgcmVzdWx0
LCBzcmMsIGRzdCkpOworICAgIH0KIAogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgb3JuKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lz
dGVySUQgcm0pCkBAIC0zNjAxLDcgKzM2NTgsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3Qg
aW50IG9wNCA9IDA7CiAgICAgICAgIHJldHVybiAoMHhkNjAwMDAwMCB8IG9wYyA8PCAyMSB8IG9w
MiA8PCAxNiB8IG9wMyA8PCAxMCB8IHhPclpyKHJuKSA8PCA1IHwgb3A0KTsKICAgICB9Ci0KKyAg
ICAKKyAgICBzdGF0aWMgaW50IGV4b3RpY0xvYWQoTWVtT3BTaXplIHNpemUsIEV4b3RpY0xvYWRG
ZW5jZSBmZW5jZSwgRXhvdGljTG9hZEF0b21pYyBhdG9taWMsIFJlZ2lzdGVySUQgZHN0LCBSZWdp
c3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIHJldHVybiAweDA4NWY3YzAwIHwgc2l6ZSA8PCAz
MCB8IGZlbmNlIDw8IDE1IHwgYXRvbWljIDw8IDIzIHwgc3JjIDw8IDUgfCBkc3Q7CisgICAgfQor
ICAgIAorICAgIHN0YXRpYyBpbnQgc3RvcmVSZWxlYXNlKE1lbU9wU2l6ZSBzaXplLCBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICByZXR1cm4gMHgwODlmZmMw
MCB8IHNpemUgPDwgMzAgfCBkc3QgPDwgNSB8IHNyYzsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IGludCBleG90aWNTdG9yZShNZW1PcFNpemUgc2l6ZSwgRXhvdGljU3RvcmVGZW5jZSBmZW5jZSwg
UmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIHJldHVybiAweDA4MDA3YzAwIHwgc2l6ZSA8PCAzMCB8IHJlc3VsdCA8PCAxNiB8
IGZlbmNlIDw8IDE1IHwgZHN0IDw8IDUgfCBzcmM7CisgICAgfQorICAgIAogICAgIC8vIFdvcmth
cm91bmQgZm9yIENvcnRleC1BNTMgZXJyYXR1bSAoODM1NzY5KS4gRW1pdCBhbiBleHRyYSBub3Ag
aWYgdGhlCiAgICAgLy8gbGFzdCBpbnN0cnVjdGlvbiBpbiB0aGUgYnVmZmVyIGlzIGEgbG9hZCwg
c3RvcmUgb3IgcHJlZmV0Y2guIE5lZWRlZAogICAgIC8vIGJlZm9yZSA2NC1iaXQgbXVsdGlwbHkt
YWNjdW11bGF0ZSBpbnN0cnVjdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIiAvLyBIYXZlIHRvIGJyZWFrIHdpdGggc3R5bGUg
YmVjYXVzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggaXMgYSBzaGFkeSBoZWFkZXIuCisKKyNp
ZiBFTkFCTEUoQVNTRU1CTEVSKQorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN0YXR1c0Nv
bmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICBjYXNl
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdWNjZXNzOgorICAgICAgICBvdXQucHJpbnQo
IlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlckJhc2U6OkZhaWx1cmU6CisgICAgICAgIG91dC5wcmludCgiRmFpbHVyZSIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTQtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1JhbmRvbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDggKzUxLDI4IEBAIG5h
bWVzcGFjZSBERkcgewogc3RydWN0IE9TUkV4aXQ7CiB9CiAKK2NsYXNzIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXR1c0NvbmRpdGlvbiB7CisgICAg
ICAgIFN1Y2Nlc3MsCisgICAgICAgIEZhaWx1cmUKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBT
dGF0dXNDb25kaXRpb24gaW52ZXJ0KFN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisgICAgewor
ICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbikgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAg
ICAgICAgICByZXR1cm4gRmFpbHVyZTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAg
ICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgfQorfTsKKwogdGVtcGxh
dGUgPGNsYXNzIEFzc2VtYmxlclR5cGUsIGNsYXNzIE1hY3JvQXNzZW1ibGVyVHlwZT4KLWNsYXNz
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgeworY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1ibGVyVHlw
ZT4gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlclR5cGU7CiAgICAgdHlwZWRlZiBBc3NlbWJsZXJUeXBl
IEFzc2VtYmxlclR5cGVfVDsKQEAgLTExMDgsMyArMTEyOSwxNiBAQCBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCituYW1lc3BhY2Ug
V1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdGF0dXNDb25kaXRp
b24pOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiw2ICsx
MzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMyOyAvLyBU
aGlzIGlzIHN1cGVyIHVzZWZ1bCBmb3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8vIFV0aWxp
dGllcyB1c2VkIGJ5IHRoZSBERkcgSklULgorICAgIHVzaW5nIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXJCYXNlOjppbnZlcnQ7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQ7CiAg
ICAgCiAgICAgc3RhdGljIERvdWJsZUNvbmRpdGlvbiBpbnZlcnQoRG91YmxlQ29uZGl0aW9uIGNv
bmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzNzUsNyArMzM3NSwyMjkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
ZG1iSVNIKCk7CiAgICAgfQotCisgICAgCisgICAgdm9pZCBsb2FkQWNxOFNpZ25lZEV4dGVuZFRv
MzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxkYXI8OD4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVz
cykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkQWNxOFNpZ25lZEV4dGVu
ZFRvMzIoYWRkcmVzcywgZGVzdCk7CisgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMigweGZmKSwg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHI8
OD4oc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRhcjwxNj4oZGVz
dCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3ExNihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihhZGRyZXNzLCBkZXN0KTsKKyAg
ICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKDB4ZmZmZiksIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RscjwxNj4oc3JjLCBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTMyKEltcGxp
Y2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sZGFyPDMyPihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGFyPDY0PihkZXN0
LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
c3RvcmVSZWwzMihSZWdpc3RlcklEIGRlc3QsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RscjwzMj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJl
c3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJ
RCBkZXN0LCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN0bHI8NjQ+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBsb2FkTGluazgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8OD4oZGVzdCwgZXh0
cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRM
aW5rQWNxOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8OD4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3Mo
YWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZDgoUmVnaXN0ZXJJRCBz
cmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnN0eHI8OD4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRy
ZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmRSZWw4KFJlZ2lz
dGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjw4PihyZXN1bHQsIHNyYywgZXh0cmFjdFNp
bXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rMTYo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxkeHI8MTY+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGlua0FjcTE2KEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGF4
cjwxNj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHN0b3JlQ29uZDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdHhy
PDE2PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdGx4cjwxNj4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGluazMyKEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhyPDMy
PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZExpbmtBY3EzMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8MzI+KGRlc3QsIGV4dHJhY3RT
aW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmQz
MihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVz
dWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4cjwzMj4ocmVzdWx0LCBzcmMsIGV4
dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZUNvbmRSZWwzMihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RseHI8MzI+KHJlc3Vs
dCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZExpbms2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGR4cjw2ND4oZGVzdCwgZXh0cmFjdFNpbXBs
ZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rQWNxNjQo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxkYXhyPDY0PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNz
KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kNjQoUmVnaXN0ZXJJRCBzcmMsIElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN0eHI8NjQ+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhh
ZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kUmVsNjQoUmVnaXN0ZXJJ
RCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPDY0PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBs
ZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTPDE2Pihjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM8MzI+KGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9u
Z0NBUzw2ND4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1
bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM4KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzw4Pihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
bmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
UmVsYXhlZFN0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzwxNj4o
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0
b21pY1JlbGF4ZWRTdHJvbmdDQVM8MzI+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1
ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVk
U3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNSZWxheGVkU3Ryb25nQ0FTPDY0Pihjb25kLCBl
eHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAg
IAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljV2Vha0NB
Uzw4Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNXZWFrQ0FTPDE2Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTMzIoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2hBdG9taWNXZWFrQ0FTPDMyPihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFr
Q0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNXZWFrQ0FTPDY0Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hB
dG9taWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzw4Pihjb25k
LCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
UmVsYXhlZFdlYWtDQVM8MTY+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRX
ZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExp
c3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFr
Q0FTPDY0Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGRlcGVuZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5lb3I8MzI+KGRlc3QsIHNyYywgc3Jj
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkZXBlbmQ2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZW9yPDY0PihkZXN0LCBzcmMs
IHNyYyk7CisgICAgfQorICAgIAogICAgIC8vIE1pc2MgaGVscGVyIGZ1bmN0aW9ucy4KIAogICAg
IC8vIEludmVydCBhIHJlbGF0aW9uYWwgY29uZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwg
YmVjb21lcyA+PSwgZXRjLgpAQCAtMzg3Nyw2ICs0MDk5LDE1OCBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50
IGRhdGFzaXplPgorICAgIHZvaWQgbG9hZExpbmsoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8ZGF0YXNpemU+KGRlc3QsIHNy
Yyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxv
YWRMaW5rQWNxKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sZGF4cjxkYXRhc2l6ZT4oZGVzdCwgc3JjKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgc3RvcmVDb25kKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3R4cjxkYXRhc2l6ZT4oc3JjLCBkZXN0LCByZXN1bHQpOworICAgIH0KKyAg
ICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdG9yZUNvbmRSZWwoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjxkYXRhc2l6ZT4oc3JjLCBkZXN0LCByZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzaWduRXh0
ZW5kKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3Zl
KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAg
ICBKdW1wIGJyYW5jaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwg
UmVnaXN0ZXJJRCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBs
ZWZ0LCByaWdodCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4
cGVjdGVkQW5kUmVzdWx0LCBleHBlY3RlZEFuZFJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBS
ZWdpc3RlcklEIHNpbXBsZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCk7CisgICAgICAgIAorICAgICAgICBMYWJlbCByZWxvb3AgPSBsYWJlbCgpOwor
ICAgICAgICBsb2FkTGlua0FjcTxkYXRhc2l6ZT4oc2ltcGxlQWRkcmVzcywgdG1wKTsKKyAgICAg
ICAgSnVtcCBmYWlsdXJlID0gYnJhbmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIHRtcCk7CisgICAgICAgIAorICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNpemU+KG5l
d1ZhbHVlLCBzaW1wbGVBZGRyZXNzLCByZXN1bHQpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9u
WmVybywgcmVzdWx0KS5saW5rVG8ocmVsb29wLCB0aGlzKTsKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIoY29uZCA9PSBTdWNjZXNzKSwgcmVzdWx0KTsKKyAgICAgICAgSnVtcCBkb25lID0ganVt
cCgpOworICAgICAgICAKKyAgICAgICAgZmFpbHVyZS5saW5rKHRoaXMpOworICAgICAgICBtb3Zl
KHRtcCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNpemU+
KHRtcCwgc2ltcGxlQWRkcmVzcywgcmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKE5vblpl
cm8sIHJlc3VsdCkubGlua1RvKHJlbG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGNvbmQgPT0gRmFpbHVyZSksIHJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBkb25lLmxp
bmsodGhpcyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2
b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBzaWduRXh0ZW5kPGRhdGFzaXpl
PihleHBlY3RlZEFuZFJlc3VsdCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICAKKyAgICAg
ICAgUmVnaXN0ZXJJRCBzaW1wbGVBZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVz
cyk7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpOworICAgICAgICAKKyAgICAgICAgTGFiZWwgcmVsb29wID0gbGFiZWwo
KTsKKyAgICAgICAgbG9hZExpbms8ZGF0YXNpemU+KHNpbXBsZUFkZHJlc3MsIHRtcCk7CisgICAg
ICAgIEp1bXAgZmFpbHVyZSA9IGJyYW5jaDxkYXRhc2l6ZT4oTm90RXF1YWwsIGV4cGVjdGVkQW5k
UmVzdWx0LCB0bXApOworICAgICAgICAKKyAgICAgICAgc3RvcmVDb25kPGRhdGFzaXplPihuZXdW
YWx1ZSwgc2ltcGxlQWRkcmVzcywgcmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKE5vblpl
cm8sIHJlc3VsdCkubGlua1RvKHJlbG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGNvbmQgPT0gU3VjY2VzcyksIHJlc3VsdCk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKKyAgICAgICAgCisgICAgICAgIGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgbW92ZSh0
bXAsIGV4cGVjdGVkQW5kUmVzdWx0KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoY29uZCA9
PSBGYWlsdXJlKSwgcmVzdWx0KTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluayh0aGlzKTsK
KyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEp1bXBMaXN0IGJy
YW5jaEF0b21pY1dlYWtDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBl
eHBlY3RlZEFuZENsb2JiZXJlZCk7CisgICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIHNpbXBs
ZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Cisg
ICAgICAgIAorICAgICAgICBKdW1wTGlzdCBzdWNjZXNzOworICAgICAgICBKdW1wTGlzdCBmYWls
dXJlOworCisgICAgICAgIGxvYWRMaW5rQWNxPGRhdGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXAp
OworICAgICAgICBmYWlsdXJlLmFwcGVuZChicmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgdG1wKSk7CisgICAgICAgIHN0b3JlQ29uZFJlbDxkYXRhc2l6ZT4o
bmV3VmFsdWUsIHNpbXBsZUFkZHJlc3MsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKTsKKyAgICAgICAg
CisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAg
ICAgICBzdWNjZXNzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQpKTsKKyAgICAgICAgICAgIGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBzdWNjZXNzOworICAgICAgICBjYXNlIEZhaWx1cmU6CisgICAgICAgICAgICBmYWlsdXJlLmFw
cGVuZChicmFuY2hUZXN0MzIoTm9uWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWlsdXJlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQg
ZGF0YXNpemU+CisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHNpZ25FeHRlbmQ8
ZGF0YXNpemU+KGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBleHBlY3RlZEFuZENsb2JiZXJlZCk7Cisg
ICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIHNpbXBsZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRh
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIAorICAgICAgICBKdW1wTGlz
dCBzdWNjZXNzOworICAgICAgICBKdW1wTGlzdCBmYWlsdXJlOworCisgICAgICAgIGxvYWRMaW5r
PGRhdGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXApOworICAgICAgICBmYWlsdXJlLmFwcGVuZChi
cmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgdG1wKSk7Cisg
ICAgICAgIHN0b3JlQ29uZDxkYXRhc2l6ZT4obmV3VmFsdWUsIHNpbXBsZUFkZHJlc3MsIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkKTsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAg
ICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAgICAgICBzdWNjZXNzLmFwcGVuZChicmFuY2hUZXN0
MzIoWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAgICAgICAgIGZhaWx1cmUubGlu
ayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBzdWNjZXNzOworICAgICAgICBjYXNlIEZhaWx1
cmU6CisgICAgICAgICAgICBmYWlsdXJlLmFwcGVuZChicmFuY2hUZXN0MzIoTm9uWmVybywgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWlsdXJlOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICAKKyAgICBSZWdpc3RlcklEIGV4dHJhY3RTaW1wbGVBZGRyZXNzKEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCkKKyAgICAg
ICAgICAgIHJldHVybiBhZGRyZXNzLmJhc2U7CisgICAgICAgIAorICAgICAgICBzaWduRXh0ZW5k
MzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIGFkZDY0KGFkZHJlc3MuYmFzZSwg
bWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIG1lbW9yeVRlbXBSZWdpc3RlcjsK
KyAgICB9CiAKICAgICBKdW1wIGp1bXBBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKERvdWJsZUNv
bmRpdGlvbiBjb25kKQogICAgIHsKQEAgLTM5ODksNiArNDM2MywyNCBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk02NDo6CiAgICAgbV9hc3NlbWJsZXIuc3R1cmgocnQsIHJu
LCBzaW1tKTsKIH0KIAordGVtcGxhdGU8PgoraW5saW5lIHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk02
NDo6c2lnbkV4dGVuZDw4PihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQoreworICAg
IHNpZ25FeHRlbmQ4VG8zMihzcmMsIGRlc3QpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9p
ZCBNYWNyb0Fzc2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDE2PihSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQoreworICAgIHNpZ25FeHRlbmQxNlRvMzIoc3JjLCBkZXN0KTsKK30KKwor
dGVtcGxhdGU8PgoraW5saW5lIE1hY3JvQXNzZW1ibGVyQVJNNjQ6Okp1bXAgTWFjcm9Bc3NlbWJs
ZXJBUk02NDo6YnJhbmNoPDY0PihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKK3sKKyAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVm
dCwgcmlnaHQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShB
U1NFTUJMRVIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFkZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CkBAIC0yNTEsMTYgKzI1Niw3MSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
ICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBB
ZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX3JtKHNyYywgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQg
c3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfcm0o
c3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAg
ICB9CisKICAgICB2b2lkIGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJh
c2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMy
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8aW50
MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19pbShzdGF0aWNfY2FzdDxpbnQxNl90Pihp
bW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kOChUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0
YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgaWYgKG9wMSA9PSBvcDIpCkBAIC00NTYsNiArNTE2LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOwogICAgIH0K
IAorICAgIHZvaWQgbmVnMzIoQmFzZUluZGV4IHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5uZWdsX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRl
eCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihBZGRyZXNzIHNyY0Rl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQsIHNy
Y0Rlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihCYXNlSW5kZXggc3JjRGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3dfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVz
dC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IG5lZzgoQWRkcmVzcyBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnYl9t
KHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnOChC
YXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2JfbShzcmNE
ZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsK
KyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNDcxLDE2
ICs1NTYsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcm0oc3JjLCBkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5vcndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoUmVn
aXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9y
Yl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I4
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQsIHNyYy5i
YXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9p
ZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm9ybF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKGltbS5tX3ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGlu
dDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGlt
bS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX2ltKHN0YXRp
Y19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9pbShzdGF0aWNfY2FzdDxpbnQ4
X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQg
b3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYg
KG9wMSA9PSBvcDIpCkBAIC02NTQsMTYgKzc5NCw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19pbShzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1f
dmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBzdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUp
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKEFkZHJl
c3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJs
X21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMy
KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBk
ZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWIxNihSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNy
YywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vi
bF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUp
OworICAgIH0KKworICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3Vi
OChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9ycihzcmMsIGRlc3Qp
OwpAQCAtNjc3LDYgKzg3Miw1MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54
b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAg
ICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAg
ICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90
bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisK
KyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpOwor
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5u
b3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Up
OworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGlt
bS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRl
c3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3J3X2lt
KGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGlt
bS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVz
dC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5k
ZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0x
KQpAQCAtNjkwLDExICs5MjksNDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3Js
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCB4b3Iz
MihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwor
ICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihB
ZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZv
aWQgeG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMu
c2NhbGUsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3Ax
LCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9w
MSA9PSBvcDIpCkBAIC03NDEsNiArMTAxMCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG5v
dDMyKEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwor
ICAgIHZvaWQgbm90MTYoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90MTYo
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBub3Q4KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdGJf
bShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDgoQmFzZUlu
ZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBz
cXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5zcXJ0c2RfcnIoc3JjLCBkc3QpOwpAQCAtMTA3MSw0MiArMTM2NSwy
MyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBhZGRyZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAgICAgICAvLyBPbiAzMi1iaXQgeDg2
IHdlIGNhbiBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOwotICAgICAgICAv
LyBlc3AuLmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQotICAgICAgICBpZiAo
c3JjID49IDQpIHsKLSAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCi0g
ICAgICAgICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRSZWdpc3RlcihhZGRyZXNzKTsK
LQotICAgICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5IHJlZ2lzdGVyIHRvIHBlcmZv
cm0gdGhlIHN0b3JlLgotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAg
bV9hc3NlbWJsZXIubW92d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1w
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0
ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAg
Ly8gT24gMzItYml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lz
dGVyczsKLSAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVy
cyEKLSAgICAgICAgaWYgKHNyYyA+PSA0KSB7Ci0gICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9y
YXJ5IHJlZ2lzdGVyLgotICAgICAgICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVn
aXN0ZXIoYWRkcmVzcyk7Ci0KLSAgICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSBy
ZWdpc3RlciB0byBwZXJmb3JtIHRoZSBzdG9yZS4KLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1w
KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7Ci0gICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3Jt
KHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBz
dG9yZTE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSks
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKworICAgIHZvaWQgc3RvcmUxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X2ltKHN0YXRpY19jYXN0
PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7Cisg
ICAgfQogCiAgICAgLy8gRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uOgogICAgIC8vCkBAIC0yNzQ1
LDc0ICszMDIwLDkwMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKDAsIDAsIFg4NlJlZ2lzdGVyczo6ZXNwKTsKICAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25n
Q0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNt
cHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7Cisg
ICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rp
b24gb2Ygbm9ybWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBz
dG9yZUZlbmNlKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAgIH0KIAotICAgIC8vIFdlIHRh
a2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBsb2Fkcy4g
U28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBsb2FkRmVuY2UoKQorICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFy
dCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgdm9pZCBhdG9taWNTdHJvbmdD
QVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rp
b25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVz
cygpKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBy
ZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAg
ICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFg4NkFzc2Vt
Ymxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9
CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHBhdGNoYWJsZUp1bXBTaXplKCkKKyAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpwYXRjaGFi
bGVKdW1wU2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
OyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3Vu
ZGluZygpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAg
ICAgIGlmIChzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2Vk
KQotICAgICAgICAgICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7Ci0gICAgICAgIHJldHVybiBzX3Nz
ZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0o
bmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJl
Z2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRl
eCBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gQVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3Vz
IHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4gYmUgbWFzc2l2ZS4KLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1
bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAgICAg
fQogCi0gICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdzKCkKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIGludCBmbGFncyA9IDA7Ci0j
aWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgaW50IGNwdUluZm9bNF07Ci0gICAgICAgIF9fY3B1
aWQoY3B1SW5mbywgMHgxKTsKLSAgICAgICAgZmxhZ3MgPSBjcHVJbmZvWzJdOwotI2VsaWYgQ09N
UElMRVIoR0NDX09SX0NMQU5HKQotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGFzbSAoCi0gICAg
ICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAiY3B1aWQ7IgotICAgICAg
ICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCi0gICAg
ICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlYngiLCAiJWVjeCIsICIlZWR4Igot
ICAgICAgICAgICAgKTsKLSNlbHNlCi0gICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAk
MHgxLCAlJWVheDsiCi0gICAgICAgICAgICAicHVzaGwgJSVlYng7IgotICAgICAgICAgICAgImNw
dWlkOyIKLSAgICAgICAgICAgICJwb3BsICUlZWJ4OyIKLSAgICAgICAgICAgICJtb3ZsICUlZWN4
LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAgICAgICAgICAgOgotICAgICAg
ICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICApOwotI2VuZGlmCisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9
KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fz
c2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25n
Q0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZv
aWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNT
dHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdD
QVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBt
X2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJh
bmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRB
bmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9t
aWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIC8vIElmIHlvdSB1c2Ugd2VhayBDQVMsIHlvdSBj
YW5ub3QgcmVseSBvbiBleHBlY3RlZEFuZENsb2JiZXJlZCB0byBoYXZlIGFueSBwYXJ0aWN1bGFy
IHZhbHVlIGFmdGVyCisgICAgLy8gdGhpcyBjb21wbGV0ZXMuIE9uIHg4NiwgaXQgd2lsbCBjb250
YWluIHRoZSByZXN1bHQgb2YgdGhlIHN0cm9uZyBDQVMuIE9uIEFSTSwgaXQgd2lsbCBzdGlsbCBo
YXZlCisgICAgLy8gdGhlIGV4cGVjdGVkIHZhbHVlLgorICAgIHZvaWQgYXRvbWljV2Vha0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dl
YWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
MTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQp
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBB
ZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWlj
U3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNz
LCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAg
ICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFr
Q0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtD
QVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFr
Q0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vh
a0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
V2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVn
aXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUlu
ZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJl
c3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1Zh
bHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdl
YWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZv
aWQgYXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMy
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRX
ZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1Jl
bGF4ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMx
Nihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hBdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhZGQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQWRkOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJ
RCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhZGQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQWRkMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQz
MihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHN1YjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHN1YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNTdWI4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChyZWcsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFRydXN0ZWRJbW0zMiBpbW0s
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFJlZ2lzdGVy
SUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNTdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Vi
MzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWIzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIg
aW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFuZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNBbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMy
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoUmVnaXN0
ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihUcnVzdGVk
SW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBv
cjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBvcjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHhvcjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNY
b3I4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYb3I4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Ix
NihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNYb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHhvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WG9yMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzgo
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnOChh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2KGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzE2KEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWcxNihh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMyKGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzMyKEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWczMihh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90OChhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MTYoQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDE2KGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MzIoQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDMyKGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCBy
ZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54
YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhhZGR3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0Fk
ZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRsX3JtKHJlZywgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNo
Z0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBtX2Fzc2VtYmxlci54Y2hnYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3dfcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShy
ZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJl
ZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTgoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQ4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTgoQmFz
ZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDgoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoQWRk
cmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4U2lnbmVkRXh0
ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4U2lnbmVk
RXh0ZW5kVG8zMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBsb2FkQWNxMTYoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IGxvYWQxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNihCYXNl
SW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTYoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKEFk
ZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTZTaWduZWRF
eHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2ln
bmVkRXh0ZW5kVG8zMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMzIo
QmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDMyKHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTgoc3JjLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgc3RvcmVSZWw4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIHN0b3JlOChpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChp
bW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMTYoc3JjLCBkZXN0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBzdG9yZVJlbDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7
CisgICAgICAgIHN0b3JlMTYoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZVJlbDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
c3RvcmUxNihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoUmVn
aXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBzdG9yZVJlbDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgc3RvcmUzMihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICAvLyBXZSB0YWtl
IHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwgc3RvcmVzLiBT
bywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KKyAgICB2b2lkIHN0b3JlRmVuY2UoKQorICAgIHsKKyAg
ICB9CisKKyAgICAvLyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlv
biBvZiBub3JtYWwgbG9hZHMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgorICAgIHZvaWQgbG9h
ZEZlbmNlKCkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1w
KENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRl
c3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAo
aW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1w
UmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IHBh
dGNoYWJsZUp1bXBTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OnBh
dGNoYWJsZUp1bXBTaXplKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9h
dGluZ1BvaW50Um91bmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKHNfc3NlNF8xQ2hlY2tTdGF0
ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpCisgICAgICAgICAgICB1cGRhdGVFYXgx
RWN4RmxhZ3MoKTsKKyAgICAgICAgcmV0dXJuIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJRENo
ZWNrU3RhdGU6OlNldDsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisg
ICAgeworICAgICAgICAvLyBBVlggc3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVzc2lvbnMg
YW5kIHRob3NlIHJlZ3Jlc3Npb25zIGNhbiBiZSBtYXNzaXZlLgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdzKCkKKyAgICB7
CisgICAgICAgIGludCBmbGFncyA9IDA7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICAgICAgaW50
IGNwdUluZm9bNF07CisgICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHgxKTsKKyAgICAgICAgZmxh
Z3MgPSBjcHVJbmZvWzJdOworI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorI2lmIENQVShY
ODZfNjQpCisgICAgICAgIGFzbSAoCisgICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCisg
ICAgICAgICAgICAiY3B1aWQ7IgorICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAg
ICAgICAgIDogIj1nIiAoZmxhZ3MpCisgICAgICAgICAgICA6CisgICAgICAgICAgICA6ICIlZWF4
IiwgIiVlYngiLCAiJWVjeCIsICIlZWR4IgorICAgICAgICAgICAgKTsKKyNlbHNlCisgICAgICAg
IGFzbSAoCisgICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCisgICAgICAgICAgICAicHVz
aGwgJSVlYng7IgorICAgICAgICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICJwb3BsICUlZWJ4
OyIKKyAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCisgICAgICAgICAgICA6ICI9ZyIgKGZs
YWdzKQorICAgICAgICAgICAgOgorICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgi
CisgICAgICAgICAgICApOworI2VuZGlmCiAjZW5kaWYgLy8gQ09NUElMRVIoR0NDX09SX0NMQU5H
KQogICAgICAgICBzX3NzZTRfMUNoZWNrU3RhdGUgPSAoZmxhZ3MgJiAoMSA8PCAxOSkpID8gQ1BV
SURDaGVja1N0YXRlOjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOwogICAgICAgICBzX2F2
eENoZWNrU3RhdGUgPSAoZmxhZ3MgJiAoMSA8PCAyOCkpID8gQ1BVSURDaGVja1N0YXRlOjpTZXQg
OiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOwpAQCAtMjgzMyw2ICszOTM1LDE4IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uPihj
b25kKTsKICAgICB9CiAKKyAgICBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24o
U3RhdHVzQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAg
ICAgICAgY2FzZSBTdWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6Q29u
ZGl0aW9uRTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAgICAgcmV0dXJuIFg4NkFz
c2VtYmxlcjo6Q29uZGl0aW9uTkU7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uRTsK
KyAgICB9CisKICAgICB2b2lkIHNldDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAjaWYgQ1BVKFg4NikKQEAgLTI5MjcsNiArNDA0MSwzNSBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHNpemVPZlJlZ2lzdGVyKSwg
ZHN0KTsKICAgICAgICAgc3JjSXNOb25aZXJvLmxpbmsodGhpcyk7CiAgICAgfQorICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
cmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFu
ZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVn
aXN0ZXJzOjplYXgpOworICAgICAgICBzZXQzMih4ODZDb25kaXRpb24oY29uZCksIHJlc3VsdCk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGF0b21pY1N0
cm9uZ0NBUyhSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQor
ICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgp
OworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAg
c3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIGNvbnN0
IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZS
ZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVu
YygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7
CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkp
KTsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgLy8gT25seSBNYWNyb0Fzc2VtYmxlclg4NiBzaG91
bGQgYmUgdXNpbmcgdGhlIGZvbGxvd2luZyBtZXRob2Q7IFNTRTIgaXMgYWx3YXlzIGF2YWlsYWJs
ZSBvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiwgMjAxNC0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjY0LDExICsyNjQsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5hZGRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFkZDY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZDY0KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGRx
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChBYnNvbHV0ZUFkZHJlc3Mgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgc2Ny
YXRjaFJlZ2lzdGVyKCkpOwpAQCAtMzA2LDYgKzMxNiwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5hZGRxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IDEpCisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5pbmNxX20oYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZHFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQg
YWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3Rl
cigpKTsKQEAgLTM0MiwxMSArMzYwLDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
YW5kcV9ycihzcmMsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFu
ZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwg
c3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lk
IGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZHFfaXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwogICAgIH0KIAor
ICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KwogICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkK
ICAgICB7CiAgICAgICAgIGludHB0cl90IGludFZhbHVlID0gaW1tLmFzSW50cHRyKCk7CkBAIC01
NTIsMTEgKzYwMCw1MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfcihkZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIG5lZzY0KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5lZ3FfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5lZzY0KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bmVncV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKwogICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisg
ICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5vcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwg
ZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KEFkZHJlc3Mg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgb3I2NChCYXNl
SW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5v
cnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsK
KyAgICB9CisKKyAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfaW0oaW1tLm1f
dmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKwogICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdpc3RlcklEIHNyY0Rl
c3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkKQEAgLTYxOSwxNiArNzA3LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIuc3VicV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgc3ViNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoQmFzZUluZGV4IHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAg
IHZvaWQgc3ViNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLnN1YnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9
CiAKKyAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
LCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54
b3JxX3JyKHNyYywgZGVzdCk7CkBAIC02NTEsNiArNzU0LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIueG9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0K
IAorICAgIHZvaWQgeG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoQWRkcmVz
cyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFf
bXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQo
QmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueG9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRl
c3QpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pbShpbW0ubV92YWx1ZSwgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFf
aW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pcihpbW0ubV92
YWx1ZSwgc3JjRGVzdCk7CkBAIC02NjYsNiArNzk0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIubm90cV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZv
aWQgbm90NjQoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3Rx
X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgZGVzdCk7CkBAIC03MjUsNiArODU4LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NlbWJsZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2kzMm0o
aW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tNjQg
aW1tLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lH
Tl9FWFRFTkRfMzJfNjQoaW1tLm1fdmFsdWUpKSB7CkBAIC0xMjk0LDcgKzE0MzIsMjc1IEBAIHB1
YmxpYzoKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwogICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJl
Z2lzdGVyKCkpLCBtYXNrOCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
NjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CiAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQp
CisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsK
KyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9
KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fz
c2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hB
dG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwor
ICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCBy
ZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAg
ICBhdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FT
NjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJl
dHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
bmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdl
YWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hB
dG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFk
ZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIHN1YjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljU3ViNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1
YjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY0FuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFuZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
QW5kNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHhvcjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9y
NjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY05lZzY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljTmVnNjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY05vdDY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljTm90NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2Vt
Ymxlci54YWRkcV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZzY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZzY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGxvYWRBY3E2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZVJlbDY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9y
ZTY0KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNyYywgZGVz
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBB
ZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAg
dm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDE2ICsxOTAsMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgT1BfQUREX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MDEsCiAg
ICAgICAgIE9QX0FERF9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDAzLAogICAgICAgICBP
UF9BRERfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgwNSwKKyAgICAgICAgT1BfT1JfRXZH
YiAgICAgICAgICAgICAgICAgICAgICA9IDB4MDgsCiAgICAgICAgIE9QX09SX0V2R3YgICAgICAg
ICAgICAgICAgICAgICAgPSAweDA5LAogICAgICAgICBPUF9PUl9HdkV2ICAgICAgICAgICAgICAg
ICAgICAgID0gMHgwQiwKICAgICAgICAgT1BfT1JfRUFYSXYgICAgICAgICAgICAgICAgICAgICA9
IDB4MEQsCiAgICAgICAgIE9QXzJCWVRFX0VTQ0FQRSAgICAgICAgICAgICAgICAgPSAweDBGLAor
ICAgICAgICBPUF9BTkRfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgyMCwKICAgICAgICAg
T1BfQU5EX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MjEsCiAgICAgICAgIE9QX0FORF9H
dkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDIzLAorICAgICAgICBPUF9TVUJfRXZHYiAgICAg
ICAgICAgICAgICAgICAgID0gMHgyOCwKICAgICAgICAgT1BfU1VCX0V2R3YgICAgICAgICAgICAg
ICAgICAgICA9IDB4MjksCiAgICAgICAgIE9QX1NVQl9HdkV2ICAgICAgICAgICAgICAgICAgICAg
PSAweDJCLAogICAgICAgICBPUF9TVUJfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgyRCwK
ICAgICAgICAgUFJFX1BSRURJQ1RfQlJBTkNIX05PVF9UQUtFTiAgICA9IDB4MkUsCisgICAgICAg
IE9QX1hPUl9FdkdiICAgICAgICAgICAgICAgICAgICAgPSAweDMwLAogICAgICAgICBPUF9YT1Jf
RXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgzMSwKICAgICAgICAgT1BfWE9SX0d2RXYgICAg
ICAgICAgICAgICAgICAgICA9IDB4MzMsCiAgICAgICAgIE9QX1hPUl9FQVhJdiAgICAgICAgICAg
ICAgICAgICAgPSAweDM1LApAQCAtMjIzLDYgKzIyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9Q
X0dST1VQMV9FdkliICAgICAgICAgICAgICAgICAgPSAweDgzLAogICAgICAgICBPUF9URVNUX0Vi
R2IgICAgICAgICAgICAgICAgICAgID0gMHg4NCwKICAgICAgICAgT1BfVEVTVF9Fdkd2ICAgICAg
ICAgICAgICAgICAgICA9IDB4ODUsCisgICAgICAgIE9QX1hDSEdfRXZHYiAgICAgICAgICAgICAg
ICAgICAgPSAweDg2LAogICAgICAgICBPUF9YQ0hHX0V2R3YgICAgICAgICAgICAgICAgICAgID0g
MHg4NywKICAgICAgICAgT1BfTU9WX0ViR2IgICAgICAgICAgICAgICAgICAgICA9IDB4ODgsCiAg
ICAgICAgIE9QX01PVl9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDg5LApAQCAtMjUyLDYg
KzI1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIFBSRV9TU0VfRjIgICAgICAgICAgICAgICAgICAg
ICAgPSAweEYyLAogICAgICAgICBQUkVfU1NFX0YzICAgICAgICAgICAgICAgICAgICAgID0gMHhG
MywKICAgICAgICAgT1BfSExUICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4RjQsCisgICAg
ICAgIE9QX0dST1VQM19FYiAgICAgICAgICAgICAgICAgICAgPSAweEY2LAogICAgICAgICBPUF9H
Uk9VUDNfRWJJYiAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAgT1BfR1JPVVAzX0V2
ICAgICAgICAgICAgICAgICAgICA9IDB4RjcsCiAgICAgICAgIE9QX0dST1VQM19Fdkl6ICAgICAg
ICAgICAgICAgICAgPSAweEY3LCAvLyBPUF9HUk9VUDNfRXYgaGFzIGFuIGltbWVkaWF0ZSwgd2hl
biBpbnN0cnVjdGlvbiBpcyBhIHRlc3QuIApAQCAtMjkwLDYgKzI5Niw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIE9QX1NFVENDICAgICAgICAgICAgPSAweDkwLAogICAgICAgICBPUDJfM0JZVEVfRVND
QVBFX0FFID0gMHhBRSwKICAgICAgICAgT1AyX0lNVUxfR3ZFdiAgICAgICA9IDB4QUYsCisgICAg
ICAgIE9QMl9DTVBYQ0hHYiAgICAgICAgPSAweEIwLAorICAgICAgICBPUDJfQ01QWENIRyAgICAg
ICAgID0gMHhCMSwKICAgICAgICAgT1AyX01PVlpYX0d2RWIgICAgICA9IDB4QjYsCiAgICAgICAg
IE9QMl9CU0YgICAgICAgICAgICAgPSAweEJDLAogICAgICAgICBPUDJfVFpDTlQgICAgICAgICAg
ID0gMHhCQywKQEAgLTI5OCw2ICszMDYsOCBAQCBwcml2YXRlOgogICAgICAgICBPUDJfTU9WU1hf
R3ZFYiAgICAgID0gMHhCRSwKICAgICAgICAgT1AyX01PVlpYX0d2RXcgICAgICA9IDB4QjcsCiAg
ICAgICAgIE9QMl9NT1ZTWF9HdkV3ICAgICAgPSAweEJGLAorICAgICAgICBPUDJfWEFERGIgICAg
ICAgICAgID0gMHhDMCwKKyAgICAgICAgT1AyX1hBREQgICAgICAgICAgICA9IDB4QzEsCiAgICAg
ICAgIE9QMl9QRVhUUldfR2RVZEliICAgPSAweEM1LAogICAgICAgICBPUDJfUFNMTFFfVWRxSWIg
ICAgID0gMHg3MywKICAgICAgICAgT1AyX1BTUkxRX1VkcUliICAgICA9IDB4NzMsCkBAIC00NDAs
NiArNDUwLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FE
RF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgYWRkbF9t
cihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAg
ICAKICNpZiAhQ1BVKFg4Nl82NCkKICAgICB2b2lkIGFkZGxfbXIoY29uc3Qgdm9pZCogYWRkciwg
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNTYyLDExICs1NzcsMjEgQEAgcHVibGljOgogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZz
ZXQpOwogICAgIH0KIAorICAgIHZvaWQgYWRkcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhZGRxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgYWRkcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhZGRxX2lyKGludCBpbW0sIFJlZ2lzdGVy
SUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsK
QEAgLTU5MSw2ICs2MTYsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYWRkcV9pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAx
X09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BREQsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAjZWxzZQogICAgIHZvaWQgYWRkbF9pbShpbnQg
aW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKQEAgLTYxNCwxMSArNjUwLDQzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3QsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBhbmRsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhbmRsX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGFuZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnBy
ZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5kbF9ybShzcmMsIG9mZnNldCwgYmFz
ZSk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5k
bF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kYl9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9pcihpbnQg
aW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CkBAIC02NDEsNiArNzA5LDUzIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KIAorICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJ
eiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgYW5kd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmR3X2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFuZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9FYkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBH
Uk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZv
aWQgYW5kcV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNjU3
LDYgKzc3Miw0OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUz
MihpbW0pOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBhbmRxX21yKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBhbmRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JP
VVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAj
ZWxzZQogICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsK
QEAgLTcwMyw2ICs4NjAsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfR1JPVVA1X0V2LCBHUk9VUDFfT1BfQURELCBiYXNlLCBvZmZzZXQpOwog
ICAgIH0KKworICAgIHZvaWQgaW5jcV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfR1JPVVA1X0V2LCBHUk9VUDFfT1BfQURELCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQogI2VuZGlmIC8vIENQVShYODZfNjQpCiAKICAgICB2b2lkIG5lZ2xf
cihSZWdpc3RlcklEIGRzdCkKQEAgLTcxNSw2ICs4NzcsMTYgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVH
LCBkc3QpOwogICAgIH0KKworICAgIHZvaWQgbmVncV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19F
diwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3Ff
bShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19Fdiwg
R1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRp
ZgogCiAgICAgdm9pZCBuZWdsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQpAQCAtNzIy
LDYgKzg5NCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDNfRXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9p
ZCBuZWdsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAz
X0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CisgICAgdm9pZCBuZWd3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWds
X20ob2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3dfbShpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVnbF9t
KG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2JfbShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOworICAg
IH0KKworICAgIHZvaWQgbmVnYl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKwogICAgIHZvaWQgbm90bF9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwg
ZHN0KTsKQEAgLTczMiw2ICs5MzEsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgbm90bF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKworICAgIHZvaWQgbm90d19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgbm90bF9tKG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3R3X20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIG5vdGxfbShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGJfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgbm90
cV9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTc0Miw2ICs5NjgsMTEgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9V
UDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgbm90cV9tKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNf
T1BfTk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAg
ICB2b2lkIG9ybF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC03NTQsMTEg
Kzk4NSw0MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9H
dkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBvcmxfbXIoaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2
RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQg
b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAg
ewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBvcmxfcm0oc3JjLCBvZmZz
ZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAg
ICAgb3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIG9ybF9pcihpbnQg
aW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CkBAIC03ODQsMTIgKzEwNDcsMTAxIEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAorICAgIHZvaWQgb3JsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENB
Tl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgb3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9V
UDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBvcndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0Vi
SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgb3JiX2ltKGludCBpbW0sIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1Bf
T1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBvcnFfcnIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQg
b3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
R1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIHZvaWQgb3JxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTgzMSwxMSArMTE4Myw0
MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwg
ZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYs
IGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3Vi
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9m
ZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgc3Vid19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBz
cmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1Ymxf
aXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzhfMzIoaW1tKSkgewpAQCAtODYxLDYgKzEyNDUsNTMgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgfQogCisgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAg
fQorCisgICAgdm9pZCBzdWJ3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1Yndf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9T
VUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1t
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQp
CiAgICAgdm9pZCBzdWJxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7
CkBAIC04NzIsMTEgKzEzMDMsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZv
aWQgc3VicV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCiAgICAgdm9pZCBzdWJxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CiAgICAgdm9pZCBzdWJxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTkwMSw2ICsxMzQyLDE3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICB2b2lkIHN1YnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9
CisgICAgfQogI2Vsc2UKICAgICB2b2lkIHN1YmxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRk
cikKICAgICB7CkBAIC05MjQsMTEgKzEzNzYsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfWE9SX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAK
KyAgICB2b2lkIHhvcmxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKICAgICB2b2lkIHhvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9y
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KwogICAgIHZvaWQgeG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTQw
LDYgKzE0MDIsNzUgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB4b3Js
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGlt
bSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwg
R1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3Jj
LCBvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcndf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9Y
T1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1t
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1hPUl9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAg
dm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCB4b3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAx
X09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX2lyKGludCBpbW0sIFJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGlt
bSkpIHsKQEAgLTk3NCwxMSArMTUwNSw0NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09Q
X1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICB2b2lkIHhvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorICAg
IAogICAgIHZvaWQgeG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2
R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcnFfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9S
X0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2LCBkZXN0
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYs
IGRlc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAg
IHZvaWQgbHpjbnRfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTU4Niwx
MSArMjE1MywzOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfWENIR19Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnYl9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgeGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4
Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9Y
Q0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAg
IHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3Ys
IHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogI2lmIENQVShYODZf
NjQpCiAgICAgdm9pZCB4Y2hncV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewpAQCAtMTYwNiw2ICsyMjAwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KKworICAgIHZvaWQgeGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgbW92bF9ycihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNzMxLDYgKzIzMzAsMjAgQEAgcHVibGljOgog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG1vdndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAxMV9Fdkl6LCBHUk9VUDExX01PViwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG1vdndfaW0oaW50
IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SXosIEdST1VQ
MTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZsX0VBWG0oY29uc3Qgdm9p
ZCogYWRkcikKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfT3ZF
QVgpOwpAQCAtMTgwMCw2ICsyNDEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMzIoaW1tKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdnFfaTMybShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMTFfRXZJeiwg
R1JPVVAxMV9NT1YsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICB9CisKICAgICB2b2lkIG1vdnFfaTY0cihpbnQ2
NF90IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9NT1ZfRUFYSXYsIGRzdCk7CkBAIC0yNzgxLDYgKzM0MDAsOTAgQEAgcHVibGlj
OgogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX0xPQ0spOwogICAgIH0KICAgICAKKyAg
ICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hH
Yiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgo
T1AyX0NNUFhDSEdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21w
eGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
Y21weGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9DTVBYQ0hHLCBzcmMs
IGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3Ffcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0NN
UFhDSEcsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHhhZGRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQUREYiwgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRiX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX1hBRERi
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCB4YWRkd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3
b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgeGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFk
ZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0
ZU9wNjQoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KyAgICAKICAgICB2b2lkIG1mZW5jZSgpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci50aHJl
ZUJ5dGVPcChPUDJfM0JZVEVfRVNDQVBFX0FFLCBPUDNfTUZFTkNFKTsKQEAgLTM3NTcsNiArNDQ2
MCwyNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0oZ3JvdXBP
cCwgcm0pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNv
ZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkKKyAgICAg
ICAgeworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1f
YnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4
KHJlZywgYmFzZSksIHJlZywgMCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVu
Y2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNo
ZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2Us
IG9mZnNldCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9w
Y29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUsIGludCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUlu
c3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0
ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcpIHx8IHJlZ1JlcXVpcmVzUmV4KGlu
ZGV4LCBiYXNlKSwgcmVnLCBpbmRleCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0
ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIEltbWVk
aWF0ZXM6CiAgICAgICAgIC8vCiAgICAgICAgIC8vIEFuIGltbWVkYWl0ZSBzaG91bGQgYmUgYXBw
ZW5kZWQgd2hlcmUgYXBwcm9wcmlhdGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNBdG9taWNW
YWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7CisKK0F0b21pY1ZhbHVlOjp+QXRvbWljVmFsdWUoKQoreworfQorCit2b2lkIEF0b21p
Y1ZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBj
b25zdAoreworICAgIG91dC5wcmludChjb21tYSwgIndpZHRoID0gIiwgbV93aWR0aCk7CisgICAg
CisgICAgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKGNvbW1hLCBvdXQpOworfQorCitWYWx1ZSogQXRv
bWljVmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyBBdG9taWNWYWx1
ZSgqdGhpcyk7Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdp
biBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFsdWUqIHBvaW50ZXIsIGlu
dDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAg
IDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgb3BlcmFuZC0+dHlwZSgpLCBvcmln
aW4sIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UsIG9wZXJhbmQsIHBvaW50ZXIpCisgICAgLCBt
X3dpZHRoKHdpZHRoKQoreworICAgIEFTU0VSVChiZXN0VHlwZShHUCwgYWNjZXNzV2lkdGgoKSkg
PT0gYWNjZXNzVHlwZSgpKTsKKyAgICAKKyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAg
ICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2Ug
QXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK0F0b21pY1ZhbHVl
OjpBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1
ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJf
dCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBN
ZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBraW5kLm9wY29kZSgpID09IEF0b21pY1dl
YWtDQVMgPyBJbnQzMiA6IGV4cGVjdGVkVmFsdWUtPnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIHJh
bmdlLCBmZW5jZVJhbmdlLCBleHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlcikKKyAgICAs
IG1fd2lkdGgod2lkdGgpCit7CisgICAgQVNTRVJUKGJlc3RUeXBlKEdQLCBhY2Nlc3NXaWR0aCgp
KSA9PSBhY2Nlc3NUeXBlKCkpOworCisgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAg
Y2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJ
VCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKwor
I2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBBdG9t
aWNWYWx1ZSA6IHB1YmxpYyBNZW1vcnlWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wg
YWNjZXB0cyhLaW5kIGtpbmQpCisgICAgeworICAgICAgICByZXR1cm4gaXNBdG9taWMoa2luZC5v
cGNvZGUoKSk7CisgICAgfQorICAgIAorICAgIH5BdG9taWNWYWx1ZSgpOworICAgIAorICAgIFR5
cGUgYWNjZXNzVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGNoaWxkKDApLT50eXBlKCk7IH0KKyAgICAK
KyAgICBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICAK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFt
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgCisgICAgVmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIAorcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAg
IAorICAgIEF0b21pY1ZhbHVlKEtpbmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBW
YWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFw
UmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCkpOwor
ICAgIAorICAgIEF0b21pY1ZhbHVlKEtpbmQsIE9yaWdpbiwgV2lkdGgsIFZhbHVlKiBleHBlY3Rl
ZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9
IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJh
bmdlID0gSGVhcFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgV2lkdGggbV93aWR0aDsKK307CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9jay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjEz
NDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKIGNsYXNz
IEluc2VydGlvblNldDsKIGNsYXNzIFByb2NlZHVyZTsKIGNsYXNzIFZhbHVlOwordGVtcGxhdGU8
dHlwZW5hbWU+IGNsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDsKIAogY2xhc3MgQmFzaWNC
bG9jayB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFzaWNCbG9jayk7CkBAIC0xNTgsNiAr
MTU5LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAg
ICAgZnJpZW5kIGNsYXNzIEluc2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJl
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0OwogICAgIAogICAgIC8vIEluc3RhbnRpYXRlIHZpYSBQcm9jZWR1cmUuCiAgICAgQmFz
aWNCbG9jayh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCShyZXZpc2lv
biAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMzUgKzM2LDEzIEBACiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsKIAogQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KFByb2Nl
ZHVyZSAmcHJvYykKLSAgICA6IG1fcHJvYyhwcm9jKQorICAgIDogR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0KHByb2MubV9ibG9ja3MpCisgICAgLCBtX3Byb2MocHJvYykKIHsKIH0KIAogQmxvY2tJ
bnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpIHsgfQogCi12b2lkIEJsb2NrSW5zZXJ0
aW9uU2V0OjppbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCi17Ci0gICAgbV9pbnNl
cnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOwotfQotCi1CYXNpY0Jsb2NrKiBCbG9j
a0luc2VydGlvblNldDo6aW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5KQot
ewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhV
SU5UX01BWCwgZnJlcXVlbmN5KSk7Ci0gICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxvY2suZ2V0
KCk7Ci0gICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0Ojpp
bnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5KQotewotICAg
IHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8g
ZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2Nr
SW5zZXJ0aW9uU2V0OjppbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1
ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJlcXVlbmN5
ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7Ci19Ci0KIEJh
c2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcndhcmQoCiAgICAgQmFzaWNCbG9j
ayogYmxvY2ssIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqIGluc2VydGlvblNl
dCwgZG91YmxlIGZyZXF1ZW5jeSkKIHsKQEAgLTEwMiwzMiArODAsNiBAQCBCYXNpY0Jsb2NrKiBC
bG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9v
bCBCbG9ja0luc2VydGlvblNldDo6ZXhlY3V0ZSgpCi17Ci0gICAgaWYgKG1faW5zZXJ0aW9ucy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBXZSBhbGxvdyBp
bnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5lZWQgdG8g
c29ydCB0aGVtIGJlZm9yZQotICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4g
V2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKLSAg
ICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCi0gICAgYnViYmxlU29ydChtX2luc2Vy
dGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKLQotICAgIGV4ZWN1dGVJbnNlcnRp
b25zKG1fcHJvYy5tX2Jsb2NrcywgbV9pbnNlcnRpb25zKTsKLSAgICAKLSAgICAvLyBQcnVuZSBv
dXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MK
LSAgICAvLyBoZWFsdGh5IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgotICAg
IG1fcHJvYy5tX2Jsb2Nrcy5yZW1vdmVBbGxNYXRjaGluZygKLSAgICAgICAgWyZdIChzdGQ6OnVu
aXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJl
dHVybiAhYmxvY2tQdHI7Ci0gICAgICAgIH0pOwotICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9wcm9jLm1fYmxvY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3Byb2MubV9i
bG9ja3NbaV0tPm1faW5kZXggPSBpOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHJldmlz
aW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9u
U2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoQjNf
SklUKQogCisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRl
ICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0zNSwyNiArMzYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7CiAKIGNsYXNzIEluc2VydGlvblNldDsKIAotdHlwZWRlZiBXVEY6Okluc2VydGlvbjxz
dGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOwordHlwZWRlZiBHZW5l
cmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5z
ZXJ0aW9uOwogCi1jbGFzcyBCbG9ja0luc2VydGlvblNldCB7CitjbGFzcyBCbG9ja0luc2VydGlv
blNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4gewogcHVi
bGljOgogICAgIEJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSYpOwogICAgIH5CbG9ja0luc2Vy
dGlvblNldCgpOwogICAgIAotICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYpOwotCi0g
ICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCi0gICAgQmFzaWNCbG9j
ayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAg
ICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4gYmxvY2suIFVzdWFsbHkg
eW91IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQotICAgIC8vIGFyZ3VtZW50LiBQYXNzaW5n
IFBOYU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlICdiZWZvcmUn
IGJsb2NrLiBUaGF0J3MKLSAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdhbnQuCi0gICAgQmFzaWNC
bG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSA9
IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxv
Y2suCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJs
ZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQogICAgIC8vIEEgaGVscGVyIHRvIHNwbGl0IGEgYmxvY2sg
d2hlbiBmb3J3YXJkIGl0ZXJhdGluZyBvdmVyIGl0LiBJdCBjcmVhdGVzIGEgbmV3IGJsb2NrIHRv
IGhvbGQKICAgICAvLyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYXQgdmFsdWVJ
bmRleC4gVGhlIGN1cnJlbnQgYmxvY2sgaXMgbGVmdCB3aXRoCiAgICAgLy8gZXZlcnl0aGluZyBh
dCBhbmQgYWZ0ZXIgdmFsdWVJbmRleC4gSWYgdGhlIG9wdGlvbmFsIEluc2VydGlvblNldCBpcyBw
cm92aWRlZCwgaXQgd2lsbCBnZXQKQEAgLTgwLDEyICs2OCw5IEBAIHB1YmxpYzoKICAgICBCYXNp
Y0Jsb2NrKiBzcGxpdEZvcndhcmQoCiAgICAgICAgIEJhc2ljQmxvY2sqLCB1bnNpZ25lZCYgdmFs
dWVJbmRleCwgSW5zZXJ0aW9uU2V0KiA9IG51bGxwdHIsCiAgICAgICAgIGRvdWJsZSBmcmVxdWVu
Y3kgPSBQTmFOKTsKLSAgICAKLSAgICBib29sIGV4ZWN1dGUoKTsKIAogcHJpdmF0ZToKICAgICBQ
cm9jZWR1cmUmIG1fcHJvYzsKLSAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1faW5zZXJ0
aW9uczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODIsNyArODIs
OCBAQCBib29sIEVmZmVjdHM6OmludGVyZmVyZXMoY29uc3QgRWZmZWN0cyYgCiAgICAgICAgIHx8
IGludGVyZmVyZXNXaXRoV3JpdGVzUGlubmVkKG90aGVyLCAqdGhpcykKICAgICAgICAgfHwgd3Jp
dGVzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90
aGVyLnJlYWRzKQotICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53cml0ZXMpOworICAg
ICAgICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53cml0ZXMpCisgICAgICAgIHx8IChmZW5jZSAm
JiBvdGhlci5mZW5jZSk7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3I9PShjb25zdCBFZmZl
Y3RzJiBvdGhlcikgY29uc3QKQEAgLTk1LDcgKzk2LDggQEAgYm9vbCBFZmZlY3RzOjpvcGVyYXRv
cj09KGNvbnN0IEVmZmVjdHMmIAogICAgICAgICAmJiB3cml0ZXNQaW5uZWQgPT0gb3RoZXIud3Jp
dGVzUGlubmVkCiAgICAgICAgICYmIHJlYWRzUGlubmVkID09IG90aGVyLnJlYWRzUGlubmVkCiAg
ICAgICAgICYmIHdyaXRlcyA9PSBvdGhlci53cml0ZXMKLSAgICAgICAgJiYgcmVhZHMgPT0gb3Ro
ZXIucmVhZHM7CisgICAgICAgICYmIHJlYWRzID09IG90aGVyLnJlYWRzCisgICAgICAgICYmIGZl
bmNlID09IG90aGVyLmZlbmNlOwogfQogCiBib29sIEVmZmVjdHM6Om9wZXJhdG9yIT0oY29uc3Qg
RWZmZWN0cyYgb3RoZXIpIGNvbnN0CkBAIC0xMjAsNiArMTIyLDggQEAgdm9pZCBFZmZlY3RzOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbgogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJXcml0
ZXNQaW5uZWQiKTsKICAgICBpZiAocmVhZHNQaW5uZWQpCiAgICAgICAgIG91dC5wcmludChjb21t
YSwgIlJlYWRzUGlubmVkIik7CisgICAgaWYgKGZlbmNlKQorICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJGZW5jZSIpOwogICAgIGlmICh3cml0ZXMpCiAgICAgICAgIG91dC5wcmludChjb21tYSwg
IldyaXRlczoiLCB3cml0ZXMpOwogICAgIGlmIChyZWFkcykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VmZmVjdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNFZmZlY3RzLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0VmZmVjdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDYgKzcxLDEwIEBAIHN0
cnVjdCBFZmZlY3RzIHsKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYzMTczCiAgICAgYm9vbCByZWFkc1Bpbm5lZCB7IGZhbHNlIH07CiAgICAgYm9vbCB3
cml0ZXNQaW5uZWQgeyBmYWxzZSB9OworICAgIAorICAgIC8vIE1lbW9yeSBmZW5jZXMgY2Fubm90
IGJlIHJlb3JkZXJlZCBhcm91bmQgZWFjaCBvdGhlciByZWdhcmRsZXNzIG9mIHRoZWlyIGVmZmVj
dHMuIFRoaXMgaXMgZmxhZ2dlZAorICAgIC8vIGlmIHRoZSBvcGVyYXRpb24gaXMgYSBtZW1vcnkg
ZmVuY2UuCisgICAgYm9vbCBmZW5jZSB7IGZhbHNlIH07CiAKICAgICBIZWFwUmFuZ2Ugd3JpdGVz
OwogICAgIEhlYXBSYW5nZSByZWFkczsKQEAgLTg5LDYgKzkzLDcgQEAgc3RydWN0IEVmZmVjdHMg
ewogICAgICAgICByZXN1bHQucmVhZHMgPSBIZWFwUmFuZ2U6OnRvcCgpOwogICAgICAgICByZXN1
bHQucmVhZHNQaW5uZWQgPSB0cnVlOwogICAgICAgICByZXN1bHQud3JpdGVzUGlubmVkID0gdHJ1
ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKQEAgLTEwMyw3ICsxMDgsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAKICAgICBib29s
IG11c3RFeGVjdXRlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBl
eGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2FsU3RhdGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5l
ZDsKKyAgICAgICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9j
YWxTdGF0ZSB8fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVkIHx8IGZlbmNlOwogICAgIH0KIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiByZW9yZGVyaW5nIGluc3RydWN0aW9ucyB3aXRoIHRoZXNlIHJl
c3BlY3RpdmUgZWZmZWN0cyB3b3VsZCBjaGFuZ2UgcHJvZ3JhbQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJl
c3Npb25zLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0Miw2
ICsxNDIsNyBAQCBzdHJ1Y3QgSW1wdXJlQmxvY2tEYXRhIHsKIAogICAgIFJhbmdlU2V0PEhlYXBS
YW5nZT4gcmVhZHM7IC8vIFRoaXMgb25seSBnZXRzIHVzZWQgZm9yIGZvcndhcmQgc3RvcmUgZWxp
bWluYXRpb24uCiAgICAgUmFuZ2VTZXQ8SGVhcFJhbmdlPiB3cml0ZXM7IC8vIFRoaXMgZ2V0cyB1
c2VkIGZvciBib3RoIGxvYWQgYW5kIHN0b3JlIGVsaW1pbmF0aW9uLgorICAgIGJvb2wgZmVuY2U7
CiAKICAgICBNZW1vcnlWYWx1ZU1hcCBzdG9yZXNBdEhlYWQ7CiAgICAgTWVtb3J5VmFsdWVNYXAg
bWVtb3J5VmFsdWVzQXRUYWlsOwpAQCAtMTc0LDEyICsxNzUsMTQgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkgJiYgbWVtb3J5LT5pc1N0b3Jl
KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEucmVhZHMub3ZlcmxhcHMobWVtb3J5LT5y
YW5nZSgpKQotICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVt
b3J5LT5yYW5nZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJs
YXBzKG1lbW9yeS0+cmFuZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKCFkYXRhLmZlbmNl
IHx8ICFtZW1vcnktPmhhc0ZlbmNlKCkpKQogICAgICAgICAgICAgICAgICAgICBkYXRhLnN0b3Jl
c0F0SGVhZC5hZGQobWVtb3J5KTsKICAgICAgICAgICAgICAgICBkYXRhLnJlYWRzLmFkZChlZmZl
Y3RzLnJlYWRzKTsKIAogICAgICAgICAgICAgICAgIGlmIChIZWFwUmFuZ2Ugd3JpdGVzID0gZWZm
ZWN0cy53cml0ZXMpCiAgICAgICAgICAgICAgICAgICAgIGNsb2JiZXIoZGF0YSwgd3JpdGVzKTsK
KyAgICAgICAgICAgICAgICBkYXRhLmZlbmNlIHw9IGVmZmVjdHMuZmVuY2U7CiAKICAgICAgICAg
ICAgICAgICBpZiAobWVtb3J5KQogICAgICAgICAgICAgICAgICAgICBkYXRhLm1lbW9yeVZhbHVl
c0F0VGFpbC5hZGQobWVtb3J5KTsKQEAgLTQ0NSw4ICs0NDgsNiBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGRhdGFMb2coIkJhZCBtZW1vcnkg
dmFsdWU6ICIsIGRlZXBEdW1wKG1fcHJvYywgbV92YWx1ZSksICJcbiIpOwotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNDc4LDYgKzQ3OSw5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRmlsdGVyPgogICAgIGJvb2wgZmluZFN0b3JlQWZ0ZXJDbG9iYmVyKFZhbHVlKiBwdHIs
IEhlYXBSYW5nZSByYW5nZSwgY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAgeworICAgICAgICBp
ZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICAvLyBXZSBjYW4gZWxpbWluYXRlIGEgc3Rv
cmUgaWYgZXZlcnkgZm9yd2FyZCBwYXRoIGhpdHMgYSBzdG9yZSB0byB0aGUgc2FtZSBsb2NhdGlv
biBiZWZvcmUKICAgICAgICAgLy8gaGl0dGluZyBhbnkgb3BlcmF0aW9uIHRoYXQgb2JzZXJ2ZXMg
dGhlIHN0b3JlLiBUaGlzIHNlYXJjaCBzZWVtcyBsaWtlIGl0IHNob3VsZCBiZQogICAgICAgICAv
LyBleHBlbnNpdmUsIGJ1dCBpbiB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5IG9mIGNhc2VzIGl0
IHdpbGwgYWxtb3N0IGltbWVkaWF0ZWx5IGhpdCBhbiAKQEAgLTYxNCw2ICs2MTgsMTIgQEAgcHJp
dmF0ZToKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCptX3ZhbHVl
LCAiOiBsb29raW5nIGJhY2t3YXJkIGZvciAiLCAqcHRyLCAiLi4uXG4iKTsKICAgICAgICAgCisg
ICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkgeworICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmlu
ZyB1cCBiZWNhdXNlIGZlbmNlcy5cbiIpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgfQorICAgICAgICAKICAgICAgICAgaWYgKE1lbW9yeVZhbHVlKiBtYXRjaCA9IG1fZGF0YS5t
ZW1vcnlWYWx1ZXNBdFRhaWwuZmluZChwdHIsIGZpbHRlcikpIHsKICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGb3VuZCAiLCAqbWF0Y2gsICIg
bG9jYWxseS5cbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNw
cAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkIzTG93
ZXJUb0Fpci5oIgogI2luY2x1ZGUgIkIzTW92ZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIkIzUHJv
Y2VkdXJlLmgiCisjaW5jbHVkZSAiQjNQdXJlQ1NFLmgiCiAjaW5jbHVkZSAiQjNSZWR1Y2VEb3Vi
bGVUb0Zsb2F0LmgiCiAjaW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgogI2luY2x1ZGUgIkIz
VGltaW5nU2NvcGUuaCIKQEAgLTkyLDYgKzkzLDcgQEAgdm9pZCBnZW5lcmF0ZVRvQWlyKFByb2Nl
ZHVyZSYgcHJvY2VkdXJlLAogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUwNTA3CiAgICAgfQogCisgICAgLy8gVGhpcyBwdXRzIHRoZSBJUiBpbiBx
dWlya3MgbW9kZS4KICAgICBsb3dlck1hY3Jvcyhwcm9jZWR1cmUpOwogCiAgICAgaWYgKG9wdExl
dmVsID49IDEpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9j
a0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUg
IlB1cmVOYU4uaCIKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorI2luY2x1ZGUgPHd0Zi9J
bnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgeworCitjbGFzcyBJbnNlcnRpb25TZXQ7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEJhc2ljQmxvY2s+CitjbGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQgeworcHVibGljOgor
ICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRpb248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBC
bG9ja0luc2VydGlvbjsKKyAgICAKKyAgICBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4mIGJsb2NrcykKKyAgICAgICAgOiBtX2Jsb2Nr
cyhibG9ja3MpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2b2lkIGluc2VydChCbG9ja0luc2Vy
dGlvbiYmIGluc2VydGlvbikKKyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RG
TW92ZShpbnNlcnRpb24pKTsKKyAgICB9CisKKyAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQg
YSBnaXZlbiBpbmRleC4KKyAgICBCYXNpY0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRv
dWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJh
c2ljQmxvY2s+IGJsb2NrKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKKyAg
ICAgICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxvY2suZ2V0KCk7CisgICAgICAgIGluc2VydChC
bG9ja0luc2VydGlvbihpbmRleCwgV1RGTW92ZShibG9jaykpKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2
ZW4gYmxvY2suIFVzdWFsbHkgeW91IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQorICAgIC8v
IGFyZ3VtZW50LiBQYXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVu
Y3kgb2YgdGhlICdiZWZvcmUnIGJsb2NrLiBUaGF0J3MKKyAgICAvLyB1c3VhbGx5IHdoYXQgeW91
IHdhbnQuCisgICAgQmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwg
ZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGJl
Zm9yZS0+aW5kZXgoKSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9y
ZS0+ZnJlcXVlbmN5KCkpOworICAgIH0KKworICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYWZ0
ZXIgdGhlIGdpdmVuIGJsb2NrLgorICAgIEJhc2ljQmxvY2sqIGluc2VydEFmdGVyKEJhc2ljQmxv
Y2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHJldHVy
biBpbnNlcnQoYWZ0ZXItPmluZGV4KCkgKyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJl
cXVlbmN5IDogYWZ0ZXItPmZyZXF1ZW5jeSgpKTsKKyAgICB9CisKKyAgICBib29sIGV4ZWN1dGUo
KQorICAgIHsKKyAgICAgICAgaWYgKG1faW5zZXJ0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyBXZSBhbGxvdyBpbnNlcnRpb25z
IHRvIGJlIGdpdmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5lZWQgdG8gc29ydCB0aGVt
IGJlZm9yZQorICAgICAgICAvLyBydW5uaW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMuIFdlIHN0
cm9uZ2x5IHByZWZlciBhIHN0YWJsZSBzb3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCisgICAgICAg
IC8vIGZhc3QsIHNvIHdlIHVzZSBidWJibGUgc29ydC4KKyAgICAgICAgYnViYmxlU29ydChtX2lu
c2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKKyAgICAgICAgCisgICAgICAg
IGV4ZWN1dGVJbnNlcnRpb25zKG1fYmxvY2tzLCBtX2luc2VydGlvbnMpOworICAgICAgICAKKyAg
ICAgICAgLy8gUHJ1bmUgb3V0IGVtcHR5IGVudHJpZXMuIFRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVj
ZXNzYXJ5IGJ1dCBpdCdzCisgICAgICAgIC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxvY2sgbGlz
dCBmcm9tIGdyb3dpbmcuCisgICAgICAgIG1fYmxvY2tzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAg
ICAgICAgICAgWyZdIChzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBi
b29sIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIWJsb2NrUHRyOworICAgICAgICAgICAgfSk7
CisgICAgICAgIAorICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhl
aXIgbmV3IGluZGljZXMuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nr
cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fYmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKKyAg
ICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiYgbV9ibG9ja3M7CisgICAgVmVjdG9yPEJs
b2NrSW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNIZWFwUmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNIZWFwUmFuZ2UuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODgsNiArODgsMTMgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAorICAg
IEhlYXBSYW5nZSBvcGVyYXRvcnwoY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBIZWFwUmFuZ2UoCisgICAgICAgICAgICBzdGQ6Om1pbihtX2JlZ2lu
LCBvdGhlci5tX2JlZ2luKSwKKyAgICAgICAgICAgIHN0ZDo6bWF4KG1fZW5kLCBvdGhlci5tX2Vu
ZCkpOworICAgIH0KKyAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gbV9iZWdpbiAhPSBtX2VuZDsgfQogCiAgICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBtX2JlZ2luOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNl
cnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0lu
c2VydGlvblNldC5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCwxMSBA
QCBWYWx1ZSogSW5zZXJ0aW9uU2V0OjppbnNlcnRCb3R0b20oc2l6ZV90CiAgICAgcmV0dXJuIGlu
c2VydEJvdHRvbShpbmRleCwgbGlrZVZhbHVlLT5vcmlnaW4oKSwgbGlrZVZhbHVlLT50eXBlKCkp
OwogfQogCitWYWx1ZSogSW5zZXJ0aW9uU2V0OjppbnNlcnRDbG9uZShzaXplX3QgaW5kZXgsIFZh
bHVlKiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gaW5zZXJ0VmFsdWUoaW5kZXgsIG1fcHJvY2VkdXJl
LmNsb25lKHZhbHVlKSk7Cit9CisKIHZvaWQgSW5zZXJ0aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxv
Y2sqIGJsb2NrKQogewogICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5z
ZXJ0aW9ucy5lbmQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRp
b25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRp
b25TZXQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
SW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoK
IAogICAgIFZhbHVlKiBpbnNlcnRCb3R0b20oc2l6ZV90IGluZGV4LCBPcmlnaW4sIFR5cGUpOwog
ICAgIFZhbHVlKiBpbnNlcnRCb3R0b20oc2l6ZV90IGluZGV4LCBWYWx1ZSopOworICAgIAorICAg
IFZhbHVlKiBpbnNlcnRDbG9uZShzaXplX3QgaW5kZXgsIFZhbHVlKik7CiAKICAgICB2b2lkIGV4
ZWN1dGUoQmFzaWNCbG9jayopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
ZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDggQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNp
bmNsdWRlICJBaXJBcmcuaCIKICNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKLSNp
bmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgpAQCAtNDksMjAgKzQ4LDE4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICghaXNBUk02NCgpKQot
ICAgICAgICAgICAgcmV0dXJuOwotCisgICAgICAgIC8vIEZJWE1FOiBQZXJoYXBzIHRoaXMgc2hv
dWxkIGJlIG1vdmVkIHRvIGxvd2VyTWFjcm9zLCBhbmQgcXVpcmtzIG1vZGUgY2FuIGltcG9zZSB0
aGUgcmVxdWlyZW1lbnQKKyAgICAgICAgLy8gdGhhdCB0aGUgb2Zmc2V0IGlzIGxlZ2FsLiBCdXQg
Zm9yIG5vdyB0aGlzIGlzIHNvcnQgb2YgT0sgYmVjYXVzZSB3ZSBydW4gcHVyZUNTRSAKKyAgICAg
ICAgCiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJsb2NrLT5zaXplKCk7ICsraW5k
ZXgpIHsKICAgICAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5VmFsdWUgPSBibG9jay0+
YXQoaW5kZXgpLT5hczxNZW1vcnlWYWx1ZT4oKTsKICAgICAgICAgICAgICAgICBpZiAoIW1lbW9y
eVZhbHVlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAg
IGludDMyX3Qgb2Zmc2V0ID0gbWVtb3J5VmFsdWUtPm9mZnNldCgpOwotICAgICAgICAgICAgICAg
IFdpZHRoIHdpZHRoID0gbWVtb3J5VmFsdWUtPmFjY2Vzc1dpZHRoKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFBaXI6OkFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgd2lkdGgpKSB7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCFtZW1vcnlWYWx1ZS0+aXNMZWdhbE9m
ZnNldChtZW1vcnlWYWx1ZS0+b2Zmc2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZhbHVl
KiBiYXNlID0gbWVtb3J5VmFsdWUtPmxhc3RDaGlsZCgpOwotICAgICAgICAgICAgICAgICAgICBW
YWx1ZSogb2Zmc2V0VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChpbmRl
eCwgbWVtb3J5VmFsdWUtPm9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBvZmZzZXQpOworICAgICAg
ICAgICAgICAgICAgICBWYWx1ZSogb2Zmc2V0VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnRJ
bnRDb25zdGFudChpbmRleCwgbWVtb3J5VmFsdWUtPm9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBt
ZW1vcnlWYWx1ZS0+b2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcmVzb2x2
ZWRBZGRyZXNzID0gbV9wcm9jLmFkZDxWYWx1ZT4oQWRkLCBtZW1vcnlWYWx1ZS0+b3JpZ2luKCks
IGJhc2UsIG9mZnNldFZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0VmFsdWUoaW5kZXgsIHJlc29sdmVkQWRkcmVzcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDE5ICsyOSwyMiBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgi
CiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNl
cnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0Nhc2VD
b2xsZWN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgorI2luY2x1
ZGUgIkIzRmVuY2VWYWx1ZS5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgot
I2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNj
b3BlLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMuaCIKICNpbmNsdWRlICJCM1N3aXRjaFZhbHVlLmgiCiAjaW5j
bHVkZSAiQjNVcHNpbG9uVmFsdWUuaCIKKyNpbmNsdWRlICJCM1VzZUNvdW50cy5oIgogI2luY2x1
ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiTGlua0J1ZmZlci5oIgpAQCAtNTgsMTEgKzYxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgOiBt
X3Byb2MocHJvYykKICAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MpCiAgICAgICAg
ICwgbV9pbnNlcnRpb25TZXQocHJvYykKKyAgICAgICAgLCBtX3VzZUNvdW50cyhwcm9jKQogICAg
IHsKICAgICB9CiAKICAgICBib29sIHJ1bigpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VS
VCghbV9wcm9jLmhhc1F1aXJrcygpKTsKKyAgICAgICAgCiAgICAgICAgIGZvciAoQmFzaWNCbG9j
ayogYmxvY2sgOiBtX3Byb2MpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAg
ICAgICAgIHByb2Nlc3NDdXJyZW50QmxvY2soKTsKQEAgLTcyLDYgKzc4LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG1fcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICAgICAgbV9w
cm9jLmludmFsaWRhdGVDRkcoKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVGhp
cyBpbmRpY2F0ZXMgdGhhdCB3ZSd2ZSAKKyAgICAgICAgbV9wcm9jLnNldEhhc1F1aXJrcyh0cnVl
KTsKKyAgICAgICAgCiAgICAgICAgIHJldHVybiBtX2NoYW5nZWQ7CiAgICAgfQogICAgIApAQCAt
MTg1LDcgKzE5NSwxMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0
cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNY
ODYoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBsb2FkLWxvYWQgZmVuY2Uu
IFRoaXMgY29kZWdlbnMgdG8gbm90aGluZyBvbiBYODYuIFdlIHVzZSBpdCB0byB0ZWxsIHRoZQor
ICAgICAgICAgICAgICAgICAgICAvLyBjb21waWxlciBub3QgdG8gYmxvY2sgbG9hZCBtb3Rpb24u
CisgICAgICAgICAgICAgICAgICAgIEZlbmNlVmFsdWUqIGZlbmNlID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0PEZlbmNlVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luKTsKKyAgICAgICAgICAgICAgICAg
ICAgZmVuY2UtPnJlYWQgPSBIZWFwUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgZmVuY2Ut
PndyaXRlID0gSGVhcFJhbmdlOjp0b3AoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIC8vIEtpbGwgdGhlIERlcGVuZCwgd2hpY2ggc2hvdWxkIHVubG9jayBhIGJ1
bmNoIG9mIGNvZGUgc2ltcGxpZmljYXRpb24uCisgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUt
PnJlcGxhY2VXaXRoQm90dG9tKG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4KTsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9u
Z0NBUzogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSog
YXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lk
dGggd2lkdGggPSBhdG9taWMtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogZXhw
ZWN0ZWRWYWx1ZSA9IGF0b21pYy0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgLy8gT24gQVJNLCB0aGUgbG9hZCBwYXJ0IG9mIHRoZSBDQVMgZG9lcyBhIGxvYWQg
d2l0aCB6ZXJvIGV4dGVuc2lvbi4gVGhlcmVmb3JlLCB3ZSBuZWVkCisgICAgICAgICAgICAgICAg
Ly8gdG8gemVyby1leHRlbmQgdGhlIGlucHV0LgorICAgICAgICAgICAgICAgIFZhbHVlKiBtYXNr
ZWRFeHBlY3RlZFZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICAgICAgbV9pbmRleCwgQml0QW5kLCBtX29yaWdpbiwgZXhwZWN0ZWRWYWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQobV9pbmRl
eCwgZXhwZWN0ZWRWYWx1ZSwgbWFzayh3aWR0aCkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBhdG9taWMtPmNoaWxkKDApID0gbWFza2VkRXhwZWN0ZWRWYWx1ZTsKKyAgICAg
ICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hn
QWRkOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgY2FzZSBB
dG9taWNYY2hnT3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAg
ICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAg
ICAgICAgICAgICAgICAvLyBPbiBYODYsIHRoZXNlIG1heSBhY3R1YWxseSByZXR1cm4gZ2FyYmFn
ZSBpbiB0aGUgaGlnaCBiaXRzLiBPbiBBUk02NCwgdGhlc2Ugc29ydGEKKyAgICAgICAgICAgICAg
ICAvLyB6ZXJvLWV4dGVuZCB0aGVpciBoaWdoIGJpdHMsIGV4Y2VwdCB0aGF0IHRoZSBoaWdoIGJp
dHMgbWlnaHQgZ2V0IHBvbGx1dGVkIGJ5IGhpZ2gKKyAgICAgICAgICAgICAgICAvLyBiaXRzIGlu
IHRoZSBvcGVyYW5kLiAuIFNvLCBlaXRoZXIgd2F5LCB3ZSBuZWVkIHRvIHRocm93IGEgc2lnbi1l
eHRlbmQgb24gdGhlc2UKKyAgICAgICAgICAgICAgICAvLyB0aGluZ3MuCisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG1fdmFsdWUtPm9wY29kZSgpID09IEF0b21pY1hjaGdTdWIgJiYgbV91c2VDb3VudHMubnVt
VXNlcyhtX3ZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gT24geDg2LCB4Y2hn
YWRkIGlzIGJldHRlciB0aGFuIHhjaGdzdWIgaWYgaXQgaGFzIGFueSB1c2Vycy4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdmFsdWUtPnNldE9wY29kZVVuc2FmZWx5KEF0b21pY1hjaGdBZGQp
OworICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCkgPSBtX2luc2VydGlv
blNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXgs
IE5lZywgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBleGVtcHQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkg
eworICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21p
Y1hjaGdTdWI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGV4ZW1wdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGlmIChleGVtcHQpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0
b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgICAgIFdpZHRo
IHdpZHRoID0gYXRvbWljLT5hY2Nlc3NXaWR0aCgpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1Zh
bHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAg
bV9pbmRleCwgc2lnbkV4dGVuZE9wY29kZSh3aWR0aCksIG1fb3JpZ2luLAorICAgICAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDbG9uZShtX2luZGV4LCBhdG9taWMpKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50
aXR5KG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgY2FzZSBMb2FkOFo6CisgICAgICAgICAgICBjYXNlIExvYWQxNlo6IHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IG1fdmFsdWUt
PmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICAgICAgICAgIGlmICghbWVtb3J5LT5oYXNGZW5j
ZSgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAvLyBTdWItd2lkdGggbG9hZC1hY3Egb24gQVJNNjQgYWx3YXlzIHNpZ24gZXh0
ZW5kcy4KKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3TG9hZCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydENsb25lKG1faW5kZXgsIG1lbW9yeSk7CisgICAgICAgICAgICAgICAgbmV3TG9hZC0+c2V0
T3Bjb2RlVW5zYWZlbHkobWVtb3J5LT5vcGNvZGUoKSA9PSBMb2FkOFogPyBMb2FkOFMgOiBMb2Fk
MTZTKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3VmFsdWUg
PSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBtX2lu
ZGV4LCBCaXRBbmQsIG1fb3JpZ2luLCBuZXdMb2FkLAorICAgICAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5kZXgsIG1fb3JpZ2luLCBJbnQzMiwgbWFzayhtZW1vcnktPmFjY2Vzc1dpZHRoKCkpKSk7CiAK
KyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG5ld1ZhbHVlKTsK
KyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQ3MCw2ICs1OTIsNyBA
QCBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwogICAgIEJsb2NrSW5zZXJ0aW9uU2V0
IG1fYmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0Owor
ICAgIFVzZUNvdW50cyBtX3VzZUNvdW50czsKICAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOwogICAg
IHVuc2lnbmVkIG1faW5kZXg7CiAgICAgVmFsdWUqIG1fdmFsdWU7CkBAIC00NzcsMjEgKzYwMCwx
MiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jaGFuZ2VkIHsgZmFsc2UgfTsKIH07CiAKLWJvb2wg
bG93ZXJNYWNyb3NJbXBsKFByb2NlZHVyZSYgcHJvYykKLXsKLSAgICBMb3dlck1hY3JvcyBsb3dl
ck1hY3Jvcyhwcm9jKTsKLSAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7Ci19Ci0KIH0gLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQogCiBib29sIGxvd2VyTWFjcm9zKFByb2NlZHVyZSYgcHJvYykK
IHsKLSAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvYywgImxvd2VyTWFjcm9zIik7Ci0gICAg
Ym9vbCByZXN1bHQgPSBsb3dlck1hY3Jvc0ltcGwocHJvYyk7Ci0gICAgaWYgKHNob3VsZFZhbGlk
YXRlSVIoKSkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxvd2VyTWFjcm9zSW1wbChwcm9jKSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBMb3dlck1hY3JvcyBsb3dlck1hY3Jvcyhwcm9jKTsK
KyAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9w
dGltaXphdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU2LDE1ICsxNTYsMTQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGNhc2UgUm90TDogewogICAgICAgICAgICAgICAgIC8vIEFSTTY0IGRvZXNuJ3QgaGF2
ZSBhIHJvdGF0ZSBsZWZ0LgogICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBO
ZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBWYWx1ZSogcm90YXRlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPiht
X2luZGV4LCBSb3RSLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCksIG5ld1No
aWZ0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRp
dHkocm90YXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlmdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92
YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcm90YXRlID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBSb3RSLCBtX3ZhbHVlLT5vcmlnaW4o
KSwgbV92YWx1ZS0+Y2hpbGQoMCksIG5ld1NoaWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgbV92
YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgs
MTQgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJBaXJCbG9ja0luc2VydGlv
blNldC5oIgogI2luY2x1ZGUgIkFpckNDYWxsU3BlY2lhbC5oIgogI2luY2x1ZGUgIkFpckNvZGUu
aCIKICNpbmNsdWRlICJBaXJJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJBaXJJbnN0SW5saW5l
cy5oIgogI2luY2x1ZGUgIkFpclN0YWNrU2xvdC5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdW
YWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxv
Y2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCbG9ja1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiQjND
Q2FsbFZhbHVlLmgiCkBAIC00MSw3ICs0Myw3IEBACiAjaW5jbHVkZSAiQjNDb21tdXRhdGl2aXR5
LmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNGZW5jZVZhbHVlLmgi
Ci0jaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQjNQYXRjaHBvaW50U3BlY2lhbC5oIgogI2luY2x1ZGUgIkIzUGF0
Y2hwb2ludFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCkBAIC03Miw2ICs3NCwx
NiBAQCBuYW1lc3BhY2UgewogCiBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAorLy8gRklY
TUU6IFdlIHdvdWxkbid0IG5lZWQgdGhpcyBpZiBBaXIgc3VwcG9ydGVkIFdpZHRoIG1vZGlmaWVy
cyBpbiBBaXI6OktpbmQuCisvLyBPT1BTISEhIChuZWVkIGEgYnVnIFVSTCkKKyNkZWZpbmUgT1BD
T0RFX0ZPUl9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKKyAgICAod2lkdGgpID09IFdpZHRoOCA/
IG9wY29kZSAjIyA4IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IG9wY29kZSAjIyAxNiA6
IFwKKyAgICAod2lkdGgpID09IFdpZHRoMzIgPyBvcGNvZGUgIyMgMzIgOiBcCisgICAgb3Bjb2Rl
ICMjIDY0KQorI2RlZmluZSBPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChvcGNvZGUsIHdpZHRo
KSAoIFwKKyAgICAod2lkdGgpID09IFdpZHRoNjQgPyBvcGNvZGUgIyMgNjQgOiBvcGNvZGUgIyMg
MzIpCisKIGNsYXNzIExvd2VyVG9BaXIgewogcHVibGljOgogICAgIExvd2VyVG9BaXIoUHJvY2Vk
dXJlJiBwcm9jZWR1cmUpCkBAIC04Myw2ICs5NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9k
b21pbmF0b3JzKHByb2NlZHVyZS5kb21pbmF0b3JzKCkpCiAgICAgICAgICwgbV9wcm9jZWR1cmUo
cHJvY2VkdXJlKQogICAgICAgICAsIG1fY29kZShwcm9jZWR1cmUuY29kZSgpKQorICAgICAgICAs
IG1fYmxvY2tJbnNlcnRpb25TZXQobV9jb2RlKQorI2lmIENQVShYODYpIHx8IENQVShYODZfNjQp
CisgICAgICAgICwgbV9lYXgoWDg2UmVnaXN0ZXJzOjplYXgpCisgICAgICAgICwgbV9lY3goWDg2
UmVnaXN0ZXJzOjplY3gpCisgICAgICAgICwgbV9lZHgoWDg2UmVnaXN0ZXJzOjplZHgpCisjZW5k
aWYKICAgICB7CiAgICAgfQogCkBAIC0xMjQsMTQgKzE0MiwxOCBAQCBwdWJsaWM6CiAgICAgICAg
IC8vIGhvaXN0ZWQgYWRkcmVzcyBleHByZXNzaW9uIGJlZm9yZSB3ZSBkdXBsaWNhdGUgaXQgYmFj
ayBpbnRvIHRoZSBsb29wLgogICAgICAgICBmb3IgKEIzOjpCYXNpY0Jsb2NrKiBibG9jayA6IG1f
cHJvY2VkdXJlLmJsb2Nrc0luUHJlT3JkZXIoKSkgewogICAgICAgICAgICAgbV9ibG9jayA9IGJs
b2NrOwotICAgICAgICAgICAgLy8gUmVzZXQgc29tZSBzdGF0ZS4KLSAgICAgICAgICAgIG1faW5z
dHMucmVzaXplKDApOwogCiAgICAgICAgICAgICBtX2lzUmFyZSA9ICFtX2Zhc3RXb3JrbGlzdC5z
YXcoYmxvY2spOwogCiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJMb3dlcmluZyBCbG9jayAiLCAqYmxvY2ssICI6XG4iKTsKICAgICAgICAgICAgIAor
ICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBj
b3JyZWN0bHkuCisgICAgICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29y
IDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2Nr
W2Jsb2NrXS0+c3VjY2Vzc29ycygpLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgQWlyOjpG
cmVxdWVudGVkQmxvY2sobV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNjZXNz
b3IuZnJlcXVlbmN5KCkpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gUHJvY2Vz
cyBibG9ja3MgaW4gcmV2ZXJzZSBvcmRlciBzbyB3ZSBzZWUgdXNlcyBiZWZvcmUgZGVmcy4gVGhh
dCdzIHdoYXQgYWxsb3dzIHVzCiAgICAgICAgICAgICAvLyB0byBtYXRjaCBwYXR0ZXJucyBlZmZl
Y3RpdmVseS4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGkt
LTspIHsKQEAgLTE0OSwxOSArMTcxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIE5vdyBhcHBlbmQgdGhlIGluc3RydWN0aW9u
cy4gbV9pbnN0cyBjb250YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIsIHNvIHdlIHByb2Nlc3MK
LSAgICAgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2luc3RzLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgIGZvciAoSW5zdCYg
aW5zdCA6IG1faW5zdHNbaV0pCi0gICAgICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Js
b2NrXS0+YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3JyZWN0
bHkuCi0gICAgICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxv
Y2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2Nr
XS0+c3VjY2Vzc29ycygpLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgQWlyOjpGcmVxdWVu
dGVkQmxvY2sobV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNjZXNzb3IuZnJl
cXVlbmN5KCkpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmlzaEFwcGVuZGluZ0lu
c3RydWN0aW9ucyhtX2Jsb2NrVG9CbG9ja1tibG9ja10pOwogICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBtX2Jsb2NrSW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKIAogICAgICAgICBBaXI6Oklu
c2VydGlvblNldCBpbnNlcnRpb25TZXQobV9jb2RlKTsKICAgICAgICAgZm9yIChJbnN0JiBpbnN0
IDogbV9wcm9sb2d1ZSkKQEAgLTQ0OCwxMiArNDYxLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gc2NhbGU7CiAgICAgfQotCisg
ICAgCiAgICAgLy8gVGhpcyB0dXJucyB0aGUgZ2l2ZW4gb3BlcmFuZCBpbnRvIGFuIGFkZHJlc3Mu
CiAgICAgQXJnIGVmZmVjdGl2ZUFkZHIoVmFsdWUqIGFkZHJlc3MsIGludDMyX3Qgb2Zmc2V0LCBX
aWR0aCB3aWR0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShv
ZmZzZXQsIHdpZHRoKSk7Ci0KKyAgICAgICAgCiAgICAgICAgIGF1dG8gZmFsbGJhY2sgPSBbJl0g
KCkgLT4gQXJnIHsKICAgICAgICAgICAgIHJldHVybiBBcmc6OmFkZHIodG1wKGFkZHJlc3MpLCBv
ZmZzZXQpOwogICAgICAgICB9OwpAQCAtNTM1LDEyICs1NDgsMTUgQEAgcHJpdmF0ZToKICAgICAg
ICAgTWVtb3J5VmFsdWUqIHZhbHVlID0gbWVtb3J5VmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOwog
ICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOworICAgICAgICAK
KyAgICAgICAgaWYgKHZhbHVlLT5yZXF1aXJlc1NpbXBsZUFkZHIoKSkKKyAgICAgICAgICAgIHJl
dHVybiBBcmc6OnNpbXBsZUFkZHIodG1wKHZhbHVlLT5sYXN0Q2hpbGQoKSkpOwogCiAgICAgICAg
IGludDMyX3Qgb2Zmc2V0ID0gdmFsdWUtPm9mZnNldCgpOwogICAgICAgICBXaWR0aCB3aWR0aCA9
IHZhbHVlLT5hY2Nlc3NXaWR0aCgpOwogCiAgICAgICAgIEFyZyByZXN1bHQgPSBlZmZlY3RpdmVB
ZGRyKHZhbHVlLT5sYXN0Q2hpbGQoKSwgb2Zmc2V0LCB3aWR0aCk7Ci0gICAgICAgIEFTU0VSVChy
ZXN1bHQuaXNWYWxpZEZvcm0od2lkdGgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
LmlzVmFsaWRGb3JtKHdpZHRoKSk7CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBA
IC01NjEsMTEgKzU3NywxOSBAQCBwcml2YXRlOgogICAgIAogICAgIEFyZ1Byb21pc2UgbG9hZFBy
b21pc2VBbnlPcGNvZGUoVmFsdWUqIGxvYWRWYWx1ZSkKICAgICB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGxvYWRWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOwogICAgICAgICBpZiAoIWNhbkJl
SW50ZXJuYWwobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKICAgICAgICAg
aWYgKGNyb3NzZXNJbnRlcmZlcmVuY2UobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBB
cmcoKTsKLSAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQoYWRkcihsb2FkVmFsdWUpLCBsb2FkVmFs
dWUpOworICAgICAgICAvLyBPbiB4ODYsIGFsbCBsb2FkcyBoYXZlIGZlbmNlcy4gRG9pbmcgdGhp
cyBraW5kIG9mIGluc3RydWN0aW9uIHNlbGVjdGlvbiB3aWxsIG1vdmUgdGhlIGxvYWQsCisgICAg
ICAgIC8vIGJ1dCB0aGF0J3MgZmluZSBiZWNhdXNlIG91ciBpbnRlcmZlcmVuY2UgYW5hbHlzaXMg
c3RvcHMgdGhlIG1vdGlvbiBvZiBmZW5jZXMgYXJvdW5kIG90aGVyCisgICAgICAgIC8vIGZlbmNl
cy4gU28sIGFueSBsb2FkIG1vdGlvbiB3ZSBpbnRyb2R1Y2UgaGVyZSB3b3VsZCBub3QgYmUgb2Jz
ZXJ2YWJsZS4KKyAgICAgICAgaWYgKCFpc1g4NigpICYmIGxvYWRWYWx1ZS0+YXM8TWVtb3J5VmFs
dWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnKCk7CisgICAgICAgIEFy
ZyBsb2FkQWRkciA9IGFkZHIobG9hZFZhbHVlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobG9h
ZEFkZHIpOworICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChsb2FkQWRkciwgbG9hZFZhbHVlKTsK
ICAgICAgICAgaWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkKICAgICAgICAgICAgIHJlc3VsdC5zZXRU
cmFwcyh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTczOCw3ICs3NjIsNyBAQCBw
cml2YXRlOgogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQorICAgIAogICAgIHRlbXBs
YXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQWlyOjpPcGNv
ZGUgb3Bjb2RlRG91YmxlLCBBaXI6Ok9wY29kZSBvcGNvZGVGbG9hdCwgQ29tbXV0YXRpdml0eSBj
b21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmU+CiAgICAgdm9pZCBhcHBlbmRCaW5PcChWYWx1
ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKQEAgLTg5NywxMSArOTIxLDkgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0jaWYgQ1BVKFg4NikgfHwgQ1BV
KFg4Nl82NCkKICAgICAgICAgYXBwZW5kKE1vdmUsIHRtcCh2YWx1ZSksIHRtcChtX3ZhbHVlKSk7
Ci0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1vdW50KSwgVG1wKFg4NlJlZ2lzdGVyczo6ZWN4
KSk7Ci0gICAgICAgIGFwcGVuZChvcGNvZGUsIFRtcChYODZSZWdpc3RlcnM6OmVjeCksIHRtcCht
X3ZhbHVlKSk7Ci0jZW5kaWYKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChhbW91bnQpLCBtX2Vj
eCk7CisgICAgICAgIGFwcGVuZChvcGNvZGUsIG1fZWN4LCB0bXAobV92YWx1ZSkpOwogICAgIH0K
IAogICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2
ND4KQEAgLTkzMCwxMCArOTUyLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9w
Y29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5
ID0gTm90Q29tbXV0YXRpdmU+CiAgICAgYm9vbCB0cnlBcHBlbmRTdG9yZUJpbk9wKFZhbHVlKiBs
ZWZ0LCBWYWx1ZSogcmlnaHQpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhbHVl
LT5hczxNZW1vcnlWYWx1ZT4oKSk7CisgICAgICAgIAogICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgbGVmdC0+dHlwZSgpKTsK
ICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6Ok9vcHMpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIAorICAgICAgICAvLyBPbiB4ODYsIGFsbCBzdG9yZXMgaGF2ZSBmZW5jZXMs
IGFuZCB0aGlzIGlzbid0IHJlb3JkZXJpbmcgdGhlIHN0b3JlIGl0c2VsZi4KKyAgICAgICAgaWYg
KCFpc1g4NigpICYmIG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICAgICAgQXJnIHN0b3JlQWRkciA9
IGFkZHIobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVChzdG9yZUFkZHIpOwogCkBAIC05OTMsMTEg
KzEwMjEsNTAgQEAgcHJpdmF0ZToKIAogICAgICAgICByZXR1cm4gSW5zdChtb3ZlLCBtX3ZhbHVl
LCB0bXAodmFsdWUpLCBkZXN0KTsKICAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVP
cGNvZGUoV2lkdGggd2lkdGgsIEJhbmsgYmFuaywgYm9vbCByZWxlYXNlKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoICh3aWR0aCkgeworICAgICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBT
dG9yZVJlbDggOiBBaXI6OlN0b3JlODsKKyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFz
ZSA/IFN0b3JlUmVsMTYgOiBBaXI6OlN0b3JlMTY7CisgICAgICAgIGNhc2UgV2lkdGgzMjoKKyAg
ICAgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMzIgOiBNb3ZlMzI7CisgICAgICAgICAg
ICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzNjRCaXQoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAg
IGNhc2UgR1A6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDY0IDog
TW92ZTsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVP
cGNvZGUoVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9
IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5
LT5pc1N0b3JlKCkpOworICAgICAgICByZXR1cm4gc3RvcmVPcGNvZGUobWVtb3J5LT5hY2Nlc3NX
aWR0aCgpLCBtZW1vcnktPmFjY2Vzc0JhbmsoKSwgbWVtb3J5LT5oYXNGZW5jZSgpKTsKKyAgICB9
CiAKICAgICBJbnN0IGNyZWF0ZVN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQog
ICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IG1vdmVGb3JUeXBlKHZhbHVl
LT50eXBlKCkpOwotICAgICAgICByZXR1cm4gY3JlYXRlU3RvcmUobW92ZU9wY29kZSwgdmFsdWUs
IGRlc3QpOworICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gc3RvcmVPcGNvZGUodmFs
dWUpOworICAgICAgICByZXR1cm4gY3JlYXRlU3RvcmUobW92ZU9wY29kZSwgdmFsdWUtPmNoaWxk
KDApLCBkZXN0KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgpAQCAt
MTAwNSw3ICsxMDcyLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGFwcGVuZCh0cmFwcGlu
Z0luc3QobV92YWx1ZSwgY3JlYXRlU3RvcmUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkp
OwogICAgIH0KLQorICAgIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlwZSkK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTA3Miw3ICsxMTM5LDQxIEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoaW5zdCk7CiAgICAg
fQorICAgIAorICAgIHZvaWQgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKEFpcjo6QmFzaWNC
bG9jayogdGFyZ2V0KQorICAgIHsKKyAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rp
b25zLiBtX2luc3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2Vz
cworICAgICAgICAvLyBpdCBpbiByZXZlcnNlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2luc3RzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9p
bnN0c1tpXSkKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmFwcGVuZEluc3QoV1RGTW92ZShpbnN0
KSk7CisgICAgICAgIH0KKyAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CisgICAgfQorICAgIAor
ICAgIEFpcjo6QmFzaWNCbG9jayogbmV3QmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QWZ0ZXIobV9ibG9ja1RvQmxvY2tbbV9ibG9ja10pOwor
ICAgIH0KIAorICAgIC8vIE5PVEU6IFRoaXMgd2lsbCBjcmVhdGUgYSBjb250aW51YXRpb24gYmxv
Y2sgKGBuZXh0QmxvY2tgKSAqYWZ0ZXIqIGFueSBibG9ja3MgeW91J3ZlIGNyZWF0ZWQgdXNpbmcK
KyAgICAvLyBuZXdCbG9jaygpLiBTbywgaXQncyBwcmVmZXJhYmxlIHRvIGNyZWF0ZSBhbGwgb2Yg
eW91ciBibG9ja3MgdXBmcm9udCB1c2luZyBuZXdCbG9jaygpLiBBbHNvIG5vdGUKKyAgICAvLyB0
aGF0IGFueSBjb2RlIHlvdSBlbWl0IGJlZm9yZSB0aGlzIHdpbGwgYmUgcHJlcGVuZGVkIHRvIHRo
ZSBjb250aW51YXRpb24sIGFuZCBhbnkgY29kZSB5b3UgZW1pdAorICAgIC8vIGFmdGVyIHRoaXMg
d2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgcHJldmlvdXMgYmxvY2suCisgICAgdm9pZCBzcGxpdEJs
b2NrKEFpcjo6QmFzaWNCbG9jayomIHByZXZpb3VzQmxvY2ssIEFpcjo6QmFzaWNCbG9jayomIG5l
eHRCbG9jaykKKyAgICB7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmxvY2sgPSBtX2Jsb2Nr
VG9CbG9ja1ttX2Jsb2NrXTsKKyAgICAgICAgCisgICAgICAgIHByZXZpb3VzQmxvY2sgPSBibG9j
azsKKyAgICAgICAgbmV4dEJsb2NrID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlcihi
bG9jayk7CisgICAgICAgIAorICAgICAgICBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMobmV4
dEJsb2NrKTsKKyAgICAgICAgbmV4dEJsb2NrLT5zdWNjZXNzb3JzKCkgPSBibG9jay0+c3VjY2Vz
c29ycygpOworICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpLmNsZWFyKCk7CisgICAgICAgIAor
ICAgICAgICBtX2luc3RzLmFwcGVuZChWZWN0b3I8SW5zdD4oKSk7CisgICAgfQorICAgIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBUKiBlbnN1
cmVTcGVjaWFsKFQqJiBmaWVsZCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKQEAg
LTExMjIsNyArMTIyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFZhbHVlUmVwOjpTdGFja0FyZ3VtZW50OgogICAgICAgICAgICAgICAgIGFy
ZyA9IEFyZzo6Y2FsbEFyZyh2YWx1ZS5yZXAoKS5vZmZzZXRGcm9tU1AoKSk7Ci0gICAgICAgICAg
ICAgICAgYXBwZW5kU3RvcmUodmFsdWUudmFsdWUoKSwgYXJnKTsKKyAgICAgICAgICAgICAgICBh
cHBlbmRTdG9yZShtb3ZlRm9yVHlwZSh2YWx1ZS52YWx1ZSgpLT50eXBlKCkpLCB2YWx1ZS52YWx1
ZSgpLCBhcmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTk2MCw2
ICsyMDYxLDMxMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAg
ICB2b2lkIGFwcGVuZFg4NkRpdihCMzo6T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgQWlyOjpP
cGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2OworICAg
ICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgeworICAgICAgICBjYXNlIEludDMyOgorICAg
ICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMjsK
KyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgSW50NjQ6CisgICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVy
dFRvUXVhZFdvcmQ2NDsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjY0OworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNT
RVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOworICAgICAgICBUbXAgcmVzdWx0ID0gb3AgPT0g
RGl2ID8gbV9lYXggOiBtX2VkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUt
PmNoaWxkKDApKSwgbV9lYXgpOworICAgICAgICBhcHBlbmQoY29udmVydFRvRG91YmxlV29yZCwg
bV9lYXgsIG1fZWR4KTsKKyAgICAgICAgYXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4LCB0bXAobV92
YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwgdG1wKG1fdmFs
dWUpKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKKyAg
ICB7CisgICAgICAgIEFpcjo6T3Bjb2RlIGRpdiA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/
IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsKKworICAgICAgICBBU1NFUlQob3AgPT0gVURpdiB8fCBv
cCA9PSBVTW9kKTsKKyAgICAgICAgVG1wIHJlc3VsdCA9IG9wID09IFVEaXYgPyBtX2VheCA6IG1f
ZWR4OworCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBtX2Vh
eCk7CisgICAgICAgIGFwcGVuZChYb3I2NCwgbV9lZHgsIG1fZWR4KTsKKyAgICAgICAgYXBwZW5k
KGRpdiwgbV9lYXgsIG1fZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBw
ZW5kKE1vdmUsIHJlc3VsdCwgdG1wKG1fdmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpP
cGNvZGUgbG9hZExpbmtPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVuY2UpCisgICAgeworICAg
ICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKExvYWRMaW5rQWNxLCB3aWR0aCkg
OiBPUENPREVfRk9SX1dJRFRIKExvYWRMaW5rLCB3aWR0aCk7CisgICAgfQorICAgIAorICAgIEFp
cjo6T3Bjb2RlIHN0b3JlQ29uZE9wY29kZShXaWR0aCB3aWR0aCwgYm9vbCBmZW5jZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmZW5jZSA/IE9QQ09ERV9GT1JfV0lEVEgoU3RvcmVDb25kUmVsLCB3
aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZCwgd2lkdGgpOworICAgIH0KKyAgICAK
KyAgICAvLyBUaGlzIGNhbiBlbWl0IGNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcGF0dGVybnM6Cisg
ICAgLy8gQXRvbWljV2Vha0NBUworICAgIC8vIEJpdFhvcihBdG9taWNXZWFrQ0FTLCAxKQorICAg
IC8vIEF0b21pY1N0cm9uZ0NBUworICAgIC8vIEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0
ZWQpCisgICAgLy8gTm90RXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkKKyAgICAvLyBC
cmFuY2goQXRvbWljV2Vha0NBUykKKyAgICAvLyBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FT
LCBleHBlY3RlZCkpCisgICAgLy8gQnJhbmNoKE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhw
ZWN0ZWQpKQorICAgIC8vCisgICAgLy8gSXQgYXNzdW1lcyB0aGF0IGF0b21pY1ZhbHVlIHBvaW50
cyB0byB0aGUgQ0FTLCBhbmQgbV92YWx1ZSBwb2ludHMgdG8gdGhlIGluc3RydWN0aW9uIGJlaW5n
CisgICAgLy8gZ2VuZXJhdGVkLiBJdCBhc3N1bWVzIHRoYXQgeW91J3ZlIGNvbnN1bWVkIGV2ZXJ5
dGhpbmcgdGhhdCBuZWVkcyB0byBiZSBjb25zdW1lZC4KKyAgICB2b2lkIGFwcGVuZENBUyhWYWx1
ZSogYXRvbWljVmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUq
IGF0b21pYyA9IGF0b21pY1ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoYXRvbWljKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCcmFuY2ggPSBtX3Zh
bHVlLT5vcGNvZGUoKSA9PSBCcmFuY2g7CisgICAgICAgIGJvb2wgaXNTdHJvbmcgPSBhdG9taWMt
Pm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUzsKKyAgICAgICAgYm9vbCByZXR1cm5zT2xkVmFs
dWUgPSBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wg
aGFzRmVuY2UgPSBhdG9taWMtPmhhc0ZlbmNlKCk7CisgICAgICAgIAorICAgICAgICBXaWR0aCB3
aWR0aCA9IGF0b21pYy0+YWNjZXNzV2lkdGgoKTsKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRy
KGF0b21pYyk7CisKKyAgICAgICAgVG1wIHZhbHVlUmVzdWx0VG1wOworICAgICAgICBUbXAgYm9v
bFJlc3VsdFRtcDsKKyAgICAgICAgaWYgKHJldHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIWludmVydCk7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IHRt
cChtX3ZhbHVlKTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQ
KTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgdmFsdWVSZXN1
bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBt
X2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlUmVz
dWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0g
dG1wKG1fdmFsdWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBUbXAgc3VjY2Vzc0Jv
b2xSZXN1bHRUbXA7CisgICAgICAgIGlmIChpc1N0cm9uZyAmJiAhaXNCcmFuY2gpCisgICAgICAg
ICAgICBzdWNjZXNzQm9vbFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBzdWNjZXNzQm9vbFJlc3VsdFRtcCA9IGJvb2xSZXN1bHRUbXA7CisK
KyAgICAgICAgVG1wIGV4cGVjdGVkVmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGlsZCgwKSk7Cisg
ICAgICAgIFRtcCBuZXdWYWx1ZVRtcCA9IHRtcChhdG9taWMtPmNoaWxkKDEpKTsKKyAgICAgICAg
CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3M7CisgICAgICAgIEFpcjo6RnJl
cXVlbnRlZEJsb2NrIGZhaWx1cmU7CisgICAgICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAg
ICAgc3VjY2VzcyA9IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoaW52ZXJ0KTsK
KyAgICAgICAgICAgIGZhaWx1cmUgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29y
KCFpbnZlcnQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNYODYoKSkgewor
ICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPmFjY2Vzc1R5cGUo
KSksIGltbU9yVG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgICAgICBpZiAo
cmV0dXJuc09sZFZhbHVlKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lE
VEgoQXRvbWljU3Ryb25nQ0FTLCB3aWR0aCksIG1fZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7
CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPmFjY2Vz
c1R5cGUoKSksIG1fZWF4LCB2YWx1ZVJlc3VsdFRtcCk7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGlzQnJhbmNoKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQnJh
bmNoQXRvbWljU3Ryb25nQ0FTLCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxl
cjo6U3VjY2VzcyksIG1fZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAg
ICAgbV9ibG9ja1RvQmxvY2tbbV9ibG9ja10tPnNldFN1Y2Nlc3NvcnMoc3VjY2VzcywgZmFpbHVy
ZSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZP
Ul9XSURUSChBdG9taWNTdHJvbmdDQVMsIHdpZHRoKSwgQXJnOjpzdGF0dXNDb25kKGludmVydCA/
IE1hY3JvQXNzZW1ibGVyOjpGYWlsdXJlIDogTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2Vh
eCwgdG1wKGF0b21pYy0+Y2hpbGQoMSkpLCBhZGRyZXNzLCBib29sUmVzdWx0VG1wKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNBUk02NCgpKTsKKyAgICAgICAgLy8gV2Ugd2lzaCB0byBlbWl0OgorICAgICAgICAvLwor
ICAgICAgICAvLyBCbG9jayAjcmVsb29wOgorICAgICAgICAvLyAgICAgTG9hZExpbmsKKyAgICAg
ICAgLy8gICAgIEJyYW5jaCBOb3RFcXVhbAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRoZW46
I2ZhaWwsIEVsc2U6ICNzdG9yZQorICAgICAgICAvLyBCbG9jayAjc3RvcmU6CisgICAgICAgIC8v
ICAgICBTdG9yZUNvbmQKKyAgICAgICAgLy8gICAgIFhvciAkMSwgJXJlc3VsdCAgICA8LS0tIG9u
bHkgaWYgIWludmVydAorICAgICAgICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3Nv
cnM6ICNkb25lCisgICAgICAgIC8vIEJsb2NrICNmYWlsOgorICAgICAgICAvLyAgICAgTW92ZSAk
aW52ZXJ0LCAlcmVzdWx0CisgICAgICAgIC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vz
c29yczogI2RvbmUKKyAgICAgICAgLy8gQmxvY2sgI2RvbmU6CisgICAgICAgIAorICAgICAgICBB
aXI6OkJhc2ljQmxvY2sqIHJlbG9vcEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpC
YXNpY0Jsb2NrKiBzdG9yZUJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Js
b2NrKiBzdWNjZXNzQmxvY2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoICYmIGlz
U3Ryb25nKQorICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAg
QWlyOjpCYXNpY0Jsb2NrKiBmYWlsQmxvY2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlzQnJh
bmNoKSB7CisgICAgICAgICAgICBmYWlsQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICAgICAg
ZmFpbHVyZSA9IGZhaWxCbG9jazsKKyAgICAgICAgfQorICAgICAgICBBaXI6OkJhc2ljQmxvY2sq
IHN0cm9uZ0ZhaWxCbG9jazsKKyAgICAgICAgaWYgKGlzU3Ryb25nICYmIGhhc0ZlbmNlKQorICAg
ICAgICAgICAgc3Ryb25nRmFpbEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpGcmVx
dWVudGVkQmxvY2sgY29tcGFyaXNvbkZhaWwgPSBmYWlsdXJlOworICAgICAgICBBaXI6OkZyZXF1
ZW50ZWRCbG9jayB3ZWFrRmFpbDsKKyAgICAgICAgaWYgKGlzU3Ryb25nKSB7CisgICAgICAgICAg
ICBpZiAoaGFzRmVuY2UpCisgICAgICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBzdHJvbmdG
YWlsQmxvY2s7CisgICAgICAgICAgICB3ZWFrRmFpbCA9IHJlbG9vcEJsb2NrOworICAgICAgICB9
IGVsc2UgCisgICAgICAgICAgICB3ZWFrRmFpbCA9IGZhaWx1cmU7CisgICAgICAgIEFpcjo6QmFz
aWNCbG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBkb25lQmxvY2s7
CisgICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9uZUJsb2NrKTsKKyAgICAgICAgCisg
ICAgICAgIGFwcGVuZChBaXI6Okp1bXApOworICAgICAgICBiZWdpbkJsb2NrLT5zZXRTdWNjZXNz
b3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQo
bG9hZExpbmtPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIGFkZHJl
c3MsIHZhbHVlUmVzdWx0VG1wKTsKKyAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChPUENPREVf
Rk9SX0NBTk9OSUNBTF9XSURUSChCcmFuY2gsIHdpZHRoKSwgbV92YWx1ZSwgQXJnOjpyZWxDb25k
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCksIHZhbHVlUmVzdWx0VG1wLCBleHBlY3RlZFZhbHVl
VG1wKTsKKyAgICAgICAgcmVsb29wQmxvY2stPnNldFN1Y2Nlc3NvcnMoY29tcGFyaXNvbkZhaWws
IHN0b3JlQmxvY2spOworICAgICAgICAKKyAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKHN0b3Jl
Q29uZE9wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgbmV3VmFsdWVU
bXAsIGFkZHJlc3MsIHN1Y2Nlc3NCb29sUmVzdWx0VG1wKTsKKyAgICAgICAgaWYgKGlzQnJhbmNo
KSB7CisgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVl
LCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVzdWx0VG1wLCBib29s
UmVzdWx0VG1wKTsKKyAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMoc3VjY2Vz
cywgd2Vha0ZhaWwpOworICAgICAgICAgICAgZG9uZUJsb2NrLT5zdWNjZXNzb3JzKCkuY2xlYXIo
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkb25lQmxvY2stPnNpemUoKSk7CisgICAg
ICAgICAgICBkb25lQmxvY2stPmFwcGVuZChBaXI6Ok9vcHMsIG1fdmFsdWUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKGlzU3Ryb25nKSB7CisgICAgICAgICAgICAgICAgc3Rv
cmVCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3Jv
QXNzZW1ibGVyOjpaZXJvKSwgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAsIHN1Y2Nlc3NCb29sUmVzdWx0
VG1wKTsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3NC
bG9jaywgcmVsb29wQmxvY2spOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN1
Y2Nlc3NCbG9jay0+YXBwZW5kKE1vdmUsIG1fdmFsdWUsIEFyZzo6aW1tKCFpbnZlcnQpLCBib29s
UmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChBaXI6Okp1
bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+c2V0U3VjY2Vzc29y
cyhkb25lQmxvY2spOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAo
IWludmVydCkKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKFhvcjMyLCBt
X3ZhbHVlLCBBcmc6OmJpdEltbSgxKSwgYm9vbFJlc3VsdFRtcCwgYm9vbFJlc3VsdFRtcCk7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEFpcjo6
SnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29y
cyhkb25lQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBm
YWlsQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6OmltbShpbnZlcnQpLCBib29sUmVz
dWx0VG1wKTsKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKEFpcjo6SnVtcCwgbV92YWx1
ZSk7CisgICAgICAgICAgICBmYWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzU3Ryb25nICYmIGhhc0ZlbmNlKSB7Cisg
ICAgICAgICAgICBUbXAgdG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBzdHJv
bmdGYWlsQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVu
Y2UoKSksIG1fdmFsdWUsIHZhbHVlUmVzdWx0VG1wLCBhZGRyZXNzLCB0bXApOworICAgICAgICAg
ICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJl
c0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCB0bXAsIHRtcCk7CisgICAgICAgICAgICBzdHJv
bmdGYWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZmFpbHVyZSwgcmVsb29wQmxvY2spOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIGJvb2wgYXBwZW5kVm9pZEF0b21pYyhBaXI6Ok9wY29kZSBh
dG9taWNPcGNvZGUpCisgICAgeworICAgICAgICBpZiAobV91c2VDb3VudHMubnVtVXNlcyhtX3Zh
bHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIEFyZyBh
ZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc1ZhbGlkRm9y
bShhdG9taWNPcGNvZGUsIEFyZzo6SW1tLCBhZGRyZXNzLmtpbmQoKSkgJiYgaW1tKG1fdmFsdWUt
PmNoaWxkKDApKSkgeworICAgICAgICAgICAgYXBwZW5kKGF0b21pY09wY29kZSwgaW1tKG1fdmFs
dWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwgQXJn
OjpUbXAsIGFkZHJlc3Mua2luZCgpKSkgeworICAgICAgICAgICAgYXBwZW5kKGF0b21pY09wY29k
ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGFwcGVuZEdlbmVyYWxBdG9taWMoQWlyOjpPcGNvZGUgb3Bjb2RlLCBD
b21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZSkKKyAgICB7CisgICAg
ICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAg
ICAgICAgCisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgVG1w
IG9sZFZhbHVlID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIFRtcCBuZXdWYWx1ZSA9IG9w
Y29kZSA9PSBBaXI6Ok5vcCA/IHRtcChhdG9taWMtPmNoaWxkKDApKSA6IG1fY29kZS5uZXdUbXAo
R1ApOworICAgICAgICAKKyAgICAgICAgLy8gV2UgbmVlZCBhIENBUyBsb29wIG9yIGEgTEwvU0Mg
bG9vcC4gVXNpbmcgcHJlcGFyZS9hdHRlbXB0IGphcmdvbiwgd2Ugd2FudDoKKyAgICAgICAgLy8K
KyAgICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIFByZXBhcmUKKyAgICAg
ICAgLy8gICAgIG9wY29kZQorICAgICAgICAvLyAgICAgQXR0ZW1wdAorICAgICAgICAvLyAgIFN1
Y2Nlc3NvcnM6IFRoZW46I2RvbmUsIEVsc2U6I3JlbG9vcAorICAgICAgICAvLyBCbG9jayAjZG9u
ZToKKyAgICAgICAgLy8gICAgIE1vdmUgb2xkVmFsdWUsIHJlc3VsdAorICAgICAgICAKKyAgICAg
ICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG9sZFZhbHVlLCB0
bXAoYXRvbWljKSk7CisgICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9vcEJs
b2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOwor
ICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhi
ZWdpbkJsb2NrLCBkb25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFpcjo6SnVt
cCk7CisgICAgICAgIGJlZ2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAg
ICAgICAKKyAgICAgICAgQWlyOjpPcGNvZGUgcHJlcGFyZU9wY29kZTsKKyAgICAgICAgaWYgKGlz
WDg2KCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSB7Cisg
ICAgICAgICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0g
TG9hZDhTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkMTZT
aWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBXaWR0aDMyOgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlMzI7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAg
ICAgICAgcHJlcGFyZU9wY29kZSA9IE1vdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChp
c0FSTTY0KCkpOworICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IGxvYWRMaW5rT3Bjb2RlKGF0
b21pYy0+YWNjZXNzV2lkdGgoKSwgYXRvbWljLT5oYXNGZW5jZSgpKTsKKyAgICAgICAgfQorICAg
ICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHByZXBhcmVPcGNvZGUsIG1fdmFsdWUsIGFkZHJlc3Ms
IG9sZFZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChvcGNvZGUgIT0gQWlyOjpOb3ApIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBldmVyIGhhdmUgdG8gd3JpdGUgdGhpcyBhZ2Fp
biwgd2UgbmVlZCB0byBmaW5kIGEgd2F5IHRvIHNoYXJlIHRoZSBjb2RlIHdpdGgKKyAgICAgICAg
ICAgIC8vIGFwcGVuZEJpbk9wLgorICAgICAgICAgICAgaWYgKGNvbW11dGF0aXZpdHkgPT0gQ29t
bXV0YXRpdmUgJiYgaW1tKGF0b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29kZSwg
QXJnOjpJbW0sIEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29wQmxv
Y2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIGltbShhdG9taWMtPmNoaWxkKDApKSwgb2xkVmFs
dWUsIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGltbShhdG9taWMtPmNoaWxkKDAp
KSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpUbXApKQor
ICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBvbGRW
YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNl
IGlmIChjb21tdXRhdGl2aXR5ID09IENvbW11dGF0aXZlICYmIGJpdEltbShhdG9taWMtPmNoaWxk
KDApKSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6Qml0SW1tLCBBcmc6OlRtcCwgQXJnOjpU
bXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVl
LCBiaXRJbW0oYXRvbWljLT5jaGlsZCgwKSksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAg
ICAgICBlbHNlIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJn
OjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3Zh
bHVlLCBvbGRWYWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRN
b3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG1fdmFsdWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7
CisgICAgICAgICAgICAgICAgaWYgKGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9y
bShvcGNvZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgICAgIHJlbG9v
cEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG5l
d1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlbG9v
cEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIG5l
d1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1g4Nigp
KSB7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBjYXNPcGNvZGUgPSBPUENPREVfRk9SX1dJRFRI
KEJyYW5jaEF0b21pY1N0cm9uZ0NBUywgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKTsKKyAgICAgICAg
ICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgp
KSwgbV92YWx1ZSwgb2xkVmFsdWUsIG1fZWF4KTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5h
cHBlbmQoY2FzT3Bjb2RlLCBtX3ZhbHVlLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6
OlN1Y2Nlc3MpLCBtX2VheCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAgICAgICAgIFRtcCBi
b29sUmVzdWx0ID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+
YXBwZW5kKHN0b3JlQ29uZE9wY29kZShhdG9taWMtPmFjY2Vzc1dpZHRoKCksIGF0b21pYy0+aGFz
RmVuY2UoKSksIG1fdmFsdWUsIG5ld1ZhbHVlLCBhZGRyZXNzLCBib29sUmVzdWx0KTsKKyAgICAg
ICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJl
c0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVzdWx0LCBib29sUmVzdWx0KTsKKyAg
ICAgICAgfQorICAgICAgICByZWxvb3BCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2ssIHJl
bG9vcEJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBsb3dlcigpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CkBAIC0xOTcwLDMwICsyMzc4LDUwIEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ6IHsKLSAg
ICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgbW92ZUZvclR5cGUobV92YWx1
ZS0+dHlwZSgpKSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAg
ICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7
CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBBaXI6Ok9vcHM7CisgICAgICAgICAg
ICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChtZW1v
cnktPnR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICAg
ICAgICAgIG9wY29kZSA9IExvYWRBY3EzMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0g
TG9hZEFjcTY0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBvcGNvZGUgPSBtb3ZlRm9yVHlwZShtZW1vcnkt
PnR5cGUoKSk7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29k
ZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ4Uzogewot
ICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOFNpZ25lZEV4dGVu
ZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAg
ICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0Zl
bmNlKCkgPyBMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7
CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1
ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQ4WjogewotICAgICAgICAgICAgYXBwZW5kKHRy
YXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOCwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1f
dmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxN
ZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4IDogTG9hZDg7CisgICAgICAgICAg
ICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIExvYWQxNlM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3Qo
bV92YWx1ZSwgTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwg
dG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVl
LT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRv
MzIgOiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5n
SW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVl
KSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2Fk
MTZaOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNiwg
bV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/
IExvYWRBY3ExNiA6IExvYWQxNjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92
YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCisgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBBZGQ6IHsKICAgICAgICAgICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yMDkxLDcgKzI1MTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYg
KG1fdmFsdWUtPmlzQ2hpbGwoKSkKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FS
TTY0KCkpOwogICAgICAgICAgICAgaWYgKGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYo
KSkgewotICAgICAgICAgICAgICAgIGxvd2VyWDg2RGl2KERpdik7CisgICAgICAgICAgICAgICAg
YXBwZW5kWDg2RGl2KERpdik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgQVNTRVJUKCFpc1g4NigpIHx8IGlzRmxvYXQobV92YWx1ZS0+dHlwZSgp
KSk7CkBAIC0yMTAyLDcgKzI1MzAsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgVURpdjog
ewogICAgICAgICAgICAgaWYgKGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewot
ICAgICAgICAgICAgICAgIGxvd2VyWDg2VURpdihVRGl2KTsKKyAgICAgICAgICAgICAgICBhcHBl
bmRYODZVRGl2KFVEaXYpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IApAQCAtMjExNiwxMyArMjU0NCwxMyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE1vZDogewog
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCghbV92YWx1ZS0+aXNDaGlsbCgpKTsKLSAgICAgICAgICAgIGxvd2VyWDg2RGl2KE1v
ZCk7CisgICAgICAgICAgICBhcHBlbmRYODZEaXYoTW9kKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgVU1vZDogewogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaXNYODYoKSk7Ci0gICAgICAgICAgICBsb3dlclg4NlVEaXYoVU1vZCk7CisgICAgICAg
ICAgICBhcHBlbmRYODZVRGl2KFVNb2QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTIxNjEsMTAgKzI1ODksMjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBhcHBl
bmRVbk9wPE5vdDMyLCBOb3Q2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVGhp
cyBwYXR0ZXJuIGlzIHN1cGVyIHVzZWZ1bCBvbiBib3RoIHg4NiBhbmQgQVJNNjQsIHNpbmNlIHRo
ZSBpbnZlcnNpb24gb2YgdGhlIENBUyByZXN1bHQKKyAgICAgICAgICAgIC8vIGNhbiBiZSBkb25l
IHdpdGggemVybyBjb3N0IG9uIHg4NiAoanVzdCBmbGlwIHRoZSBzZXQgZnJvbSBFIHRvIE5FKSBh
bmQgaXQncyBhIHByb2dyZXNzaW9uCisgICAgICAgICAgICAvLyBvbiBBUk02NCAoc2luY2UgU1RY
IHJldHVybnMgMCBvbiBzdWNjZXNzLCBzbyBvcmRpbmFyaWx5IHdlIGhhdmUgdG8gZmxpcCBpdCku
CisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDEpCisgICAgICAgICAg
ICAgICAgJiYgaXNBdG9taWNDQVMobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQorICAgICAg
ICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAg
ICAgIGFwcGVuZENBUyhtX3ZhbHVlLT5jaGlsZCgwKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBhcHBlbmRC
aW5PcDxYb3IzMiwgWG9yNjQsIFhvckRvdWJsZSwgWG9yRmxvYXQsIENvbW11dGF0aXZlPigKICAg
ICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBE
ZXBlbmQ6IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAg
ICAgICBhcHBlbmRVbk9wPERlcGVuZDMyLCBEZXBlbmQ2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTaGw6IHsKICAg
ICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQzMigxKSkgewpAQCAtMjI2NSw3
ICsyNzExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7Cisg
ICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMjg2LDcgKzI3MzIsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTgsIHZhbHVlVG9TdG9yZSwg
YWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1f
dmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMzA3LDcgKzI3
NTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9y
ZTE2LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3Rv
cmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMjQxNSw3ICsyODYxLDIyIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIEVxdWFsOgotICAgICAgICBjYXNlIE5vdEVxdWFsOgorICAgICAgICBjYXNlIE5vdEVx
dWFsOiB7CisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0
b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5jaGls
ZCgwKSA9PSBtX3ZhbHVlLT5jaGlsZCgxKQorICAgICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJu
YWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2xvY2tl
ZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQo
MCkpOworICAgICAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1
ZS0+b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFw
cGVuZChjcmVhdGVDb21wYXJlKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTGVzc1RoYW46CiAgICAgICAgIGNhc2Ug
R3JlYXRlclRoYW46CiAgICAgICAgIGNhc2UgTGVzc0VxdWFsOgpAQCAtMjcyNiw2ICszMTg3LDQw
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEJyYW5jaDogeworICAgICAg
ICAgICAgaWYgKGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAg
ICAgICAgVmFsdWUqIGJyYW5jaENoaWxkID0gbV92YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAg
ICAgICAgc3dpdGNoIChicmFuY2hDaGlsZC0+b3Bjb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBj
YXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJy
YW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLCBm
YWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgICAgICAgICAg
ICAgIC8vIEEgYnJhbmNoIGlzIGEgY29tcGFyaXNvbiB0byB6ZXJvLgorICAgICAgICAgICAgICAg
ICAgICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5pc0ludCgwKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBFcXVh
bDoKKyAgICAgICAgICAgICAgICBjYXNlIE5vdEVxdWFsOgorICAgICAgICAgICAgICAgICAgICBp
ZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMKKyAg
ICAgICAgICAgICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwoYnJhbmNoQ2hpbGQtPmNoaWxk
KDApKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5j
aGlsZCgwKSA9PSBicmFuY2hDaGlsZC0+Y2hpbGQoMSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLCBicmFuY2hDaGlsZC0+b3Bj
b2RlKCkgPT0gTm90RXF1YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
ICAgICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChjcmVhdGVCcmFuY2gobV92YWx1ZS0+
Y2hpbGQoMCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjc4Myw3ICsz
Mjc4LDgxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBhcHBlbmQoQWlyOjpFbnRyeVN3aXRjaCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOiB7CisgICAg
ICAgICAgICBhcHBlbmRDQVMobV92YWx1ZSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOiB7Cisg
ICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+
KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0
b21pY0FkZCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgCisgICAgICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsK
KyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWlj
WGNoZ0FkZCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlk
Rm9ybShvcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgICAg
ICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+
Y2hpbGQoMCkpLCB0bXAoYXRvbWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwg
dG1wKGF0b21pYyksIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9O
SUNBTF9XSURUSChBZGQsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSksIENvbW11dGF0aXZlKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1
YjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21p
Y1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9X
SURUSChBdG9taWNTdWIsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhP
UENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChTdWIsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBBdG9taWNYY2hnQW5kOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92
YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21p
YyhPUENPREVfRk9SX1dJRFRIKEF0b21pY0FuZCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRH
ZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEFuZCwgYXRvbWljLT5hY2Nl
c3NXaWR0aCgpKSwgQ29tbXV0YXRpdmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6IHsKKyAgICAgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAg
ICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljT3IsIGF0
b21pYy0+YWNjZXNzV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNB
TF9XSURUSChPciwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSwgQ29tbXV0YXRpdmUpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9t
aWNYY2hnWG9yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+
YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENP
REVfRk9SX1dJRFRIKEF0b21pY1hvciwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFs
QXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFhvciwgYXRvbWljLT5hY2Nlc3NXaWR0
aCgpKSwgQ29tbXV0YXRpdmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgICAgICBBdG9taWNW
YWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAgICAgQWly
OjpPcGNvZGUgb3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnLCBhdG9taWMtPmFj
Y2Vzc1dpZHRoKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpU
bXAsIGFkZHJlc3Mua2luZCgpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92
ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9t
aWMpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVz
cyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKEFpcjo6Tm9wKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjc5MSw2NCArMzM2MCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGRhdGFMb2coIkZBVEFMOiBjb3VsZCBub3QgbG93ZXIgIiwgZGVlcER1bXAobV9w
cm9jZWR1cmUsIG1fdmFsdWUpLCAiXG4iKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9Ci0KLSAgICB2b2lkIGxvd2VyWDg2RGl2KEIzOjpPcGNvZGUgb3ApCi0g
ICAgewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAo
WDg2UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6
ZWR4KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVXb3JkOwotICAgICAg
ICBBaXI6Ok9wY29kZSBkaXY7Ci0gICAgICAgIHN3aXRjaCAobV92YWx1ZS0+dHlwZSgpKSB7Ci0g
ICAgICAgIGNhc2UgSW50MzI6Ci0gICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2
Q29udmVydFRvRG91YmxlV29yZDMyOwotICAgICAgICAgICAgZGl2ID0gWDg2RGl2MzI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ2NDoKLSAgICAgICAgICAgIGNvbnZlcnRU
b0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0OwotICAgICAgICAgICAgZGl2ID0g
WDg2RGl2NjQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8IG9wID09IE1vZCk7Ci0gICAg
ICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBEaXYgPyBYODZSZWdp
c3RlcnM6OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0
bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBlbmQoY29udmVydFRvRG91
YmxlV29yZCwgZWF4LCBlZHgpOwotICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1f
dmFsdWUtPmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1w
KG1fdmFsdWUpKTsKLQotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAg
VU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGxv
d2VyWDg2VURpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAgICAg
VG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAgICAgICAgQWlyOjpPcGNvZGUg
ZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0Owot
Ci0gICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVNb2QpOwotICAgICAgICBYODZS
ZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gVURpdiA/IFg4NlJlZ2lzdGVyczo6
ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3Zh
bHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChYb3I2NCwgZWR4LCBlZHgpOwot
ICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7Ci0g
ICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1wKG1fdmFsdWUpKTsKLSNlbHNlCi0g
ICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9S
TSgpOwotI2VuZGlmCi0gICAgfQotCisgICAgCiAgICAgSW5kZXhTZXQ8VmFsdWU+IG1fbG9ja2Vk
OyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQgd2lsbCBoYXZlIG5vIFRtcCBpbiBBaXIuCiAgICAg
SW5kZXhNYXA8VmFsdWUsIFRtcD4gbV92YWx1ZVRvVG1wOyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRo
YXQgbXVzdCBoYXZlIGEgVG1wIGluIEFpci4gV2Ugc2F5IHRoYXQgYSBWYWx1ZSogd2l0aCBhIG5v
bi1udWxsIFRtcCBpcyAicGlubmVkIi4KICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3BoaVRv
VG1wOyAvLyBFYWNoIFBoaSBnZXRzIGl0cyBvd24gVG1wLgpAQCAtMjg2Myw3ICszMzc1LDcgQEAg
cHJpdmF0ZToKIAogICAgIFZlY3RvcjxWZWN0b3I8SW5zdCwgND4+IG1faW5zdHM7CiAgICAgVmVj
dG9yPEluc3Q+IG1fcHJvbG9ndWU7Ci0KKyAgICAKICAgICBCMzo6QmFzaWNCbG9jayogbV9ibG9j
azsKICAgICBib29sIG1faXNSYXJlOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CkBAIC0yODc0LDYg
KzMzODYsMTIgQEAgcHJpdmF0ZToKIAogICAgIFByb2NlZHVyZSYgbV9wcm9jZWR1cmU7CiAgICAg
Q29kZSYgbV9jb2RlOworCisgICAgQWlyOjpCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0
aW9uU2V0OworCisgICAgVG1wIG1fZWF4OworICAgIFRtcCBtX2VjeDsKKyAgICBUbXAgbV9lZHg7
CiB9OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDgg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiBjbGFzcyBQcm9jZWR1cmU7CiBuYW1l
c3BhY2UgQWlyIHsgY2xhc3MgQ29kZTsgfQogCi0vLyBUaGlzIGxvd2VycyB0aGUgY3VycmVudCBC
MyBwcm9jZWR1cmUgdG8gYW4gQWlyIGNvZGUuCisvLyBUaGlzIGxvd2VycyB0aGUgY3VycmVudCBC
MyBwcm9jZWR1cmUgdG8gYW4gQWlyIGNvZGUuIE5vdGUgdGhhdCB0aGlzIGFzc3VtZXMgdGhhdCB0
aGUgcHJvY2VkdXJlIGlzIGluCisvLyBxdWlya3MgbW9kZSwgYnV0IGl0IGRvZXMgbm90IGFzc2Vy
dCB0aGlzLCB0byBzaW1wbGlmeSBob3cgd2Ugd3JpdGUgdGVzdHMuCiAKIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgbG93ZXJUb0FpcihQcm9jZWR1cmUmKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwzNiArMjgsMzcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM0F0b21p
Y1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJC
M1ZhbHVlSW5saW5lcy5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogTWVt
b3J5VmFsdWU6On5NZW1vcnlWYWx1ZSgpCiB7CiB9CiAKLXNpemVfdCBNZW1vcnlWYWx1ZTo6YWNj
ZXNzQnl0ZVNpemUoKSBjb25zdAorYm9vbCBNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldChpbnQ2
NF90IG9mZnNldCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG9wY29kZSgpKSB7Ci0gICAgY2FzZSBM
b2FkOFo6Ci0gICAgY2FzZSBMb2FkOFM6Ci0gICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIHJldHVy
biAxOwotICAgIGNhc2UgTG9hZDE2WjoKLSAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBTdG9y
ZTE2OgotICAgICAgICByZXR1cm4gMjsKLSAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJldHVybiBz
aXplb2ZUeXBlKHR5cGUoKSk7Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmV0dXJuIHNpemVv
ZlR5cGUoY2hpbGQoMCktPnR5cGUoKSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIHJldHVy
biBCMzo6aXNSZXByZXNlbnRhYmxlQXM8aW50MzJfdD4ob2Zmc2V0KSAmJiBpc0xlZ2FsT2Zmc2V0
KHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkpOworfQorCitUeXBlIE1lbW9yeVZhbHVlOjph
Y2Nlc3NUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNMb2FkKCkpCisgICAgICAgIHJldHVybiB0
eXBlKCk7CisgICAgLy8gVGhpcyBoYXBwZW5zIHRvIHdvcmsgZm9yIGF0b21pY3MsIHRvby4gVGhh
dCdzIHdoeSBBdG9taWNWYWx1ZSBkb2VzIG5vdCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMuCisgICAg
cmV0dXJuIGNoaWxkKDApLT50eXBlKCk7CiB9CiAKLVdpZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NX
aWR0aCgpIGNvbnN0CitCYW5rIE1lbW9yeVZhbHVlOjphY2Nlc3NCYW5rKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gd2lkdGhGb3JCeXRlcyhhY2Nlc3NCeXRlU2l6ZSgpKTsKKyAgICByZXR1cm4gYmFu
a0ZvclR5cGUoYWNjZXNzVHlwZSgpKTsKK30KKworc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NC
eXRlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkpOwogfQog
CiB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0
cmVhbSYgb3V0KSBjb25zdApAQCAtNjUsOCArNjYsMTEgQEAgdm9pZCBNZW1vcnlWYWx1ZTo6ZHVt
cE1ldGEoQ29tbWFQcmludGVyJgogICAgIGlmIChtX29mZnNldCkKICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAib2Zmc2V0ID0gIiwgbV9vZmZzZXQpOwogICAgIGlmICgoaXNMb2FkKCkgJiYgZWZm
ZWN0cygpLnJlYWRzICE9IHJhbmdlKCkpCi0gICAgICAgIHx8IChpc1N0b3JlKCkgJiYgZWZmZWN0
cygpLndyaXRlcyAhPSByYW5nZSgpKSkKKyAgICAgICAgfHwgKGlzU3RvcmUoKSAmJiBlZmZlY3Rz
KCkud3JpdGVzICE9IHJhbmdlKCkpCisgICAgICAgIHx8IGlzRXhvdGljKCkpCiAgICAgICAgIG91
dC5wcmludChjb21tYSwgInJhbmdlID0gIiwgcmFuZ2UoKSk7CisgICAgaWYgKGlzRXhvdGljKCkp
CisgICAgICAgIG91dC5wcmludChjb21tYSwgImZlbmNlUmFuZ2UgPSAiLCBmZW5jZVJhbmdlKCkp
OwogfQogCiBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CkBAIC03NCw2ICs3
OCw2MiBAQCBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAgICAgcmV0dXJu
IG5ldyBNZW1vcnlWYWx1ZSgqdGhpcyk7CiB9CiAKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQg
KGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEg
c3VmZml4IHRoYXQKKy8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCitNZW1vcnlWYWx1
ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVu
Y2VSYW5nZSkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwg
cG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1fcmFuZ2UocmFuZ2UpCisg
ICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBMb2Fk
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICBjYXNl
IExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExvYWQxNlM6Cisg
ICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3RvcmUxNjoKKyAgICAgICAgY2FzZSBT
dG9yZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUg
dGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhl
YXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1vcnlWYWx1ZShr
aW5kLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlKQor
eworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNv
ZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6CisgICAg
ICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgorTWVt
b3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZh
bHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVh
cFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lk
LCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICwg
bV9yYW5nZShyYW5nZSkKKyAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQoreworICAgIEFT
U0VSVChCMzo6aXNTdG9yZShraW5kLm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTI3
ICsyNyw4NiBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckFyZy5oIgor
I2luY2x1ZGUgIkIzQmFuay5oIgogI2luY2x1ZGUgIkIzSGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAi
QjNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotLy8gRklYTUU6
IFdlIHdhbnQgdG8gYWxsb3cgZmVuY2VkIG1lbW9yeSBhY2Nlc3NlcyBvbiBBUk0uCi0vLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMzQ5Ci0KIGNsYXNzIEpTX0VY
UE9SVF9QUklWQVRFIE1lbW9yeVZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2lu
ZC5vcGNvZGUoKSkgewotICAgICAgICBjYXNlIExvYWQ4WjoKLSAgICAgICAgY2FzZSBMb2FkOFM6
Ci0gICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAgICBj
YXNlIExvYWQ6Ci0gICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0g
ICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHN0YXRpYyBib29sIGlzU3RvcmUoS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChr
aW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICBjYXNlIFN0b3Jl
MTY6Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHN0YXRpYyBib29sIGlzTG9hZChLaW5kIGtpbmQpCi0gICAgewotICAgICAgICByZXR1
cm4gYWNjZXB0cyhraW5kKSAmJiAhaXNTdG9yZShraW5kKTsKKyAgICAgICAgcmV0dXJuIGlzTWVt
b3J5QWNjZXNzKGtpbmQub3Bjb2RlKCkpOwogICAgIH0KIAogICAgIH5NZW1vcnlWYWx1ZSgpOwog
CiAgICAgaW50MzJfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIHZv
aWQgc2V0T2Zmc2V0KGludDMyX3Qgb2Zmc2V0KSB7IG1fb2Zmc2V0ID0gb2Zmc2V0OyB9CisgICAg
CisgICAgLy8gWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdXNpbmcgbGVnYWwgb2Zmc2V0
cyB1bmxlc3MgeW91J3ZlIGVudGVyZWQgcXVpcmtzIG1vZGUuCisgICAgYm9vbCBpc0xlZ2FsT2Zm
c2V0KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKyAgICBib29sIGlzTGVnYWxPZmZzZXQoaW50NjRf
dCBvZmZzZXQpIGNvbnN0OworICAgIAorICAgIC8vIEEgbmVjZXNzYXJ5IGNvbnNlcXVlbmNlIG9m
IE1lbW9yeVZhbHVlIGhhdmluZyBhbiBvZmZzZXQgaXMgdGhhdCBpdCBwYXJ0aWNpcGF0ZXMgaW4g
aW5zdHJ1Y3Rpb24KKyAgICAvLyBzZWxlY3Rpb24uIFRoaXMgdGVsbHMgeW91IGlmIHRoaXMgd2ls
bCBnZXQgbG93ZXJlZCB0byBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBhbiBvZmZzZXRsZXNzCisg
ICAgLy8gYWRkcmVzcy4KKyAgICBib29sIHJlcXVpcmVzU2ltcGxlQWRkcigpIGNvbnN0OwogCiAg
ICAgY29uc3QgSGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2U7IH0KICAg
ICB2b2lkIHNldFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9yYW5nZSA9IHJhbmdl
OyB9CisgICAgCisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgcmFuZ2UuCisgICAgY29uc3Qg
SGVhcFJhbmdlJiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlKCk7IH0KKyAgICB2
b2lkIHNldEFjY2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgc2V0UmFuZ2UocmFu
Z2UpOyB9CisgICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBmZW5jZVJhbmdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9mZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRGZW5jZVJhbmdlKGNvbnN0IEhlYXBS
YW5nZSYgcmFuZ2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0KKworICAgIGJvb2wgaXNTdG9y
ZSgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc1N0b3JlKG9wY29kZSgpKTsgfQorICAgIGJvb2wgaXNM
b2FkKCkgY29uc3QgeyByZXR1cm4gQjM6OmlzTG9hZChvcGNvZGUoKSk7IH0KIAotICAgIGJvb2wg
aXNTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBWb2lkOyB9Ci0gICAgYm9vbCBpc0xv
YWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgIT0gVm9pZDsgfQorICAgIGJvb2wgaGFzRmVuY2Uo
KSBjb25zdCB7IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsgfQorICAgIGJvb2wgaXNFeG90aWMoKSBj
b25zdCB7IHJldHVybiBoYXNGZW5jZSgpIHx8IGlzQXRvbWljKG9wY29kZSgpKTsgfQogCisgICAg
VHlwZSBhY2Nlc3NUeXBlKCkgY29uc3Q7CisgICAgQmFuayBhY2Nlc3NCYW5rKCkgY29uc3Q7CiAg
ICAgc2l6ZV90IGFjY2Vzc0J5dGVTaXplKCkgY29uc3Q7CisgICAgCiAgICAgV2lkdGggYWNjZXNz
V2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmlu
dGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGR1bXBN
ZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBW
YWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBr
aW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2Ug
cmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlLCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAg
ICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgYXJndW1lbnRz
Li4uKQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3JhbmdlKHJhbmdl
KQorICAgICAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQorICAgIHsKKyAgICB9CisgICAg
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0KKyAgICAKICAgICAvLyBV
c2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2Yg
dGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CiAgICAgLy8gZGVzY3JpYmVzIHRoZSBy
ZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3Jp
Z2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAg
OiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCi0gICAg
ICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0b3Ao
KSkKLSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICBz
d2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAgICAgICAgY2Fz
ZSBMb2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAgICAgICBjYXNlIExv
YWQxNlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAgICBjYXNl
IFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAgIEFTU0VS
VCh0eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBUeXBlLCBPcmlnaW4s
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhl
YXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkpOwogCiAg
ICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGlt
cGxpZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSog
cG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IE1lbW9yeVZhbHVlKGtpbmQs
IEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKLSAgICB7Ci0gICAgfQorICAgIE1lbW9y
eVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwg
SGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2Ug
PSBIZWFwUmFuZ2UoKSk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBzdG9yZXMuCi0gICAg
TWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9w
Y29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKLSAgICAgICAgLCBtX29m
ZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQotICAgIHsK
LSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoa2lu
ZC5vcGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAgICBjYXNl
IFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1
ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFu
Z2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKKyAgICAKICAg
ICBpbnQzMl90IG1fb2Zmc2V0IHsgMCB9OwotICAgIEhlYXBSYW5nZSBtX3JhbmdlOworICAgIEhl
YXBSYW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSBtX2Zl
bmNlUmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIz
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZUlubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZUlubGlu
ZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlW
YWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQXJnLmgiCisjaW5jbHVkZSAiQjNBdG9taWNW
YWx1ZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworaW5saW5lIGJvb2wg
TWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0Cit7CisgICAg
Ly8gTk9URTogVGhpcyBpcyBpbmxpbmUgYmVjYXVzZSBpdCBjb25zdGFudC1mb2xkcyB0byB0cnVl
IG9uIHg4NiEKKyAgICAKKyAgICAvLyBTbyBmYXIgb25seSBYODYgYWxsb3dzIGV4b3RpYyBsb2Fk
cyB0byBoYXZlIGFuIG9mZnNldC4KKyAgICBpZiAocmVxdWlyZXNTaW1wbGVBZGRyKCkpCisgICAg
ICAgIHJldHVybiAhb2Zmc2V0OworICAgIAorICAgIHJldHVybiBBaXI6OkFyZzo6aXNWYWxpZEFk
ZHJGb3JtKG9mZnNldCwgYWNjZXNzV2lkdGgoKSk7Cit9CisKK2lubGluZSBib29sIE1lbW9yeVZh
bHVlOjpyZXF1aXJlc1NpbXBsZUFkZHIoKSBjb25zdAoreworICAgIHJldHVybiAhaXNYODYoKSAm
JiBpc0V4b3RpYygpOworfQorCitpbmxpbmUgV2lkdGggTWVtb3J5VmFsdWU6OmFjY2Vzc1dpZHRo
KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSgpKSB7CisgICAgY2FzZSBMb2FkOFo6Cisg
ICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIHJldHVybiBXaWR0aDg7
CisgICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIFN0b3JlMTY6
CisgICAgICAgIHJldHVybiBXaWR0aDE2OworICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmV0dXJu
IHdpZHRoRm9yVHlwZSh0eXBlKCkpOworICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB3
aWR0aEZvclR5cGUoY2hpbGQoMCktPnR5cGUoKSk7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgor
ICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBj
YXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9t
aWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6
CisgICAgICAgIHJldHVybiBhczxBdG9taWNWYWx1ZT4oKS0+YWNjZXNzV2lkdGgoKTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gV2lkdGg4OworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNl
bmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNNb3ZlQ29uc3RhbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNNb3ZlQ29uc3RhbnRzLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcg
KzMyLDcgQEAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNE
b21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCi0jaW5jbHVk
ZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKQEAgLTIwMywxMiArMjAzLDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVQb2ludGVy
LT5oYXNJbnRQdHIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludHB0cl90IG9mZnNldCA9IGRlc2lyZWRPZmZzZXQoY2FuZGlk
YXRlUG9pbnRlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQjM6Omlz
UmVwcmVzZW50YWJsZUFzPGludDMyX3Q+KHN0YXRpY19jYXN0PGludDY0X3Q+KG9mZnNldCkpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpBcmc6OmlzVmFsaWRBZGRyRm9y
bSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMy
X3Q+KG9mZnNldCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aEZv
ckJ5dGVzKG1lbW9yeVZhbHVlLT5hY2Nlc3NCeXRlU2l6ZSgpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gZGVzaXJlZE9mZnNldChjYW5kaWRhdGVQ
b2ludGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9yeVZh
bHVlLT5pc0xlZ2FsT2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChiZXN0UG9pbnRlcikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTmF0aXZl
VHJhaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTmF0aXZl
VHJhaXRzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTmF0
aXZlVHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNCYW5rLmgiCisjaW5jbHVkZSAiQjNUeXBlLmgi
CisjaW5jbHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
KwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBOYXRpdmVUcmFpdHM7CisKK3RlbXBsYXRlPD4g
c3RydWN0IE5hdGl2ZVRyYWl0czxpbnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5r
ID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg4OworICAgIHN0YXRp
YyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2
ZVRyYWl0czx1aW50OF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAg
IHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoODsKKyAgICBzdGF0aWMgY29uc3QgVHlw
ZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50
MTZfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29u
c3QgV2lkdGggd2lkdGggPSBXaWR0aDE2OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJ
bnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czx1aW50MTZfdD4gewor
ICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGgg
d2lkdGggPSBXaWR0aDE2OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxpbnQzMl90PiB7CisgICAgc3RhdGlj
IGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdp
ZHRoMzI7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQzMl90PiB7CisgICAgc3RhdGljIGNvbnN0IEJh
bmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoMzI7Cisg
ICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgTmF0aXZlVHJhaXRzPGludDY0X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0g
R1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg2NDsKKyAgICBzdGF0aWMg
Y29uc3QgVHlwZSB0eXBlID0gSW50NjQ7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVU
cmFpdHM8dWludDY0X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAg
c3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg2NDsKKyAgICBzdGF0aWMgY29uc3QgVHlw
ZSB0eXBlID0gSW50NjQ7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8Zmxv
YXQ+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gRlA7CisgICAgc3RhdGljIGNvbnN0
IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gRmxv
YXQ7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8ZG91YmxlPiB7CisgICAg
c3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEZQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0
aCA9IFdpZHRoNjQ7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IERvdWJsZTsKK307CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCShyZXZpc2lvbiAyMTM0MjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjgsNiArNjgsMjMgQEAgc3RkOjpvcHRpb25hbDxPcGNvZGU+IGludmVydGVkQ29tcGFy
ZShPcAogICAgIH0KIH0KIAorT3Bjb2RlIHN0b3JlT3Bjb2RlKEJhbmsgYmFuaywgV2lkdGggd2lk
dGgpCit7CisgICAgc3dpdGNoIChiYW5rKSB7CisgICAgY2FzZSBHUDoKKyAgICAgICAgc3dpdGNo
ICh3aWR0aCkgeworICAgICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgIHJldHVybiBTdG9y
ZTg7CisgICAgICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgICAgIHJldHVybiBTdG9yZTE2Owor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlOworICAgICAgICB9Cisg
ICAgY2FzZSBGUDoKKyAgICAgICAgcmV0dXJuIFN0b3JlOworICAgIH0KK30KKwogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMjYzLDYgKzI4MCwzMyBAQCB2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgT3BjCiAgICAgY2FzZSBTdG9yZToK
ICAgICAgICAgb3V0LnByaW50KCJTdG9yZSIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
dG9taWNXZWFrQ0FTOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1dlYWtDQVMiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICBvdXQucHJpbnQo
IkF0b21pY1N0cm9uZ0NBUyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hn
QWRkOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdBZGQiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hn
QW5kIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAg
b3V0LnByaW50KCJBdG9taWNYY2hnT3IiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRv
bWljWGNoZ1N1YjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnU3ViIik7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgIG91dC5wcmludCgiQXRv
bWljWGNoZ1hvciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAg
ICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGciKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
RGVwZW5kOgorICAgICAgICBvdXQucHJpbnQoIkRlcGVuZCIpOworICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgb3V0LnByaW50KCJXYXNtQWRkcmVzcyIpOwog
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkocmV2
aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2lu
Y2x1ZGUgIkIzVHlwZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTgyLDcgKzgzLDYg
QEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBNb2QsIC8vIEFsbCBiZXRzIGFyZSBvZmYg
YXMgdG8gd2hhdCB3aWxsIGhhcHBlbiB3aGVuIHlvdSBleGVjdXRlIHRoaXMgZm9yIC0yXjMxJS0x
IGFuZCB4JTAuCiAgICAgVU1vZCwKIAotCiAgICAgLy8gUG9seW1vcnBoaWMgbmVnYXRpb24uIE5v
dGUgdGhhdCB3ZSBvbmx5IG5lZWQgdGhpcyBmb3IgZmxvYXRpbmcgcG9pbnQsIHNpbmNlIGludGVn
ZXIgbmVnYXRpb24KICAgICAvLyBpcyBleGFjdGx5IGxpa2UgU3ViKDAsIHgpLiBCdXQgdGhhdCdz
IG5vdCB0cnVlIGZvciBmbG9hdGluZyBwb2ludC4gU3ViKDAsIDApIGlzIDAsIHdoaWxlCiAgICAg
Ly8gTmVnKDApIGlzIC0wLiBBbHNvLCB3ZSBjYW5vbmljYWxpemUgU3ViKDAsIHgpIGludG8gTmVn
KHgpIGluIGNhc2Ugb2YgaW50ZWdlcnMuCkBAIC0xNjIsNiArMTYyLDEwNyBAQCBlbnVtIE9wY29k
ZSA6IGludDE2X3QgewogICAgIFN0b3JlMTYsCiAgICAgLy8gVGhpcyBpcyBhIHBvbHltb3JwaGlj
IHN0b3JlIGZvciBJbnQzMiwgSW50NjQsIEZsb2F0LCBhbmQgRG91YmxlLgogICAgIFN0b3JlLAor
ICAgIAorICAgIC8vIEF0b21pYyBjb21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyBhIGJvb2xl
YW4uIE1heSBjaG9vc2UgdG8gZG8gbm90aGluZyBhbmQgcmV0dXJuIGZhbHNlLiBZb3UgY2FuCisg
ICAgLy8gdXN1YWxseSBhc3N1bWUgdGhhdCB0aGlzIGlzIGZhc3RlciBhbmQgcmVzdWx0cyBpbiBs
ZXNzIGNvZGUgdGhhbiBBdG9taWNTdHJvbmdDQVMsIHRob3VnaCB0aGF0J3MKKyAgICAvLyBub3Qg
bmVjZXNzYXJpbHkgdHJ1ZSBvbiBJbnRlbCwgaWYgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIGRvZXMg
aXRzIGpvYi4gSW1hZ2luZSB0aGF0IHRoaXMgb3Bjb2RlIGlzCisgICAgLy8gYXMgaWYgeW91IGRp
ZCB0aGlzIGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIC8vIGJvb2wgQXRvbWljV2Vha0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQq
IHB0cikKKyAgICAvLyB7CisgICAgLy8gICAgIGlmICghcmFuZCgpKQorICAgIC8vICAgICAgICAg
cmV0dXJuIGZhbHNlOyAvLyBSZWFsIHdvcmxkIGV4YW1wbGUgb2YgdGhpczogY29udGV4dCBzd2l0
Y2ggb24gQVJNIHdoaWxlIGRvaW5nIENBUy4KKyAgICAvLyAgICAgaWYgKCpwdHIgIT0gZXhwZWN0
ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyAgICAgKnB0ciA9
IG5ld1ZhbHVlOworICAgIC8vICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyB9CisgICAgLy8KKyAg
ICAvLyBOb3RlIHRoYXQgYWxsIGF0b21pY3MgcHV0IHRoZSBwb2ludGVyIGxhc3QgdG8gYmUgY29u
c2lzdGVudCB3aXRoIGhvdyBsb2FkcyBhbmQgc3RvcmVzIHdvcmsuIFRoaXMKKyAgICAvLyBpcyBh
IGdvb2Z5IHRyYWRpdGlvbiwgYnV0IGl0J3MgaGFybWxlc3MsIGFuZCBiZXR0ZXIgdGhhbiBiZWlu
ZyBpbmNvbnNpc3RlbnQuCisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgd2VhayBDQVMgaGFzIG5v
IGZlbmNpbmcgZ3VhcmFudGVlcyB3aGVuIGl0IGZhaWxzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZv
bGxvd2luZworICAgIC8vIHRyYW5zZm9ybWF0aW9uIGlzIGFsd2F5cyB2YWxpZDoKKyAgICAvLwor
ICAgIC8vIEJlZm9yZToKKyAgICAvLworICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtD
QVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNz
dWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBBZnRlcjoKKyAgICAvLworICAgIC8v
ICAgICAgICAgQnJhbmNoKEVxdWFsKExvYWQocHRyKSwgZXhwZWN0ZWQpKQorICAgIC8vICAgICAg
IFN1Y2Nlc3NvcnM6IFRoZW46I2F0dGVtcHQsIEVsc2U6I2ZhaWwKKyAgICAvLyAgICAgQkIjYXR0
ZW1wdDoKKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FTKGV4cGVjdGVkLCBuZXcs
IHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3VjY2VzcywgRWxzZTojZmFp
bAorICAgIC8vCisgICAgLy8gQm90aCBraW5kcyBvZiBDQVMgZm9yIG5vbi1jYW5vbmljYWwgd2lk
dGhzIChXaWR0aDggYW5kIFdpZHRoMTYpIGlnbm9yZSB0aGUgaXJyZWxldmFudCBiaXRzIG9mIHRo
ZQorICAgIC8vIGlucHV0LgorICAgIEF0b21pY1dlYWtDQVMsCisgICAgCisgICAgLy8gQXRvbWlj
IGNvbXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIHRoZSBvbGQgdmFsdWUuIERvZXMgbm90IGhh
dmUgdGhlIG5vbmRldGVybWluaXNtIG9mIFdlYWtDQVMuCisgICAgLy8gVGhpcyBpcyBhIGJpdCBt
b3JlIGNvZGUgYW5kIGEgYml0IHNsb3dlciBpbiBzb21lIGNhc2VzLCB0aG91Z2ggbm90IGJ5IGEg
bG90LiBJbWFnaW5lIHRoYXQgdGhpcworICAgIC8vIG9wY29kZSBpcyBhcyBpZiB5b3UgZGlkIHRo
aXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
Ly8gVCBBdG9taWNTdHJvbmdDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBUKiBwdHIp
CisgICAgLy8geworICAgIC8vICAgICBUIG9sZFZhbHVlID0gKnB0cjsKKyAgICAvLyAgICAgaWYg
KG9sZFZhbHVlID09IGV4cGVjdGVkVmFsdWUpCisgICAgLy8gICAgICAgICAqcHRyID0gbmV3VmFs
dWU7CisgICAgLy8gICAgIHJldHVybiBvbGRWYWx1ZQorICAgIC8vIH0KKyAgICAvLworICAgIC8v
IE5vdGUgdGhhdCBBdG9taWNXZWFrQ0FTIGFuZCBBdG9taWNTdHJvbmdDQVMgc29ydCBvZiBoYXZl
IHRoaXMga2luZCBvZiBlcXVpdmFsZW5jZToKKyAgICAvLworICAgIC8vIEF0b21pY1dlYWtDQVMo
QGV4cCwgQG5ldywgQHB0cikgPT0gRXF1YWwoQXRvbWljU3Ryb25nQ0FTKEBleHAsIEBuZXcsIEBw
dHIpLCBAZXhwKQorICAgIC8vCisgICAgLy8gQXNzdW1pbmcgdGhhdCB0aGUgV2Vha0NBUyBkb2Vz
IG5vdCBzcHVyaW91c2x5IGZhaWwsIG9mIGNvdXJzZS4KKyAgICBBdG9taWNTdHJvbmdDQVMsCisg
ICAgCisgICAgLy8gQXRvbWljYWxseSBfX18gYSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybiB0
aGUgb2xkIHZhbHVlLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNY
Y2hnX19fKEBvcGVyYW5kLCBAcHRyKQorICAgIC8vCisgICAgLy8gRm9yIG5vbi1jYW5vbmljYWwg
d2lkdGhzIChXaWR0aDggYW5kIFdpZHRoMTYpLCB0aGVzZSByZXR1cm4gc2lnbi1leHRlbmRlZCBy
ZXN1bHRzIGFuZCBpZ25vcmUgdGhlCisgICAgLy8gaXJyZWxldmFudCBiaXRzIG9mIHRoZWlyIGlu
cHV0cy4KKyAgICBBdG9taWNYY2hnQWRkLAorICAgIEF0b21pY1hjaGdBbmQsCisgICAgQXRvbWlj
WGNoZ09yLAorICAgIEF0b21pY1hjaGdTdWIsCisgICAgQXRvbWljWGNoZ1hvciwKKyAgICAKKyAg
ICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkIGhhdmUgQXRvbWljWGNoZ05lZyBhbmQgQXRvbWlj
WGNoZ05vdC4KKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IGV4Y2hhbmdlIGEgdmFsdWUgd2l0aCBh
IG1lbW9yeSBsb2NhdGlvbi4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRv
bWljWGNoZyhAbmV3VmFsdWUsIEBwdHIpCisgICAgQXRvbWljWGNoZywKKyAgICAKKyAgICAvLyBJ
bnRyb2R1Y2UgYW4gaW52aXNpYmxlIGRlcGVuZGVuY3kgZm9yIGJsb2NraW5nIG1vdGlvbiBvZiBs
b2FkcyB3aXRoIHJlc3BlY3QgdG8gZWFjaCBvdGhlci4gU3ludGF4OgorICAgIC8vCisgICAgLy8g
QHJlc3VsdCA9IERlcGVuZChAcGhhbnRvbSkKKyAgICAvLworICAgIC8vIFRoaXMgaXMgZXZlbnR1
YWxseSBjb2RlZ2VuZXJhdGVkIHRvIGhhdmUgbG9jYWwgc2VtYW50aWNzIGFzIGlmIHdlIGRpZDoK
KyAgICAvLworICAgIC8vIEByZXN1bHQgPSAkMAorICAgIC8vCisgICAgLy8gQnV0IGl0IGVuc3Vy
ZXMgdGhhdCB0aGUgdXNlcnMgb2YgQHJlc3VsdCBjYW5ub3QgZXhlY3V0ZSB1bnRpbCBAcGhhbnRv
bSBpcyBjb21wdXRlZC4KKyAgICAvLworICAgIC8vIFRoZSBjb21waWxlciBpcyBub3QgYWxsb3dl
ZCB0byByZWFzb24gYWJvdXQgdGhlIGZhY3QgdGhhdCBEZXBlbmQgY29kZWdlbmVyYXRlcyB0aGlz
IHdheS4gQW55IGtpbmQKKyAgICAvLyBvZiB0cmFuc2Zvcm1hdGlvbiBvciBhbmFseXNpcyB0aGF0
IHJlbGllcyBvbiB0aGUgaW5zaWdodCB0aGF0IERlcGVuZCBpcyByZWFsbHkgemVybyBpcyB1bnNv
dW5kLAorICAgIC8vIGJlY2F1c2UgaXQgdW5sb2NrcyByZW9yZGVyaW5nIG9mIHVzZXJzIG9mIEBy
ZXN1bHQgYW5kIEBwaGFudG9tLgorICAgIC8vCisgICAgLy8gT24gWDg2LCB0aGlzIGlzIGxvd2Vy
ZWQgdG8gYSBsb2FkLWxvYWQgZmVuY2UgYW5kIEByZXN1bHQgdXNlcyBAcGhhbnRvbSBkaXJlY3Rs
eS4KKyAgICAvLworICAgIC8vIE9uIEFSTSwgdGhpcyBpcyBsb3dlcmVkIGFzIGlmIGxpa2U6Cisg
ICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gQml0WG9yKEBwaGFudG9tLCBAcGhhbnRvbSkKKyAgICAv
LworICAgIC8vIEV4Y2VwdCB0aGF0IHRoZSBjb21waWxlciBuZXZlciBnZXRzIGFuIG9wcG9ydHVu
aXR5IHRvIHNpbXBsaWZ5IG91dCB0aGUgQml0WG9yLgorICAgIERlcGVuZCwKIAogICAgIC8vIFRo
aXMgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBhY3R1YWwgYWRkcmVzcyBvZiBhIFdhc20gbWVtb3J5
IG9wZXJhdGlvbi4gSXQgdGFrZXMgYW4gSW50UHRyCiAgICAgLy8gYW5kIGEgcGlubmVkIHJlZ2lz
dGVyIHRoZW4gY29tcHV0ZXMgdGhlIGFwcHJvcHJpYXRlIEludFB0ciBhZGRyZXNzLiBGb3IgdGhl
IHVzZS1jYXNlIG9mCkBAIC0zMDEsNiArNDAyLDExMiBAQCBpbmxpbmUgYm9vbCBpc0RlZmluaXRl
bHlUZXJtaW5hbChPcGNvZGUgCiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBpc0xvYWQoT3Bjb2Rl
IG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAg
IGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAg
Y2FzZSBMb2FkOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1N0b3JlKE9wY29kZSBvcGNv
ZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNl
IFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNM
b2FkU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNh
c2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNl
IExvYWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3Rv
cmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21p
YyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9t
aWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNo
Z0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6Cisg
ICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNl
IEF0b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljQ0FTKE9wY29k
ZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtD
QVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29s
IGlzQXRvbWljWGNoZyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7Cisg
ICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNl
IEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNY
Y2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wg
aXNNZW1vcnlBY2Nlc3MoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICByZXR1cm4gaXNBdG9taWMob3Bj
b2RlKSB8fCBpc0xvYWRTdG9yZShvcGNvZGUpOworfQorCitpbmxpbmUgT3Bjb2RlIHNpZ25FeHRl
bmRPcGNvZGUoV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2Ug
V2lkdGg4OgorICAgICAgICByZXR1cm4gU0V4dDg7CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAg
ICByZXR1cm4gU0V4dDE2OworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBPb3BzOworICAgIH0KK30KKworSlNfRVhQT1JU
X1BSSVZBVEUgT3Bjb2RlIHN0b3JlT3Bjb2RlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpOworCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwMiw2ICsyMDIsOCBAQCB2b2lkIFByb2NlZHVyZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
CiAgICAgICAgIH0KICAgICAgICAgZGF0YUxvZygiICAgICIsIGRlZXBEdW1wKCp0aGlzLCB2YWx1
ZSksICJcbiIpOwogICAgIH0KKyAgICBpZiAoaGFzUXVpcmtzKCkpCisgICAgICAgIG91dC5wcmlu
dCgiSGFzIFF1aXJrczogVHJ1ZVxuIik7CiAgICAgaWYgKHZhcmlhYmxlcygpLnNpemUoKSkgewog
ICAgICAgICBvdXQucHJpbnQoIlZhcmlhYmxlczpcbiIpOwogICAgICAgICBmb3IgKFZhcmlhYmxl
KiB2YXJpYWJsZSA6IHZhcmlhYmxlcygpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1Byb2NlZHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE3LDYgKzExNyw3IEBAIHB1Ymxp
YzoKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoT3JpZ2luLCBUeXBlLCBpbnQ2NF90IHZhbHVl
KTsKICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoVmFsdWUqLCBpbnQ2NF90IHZhbHVlKTsKIAor
ICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgVmFsdWUq
IGFkZEJvdHRvbShPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBhZGRCb3R0b20oVmFsdWUqKTsK
IApAQCAtMTk1LDYgKzE5NiwxNyBAQCBwdWJsaWM6CiAgICAgLy8gYWxpdmUuIEdyZWF0IGZvciBj
b21waWxlci1nZW5lcmF0ZWQgZGF0YSBzZWN0aW9ucywgbGlrZSBzd2l0Y2gganVtcCB0YWJsZXMg
YW5kIGNvbnN0YW50IHBvb2xzLgogICAgIC8vIFRoaXMgcmV0dXJucyBtZW1vcnkgdGhhdCBoYXMg
YmVlbiB6ZXJvLWluaXRpYWxpemVkLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFkZERh
dGFTZWN0aW9uKHNpemVfdCk7CisgICAgCisgICAgLy8gU29tZSBvcGVyYXRpb25zIGFyZSBzcGVj
aWZpZWQgaW4gQjMgSVIgdG8gYmVoYXZlIG9uZSB3YXkgYnV0IG9uIHRoaXMgZ2l2ZW4gQ1BVIHRo
ZXkgYmVoYXZlIGEKKyAgICAvLyBkaWZmZXJlbnQgd2F5LiBXaGVuIHRydWUsIHRob3NlIEIzIElS
IG9wcyBzd2l0Y2ggdG8gYmVoYXZpbmcgdGhlIENQVSB3YXksIGFuZCB0aGUgb3B0aW1pemVyIG1h
eQorICAgIC8vIHN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2YgaXQuCisgICAgLy8KKyAgICAvLyBP
bmUgd2F5IHRvIHRoaW5rIG9mIGl0IGlzIGxpa2UgdGhpcy4gSW1hZ2luZSB0aGF0IHlvdSBmaW5k
IHRoYXQgdGhlIGNsZWFuZXN0IHdheSBvZiBsb3dlcmluZworICAgIC8vIHNvbWV0aGluZyBpbiBs
b3dlck1hY3JvcyBpcyB0byB1bmNvbmRpdGlvbmFsbHkgcmVwbGFjZSBvbmUgb3Bjb2RlIHdpdGgg
YW5vdGhlci4gVGhpcyBpcyBhIHNob3J0Y3V0CisgICAgLy8gd2hlcmUgeW91IGluc3RlYWQga2Vl
cCB0aGUgc2FtZSBvcGNvZGUsIGJ1dCByZWx5IG9uIHRoZSBvcGNvZGUncyBtZWFuaW5nIGNoYW5n
ZXMgb25jZSBsb3dlck1hY3JvcworICAgIC8vIHNldHMgaGFzUXVpcmtzLgorICAgIGJvb2wgaGFz
UXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNRdWlya3M7IH0KKyAgICB2b2lkIHNldEhhc1F1
aXJrcyhib29sIHZhbHVlKSB7IG1faGFzUXVpcmtzID0gdmFsdWU7IH0KIAogICAgIE9wYXF1ZUJ5
cHJvZHVjdHMmIGJ5cHJvZHVjdHMoKSB7IHJldHVybiAqbV9ieXByb2R1Y3RzOyB9CiAKQEAgLTI1
Miw2ICsyNjQsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoUHJpbnRT
dHJlYW0mLCBPcmlnaW4pPj4gbV9vcmlnaW5QcmludGVyOwogICAgIGNvbnN0IHZvaWQqIG1fZnJv
bnRlbmREYXRhOwogICAgIFBDVG9PcmlnaW5NYXAgbV9wY1RvT3JpZ2luTWFwOworICAgIGJvb2wg
bV9oYXNRdWlya3MgeyBmYWxzZSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmNwcAkocmV2aXNpb24gMjEzNDI1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJCM0RvbWlu
YXRvcnMuaCIKKyNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewpAQCAtODksNiArOTAsMjMgQEAgYm9v
bCBQdXJlQ1NFOjpwcm9jZXNzKFZhbHVlKiB2YWx1ZSwgRG9taQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorYm9vbCBwdXJlQ1NFKFByb2NlZHVyZSYgcHJvYykKK3sKKyAgICBQaGFzZVNjb3BlIHBo
YXNlU2NvcGUocHJvYywgInB1cmVDU0UiKTsKKyAgICAKKyAgICBEb21pbmF0b3JzJiBkb21pbmF0
b3JzID0gcHJvYy5kb21pbmF0b3JzKCk7CisgICAgUHVyZUNTRSBwdXJlQ1NFOworICAgIGJvb2wg
cmVzdWx0ID0gZmFsc2U7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuYmxvY2tz
SW5QcmVPcmRlcigpKSB7CisgICAgICAgIGZvciAoVmFsdWUqIHZhbHVlIDogKmJsb2NrKSB7Cisg
ICAgICAgICAgICByZXN1bHQgfD0gdmFsdWUtPnBlcmZvcm1TdWJzdGl0dXRpb24oKTsKKyAgICAg
ICAgICAgIHJlc3VsdCB8PSBwdXJlQ1NFLnByb2Nlc3ModmFsdWUsIGRvbWluYXRvcnMpOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNQdXJlQ1NFLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBA
QCBwcml2YXRlOgogICAgIEhhc2hNYXA8VmFsdWVLZXksIE1hdGNoZXM+IG1fbWFwOwogfTsKIAor
Ym9vbCBwdXJlQ1NFKFByb2NlZHVyZSYpOworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAog
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VTdHJlbmd0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCwxMiArMjgsMTMgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM0F0b21p
Y1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIz
QmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgi
CiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNQaGlD
aGlsZHJlbi5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgpAQCAtNjAyLDcgKzYw
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGJyZWFrOwotCisg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZWc6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6
IE5lZyhjb25zdGFudCkKICAgICAgICAgICAgIC8vIEludG8gdGhpczogLWNvbnN0YW50CkBAIC0x
Mjk1LDYgKzEyOTYsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBpZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhp
czogU0V4dDgoQXRvbWljWGNoZ19fXykKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0
b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBpZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNo
aWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQo
MCktPmFzPEF0b21pY1ZhbHVlPigpLT5hY2Nlc3NXaWR0aCgpID09IFdpZHRoOCkgeworICAgICAg
ICAgICAgICAgICAgICByZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTRXh0MTY6CkBAIC0xMzQzLDYg
KzEzNTQsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNR
dWlya3MoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDE2KEF0b21pY1hj
aGdfX18pCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlzOiBBdG9taWNYY2hnX19fCisgICAg
ICAgICAgICAgICAgaWYgKGlzQXRvbWljWGNoZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkp
CisgICAgICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1
ZT4oKS0+YWNjZXNzV2lkdGgoKSA9PSBXaWR0aDE2KSB7CisgICAgICAgICAgICAgICAgICAgIHJl
cGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIFNFeHQzMjoKQEAgLTIxMDEsMjIgKzIxMjIsMjUgQEAgcHJp
dmF0ZToKICAgICAgICAgQVNTRVJUKG1fdmFsdWUtPm51bUNoaWxkcmVuKCkgPj0gMik7CiAgICAg
ICAgIAogICAgICAgICAvLyBMZWF2ZSBpdCBhbG9uZSBpZiB0aGUgcmlnaHQgY2hpbGQgaXMgYSBj
b25zdGFudC4KLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkpCisg
ICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNDb25zdGFudCgpCisgICAgICAgICAgICB8
fCBtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5p
c0NvbnN0YW50KCkpIHsKKyAgICAgICAgYXV0byBzd2FwID0gWyZdICgpIHsKICAgICAgICAgICAg
IHN0ZDo6c3dhcChtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlz
Q29uc3RhbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7CisgICAgICAgIAorICAgICAg
ICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUykKKyAg
ICAgICAgICAgIHJldHVybiBzd2FwKCk7CisgICAgICAgIAogICAgICAgICAvLyBTb3J0IHRoZSBv
cGVyYW5kcy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgY2Fub25pY2FsaXphdGlvbi4gV2UgdXNlIHRo
ZSBpbmRleCBpbnN0ZWFkIG9mCiAgICAgICAgIC8vIHRoZSBhZGRyZXNzIHRvIG1ha2UgdGhpcyBh
dCBsZWFzdCBzbGlnaHRseSBkZXRlcm1pbmlzdGljLgotICAgICAgICBpZiAobV92YWx1ZS0+Y2hp
bGQoMCktPmluZGV4KCkgPiBtX3ZhbHVlLT5jaGlsZCgxKS0+aW5kZXgoKSkgewotICAgICAgICAg
ICAgc3RkOjpzd2FwKG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAg
ICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
CisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5kZXgoKSA+IG1fdmFsdWUtPmNoaWxk
KDEpLT5pbmRleCgpKQorICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKICAgICB9CiAKICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGEgZm9yd2FyZCBhbmFseXNpcy4gSW5zdGVh
ZCwgd2UgdXNlcyBhIGJvdW5kZWQtc2VhcmNoIGJhY2t3YXJkcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdW
YWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxv
Y2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNNZW1v
cnlWYWx1ZS5oIgpAQCAtMzQ2LDYgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJU
eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
PnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxp
ZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZh
bHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTG9hZDoKQEAg
LTM1Myw2ICszNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
Pm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgIT0gVm9p
ZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVl
KTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU4OgpAQCAtMzYyLDYgKzM2NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5
cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1
ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAg
ICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU6CkBAIC0zNjksOCArMzczLDQ5IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAy
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGls
ZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAg
IHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2
YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBl
KCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlw
ZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
dmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nl
c3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9t
aWNTdHJvbmdDQVM6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXND
aGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5udW1DaGlsZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZh
bHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBl
KCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFs
dWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAg
ICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6
CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBjYXNlIEF0b21p
Y1hjaGdYb3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgICAgICAgICAg
VkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1
ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgp
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVl
KTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOgorICAgICAgICAgICAgICAg
IFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9
PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAg
ICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQg
IiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVu
KCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKQEAgLTUzNyw2ICs1ODIsMjAgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHZvaWQgdmFs
aWRhdGVGZW5jZShWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVt
b3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNG
ZW5jZSgpKQorICAgICAgICAgICAgVkFMSURBVEUobWVtb3J5LT5hY2Nlc3NCYW5rKCkgPT0gR1As
ICgiRmVuY2UgYXQgIiwgKm1lbW9yeSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRl
QXRvbWljKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSB2YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBWQUxJREFURShi
ZXN0VHlwZShHUCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSA9PSBhdG9taWMtPmFjY2Vzc1R5cGUo
KSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICB9CiAKICAgICB2b2lkIHZhbGlkYXRlU3RhY2tBY2Nl
c3MoVmFsdWUqIHZhbHVlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1
ZS5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQjNf
SklUKQogCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9t
aWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJC
M0JvdHRvbVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCkBAIC01MTAsNiAr
NTExLDcgQEAgYm9vbCBWYWx1ZTo6cmV0dXJuc0Jvb2woKSBjb25zdAogICAgIGNhc2UgQWJvdmVF
cXVhbDoKICAgICBjYXNlIEJlbG93RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgor
ICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQ
aGk6CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC01
ODksNiArNTkxLDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBC
ZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKICAgICBjYXNlIFNlbGVjdDoK
KyAgICBjYXNlIERlcGVuZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXY6CiAgICAgY2Fz
ZSBVRGl2OgpAQCAtNjAwLDE2ICs2MDMsNDQgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNv
bnN0CiAgICAgY2FzZSBMb2FkOFM6CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2
UzoKLSAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJlc3VsdC5yZWFkcyA9IGFzPE1lbW9yeVZhbHVl
PigpLT5yYW5nZSgpOworICAgIGNhc2UgTG9hZDogeworICAgICAgICBjb25zdCBNZW1vcnlWYWx1
ZSogbWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1l
bW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAg
ICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgpOworICAgICAgICAgICAg
cmVzdWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQuY29udHJvbERl
cGVuZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFN0b3JlODoK
ICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmVzdWx0LndyaXRl
cyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAgIGNhc2UgU3RvcmU6IHsKKyAgICAg
ICAgY29uc3QgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAg
ICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5o
YXNGZW5jZSgpKSB7CisgICAgICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPmZlbmNlUmFu
Z2UoKTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAg
IGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBB
dG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNo
Z1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgY29uc3QgQXRvbWljVmFsdWUq
IGF0b21pYyA9IGFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBhdG9t
aWMtPnJhbmdlKCkgfCBhdG9taWMtPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgcmVzdWx0LndyaXRl
cyA9IGF0b21pYy0+cmFuZ2UoKSB8IGF0b21pYy0+ZmVuY2VSYW5nZSgpOworICAgICAgICBpZiAo
YXRvbWljLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAg
ICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0g
dHJ1ZTsKICAgICAgICAgYnJlYWs7CkBAIC02MTcsMTggKzY0OCw3IEBAIEVmZmVjdHMgVmFsdWU6
OmVmZmVjdHMoKSBjb25zdAogICAgICAgICBjb25zdCBGZW5jZVZhbHVlKiBmZW5jZSA9IGFzPEZl
bmNlVmFsdWU+KCk7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IGZlbmNlLT5yZWFkOwogICAgICAg
ICByZXN1bHQud3JpdGVzID0gZmVuY2UtPndyaXRlOwotICAgICAgICAKLSAgICAgICAgLy8gUHJl
dmVudCBraWxsaW5nIG9mIGZlbmNlcyB0aGF0IGNsYWltIG5vdCB0byB3cml0ZSBhbnl0aGluZy4g
SXQncyBhIGJpdCB3ZWlyZCB0aGF0IHdlIHVzZQotICAgICAgICAvLyBsb2NhbCBzdGF0ZSBhcyB0
aGUgd2F5IHRvIGRvIHRoaXMsIGJ1dCBpdCBoYXBwZW5zIHRvIHdvcms6IHdlIG11c3QgYXNzdW1l
IHRoYXQgd2UgY2Fubm90Ci0gICAgICAgIC8vIGtpbGwgd3JpdGVzTG9jYWxTdGF0ZSB1bmxlc3Mg
d2UgdW5kZXJzdGFuZHMgZXhhY3RseSB3aGF0IHRoZSBpbnN0cnVjdGlvbiBpcyBkb2luZyAobGlr
ZQotICAgICAgICAvLyB0aGUgd2F5IHRoYXQgZml4U1NBIHVuZGVyc3RhbmRzIFNldC9HZXQgYW5k
IHRoZSB3YXkgdGhhdCByZWR1Y2VTdHJlbmd0aCBhbmQgb3RoZXJzCi0gICAgICAgIC8vIHVuZGVy
c3RhbmQgVXBzaWxvbikuIFRoaXMgd291bGQgb25seSBiZWNvbWUgYSBwcm9ibGVtIGlmIHdlIGhh
ZCBzb21lIGFuYWx5c2lzIHRoYXQgd2FzCi0gICAgICAgIC8vIGxvb2tpbmcgdG8gdXNlIHRoZSB3
cml0ZXNMb2NhbFN0YXRlIGJpdCB0byBpbnZhbGlkYXRlIGEgQ1NFIG92ZXIgbG9jYWwgc3RhdGUg
b3BlcmF0aW9ucy4KLSAgICAgICAgLy8gVGhlbiBhIEZlbmNlIHdvdWxkIGxvb2sgYmxvY2ssIHNh
eSwgdGhlIGVsaW1pbmF0aW9uIG9mIGEgcmVkdW5kYW50IEdldC4gQnV0IGl0IGxpa2UKLSAgICAg
ICAgLy8gdGhhdCdzIG5vdCBhdCBhbGwgaG93IG91ciBvcHRpbWl6YXRpb25zIGZvciBTZXQvR2V0
L1Vwc2lsb24vUGhpIHdvcmsgLSB0aGV5IGdyb2sgdGhlaXIKLSAgICAgICAgLy8gb3BlcmF0aW9u
cyBkZWVwbHkgZW5vdWdoIHRoYXQgdGhleSBoYXZlIG5vIG5lZWQgdG8gY2hlY2sgdGhpcyBiaXQg
LSBzbyB0aGlzIGNoZWF0IGlzCi0gICAgICAgIC8vIGZpbmUuCi0gICAgICAgIHJlc3VsdC53cml0
ZXNMb2NhbFN0YXRlID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ0NhbGw6CkBAIC02OTQsNiArNzE0LDcgQEAgVmFs
dWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEJpdHdp
c2VDYXN0OgogICAgIGNhc2UgTmVnOgorICAgIGNhc2UgRGVwZW5kOgogICAgICAgICByZXR1cm4g
VmFsdWVLZXkoa2luZCgpLCB0eXBlKCksIGNoaWxkKDApKTsKICAgICBjYXNlIEFkZDoKICAgICBj
YXNlIFN1YjoKQEAgLTc0NiwxMiArNzY3LDE2IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25z
dAogICAgIH0KIH0KIAotdm9pZCBWYWx1ZTo6cGVyZm9ybVN1YnN0aXR1dGlvbigpCitib29sIFZh
bHVlOjpwZXJmb3JtU3Vic3RpdHV0aW9uKCkKIHsKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOwog
ICAgIGZvciAoVmFsdWUqJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgd2hpbGUgKGNo
aWxkLT5vcGNvZGUoKSA9PSBJZGVudGl0eSkKKyAgICAgICAgd2hpbGUgKGNoaWxkLT5vcGNvZGUo
KSA9PSBJZGVudGl0eSkgeworICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgICAg
IGNoaWxkID0gY2hpbGQtPmNoaWxkKDApOworICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIGJvb2wgVmFsdWU6OmlzRnJlZSgpIGNvbnN0CkBAIC04MDEsNiArODI2LDcg
QEAgVHlwZSBWYWx1ZTo6dHlwZUZvcihLaW5kIGtpbmQsIFZhbHVlKiBmaQogICAgIGNhc2UgQ2hl
Y2tBZGQ6CiAgICAgY2FzZSBDaGVja1N1YjoKICAgICBjYXNlIENoZWNrTXVsOgorICAgIGNhc2Ug
RGVwZW5kOgogICAgICAgICByZXR1cm4gZmlyc3RDaGlsZC0+dHlwZSgpOwogICAgIGNhc2UgRnJh
bWVQb2ludGVyOgogICAgICAgICByZXR1cm4gcG9pbnRlclR5cGUoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTEgQEAgcHVi
bGljOgogICAgIAogICAgIE9wY29kZSBvcGNvZGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkub3Bj
b2RlKCk7IH0KICAgICAKKyAgICAvLyBOb3RlIHRoYXQgdGhlIGtpbmQgaXMgbWVhbnQgdG8gYmUg
aW1tdXRhYmxlLiBEbyB0aGlzIHdoZW4geW91IGtub3cgdGhhdCB0aGlzIGlzIHNhZmUuIEl0J3Mg
bm90CisgICAgLy8gdXN1YWxseSBzYWZlLgorICAgIHZvaWQgc2V0S2luZFVuc2FmZWx5KEtpbmQg
a2luZCkgeyBtX2tpbmQgPSBraW5kOyB9CisgICAgdm9pZCBzZXRPcGNvZGVVbnNhZmVseShPcGNv
ZGUgb3Bjb2RlKSB7IG1fa2luZC5zZXRPcGNvZGUob3Bjb2RlKTsgfQorICAgIAogICAgIC8vIEl0
J3MgZ29vZCBwcmFjdGljZSB0byBtaXJyb3IgS2luZCBtZXRob2RzIGhlcmUsIHNvIHlvdSBjYW4g
c2F5IHZhbHVlLT5pc0JsYWgoKQogICAgIC8vIGluc3RlYWQgb2YgdmFsdWUtPmtpbmQoKS5pc0Js
YWgoKS4KICAgICBib29sIGlzQ2hpbGwoKSBjb25zdCB7IHJldHVybiBraW5kKCkuaXNDaGlsbCgp
OyB9CkBAIC0xMDcsNiArMTEyLDggQEAgcHVibGljOgogICAgIC8vIHZhbHVlcyB3aXRoIElkZW50
aXRpZXMgb24gYm90dG9tIGNvbnN0YW50cy4gRm9yIHRoaXMgcmVhc29uLCB0aGlzIHRha2VzIGEg
Y2FsbGJhY2sgdGhhdCBpcwogICAgIC8vIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBib3R0b21z
LiBUaGVyZSdzIGEgdXRpbGl0eSBmb3IgdGhpcywgc2VlIEIzQm90dG9tUHJvdmlkZXIuaC4gWW91
CiAgICAgLy8gY2FuIGFsc28gYWNjZXNzIHRoYXQgdXRpbGl0eSB1c2luZyByZXBsYWNlV2l0aEJv
dHRvbShJbnNlcnRpb25TZXQmLCBzaXplX3QpLgorICAgIC8vCisgICAgLy8gWW91J3JlIGd1YXJh
bnRlZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCb3R0b21Q
cm92aWRlcj4KICAgICB2b2lkIHJlcGxhY2VXaXRoQm90dG9tKGNvbnN0IEJvdHRvbVByb3ZpZGVy
Jik7CiAgICAgCkBAIC0yNTYsNyArMjYzLDcgQEAgcHVibGljOgogICAgIC8vIE1ha2VzIHN1cmUg
dGhhdCBub25lIG9mIHRoZSBjaGlsZHJlbiBhcmUgSWRlbnRpdHkncy4gSWYgYSBjaGlsZCBwb2lu
dHMgdG8gSWRlbnRpdHksIHRoaXMgd2lsbAogICAgIC8vIHJlcG9pbnQgaXQgYXQgdGhlIElkZW50
aXR5J3MgY2hpbGQuIEZvciBzaW1wbGljaXR5LCB0aGlzIHdpbGwgZm9sbG93IGFyYml0cmFyaWx5
IGxvbmcgY2hhaW5zCiAgICAgLy8gb2YgSWRlbnRpdHkncy4KLSAgICB2b2lkIHBlcmZvcm1TdWJz
dGl0dXRpb24oKTsKKyAgICBib29sIHBlcmZvcm1TdWJzdGl0dXRpb24oKTsKICAgICAKICAgICAv
LyBGcmVlIHZhbHVlcyBhcmUgdGhvc2Ugd2hvc2UgcHJlc2VuY2UgaXMgZ3VhcmFudGVlZCBub3Qg
dG8gaHVydCBjb2RlLiBXZSBjb25zaWRlciBjb25zdGFudHMsCiAgICAgLy8gSWRlbnRpdGllcywg
YW5kIE5vcHMgdG8gYmUgZnJlZS4gQ29uc3RhbnRzIGFyZSBmcmVlIGJlY2F1c2Ugd2UgaG9pc3Qg
dGhlbSB0byBhbiBvcHRpbWFsIHBsYWNlLgpAQCAtMzIxLDYgKzMyOCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgSVRvRjoKICAgICAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgY2Fz
ZSBCcmFuY2g6CisgICAgICAgIGNhc2UgRGVwZW5kOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KG51bUFyZ3MgIT0gMSkpCiAgICAgICAgICAgICAgICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsK
ICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lk
dGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNw
cAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwzOCBAQAogCiAjaW5jbHVkZSA8d3RmL1By
aW50U3RyZWFtLmg+CiAKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitUeXBlIGJl
c3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgewor
ICAgIGNhc2UgV2lkdGg4OgorICAgIGNhc2UgV2lkdGgxNjoKKyAgICBjYXNlIFdpZHRoMzI6Cisg
ICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0
dXJuIEludDMyOworICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIEZsb2F0Owor
ICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBWb2lkOworICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgc3dpdGNoIChiYW5rKSB7
CisgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICByZXR1cm4gSW50NjQ7CisgICAgICAgIGNh
c2UgRlA6CisgICAgICAgICAgICByZXR1cm4gRG91YmxlOworICAgICAgICB9CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lkOworICAgIH0K
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBWb2lkOworfQor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKwogbmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkIzOjpXaWR0aCB3aWR0aCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIs
MTggQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKK2lubGluZSBXaWR0aCBjYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0
aCkKK3sKKyAgICByZXR1cm4gc3RkOjptYXgoV2lkdGgzMiwgd2lkdGgpOworfQorCitpbmxpbmUg
Ym9vbCBpc0Nhbm9uaWNhbFdpZHRoKFdpZHRoIHdpZHRoKQoreworICAgIHJldHVybiB3aWR0aCA+
PSBXaWR0aDMyOworfQorCitUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpOwor
CiBpbmxpbmUgV2lkdGggY29uc2VydmF0aXZlV2lkdGgoQmFuayBiYW5rKQogewogICAgIHJldHVy
biBiYW5rID09IEdQID8gcG9pbnRlcldpZHRoKCkgOiBXaWR0aDY0OwpAQCAtOTMsNiArMTA1LDIw
IEBAIGlubGluZSBXaWR0aCB3aWR0aEZvckJ5dGVzKHVuc2lnbmVkIGJ5dGUKICAgICB9CiB9CiAK
K2lubGluZSB1aW50NjRfdCBtYXNrKFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgp
IHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAwMDBmZmxs
dTsKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMGZmZmZs
bHU7CisgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMGZmZmZmZmZm
bGx1OworICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgcmV0dXJuIDB4ZmZmZmZmZmZmZmZmZmZm
ZmxsdTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2Ug
V1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAyMTM0
MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFpclZhbGlkYXRlLmgiCiAjaW5jbHVkZSAi
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJl
Z1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNC
bG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0Nv
bXBpbGF0aW9uLmgiCkBAIC00NCw2ICs0NSw3IEBACiAjaW5jbHVkZSAiQjNNYXRoRXh0cmFzLmgi
CiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgogI2luY2x1ZGUgIkIzTW92ZUNvbnN0YW50cy5o
IgorI2luY2x1ZGUgIkIzTmF0aXZlVHJhaXRzLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIK
ICNpbmNsdWRlICJCM1JlZHVjZVN0cmVuZ3RoLmgiCiAjaW5jbHVkZSAiQjNTbG90QmFzZVZhbHVl
LmgiCkBAIC0yOTcsNiArMjk5LDI0IEBAIHZvaWQgdGVzdExvYWQ0MigpCiAgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09IDQyKTsKIH0KIAordm9pZCB0ZXN0TG9hZEFjcTQyKCkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIGludCB4ID0gNDI7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAmeCksCisgICAgICAgICAgICAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSk7
CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAgQ0hFQ0soaW52
b2tlPGludD4oKmNvZGUpID09IDQyKTsKK30KKwogdm9pZCB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBs
KGludDMyX3Qgb2Zmc2V0NjQsIGludDMyX3Qgb2Zmc2V0MzIpCiB7CiAgICAgewpAQCAtNTc0OCw2
ICs1NzY4LDM1IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZDMyKGludCBhbW91bnQpCiAgICAgQ0hF
Q0soc2xvdCA9PSAzNyArIGFtb3VudCk7CiB9CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFj
cTMyKGludCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQgc2xvdCA9IDM3OworICAgIENvbnN0UHRy
VmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAg
ICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwg
T3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAg
ICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAp
KTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkg
eworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOworICAgIH0KKyAgICBDSEVDSyghaW52
b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQp
OworfQorCiB2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW0zMihpbnQgYW1vdW50KQogewogICAgIFBy
b2NlZHVyZSBwcm9jOwpAQCAtNTc5Miw2ICs1ODQxLDc0IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9h
ZDgoaW50IGFtb3VudCwgQjM6Ok8KICAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKIH0K
IAordm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxOChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxv
YWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQ4X3Qgc2xvdCA9IDM3OworICAgIENvbnN0UHRyVmFs
dWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBw
cm9jLCBTdG9yZTgsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgbG9hZE9wY29kZSwgT3Jp
Z2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAg
IHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsK
KworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkgewor
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOworICAgIH0KKyAgICBDSEVDSyghaW52b2tl
PGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwor
fQorCit2b2lkIHRlc3RTdG9yZVJlbEFkZEZlbmNlTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9w
Y29kZSBsb2FkT3Bjb2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50OF90IHNsb3QgPSAzNzsKKyAgICBDb25z
dFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmc2xvdCk7CisgICAgVmFsdWUqIGxvYWRlZFZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNs
b3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2Ms
IFZvaWQsIE9yaWdpbigpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojpt
YWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAor
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBqaXQuc3RvcmU4KENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKDB4YmVlZiksICZzbG90KTsKKyAgICAgICAgfSk7CisgICAgcGF0Y2hwb2ludC0+
ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3RzLmZlbmNl
ID0gdHJ1ZTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9j
LCBTdG9yZTgsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGxvYWRlZFZhbHVlLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisg
ICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQo
KSkgeworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOworICAgIH0KKyAgICBDSEVDSygh
aW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91
bnQpOworfQorCiB2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW04KGludCBhbW91bnQsIEIzOjpPcGNv
ZGUgbG9hZE9wY29kZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTU4MzYsNiArNTk1Mywz
NSBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQxNihpbnQgYW1vdW50LCBCMzo6CiAgICAgQ0hFQ0so
c2xvdCA9PSAzNyArIGFtb3VudCk7CiB9CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTE2
KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDE2X3Qg
c2xvdCA9IDM3OworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTE2LCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2Uo
NDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSkpLAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBI
ZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHBy
b2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24o
KmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwi
KTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBD
SEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1t
MTYoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQogewogICAgIFByb2NlZHVyZSBw
cm9jOwpAQCAtNTg3OCw2ICs2MDI0LDMzIEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZDY0KGludCBh
bW91bnQpCiAgICAgQ0hFQ0soc2xvdCA9PSAzNzAwMDAwMDAwMGxsICsgYW1vdW50KTsKIH0KIAor
dm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxNjQoaW50IGFtb3VudCkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGlu
dDY0X3Qgc2xvdCA9IDM3MDAwMDAwMDAwbGw7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgc2xvdFB0
ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpLAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2Uo
NDIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAg
IGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJs
ZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9
CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90
ID09IDM3MDAwMDAwMDAwbGwgKyBhbW91bnQpOworfQorCiB2b2lkIHRlc3RTdG9yZUFkZExvYWRJ
bW02NChpbnQ2NF90IGFtb3VudCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTEzNzkxLDcg
KzEzOTY0LDcgQEAgdm9pZCB0ZXN0VHJhcHBpbmdTdG9yZUVsaW1pbmF0aW9uKCkKICAgICBjb21w
aWxlQW5kUnVuPGludD4ocHJvYyk7CiAgICAgdW5zaWduZWQgc3RvcmVDb3VudCA9IDA7CiAgICAg
Zm9yIChWYWx1ZSogdmFsdWUgOiBwcm9jLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChNZW1vcnlW
YWx1ZTo6aXNTdG9yZSh2YWx1ZS0+b3Bjb2RlKCkpKQorICAgICAgICBpZiAoaXNTdG9yZSh2YWx1
ZS0+b3Bjb2RlKCkpKQogICAgICAgICAgICAgc3RvcmVDb3VudCsrOwogICAgIH0KICAgICBDSEVD
S19FUShzdG9yZUNvdW50LCAydSk7CkBAIC0xMzk5Nyw2ICsxNDE3MCw3IEBAIHZvaWQgdGVzdFg4
NkxlYUFkZEFkZCgpCiAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQpOwogICAgIAogICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7Cisg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksICgxICsgMikgKyAxMDAp
OwogICAgIGNoZWNrRGlzYXNzZW1ibHkoCiAgICAgICAgICpjb2RlLAogICAgICAgICBbJl0gKGNv
bnN0IGNoYXIqIGRpc2Fzc2VtYmx5KSAtPiBib29sIHsKQEAgLTE0MDA0LDcgKzE0MTc4LDYgQEAg
dm9pZCB0ZXN0WDg2TGVhQWRkQWRkKCkKICAgICAgICAgICAgICAgICB8fCBzdHJzdHIoZGlzYXNz
ZW1ibHksICJsZWEgMHg2NCglcnNpLCVyZGkpLCAlcmF4Iik7CiAgICAgICAgIH0sCiAgICAgICAg
ICJFeHBlY3RlZCB0byBmaW5kIHNvbWV0aGluZyBsaWtlIGxlYSAweDY0KCVyZGksJXJzaSksICVy
YXggYnV0IGRpZG4ndCEiKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAx
LCAyKSwgKDEgKyAyKSArIDEwMCk7CiB9CiAKIHZvaWQgdGVzdFg4NkxlYUFkZFNobFJpZ2h0KCkK
QEAgLTE0MDQxLDYgKzE0MjE0LDcgQEAgdm9pZCB0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlMSgp
CiAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQpOwogICAgIAogICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgQ0hFQ0tfRVEo
aW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksIDEgKyAyKTsKICAgICBjaGVja0Rpc2Fzc2Vt
Ymx5KAogICAgICAgICAqY29kZSwKICAgICAgICAgWyZdIChjb25zdCBjaGFyKiBkaXNhc3NlbWJs
eSkgLT4gYm9vbCB7CkBAIC0xNDA0OCw3ICsxNDIyMiw2IEBAIHZvaWQgdGVzdFg4NkxlYUFkZFNo
bExlZnRTY2FsZTEoKQogICAgICAgICAgICAgICAgIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgImxl
YSAoJXJzaSwlcmRpKSwgJXJheCIpOwogICAgICAgICB9LAogICAgICAgICAiRXhwZWN0ZWQgdG8g
ZmluZCBzb21ldGhpbmcgbGlrZSBsZWEgKCVyZGksJXJzaSksICVyYXggYnV0IGRpZG4ndCEiKTsK
LSAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwgMSArIDIpOwogfQog
CiB2b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGUyKCkKQEAgLTE0Mjc3LDYgKzE0NDUwLDY4
MCBAQCB2b2lkIHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXphdGlvbigpCiAgICAgQ0hFQ0soZm91bmQp
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0QXRvbWljV2Vha0NBUygpCit7
CisgICAgVHlwZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBlOworICAgIFdpZHRoIHdpZHRo
ID0gTmF0aXZlVHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3Nl
bWJseSA9IFsmXSAoQ29tcGlsYXRpb24mIGNvbXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAg
ICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29t
cGlsYXRpb24sICJsb2NrIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21w
aWxhdGlvbiwgImNtcHhjaGciKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChm
ZW5jZWQpIHsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlv
biwgImxkYXgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxh
dGlvbiwgInN0bHgiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2hl
Y2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsZHgiKTsKKyAgICAgICAgICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0eCIpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNp
Y0Jsb2NrKiByZWxvb3AgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGRv
bmUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAs
IE9yaWdpbigpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhyZWxvb3ApOworICAgICAg
ICAKKyAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PEF0b21pY1Zh
bHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lk
dGgsCisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmln
aW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3Rh
bnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyKSk7
CisgICAgICAgIHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25lLCByZWxvb3ApOworICAgICAgICAK
KyAgICAgICAgZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsK
KyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQg
dmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7
CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2
YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVl
WzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAg
fQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlbG9vcCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAg
ICAgICByb290LT5zZXRTdWNjZXNzb3JzKHJlbG9vcCk7CisgICAgICAgIAorICAgICAgICByZWxv
b3AtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigp
LAorICAgICAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0Miks
CisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBwdHIsIDAsIEhlYXBSYW5nZSg0Miks
IEhlYXBSYW5nZSgpKSk7CisgICAgICAgIHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25lLCByZWxv
b3ApOworICAgICAgICAKKyAgICAgICAgZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJv
Yyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAg
IHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29k
ZSwgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNp
Y0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWls
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRv
bWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigp
LCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0cikp
OworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHN1Y2MsIGZhaWwpOworICAgICAgICAKKyAg
ICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0
b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIp
OworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkp
OworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7
CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZh
bHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICh2YWx1ZVswXSA9PSA0MikKKyAgICAgICAgICAg
IGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwg
c3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7Cisg
ICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZv
aWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2Fz
dDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hl
Y2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAg
ICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAg
IFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAg
ICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcHRy
KSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgSW50MzIsIDApKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoZmFpbCwgc3VjYyk7
CisgICAgICAgIAorICAgICAgICBzdWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAg
ICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAg
ICAgICAgICAgIHB0cik7CisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0g
Y29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0
MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hpbGUgKHZhbHVlWzBdID09IDQy
KQorICAgICAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAg
ICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAK
KyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywg
T3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21w
aWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOwor
ICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAoIWludm9rZTxib29sPigqY29k
ZSwgdmFsdWUpKSB7IH0KKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+
KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICAKKyAg
ICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBDSEVDSyghaW52
b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
ICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsK
KyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAg
cHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAg
ICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwg
dHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7Cisg
ICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVl
WzFdID0gMTM7CisgICAgICAgIHdoaWxlIChpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSkgeyB9
CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAg
ICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgCisgICAgICAgIHZhbHVlWzBd
ID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0soaW52b2tlPGJvb2w+KCpjb2Rl
LCB2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAw
KSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNh
c3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmln
aW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisg
ICAgICAgICAgICAgICAgNDIpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBp
bGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7Cisg
ICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICghaW52b2tlPGJvb2w+KCpjb2Rl
LCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSAtIDQyKSkgeyB9CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEo
dmFsdWVbMV0sIDEzKTsKKyAgICAgICAgCisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8
VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0soIWludm9rZTxib29sPigqY29kZSwgYml0d2lzZV9jYXN0
PGludHB0cl90Pih2YWx1ZSkgLSA0MikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
ICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0QXRvbWljU3Ryb25nQ0FTKCkKK3sKKyAgICBUeXBlIHR5
cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFp
dHM8VD46OndpZHRoOworICAgIAorICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChD
b21waWxhdGlvbiYgY29tcGlsYXRpb24sIGJvb2wgZmVuY2VkKSB7CisgICAgICAgIGlmIChpc1g4
NigpKSB7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxv
Y2siKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAiY21w
eGNoZyIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGZlbmNlZCkgeworICAg
ICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGRheCIpOwor
ICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3RseCIp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbihjb21waWxhdGlvbiwgImxkeCIpOworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3Ry
dWN0aW9uKGNvbXBpbGF0aW9uLCAic3R4Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9OworICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2Mg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNo
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0
cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBl
bmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVm
KSwKKyAgICAgICAgICAgICAgICAgICAgcHRyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIHJvb3Qt
PnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7CisgICAgICAgIAorICAgICAgICBzdWNjLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdp
ZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1Y2Mt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAg
ICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAg
ICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1
ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAg
ICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVl
WzBdLCBzdGF0aWNfY2FzdDxUPigxMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEz
KTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBpbnZv
a2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRp
Y19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAg
ICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7Cisg
ICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAg
ICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFs
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+
KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywg
T3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50
Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAg
ICAgIHB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKCkpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAg
ICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhzdWNjLCBmYWlsKTsKKyAgICAgICAgCisgICAgICAg
IHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9w
Y29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAg
ICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAg
ICAgICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAg
ICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsx
XSA9IDEzOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2
YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7Cisg
ICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAx
Myk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgZmFsc2UpOworICAgIH0KKyAg
ICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5h
ZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdD
QVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50
Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisg
ICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50
Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICByb290LT5zZXRT
dWNjZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCks
IE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAg
ZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAg
CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07
CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAg
IGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwg
c3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7Cisg
ICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZv
aWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2Fz
dDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hl
Y2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdp
ZHRoLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdp
bigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQo
cHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOwor
ICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1
ZVsxXSA9IDEzOworICAgICAgICBDSEVDS19FUShpbnZva2U8VD4oKmNvZGUsIHZhbHVlKSwgNDIp
OworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGlj
X2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSks
IHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGlj
X2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAg
IGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJv
YywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCA0MikpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7Cisg
ICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVl
WzFdID0gMTM7CisgICAgICAgIENIRUNLKGludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAg
ICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0
PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKCFpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2Rl
LCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZElu
dENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpOworICAgICAg
ICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFs
dWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7Cisg
ICAgICAgIENIRUNLKGludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2
YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7Cisg
ICAgICAgIENIRUNLKCFpbnZva2U8Ym9vbD4oKmNvZGUsICZ2YWx1ZSkpOworICAgICAgICBDSEVD
S19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0QXRvbWljWGNoZyhCMzo6
T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7
CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOworICAgIAorICAgIGF1
dG8gZG9UaGVNYXRoID0gWyZdIChUJiBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7CisgICAgICAg
IFQgb2xkVmFsdWUgPSBtZW1vcnk7CisgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAg
IGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAgICAgIG1lbW9yeSArPSBvcGVyYW5kOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAg
IG1lbW9yeSAmPSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRv
bWljWGNoZ09yOgorICAgICAgICAgICAgbWVtb3J5IHw9IG9wZXJhbmQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgbWVtb3J5IC09
IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9y
OgorICAgICAgICAgICAgbWVtb3J5IF49IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICAgICAgbWVtb3J5ID0gb3BlcmFuZDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb2xkVmFsdWU7
CisgICAgfTsKKyAgICAKKyAgICBhdXRvIG9sZFZhbHVlID0gWyZdIChUIG1lbW9yeSwgVCBvcGVy
YW5kKSAtPiBUIHsKKyAgICAgICAgcmV0dXJuIGRvVGhlTWF0aChtZW1vcnksIG9wZXJhbmQpOwor
ICAgIH07CisgICAgCisgICAgYXV0byBuZXdWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3BlcmFu
ZCkgLT4gVCB7CisgICAgICAgIGRvVGhlTWF0aChtZW1vcnksIG9wZXJhbmQpOworICAgICAgICBy
ZXR1cm4gbWVtb3J5OworICAgIH07CisgICAgCisgICAgYXV0byBjaGVja015RGlzYXNzZW1ibHkg
PSBbJl0gKENvbXBpbGF0aW9uJiBjb21waWxhdGlvbiwgYm9vbCBmZW5jZWQpIHsKKyAgICAgICAg
aWYgKGlzWDg2KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlv
biwgImxvY2siKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoZmVuY2VkKSB7Cisg
ICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsZGF4Iik7
CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJzdGx4
Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3Ry
dWN0aW9uKGNvbXBpbGF0aW9uLCAibGR4Iik7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5z
dHJ1Y3Rpb24oY29tcGlsYXRpb24sICJzdHgiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH07CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIG9w
Y29kZSwgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxKSwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAg
ICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsx
XSA9IDEwMDsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIG9sZFZh
bHVlKDUsIDEpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIG5ld1ZhbHVlKDUsIDEpKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAgICAgIGNoZWNrTXlEaXNhc3Nl
bWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAg
ICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIAorICAgICAgICBhdXRvIGNvZGUg
PSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9
IDU7CisgICAgICAgIHZhbHVlWzFdID0gMTAwOworICAgICAgICBDSEVDS19FUShpbnZva2U8VD4o
KmNvZGUsIHZhbHVlKSwgb2xkVmFsdWUoNSwgNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIG5ld1ZhbHVlKDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMDApOwor
ICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAg
ICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGls
ZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1OworICAg
ICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAgICAgICAgaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0MikpOworICAgICAgICBDSEVD
S19FUSh2YWx1ZVsxXSwgMTAwKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0
cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCks
IHdpZHRoLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAg
IDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0g
PSA1OworICAgICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAgICAgICAgaW52b2tlPFQ+KCpjb2RlLCB2
YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0MikpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTAwKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5
KCpjb2RlLCBmYWxzZSk7CisgICAgfQorfQorCit2b2lkIHRlc3REZXBlbmQzMigpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBmaXJzdCA9IHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBw
dHIsIDApOworICAgIFZhbHVlKiBzZWNvbmQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAorICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBwdHIsCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBEZXBlbmQsIE9yaWdpbigpLCBmaXJzdCkpKSwKKyAgICAgICAgNCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBmaXJzdCwg
c2Vjb25kKSk7CisgICAgCisgICAgaW50MzJfdCB2YWx1ZXNbMl07CisgICAgdmFsdWVzWzBdID0g
NDI7CisgICAgdmFsdWVzWzFdID0gMHhiZWVmOworICAgIAorICAgIGF1dG8gY29kZSA9IGNvbXBp
bGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsICJlb3IiKTsKKyAgICBlbHNlIGlmIChpc1g4NigpKSB7CisgICAgICAgIGNoZWNr
RG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibWZlbmNlIik7CisgICAgICAgIGNoZWNrRG9l
c05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibG9jayIpOworICAgIH0KKyAgICBDSEVDS19FUShp
bnZva2U8aW50MzJfdD4oKmNvZGUsIHZhbHVlcyksIDQyICsgMHhiZWVmKTsKK30KKwordm9pZCB0
ZXN0RGVwZW5kNjQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExv
YWQsIEludDY0LCBPcmlnaW4oKSwgcHRyLCAwKTsKKyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QWRkLCBPcmlnaW4oKSwgcHRyLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBEZXBlbmQsIE9yaWdpbigpLCBmaXJzdCkpLAorICAgICAgICA4KTsKKyAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGZpcnN0LCBzZWNv
bmQpKTsKKyAgICAKKyAgICBpbnQ2NF90IHZhbHVlc1syXTsKKyAgICB2YWx1ZXNbMF0gPSA0MjsK
KyAgICB2YWx1ZXNbMV0gPSAweGJlZWY7CisgICAgCisgICAgYXV0byBjb2RlID0gY29tcGlsZShw
cm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigq
Y29kZSwgImVvciIpOworICAgIGVsc2UgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgY2hlY2tEb2Vz
Tm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKKyAgICAgICAgY2hlY2tEb2VzTm90
VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJsb2NrIik7CisgICAgfQorICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ2NF90PigqY29kZSwgdmFsdWVzKSwgNDIgKyAweGJlZWYpOworfQorCiB2b2lkIHRlc3RX
YXNtQm91bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpA
QCAtMTQzNzAsNiArMTUyMTcsMTMgQEAgZG91YmxlIG5lZ2F0aXZlWmVybygpCiAgICAgcmV0dXJu
IC16ZXJvKCk7CiB9CiAKKyNkZWZpbmUgUlVOX05PVyh0ZXN0KSBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgZGF0YUxvZygjdGVzdCAiLi4uXG4iKTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
dGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxv
ZygjdGVzdCAiOiBPSyFcbiIpOyAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
ICNkZWZpbmUgUlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg
ICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAg
IGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE0NDIxLDEyICsxNTI3
NSwxMSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgIHJldHVybiAhZmls
dGVyIHx8ICEhc3RyY2FzZXN0cih0ZXN0TmFtZSwgZmlsdGVyKTsKICAgICB9OwogCi0gICAgLy8g
V2UgcnVuIHRoaXMgdGVzdCBmaXJzdCBiZWNhdXNlIGl0IGZpZGRsZXMgd2l0aCBzb21lCi0gICAg
Ly8gSlNDIG9wdGlvbnMuCi0gICAgdGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVT
cGlsbGVkMigpOworICAgIFJVTl9OT1codGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1Rv
QmVTcGlsbGVkMigpKTsKIAogICAgIFJVTih0ZXN0NDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkNDIo
KSk7CisgICAgUlVOKHRlc3RMb2FkQWNxNDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1t
OU1heCgpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c09uZSgpKTsKICAgICBS
VU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3bygpKTsKQEAgLTE1MDk5LDE2ICsxNTk1Miwy
MyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3ROZWczMig1Mikp
OwogICAgIFJVTih0ZXN0TmVnUHRyKDUzKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQzMig0
NikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIoNDYpKTsKICAgICBSVU4odGVz
dFN0b3JlQWRkTG9hZEltbTMyKDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ2NCg0NjAw
KSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E2NCg0NjAwKSk7CiAgICAgUlVOKHRl
c3RTdG9yZUFkZExvYWRJbW02NCg0NjAwKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4KDQs
IExvYWQ4WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxOCg0LCBMb2FkOFopKTsK
KyAgICBSVU4odGVzdFN0b3JlUmVsQWRkRmVuY2VMb2FkQWNxOCg0LCBMb2FkOFopKTsKICAgICBS
VU4odGVzdFN0b3JlQWRkTG9hZEltbTgoNCwgTG9hZDhaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFk
ZExvYWQ4KDQsIExvYWQ4UykpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxOCg0LCBM
b2FkOFMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgoNCwgTG9hZDhTKSk7CiAgICAg
UlVOKHRlc3RTdG9yZUFkZExvYWQxNig2LCBMb2FkMTZaKSk7CisgICAgUlVOKHRlc3RTdG9yZVJl
bEFkZExvYWRBY3ExNig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0x
Nig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQxNig2LCBMb2FkMTZTKSk7
CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBMb2FkMTZTKSk7CiAgICAgUlVO
KHRlc3RTdG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFk
ZExvYWQzMkluZGV4KDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0zMkluZGV4KDQ2
KSk7CkBAIC0xNTgzMSw2ICsxNjY5MSw0MSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIp
CiAgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQyKCkpOwogICAgIFJVTih0ZXN0TG9hZEJh
c2VJbmRleFNoaWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXphdGlvbigp
KTsKKyAgICAKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50OF90PigpKTsKKyAgICBSVU4o
dGVzdEF0b21pY1dlYWtDQVM8aW50MTZfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FT
PGludDMyX3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxpbnQ2NF90PigpKTsKKyAg
ICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ4X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWlj
U3Ryb25nQ0FTPGludDE2X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDMy
X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDY0X3Q+KCkpOworICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVzdEF0
b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ0FkZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNo
ZzxpbnQzMl90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0
X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9t
aWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdB
bmQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ0FuZCkpOwor
ICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnQW5kKSk7CisgICAgUlVO
KHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9t
aWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxp
bnQzMl90PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4o
QXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNo
Z1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hnU3ViKSk7
CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGdTdWIpKTsKKyAgICBS
VU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ1N1YikpOworICAgIFJVTih0ZXN0
QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hj
aGc8aW50MTZfdD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQz
Ml90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0
b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hn
KSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGcpKTsKKyAgICBS
VU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZykpOworICAgIFJVTih0ZXN0QXRv
bWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnKSk7CisgICAgUlVOKHRlc3REZXBlbmQzMigpKTsK
KyAgICBSVU4odGVzdERlcGVuZDY0KCkpOwogCiAgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2so
MCkpOwogICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDEwMCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIs
NiArMTAyLDcgQEAgdW5zaWduZWQgQXJnOjpqc0hhc2goKSBjb25zdAogICAgIGNhc2UgUmVsQ29u
ZDoKICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgY2FzZSBEb3VibGVDb25kOgorICAgIGNhc2UgU3Rh
dHVzQ29uZDoKICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTAsNiArMTExLDkg
QEAgdW5zaWduZWQgQXJnOjpqc0hhc2goKSBjb25zdAogICAgICAgICByZXN1bHQgKz0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KTsKICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX29mZnNldCA+PiAzMik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lt
cGxlQWRkcjoKKyAgICAgICAgcmVzdWx0ICs9IG1fYmFzZS5pbnRlcm5hbFZhbHVlKCk7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQWRkcjoKICAgICAgICAgcmVzdWx0ICs9IG1fb2Zmc2V0Owog
ICAgICAgICByZXN1bHQgKz0gbV9iYXNlLmludGVybmFsVmFsdWUoKTsKQEAgLTE1MCw2ICsxNTQs
OSBAQCB2b2lkIEFyZzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIGNhc2UgQml0
SW1tNjQ6CiAgICAgICAgIG91dC5wcmludGYoIiQweCVsbHgiLCBzdGF0aWNfY2FzdDxsb25nIGxv
bmcgdW5zaWduZWQ+KG1fb2Zmc2V0KSk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFNpbXBs
ZUFkZHI6CisgICAgICAgIG91dC5wcmludCgiKCIsIGJhc2UoKSwgIikiKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgQWRkcjoKICAgICAgICAgaWYgKG9mZnNldCgpKQogICAgICAgICAgICAg
b3V0LnByaW50KG9mZnNldCgpKTsKQEAgLTE4Miw2ICsxODksOSBAQCB2b2lkIEFyZzo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgb3V0
LnByaW50KGFzRG91YmxlQ29uZGl0aW9uKCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBT
dGF0dXNDb25kOgorICAgICAgICBvdXQucHJpbnQoYXNTdGF0dXNDb25kaXRpb24oKSk7CisgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIG91dC5wcmludChwb2ludGVy
RHVtcChzcGVjaWFsKCkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjIwLDYgKzIzMCw5IEBAIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6Qml0
SW1tNjQ6CiAgICAgICAgIG91dC5wcmludCgiQml0SW1tNjQiKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQXJnOjpTaW1wbGVBZGRyOgorICAgICAgICBvdXQucHJpbnQoIlNpbXBsZUFkZHIi
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpBZGRyOgogICAgICAgICBvdXQucHJp
bnQoIkFkZHIiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQxLDYgKzI1NCw5IEBAIHZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6RG91YmxlQ29u
ZDoKICAgICAgICAgb3V0LnByaW50KCJEb3VibGVDb25kIik7CiAgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEFyZzo6U3RhdHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KCJTdGF0dXNDb25kIik7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFyZzo6U3BlY2lhbDoKICAgICAgICAgb3V0LnBy
aW50KCJTcGVjaWFsIik7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NSw2ICszMDEsOSBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkVhcmx5
RGVmOgogICAgICAgICBvdXQucHJpbnQoIkVhcmx5RGVmIik7CiAgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEFyZzo6RWFybHlaRGVmOgorICAgICAgICBvdXQucHJpbnQoIkVhcmx5WkRlZiIpOwor
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgIG91dC5wcmlu
dCgiU2NyYXRjaCIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFyZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQXJnLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQXJnLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGlj
OgogCiAgICAgICAgIC8vIFRoZXNlIGFyZSB0aGUgYWRkcmVzc2VzLiBJbnN0cnVjdGlvbnMgbWF5
IGxvYWQgZnJvbSAoVXNlKSwgc3RvcmUgdG8gKERlZiksIG9yIGV2YWx1YXRlCiAgICAgICAgIC8v
IChVc2VBZGRyKSBhZGRyZXNzZXMuCisgICAgICAgIFNpbXBsZUFkZHIsCiAgICAgICAgIEFkZHIs
CiAgICAgICAgIFN0YWNrLAogICAgICAgICBDYWxsQXJnLApAQCAtODIsNiArODMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFJlbENvbmQsCiAgICAgICAgIFJlc0NvbmQsCiAgICAgICAgIERvdWJsZUNv
bmQsCisgICAgICAgIFN0YXR1c0NvbmQsCiAgICAgICAgIFNwZWNpYWwsCiAgICAgICAgIFdpZHRo
QXJnCiAgICAgfTsKQEAgLTE1MSw2ICsxNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGFzIFVz
ZSBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yOiB0aGUgdXNlIG1heSBoYXBwZW4gYmVmb3JlIHRoZSBk
ZWYsIG9yIGl0IG1heSBoYXBwZW4gYWZ0ZXIKICAgICAgICAgLy8gaXQuCiAgICAgICAgIEVhcmx5
RGVmLAorICAgICAgICAgICAgCisgICAgICAgIEVhcmx5WkRlZiwKIAogICAgICAgICAvLyBTb21l
IGluc3RydWN0aW9ucyBuZWVkIGEgc2NyYXRjaCByZWdpc3Rlci4gV2UgbW9kZWwgdGhpcyBieSBz
YXlpbmcgdGhhdCB0aGUgdGVtcG9yYXJ5IGlzCiAgICAgICAgIC8vIGRlZmluZWQgZWFybHkgYW5k
IHVzZWQgbGF0ZS4gVGhpcyByb2xlIGltcGxpZXMgdGhhdC4KQEAgLTE4Niw2ICsxOTAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAg
ICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTIwNiw2ICsyMTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAg
Y2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5
WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIyOCw2ICsyMzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNh
c2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVm
OgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiByb2xlOwogICAg
ICAgICBjYXNlIFVzZToKICAgICAgICAgICAgIHJldHVybiBDb2xkVXNlOwpAQCAtMjUzLDYgKzI2
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgY2FzZSBT
Y3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTI3NCw2ICsyODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRl
ZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAg
ICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5NCw2ICszMDMsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgogICAgICAgICBjYXNl
IEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgY2FzZSBTY3JhdGNo
OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMxNSw2ICszMjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgog
ICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMzMwLDYgKzM0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAg
ICAgICBjYXNlIExhdGVVc2U6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2Ug
RWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRV
c2U6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTgsNiArMzcwLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAg
IGNhc2UgVXNlWkRlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQx
Niw2ICs0MjksMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYmlnSW1tKGJpdHdpc2VfY2Fz
dDxpbnRwdHJfdD4oYWRkcmVzcykpOwogICAgIH0KIAorICAgIHN0YXRpYyBBcmcgc2ltcGxlQWRk
cihBaXI6OlRtcCBwdHIpCisgICAgeworICAgICAgICBBU1NFUlQocHRyLmlzR1AoKSk7CisgICAg
ICAgIEFyZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBTaW1wbGVBZGRyOworICAg
ICAgICByZXN1bHQubV9iYXNlID0gcHRyOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KwogICAgIHN0YXRpYyBBcmcgYWRkcihBaXI6OlRtcCBiYXNlLCBpbnQzMl90IG9mZnNldCA9IDAp
CiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZS5pc0dQKCkpOwpAQCAtNTMzLDYgKzU1NSwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIEFy
ZyBzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQor
ICAgIHsKKyAgICAgICAgQXJnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFN0YXR1
c0NvbmQ7CisgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IGNvbmRpdGlvbjsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBzdGF0aWMgQXJnIHNwZWNpYWwoQWlyOjpTcGVjaWFs
KiBzcGVjaWFsKQogICAgIHsKICAgICAgICAgQXJnIHJlc3VsdDsKQEAgLTYwOCw2ICs2MzgsMTEg
QEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBpc1NpbXBsZUFkZHIoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBTaW1wbGVBZGRyOworICAgIH0K
KwogICAgIGJvb2wgaXNBZGRyKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBraW5kKCkg
PT0gQWRkcjsKQEAgLTYzMSw2ICs2NjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01lbW9yeSgp
IGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgICAgICBjYXNlIFNp
bXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgY2FzZSBTdGFjazoKICAgICAg
ICAgY2FzZSBDYWxsQXJnOgpAQCAtNjQxLDYgKzY3NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBpcyBhbiBpZGlvbWF0aWMgc3Rh
Y2sgcmVmZXJlbmNlLiBJdCBtYXkgcmV0dXJuIGZhbHNlIGZvciBzb21lIGtpbmRzIG9mCisgICAg
Ly8gc3RhY2sgcmVmZXJlbmNlcy4gVGhlIGZvbGxvd2luZyBpZGlvbXMgYXJlIHJlY29nbml6ZWQ6
CisgICAgLy8gLSB0aGUgU3RhY2sga2luZAorICAgIC8vIC0gdGhlIENhbGxBcmcga2luZAorICAg
IC8vIC0gdGhlIEFkZHIga2luZCB3aXRoIHRoZSBiYXNlIGJlaW5nIGVpdGhlciBTUCBvciBGUAor
ICAgIC8vIENhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbiBhcmUgYWxsb3dlZCB0byBleHBlY3QgdGhh
dCBpZiBpdCByZXR1cm5zIHRydWUsIHRoZW4gaXQgbXVzdCBiZSBvbmUgb2YKKyAgICAvLyB0aGVz
ZSBlYXN5LXRvLXJlY29nbml6ZSBraW5kcy4gU28sIG1ha2luZyB0aGlzIGZ1bmN0aW9uIHJlY29n
bml6ZSBtb3JlIGtpbmRzIGNvdWxkIGJyZWFrIHRoaW5ncy4KICAgICBib29sIGlzU3RhY2tNZW1v
cnkoKSBjb25zdDsKIAogICAgIGJvb2wgaXNSZWxDb25kKCkgY29uc3QKQEAgLTY1OCwxMiArNzAx
LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBEb3VibGVDb25kOwogICAg
IH0KIAorICAgIGJvb2wgaXNTdGF0dXNDb25kKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBraW5kKCkgPT0gU3RhdHVzQ29uZDsKKyAgICB9CisKICAgICBib29sIGlzQ29uZGl0aW9uKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgUmVs
Q29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6Cisg
ICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzc0LDEwICs4MjMsMTYg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlQoa2luZCgpID09IEJpZ0ltbSk7CiAgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihtX29mZnNldCkp
OwogICAgIH0KKyAgICAKKyAgICBBaXI6OlRtcCBwdHIoKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKGtpbmQoKSA9PSBTaW1wbGVBZGRyKTsKKyAgICAgICAgcmV0dXJuIG1fYmFzZTsKKyAg
ICB9CiAKICAgICBBaXI6OlRtcCBiYXNlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChr
aW5kKCkgPT0gQWRkciB8fCBraW5kKCkgPT0gSW5kZXgpOworICAgICAgICBBU1NFUlQoa2luZCgp
ID09IFNpbXBsZUFkZHIgfHwga2luZCgpID09IEFkZHIgfHwga2luZCgpID09IEluZGV4KTsKICAg
ICAgICAgcmV0dXJuIG1fYmFzZTsKICAgICB9CiAKQEAgLTg0NCw2ICs4OTksNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgQmlnSW1tOgogICAgICAgICBjYXNlIEJpdEltbToKICAgICAgICAgY2Fz
ZSBCaXRJbW02NDoKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6
CiAgICAgICAgIGNhc2UgSW5kZXg6CiAgICAgICAgIGNhc2UgU3RhY2s6CkBAIC04NTEsNiArOTA3
LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29u
ZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAg
ICAgICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtODcyLDEwICs5MjksMTIgQEAgcHVibGljOgogICAgICAgICBjYXNl
IFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25k
OgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2UgU3BlY2lhbDoKICAgICAg
ICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgY2FzZSBJbnZhbGlkOgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoK
ICAgICAgICAgY2FzZSBJbmRleDoKICAgICAgICAgY2FzZSBTdGFjazoKQEAgLTEwNDksNiArMTEw
OCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkQml0SW1tRm9ybSh2YWx1
ZSgpKTsKICAgICAgICAgY2FzZSBCaXRJbW02NDoKICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlk
Qml0SW1tNjRGb3JtKHZhbHVlKCkpOworICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBBZGRyOgogICAgICAgICBjYXNlIFN0YWNr
OgogICAgICAgICBjYXNlIENhbGxBcmc6CkBAIC0xMDU4LDYgKzExMTksNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNl
IERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVj
aWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xMDcwLDYgKzExMzIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fa2lu
ZCkgewogICAgICAgICBjYXNlIFRtcDoKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAg
ICBjYXNlIEFkZHI6CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTExMTAsNiArMTE3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVChp
c0FueVVzZShhcmdSb2xlKSB8fCBpc0FueURlZihhcmdSb2xlKSk7CiAgICAgICAgICAgICBmdW5j
dG9yKG1fYmFzZSwgYXJnUm9sZSwgYXJnQmFuaywgYXJnV2lkdGgpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgogICAgICAg
ICAgICAgZnVuY3RvcihtX2Jhc2UsIFVzZSwgR1AsIGFyZ1JvbGUgPT0gVXNlQWRkciA/IGFyZ1dp
ZHRoIDogcG9pbnRlcldpZHRoKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTQ0LDkgKzEy
MDgsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUKGlzSW1tKCkpOwogICAgICAgICBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocG9pbnRlclZhbHVlKCkpOwogICAg
IH0KLQorICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFzQWRkcmVzcygpIGNvbnN0
CiAgICAgeworICAgICAgICBpZiAoaXNTaW1wbGVBZGRyKCkpCisgICAgICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLmdwcigpKTsKICAgICAgICAgQVNTRVJUKGlz
QWRkcigpKTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5n
cHIoKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obV9vZmZzZXQpKTsKICAgICB9CkBAIC0xMTc3LDYg
KzEyNDMsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZUNvbmRpdGlvbj4obV9vZmZzZXQpOwogICAgIH0KICAgICAKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uIGFzU3RhdHVzQ29uZGl0aW9uKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChpc1N0YXR1c0NvbmQoKSk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uPihtX29mZnNldCk7CisgICAg
fQorICAgIAogICAgIC8vIFRlbGxzIHlvdSBpZiB0aGUgQXJnIGlzIGludmVydGlibGUuIE9ubHkg
Y29uZGl0aW9uIGFyZ3VtZW50cyBhcmUgaW52ZXJ0aWJsZSwgYW5kIGV2ZW4gZm9yIHRob3NlLCB0
aGVyZQogICAgIC8vIGFyZSBhIGZldyBleGNlcHRpb25zIC0gbm90YWJseSBPdmVyZmxvdyBhbmQg
U2lnbmVkLgogICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3QKQEAgLTExODQsNiArMTI1Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxD
b25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAg
ICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OmlzSW52ZXJ0aWJsZShhc1Jlc3VsdENvbmRpdGlv
bigpKTsKQEAgLTEyMDQsNiArMTI3Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBy
ZXNDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNSZXN1bHRDb25kaXRpb24oKSkpOwogICAg
ICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAgICAgICByZXR1cm4gZG91YmxlQ29uZChNYWNy
b0Fzc2VtYmxlcjo6aW52ZXJ0KGFzRG91YmxlQ29uZGl0aW9uKCkpKTsKKyAgICAgICAgY2FzZSBT
dGF0dXNDb25kOgorICAgICAgICAgICAgcmV0dXJuIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6
OmludmVydChhc1N0YXR1c0NvbmRpdGlvbigpKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIEFy
ZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxv
Y2suY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckJhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDYgKzM1LDE5IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UKIAogY29uc3QgY2hhciogY29uc3QgQmFz
aWNCbG9jazo6ZHVtcFByZWZpeCA9ICIjIjsKIAordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNz
b3JzKEZyZXF1ZW50ZWRCbG9jayB0YXJnZXQpCit7CisgICAgbV9zdWNjZXNzb3JzLnJlc2l6ZSgx
KTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0gPSB0YXJnZXQ7Cit9CisKK3ZvaWQgQmFzaWNCbG9jazo6
c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sgdGFrZW4sIEZyZXF1ZW50ZWRCbG9jayBub3RU
YWtlbikKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVzaXplKDIpOworICAgIG1fc3VjY2Vzc29yc1sw
XSA9IHRha2VuOworICAgIG1fc3VjY2Vzc29yc1sxXSA9IG5vdFRha2VuOworfQorCiBib29sIEJh
c2ljQmxvY2s6OmFkZFByZWRlY2Vzc29yKEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIHJldHVy
biBCMzo6YWRkUHJlZGVjZXNzb3IodGhpcywgYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzMsNyArMzMsMTEgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwordGVtcGxh
dGU8dHlwZW5hbWU+IGNsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDsKKworbmFtZXNwYWNl
IEFpciB7CiAKIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogY2xhc3MgQ29kZTsKQEAgLTk5LDYg
KzEwMyw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAgICAgU3VjY2Vzc29yTGlzdCYgc3VjY2Vz
c29ycygpIHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQogCisgICAgdm9pZCBzZXRTdWNjZXNzb3Jz
KEZyZXF1ZW50ZWRCbG9jayk7CisgICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9j
aywgRnJlcXVlbnRlZEJsb2NrKTsKKwogICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3NvckJsb2NrKHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBzdWNjZXNzb3IoaW5kZXgpLmJsb2NrKCk7IH0K
ICAgICBCYXNpY0Jsb2NrKiYgc3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJu
IHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQogICAgIFN1Y2Nlc3NvckNvbGxlY3Rpb248QmFz
aWNCbG9jaywgU3VjY2Vzc29yTGlzdD4gc3VjY2Vzc29yQmxvY2tzKCkKQEAgLTEzMyw2ICsxNDAs
NyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKICAgICBm
cmllbmQgY2xhc3MgQ29kZTsKICAgICBmcmllbmQgY2xhc3MgSW5zZXJ0aW9uU2V0OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgQjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNl
dDsKICAgICAKICAgICBCYXNpY0Jsb2NrKHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlv
blNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJC
bG9ja0luc2VydGlvblNldC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRpb25TZXQuaCIK
KworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJCYXNpY0Jsb2NrLmgiCisjaW5j
bHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworQmxvY2tJbnNlcnRpb25T
ZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KENvZGUgJmNvZGUpCisgICAgOiBHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQoY29kZS5tX2Jsb2NrcykKK3sKK30KKworQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9j
a0luc2VydGlvblNldCgpCit7Cit9CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIK
KworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQor
CisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJBaXJD
b2RlLmgiCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCitj
bGFzcyBJbnNlcnRpb25TZXQ7CisKK3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJh
c2ljQmxvY2s+OjpCbG9ja0luc2VydGlvbiBCbG9ja0luc2VydGlvbjsKKworY2xhc3MgQmxvY2tJ
bnNlcnRpb25TZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+
IHsKK3B1YmxpYzoKKyAgICBCbG9ja0luc2VydGlvblNldChDb2RlJik7CisgICAgfkJsb2NrSW5z
ZXJ0aW9uU2V0KCk7CisgICAgCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBldmVudHVhbGx5IGlt
cGxlbWVudCBCMzo6QmxvY2tJbnNlcnRpb25TZXQncyBzcGxpdEZvcndhcmQoKS4KK307CisKK30g
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAko
cmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1w
QXNKUy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJBaXJEdW1wQXNKUy5oIgotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQotI2luY2x1
ZGUgIkFpckNvZGUuaCIKLSNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgotCi1uYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Ci0KLW5hbWVzcGFjZSB7Ci0KLUNT
dHJpbmcgdmFyTmFtZUZvckJsb2NrQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICByZXR1
cm4gdG9DU3RyaW5nKCJiYiIsIGluZGV4KTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKEJhc2ljQmxv
Y2sqIGJsb2NrKQotewotICAgIHJldHVybiB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KGJsb2NrLT5p
bmRleCgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lRm9yU3RhY2tTbG90QXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJzbG90IiwgaW5kZXgpOwotfQotCi1D
U3RyaW5nIHZhck5hbWUoU3RhY2tTbG90KiBzbG90KQotewotICAgIHJldHVybiB2YXJOYW1lRm9y
U3RhY2tTbG90QXRJbmRleChzbG90LT5pbmRleCgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKFJl
ZyByZWcpCi17Ci0gICAgcmV0dXJuIHRvQ1N0cmluZygiUmVnLiIsIHJlZy5kZWJ1Z05hbWUoKSk7
Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5kSW5kZXgoQmFuayBiYW5rLCB1
bnNpZ25lZCBpbmRleCkKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKGJhbmsgPT0gRlAgPyAiZiIg
OiAiIiwgInRtcCIsIGluZGV4KTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lKFRtcCB0bXApCi17Ci0g
ICAgaWYgKHRtcC5pc1JlZygpKQotICAgICAgICByZXR1cm4gdmFyTmFtZSh0bXAucmVnKCkpOwot
ICAgIHJldHVybiB2YXJOYW1lRm9yVG1wV2l0aEJhbmtBbmRJbmRleChBcmcodG1wKS5iYW5rKCks
IHRtcC50bXBJbmRleCgpKTsKLX0KLQotfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLXZvaWQg
ZHVtcEFzSlMoQ29kZSYgY29kZSwgUHJpbnRTdHJlYW0mIG91dCkKLXsKLSAgICBvdXQucHJpbnRs
bigibGV0IGNvZGUgPSBuZXcgQ29kZSgpOyIpOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjb2RlLnNpemUoKTsgKytpKQotICAgICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZh
ck5hbWVGb3JCbG9ja0F0SW5kZXgoaSksICIgPSBjb2RlLmFkZEJsb2NrKCk7Iik7Ci0gICAgCi0g
ICAgb3V0LnByaW50bG4oImxldCBoYXNoOyIpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNvZGUuc3RhY2tTbG90cygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFN0YWNrU2xvdCog
c2xvdCA9IGNvZGUuc3RhY2tTbG90cygpW2ldOwotICAgICAgICBpZiAoc2xvdCkgewotICAgICAg
ICAgICAgb3V0LnByaW50bG4oImxldCAiLCB2YXJOYW1lKHNsb3QpLCAiID0gY29kZS5hZGRTdGFj
a1Nsb3QoIiwgc2xvdC0+Ynl0ZVNpemUoKSwgIiwgIiwgc2xvdC0+a2luZCgpLCAiKTsiKTsKLSAg
ICAgICAgICAgIGlmIChzbG90LT5vZmZzZXRGcm9tRlAoKSkKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbih2YXJOYW1lKHNsb3QpLCAiLnNldE9mZnNldEZyb21GUCgiLCBzbG90LT5vZmZzZXRG
cm9tRlAoKSwgIik7Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiaGFzaCA9ICIsIHZhck5h
bWUoc2xvdCksICIuaGFzaCgpOyIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oImlmIChoYXNo
ICE9ICIsIHNsb3QtPmpzSGFzaCgpLCAiKSIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oIiAg
ICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgaGFzaDogXCIgKyBoYXNoKTsiKTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBvdXQucHJpbnRsbigiY29kZS5hZGRTdGFja1Nsb3QoMSwgU3BpbGwp
OyIpOwotICAgIH0KLSAgICAKLSAgICBmb3JFYWNoQmFuaygKLSAgICAgICAgWyZdIChCYW5rIGJh
bmspIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGUubnVtVG1wcyhiYW5rKTsg
aS0tOykgewotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAg
ICAibGV0ICIsIHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZEluZGV4KGJhbmssIGkpLCAiID0gY29k
ZS5uZXdUbXAoIiwgYmFuaywgIik7Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAg
IAotICAgIG91dC5wcmludGxuKCJsZXQgaW5zdDsiKTsKLSAgICBvdXQucHJpbnRsbigibGV0IGFy
ZzsiKTsKLSAgICAKLSAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogY29kZSkgewotICAgICAg
ICBmb3IgKEZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7
Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICB2YXJOYW1lKGJsb2Nr
KSwgIi5zdWNjZXNzb3JzLnB1c2gobmV3IEZyZXF1ZW50ZWRCbG9jaygiLAotICAgICAgICAgICAg
ICAgIHZhck5hbWUoc3VjY2Vzc29yLmJsb2NrKCkpLCAiLCAiLCBzdWNjZXNzb3IuZnJlcXVlbmN5
KCksICIpKTsiKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZm9yIChCYXNpY0Jsb2Nr
KiBwcmVkZWNlc3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMoKSkKLSAgICAgICAgICAgIG91dC5w
cmludGxuKHZhck5hbWUoYmxvY2spLCAiLnByZWRlY2Vzc29ycy5wdXNoKCIsIHZhck5hbWUocHJl
ZGVjZXNzb3IpLCAiKTsiKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoSW5zdCYgaW5zdCA6ICpi
bG9jaykgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGRvIHNvbWV0aGluZyBm
b3IgZmxhZ3MuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYyNzUxCi0gICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdCA9IG5ldyBJbnN0
KCIsIGluc3Qua2luZC5vcGNvZGUsICIpOyIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
bnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xl
LCBCYW5rLCBXaWR0aCkgewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFyZy5raW5kKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkludmFsaWQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBBcmc6OlRtcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxu
KCJhcmcgPSBBcmcuY3JlYXRlVG1wKCIsIHZhck5hbWUoYXJnLnRtcCgpKSwgIik7Iik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6SW1tOgotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVJbW0oIiwgYXJnLnZhbHVlKCksICIpOyIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkJpZ0ltbToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBB
cmcuY3JlYXRlQmlnSW1tKCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkpLCAiLCAiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52YWx1ZSgpID4+IDMyKSwgIik7Iik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6Qml0SW1tOgotICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVCaXRJbW0oIiwgYXJnLnZhbHVlKCksICIp
OyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkJpdEltbTY0OgotICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImFyZyA9IEFyZy5jcmVhdGVCaXRJbW02NCgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52YWx1ZSgpKSwgIiwgIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSA+PiAzMiksICIp
OyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkFkZHI6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJn
ID0gQXJnLmNyZWF0ZUFkZHIoIiwgdmFyTmFtZShhcmcuYmFzZSgpKSwgIiwgIiwgYXJnLm9mZnNl
dCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpTdGFjazoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJhcmcgPSBBcmcuY3JlYXRlU3RhY2soIiwgdmFyTmFtZShhcmcuc3RhY2tTbG90KCkpLCAi
LCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6
OkNhbGxBcmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJn
LmNyZWF0ZUNhbGxBcmcoIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQXJnOjpJbmRleDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxu
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlSW5kZXgoIiwg
dmFyTmFtZShhcmcuYmFzZSgpKSwgIiwgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXJOYW1lKGFyZy5pbmRleCgpKSwgIiwgIiwgYXJnLnNjYWxlKCksICIsICIsIGFyZy5vZmZzZXQo
KSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6UmVsQ29uZDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlUmVsQ29uZCgi
LCBhcmcuYXNSZWxhdGlvbmFsQ29uZGl0aW9uKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OlJlc0NvbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRs
bigiYXJnID0gQXJnLmNyZWF0ZVJlc0NvbmQoIiwgYXJnLmFzUmVzdWx0Q29uZGl0aW9uKCksICIp
OyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkRvdWJsZUNvbmQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZURvdWJsZUNvbmQo
IiwgYXJnLmFzRG91YmxlQ29uZGl0aW9uKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBcmc6OlNwZWNpYWw6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigi
YXJnID0gQXJnLmNyZWF0ZVNwZWNpYWwoKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
QXJnOjpXaWR0aEFyZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcg
PSBBcmcuY3JlYXRlV2lkdGhBcmcoIiwgYXJnLndpZHRoKCksICIpOyIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmFyZ3MucHVzaChh
cmcpOyIpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAoaW5zdC5raW5kLm9wY29kZSA9PSBQYXRjaCkgewotICAgICAgICAgICAgICAgIGlmIChpbnN0
Lmhhc05vbkFyZ0VmZmVjdHMoKSkKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImlu
c3QucGF0Y2hIYXNOb25BcmdFZmZlY3RzID0gdHJ1ZTsiKTsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncyA9
IG5ldyBTZXQoKTsiKTsKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUNs
b2JiZXJlZFJlZ3MgPSBuZXcgU2V0KCk7Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5leHRyYUVh
cmx5Q2xvYmJlcmVkUmVncygpLmZvckVhY2goCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoUmVn
IHJlZykgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFF
YXJseUNsb2JiZXJlZFJlZ3MuYWRkKCIsIHZhck5hbWUocmVnKSwgIik7Iik7Ci0gICAgICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGluc3QuZXh0cmFDbG9iYmVyZWRSZWdzKCku
Zm9yRWFjaCgKLSAgICAgICAgICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MuYWRkKCIs
IHZhck5hbWUocmVnKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LnBhdGNoQXJnRGF0YSA9
IFtdOyIpOwotICAgICAgICAgICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAg
ICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImluc3QucGF0Y2hBcmdEYXRhLnB1c2goe3JvbGU6IEFyZy4iLCByb2xlLCAi
LCB0eXBlOiAiLCBiYW5rLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIHdpZHRoOiAi
LCB3aWR0aCwgIn0pOyIpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gQ0NhbGwg
fHwgaW5zdC5raW5kLm9wY29kZSA9PSBDb2xkQ0NhbGwpIHsKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbigiaW5zdC5jQ2FsbFR5cGUgPSAiLCBpbnN0Lm9yaWdpbi0+dHlwZSgpKTsKLSAgICAg
ICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5jQ2FsbEFyZ1R5cGVzID0gW107Iik7Ci0gICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGluc3Qub3JpZ2luLT5udW1DaGls
ZHJlbigpOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxs
QXJnVHlwZXMucHVzaCgiLCBpbnN0Lm9yaWdpbi0+Y2hpbGQoaSktPnR5cGUoKSwgIik7Iik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJoYXNo
ID0gaW5zdC5oYXNoKCk7Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiaWYgKGhhc2ggIT0g
IiwgaW5zdC5qc0hhc2goKSwgIikiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCIgICAgdGhy
b3cgbmV3IEVycm9yKFwiQmFkIGhhc2g6IFwiICsgaGFzaCk7Iik7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoYmxvY2spLCAiLmFwcGVuZChpbnN0KTsiKTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgot
Ci0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJEdW1wQXNKUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRHVtcEFzSlMuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewot
Ci1jbGFzcyBDb2RlOwotCi0vLyBUaGlzIGlzIHVzZWQgZm9yIGJlbmNobWFya2luZy4gVmFyaW91
cyBvcGVyYXRpb25zIG9uIEFpciBhcmUgaW50ZXJlc3RpbmcgZnJvbSBhIGJlbmNobWFya2luZwot
Ly8gc3RhbmRwb2ludC4gV2UgY2FuIHdyaXRlIHNvbWUgQWlyIHBoYXNlcyBpbiBKUyBhbmQgdGhl
biB1c2UgdGhhdCB0byBiZW5jaG1hcmsgSlMuIFRoZSBiZW5jaG1hcmsKLS8vIGlzIGNhbGxlZCBK
U0FpciwgYW5kIGl0J3MgaW4gUGVyZm9ybWFuY2VUZXN0cy9KU0Fpci4KLXZvaWQgZHVtcEFzSlMo
Q29kZSYsIFByaW50U3RyZWFtJik7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIK
LQotI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAkocmV2aXNpb24gMjEz
NDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsOCBAQCBib29sIGVsaW1pbmF0ZURl
YWRDb2RlKENvZGUmIGNvZGUpCiAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBibG9ja0luZGV4ID0gY29kZS5zaXplKCk7IGJsb2NrSW5kZXgtLTspIHsKICAg
ICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gY29kZVtibG9ja0luZGV4XTsKKyAgICAgICAg
ICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGluc3RJbmRleCA9IGJsb2NrLT5zaXplKCk7IGluc3RJbmRleC0tOykKICAg
ICAgICAgICAgICAgICBoYW5kbGVJbnN0KGJsb2NrLT5hdChpbnN0SW5kZXgpKTsKICAgICAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJ
KHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2Vu
ZXJhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkFp
ckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmgiCiAjaW5jbHVkZSAiQWlyQWxsb2Nh
dGVTdGFjay5oIgogI2luY2x1ZGUgIkFpckNvZGUuaCIKLSNpbmNsdWRlICJBaXJEdW1wQXNKUy5o
IgogI2luY2x1ZGUgIkFpckVsaW1pbmF0ZURlYWRDb2RlLmgiCiAjaW5jbHVkZSAiQWlyRml4T2J2
aW91c1NwaWxscy5oIgogI2luY2x1ZGUgIkFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oIgpA
QCAtNjIsMTcgKzYxLDE5IEBAIHZvaWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkK
IHsKICAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgiQWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlv
biIpOwogICAgIAorICAgIC8vIElmIHdlJ3JlIGRvaW5nIHN1cGVyIHZlcmJvc2UgZHVtcGluZywg
dGhlIHBoYXNlIHNjb3BlIG9mIGFueSBwaGFzZSB3aWxsIGFscmVhZHkgZG8gYSBkdW1wLgorICAg
IGlmIChzaG91bGREdW1wSVIoQWlyTW9kZSkgJiYgIXNob3VsZER1bXBJUkF0RWFjaFBoYXNlKEFp
ck1vZGUpKSB7CisgICAgICAgIGRhdGFMb2coIkluaXRpYWwgYWlyOlxuIik7CisgICAgICAgIGRh
dGFMb2coY29kZSk7CisgICAgfQorICAgIAogICAgIC8vIFdlIGRvbid0IGV4cGVjdCB0aGUgaW5j
b21pbmcgY29kZSB0byBoYXZlIHByZWRlY2Vzc29ycyBjb21wdXRlZC4KICAgICBjb2RlLnJlc2V0
UmVhY2hhYmlsaXR5KCk7CiAgICAgCiAgICAgaWYgKHNob3VsZFZhbGlkYXRlSVIoKSkKICAgICAg
ICAgdmFsaWRhdGUoY29kZSk7CiAKLSAgICAvLyBJZiB3ZSdyZSBkb2luZyBzdXBlciB2ZXJib3Nl
IGR1bXBpbmcsIHRoZSBwaGFzZSBzY29wZSBvZiBhbnkgcGhhc2Ugd2lsbCBhbHJlYWR5IGRvIGEg
ZHVtcC4KLSAgICBpZiAoc2hvdWxkRHVtcElSKEFpck1vZGUpICYmICFzaG91bGREdW1wSVJBdEVh
Y2hQaGFzZShBaXJNb2RlKSkgewotICAgICAgICBkYXRhTG9nKCJJbml0aWFsIGFpcjpcbiIpOwot
ICAgICAgICBkYXRhTG9nKGNvZGUpOwotICAgIH0KKyAgICBzaW1wbGlmeUNGRyhjb2RlKTsKIAog
ICAgIGxvd2VyTWFjcm9zKGNvZGUpOwogCkBAIC0xMDcsMjMgKzEwOCwxMSBAQCB2b2lkIHByZXBh
cmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAgLy8gZG9lcyB0aGluZ3MgbGlrZSBpZGVu
dGlmeSB3aGljaCBjYWxsZWUtc2F2ZXMgd2UncmUgdXNpbmcgYW5kIHNhdmVzIHRoZW0uCiAgICAg
aGFuZGxlQ2FsbGVlU2F2ZXMoY29kZSk7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OmR1bXBBaXJB
c0pTQmVmb3JlQWxsb2NhdGVTdGFjaygpKSB7Ci0gICAgICAgIGRhdGFMb2coIkR1bXBpbmcgQWly
IGFzIEpTIGJlZm9yZSBhbGxvY2F0ZVN0YWNrOlxuIik7Ci0gICAgICAgIGR1bXBBc0pTKGNvZGUs
IFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAgICAgIGRhdGFMb2coIkFpciBoYXNoOiAiLCBjb2RlLmpz
SGFzaCgpLCAiXG4iKTsKLSAgICB9Ci0KICAgICAvLyBUaGlzIHR1cm5zIGFsbCBTdGFjayBhbmQg
Q2FsbEFyZyBBcmdzIGludG8gQWRkciBhcmdzIHRoYXQgdXNlIHRoZSBmcmFtZSBwb2ludGVyLiBJ
dCBkb2VzCiAgICAgLy8gdGhpcyBieSBmaXJzdC1maXQgYWxsb2NhdGluZyBzdGFjayBzbG90cy4g
SXQgc2hvdWxkIGJlIHByZXR0eSBkYXJuIGNsb3NlIHRvIG9wdGltYWwsIHNvIHdlCiAgICAgLy8g
c2hvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhpcyB2ZXJ5IG11Y2guCiAgICAgYWxsb2Nh
dGVTdGFjayhjb2RlKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6ZHVtcEFpckFmdGVyQWxsb2Nh
dGVTdGFjaygpKSB7Ci0gICAgICAgIGRhdGFMb2coIkR1bXBpbmcgQWlyIGFmdGVyIGFsbG9jYXRl
U3RhY2s6XG4iKTsKLSAgICAgICAgZGF0YUxvZyhjb2RlKTsKLSAgICAgICAgZGF0YUxvZygiQWly
IGhhc2g6ICIsIGNvZGUuanNIYXNoKCksICJcbiIpOwotICAgIH0KLQogICAgIC8vIElmIHdlIGNv
YWxlc2NlZCBtb3ZlcyB0aGVuIHdlIGNhbiB1bmJyZWFrIGNyaXRpY2FsIGVkZ2VzLiBUaGlzIGlz
IHRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcwogICAgIC8vIHBoYXNlLgogICAgIHNpbXBsaWZ5Q0ZH
KGNvZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElu
bGluZXMuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJJbnN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDczIEBAIGlu
bGluZSBib29sIGlzWDg2VURpdjY0VmFsaWQoY29uc3QgSW5zdCYKICAgICByZXR1cm4gaXNYODZE
aXZIZWxwZXJWYWxpZChpbnN0KTsKIH0KIAoraW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVNW
YWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCisg
ICAgc3dpdGNoIChpbnN0LmFyZ3Muc2l6ZSgpKSB7CisgICAgY2FzZSAzOgorICAgICAgICByZXR1
cm4gaW5zdC5hcmdzWzBdID09IFRtcChYODZSZWdpc3RlcnM6OmVheCk7CisgICAgY2FzZSA1Ogor
ICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzFdID09IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbHNlIC8vIENQVShY
ODYpIHx8IENQVShYODZfNjQpCisgICAgVU5VU0VEX1BBUkFNKGluc3QpOworICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZiAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorfQorCitpbmxpbmUgYm9v
bCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisjaWYg
Q1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gaW5zdC5hcmdzWzFdID09IFRtcChY
ODZSZWdpc3RlcnM6OmVheCk7CisjZWxzZSAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAg
IFVOVVNFRF9QQVJBTShpbnN0KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYgLy8gQ1BVKFg4
NikgfHwgQ1BVKFg4Nl82NCkKK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVM4VmFs
aWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxp
ZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVMxNlZhbGlkKGNvbnN0
IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7
Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTMzJWYWxpZChjb25zdCBJbnN0JiBp
bnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitp
bmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzY0VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sK
KyAgICByZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJv
b2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVM4VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAg
ICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5l
IGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVMxNlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7
CisgICAgcmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lu
bGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzJWYWxpZChjb25zdCBJbnN0JiBpbnN0
KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQor
CitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzY0VmFsaWQoY29uc3QgSW5zdCYg
aW5zdCkKK3sKKyAgICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsK
K30KKwogfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxF
KEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9w
Y29kZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNv
ZGUub3Bjb2RlcwkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNyw2ICsxMTcsNyBAQCBBZGQzMiBV
Okc6MzIsIFVaRDpHOjMyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4
ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCiAg
ICAgeDg2OiBUbXAsIEluZGV4CiAKQEAgLTEzNSw5ICsxMzYsMTIgQEAgeDg2OiBBZGQxNiBVOkc6
MTYsIFVEOkc6MTYKIDY0OiBBZGQ2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAg
IHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4
ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisg
ICAgeDg2OiBUbXAsIEluZGV4CiAKIDY0OiBBZGQ2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAg
ICAgSW1tLCBUbXAsIFRtcApAQCAtMTY2LDkgKzE3MCwxMiBAQCB4ODY6IEFkZEZsb2F0IFU6Rjoz
MiwgVUQ6RjozMgogU3ViMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2
OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4Njog
QWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4
ODY6IFRtcCwgSW5kZXgKIAogYXJtNjQ6IFN1YjMyIFU6RzozMiwgVTpHOjMyLCBEOkc6MzIKICAg
ICBUbXAsIFRtcCwgVG1wCkBAIC0xNzYsOSArMTgzLDEyIEBAIGFybTY0OiBTdWIzMiBVOkc6MzIs
IFU6RzozMiwgRDpHOjMyCiA2NDogU3ViNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAK
ICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAg
ICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRk
cgorICAgIHg4NjogVG1wLCBJbmRleAogCiBhcm02NDogU3ViNjQgVTpHOjY0LCBVOkc6NjQsIEQ6
Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTIwNCw5ICsyMTQsMTIgQEAgeDg2OiBTdWJGbG9h
dCBVOkY6MzIsIFVEOkY6MzIKIE5lZzMyIFVaRDpHOjMyCiAgICAgVG1wCiAgICAgeDg2OiBBZGRy
CisgICAgeDg2OiBJbmRleAogCiA2NDogTmVnNjQgVUQ6Rzo2NAogICAgIFRtcAorICAgIHg4Njog
QWRkcgorICAgIHg4NjogSW5kZXgKIAogYXJtNjQ6IE5lZ2F0ZURvdWJsZSBVOkY6NjQsIEQ6Rjo2
NAogICAgIFRtcCwgVG1wCkBAIC0zMzAsOCArMzQzLDExIEBAIEFuZDMyIFU6RzozMiwgVVpEOkc6
MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgor
ICAgIHg4NjogVG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwg
VG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IEFuZDY0
IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC0zMzksNyArMzU1
LDEzIEBAIEFuZDMyIFU6RzozMiwgVVpEOkc6MzIKIAogeDg2XzY0OiBBbmQ2NCBVOkc6NjQsIFVE
Okc6NjQKICAgICBUbXAsIFRtcAotICAgIHg4NjogSW1tLCBUbXAKKyAgICBJbW0sIFRtcAorICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAogCiBBbmREb3VibGUgVTpGOjY0LCBVOkY6
NjQsIEQ6Rjo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ1OSw4ICs0ODEsMTEgQEAgT3IzMiBV
Okc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgVG1wCiAgICAgeDg2
OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKICAgICB4ODY6IEFkZHIsIFRtcAorICAg
IHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4
CiAKIDY0OiBPcjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBA
IC00NjksNiArNDk0LDEyIEBAIE9yMzIgVTpHOjMyLCBVWkQ6RzozMgogNjQ6IE9yNjQgVTpHOjY0
LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgVG1wCisgICAgeDg2OiBJbW0s
IEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4Njog
VG1wLCBJbmRleAorICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAKIFhv
cjMyIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDgwLDgg
KzUxMSwxMSBAQCBYb3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6
IEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKICAgICB4
ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisg
ICAgeDg2OiBJbW0sIEluZGV4CiAKIDY0OiBYb3I2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAg
ICAgVG1wLCBUbXAsIFRtcApAQCAtNDkwLDYgKzUyNCwxMSBAQCBYb3IzMiBVOkc6MzIsIFVaRDpH
OjMyCiA2NDogWG9yNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IFRt
cCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAorICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2
OiBJbmRleCwgVG1wCisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAg
ICB4ODY6IEltbSwgVG1wCiAKIGFybTY0OiBOb3QzMiBVOkc6MzIsIFpEOkc6MzIKQEAgLTQ5OCwx
MyArNTM3LDE1IEBAIGFybTY0OiBOb3QzMiBVOkc6MzIsIFpEOkc6MzIKIHg4NjogTm90MzIgVVpE
Okc6MzIKICAgICBUbXAKICAgICBBZGRyCisgICAgSW5kZXgKIAogYXJtNjQ6IE5vdDY0IFU6Rzo2
NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAKIAoteDg2OiBOb3Q2NCBVRDpHOjY0Cit4ODZfNjQ6IE5v
dDY0IFVEOkc6NjQKICAgICBUbXAKICAgICBBZGRyCisgICAgSW5kZXgKIAogYXJtNjQ6IEFic0Rv
dWJsZSBVOkY6NjQsIEQ6Rjo2NAogICAgIFRtcCwgVG1wCkBAIC02NjgsMjcgKzcwOSwzNzcgQEAg
TG9hZDggVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xv
YWRBY3E4IFU6Rzo4LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4
ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwogU3RvcmU4IFU6Rzo4LCBEOkc6
OAogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKICAgICB4ODY6IEltbSwgSW5kZXgKICAg
ICB4ODY6IEltbSwgQWRkcgogCitTdG9yZVJlbDggVTpHOjgsIEQ6Rzo4IC9lZmZlY3RzCisgICAg
eDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgK
KyAgICB4ODY6IEltbSwgQWRkcgorICAgIFRtcCwgU2ltcGxlQWRkcgorCiBMb2FkOFNpZ25lZEV4
dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAK
K0xvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMiAvZWZmZWN0cworICAgIHg4
NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisK
IExvYWQxNiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAK
K0xvYWRBY3ExNiBVOkc6MTYsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6IEFkZHIsIFRtcAor
ICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAorCiBMb2FkMTZTaWduZWRF
eHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAK
IAorTG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIgL2VmZmVjdHMKKyAg
ICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRt
cAorCiBTdG9yZTE2IFU6RzoxNiwgRDpHOjE2CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRk
cgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisKK1N0b3JlUmVsMTYg
VTpHOjE2LCBEOkc6MTYgL2VmZmVjdHMKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IFRt
cCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgVG1w
LCBTaW1wbGVBZGRyCisKK0xvYWRBY3EzMiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4
ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAor
CitTdG9yZVJlbDMyIFU6RzozMiwgWkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogVG1wLCBBZGRy
CisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwg
SW5kZXgKKyAgICBUbXAsIFNpbXBsZUFkZHIKKworNjQ6IExvYWRBY3E2NCBVOkc6NjQsIFpEOkc6
NjQgL2VmZmVjdHMKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAg
IFNpbXBsZUFkZHIsIFRtcAorCis2NDogU3RvcmVSZWw2NCBVOkc6NjQsIFpEOkc6NjQgL2VmZmVj
dHMKKyAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAorICAgIHg4NjogSW1t
LCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgVG1wLCBTaW1wbGVBZGRyCisKKyMgVGhl
IGZpcnN0IG9wZXJhbmQgaXMgcmF4LgorIyBGSVhNRTogVGhpcyBmb3JtdWxhdGlvbiBtZWFucyB0
aGF0IHRoZSBib29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGluIGVheCwgZXZlbiB0aG91Z2gg
YWxsIHVzZXJzCisjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0aGF0LgoreDg2OiBBdG9taWNT
dHJvbmdDQVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4LCBaRDpHOjggL2VmZmVjdHMK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRt
cCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzE2IFU6RzozMiwgVUQ6
RzoxNiwgVTpHOjMyLCBVRDpHOjE2LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBU
bXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRt
cAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzMyIFU6RzozMiwgVUQ6RzozMiwgVTpHOjMyLCBVRDpH
OjMyLCBaRDpHOjggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRt
cAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODZfNjQ6IEF0b21p
Y1N0cm9uZ0NBUzY0IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0LCBaRDpHOjggL2Vm
ZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0Nv
bmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzggVUQ6Rzo4
LCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzE2IFVEOkc6MTYsIFU6RzozMiwgVUQ6
RzoxNiAvZWZmZWN0cworICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgK
KworeDg2OiBBdG9taWNTdHJvbmdDQVMzMiBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIgL2VmZmVj
dHMKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4Nl82NDog
QXRvbWljU3Ryb25nQ0FTNjQgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAg
VG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzggVTpHOjMyLCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjggL2JyYW5jaCAvZWZmZWN0
cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCos
IFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6
MTYsIFU6RzozMiwgVUQ6RzoxNiAvYnJhbmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1w
KiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEJy
YW5jaEF0b21pY1N0cm9uZ0NBUzMyIFU6RzozMiwgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyIC9i
cmFuY2ggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0
dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4Nl82NDogQnJhbmNoQXRvbWljU3Ryb25nQ0FT
NjQgVTpHOjMyLCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQgL2JyYW5jaCAvZWZmZWN0cworICAg
IFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNBZGQ4IFU6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBJbW0s
IEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODY6IEF0b21pY0FkZDE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIEltbSwgQWRkcgor
ICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRv
bWljQWRkMzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1t
LCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNB
ZGQ2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjggVTpH
OjgsIFVEOkc6OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViMTYgVTpHOjE2LCBVRDpH
OjE2IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWIzMiBVOkc6MzIsIFVEOkc6MzIgL2Vm
ZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1N1YjY0IFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0
cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogQXRvbWljQW5kOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1t
LCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwor
eDg2OiBBdG9taWNBbmQxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIK
KyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0
b21pY0FuZDMyIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIElt
bSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWlj
QW5kNjQgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNPcjggVTpH
OjgsIFVEOkc6OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3IxNiBVOkc6MTYsIFVEOkc6
MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yMzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZl
Y3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNPcjY0IFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cwor
ICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisKK3g4NjogQXRvbWljWG9yOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNYb3IxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21p
Y1hvcjMyIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljWG9y
NjQgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRl
eAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNOZWc4IFVEOkc6
OCAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05lZzE2IFVEOkc6
MTYgL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOZWczMiBVRDpH
OjMyIC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Nl82NDogQXRvbWljTmVnNjQg
VUQ6Rzo2NCAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDgg
VUQ6Rzo4IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTm90MTYg
VUQ6RzoxNiAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDMy
IFVEOkc6MzIgL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2XzY0OiBBdG9taWNO
b3Q2NCBVRDpHOjY0IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWlj
WGNoZ0FkZDggVUQ6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogQXRvbWljWGNoZ0FkZDE2IFVEOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZ0FkZDMyIFVE
Okc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisK
K3g4Nl82NDogQXRvbWljWGNoZ0FkZDY0IFVEOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZzggVUQ6Rzo4LCBVRDpH
OjggL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
WGNoZzE2IFVEOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogQXRvbWljWGNoZzMyIFVEOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljWGNoZzY0IFVEOkc6
NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK2Fy
bTY0OiBMb2FkTGluazggVTpHOjgsIFpEOkc6OCAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRt
cAorCithcm02NDogTG9hZExpbmtBY3E4IFU6Rzo4LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTaW1w
bGVBZGRyLCBUbXAKKworIyBTdXBlciBjb25mdXNpbmcgZmFjdDogdGhpcyByZXR1cm5zIDAgdG8g
bWVhbiBzdWNjZXNzLCAxIHRvIG1lYW4gZmFpbHVyZS4KK2FybTY0OiBTdG9yZUNvbmQ4IFU6Rzo4
LCBEOkc6OCwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2Fy
bTY0OiBTdG9yZUNvbmRSZWw4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRt
cCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGluazE2IFU6RzoxNiwgWkQ6RzoxNiAv
ZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmtBY3ExNiBVOkc6
MTYsIFpEOkc6MTYgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3Jl
Q29uZDE2IFU6RzoxNiwgRDpHOjE2LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVB
ZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDE2IFU6RzoxNiwgRDpHOjE2LCBFWkQ6Rzo4
IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rMzIg
VTpHOjMyLCBaRDpHOjMyIC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBM
b2FkTGlua0FjcTMyIFU6RzozMiwgWkQ6RzozMiAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRt
cAorCithcm02NDogU3RvcmVDb25kMzIgVTpHOjMyLCBEOkc6MzIsIEVaRDpHOjggL2VmZmVjdHMK
KyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMzIgVTpHOjMy
LCBEOkc6MzIsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCith
cm02NDogTG9hZExpbms2NCBVOkc6NjQsIFpEOkc6NjQgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRy
LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCisg
ICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQ2NCBVOkc6NjQsIEQ6Rzo2NCwg
RVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9y
ZUNvbmRSZWw2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2lt
cGxlQWRkciwgVG1wCisKK2FybTY0OiBEZXBlbmQzMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAs
IFRtcAorCithcm02NDogRGVwZW5kNjQgVTpHOjY0LCBaRDpHOjY0CisgICAgVG1wLCBUbXAKIAog
Q29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBSZWxDb25kLCBU
bXAsIFRtcCwgVG1wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGlt
aXplQmxvY2tPcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xNzcsNiArMTc3LDEwIEBAIHZvaWQgb3B0aW1pemVCbG9ja09yZGVyKENv
ZGUmIGNvZGUpCiAgICAgICAgIGNhc2UgQnJhbmNoU3ViNjQ6CiAgICAgICAgIGNhc2UgQnJhbmNo
TmVnMzI6CiAgICAgICAgIGNhc2UgQnJhbmNoTmVnNjQ6CisgICAgICAgIGNhc2UgQnJhbmNoQXRv
bWljU3Ryb25nQ0FTODoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMxNjoKKyAg
ICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMjoKKyAgICAgICAgY2FzZSBCcmFuY2hB
dG9taWNTdHJvbmdDQVM2NDoKICAgICAgICAgICAgIGlmIChjb2RlLmZpbmROZXh0QmxvY2soYmxv
Y2spID09IGJsb2NrLT5zdWNjZXNzb3JCbG9jaygwKSAmJiBicmFuY2guYXJnc1swXS5pc0ludmVy
dGlibGUoKSkgewogICAgICAgICAgICAgICAgIHN0ZDo6c3dhcChibG9jay0+c3VjY2Vzc29yKDAp
LCBibG9jay0+c3VjY2Vzc29yKDEpKTsKICAgICAgICAgICAgICAgICBicmFuY2guYXJnc1swXSA9
IGJyYW5jaC5hcmdzWzBdLmludmVydGVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCShyZXZpc2lvbiAyMTM0MjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgdm9pZCBwYWRJbnRlcmZlcmVuY2UoQ29k
ZSYgY29kZSkKICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5r
LCBXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJvbGUpIHsKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNl
IEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAgICAgaGFzRWFybHlEZWYgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgQXJnOjpMYXRlVXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29k
ZSkKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVDb2xkVXNlOgogICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgog
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogY29kZS5yZWdzSW5Qcmlvcml0
eU9yZGVyKGJhbmspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXRCZWZv
cmUuZ2V0KHJlZykgJiYgIXNldEFmdGVyLmdldChyZWcpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkocmV2aXNpb24gMjEzNDI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSwxNCArNTEsNDkgQEAgY2xhc3MgQXJnCiAgICAgICAgIEBiYW5rID0g
YmFuawogICAgICAgICBAd2lkdGggPSB3aWR0aAogICAgIGVuZAotCi0gICAgZGVmIHdpZHRoQ29k
ZQorICAgIAorICAgIGRlZiBzZWxmLndpZHRoQ29kZSh3aWR0aCkKICAgICAgICAgaWYgd2lkdGgg
PT0gIlB0ciIKICAgICAgICAgICAgICJwb2ludGVyV2lkdGgoKSIKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgIldpZHRoI3t3aWR0aH0iCiAgICAgICAgIGVuZAogICAgIGVuZAorCisgICAgZGVm
IHdpZHRoQ29kZQorICAgICAgICBBcmcud2lkdGhDb2RlKHdpZHRoKQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBzZWxmLnJvbGVDb2RlKHJvbGUpCisgICAgICAgIGNhc2Ugcm9sZQorICAgICAgICB3
aGVuICJVIgorICAgICAgICAgICAgIlVzZSIKKyAgICAgICAgd2hlbiAiRCIKKyAgICAgICAgICAg
ICJEZWYiCisgICAgICAgIHdoZW4gIlpEIgorICAgICAgICAgICAgIlpEZWYiCisgICAgICAgIHdo
ZW4gIlVEIgorICAgICAgICAgICAgIlVzZURlZiIKKyAgICAgICAgd2hlbiAiVVpEIgorICAgICAg
ICAgICAgIlVzZVpEZWYiCisgICAgICAgIHdoZW4gIlVBIgorICAgICAgICAgICAgIlVzZUFkZHIi
CisgICAgICAgIHdoZW4gIlMiCisgICAgICAgICAgICAiU2NyYXRjaCIKKyAgICAgICAgd2hlbiAi
RUQiCisgICAgICAgICAgICAiRWFybHlEZWYiCisgICAgICAgIHdoZW4gIkVaRCIKKyAgICAgICAg
ICAgICJFYXJseVpEZWYiCisgICAgICAgIHdoZW4gIkxVIgorICAgICAgICAgICAgIkxhdGVVc2Ui
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVuZAorICAgIGVuZAor
ICAgIAorICAgIGRlZiByb2xlQ29kZQorICAgICAgICBBcmcucm9sZUNvZGUocm9sZSkKKyAgICBl
bmQKIGVuZAogCiBjbGFzcyBPdmVybG9hZApAQCAtMTgyLDcgKzIxNyw3IEBAIGRlZiBsZXgoc3Ry
LCBmaWxlTmFtZSkKIGVuZAogCiBkZWYgaXNSb2xlKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgo
VSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEpfChTKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEoKFUp
fChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUyl8KEVEKXwoRVpEKXwoTFUpKVxaLwogZW5kCiAK
IGRlZiBpc0dGKHRva2VuKQpAQCAtMTkwLDcgKzIyNSw3IEBAIGRlZiBpc0dGKHRva2VuKQogZW5k
CiAKIGRlZiBpc0tpbmQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJ
bW0pfChCaXRJbW0pfChCaXRJbW02NCl8KEFkZHIpfChJbmRleCl8KFJlbENvbmQpfChSZXNDb25k
KXwoRG91YmxlQ29uZCkpXFovCisgICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJbW0p
fChCaXRJbW0pfChCaXRJbW02NCl8KFNpbXBsZUFkZHIpfChBZGRyKXwoSW5kZXgpfChSZWxDb25k
KXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpfChTdGF0dXNDb25kKSlcWi8KIGVuZAogCiBkZWYgaXNB
cmNoKHRva2VuKQpAQCAtMjY0LDcgKzI5OSw3IEBAIGNsYXNzIFBhcnNlcgogCiAgICAgZGVmIGNv
bnN1bWVLaW5kCiAgICAgICAgIHJlc3VsdCA9IHRva2VuLnN0cmluZwotICAgICAgICBwYXJzZUVy
cm9yKCJFeHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02NCwgVG1wLCBB
ZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgb3IgRG91YmxlQ29uZCkiKSB1bmxlc3MgaXNL
aW5kKHJlc3VsdCkKKyAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJ
bW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgU2ltcGxlQWRkciwgQWRkciwgSW5kZXgsIFJlbENv
bmQsIFJlc0NvbmQsIERvdWJsZUNvbmQsIG9yIFN0YXR1c0NvbmQpIikgdW5sZXNzIGlzS2luZChy
ZXN1bHQpCiAgICAgICAgIGFkdmFuY2UKICAgICAgICAgcmVzdWx0CiAgICAgZW5kCkBAIC02MzQs
MjggKzY2OSw3IEBAIHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAg
ICAgIHwgYXJnLCBpbmRleCB8Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcm9s
ZSA9IG5pbAotICAgICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUKLSAgICAgICAgICAgICAgICB3
aGVuICJVIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZSIKLSAgICAgICAgICAgICAg
ICB3aGVuICJEIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIkRlZiIKLSAgICAgICAgICAg
ICAgICB3aGVuICJaRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAg
ICAgICAgICAgIHdoZW4gIlVEIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZURlZiIK
LSAgICAgICAgICAgICAgICB3aGVuICJVWkQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAi
VXNlWkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJVQSIKLSAgICAgICAgICAgICAgICAgICAg
cm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAgICAgICAgIHdoZW4gIlMiCi0gICAgICAgICAgICAg
ICAgICAgIHJvbGUgPSAiU2NyYXRjaCIKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgZW5kCi0KLSAgICAgICAgICAgICAgICBv
dXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0sIEFyZzo6I3tyb2xlfSwgI3thcmcuYmFu
a31QLCAje2FyZy53aWR0aENvZGV9KTsiCisgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5j
dG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31QLCAj
e2FyZy53aWR0aENvZGV9KTsiCiAgICAgICAgICAgICB9CiAgICAgICAgIGVuZAogICAgIH0KQEAg
LTgwNCw2ICs4MTgsOSBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAg
ICAgICB3aGVuICJCaXRJbW02NCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAo
IUFyZzo6aXNWYWxpZEJpdEltbTY0Rm9ybShhcmdzWyN7aW5kZXh9XS52YWx1ZSgpKSkiCiAgICAg
ICAgICAgICAgICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCisgICAgICAg
ICAgICAgICAgd2hlbiAiU2ltcGxlQWRkciIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRz
ICJpZiAoIWFyZ3NbI3tpbmRleH1dLnRtcCgpLmlzR1AoKSkiCisgICAgICAgICAgICAgICAgICAg
IG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hlbiAi
QWRkciIKICAgICAgICAgICAgICAgICAgICAgaWYgYXJnLnJvbGUgPT0gIlVBIgogICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoYXJnc1sje2luZGV4fV0uaXNTdGFjaygpICYm
IGFyZ3NbI3tpbmRleH1dLnN0YWNrU2xvdCgpLT5pc1NwaWxsKCkpIgpAQCAtODE5LDYgKzgzNiw3
IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgIHdoZW4gIlJl
bENvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiUmVzQ29uZCIKICAgICAgICAgICAgICAgICB3
aGVuICJEb3VibGVDb25kIgorICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByYWlzZSAiVW5leHBlY3RlZCBr
aW5kOiAje2tpbmQubmFtZX0iCiAgICAgICAgICAgICAgICAgZW5kCkBAIC0xMDk1LDcgKzExMTMs
NyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICAgICAgb3V0
cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNUcnVzdGVkSW1tMzIoKSIKICAgICAgICAgICAgICAg
ICB3aGVuICJCaWdJbW0iLCAiQml0SW1tNjQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJp
bnQgImFyZ3NbI3tpbmRleH1dLmFzVHJ1c3RlZEltbTY0KCkiCi0gICAgICAgICAgICAgICAgd2hl
biAiQWRkciIKKyAgICAgICAgICAgICAgICB3aGVuICJTaW1wbGVBZGRyIiwgIkFkZHIiCiAgICAg
ICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzQWRkcmVzcygpIgog
ICAgICAgICAgICAgICAgIHdoZW4gIkluZGV4IgogICAgICAgICAgICAgICAgICAgICBvdXRwLnBy
aW50ICJhcmdzWyN7aW5kZXh9XS5hc0Jhc2VJbmRleCgpIgpAQCAtMTEwNSw2ICsxMTIzLDggQEAg
d3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJp
bnQgImFyZ3NbI3tpbmRleH1dLmFzUmVzdWx0Q29uZGl0aW9uKCkiCiAgICAgICAgICAgICAgICAg
d2hlbiAiRG91YmxlQ29uZCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sj
e2luZGV4fV0uYXNEb3VibGVDb25kaXRpb24oKSIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0
dXNDb25kIgorICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5h
c1N0YXR1c0NvbmRpdGlvbigpIgogICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQog
CkBAIC0xMTQ4LDI3ICsxMTY4LDcgQEAgRmlsZS5vcGVuKCJKU0Fpcl9vcGNvZGUuanMiLCAidyIp
IHsKICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tvdmVybG9hZC5zaWduYXR1cmUu
bGVuZ3RofToiIGlmIG5lZWRPdmVybG9hZFN3aXRjaAogICAgICAgICAgICAgICAgIG92ZXJsb2Fk
LnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAgICAgICB8IGFyZywg
aW5kZXggfAotICAgICAgICAgICAgICAgICAgICByb2xlID0gbmlsCi0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgYXJnLnJvbGUKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVSIKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJE
IgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYiCi0gICAgICAgICAgICAgICAg
ICAgIHdoZW4gIlpEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAg
ICAgICAgICAgICAgICAgICB3aGVuICJVRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUg
PSAiVXNlRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVWkQiCi0gICAgICAgICAgICAg
ICAgICAgICAgICByb2xlID0gIlVzZVpEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlVB
IgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAgICAg
ICAgICAgICB3aGVuICJTIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3JhdGNo
IgotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlz
ZQotICAgICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJn
LiN7cm9sZX0sICN7YXJnLmJhbmt9UCwgI3thcmcud2lkdGh9KTsiCisgICAgICAgICAgICAgICAg
ICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7YXJnLnJv
bGVDb2RlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aH0pOyIKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJicmVhazsiCiAgICAgICAgICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyMTM0MjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxNyw5ICs0MTcsNiBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsK
ICAgICB2KGJvb2wsIGR1bXBNb2R1bGVMb2FkaW5nU3RhdGUsIGZhbHNlLCBOb3JtYWwsIG51bGxw
dHIpIFwKICAgICB2KGJvb2wsIGV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyLCBmYWxzZSwgTm9y
bWFsLCAiZXhwb3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUgbG9hZGVyIG9iamVjdCB0byB0aGUgZ2xv
YmFsIHNwYWNlIGZvciBkZWJ1Z2dpbmciKSBcCiAgICAgXAotICAgIHYoYm9vbCwgZHVtcEFpckFz
SlNCZWZvcmVBbGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgdihi
b29sLCBkdW1wQWlyQWZ0ZXJBbGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBc
Ci0gICAgXAogICAgIHYoYm9vbCwgdXNlU3VwZXJTYW1wbGVyLCBmYWxzZSwgTm9ybWFsLCBudWxs
cHRyKSBcCiAgICAgXAogICAgIHYoYm9vbCwgcmVwb3J0TExJbnRTdGF0cywgZmFsc2UsIENvbmZp
Z3VyYWJsZSwgIlJlcG9ydHMgTExJbnQgc3RhdGlzdGljcyIpIFwKSW5kZXg6IFdlYnNpdGVzL3dl
YmtpdC5vcmcvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC5vcmcvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMTM0MjUpCisrKyBXZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAzLTA0ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQjMgc2hvdWxkIGhhdmUgY29tcHJlaGVu
c2l2ZSBzdXBwb3J0IGZvciBhdG9taWMgb3BlcmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMzQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBEb2N1bWVudCB0aGUgbmV3IG9wY29k
ZXMhCisKKyAgICAgICAgKiBkb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1s
OgorCiAyMDE3LTAzLTAzICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG1pbm9yIHVwZGF0ZXMgb24gQ1NTIEdyaWQgTGF5b3V0
IGV4YW1wbGVzLgpJbmRleDogV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0
ZS1yZXByZXNlbnRhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC5vcmcv
ZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAkocmV2aXNpb24gMjEzNDI1
KQorKysgV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRh
dGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4LDI4IEBACiAKICAgICA8cD5F
YWNoIGJhc2ljIGJsb2NrIGNvbnRhaW5zIGEgVmVjdG9yJmx0O1ZhbHVlKiZndDsgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBibG9jay4gQ29udHJvbAogICAgICAgZmxvdyBpbnNpZGUgdGhlIGJsb2Nr
IGlzIGltcGxpY2l0IGJhc2VkIG9uIHRoZSBvcmRlciBvZiBWYWx1ZXMgaW4gdGhlIHZlY3Rvci48
L3A+CisgICAgCisgICAgPGgyPk1lbW9yeSBtb2RlbDwvaDI+CisgICAgCisgICAgPHA+QjMgdXNl
cyBhIHNlY29uZGFyeSBhZGRyZXNzIHNwYWNlIG9mIDxpPmFic3RyYWN0IGhlYXBzPC9pPiB0byBy
ZWFzb24gYWJvdXQgYWxpYXNpbmcgYW5kCisgICAgICBjb25jdXJyZW5jeS4gVGhpcyBhZGRyZXNz
IHNwYWNlIGlzIDMyLWJpdCBhbmQgd2UgcG9pbnQgYXQgaXQgdXNpbmcgdGhlIEhlYXBSYW5nZSB0
eXBlLiBJZiB5b3UKKyAgICAgIG5ldmVyIHN1cHBseSBIZWFwUmFuZ2VzIHRvIHlvdXIgbWVtb3J5
IG9wZXJhdGlvbnMgKHRoZSBkZWZhdWx0KSwgdGhleSB3aWxsIGhhdmUgWzAsIFVJTlRfTUFYXQor
ICAgICAgYXMgdGhlaXIgcmFuZ2UsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmF0aW9uIG1heSBj
b25zZXJ2YXRpdmVseSB3cml0ZSB0byBhbGwgMjxzdXA+MzI8L3N1cD4KKyAgICAgIGFic3RyYWN0
IGhlYXBzLiBUd28gbWVtb3J5IG9wZXJhdGlvbnMgYXJlIHNhaWQgdG8gYWxpYXMgaWYgdGhleSBh
Y2Nlc3MgdGhlIHNhbWUgYWJzdHJhY3QgaGVhcHMuCisgICAgICBBIHNpbXBsZSBleGFtcGxlIG9m
IHVzaW5nIEhlYXBSYW5nZXMgaXMgd2l0aCBsb2FkcyBhbmQgc3RvcmVzLCBidXQgeW91IGNhbiBh
bHNvIHN1cHBseQorICAgICAgSGVhcFJhbmdlcyBhcyBib3VuZHMgb24gdGhlIGVmZmVjdHMgb2Yg
Y2FsbHMgYW5kIHBhdGNocG9pbnRzLjwvcD4KKyAgICAKKyAgICA8cD5GZW5jZXMgYXJlIG1vZGVs
ZWQgYXMgcGhhbnRvbSBlZmZlY3RzIHRoYXQgd2UgY2FsbCA8aT5mZW5jZSByYW5nZXM8L2k+LiBG
b3IgZXhhbXBsZSwgYSBsb2FkCisgICAgICBmZW5jZSBjb3VsZCBiZSByZXByZXNlbnRlZCBhcyBh
IHBhdGNocG9pbnQgdGhhdCB3cml0ZXMgdG8gWzAsIFVJTlRfTUFYXS4gQjMgbW9kZWxzIGxvYWQg
ZmVuY2VzLAorICAgICAgc3RvcmUgZmVuY2VzLCBzdG9yZS1sb2FkIGZlbmNlcywgYWNxdWlyZSBm
ZW5jZXMsIGFuZCByZWxlYXNlIGZlbmNlcyB1c2luZyBmZW5jZSByYW5nZXMuIFRoZQorICAgICAg
YWJzZW5jZSBvZiBhIGZlbmNlIHJhbmdlIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gZmVuY2UuPC9w
PgorICAgIAorICAgIDxwPkFjcXVpcmUgZmVuY2VzIGFyZSBtb2RlbGVkIGFzIHBoYW50b20gd3Jp
dGVzIHRvIG1lbW9yeSwgd2hpbGUgcmVsZWFzZSBmZW5jZXMgYXJlIG1vZGVsZWQgYXMKKyAgICAg
IHBoYW50b20gcmVhZHMgZnJvbSBtZW1vcnkuIEJ5IGl0c2VsZiB0aGlzIGRvZXMgbm90IHBlcm1p
dCBCMyB0byBkbyBhbGwgb2YgdGhlIHJlb3JkZXJpbmdzIHRoYXQKKyAgICAgIGFjcXVpcmUvcmVs
ZWFzZSBhbGxvdy4gQjMgaXMgdGhlcmVmb3JlIGFsbG93ZWQgdG8gdHJlYXQgbG9hZHMvc3RvcmVz
IHdpdGggZmVuY2UgcmFuZ2VzIG1vcmUKKyAgICAgIHByZWNpc2VseS4gVGhlIHBoYW50b20gd3Jp
dGUgZWZmZWN0cyBvZiBhIGZlbmNlZCBsb2FkIGNhbm5vdCB3cml0ZSB0byBhbnl0aGluZyB0aGF0
IGlzIHJlYWQgb3IKKyAgICAgIHdyaXR0ZW4gYWZ0ZXIgdGhlIGZlbmNlLiBUaGUgcGhhbnRvbSBy
ZWFkIGVmZmVjdHMgb2YgYSBmZW5jZWQgc3RvcmUgY2Fubm90IHJlYWQgYW55dGhpbmcgdGhhdAor
ICAgICAgaXMgd3JpdHRlbiBhZnRlciB0aGUgZmVuY2UuPC9wPgogCiAgICAgPGgyPk9wY29kZXM8
L2gyPgogCkBAIC00MzQsMTIgKzQ1Niw1NCBAQAogICAgICAgPGRkPlN0b3JlcyB0aGUgdmFsdWUg
aW4gdGhlIGZpcnN0IGNoaWxkIGludG8gdGhlIGFkZHJlc3MgY29tcHV0ZWQgYnkgYWRkaW5nIHRo
ZQogICAgICAgICBjb21waWxlLXRpbWUgMzItYml0IHNpZ25lZCBpbnRlZ2VyIG9mZnNldCB0byB0
aGUgc2Vjb25kIGNoaWxkLiAgTWlzYWxpZ25lZCBzdG9yZXMgYXJlCiAgICAgICAgIG5vdCBwZW5h
bGl6ZWQuICBNdXN0IHVzZSB0aGUgTWVtb3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJh
cHMgZmxhZyBzZXQuPC9kZD4KKyAgICAgIAorICAgICAgPGR0PkludDMyIEF0b21pY1dlYWtDQVMo
VCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBJbnRQdHIgcHRyKTwvZHQ+CisgICAgICA8ZGQ+
UGVyZm9ybXMgYSB3ZWFrIDxhIGhyZWY9Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nv
bXBhcmUtYW5kLXN3YXAiPkNBUworICAgICAgICAgIChjb21wYXJlLWFuZC1zd2FwKTwvYT4uIFJl
dHVybnMgYSBib29sZWFuICgwIG9yIDEpIHRvIGluZGljYXRlIHRoZSByZXN1bHQgKGZhaWx1cmUg
b3IKKyAgICAgICAgc3VjY2VzcywgcmVzcGVjdGl2ZWx5KS4gTWF5IHNwdXJpb3VzbHkgZmFpbCwg
aW4gd2hpY2ggY2FzZSBpdCB3aWxsIGRvIG5vdGhpbmcgYW5kIHJldHVybgorICAgICAgICAwLiBZ
b3UgY2FuIHN1cHBseSBhIGZlbmNlIHJhbmdlIHRvIGluZGljYXRlIHRoYXQgdGhlIENBUyBpcyBm
ZW5jZWQuIEZlbmNlZCBDQVMgaGFzIGJvdGgKKyAgICAgICAgYWNxdWlyZSBhbmQgcmVsZWFzZSBm
ZW5jZXMsIGFuZCBjbGFpbXMgdG8gYm90aCByZWFkIGFuZCB3cml0ZSB0aGUgZnVsbCBmZW5jZSBy
YW5nZSBpbgorICAgICAgICBhZGRpdGlvbiB0byB3aGF0ZXZlciBwcmltYXJ5IHJhbmdlIGlzIHN1
cHBsaWVkIGZvciB0aGUgQ0FTIGl0c2VsZi4gQXRvbWljV2Vha0NBUyBvbmx5CisgICAgICAgIGhh
cyBmZW5jaW5nIGJlaGF2aW9yIGluIHRoZSBjYXNlIHRoYXQgaXQgc3VjY2VlZHMuPC9kZD4KKwor
ICAgICAgPGR0PlQgQXRvbWljU3Ryb25nQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwg
SW50UHRyIHB0cik8L2R0PgorICAgICAgPGRkPlBlcmZvcm1zIGEgc3Ryb25nIDxhIGhyZWY9Imh0
dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXBhcmUtYW5kLXN3YXAiPkNBUworICAgICAg
ICAgIChjb21wYXJlLWFuZC1zd2FwKTwvYT4uIFJldHVybnMgdGhlIG9sZCB2YWx1ZSBiZWZvcmUg
dGhlIENBUy4gVGhlIGluc3RydWN0aW9uIHNlbGVjdG9yCisgICAgICAgIGlzIHNtYXJ0IGFib3V0
IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZCwgLi4uKSwgZXhwZWN0ZWQpIHBhdHRlcm5z
LCBzbyB0aGlzIG9wY29kZQorICAgICAgICBpcyBhbHNvIHRoZSBiZXN0IHdheSB0byBkbyBhIHN0
cm9uZyBDQVMgdGhhdCByZXR1cm5zIGEgYm9vbGVhbiAtIGp1c3QgdXNlIEVxdWFsIHRvIGNvbXBh
cmUKKyAgICAgICAgdGhlIHJlc3VsdCB0byBleHBlY3RlZC4gWW91IGNhbiBzdXBwbHkgYSBmZW5j
ZSByYW5nZSB0byBpbmRpY2F0ZSB0aGF0IHRoZSBDQVMgaXMgZmVuY2VkLgorICAgICAgICBGZW5j
ZWQgQ0FTIGhhcyBib3RoIGFjcXVpcmUgYW5kIHJlbGVhc2UgZmVuY2VzLCBhbmQgY2xhaW1zIHRv
IGJvdGggcmVhZCBhbmQgd3JpdGUgdGhlIGZ1bGwKKyAgICAgICAgZmVuY2UgcmFuZ2UgaW4gYWRk
aXRpb24gdG8gd2hhdGV2ZXIgcHJpbWFyeSByYW5nZSBpcyBzdXBwbGllZCBmb3IgdGhlIENBUyBp
dHNlbGYuCisgICAgICAgIEF0b21pY1N0cm9uZ0NBUyBoYXMgdGhlIHNhbWUgZmVuY2luZyBvbiBm
YWlsdXJlIGFuZCBzdWNjZXNzLjwvZGQ+CisgICAgICAKKyAgICAgIDxkdD5UIEF0b21pY1hjaGdB
ZGQoVCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+QXRvbWljYWxseSBhZGRzIGEgdmFsdWUgdG8g
dGhlIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBJcyBhbGxvd2Vk
IHRvCisgICAgICAgIGhhdmUgYSBmZW5jZSByYW5nZSwgd2hpY2ggY2F1c2VzIGl0IHRvIGhhdmUg
YWNxdWlyZS9yZWxlYXNlIGZlbmNpbmcuPC9kZD4KKworICAgICAgPGR0PlQgQXRvbWljWGNoZ0Fu
ZChULCBJbnRQdHIpPC9kdD4KKyAgICAgIDxkZD5BdG9taWNhbGx5IGJpdHdpc2UtYW5kcyBhIHZh
bHVlIHRvIHRoZSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gSXMg
YWxsb3dlZCB0bworICAgICAgICBoYXZlIGEgZmVuY2UgcmFuZ2UsIHdoaWNoIGNhdXNlcyBpdCB0
byBoYXZlIGFjcXVpcmUvcmVsZWFzZSBmZW5jaW5nLjwvZGQ+CisKKyAgICAgIDxkdD5UIEF0b21p
Y1hjaGdPcihULCBJbnRQdHIpPC9kdD4KKyAgICAgIDxkZD5BdG9taWNhbGx5IGJpdHdpc2Utb3Jz
IGEgdmFsdWUgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJucyB0aGUgb2xkIHZhbHVl
LiBJcyBhbGxvd2VkIHRvCisgICAgICAgIGhhdmUgYSBmZW5jZSByYW5nZSwgd2hpY2ggY2F1c2Vz
IGl0IHRvIGhhdmUgYWNxdWlyZS9yZWxlYXNlIGZlbmNpbmcuPC9kZD4KKworICAgICAgPGR0PlQg
QXRvbWljWGNoZ1N1YihULCBJbnRQdHIpPC9kdD4KKyAgICAgIDxkZD5BdG9taWNhbGx5IHN1YnRy
YWN0cyBhIHZhbHVlIHRvIHRoZSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybnMgdGhlIG9sZCB2
YWx1ZS4gSXMgYWxsb3dlZCB0bworICAgICAgICBoYXZlIGEgZmVuY2UgcmFuZ2UsIHdoaWNoIGNh
dXNlcyBpdCB0byBoYXZlIGFjcXVpcmUvcmVsZWFzZSBmZW5jaW5nLjwvZGQ+CisKKyAgICAgIDxk
dD5UIEF0b21pY1hjaGdYb3IoVCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+QXRvbWljYWxseSBi
aXR3aXNlLXhvcnMgYSB2YWx1ZSB0byB0aGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5zIHRo
ZSBvbGQgdmFsdWUuIElzIGFsbG93ZWQgdG8KKyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdlLCB3
aGljaCBjYXVzZXMgaXQgdG8gaGF2ZSBhY3F1aXJlL3JlbGVhc2UgZmVuY2luZy48L2RkPgorCisg
ICAgICA8ZHQ+VCBBdG9taWNYY2hnKFQsIEludFB0cik8L2R0PgorICAgICAgPGRkPkF0b21pY2Fs
bHkgc3RvcmVzIGEgdmFsdWUgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJucyB0aGUg
b2xkIHZhbHVlLiBJcyBhbGxvd2VkIHRvCisgICAgICAgIGhhdmUgYSBmZW5jZSByYW5nZSwgd2hp
Y2ggY2F1c2VzIGl0IHRvIGhhdmUgYWNxdWlyZS9yZWxlYXNlIGZlbmNpbmcuPC9kZD4KIAogICAg
ICAgPGR0PkludFB0ciBXYXNtQWRkcmVzcyhJbnRQdHIsIHBpbm5lZEdQUik8L2R0PgogICAgICAg
PGRkPlRoaXMgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBhZGRyZXNzIG9mIGEgd2FzbSBtZW1vcnkg
bG9hZCBmcm9tIGEgcGlubmVkIGJhc2UgR1BSLgogICAgICAgICBNdXN0IHVzZSB0aGUgV2FzbUFk
ZHJlc3NWYWx1ZSBjbGFzcy48L2RkPgogCi0KICAgICAgIDxkdD5Wb2lkIEZlbmNlKCk8L2R0Pgog
ICAgICAgPGRkPkFic3RyYWN0cyBzdGFuZGFsb25lIGRhdGEgZmVuY2VzIG9uIHg4NiBhbmQgQVJN
LiBNdXN0IHVzZSB0aGUgRmVuY2VWYWx1ZSBjbGFzcywgd2hpY2ggaGFzCiAgICAgICAgIHR3byBh
ZGRpdGlvbmFsIG1lbWJlcnMgdGhhdCBjb25maWd1cmUgdGhlIHByZWNpc2UgbWVhbmluZyBvZiB0
aGUgZmVuY2U6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303405</attachid>
            <date>2017-03-04 13:29:46 -0800</date>
            <delta_ts>2017-03-04 19:52:42 -0800</delta_ts>
            <desc>fix some builds</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>388626</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyMiBA
QAorMjAxNy0wMy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzIHNob3VsZCBoYXZlIGNvbXByZWhlbnNpdmUgc3VwcG9ydCBmb3IgYXRvbWljIG9wZXJhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBhZGRzIHRoZSBmb2xsb3dpbmcgY2FwYWJpbGl0aWVzIHRvIEIzOgorICAgICAgICAK
KyAgICAgICAgLSBBdG9taWMgd2Vhay9zdHJvbmcgdW5mZW5jZWQvZmVuY2VkIGNvbXBhcmUtYW5k
LXN3YXAKKyAgICAgICAgLSBBdG9taWMgYWRkcy9zdWIvb3IvYW5kL3hvci94aGcKKyAgICAgICAg
LSBBY3F1aXJlL3JlbGVhc2UgZmVuY2luZyBvbiBsb2Fkcy9zdG9yZXMKKyAgICAgICAgLSBGZW5j
ZWxlc3MgbG9hZC1sb2FkIGRlcGVuZGVuY2llcworICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRz
IGxvd2VyaW5nIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIG9uIHg4NjoKKyAgICAgICAg
CisgICAgICAgIC0gbG9jayBjbXB4Y2hnCisgICAgICAgIC0gbG9jayB4YWRkCisgICAgICAgIC0g
bG9jayBhZGQvc3ViL29yL2FuZC94b3IveGNoZworICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRz
IGxvd2VyaW5nIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIG9uIEFSTTY0OgorICAgICAg
ICAKKyAgICAgICAgLSBsZGFyIGFuZCBmcmllbmRzCisgICAgICAgIC0gc3RsciBhbmQgZnJpZW5k
cworICAgICAgICAtIGxkeHIgYW5kIGZyaWVuZHMgKHVuZmVuY2VkIExMKQorICAgICAgICAtIHN0
eHIgYW5kIGZyaWVuZHMgKHVuZmVuZGVkIFNDKQorICAgICAgICAtIGxkYXhyIGFuZCBmcmllbmRz
IChmZW5jZWQgTEwpCisgICAgICAgIC0gc3RseHIgYW5kIGZyaWVuZHMgKGZlbmNlZCBTQykKKyAg
ICAgICAgLSBlb3IgYXMgYSBmZW5jZWxlc3MgbG9hZC1sb2FkIGRlcGVuZGVuY3kKKyAgICAgICAg
CisgICAgICAgIFRoaXMgZG9lcyBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gcGF0dGVybiBtYXRjaGlu
ZyB0byBlbnN1cmUgdGhhdCB3ZWFrL3N0cm9uZyBDQVMgYW5kIGFsbCBvZiB0aGUKKyAgICAgICAg
dmFyaWFudHMgb2YgZmVuY2VzIGFuZCBhdG9taWMgbWF0aCBvcHMgZ2V0IGxvd2VyZWQgdG8gdGhl
IGJlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UuCisgICAgICAgIEZvciBleGFtcGxl
LCB3ZSBzdXBwb3J0IHRoZSBFcXVhbChBdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWQsIC4uLiksIGV4
cGVjdGVkKSBwYXR0ZXJuIGFuZCBhIGJ1bmNoCisgICAgICAgIG9mIGl0cyBmcmllbmRzLiBZb3Ug
Y2FuIHNheSBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkLCAuLi4pLCBleHBl
Y3RlZCkpIGFuZCBpdCB3aWxsCisgICAgICAgIGdlbmVyYXRlIHRoZSBiZXN0IHBvc3NpYmxlIGJy
YW5jaCBzZXF1ZW5jZSBvbiB4ODYgYW5kIEFSTTY0LgorICAgICAgICAKKyAgICAgICAgQjMgbm93
IGtub3dzIGhvdyB0byBtb2RlbCBhbGwgb2YgdGhlIGtpbmRzIG9mIGZlbmNpbmcuIEl0IGtub3dz
IHRoYXQgYWNxIGxvYWRzIGFyZSBvcmRlcmVkIHdpdGgKKyAgICAgICAgcmVzcGVjdCB0byBlYWNo
IG90aGVyIGFuZCB3aXRoIHJlc3BlY3QgdG8gcmVsIHN0b3JlcywgY3JlYXRpbmcgc2VxdWVudGlh
bCBjb25zaXN0ZW5jeSB0aGF0CisgICAgICAgIHRyYW5zY2VuZHMganVzdCB0aGUgYWNxL3JlbCBm
ZW5jZXMgdGhlbXNlbHZlcyAoc2VlIEVmZmVjdHM6OmZlbmNlKS4gSXQga25vd3MgdGhhdCB0aGUg
cGhhbnRvbQorICAgICAgICBmZW5jZSBlZmZlY3RzIG1heSBvbmx5IHRhcmdldCBzb21lIGFic3Ry
YWN0IGhlYXBzIGJ1dCBub3Qgb3RoZXJzLCBzbyB0aGF0IGxvYWQgZWxpbWluYXRpb24gYW5kCisg
ICAgICAgIHN0b3JlIHNpbmtpbmcgY2FuIHN0aWxsIG9wZXJhdGUgYWNyb3NzIGZlbmNlcyBpZiB5
b3UganVzdCB0ZWxsIEIzIHRoYXQgdGhlIGZlbmNlIGRvZXMgbm90IGFsaWFzCisgICAgICAgIHRo
b3NlIGFjY2Vzc2VzLiBUaGlzIG1ha2VzIGl0IHN1cGVyIGVhc3kgdG8gdGVhY2ggQjMgdGhhdCBz
b21lIG9mIHlvdXIgaGVhcCBpcyB0aHJlYWQtbG9jYWwuCisgICAgICAgIEV2ZW4gYmV0dGVyLCBp
dCBsZXRzIHlvdSBleHByZXNzIGZpbmUtZ3JhaW5lZCBkZXBlbmRlbmNpZXMgd2hlcmUgdGhlIGF0
b21pY3MgdGhhdCBhZmZlY3Qgb25lCisgICAgICAgIHByb3BlcnR5IGluIHNoYXJlZCBtZW1vcnkg
ZG8gbm90IGNsb2JiZXIgbm9uLWF0b21pY3MgdGhhdCBmZmVjdCBzb21lIG90aGVyIHByb3BlcnR5
IGluIHNoYXJlZAorICAgICAgICBtZW1vcnkuCisgICAgICAgIAorICAgICAgICBPbmUgb2YgbXkg
ZmF2b3JpdGUgZmVhdHVyZXMgaXMgRGVwZW5kLCB3aGljaCBhbGxvd3MgeW91IHRvIGV4cHJlc3Mg
bG9hZC1sb2FkIGRlcGVuZGVuY2llcy4gT24KKyAgICAgICAgeDg2IGl0IGxvd2VycyB0byBub3Ro
aW5nLCB3aGlsZSBvbiBBUk02NCBpdCBsb3dlcnMgdG8gZW9yLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBhbHNvIGV4cG9zZXMgYSBjb21tb24gYXRvbWljV2Vha0NBUyBBUEkgdG8gdGhlIHg4Nl82
NC9BUk02NCBNYWNyb0Fzc2VtYmxlcnMuIFNhbWUgZm9yCisgICAgICAgIGFjcS9yZWwuIEpTQydz
IDY0LWJpdCBKSVRzIGFyZSBub3cgYSBoYXBweSBjb25jdXJyZW5jeSBwbGF5Z3JvdW5kLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBkb2Vzbid0IHlldCBleHBvc2UgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gSlMgb3Igd2FzbS4gU0FCIHN0aWxsIHVzZXMgdGhlIG5vbi1pbnRyaW5zaWMKKyAgICAgICAg
aW1wbGVtZW50YXRpb25zIG9mIHRoZSBBdG9taWNzIG9iamVjdCwgZm9yIG5vdy4KKyAgICAgICAg
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmxkYXIpOgorICAgICAgICAoSlND
OjpBUk02NEFzc2VtYmxlcjo6bGR4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjps
ZGF4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdHhyKToKKyAgICAgICAgKEpT
Qzo6QVJNNjRBc3NlbWJsZXI6OnN0bHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6
c3RseHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZXhjZXBuR2VuZXJhdGlvbklt
bU1hc2spOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZXhvdGljTG9hZCk6CisgICAg
ICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdG9yZVJlbGVhc2UpOgorICAgICAgICAoSlNDOjpB
Uk02NEFzc2VtYmxlcjo6ZXhvdGljU3RvcmUpOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRBY3E4
U2lnbmVkRXh0ZW5kVG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omxv
YWRBY3E4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVSZWw4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZEFjcTE2U2lnbmVkRXh0ZW5k
VG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRBY3ExNik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlUmVsMTYpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZVJlbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
c3RvcmVSZWw2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5r
OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxOCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZDgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmRSZWw4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbmsxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZUNvbmQxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlQ29uZFJlbDE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZExpbmszMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNx
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbms2NCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YXRvbWljU3Ryb25nQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmF0b21pY1N0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YXRvbWljU3Ryb25nQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphdG9taWNTdHJvbmdDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmF0b21pY1JlbGF4ZWRTdHJvbmdDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoQXRvbWljV2Vha0NBUzgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTNjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNSZWxheGVkV2Vh
a0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNS
ZWxheGVkV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJh
bmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpkZXBlbmQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmRlcGVuZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZExpbmspOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkTGlua0FjcSk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZFJlbCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNpZ25FeHRlbmQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpicmFuY2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphdG9taWNTdHJvbmdDQVMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojph
dG9taWNSZWxheGVkU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoQXRvbWljV2Vha0NBUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6ZXh0cmFjdFNpbXBsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDg+KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6c2lnbkV4dGVuZDwxNj4pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0OjpicmFuY2g8NjQ+KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFkZDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bmVnMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bmVnOCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMTYpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6b3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN1YjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnN1YjgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMTYpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpub3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
Ojpub3QxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpub3Q4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Ryb25nQ0FTOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdHJvbmdDQVMxNik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdHJvbmdDQVMzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBdG9taWNTdHJv
bmdDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0
b21pY1N0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmF0b21pY1dlYWtDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmF0b21pY1dlYWtDQVMxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjphdG9taWNXZWFrQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YnJhbmNoQXRvbWljV2Vha0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoQXRvbWljV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1dlYWtDQVMzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNSZWxheGVkV2Vha0NBUzgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljUmVsYXhlZFdlYWtD
QVMxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNSZWxh
eGVkV2Vha0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJy
YW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljQWRkOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBZGQxNik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBZGQzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdWI4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N1YjE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmF0b21pY0FuZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6YXRvbWljQW5kMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YXRvbWljQW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6YXRvbWljT3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OmF0b21pY09yMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YXRvbWljT3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9t
aWNYb3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hv
cjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hvcjMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY05lZzgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTmVnMTYpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTmVnMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTm90OCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNOb3QxNik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNOb3QzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnQWRkOCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnQWRkMTYpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljWGNoZ0FkZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGc4KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGcxNik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6bG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3ExNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3EzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZVJlbDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6c3RvcmVSZWwxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzdG9yZVJlbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN0b3JlRmVuY2UpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6bG9hZEZlbmNlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnBhdGNoYWJsZUp1bXBTaXplKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OnN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1cHBvcnRzQVZYKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnVwZGF0ZUVheDFFY3hGbGFncyk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp4ODZDb25kaXRpb24pOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1N0cm9uZ0NBUyk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjphZGQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0OjphbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpuZWc2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpvcjY0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN1YjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZfNjQ6OnhvcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om5vdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0b3JlNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljU3Ryb25nQ0FTNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoQXRvbWljU3Ryb25n
Q0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljV2Vha0NB
UzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaEF0b21pY1dl
YWtDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNSZWxh
eGVkV2Vha0NBUzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5j
aEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6YXRvbWljQWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YXRvbWljU3ViNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWlj
QW5kNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljT3I2NCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNYb3I2NCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNOZWc2NCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNOb3Q2NCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNYY2hnQWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljWGNoZzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OmxvYWRBY3E2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpzdG9yZVJlbDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6YWRkcV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkcV9ybSk6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkcV9pbSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6YW5kbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kbF9y
bSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kd19ybSk6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6YW5kYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5k
bF9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kd19pbSk6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6YW5kYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
YW5kcV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcV9ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcV9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6aW5jcV9tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdxX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5lZ2xfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bmVnd19tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdiX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdGxfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bm90d19tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpub3RiX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdHFfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JsX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfcm0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yd19ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfaW0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yd19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JiX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcnFfbXIpOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9ycV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX21yKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpzdWJ3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJiX3JtKToKKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjpzdWJ3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJiX2ltKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJxX21yKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpzdWJxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJxX2lt
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JsX21yKToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjp4b3JsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3Js
X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3J3X3JtKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjp4b3J3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4
b3JiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JiX2ltKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp4b3JxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX21yKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4Y2hnYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6eGNoZ3dfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnhjaGdsX3JtKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4Y2hncV9ybSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6bW92d19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92cV9p
MzJtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hnYl9ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6Y21weGNoZ3dfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6OmNtcHhjaGdsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hn
cV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZGJfcm0pOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OnhhZGR3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp4YWRkbF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZHFfcm0pOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGIzL0IzQXRv
bWljVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjp+QXRv
bWljVmFsdWUpOgorICAgICAgICAoSlNDOjpCMzo6QXRvbWljVmFsdWU6OmR1bXBNZXRhKToKKyAg
ICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjpjbG9uZUltcGwpOgorICAgICAgICAoSlNDOjpC
Mzo6QXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKToKKyAgICAgICAgKiBiMy9CM0F0b21pY1ZhbHVl
Lmg6IEFkZGVkLgorICAgICAgICAqIGIzL0IzQmFzaWNCbG9jay5oOgorICAgICAgICAqIGIzL0Iz
QmxvY2tJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJbnNlcnRpb25T
ZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6QjM6OkJsb2NrSW5zZXJ0aW9u
U2V0OjppbnNlcnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJbnNlcnRpb25T
ZXQ6Omluc2VydEJlZm9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpCbG9ja0luc2Vy
dGlvblNldDo6aW5zZXJ0QWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJ
bnNlcnRpb25TZXQ6OmV4ZWN1dGUpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzQmxvY2tJbnNl
cnRpb25TZXQuaDoKKyAgICAgICAgKiBiMy9CM0VmZmVjdHMuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6RWZmZWN0czo6aW50ZXJmZXJlcyk6CisgICAgICAgIChKU0M6OkIzOjpFZmZlY3RzOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKEpTQzo6QjM6OkVmZmVjdHM6OmR1bXApOgorICAgICAgICAqIGIz
L0IzRWZmZWN0cy5oOgorICAgICAgICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2FsbCk6CisgICAg
ICAgIChKU0M6OkIzOjpFZmZlY3RzOjptdXN0RXhlY3V0ZSk6CisgICAgICAgICogYjMvQjNFbGlt
aW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNHZW5lcmF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpnZW5lcmF0ZVRvQWlyKToKKyAgICAgICAgKiBiMy9CM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkdlbmVy
aWNCbG9ja0luc2VydGlvblNldDo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAg
KEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAg
KEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIpOgorICAgICAg
ICAoSlNDOjpCMzo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAg
KiBiMy9CM0hlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpCMzo6SGVhcFJhbmdlOjpvcGVyYXRv
cnwpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
Okluc2VydGlvblNldDo6aW5zZXJ0Q2xvbmUpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0
Lmg6CisgICAgICAgICogYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwOgorICAgICAgICAq
IGIzL0IzTG93ZXJNYWNyb3MuY3BwOgorICAgICAgICAoSlNDOjpCMzo6bG93ZXJNYWNyb3MpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAg
ICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6Okxvd2VyVG9BaXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpydW4p
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YWRkcik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlQW55T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9wKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6c3RvcmVPcGNvZGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpjcmVhdGVTdG9yZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6Om5ld0Jsb2NrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
c3BsaXRCbG9jayk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFj
a21hcCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NkRpdik6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NlVEaXYpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojpsb3dlclg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6Omxvd2VyWDg2VURpdik6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmg6
CisgICAgICAgICogYjMvQjNNZW1vcnlWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpNZW1v
cnlWYWx1ZTo6aXNMZWdhbE9mZnNldCk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6
YWNjZXNzVHlwZSk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuayk6
CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUpOgorICAgICAg
ICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6OmR1bXBNZXRhKToKKyAgICAgICAgKEpTQzo6QjM6Ok1l
bW9yeVZhbHVlOjpNZW1vcnlWYWx1ZSk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6
YWNjZXNzV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTWVtb3J5VmFsdWUuaDoKKyAg
ICAgICAgKiBiMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
QjM6Ok1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6QjM6Ok1lbW9y
eVZhbHVlOjpyZXF1aXJlc1NpbXBsZUFkZHIpOgorICAgICAgICAoSlNDOjpCMzo6TWVtb3J5VmFs
dWU6OmFjY2Vzc1dpZHRoKToKKyAgICAgICAgKiBiMy9CM01vdmVDb25zdGFudHMuY3BwOgorICAg
ICAgICAqIGIzL0IzTmF0aXZlVHJhaXRzLmg6IEFkZGVkLgorICAgICAgICAqIGIzL0IzT3Bjb2Rl
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnN0b3JlT3Bjb2RlKToKKyAgICAgICAgKFdURjo6cHJp
bnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAgKEpTQzo6QjM6
OmlzTG9hZCk6CisgICAgICAgIChKU0M6OkIzOjppc1N0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6
OmlzTG9hZFN0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6OmlzQXRvbWljKToKKyAgICAgICAgKEpT
Qzo6QjM6OmlzQXRvbWljQ0FTKToKKyAgICAgICAgKEpTQzo6QjM6OmlzQXRvbWljWGNoZyk6Cisg
ICAgICAgIChKU0M6OkIzOjppc01lbW9yeUFjY2Vzcyk6CisgICAgICAgIChKU0M6OkIzOjpzaWdu
RXh0ZW5kT3Bjb2RlKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpQcm9jZWR1cmU6OmR1bXApOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6Cisg
ICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Omhhc1F1aXJrcyk6CisgICAgICAgIChKU0M6OkIz
OjpQcm9jZWR1cmU6OnNldEhhc1F1aXJrcyk6CisgICAgICAgICogYjMvQjNQdXJlQ1NFLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OnB1cmVDU0UpOgorICAgICAgICAqIGIzL0IzUHVyZUNTRS5oOgor
ICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsaWRh
dGUuY3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFs
dWU6OnJldHVybnNCb29sKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnBl
cmZvcm1TdWJzdGl0dXRpb24pOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnR5cGVGb3IpOgor
ICAgICAgICAqIGIzL0IzVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM1dpZHRoLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OmJlc3RUeXBlKToKKyAgICAgICAgKiBiMy9CM1dpZHRoLmg6CisgICAgICAg
IChKU0M6OkIzOjpjYW5vbmljYWxXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjppc0Nhbm9uaWNh
bFdpZHRoKToKKyAgICAgICAgKEpTQzo6QjM6Om1hc2spOgorICAgICAgICAqIGIzL2Fpci9BaXJB
cmcuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmpzSGFzaCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6OkFyZzo6ZHVtcCk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpp
c0FueVVzZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNDb2xkVXNlKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpjb29sZWQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzRWFybHlVc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzTGF0ZVVzZSk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNBbnlEZWYpOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpBcmc6OmlzRWFybHlEZWYpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6Omlz
TGF0ZURlZik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNaRGVmKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjpzaW1wbGVBZGRyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjpzdGF0dXNDb25kKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1NpbXBsZUFk
ZHIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzTWVtb3J5KToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc1N0YXR1c0NvbmQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpwdHIpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmJhc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzR1ApOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRlApOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpBcmc6OmlzVmFsaWRGb3JtKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjpmb3JFYWNoVG1wRmFzdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6Zm9yRWFj
aFRtcCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6YXNBZGRyZXNzKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjphc1N0YXR1c0NvbmRpdGlvbik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OkFyZzo6aXNJbnZlcnRpYmxlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpp
bnZlcnRlZCk6CisgICAgICAgICogYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKToKKyAgICAgICAgKiBiMy9h
aXIvQWlyQmFzaWNCbG9jay5oOgorICAgICAgICAqIGIzL2Fpci9BaXJCbG9ja0luc2VydGlvblNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCbG9ja0luc2VydGlvblNldDo6
QmxvY2tJbnNlcnRpb25TZXQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCbG9ja0luc2VydGlv
blNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKiBiMy9haXIvQWlyQmxvY2tJbnNl
cnRpb25TZXQuaDogQWRkZWQuCisgICAgICAgICogYjMvYWlyL0FpckR1bXBBc0pTLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBiMy9haXIvQWlyRHVtcEFzSlMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBiMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjplbGltaW5hdGVEZWFkQ29kZSk6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24pOgorICAgICAgICAq
IGIzL2Fpci9BaXJJbnN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjppc0F0b21p
Y1N0cm9uZ0NBU1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNT
dHJvbmdDQVNWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmlzQXRvbWljU3Ryb25nQ0FT
OFZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVMxNlZhbGlk
KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVMzMlZhbGlkKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVM2NFZhbGlkKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNTdHJvbmdDQVM4VmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzE2VmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzY0VmFsaWQpOgorICAgICAgICAq
IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy9haXIvQWlyT3B0aW1pemVC
bG9ja09yZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6b3B0aW1pemVCbG9ja09yZGVy
KToKKyAgICAgICAgKiBiMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6cGFkSW50ZXJmZXJlbmNlKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6c3BpbGxFdmVyeXRoaW5nKToK
KyAgICAgICAgKiBiMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYjoKKyAgICAgICAgKiBiMy90ZXN0
YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRBY3E0Mik6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0
b3JlUmVsQWRkTG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkRmVu
Y2VMb2FkQWNxOCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdFg4NkxlYUFkZEFkZCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0WDg2TGVhQWRkU2hs
TGVmdFNjYWxlMSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljV2Vha0NBUyk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RBdG9taWNYY2hnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3REZXBlbmQzMik6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0RGVwZW5kNjQpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAg
ICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHA6CisgICAgICAgIChKU0M6OkFS
TTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlOjpmb3JtYXQpOgor
ICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmg6CisgICAgICAgIChKU0M6
OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlOjpvcE5hbWUp
OgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9yZUV4
Y2x1c2l2ZTo6cnMpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29k
ZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6cnQyKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJs
ZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6Om8wKToKKyAgICAgICAgKEpTQzo6QVJN
NjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6Om8xKToKKyAgICAg
ICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6
Om8yKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3Rv
cmVFeGNsdXNpdmU6OmxvYWRCaXQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6
QTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6b3BOdW1iZXIpOgorICAgICAgICAoSlNDOjpB
Uk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6aXNQYWlyT3Ap
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE3LTAzLTA0ICBDc2FiYSBPc3p0
cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0FSTV0gVW5yZXZpZXdlZCBi
dWlsZGZpeCBhZnRlciByMjEzMzc2LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAogCiAgICAgYXNzZW1ibGVyL0FS
TUFzc2VtYmxlci5jcHAKKyAgICBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAK
ICAgICBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuY3BwCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcApAQCAtNzYsMTIgKzc3
LDEyIEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYjMvYWlyL0FpckFsbG9jYXRl
U3RhY2suY3BwCiAgICAgYjMvYWlyL0FpckFyZy5jcHAKICAgICBiMy9haXIvQWlyQmFzaWNCbG9j
ay5jcHAKKyAgICBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCiAgICAgYjMvYWlyL0Fp
ckNDYWxsU3BlY2lhbC5jcHAKICAgICBiMy9haXIvQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcAog
ICAgIGIzL2Fpci9BaXJDb2RlLmNwcAogICAgIGIzL2Fpci9BaXJDdXN0b20uY3BwCiAgICAgYjMv
YWlyL0FpckRpc2Fzc2VtYmxlci5jcHAKLSAgICBiMy9haXIvQWlyRHVtcEFzSlMuY3BwCiAgICAg
YjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAogICAgIGIzL2Fpci9BaXJFbWl0U2h1ZmZs
ZS5jcHAKICAgICBiMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTExMCw2ICsxMTEs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGIzL2Fpci9BaXJWYWxpZGF0ZS5j
cHAKIAogICAgIGIzL0IzQXJndW1lbnRSZWdWYWx1ZS5jcHAKKyAgICBiMy9CM0F0b21pY1ZhbHVl
LmNwcAogICAgIGIzL0IzQmFuay5jcHAKICAgICBiMy9CM0Jhc2ljQmxvY2suY3BwCiAgICAgYjMv
QjNCbG9ja0luc2VydGlvblNldC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3
NCwxNCBAQAogCQkwRjJDNjNCMDFFNjBBRTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBD
MTM4MzkgLyogQjNCYW5rLmggKi87IH07CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBC
M1dpZHRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYz
QjIxRTYwQUU0NzAwQzEzODM5IC8qIEIzV2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRo
LmggKi87IH07CisJCTBGMkM2M0I2MUU2MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0Iz
MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcx
RTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmggKi87IH07CisJCTBGMkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggKi87IH07CisJCTBGMkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9j
a0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQu
Y3BwICovOyB9OworCQkwRjJDNjNCQzFFNjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRp
b25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9Owor
CQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFF
NjYwRUE1MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBG
MkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5
IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87IH07CisJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAv
KiBCM01lbW9yeVZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzYzQzMxRTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJ
bmxpbmVzLmggKi87IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNj
b3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYy
RDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5
ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDksOCArMjI1
Nyw2IEBACiAJCURDMjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIw
MDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThD
IC8qIEhlYXBDZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBC
QTkxOEMgLyogSGVhcENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsg
fTsKLQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYw
MDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRD
MThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87
IH07CiAJCURDNjA1QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZF
OTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVB
MjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
REM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5Mzcx
OCAvKiBQcm9maWxlclVJRC5jcHAgKi87IH07CkBAIC0yNzc1LDYgKzI3ODEsMTQgQEAKIAkJMEYy
QzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIz
L0IzV2lkdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBB
RTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBCM1dpZHRoLmg7IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRo
ID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEz
ODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0
aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0
aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMkM2M0MxMUU2NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCM05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRp
dmVUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQzMxRTY5RUY5
MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEIzTWVtb3J5VmFsdWVJbmxpbmVzLmg7IHBhdGggPSBiMy9CM01lbW9yeVZh
bHVlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQjE5ODMy
RDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEZWJ1Z2dlclNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyRDREREMxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXJTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJENERERjE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVy
TG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVQcm9maWxlckxvZy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Nzk1LDggKzQ4MDksNiBAQAogCQlEQzIxNDMwNjFDQTMy
RTUyMDAwQTg4NjkgLyogSUNTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJQ1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDM0QyQjA5MUQzNDMx
NjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIZWFwQ2VsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwQjFEMzQz
NzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSGVhcENlbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEQzQ1
NEI4QTFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyRHVtcEFzSlMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckR1
bXBBc0pTLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEIxRDAwRTgx
RjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEFpckR1bXBBc0pTLmg7IHBhdGggPSBiMy9haXIvQWlyRHVtcEFzSlMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVy
RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJF
dmVudC5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckV2ZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNUExQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJFdmVudC5oOyBw
YXRoID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEQzYwNUI1QjFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJVSUQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJVSUQuY3BwOyBwYXRoID0gcHJv
ZmlsZXIvUHJvZmlsZXJVSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMx
NCw2ICs1MzI2LDggQEAKIAkJCQkwRkVDODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAog
CQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICov
LAogCQkJCTBGRUM4NEI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAq
LywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8s
CisJCQkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJ
CQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNB
QzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzQmFzaWNCbG9jay5jcHAgKi8sCkBAIC01Mzc2LDYgKzUzOTAsNyBAQAogCQkJ
CTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJ
CTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVD
ODRDRjFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2
MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBG
RUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywK
IAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJ
CTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTM5OCw4
ICs1NDEzLDEwIEBACiAJCQkJNDNBQjI2QzUxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJh
cy5oICovLAogCQkJCTBGRUM4NEQ1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNw
cCAqLywKIAkJCQkwRkVDODRENjFCREFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5oICov
LAorCQkJCTBGMkM2M0MzMUU2OUVGOTIwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5o
ICovLAogCQkJCTBGMzM4RTAzMUJGMDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuY3Bw
ICovLAogCQkJCTBGMzM4RTA0MUJGMDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuaCAq
LywKKwkJCQkwRjJDNjNDMTFFNjY0QTVBMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLywK
IAkJCQkwRjMzOEUwNTFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3QuaCAqLywK
IAkJCQkwRjMzOEUwNjFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmNwcCAq
LywKIAkJCQkwRjMzOEUwNzFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmgg
Ki8sCkBAIC01NDkxLDYgKzU1MDgsOCBAQAogCQkJCTBGNjRFQUYyMUM0RUNEMDYwMDYyMUU5QiAv
KiBBaXJBcmdJbmxpbmVzLmggKi8sCiAJCQkJMEZFQzg1NEMxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
ckJhc2ljQmxvY2suY3BwICovLAogCQkJCTBGRUM4NTREMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJC
YXNpY0Jsb2NrLmggKi8sCisJCQkJMEYyQzYzQjkxRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2Nr
SW5zZXJ0aW9uU2V0LmNwcCAqLywKKwkJCQkwRjJDNjNCQTFFNjM0NDA4MDBDMTM4MzkgLyogQWly
QmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkIzODc4QjFCRkJDNDREMDBFM0FCMUUgLyog
QWlyQmxvY2tXb3JrbGlzdC5oICovLAogCQkJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBB
aXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTBGNjE4MzIxMUM0NUJGMDcwMDcyNDUw
QiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKQEAgLTU1MDIsOCArNTUyMSw2IEBACiAJ
CQkJMEYxMEYxQTIxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oICovLAogCQkJCTc5QUJC
MTdCMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuY3BwICovLAogCQkJCTc5QUJC
MTdDMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuaCAqLywKLQkJCQlEQzQ1NEI4
QTFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovLAotCQkJCURDNDU0QjhCMUQw
MEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oICovLAogCQkJCTBGNDU3MDM2MUJFNDRDOTEw
MDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgKi8sCiAJCQkJMEY0NTcwMzcxQkU0
NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi8sCiAJCQkJMEY2MTgzMjMx
QzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVtaXRTaHVmZmxlLmNwcCAqLywKQEAgLTczNTUsNiArNzM3
Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMUZFNTFC
MTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oICovLAorCQkJCTBGMkM2M0JGMUU2NjBF
QTUwMEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCAqLywKIAkJCQk4NjAxNjFE
RjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovLAogCQkJCTBG
MzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Uu
aCAqLywKIAkJCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAq
LywKQEAgLTczODMsOCArNzQwMSw4IEBACiAJCQkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8q
IE1hY3JvQXNzZW1ibGVyTUlQUy5oICovLAogCQkJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAv
KiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovLAogCQkJCUZFNjhDNjM2MUI5MERERDkwMDQy
QkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLywKLQkJCQk4NjAxNjFFMDBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQk4NjAxNjFFMTBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLywKKwkJCQk4NjAxNjFFMDBGM0E4
M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQlBN0E0QUUwNzE3OTcz
QjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwICovLAogCQkJCTg2MDE2
MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovLAogCQkJ
CTY1ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bC5oICovLApAQCAtNzk3Nyw3ICs3OTk1LDYgQEAKIAkJCQkwRkVDODU3NDFCREFDREM3MDA4MEZG
NzQgLyogQWlyQ0NhbGxTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU3NjFCREFD
REM3MDA4MEZGNzQgLyogQWlyQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMEYxQTMxQzQy
MEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREM0NTRCOEQx
RDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ1
NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNjE4MzJEMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0REUxQ0YxQzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlv
dXNTcGlsbHMuaCBpbiBIZWFkZXJzICovLApAQCAtNzk5MCw2ICs4MDA3LDcgQEAKIAkJCQkwRkVD
ODU4MDFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
Qzg1ODExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkRGNjdENzFEOURDNDQyMDAxQjk4MjUgLyogQWlyS2luZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYyQzYzQkMxRTYzNDQwQzAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyNjg0RDQzODFDMDAxNjFDMDA4MUQ2NjMgLyogQWlyTGl2ZW5l
c3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTM0QzFBMUM0QjM5QUUwMDAzQTUxMiAvKiBBaXJM
b2dSZWdpc3RlclByZXNzdXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyRjFDNDVCRjA3
MDA3MjQ1MEIgLyogQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmggaW4gSGVhZGVycyAqLywKQEAgLTgw
ODEsNiArODA5OSw3IEBACiAJCQkJNDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RG
bG9hdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVCMzFCREVEOTU3MDA4MEZGNzQg
LyogQjNDb25zdFB0clZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOERGNjFCRTkzRDU1
MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJD
NjNCODFFNjM0M0Y3MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMzM4RTBFMUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzRkNGQzFDMTYyNUJFMDAzMjNGNjcgLyogQjNEb21p
bmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCOEFEOTFDNEVEREEyMDA5NjkwNTIgLyog
QjNEdXBsaWNhdGVUYWlscy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MjcxLDYgKzgyOTAsNyBAQAog
CQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3MDREOTAzMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVy
cHJldGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwNDE3QTBCQUE4MDA2QkE1NTQgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2
M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2MjAxNzcxNDNGQ0QzRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRDNFNDAyMUI2MThBQUYwMEM4MEUxRSAvKiBERkdBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMThEM0Qw
MUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtODQwMiw2ICs4NDIyLDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4
NDQ3MjggLyogREZHT1NSRXhpdEZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4
MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9t
aWNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8q
IERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMx
NEVGOTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNF
QjE5RDBCQTdEMDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAt
ODgyMCw2ICs4ODQxLDcgQEAKIAkJCQk3OUI4MTk5MzFERDI1Q0Y1MDBEREM3MTQgLyogSlNHbG9i
YWxPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEwMDdDMTE4N0NDM0M2MDBC
Mzg4NzkgLyogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBC
M01lbW9yeVZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMkExODhGMTA1
OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTk4MzEsNiArOTg1
Myw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTg0MSw3ICs5ODY0LDYgQEAKIAkJCQkwRkVD
ODU3MzFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTc1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0Ux
QzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMDI4OSw2ICsxMDMxMSw3IEBACiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8q
IEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVC
OEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQw
RTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMzA3LDYgKzEwMzMwLDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBB
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdB
NDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9u
IDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjk0LDYgKzY5NCwyMSBAQCBwcml2YXRlOgogICAgICAg
ICBMZHJMaXRlcmFsT3BfTERSU1cgPSAyLAogICAgICAgICBMZHJMaXRlcmFsT3BfMTI4QklUID0g
MgogICAgIH07CisgICAgCisgICAgZW51bSBFeG90aWNMb2FkRmVuY2UgeworICAgICAgICBFeG90
aWNMb2FkRmVuY2VfTm9uZSwKKyAgICAgICAgRXhvdGljTG9hZEZlbmNlX0FjcXVpcmUKKyAgICB9
OworICAgIAorICAgIGVudW0gRXhvdGljTG9hZEF0b21pYyB7CisgICAgICAgIEV4b3RpY0xvYWRB
dG9taWNfTGluaywKKyAgICAgICAgRXhvdGljTG9hZEF0b21pY19Ob25lCisgICAgfTsKKworICAg
IGVudW0gRXhvdGljU3RvcmVGZW5jZSB7CisgICAgICAgIEV4b3RpY1N0b3JlRmVuY2VfTm9uZSwK
KyAgICAgICAgRXhvdGljU3RvcmVGZW5jZV9SZWxlYXNlLAorICAgIH07CiAKICAgICBzdGF0aWMg
dW5zaWduZWQgbWVtUGFpck9mZnNldFNoaWZ0KGJvb2wgViwgTWVtUGFpck9wU2l6ZSBzaXplKQog
ICAgIHsKQEAgLTE1MzEsNiArMTU0Niw0OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbnNu
KDB4ZDUwMzNhYmYpOwogICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+Cisg
ICAgdm9pZCBsZGFyKFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAg
ICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUs
IEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlLCBFeG90aWNMb2FkQXRvbWljX05vbmUsIGRzdCwgc3Jj
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgbGR4cihS
ZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzcmMpCisgICAgeworICAgICAgICBDSEVDS19EQVRB
U0laRSgpOworICAgICAgICBpbnNuKGV4b3RpY0xvYWQoTUVNT1BTSVpFLCBFeG90aWNMb2FkRmVu
Y2VfTm9uZSwgRXhvdGljTG9hZEF0b21pY19MaW5rLCBkc3QsIHNyYykpOworICAgIH0KKworICAg
IHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxkYXhyKFJlZ2lzdGVySUQgZHN0LCBS
ZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAg
IGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUsIEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlLCBFeG90
aWNMb2FkQXRvbWljX0xpbmssIGRzdCwgc3JjKSk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIHN0eHIoUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7
CisgICAgICAgIGluc24oZXhvdGljU3RvcmUoTUVNT1BTSVpFLCBFeG90aWNTdG9yZUZlbmNlX05v
bmUsIHJlc3VsdCwgc3JjLCBkc3QpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNp
emU+CisgICAgdm9pZCBzdGxyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oc3RvcmVSZWxlYXNlKE1F
TU9QU0laRSwgc3JjLCBkc3QpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+
CisgICAgdm9pZCBzdGx4cihSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5z
bihleG90aWNTdG9yZShNRU1PUFNJWkUsIEV4b3RpY1N0b3JlRmVuY2VfUmVsZWFzZSwgcmVzdWx0
LCBzcmMsIGRzdCkpOworICAgIH0KIAogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgb3JuKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lz
dGVySUQgcm0pCkBAIC0zNjAxLDcgKzM2NTgsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3Qg
aW50IG9wNCA9IDA7CiAgICAgICAgIHJldHVybiAoMHhkNjAwMDAwMCB8IG9wYyA8PCAyMSB8IG9w
MiA8PCAxNiB8IG9wMyA8PCAxMCB8IHhPclpyKHJuKSA8PCA1IHwgb3A0KTsKICAgICB9Ci0KKyAg
ICAKKyAgICBzdGF0aWMgaW50IGV4b3RpY0xvYWQoTWVtT3BTaXplIHNpemUsIEV4b3RpY0xvYWRG
ZW5jZSBmZW5jZSwgRXhvdGljTG9hZEF0b21pYyBhdG9taWMsIFJlZ2lzdGVySUQgZHN0LCBSZWdp
c3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIHJldHVybiAweDA4NWY3YzAwIHwgc2l6ZSA8PCAz
MCB8IGZlbmNlIDw8IDE1IHwgYXRvbWljIDw8IDIzIHwgc3JjIDw8IDUgfCBkc3Q7CisgICAgfQor
ICAgIAorICAgIHN0YXRpYyBpbnQgc3RvcmVSZWxlYXNlKE1lbU9wU2l6ZSBzaXplLCBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICByZXR1cm4gMHgwODlmZmMw
MCB8IHNpemUgPDwgMzAgfCBkc3QgPDwgNSB8IHNyYzsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IGludCBleG90aWNTdG9yZShNZW1PcFNpemUgc2l6ZSwgRXhvdGljU3RvcmVGZW5jZSBmZW5jZSwg
UmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIHJldHVybiAweDA4MDA3YzAwIHwgc2l6ZSA8PCAzMCB8IHJlc3VsdCA8PCAxNiB8
IGZlbmNlIDw8IDE1IHwgZHN0IDw8IDUgfCBzcmM7CisgICAgfQorICAgIAogICAgIC8vIFdvcmth
cm91bmQgZm9yIENvcnRleC1BNTMgZXJyYXR1bSAoODM1NzY5KS4gRW1pdCBhbiBleHRyYSBub3Ag
aWYgdGhlCiAgICAgLy8gbGFzdCBpbnN0cnVjdGlvbiBpbiB0aGUgYnVmZmVyIGlzIGEgbG9hZCwg
c3RvcmUgb3IgcHJlZmV0Y2guIE5lZWRlZAogICAgIC8vIGJlZm9yZSA2NC1iaXQgbXVsdGlwbHkt
YWNjdW11bGF0ZSBpbnN0cnVjdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIiAvLyBIYXZlIHRvIGJyZWFrIHdpdGggc3R5bGUg
YmVjYXVzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggaXMgYSBzaGFkeSBoZWFkZXIuCisKKyNp
ZiBFTkFCTEUoQVNTRU1CTEVSKQorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN0YXR1c0Nv
bmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICBjYXNl
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdWNjZXNzOgorICAgICAgICBvdXQucHJpbnQo
IlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlckJhc2U6OkZhaWx1cmU6CisgICAgICAgIG91dC5wcmludCgiRmFpbHVyZSIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTQtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1JhbmRvbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDggKzUxLDI4IEBAIG5h
bWVzcGFjZSBERkcgewogc3RydWN0IE9TUkV4aXQ7CiB9CiAKK2NsYXNzIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXR1c0NvbmRpdGlvbiB7CisgICAg
ICAgIFN1Y2Nlc3MsCisgICAgICAgIEZhaWx1cmUKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBT
dGF0dXNDb25kaXRpb24gaW52ZXJ0KFN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisgICAgewor
ICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbikgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAg
ICAgICAgICByZXR1cm4gRmFpbHVyZTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAg
ICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgfQorfTsKKwogdGVtcGxh
dGUgPGNsYXNzIEFzc2VtYmxlclR5cGUsIGNsYXNzIE1hY3JvQXNzZW1ibGVyVHlwZT4KLWNsYXNz
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgeworY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1ibGVyVHlw
ZT4gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlclR5cGU7CiAgICAgdHlwZWRlZiBBc3NlbWJsZXJUeXBl
IEFzc2VtYmxlclR5cGVfVDsKQEAgLTExMDgsMyArMTEyOSwxNiBAQCBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCituYW1lc3BhY2Ug
V1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdGF0dXNDb25kaXRp
b24pOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiw2ICsx
MzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMyOyAvLyBU
aGlzIGlzIHN1cGVyIHVzZWZ1bCBmb3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8vIFV0aWxp
dGllcyB1c2VkIGJ5IHRoZSBERkcgSklULgorICAgIHVzaW5nIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXJCYXNlOjppbnZlcnQ7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQ7CiAg
ICAgCiAgICAgc3RhdGljIERvdWJsZUNvbmRpdGlvbiBpbnZlcnQoRG91YmxlQ29uZGl0aW9uIGNv
bmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzNzUsNyArMzM3NSwyMjkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
ZG1iSVNIKCk7CiAgICAgfQotCisgICAgCisgICAgdm9pZCBsb2FkQWNxOFNpZ25lZEV4dGVuZFRv
MzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxkYXI8OD4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVz
cykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkQWNxOFNpZ25lZEV4dGVu
ZFRvMzIoYWRkcmVzcywgZGVzdCk7CisgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMigweGZmKSwg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHI8
OD4oc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRhcjwxNj4oZGVz
dCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3ExNihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihhZGRyZXNzLCBkZXN0KTsKKyAg
ICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKDB4ZmZmZiksIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RscjwxNj4oc3JjLCBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTMyKEltcGxp
Y2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sZGFyPDMyPihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGFyPDY0PihkZXN0
LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
c3RvcmVSZWwzMihSZWdpc3RlcklEIGRlc3QsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RscjwzMj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJl
c3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJ
RCBkZXN0LCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN0bHI8NjQ+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBsb2FkTGluazgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8OD4oZGVzdCwgZXh0
cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRM
aW5rQWNxOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8OD4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3Mo
YWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZDgoUmVnaXN0ZXJJRCBz
cmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnN0eHI8OD4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRy
ZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmRSZWw4KFJlZ2lz
dGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjw4PihyZXN1bHQsIHNyYywgZXh0cmFjdFNp
bXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rMTYo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxkeHI8MTY+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGlua0FjcTE2KEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGF4
cjwxNj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHN0b3JlQ29uZDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdHhy
PDE2PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdGx4cjwxNj4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGluazMyKEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhyPDMy
PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZExpbmtBY3EzMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8MzI+KGRlc3QsIGV4dHJhY3RT
aW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmQz
MihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVz
dWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4cjwzMj4ocmVzdWx0LCBzcmMsIGV4
dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZUNvbmRSZWwzMihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RseHI8MzI+KHJlc3Vs
dCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZExpbms2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGR4cjw2ND4oZGVzdCwgZXh0cmFjdFNpbXBs
ZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rQWNxNjQo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxkYXhyPDY0PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNz
KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kNjQoUmVnaXN0ZXJJRCBzcmMsIElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN0eHI8NjQ+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhh
ZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kUmVsNjQoUmVnaXN0ZXJJ
RCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPDY0PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBs
ZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTPDE2Pihjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM8MzI+KGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9u
Z0NBUzw2ND4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1
bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM4KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzw4Pihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
bmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
UmVsYXhlZFN0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzwxNj4o
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0
b21pY1JlbGF4ZWRTdHJvbmdDQVM8MzI+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1
ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVk
U3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNSZWxheGVkU3Ryb25nQ0FTPDY0Pihjb25kLCBl
eHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAg
IAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljV2Vha0NB
Uzw4Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNXZWFrQ0FTPDE2Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTMzIoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2hBdG9taWNXZWFrQ0FTPDMyPihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFr
Q0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNXZWFrQ0FTPDY0Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hB
dG9taWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzw4Pihjb25k
LCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
UmVsYXhlZFdlYWtDQVM8MTY+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRX
ZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExp
c3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFr
Q0FTPDY0Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGRlcGVuZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5lb3I8MzI+KGRlc3QsIHNyYywgc3Jj
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkZXBlbmQ2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZW9yPDY0PihkZXN0LCBzcmMs
IHNyYyk7CisgICAgfQorICAgIAogICAgIC8vIE1pc2MgaGVscGVyIGZ1bmN0aW9ucy4KIAogICAg
IC8vIEludmVydCBhIHJlbGF0aW9uYWwgY29uZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwg
YmVjb21lcyA+PSwgZXRjLgpAQCAtMzg3Nyw2ICs0MDk5LDE1OCBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50
IGRhdGFzaXplPgorICAgIHZvaWQgbG9hZExpbmsoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8ZGF0YXNpemU+KGRlc3QsIHNy
Yyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxv
YWRMaW5rQWNxKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sZGF4cjxkYXRhc2l6ZT4oZGVzdCwgc3JjKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgc3RvcmVDb25kKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3R4cjxkYXRhc2l6ZT4oc3JjLCBkZXN0LCByZXN1bHQpOworICAgIH0KKyAg
ICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdG9yZUNvbmRSZWwoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjxkYXRhc2l6ZT4oc3JjLCBkZXN0LCByZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzaWduRXh0
ZW5kKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3Zl
KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAg
ICBKdW1wIGJyYW5jaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwg
UmVnaXN0ZXJJRCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBs
ZWZ0LCByaWdodCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4
cGVjdGVkQW5kUmVzdWx0LCBleHBlY3RlZEFuZFJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBS
ZWdpc3RlcklEIHNpbXBsZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCk7CisgICAgICAgIAorICAgICAgICBMYWJlbCByZWxvb3AgPSBsYWJlbCgpOwor
ICAgICAgICBsb2FkTGlua0FjcTxkYXRhc2l6ZT4oc2ltcGxlQWRkcmVzcywgdG1wKTsKKyAgICAg
ICAgSnVtcCBmYWlsdXJlID0gYnJhbmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIHRtcCk7CisgICAgICAgIAorICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNpemU+KG5l
d1ZhbHVlLCBzaW1wbGVBZGRyZXNzLCByZXN1bHQpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9u
WmVybywgcmVzdWx0KS5saW5rVG8ocmVsb29wLCB0aGlzKTsKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIoY29uZCA9PSBTdWNjZXNzKSwgcmVzdWx0KTsKKyAgICAgICAgSnVtcCBkb25lID0ganVt
cCgpOworICAgICAgICAKKyAgICAgICAgZmFpbHVyZS5saW5rKHRoaXMpOworICAgICAgICBtb3Zl
KHRtcCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNpemU+
KHRtcCwgc2ltcGxlQWRkcmVzcywgcmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKE5vblpl
cm8sIHJlc3VsdCkubGlua1RvKHJlbG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGNvbmQgPT0gRmFpbHVyZSksIHJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBkb25lLmxp
bmsodGhpcyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2
b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBzaWduRXh0ZW5kPGRhdGFzaXpl
PihleHBlY3RlZEFuZFJlc3VsdCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICAKKyAgICAg
ICAgUmVnaXN0ZXJJRCBzaW1wbGVBZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVz
cyk7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpOworICAgICAgICAKKyAgICAgICAgTGFiZWwgcmVsb29wID0gbGFiZWwo
KTsKKyAgICAgICAgbG9hZExpbms8ZGF0YXNpemU+KHNpbXBsZUFkZHJlc3MsIHRtcCk7CisgICAg
ICAgIEp1bXAgZmFpbHVyZSA9IGJyYW5jaDxkYXRhc2l6ZT4oTm90RXF1YWwsIGV4cGVjdGVkQW5k
UmVzdWx0LCB0bXApOworICAgICAgICAKKyAgICAgICAgc3RvcmVDb25kPGRhdGFzaXplPihuZXdW
YWx1ZSwgc2ltcGxlQWRkcmVzcywgcmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKE5vblpl
cm8sIHJlc3VsdCkubGlua1RvKHJlbG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGNvbmQgPT0gU3VjY2VzcyksIHJlc3VsdCk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKKyAgICAgICAgCisgICAgICAgIGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgbW92ZSh0
bXAsIGV4cGVjdGVkQW5kUmVzdWx0KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoY29uZCA9
PSBGYWlsdXJlKSwgcmVzdWx0KTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluayh0aGlzKTsK
KyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEp1bXBMaXN0IGJy
YW5jaEF0b21pY1dlYWtDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBl
eHBlY3RlZEFuZENsb2JiZXJlZCk7CisgICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIHNpbXBs
ZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Cisg
ICAgICAgIAorICAgICAgICBKdW1wTGlzdCBzdWNjZXNzOworICAgICAgICBKdW1wTGlzdCBmYWls
dXJlOworCisgICAgICAgIGxvYWRMaW5rQWNxPGRhdGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXAp
OworICAgICAgICBmYWlsdXJlLmFwcGVuZChicmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgdG1wKSk7CisgICAgICAgIHN0b3JlQ29uZFJlbDxkYXRhc2l6ZT4o
bmV3VmFsdWUsIHNpbXBsZUFkZHJlc3MsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKTsKKyAgICAgICAg
CisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAg
ICAgICBzdWNjZXNzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQpKTsKKyAgICAgICAgICAgIGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBzdWNjZXNzOworICAgICAgICBjYXNlIEZhaWx1cmU6CisgICAgICAgICAgICBmYWlsdXJlLmFw
cGVuZChicmFuY2hUZXN0MzIoTm9uWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWlsdXJlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQg
ZGF0YXNpemU+CisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHNpZ25FeHRlbmQ8
ZGF0YXNpemU+KGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBleHBlY3RlZEFuZENsb2JiZXJlZCk7Cisg
ICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIHNpbXBsZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRh
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIAorICAgICAgICBKdW1wTGlz
dCBzdWNjZXNzOworICAgICAgICBKdW1wTGlzdCBmYWlsdXJlOworCisgICAgICAgIGxvYWRMaW5r
PGRhdGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXApOworICAgICAgICBmYWlsdXJlLmFwcGVuZChi
cmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgdG1wKSk7Cisg
ICAgICAgIHN0b3JlQ29uZDxkYXRhc2l6ZT4obmV3VmFsdWUsIHNpbXBsZUFkZHJlc3MsIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkKTsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAg
ICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAgICAgICBzdWNjZXNzLmFwcGVuZChicmFuY2hUZXN0
MzIoWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAgICAgICAgIGZhaWx1cmUubGlu
ayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBzdWNjZXNzOworICAgICAgICBjYXNlIEZhaWx1
cmU6CisgICAgICAgICAgICBmYWlsdXJlLmFwcGVuZChicmFuY2hUZXN0MzIoTm9uWmVybywgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWlsdXJlOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICAKKyAgICBSZWdpc3RlcklEIGV4dHJhY3RTaW1wbGVBZGRyZXNzKEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCkKKyAgICAg
ICAgICAgIHJldHVybiBhZGRyZXNzLmJhc2U7CisgICAgICAgIAorICAgICAgICBzaWduRXh0ZW5k
MzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIGFkZDY0KGFkZHJlc3MuYmFzZSwg
bWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIG1lbW9yeVRlbXBSZWdpc3RlcjsK
KyAgICB9CiAKICAgICBKdW1wIGp1bXBBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKERvdWJsZUNv
bmRpdGlvbiBjb25kKQogICAgIHsKQEAgLTM5ODksNiArNDM2MywyNCBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk02NDo6CiAgICAgbV9hc3NlbWJsZXIuc3R1cmgocnQsIHJu
LCBzaW1tKTsKIH0KIAordGVtcGxhdGU8PgoraW5saW5lIHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk02
NDo6c2lnbkV4dGVuZDw4PihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQoreworICAg
IHNpZ25FeHRlbmQ4VG8zMihzcmMsIGRlc3QpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9p
ZCBNYWNyb0Fzc2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDE2PihSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQoreworICAgIHNpZ25FeHRlbmQxNlRvMzIoc3JjLCBkZXN0KTsKK30KKwor
dGVtcGxhdGU8PgoraW5saW5lIE1hY3JvQXNzZW1ibGVyQVJNNjQ6Okp1bXAgTWFjcm9Bc3NlbWJs
ZXJBUk02NDo6YnJhbmNoPDY0PihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKK3sKKyAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVm
dCwgcmlnaHQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShB
U1NFTUJMRVIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFkZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CkBAIC0yNTEsMTYgKzI1Niw3MSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
ICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBB
ZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX3JtKHNyYywgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQg
c3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfcm0o
c3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAg
ICB9CisKICAgICB2b2lkIGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJh
c2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMy
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8aW50
MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19pbShzdGF0aWNfY2FzdDxpbnQxNl90Pihp
bW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kOChUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0
YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgaWYgKG9wMSA9PSBvcDIpCkBAIC00NTYsNiArNTE2LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOwogICAgIH0K
IAorICAgIHZvaWQgbmVnMzIoQmFzZUluZGV4IHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5uZWdsX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRl
eCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihBZGRyZXNzIHNyY0Rl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQsIHNy
Y0Rlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihCYXNlSW5kZXggc3JjRGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3dfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVz
dC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IG5lZzgoQWRkcmVzcyBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnYl9t
KHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnOChC
YXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2JfbShzcmNE
ZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsK
KyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNDcxLDE2
ICs1NTYsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcm0oc3JjLCBkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5vcndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoUmVn
aXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9y
Yl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I4
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQsIHNyYy5i
YXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9p
ZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm9ybF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKGltbS5tX3ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGlu
dDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGlt
bS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX2ltKHN0YXRp
Y19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9pbShzdGF0aWNfY2FzdDxpbnQ4
X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQg
b3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYg
KG9wMSA9PSBvcDIpCkBAIC02NTQsMTYgKzc5NCw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19pbShzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1f
dmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBzdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUp
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKEFkZHJl
c3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJs
X21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMy
KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBk
ZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWIxNihSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNy
YywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vi
bF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUp
OworICAgIH0KKworICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3Vi
OChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9ycihzcmMsIGRlc3Qp
OwpAQCAtNjc3LDYgKzg3Miw1MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54
b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAg
ICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAg
ICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90
bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisK
KyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpOwor
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5u
b3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Up
OworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGlt
bS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRl
c3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3J3X2lt
KGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGlt
bS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVz
dC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5k
ZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0x
KQpAQCAtNjkwLDExICs5MjksNDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3Js
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCB4b3Iz
MihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwor
ICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihB
ZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZv
aWQgeG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMu
c2NhbGUsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3Ax
LCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9w
MSA9PSBvcDIpCkBAIC03NDEsNiArMTAxMCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG5v
dDMyKEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwor
ICAgIHZvaWQgbm90MTYoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90MTYo
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBub3Q4KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdGJf
bShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDgoQmFzZUlu
ZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBz
cXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5zcXJ0c2RfcnIoc3JjLCBkc3QpOwpAQCAtMTA3MSw0MiArMTM2NSwy
MyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBhZGRyZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAgICAgICAvLyBPbiAzMi1iaXQgeDg2
IHdlIGNhbiBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOwotICAgICAgICAv
LyBlc3AuLmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQotICAgICAgICBpZiAo
c3JjID49IDQpIHsKLSAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCi0g
ICAgICAgICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRSZWdpc3RlcihhZGRyZXNzKTsK
LQotICAgICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5IHJlZ2lzdGVyIHRvIHBlcmZv
cm0gdGhlIHN0b3JlLgotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAg
bV9hc3NlbWJsZXIubW92d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1w
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0
ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAg
Ly8gT24gMzItYml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lz
dGVyczsKLSAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVy
cyEKLSAgICAgICAgaWYgKHNyYyA+PSA0KSB7Ci0gICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9y
YXJ5IHJlZ2lzdGVyLgotICAgICAgICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVn
aXN0ZXIoYWRkcmVzcyk7Ci0KLSAgICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSBy
ZWdpc3RlciB0byBwZXJmb3JtIHRoZSBzdG9yZS4KLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1w
KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7Ci0gICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3Jt
KHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBz
dG9yZTE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSks
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKworICAgIHZvaWQgc3RvcmUxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X2ltKHN0YXRpY19jYXN0
PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7Cisg
ICAgfQogCiAgICAgLy8gRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uOgogICAgIC8vCkBAIC0yNzQ1
LDc0ICszMDIwLDkwMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKDAsIDAsIFg4NlJlZ2lzdGVyczo6ZXNwKTsKICAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25n
Q0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNt
cHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7Cisg
ICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rp
b24gb2Ygbm9ybWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBz
dG9yZUZlbmNlKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAgIH0KIAotICAgIC8vIFdlIHRh
a2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBsb2Fkcy4g
U28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBsb2FkRmVuY2UoKQorICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFy
dCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgdm9pZCBhdG9taWNTdHJvbmdD
QVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rp
b25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVz
cygpKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBy
ZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAg
ICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFg4NkFzc2Vt
Ymxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9
CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHBhdGNoYWJsZUp1bXBTaXplKCkKKyAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpwYXRjaGFi
bGVKdW1wU2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
OyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3Vu
ZGluZygpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAg
ICAgIGlmIChzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2Vk
KQotICAgICAgICAgICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7Ci0gICAgICAgIHJldHVybiBzX3Nz
ZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0o
bmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJl
Z2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRl
eCBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gQVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3Vz
IHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4gYmUgbWFzc2l2ZS4KLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1
bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAgICAg
fQogCi0gICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdzKCkKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIGludCBmbGFncyA9IDA7Ci0j
aWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgaW50IGNwdUluZm9bNF07Ci0gICAgICAgIF9fY3B1
aWQoY3B1SW5mbywgMHgxKTsKLSAgICAgICAgZmxhZ3MgPSBjcHVJbmZvWzJdOwotI2VsaWYgQ09N
UElMRVIoR0NDX09SX0NMQU5HKQotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGFzbSAoCi0gICAg
ICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAiY3B1aWQ7IgotICAgICAg
ICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCi0gICAg
ICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlYngiLCAiJWVjeCIsICIlZWR4Igot
ICAgICAgICAgICAgKTsKLSNlbHNlCi0gICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAk
MHgxLCAlJWVheDsiCi0gICAgICAgICAgICAicHVzaGwgJSVlYng7IgotICAgICAgICAgICAgImNw
dWlkOyIKLSAgICAgICAgICAgICJwb3BsICUlZWJ4OyIKLSAgICAgICAgICAgICJtb3ZsICUlZWN4
LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAgICAgICAgICAgOgotICAgICAg
ICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICApOwotI2VuZGlmCisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9
KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fz
c2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25n
Q0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZv
aWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNT
dHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdD
QVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBt
X2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJh
bmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRB
bmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9t
aWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIC8vIElmIHlvdSB1c2Ugd2VhayBDQVMsIHlvdSBj
YW5ub3QgcmVseSBvbiBleHBlY3RlZEFuZENsb2JiZXJlZCB0byBoYXZlIGFueSBwYXJ0aWN1bGFy
IHZhbHVlIGFmdGVyCisgICAgLy8gdGhpcyBjb21wbGV0ZXMuIE9uIHg4NiwgaXQgd2lsbCBjb250
YWluIHRoZSByZXN1bHQgb2YgdGhlIHN0cm9uZyBDQVMuIE9uIEFSTSwgaXQgd2lsbCBzdGlsbCBo
YXZlCisgICAgLy8gdGhlIGV4cGVjdGVkIHZhbHVlLgorICAgIHZvaWQgYXRvbWljV2Vha0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dl
YWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
MTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQp
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBB
ZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWlj
U3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNz
LCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAg
ICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFr
Q0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtD
QVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFr
Q0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vh
a0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
V2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVn
aXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUlu
ZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJl
c3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1Zh
bHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdl
YWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZv
aWQgYXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMy
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRX
ZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1Jl
bGF4ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMx
Nihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hBdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhZGQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQWRkOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJ
RCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhZGQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQWRkMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQz
MihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHN1YjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHN1YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNTdWI4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChyZWcsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFRydXN0ZWRJbW0zMiBpbW0s
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFJlZ2lzdGVy
SUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNTdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Vi
MzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWIzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIg
aW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFuZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNBbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMy
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoUmVnaXN0
ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihUcnVzdGVk
SW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBv
cjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBvcjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHhvcjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNY
b3I4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYb3I4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Ix
NihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNYb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHhvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WG9yMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzgo
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnOChh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2KGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzE2KEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWcxNihh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMyKGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzMyKEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWczMihh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90OChhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MTYoQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDE2KGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MzIoQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDMyKGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCBy
ZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54
YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhhZGR3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0Fk
ZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRsX3JtKHJlZywgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNo
Z0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBtX2Fzc2VtYmxlci54Y2hnYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3dfcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShy
ZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJl
ZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTgoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQ4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTgoQmFz
ZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDgoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoQWRk
cmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4U2lnbmVkRXh0
ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4U2lnbmVk
RXh0ZW5kVG8zMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBsb2FkQWNxMTYoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IGxvYWQxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNihCYXNl
SW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTYoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKEFk
ZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTZTaWduZWRF
eHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2ln
bmVkRXh0ZW5kVG8zMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMzIo
QmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDMyKHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTgoc3JjLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgc3RvcmVSZWw4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIHN0b3JlOChpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChp
bW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMTYoc3JjLCBkZXN0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBzdG9yZVJlbDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7
CisgICAgICAgIHN0b3JlMTYoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZVJlbDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
c3RvcmUxNihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoUmVn
aXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBzdG9yZVJlbDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgc3RvcmUzMihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICAvLyBXZSB0YWtl
IHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwgc3RvcmVzLiBT
bywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KKyAgICB2b2lkIHN0b3JlRmVuY2UoKQorICAgIHsKKyAg
ICB9CisKKyAgICAvLyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlv
biBvZiBub3JtYWwgbG9hZHMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgorICAgIHZvaWQgbG9h
ZEZlbmNlKCkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1w
KENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRl
c3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAo
aW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1w
UmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IHBh
dGNoYWJsZUp1bXBTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OnBh
dGNoYWJsZUp1bXBTaXplKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9h
dGluZ1BvaW50Um91bmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKHNfc3NlNF8xQ2hlY2tTdGF0
ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpCisgICAgICAgICAgICB1cGRhdGVFYXgx
RWN4RmxhZ3MoKTsKKyAgICAgICAgcmV0dXJuIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJRENo
ZWNrU3RhdGU6OlNldDsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisg
ICAgeworICAgICAgICAvLyBBVlggc3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVzc2lvbnMg
YW5kIHRob3NlIHJlZ3Jlc3Npb25zIGNhbiBiZSBtYXNzaXZlLgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdzKCkKKyAgICB7
CisgICAgICAgIGludCBmbGFncyA9IDA7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICAgICAgaW50
IGNwdUluZm9bNF07CisgICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHgxKTsKKyAgICAgICAgZmxh
Z3MgPSBjcHVJbmZvWzJdOworI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorI2lmIENQVShY
ODZfNjQpCisgICAgICAgIGFzbSAoCisgICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCisg
ICAgICAgICAgICAiY3B1aWQ7IgorICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAg
ICAgICAgIDogIj1nIiAoZmxhZ3MpCisgICAgICAgICAgICA6CisgICAgICAgICAgICA6ICIlZWF4
IiwgIiVlYngiLCAiJWVjeCIsICIlZWR4IgorICAgICAgICAgICAgKTsKKyNlbHNlCisgICAgICAg
IGFzbSAoCisgICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCisgICAgICAgICAgICAicHVz
aGwgJSVlYng7IgorICAgICAgICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICJwb3BsICUlZWJ4
OyIKKyAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCisgICAgICAgICAgICA6ICI9ZyIgKGZs
YWdzKQorICAgICAgICAgICAgOgorICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgi
CisgICAgICAgICAgICApOworI2VuZGlmCiAjZW5kaWYgLy8gQ09NUElMRVIoR0NDX09SX0NMQU5H
KQogICAgICAgICBzX3NzZTRfMUNoZWNrU3RhdGUgPSAoZmxhZ3MgJiAoMSA8PCAxOSkpID8gQ1BV
SURDaGVja1N0YXRlOjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOwogICAgICAgICBzX2F2
eENoZWNrU3RhdGUgPSAoZmxhZ3MgJiAoMSA8PCAyOCkpID8gQ1BVSURDaGVja1N0YXRlOjpTZXQg
OiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOwpAQCAtMjgzMyw2ICszOTM1LDE4IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uPihj
b25kKTsKICAgICB9CiAKKyAgICBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24o
U3RhdHVzQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAg
ICAgICAgY2FzZSBTdWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6Q29u
ZGl0aW9uRTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAgICAgcmV0dXJuIFg4NkFz
c2VtYmxlcjo6Q29uZGl0aW9uTkU7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uRTsK
KyAgICB9CisKICAgICB2b2lkIHNldDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAjaWYgQ1BVKFg4NikKQEAgLTI5MjcsNiArNDA0MSwzNSBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHNpemVPZlJlZ2lzdGVyKSwg
ZHN0KTsKICAgICAgICAgc3JjSXNOb25aZXJvLmxpbmsodGhpcyk7CiAgICAgfQorICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
cmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFu
ZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVn
aXN0ZXJzOjplYXgpOworICAgICAgICBzZXQzMih4ODZDb25kaXRpb24oY29uZCksIHJlc3VsdCk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGF0b21pY1N0
cm9uZ0NBUyhSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQor
ICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgp
OworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAg
c3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIGNvbnN0
IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZS
ZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVu
YygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7
CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkp
KTsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgLy8gT25seSBNYWNyb0Fzc2VtYmxlclg4NiBzaG91
bGQgYmUgdXNpbmcgdGhlIGZvbGxvd2luZyBtZXRob2Q7IFNTRTIgaXMgYWx3YXlzIGF2YWlsYWJs
ZSBvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiwgMjAxNC0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjY0LDExICsyNjQsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5hZGRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFkZDY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZDY0KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGRx
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChBYnNvbHV0ZUFkZHJlc3Mgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgc2Ny
YXRjaFJlZ2lzdGVyKCkpOwpAQCAtMzA2LDYgKzMxNiwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5hZGRxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IDEpCisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5pbmNxX20oYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZHFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQg
YWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3Rl
cigpKTsKQEAgLTM0MiwxMSArMzYwLDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
YW5kcV9ycihzcmMsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFu
ZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwg
c3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lk
IGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZHFfaXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwogICAgIH0KIAor
ICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KwogICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkK
ICAgICB7CiAgICAgICAgIGludHB0cl90IGludFZhbHVlID0gaW1tLmFzSW50cHRyKCk7CkBAIC01
NTIsMTEgKzYwMCw1MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfcihkZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIG5lZzY0KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5lZ3FfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5lZzY0KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bmVncV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKwogICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisg
ICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5vcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwg
ZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KEFkZHJlc3Mg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgb3I2NChCYXNl
SW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5v
cnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsK
KyAgICB9CisKKyAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfaW0oaW1tLm1f
dmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKwogICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdpc3RlcklEIHNyY0Rl
c3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkKQEAgLTYxOSwxNiArNzA3LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIuc3VicV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgc3ViNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoQmFzZUluZGV4IHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAg
IHZvaWQgc3ViNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLnN1YnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9
CiAKKyAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
LCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54
b3JxX3JyKHNyYywgZGVzdCk7CkBAIC02NTEsNiArNzU0LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIueG9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0K
IAorICAgIHZvaWQgeG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoQWRkcmVz
cyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFf
bXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQo
QmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueG9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRl
c3QpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pbShpbW0ubV92YWx1ZSwgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFf
aW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pcihpbW0ubV92
YWx1ZSwgc3JjRGVzdCk7CkBAIC02NjYsNiArNzk0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIubm90cV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZv
aWQgbm90NjQoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3Rx
X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgZGVzdCk7CkBAIC03MjUsNiArODU4LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NlbWJsZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2kzMm0o
aW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tNjQg
aW1tLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lH
Tl9FWFRFTkRfMzJfNjQoaW1tLm1fdmFsdWUpKSB7CkBAIC0xMjk0LDcgKzE0MzIsMjc1IEBAIHB1
YmxpYzoKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwogICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJl
Z2lzdGVyKCkpLCBtYXNrOCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
NjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CiAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQp
CisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsK
KyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9
KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fz
c2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hB
dG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwor
ICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCBy
ZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAg
ICBhdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FT
NjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJl
dHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
bmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdl
YWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hB
dG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFk
ZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIHN1YjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljU3ViNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1
YjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY0FuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFuZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
QW5kNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHhvcjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9y
NjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY05lZzY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljTmVnNjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY05vdDY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljTm90NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2Vt
Ymxlci54YWRkcV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZzY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZzY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGxvYWRBY3E2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZVJlbDY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9y
ZTY0KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNyYywgZGVz
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBB
ZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAg
dm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDE2ICsxOTAsMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgT1BfQUREX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MDEsCiAg
ICAgICAgIE9QX0FERF9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDAzLAogICAgICAgICBP
UF9BRERfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgwNSwKKyAgICAgICAgT1BfT1JfRXZH
YiAgICAgICAgICAgICAgICAgICAgICA9IDB4MDgsCiAgICAgICAgIE9QX09SX0V2R3YgICAgICAg
ICAgICAgICAgICAgICAgPSAweDA5LAogICAgICAgICBPUF9PUl9HdkV2ICAgICAgICAgICAgICAg
ICAgICAgID0gMHgwQiwKICAgICAgICAgT1BfT1JfRUFYSXYgICAgICAgICAgICAgICAgICAgICA9
IDB4MEQsCiAgICAgICAgIE9QXzJCWVRFX0VTQ0FQRSAgICAgICAgICAgICAgICAgPSAweDBGLAor
ICAgICAgICBPUF9BTkRfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgyMCwKICAgICAgICAg
T1BfQU5EX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MjEsCiAgICAgICAgIE9QX0FORF9H
dkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDIzLAorICAgICAgICBPUF9TVUJfRXZHYiAgICAg
ICAgICAgICAgICAgICAgID0gMHgyOCwKICAgICAgICAgT1BfU1VCX0V2R3YgICAgICAgICAgICAg
ICAgICAgICA9IDB4MjksCiAgICAgICAgIE9QX1NVQl9HdkV2ICAgICAgICAgICAgICAgICAgICAg
PSAweDJCLAogICAgICAgICBPUF9TVUJfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgyRCwK
ICAgICAgICAgUFJFX1BSRURJQ1RfQlJBTkNIX05PVF9UQUtFTiAgICA9IDB4MkUsCisgICAgICAg
IE9QX1hPUl9FdkdiICAgICAgICAgICAgICAgICAgICAgPSAweDMwLAogICAgICAgICBPUF9YT1Jf
RXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgzMSwKICAgICAgICAgT1BfWE9SX0d2RXYgICAg
ICAgICAgICAgICAgICAgICA9IDB4MzMsCiAgICAgICAgIE9QX1hPUl9FQVhJdiAgICAgICAgICAg
ICAgICAgICAgPSAweDM1LApAQCAtMjIzLDYgKzIyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9Q
X0dST1VQMV9FdkliICAgICAgICAgICAgICAgICAgPSAweDgzLAogICAgICAgICBPUF9URVNUX0Vi
R2IgICAgICAgICAgICAgICAgICAgID0gMHg4NCwKICAgICAgICAgT1BfVEVTVF9Fdkd2ICAgICAg
ICAgICAgICAgICAgICA9IDB4ODUsCisgICAgICAgIE9QX1hDSEdfRXZHYiAgICAgICAgICAgICAg
ICAgICAgPSAweDg2LAogICAgICAgICBPUF9YQ0hHX0V2R3YgICAgICAgICAgICAgICAgICAgID0g
MHg4NywKICAgICAgICAgT1BfTU9WX0ViR2IgICAgICAgICAgICAgICAgICAgICA9IDB4ODgsCiAg
ICAgICAgIE9QX01PVl9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDg5LApAQCAtMjUyLDYg
KzI1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIFBSRV9TU0VfRjIgICAgICAgICAgICAgICAgICAg
ICAgPSAweEYyLAogICAgICAgICBQUkVfU1NFX0YzICAgICAgICAgICAgICAgICAgICAgID0gMHhG
MywKICAgICAgICAgT1BfSExUICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4RjQsCisgICAg
ICAgIE9QX0dST1VQM19FYiAgICAgICAgICAgICAgICAgICAgPSAweEY2LAogICAgICAgICBPUF9H
Uk9VUDNfRWJJYiAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAgT1BfR1JPVVAzX0V2
ICAgICAgICAgICAgICAgICAgICA9IDB4RjcsCiAgICAgICAgIE9QX0dST1VQM19Fdkl6ICAgICAg
ICAgICAgICAgICAgPSAweEY3LCAvLyBPUF9HUk9VUDNfRXYgaGFzIGFuIGltbWVkaWF0ZSwgd2hl
biBpbnN0cnVjdGlvbiBpcyBhIHRlc3QuIApAQCAtMjkwLDYgKzI5Niw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIE9QX1NFVENDICAgICAgICAgICAgPSAweDkwLAogICAgICAgICBPUDJfM0JZVEVfRVND
QVBFX0FFID0gMHhBRSwKICAgICAgICAgT1AyX0lNVUxfR3ZFdiAgICAgICA9IDB4QUYsCisgICAg
ICAgIE9QMl9DTVBYQ0hHYiAgICAgICAgPSAweEIwLAorICAgICAgICBPUDJfQ01QWENIRyAgICAg
ICAgID0gMHhCMSwKICAgICAgICAgT1AyX01PVlpYX0d2RWIgICAgICA9IDB4QjYsCiAgICAgICAg
IE9QMl9CU0YgICAgICAgICAgICAgPSAweEJDLAogICAgICAgICBPUDJfVFpDTlQgICAgICAgICAg
ID0gMHhCQywKQEAgLTI5OCw2ICszMDYsOCBAQCBwcml2YXRlOgogICAgICAgICBPUDJfTU9WU1hf
R3ZFYiAgICAgID0gMHhCRSwKICAgICAgICAgT1AyX01PVlpYX0d2RXcgICAgICA9IDB4QjcsCiAg
ICAgICAgIE9QMl9NT1ZTWF9HdkV3ICAgICAgPSAweEJGLAorICAgICAgICBPUDJfWEFERGIgICAg
ICAgICAgID0gMHhDMCwKKyAgICAgICAgT1AyX1hBREQgICAgICAgICAgICA9IDB4QzEsCiAgICAg
ICAgIE9QMl9QRVhUUldfR2RVZEliICAgPSAweEM1LAogICAgICAgICBPUDJfUFNMTFFfVWRxSWIg
ICAgID0gMHg3MywKICAgICAgICAgT1AyX1BTUkxRX1VkcUliICAgICA9IDB4NzMsCkBAIC00NDAs
NiArNDUwLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FE
RF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgYWRkbF9t
cihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAg
ICAKICNpZiAhQ1BVKFg4Nl82NCkKICAgICB2b2lkIGFkZGxfbXIoY29uc3Qgdm9pZCogYWRkciwg
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNTYyLDExICs1NzcsMjEgQEAgcHVibGljOgogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZz
ZXQpOwogICAgIH0KIAorICAgIHZvaWQgYWRkcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhZGRxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgYWRkcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhZGRxX2lyKGludCBpbW0sIFJlZ2lzdGVy
SUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsK
QEAgLTU5MSw2ICs2MTYsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYWRkcV9pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAx
X09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BREQsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAjZWxzZQogICAgIHZvaWQgYWRkbF9pbShpbnQg
aW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKQEAgLTYxNCwxMSArNjUwLDQzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3QsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBhbmRsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhbmRsX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGFuZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnBy
ZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5kbF9ybShzcmMsIG9mZnNldCwgYmFz
ZSk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5k
bF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kYl9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9pcihpbnQg
aW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CkBAIC02NDEsNiArNzA5LDUzIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KIAorICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJ
eiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgYW5kd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmR3X2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFuZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9FYkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBH
Uk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZv
aWQgYW5kcV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNjU3
LDYgKzc3Miw0OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUz
MihpbW0pOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBhbmRxX21yKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBhbmRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JP
VVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAj
ZWxzZQogICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsK
QEAgLTcwMyw2ICs4NjAsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfR1JPVVA1X0V2LCBHUk9VUDFfT1BfQURELCBiYXNlLCBvZmZzZXQpOwog
ICAgIH0KKworICAgIHZvaWQgaW5jcV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfR1JPVVA1X0V2LCBHUk9VUDFfT1BfQURELCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQogI2VuZGlmIC8vIENQVShYODZfNjQpCiAKICAgICB2b2lkIG5lZ2xf
cihSZWdpc3RlcklEIGRzdCkKQEAgLTcxNSw2ICs4NzcsMTYgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVH
LCBkc3QpOwogICAgIH0KKworICAgIHZvaWQgbmVncV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19F
diwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3Ff
bShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19Fdiwg
R1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRp
ZgogCiAgICAgdm9pZCBuZWdsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQpAQCAtNzIy
LDYgKzg5NCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDNfRXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9p
ZCBuZWdsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAz
X0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CisgICAgdm9pZCBuZWd3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWds
X20ob2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3dfbShpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVnbF9t
KG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2JfbShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOworICAg
IH0KKworICAgIHZvaWQgbmVnYl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKwogICAgIHZvaWQgbm90bF9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwg
ZHN0KTsKQEAgLTczMiw2ICs5MzEsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgbm90bF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKworICAgIHZvaWQgbm90d19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgbm90bF9tKG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3R3X20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIG5vdGxfbShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGJfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgbm90
cV9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTc0Miw2ICs5NjgsMTEgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9V
UDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgbm90cV9tKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNf
T1BfTk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAg
ICB2b2lkIG9ybF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC03NTQsMTEg
Kzk4NSw0MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9H
dkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBvcmxfbXIoaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2
RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQg
b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAg
ewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBvcmxfcm0oc3JjLCBvZmZz
ZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAg
ICAgb3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIG9ybF9pcihpbnQg
aW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CkBAIC03ODQsMTIgKzEwNDcsMTAxIEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAorICAgIHZvaWQgb3JsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENB
Tl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgb3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9V
UDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBvcndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0Vi
SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgb3JiX2ltKGludCBpbW0sIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1Bf
T1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBvcnFfcnIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQg
b3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
R1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIHZvaWQgb3JxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTgzMSwxMSArMTE4Myw0
MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwg
ZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYs
IGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3Vi
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9m
ZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgc3Vid19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBz
cmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1Ymxf
aXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzhfMzIoaW1tKSkgewpAQCAtODYxLDYgKzEyNDUsNTMgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgfQogCisgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAg
fQorCisgICAgdm9pZCBzdWJ3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1Yndf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9T
VUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1t
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQp
CiAgICAgdm9pZCBzdWJxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7
CkBAIC04NzIsMTEgKzEzMDMsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZv
aWQgc3VicV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCiAgICAgdm9pZCBzdWJxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CiAgICAgdm9pZCBzdWJxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTkwMSw2ICsxMzQyLDE3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICB2b2lkIHN1YnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9
CisgICAgfQogI2Vsc2UKICAgICB2b2lkIHN1YmxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRk
cikKICAgICB7CkBAIC05MjQsMTEgKzEzNzYsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfWE9SX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAK
KyAgICB2b2lkIHhvcmxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKICAgICB2b2lkIHhvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9y
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KwogICAgIHZvaWQgeG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTQw
LDYgKzE0MDIsNzUgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB4b3Js
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGlt
bSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwg
R1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3Jj
LCBvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcndf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9Y
T1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1t
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1hPUl9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAg
dm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCB4b3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAx
X09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX2lyKGludCBpbW0sIFJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGlt
bSkpIHsKQEAgLTk3NCwxMSArMTUwNSw0NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09Q
X1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICB2b2lkIHhvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorICAg
IAogICAgIHZvaWQgeG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2
R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcnFfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9S
X0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2LCBkZXN0
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYs
IGRlc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAg
IHZvaWQgbHpjbnRfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTU4Niwx
MSArMjE1MywzOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfWENIR19Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnYl9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgeGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4
Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9Y
Q0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAg
IHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3Ys
IHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogI2lmIENQVShYODZf
NjQpCiAgICAgdm9pZCB4Y2hncV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewpAQCAtMTYwNiw2ICsyMjAwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KKworICAgIHZvaWQgeGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgbW92bF9ycihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNzMxLDYgKzIzMzAsMjAgQEAgcHVibGljOgog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG1vdndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAxMV9Fdkl6LCBHUk9VUDExX01PViwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG1vdndfaW0oaW50
IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SXosIEdST1VQ
MTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZsX0VBWG0oY29uc3Qgdm9p
ZCogYWRkcikKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfT3ZF
QVgpOwpAQCAtMTgwMCw2ICsyNDEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMzIoaW1tKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdnFfaTMybShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMTFfRXZJeiwg
R1JPVVAxMV9NT1YsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICB9CisKICAgICB2b2lkIG1vdnFfaTY0cihpbnQ2
NF90IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9NT1ZfRUFYSXYsIGRzdCk7CkBAIC0yNzgxLDYgKzM0MDAsOTQgQEAgcHVibGlj
OgogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX0xPQ0spOwogICAgIH0KICAgICAKKyAg
ICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hH
Yiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgo
T1AyX0NNUFhDSEdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21w
eGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisjaWYgQ1BVKFg4Nl82
NCkgICAgCisgICAgdm9pZCBjbXB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQo
T1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBj
bXB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorI2VuZGlmIC8vIENQVShYODZfNjQpCisgICAgCisgICAgdm9pZCB4YWRkYl9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQUREYiwgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQs
IHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkbF9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hB
REQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworI2lmIENQVShY
ODZfNjQpICAgIAorICAgIHZvaWQgeGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFk
ZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0
ZU9wNjQoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorICAgIAogICAgIHZvaWQgbWZlbmNlKCkKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wKE9QMl8zQllURV9FU0NBUEVfQUUsIE9QM19N
RkVOQ0UpOwpAQCAtMzc1Nyw2ICs0NDY0LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0
ZXIucmVnaXN0ZXJNb2RSTShncm91cE9wLCBybSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lk
IHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBi
YXNlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlv
bkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRS
ZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBiYXNlKSwgcmVnLCAwLCBiYXNlKTsKKyAgICAg
ICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAg
ICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVy
Lm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKKyAgICAgICAg
eworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVm
ZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJl
ZykgfHwgcmVnUmVxdWlyZXNSZXgoaW5kZXgsIGJhc2UpLCByZWcsIGluZGV4LCBiYXNlKTsKKyAg
ICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3Jp
dGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICB9CisKICAgICAgICAgLy8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KICAgICAgICAgLy8gQW4g
aW1tZWRhaXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBv
cCBoYXMgYmVlbiBlbWl0dGVkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRv
bWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0
b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworQXRvbWljVmFsdWU6On5BdG9taWNWYWx1
ZSgpCit7Cit9CisKK3ZvaWQgQXRvbWljVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29t
bWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KGNvbW1hLCAid2lk
dGggPSAiLCBtX3dpZHRoKTsKKyAgICAKKyAgICBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoY29tbWEs
IG91dCk7Cit9CisKK1ZhbHVlKiBBdG9taWNWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbmV3IEF0b21pY1ZhbHVlKCp0aGlzKTsKK30KKworQXRvbWljVmFsdWU6OkF0b21p
Y1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBvcGVy
YW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVh
cFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5k
LCBvcGVyYW5kLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSwgb3Bl
cmFuZCwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7CisgICAgQVNTRVJUKGJlc3RU
eXBlKEdQLCBhY2Nlc3NXaWR0aCgpKSA9PSBhY2Nlc3NUeXBlKCkpOworICAgIAorICAgIHN3aXRj
aCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0
b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hn
U3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KK30KKworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9y
aWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUs
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFu
Z2UgZmVuY2VSYW5nZSkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIGtp
bmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRWYWx1ZS0+dHlw
ZSgpLCBvcmlnaW4sIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UsIGV4cGVjdGVkVmFsdWUsIG5l
d1ZhbHVlLCBwb2ludGVyKQorICAgICwgbV93aWR0aCh3aWR0aCkKK3sKKyAgICBBU1NFUlQoYmVz
dFR5cGUoR1AsIGFjY2Vzc1dpZHRoKCkpID09IGFjY2Vzc1R5cGUoKSk7CisKKyAgICBzd2l0Y2gg
KGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9t
aWNTdHJvbmdDQVM6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisK
KyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNBdG9taWNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0F0b21pY1ZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1
ZGUgIkIzV2lkdGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIEF0b21pY1ZhbHVlIDogcHVibGljIE1lbW9yeVZhbHVlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAg
IHJldHVybiBpc0F0b21pYyhraW5kLm9wY29kZSgpKTsKKyAgICB9CisgICAgCisgICAgfkF0b21p
Y1ZhbHVlKCk7CisgICAgCisgICAgVHlwZSBhY2Nlc3NUeXBlKCkgY29uc3QgeyByZXR1cm4gY2hp
bGQoMCktPnR5cGUoKTsgfQorICAgIAorICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV93aWR0aDsgfQorICAgIAorcHJvdGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29t
bWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICAKKyAgICBWYWx1
ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2luLCBX
aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAs
IEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdl
ID0gSGVhcFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2lu
LCBXaWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0
b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAg
ICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNC
YXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFz
aWNCbG9jay5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIEJs
b2NrSW5zZXJ0aW9uU2V0OwogY2xhc3MgSW5zZXJ0aW9uU2V0OwogY2xhc3MgUHJvY2VkdXJlOwog
Y2xhc3MgVmFsdWU7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0OwogCiBjbGFzcyBCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShC
YXNpY0Jsb2NrKTsKQEAgLTE1OCw2ICsxNTksNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBCbG9ja0luc2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgSW5zZXJ0aW9uU2V0OwogICAg
IGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBj
bGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgCiAgICAgLy8gSW5zdGFudGlhdGUg
dmlhIFByb2NlZHVyZS4KICAgICBCYXNpY0Jsb2NrKHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJl
cXVlbmN5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0lu
c2VydGlvblNldC5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwzNSArMzYsMTMg
QEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBCbG9ja0luc2VydGlvblNldDo6
QmxvY2tJbnNlcnRpb25TZXQoUHJvY2VkdXJlICZwcm9jKQotICAgIDogbV9wcm9jKHByb2MpCisg
ICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQocHJvYy5tX2Jsb2NrcykKKyAgICAsIG1fcHJv
Yyhwcm9jKQogewogfQogCiBCbG9ja0luc2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KCkg
eyB9CiAKLXZvaWQgQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydChCbG9ja0luc2VydGlvbiYmIGlu
c2VydGlvbikKLXsKLSAgICBtX2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7
Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQodW5zaWduZWQgaW5k
ZXgsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+
IGJsb2NrKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKLSAgICBCYXNpY0Js
b2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsKLSAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5k
ZXgsIFdURk1vdmUoYmxvY2spKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQmFzaWNCbG9j
ayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRv
dWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZy
ZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsK
LX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEFmdGVyKEJhc2ljQmxv
Y2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHJldHVybiBpbnNlcnQoYWZ0ZXIt
PmluZGV4KCkgKyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYWZ0ZXIt
PmZyZXF1ZW5jeSgpKTsKLX0KLQogQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6OnNwbGl0
Rm9yd2FyZCgKICAgICBCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQmIHZhbHVlSW5kZXgsIElu
c2VydGlvblNldCogaW5zZXJ0aW9uU2V0LCBkb3VibGUgZnJlcXVlbmN5KQogewpAQCAtMTAyLDMy
ICs4MCw2IEBAIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcncKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEJsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKCkKLXsK
LSAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIAotICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4gYW55
IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCi0gICAgLy8gcnVubmluZyBX
VEY6OmV4ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBh
bmQgd2Ugd2FudCBpdCB0byBiZQotICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBidWJibGUgc29ydC4K
LSAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkp
OwotCi0gICAgZXhlY3V0ZUluc2VydGlvbnMobV9wcm9jLm1fYmxvY2tzLCBtX2luc2VydGlvbnMp
OwotICAgIAotICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBUaGlzIGlzbid0IHN0cmlj
dGx5IG5lY2Vzc2FyeSBidXQgaXQncwotICAgIC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxvY2sg
bGlzdCBmcm9tIGdyb3dpbmcuCi0gICAgbV9wcm9jLm1fYmxvY2tzLnJlbW92ZUFsbE1hdGNoaW5n
KAotICAgICAgICBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+
IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuICFibG9ja1B0cjsKLSAgICAgICAgfSk7Ci0gICAg
Ci0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2Vz
LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Byb2MubV9ibG9ja3Muc2l6ZSgpOyAr
K2kpCi0gICAgICAgIG1fcHJvYy5tX2Jsb2Nrc1tpXS0+bV9pbmRleCA9IGk7Ci0gICAgCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8g
RU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5z
ZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxv
Y2tJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0lu
c2VydGlvblNldC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSA8d3RmL0lu
c2VydGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM1LDI2ICszNiwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgSW5zZXJ0aW9uU2V0OwogCi10
eXBlZGVmIFdURjo6SW5zZXJ0aW9uPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4gQmxvY2tJ
bnNlcnRpb247Cit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPjo6
QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CiAKLWNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0
IHsKK2NsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2VydGlv
blNldDxCYXNpY0Jsb2NrPiB7CiBwdWJsaWM6CiAgICAgQmxvY2tJbnNlcnRpb25TZXQoUHJvY2Vk
dXJlJik7CiAgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7CiAgICAgCi0gICAgdm9pZCBpbnNlcnQo
QmxvY2tJbnNlcnRpb24mJik7Ci0KLSAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQgYSBnaXZl
biBpbmRleC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBm
cmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRo
ZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5Ci0g
ICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZy
ZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxvY2suIFRoYXQncwotICAgIC8vIHVzdWFsbHkgd2hh
dCB5b3Ugd2FudC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVm
b3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJs
b2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRBZnRlcihC
YXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCiAgICAgLy8gQSBo
ZWxwZXIgdG8gc3BsaXQgYSBibG9jayB3aGVuIGZvcndhcmQgaXRlcmF0aW5nIG92ZXIgaXQuIEl0
IGNyZWF0ZXMgYSBuZXcgYmxvY2sgdG8gaG9sZAogICAgIC8vIGV2ZXJ5dGhpbmcgYmVmb3JlIHRo
ZSBpbnN0cnVjdGlvbiBhdCB2YWx1ZUluZGV4LiBUaGUgY3VycmVudCBibG9jayBpcyBsZWZ0IHdp
dGgKICAgICAvLyBldmVyeXRoaW5nIGF0IGFuZCBhZnRlciB2YWx1ZUluZGV4LiBJZiB0aGUgb3B0
aW9uYWwgSW5zZXJ0aW9uU2V0IGlzIHByb3ZpZGVkLCBpdCB3aWxsIGdldApAQCAtODAsMTIgKzY4
LDkgQEAgcHVibGljOgogICAgIEJhc2ljQmxvY2sqIHNwbGl0Rm9yd2FyZCgKICAgICAgICAgQmFz
aWNCbG9jayosIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqID0gbnVsbHB0ciwK
ICAgICAgICAgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotICAgIAotICAgIGJvb2wgZXhlY3V0
ZSgpOwogCiBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwotICAgIFZlY3RvcjxCbG9j
a0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAkocmV2aXNpb24g
MjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04Miw3ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJmZXJlcyhjb25z
dCBFZmZlY3RzJiAKICAgICAgICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQaW5uZWQob3RoZXIs
ICp0aGlzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQogICAgICAg
ICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8IHJlYWRzLm92ZXJs
YXBzKG90aGVyLndyaXRlcyk7CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRl
cykKKyAgICAgICAgfHwgKGZlbmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAogYm9vbCBFZmZlY3Rz
OjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTYsOCBA
QCBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAgICAgICAgICYmIHdy
aXRlc1Bpbm5lZCA9PSBvdGhlci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYgcmVhZHNQaW5uZWQg
PT0gb3RoZXIucmVhZHNQaW5uZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90aGVyLndyaXRlcwot
ICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYgcmVhZHMgPT0gb3Ro
ZXIucmVhZHMKKyAgICAgICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9CiAKIGJvb2wgRWZm
ZWN0czo6b3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTEyMCw2ICsx
MjIsOCBAQCB2b2lkIEVmZmVjdHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uCiAgICAgICAg
IG91dC5wcmludChjb21tYSwgIldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChyZWFkc1Bpbm5lZCkK
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAgICBpZiAoZmVuY2Up
CisgICAgICAgIG91dC5wcmludChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYgKHdyaXRlcykKICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAgICAgaWYgKHJlYWRz
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNpb24gMjEzNDI1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNzEsNiArNzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBib29sIHJlYWRzUGlubmVk
IHsgZmFsc2UgfTsKICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07CisgICAgCisgICAg
Ly8gTWVtb3J5IGZlbmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBlYWNoIG90aGVyIHJl
Z2FyZGxlc3Mgb2YgdGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisgICAgLy8gaWYgdGhl
IG9wZXJhdGlvbiBpcyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZlbmNlIHsgZmFsc2UgfTsK
IAogICAgIEhlYXBSYW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRzOwpAQCAtODksNiAr
OTMsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5n
ZTo6dG9wKCk7CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIHJl
c3VsdC53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcgKzEwOCw3IEBAIHN0cnVj
dCBFZmZlY3RzIHsKIAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8
fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhp
dHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQg
fHwgZmVuY2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHJlb3JkZXJpbmcgaW5z
dHJ1Y3Rpb25zIHdpdGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxkIGNoYW5nZSBwcm9n
cmFtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
RWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0cnVjdCBJbXB1cmVCbG9ja0RhdGEg
ewogCiAgICAgUmFuZ2VTZXQ8SGVhcFJhbmdlPiByZWFkczsgLy8gVGhpcyBvbmx5IGdldHMgdXNl
ZCBmb3IgZm9yd2FyZCBzdG9yZSBlbGltaW5hdGlvbi4KICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+
IHdyaXRlczsgLy8gVGhpcyBnZXRzIHVzZWQgZm9yIGJvdGggbG9hZCBhbmQgc3RvcmUgZWxpbWlu
YXRpb24uCisgICAgYm9vbCBmZW5jZTsKIAogICAgIE1lbW9yeVZhbHVlTWFwIHN0b3Jlc0F0SGVh
ZDsKICAgICBNZW1vcnlWYWx1ZU1hcCBtZW1vcnlWYWx1ZXNBdFRhaWw7CkBAIC0xNzQsMTIgKzE3
NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG1l
bW9yeSAmJiBtZW1vcnktPmlzU3RvcmUoKQogICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS5y
ZWFkcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCi0gICAgICAgICAgICAgICAgICAgICYmICFk
YXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpKQorICAgICAgICAgICAgICAgICAg
ICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQorICAgICAgICAgICAg
ICAgICAgICAmJiAoIWRhdGEuZmVuY2UgfHwgIW1lbW9yeS0+aGFzRmVuY2UoKSkpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGEuc3RvcmVzQXRIZWFkLmFkZChtZW1vcnkpOwogICAgICAgICAgICAg
ICAgIGRhdGEucmVhZHMuYWRkKGVmZmVjdHMucmVhZHMpOwogCiAgICAgICAgICAgICAgICAgaWYg
KEhlYXBSYW5nZSB3cml0ZXMgPSBlZmZlY3RzLndyaXRlcykKICAgICAgICAgICAgICAgICAgICAg
Y2xvYmJlcihkYXRhLCB3cml0ZXMpOworICAgICAgICAgICAgICAgIGRhdGEuZmVuY2UgfD0gZWZm
ZWN0cy5mZW5jZTsKIAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkpOwpAQCAtNDQ1LDggKzQ0
OCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgZGF0YUxvZygiQmFkIG1lbW9yeSB2YWx1ZTogIiwgZGVlcER1bXAobV9wcm9jLCBtX3ZhbHVl
KSwgIlxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzgsNiArNDc5LDkgQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVB
ZnRlckNsb2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXImIGZp
bHRlcikKICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFz
RmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIC8v
IFdlIGNhbiBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0
b3JlIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFueSBv
cGVyYXRpb24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxpa2Ug
aXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1p
bmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIApA
QCAtNjE0LDYgKzYxOCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIs
ICIuLi5cbiIpOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVl
PigpLT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoTWVtb3J5
VmFsdWUqIG1hdGNoID0gbV9kYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5kKHB0ciwgZmlsdGVy
KSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0
Myw3IEBACiAjaW5jbHVkZSAiQjNMb3dlclRvQWlyLmgiCiAjaW5jbHVkZSAiQjNNb3ZlQ29uc3Rh
bnRzLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKKyNpbmNsdWRlICJCM1B1cmVDU0UuaCIK
ICNpbmNsdWRlICJCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCIKICNpbmNsdWRlICJCM1JlZHVjZVN0
cmVuZ3RoLmgiCiAjaW5jbHVkZSAiQjNUaW1pbmdTY29wZS5oIgpAQCAtOTIsNiArOTMsNyBAQCB2
b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MDcKICAgICB9CiAKKyAgICAv
LyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgogICAgIGxvd2VyTWFjcm9zKHByb2Nl
ZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSAiUHVyZU5hTi5oIgorI2luY2x1ZGUgPHd0Zi9CdWJibGVT
b3J0Lmg+CisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEluc2VydGlvblNl
dDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9jaz4KK2NsYXNzIEdlbmVyaWNCbG9ja0lu
c2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxzdGQ6OnVu
aXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0aW9uOworICAgIAorICAgIEdlbmVyaWNC
bG9ja0luc2VydGlvblNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiYgYmxv
Y2tzKQorICAgICAgICA6IG1fYmxvY2tzKGJsb2NrcykKKyAgICB7CisgICAgfQorICAgIAorICAg
IHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5zZXJ0aW9uKQorICAgIHsKKyAgICAgICAg
bV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOworICAgIH0KKworICAgIC8v
IEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGluZGV4LgorICAgIEJhc2ljQmxvY2sqIGlu
c2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pCisgICAgeworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3IEJhc2ljQmxvY2soVUlO
VF9NQVgsIGZyZXF1ZW5jeSkpOworICAgICAgICBCYXNpY0Jsb2NrKiByZXN1bHQgPSBibG9jay5n
ZXQoKTsKKyAgICAgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2Nr
KSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8vIEluc2VydHMgYSBu
ZXcgYmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ugd2lsbCBub3QgcGFz
cyB0aGUgZnJlcXVlbmN5CisgICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMg
dG8ganVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxvY2suIFRoYXQncwor
ICAgIC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KKyAgICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZv
cmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVl
bmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3koKSk7CisgICAgfQorCisgICAgLy8g
SW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxvY2suCisgICAgQmFzaWNCbG9j
ayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFO
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChhZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1
ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBhZnRlci0+ZnJlcXVlbmN5KCkpOworICAg
IH0KKworICAgIGJvb2wgZXhlY3V0ZSgpCisgICAgeworICAgICAgICBpZiAobV9pbnNlcnRpb25z
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAg
IC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4gYW55IG9yZGVyLiBT
bywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCisgICAgICAgIC8vIHJ1bm5pbmcgV1RGOjpl
eGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdl
IHdhbnQgaXQgdG8gYmUKKyAgICAgICAgLy8gZmFzdCwgc28gd2UgdXNlIGJ1YmJsZSBzb3J0Lgor
ICAgICAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5k
KCkpOworICAgICAgICAKKyAgICAgICAgZXhlY3V0ZUluc2VydGlvbnMobV9ibG9ja3MsIG1faW5z
ZXJ0aW9ucyk7CisgICAgICAgIAorICAgICAgICAvLyBQcnVuZSBvdXQgZW1wdHkgZW50cmllcy4g
VGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MKKyAgICAgICAgLy8gaGVhbHRo
eSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jvd2luZy4KKyAgICAgICAgbV9ibG9ja3Mu
cmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAgICBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNp
Y0Jsb2NrPiYgYmxvY2tQdHIpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIHJldHVybiAhYmxv
Y2tQdHI7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0
aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5kaWNlcy4KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fYmxvY2tzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9ibG9j
a3NbaV0tPm1faW5kZXggPSBpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCitwcml2YXRlOgorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBt
X2Jsb2NrczsKKyAgICBWZWN0b3I8QmxvY2tJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKK307
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCShyZXZpc2lvbiAyMTM0
MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNIZWFwUmFuZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdlIG9wZXJhdG9yfChjb25zdCBIZWFwUmFu
Z2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlYXBSYW5nZSgKKyAgICAg
ICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1fYmVnaW4pLAorICAgICAgICAgICAgc3Rk
OjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAgfQorICAgIAogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1fZW5kOyB9CiAKICAgICB1
bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNpb24gMjEzNDI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJbnNlcnRpb25TZXQ6Omluc2VydEJvdHRv
bShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9tKGluZGV4LCBsaWtlVmFsdWUtPm9yaWdp
bigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1ZhbHVlKiBJbnNlcnRpb25TZXQ6Omluc2Vy
dENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVlKQoreworICAgIHJldHVybiBpbnNlcnRW
YWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFsdWUpKTsKK30KKwogdm9pZCBJbnNlcnRp
b25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgYnViYmxlU29ydChtX2lu
c2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTcxLDYgKzcxLDggQEAgcHVibGljOgogCiAgICAgVmFsdWUqIGluc2VydEJvdHRvbShzaXplX3Qg
aW5kZXgsIE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUqIGluc2VydEJvdHRvbShzaXplX3QgaW5k
ZXgsIFZhbHVlKik7CisgICAgCisgICAgVmFsdWUqIGluc2VydENsb25lKHNpemVfdCBpbmRleCwg
VmFsdWUqKTsKIAogICAgIHZvaWQgZXhlY3V0ZShCYXNpY0Jsb2NrKik7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNw
cAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTGVnYWxp
emVNZW1vcnlPZmZzZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSArMjgsOCBAQAogCiAj
aWYgRU5BQkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkFpckFyZy5oIgogI2luY2x1ZGUgIkIzSW5z
ZXJ0aW9uU2V0SW5saW5lcy5oIgotI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRl
ICJCM01lbW9yeVZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2lu
Y2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgi
CkBAIC00OSwyMCArNDgsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCBydW4oKQogICAgIHsKLSAg
ICAgICAgaWYgKCFpc0FSTTY0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KKyAgICAgICAgLy8g
RklYTUU6IFBlcmhhcHMgdGhpcyBzaG91bGQgYmUgbW92ZWQgdG8gbG93ZXJNYWNyb3MsIGFuZCBx
dWlya3MgbW9kZSBjYW4gaW1wb3NlIHRoZSByZXF1aXJlbWVudAorICAgICAgICAvLyB0aGF0IHRo
ZSBvZmZzZXQgaXMgbGVnYWwuIEJ1dCBmb3Igbm93IHRoaXMgaXMgc29ydCBvZiBPSyBiZWNhdXNl
IHdlIHJ1biBwdXJlQ1NFIAorICAgICAgICAKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IG1fcHJvYykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4
IDwgYmxvY2stPnNpemUoKTsgKytpbmRleCkgewogICAgICAgICAgICAgICAgIE1lbW9yeVZhbHVl
KiBtZW1vcnlWYWx1ZSA9IGJsb2NrLT5hdChpbmRleCktPmFzPE1lbW9yeVZhbHVlPigpOwogICAg
ICAgICAgICAgICAgIGlmICghbWVtb3J5VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBtZW1vcnlWYWx1ZS0+b2Zm
c2V0KCk7Ci0gICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBtZW1vcnlWYWx1ZS0+YWNjZXNz
V2lkdGgoKTsKLSAgICAgICAgICAgICAgICBpZiAoIUFpcjo6QXJnOjppc1ZhbGlkQWRkckZvcm0o
b2Zmc2V0LCB3aWR0aCkpIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAo
IW1lbW9yeVZhbHVlLT5pc0xlZ2FsT2Zmc2V0KG1lbW9yeVZhbHVlLT5vZmZzZXQoKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgVmFsdWUqIGJhc2UgPSBtZW1vcnlWYWx1ZS0+bGFzdENoaWxkKCk7
Ci0gICAgICAgICAgICAgICAgICAgIFZhbHVlKiBvZmZzZXRWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydEludENvbnN0YW50KGluZGV4LCBtZW1vcnlWYWx1ZS0+b3JpZ2luKCksIHBvaW50ZXJU
eXBlKCksIG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBvZmZzZXRWYWx1ZSA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KGluZGV4LCBtZW1vcnlWYWx1ZS0+b3Jp
Z2luKCksIHBvaW50ZXJUeXBlKCksIG1lbW9yeVZhbHVlLT5vZmZzZXQoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIFZhbHVlKiByZXNvbHZlZEFkZHJlc3MgPSBtX3Byb2MuYWRkPFZhbHVlPihBZGQs
IG1lbW9yeVZhbHVlLT5vcmlnaW4oKSwgYmFzZSwgb2Zmc2V0VmFsdWUpOwogICAgICAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRWYWx1ZShpbmRleCwgcmVzb2x2ZWRBZGRyZXNz
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAko
cmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNy
b3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTkgKzI5LDIyIEBACiAjaWYgRU5BQkxFKEIz
X0pJVCkKIAogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgorI2lu
Y2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiQjNCbG9ja0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzQ2FzZUNvbGxlY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjND
b25zdFB0clZhbHVlLmgiCisjaW5jbHVkZSAiQjNGZW5jZVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNJ
bnNlcnRpb25TZXRJbmxpbmVzLmgiCi0jaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1
ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFsdWUu
aCIKICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJCM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUg
IkIzU3dpdGNoVmFsdWUuaCIKICNpbmNsdWRlICJCM1Vwc2lsb25WYWx1ZS5oIgorI2luY2x1ZGUg
IkIzVXNlQ291bnRzLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJD
Q2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCkBAIC01OCwxMSArNjEsMTQg
QEAgcHVibGljOgogICAgICAgICA6IG1fcHJvYyhwcm9jKQogICAgICAgICAsIG1fYmxvY2tJbnNl
cnRpb25TZXQocHJvYykKICAgICAgICAgLCBtX2luc2VydGlvblNldChwcm9jKQorICAgICAgICAs
IG1fdXNlQ291bnRzKHByb2MpCiAgICAgewogICAgIH0KIAogICAgIGJvb2wgcnVuKCkKICAgICB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Byb2MuaGFzUXVpcmtzKCkpOworICAgICAgICAK
ICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewogICAgICAgICAgICAg
bV9ibG9jayA9IGJsb2NrOwogICAgICAgICAgICAgcHJvY2Vzc0N1cnJlbnRCbG9jaygpOwpAQCAt
NzIsNiArNzgsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9wcm9jLnJlc2V0UmVhY2hhYmls
aXR5KCk7CiAgICAgICAgICAgICBtX3Byb2MuaW52YWxpZGF0ZUNGRygpOwogICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHdlJ3ZlIAorICAgICAgICBt
X3Byb2Muc2V0SGFzUXVpcmtzKHRydWUpOworICAgICAgICAKICAgICAgICAgcmV0dXJuIG1fY2hh
bmdlZDsKICAgICB9CiAgICAgCkBAIC0xODUsNyArMTk1LDExOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIERlcGVuZDogewor
ICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIENy
ZWF0ZSBhIGxvYWQtbG9hZCBmZW5jZS4gVGhpcyBjb2RlZ2VucyB0byBub3RoaW5nIG9uIFg4Ni4g
V2UgdXNlIGl0IHRvIHRlbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGNvbXBpbGVyIG5v
dCB0byBibG9jayBsb2FkIG1vdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgRmVuY2VWYWx1ZSog
ZmVuY2UgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8RmVuY2VWYWx1ZT4obV9pbmRleCwgbV9vcmln
aW4pOworICAgICAgICAgICAgICAgICAgICBmZW5jZS0+cmVhZCA9IEhlYXBSYW5nZSgpOworICAg
ICAgICAgICAgICAgICAgICBmZW5jZS0+d3JpdGUgPSBIZWFwUmFuZ2U6OnRvcCgpOworICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gS2lsbCB0aGUgRGVwZW5kLCB3
aGljaCBzaG91bGQgdW5sb2NrIGEgYnVuY2ggb2YgY29kZSBzaW1wbGlmaWNhdGlvbi4KKyAgICAg
ICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhCb3R0b20obV9pbnNlcnRpb25TZXQs
IG1faW5kZXgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9j
aGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAg
ICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2
KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4o
KTsKKyAgICAgICAgICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+YWNjZXNzV2lkdGgoKTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNDYW5vbmljYWxXaWR0aCh3
aWR0aCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIFZhbHVlKiBleHBlY3RlZFZhbHVlID0gYXRvbWljLT5jaGlsZCgwKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBPbiBBUk0sIHRoZSBsb2FkIHBhcnQg
b2YgdGhlIENBUyBkb2VzIGEgbG9hZCB3aXRoIHplcm8gZXh0ZW5zaW9uLiBUaGVyZWZvcmUsIHdl
IG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0byB6ZXJvLWV4dGVuZCB0aGUgaW5wdXQuCisgICAg
ICAgICAgICAgICAgVmFsdWUqIG1hc2tlZEV4cGVjdGVkVmFsdWUgPSBtX2luc2VydGlvblNldC5p
bnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBCaXRBbmQsIG1fb3Jp
Z2luLCBleHBlY3RlZFZhbHVlLAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnRJbnRDb25zdGFudChtX2luZGV4LCBleHBlY3RlZFZhbHVlLCBtYXNrKHdpZHRoKSkpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF0b21pYy0+Y2hpbGQoMCkgPSBtYXNr
ZWRFeHBlY3RlZFZhbHVlOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdB
bmQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRv
bWljWGNoZ1N1YjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAg
IGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAgICAgIC8vIE9uIFg4NiwgdGhlc2UgbWF5
IGFjdHVhbGx5IHJldHVybiBnYXJiYWdlIGluIHRoZSBoaWdoIGJpdHMuIE9uIEFSTTY0LCB0aGVz
ZSBzb3J0YQorICAgICAgICAgICAgICAgIC8vIHplcm8tZXh0ZW5kIHRoZWlyIGhpZ2ggYml0cywg
ZXhjZXB0IHRoYXQgdGhlIGhpZ2ggYml0cyBtaWdodCBnZXQgcG9sbHV0ZWQgYnkgaGlnaAorICAg
ICAgICAgICAgICAgIC8vIGJpdHMgaW4gdGhlIG9wZXJhbmQuIC4gU28sIGVpdGhlciB3YXksIHdl
IG5lZWQgdG8gdGhyb3cgYSBzaWduLWV4dGVuZCBvbiB0aGVzZQorICAgICAgICAgICAgICAgIC8v
IHRoaW5ncy4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljWGNo
Z1N1YiAmJiBtX3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBPbiB4ODYsIHhjaGdhZGQgaXMgYmV0dGVyIHRoYW4geGNoZ3N1YiBpZiBpdCBo
YXMgYW55IHVzZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+c2V0T3Bjb2Rl
VW5zYWZlbHkoQXRvbWljWGNoZ0FkZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVl
LT5jaGlsZCgwKSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbmRleCwgTmVnLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCkp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICBib29sIGV4ZW1wdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWlj
WGNoZ0FuZDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhlbXB0ID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZW1wdCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7
CisgICAgICAgICAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMtPmFjY2Vzc1dpZHRoKCk7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lk
dGgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBWYWx1ZSogbmV3VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+
KAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBzaWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwg
bV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENsb25l
KG1faW5kZXgsIGF0b21pYykpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1f
dmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAgICAgICAgICAgIG1f
Y2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgICAgIGNh
c2UgTG9hZDE2WjogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBNZW1vcnlW
YWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAgICAg
ICAgaWYgKCFtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFN1Yi13aWR0aCBsb2FkLWFjcSBv
biBBUk02NCBhbHdheXMgc2lnbiBleHRlbmRzLgorICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdM
b2FkID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRleCwgbWVtb3J5KTsKKyAgICAg
ICAgICAgICAgICBuZXdMb2FkLT5zZXRPcGNvZGVVbnNhZmVseShtZW1vcnktPm9wY29kZSgpID09
IExvYWQ4WiA/IExvYWQ4UyA6IExvYWQxNlMpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIG5ld0xvYWQsCisg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KAorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgbV9vcmlnaW4sIEludDMyLCBtYXNrKG1lbW9y
eS0+YWNjZXNzV2lkdGgoKSkpKTsKIAorICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VX
aXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpAQCAtNDcwLDYgKzU5Miw3IEBAIHByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7
CiAgICAgQmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsKICAgICBJbnNlcnRp
b25TZXQgbV9pbnNlcnRpb25TZXQ7CisgICAgVXNlQ291bnRzIG1fdXNlQ291bnRzOwogICAgIEJh
c2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKICAgICBWYWx1ZSogbV92
YWx1ZTsKQEAgLTQ3NywyMSArNjAwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NoYW5nZWQg
eyBmYWxzZSB9OwogfTsKIAotYm9vbCBsb3dlck1hY3Jvc0ltcGwoUHJvY2VkdXJlJiBwcm9jKQot
ewotICAgIExvd2VyTWFjcm9zIGxvd2VyTWFjcm9zKHByb2MpOwotICAgIHJldHVybiBsb3dlck1h
Y3Jvcy5ydW4oKTsKLX0KLQogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIGJvb2wgbG93ZXJN
YWNyb3MoUHJvY2VkdXJlJiBwcm9jKQogewotICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9j
LCAibG93ZXJNYWNyb3MiKTsKLSAgICBib29sIHJlc3VsdCA9IGxvd2VyTWFjcm9zSW1wbChwcm9j
KTsKLSAgICBpZiAoc2hvdWxkVmFsaWRhdGVJUigpKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bG93ZXJNYWNyb3NJbXBsKHByb2MpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIExvd2VyTWFj
cm9zIGxvd2VyTWFjcm9zKHByb2MpOworICAgIHJldHVybiBsb3dlck1hY3Jvcy5ydW4oKTsKIH0K
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3Bw
CShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1h
Y3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTYsMTUgKzE1
NiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBSb3RMOiB7CiAgICAgICAgICAgICAg
ICAgLy8gQVJNNjQgZG9lc24ndCBoYXZlIGEgcm90YXRlIGxlZnQuCiAgICAgICAgICAgICAgICAg
aWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5p
bnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNo
aWxkKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBt
X3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV92
YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgVmFs
dWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBOZWcs
IG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAg
ICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgs
IFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOwor
ICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMjEz
NDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDEyICsyOCwxNCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2lu
Y2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWlyQ0NhbGxTcGVjaWFs
LmgiCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpckluc2VydGlvblNldC5oIgog
I2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tTbG90LmgiCiAj
aW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrV29y
a2xpc3QuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTQxLDcgKzQzLDcgQEAKICNp
bmNsdWRlICJCM0NvbW11dGF0aXZpdHkuaCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKICNp
bmNsdWRlICJCM0ZlbmNlVmFsdWUuaCIKLSNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5j
bHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1BhdGNocG9pbnRTcGVj
aWFsLmgiCiAjaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKICNpbmNsdWRlICJCM1BoYXNl
U2NvcGUuaCIKQEAgLTcyLDYgKzc0LDE2IEBAIG5hbWVzcGFjZSB7CiAKIGNvbnN0IGJvb2wgdmVy
Ym9zZSA9IGZhbHNlOwogCisvLyBGSVhNRTogV2Ugd291bGRuJ3QgbmVlZCB0aGlzIGlmIEFpciBz
dXBwb3J0ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFpcjo6S2luZC4KKy8vIE9PUFMhISEgKG5lZWQg
YSBidWcgVVJMKQorI2RlZmluZSBPUENPREVfRk9SX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAor
ICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDggOiBcCisgICAgKHdpZHRoKSA9PSBX
aWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgzMiA/IG9wY29k
ZSAjIyAzMiA6IFwKKyAgICBvcGNvZGUgIyMgNjQpCisjZGVmaW5lIE9QQ09ERV9GT1JfQ0FOT05J
Q0FMX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAorICAgICh3aWR0aCkgPT0gV2lkdGg2NCA/IG9w
Y29kZSAjIyA2NCA6IG9wY29kZSAjIyAzMikKKwogY2xhc3MgTG93ZXJUb0FpciB7CiBwdWJsaWM6
CiAgICAgTG93ZXJUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSkKQEAgLTgzLDYgKzk1LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgLCBtX2RvbWluYXRvcnMocHJvY2VkdXJlLmRvbWluYXRvcnMoKSkK
ICAgICAgICAgLCBtX3Byb2NlZHVyZShwcm9jZWR1cmUpCiAgICAgICAgICwgbV9jb2RlKHByb2Nl
ZHVyZS5jb2RlKCkpCisgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChtX2NvZGUpCisjaWYg
Q1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICAgICAgLCBtX2VheChYODZSZWdpc3RlcnM6OmVh
eCkKKyAgICAgICAgLCBtX2VjeChYODZSZWdpc3RlcnM6OmVjeCkKKyAgICAgICAgLCBtX2VkeChY
ODZSZWdpc3RlcnM6OmVkeCkKKyNlbmRpZgogICAgIHsKICAgICB9CiAKQEAgLTEyNCwxNCArMTQy
LDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3RlZCBhZGRyZXNzIGV4cHJlc3Npb24gYmVm
b3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhlIGxvb3AuCiAgICAgICAgIGZvciAoQjM6
OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUuYmxvY2tzSW5QcmVPcmRlcigpKSB7CiAg
ICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAgICAgICAgICAvLyBSZXNldCBzb21lIHN0
YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CiAKICAgICAgICAgICAgIG1faXNS
YXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAKICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nIEJsb2NrICIsICpibG9jaywg
IjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUg
c3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KKyAgICAgICAgICAgIGZvciAoQjM6OkZy
ZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CisgICAgICAg
ICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCkuYXBwZW5kKAorICAg
ICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrVG9CbG9ja1tzdWNj
ZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOworICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBpbiByZXZlcnNlIG9yZGVyIHNvIHdlIHNl
ZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBhbGxvd3MgdXMKICAgICAgICAgICAgIC8v
IHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5LgogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAtMTQ5LDE5ICsxNzEsMTAgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gTm93
IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJz
ZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAgICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAg
ICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0c1tpXSkKLSAgICAgICAgICAgICAg
ICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBlbmRJbnN0KFdURk1vdmUoaW5zdCkpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vz
c29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50
ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICAg
ICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCkuYXBwZW5kKAotICAgICAgICAg
ICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3Iu
YmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXSk7
CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fYmxvY2tJbnNlcnRpb25TZXQuZXhlY3V0
ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2NvZGUpOwog
ICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xvZ3VlKQpAQCAtNDQ4LDEyICs0NjEsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJl
dHVybiBzY2FsZTsKICAgICB9Ci0KKyAgICAKICAgICAvLyBUaGlzIHR1cm5zIHRoZSBnaXZlbiBv
cGVyYW5kIGludG8gYW4gYWRkcmVzcy4KICAgICBBcmcgZWZmZWN0aXZlQWRkcihWYWx1ZSogYWRk
cmVzcywgaW50MzJfdCBvZmZzZXQsIFdpZHRoIHdpZHRoKQogICAgIHsKICAgICAgICAgQVNTRVJU
KEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgd2lkdGgpKTsKLQorICAgICAgICAKICAgICAg
ICAgYXV0byBmYWxsYmFjayA9IFsmXSAoKSAtPiBBcmcgewogICAgICAgICAgICAgcmV0dXJuIEFy
Zzo6YWRkcih0bXAoYWRkcmVzcyksIG9mZnNldCk7CiAgICAgICAgIH07CkBAIC01MzUsMTIgKzU0
OCwxNSBAQCBwcml2YXRlOgogICAgICAgICBNZW1vcnlWYWx1ZSogdmFsdWUgPSBtZW1vcnlWYWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CiAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICBy
ZXR1cm4gQXJnKCk7CisgICAgICAgIAorICAgICAgICBpZiAodmFsdWUtPnJlcXVpcmVzU2ltcGxl
QWRkcigpKQorICAgICAgICAgICAgcmV0dXJuIEFyZzo6c2ltcGxlQWRkcih0bXAodmFsdWUtPmxh
c3RDaGlsZCgpKSk7CiAKICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB2YWx1ZS0+b2Zmc2V0KCk7
CiAgICAgICAgIFdpZHRoIHdpZHRoID0gdmFsdWUtPmFjY2Vzc1dpZHRoKCk7CiAKICAgICAgICAg
QXJnIHJlc3VsdCA9IGVmZmVjdGl2ZUFkZHIodmFsdWUtPmxhc3RDaGlsZCgpLCBvZmZzZXQsIHdp
ZHRoKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5pc1ZhbGlkRm9ybSh3aWR0aCkpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuaXNWYWxpZEZvcm0od2lkdGgpKTsKIAogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTU2MSwxMSArNTc3LDE5IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgQXJnUHJvbWlzZSBsb2FkUHJvbWlzZUFueU9wY29kZShWYWx1ZSogbG9hZFZhbHVlKQog
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4o
KSk7CiAgICAgICAgIGlmICghY2FuQmVJbnRlcm5hbChsb2FkVmFsdWUpKQogICAgICAgICAgICAg
cmV0dXJuIEFyZygpOwogICAgICAgICBpZiAoY3Jvc3Nlc0ludGVyZmVyZW5jZShsb2FkVmFsdWUp
KQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwotICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChh
ZGRyKGxvYWRWYWx1ZSksIGxvYWRWYWx1ZSk7CisgICAgICAgIC8vIE9uIHg4NiwgYWxsIGxvYWRz
IGhhdmUgZmVuY2VzLiBEb2luZyB0aGlzIGtpbmQgb2YgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIHdp
bGwgbW92ZSB0aGUgbG9hZCwKKyAgICAgICAgLy8gYnV0IHRoYXQncyBmaW5lIGJlY2F1c2Ugb3Vy
IGludGVyZmVyZW5jZSBhbmFseXNpcyBzdG9wcyB0aGUgbW90aW9uIG9mIGZlbmNlcyBhcm91bmQg
b3RoZXIKKyAgICAgICAgLy8gZmVuY2VzLiBTbywgYW55IGxvYWQgbW90aW9uIHdlIGludHJvZHVj
ZSBoZXJlIHdvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLgorICAgICAgICBpZiAoIWlzWDg2KCkgJiYg
bG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJl
dHVybiBBcmcoKTsKKyAgICAgICAgQXJnIGxvYWRBZGRyID0gYWRkcihsb2FkVmFsdWUpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChsb2FkQWRkcik7CisgICAgICAgIEFyZ1Byb21pc2UgcmVzdWx0
KGxvYWRBZGRyLCBsb2FkVmFsdWUpOwogICAgICAgICBpZiAobG9hZFZhbHVlLT50cmFwcygpKQog
ICAgICAgICAgICAgcmVzdWx0LnNldFRyYXBzKHRydWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtNzM4LDcgKzc2Miw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQotCisgICAgCiAgICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bj
b2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBvcGNvZGVEb3VibGUsIEFpcjo6T3Bjb2RlIG9wY29k
ZUZsb2F0LCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZT4KICAg
ICB2b2lkIGFwcGVuZEJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCiAgICAgewpAQCAt
ODk3LDExICs5MjEsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAgICAgICBhcHBlbmQoTW92ZSwgdG1w
KHZhbHVlKSwgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChhbW91bnQp
LCBUbXAoWDg2UmVnaXN0ZXJzOjplY3gpKTsKLSAgICAgICAgYXBwZW5kKG9wY29kZSwgVG1wKFg4
NlJlZ2lzdGVyczo6ZWN4KSwgdG1wKG1fdmFsdWUpKTsKLSNlbmRpZgorICAgICAgICBhcHBlbmQo
TW92ZSwgdG1wKGFtb3VudCksIG1fZWN4KTsKKyAgICAgICAgYXBwZW5kKG9wY29kZSwgbV9lY3gs
IHRtcChtX3ZhbHVlKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2Rl
MzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0PgpAQCAtOTMwLDEwICs5NTIsMTYgQEAgcHJpdmF0ZToK
ICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBDb21t
dXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZT4KICAgICBib29sIHRyeUFw
cGVuZFN0b3JlQmluT3AoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkKICAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKKyAgICAgICAgCiAg
ICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9w
Y29kZTY0LCBsZWZ0LT50eXBlKCkpOwogICAgICAgICBpZiAob3Bjb2RlID09IEFpcjo6T29wcykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCisgICAgICAgIC8vIE9uIHg4Niwg
YWxsIHN0b3JlcyBoYXZlIGZlbmNlcywgYW5kIHRoaXMgaXNuJ3QgcmVvcmRlcmluZyB0aGUgc3Rv
cmUgaXRzZWxmLgorICAgICAgICBpZiAoIWlzWDg2KCkgJiYgbV92YWx1ZS0+YXM8TWVtb3J5VmFs
dWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAog
ICAgICAgICBBcmcgc3RvcmVBZGRyID0gYWRkcihtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUKHN0
b3JlQWRkcik7CiAKQEAgLTk5MywxMSArMTAyMSw1MCBAQCBwcml2YXRlOgogCiAgICAgICAgIHJl
dHVybiBJbnN0KG1vdmUsIG1fdmFsdWUsIHRtcCh2YWx1ZSksIGRlc3QpOwogICAgIH0KKyAgICAK
KyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShXaWR0aCB3aWR0aCwgQmFuayBiYW5rLCBib29s
IHJlbGVhc2UpCisgICAgeworICAgICAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgICAgIGNhc2Ug
V2lkdGg4OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAg
ICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsOCA6IEFpcjo6U3RvcmU4OworICAgICAgICBj
YXNlIFdpZHRoMTY6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAg
ICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwxNiA6IEFpcjo6U3RvcmUxNjsKKyAg
ICAgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAg
ICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwz
MiA6IE1vdmUzMjsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRmxvYXQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXaWR0aDY0Ogor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM2NEJpdCgpKTsKKyAgICAgICAgICAgIHN3aXRj
aCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVsZWFzZSA/IFN0b3JlUmVsNjQgOiBNb3ZlOworICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIE1vdmVEb3VibGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAK
KyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAg
ICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtZW1vcnktPmlzU3RvcmUoKSk7CisgICAgICAgIHJldHVybiBzdG9y
ZU9wY29kZShtZW1vcnktPmFjY2Vzc1dpZHRoKCksIG1lbW9yeS0+YWNjZXNzQmFuaygpLCBtZW1v
cnktPmhhc0ZlbmNlKCkpOworICAgIH0KIAogICAgIEluc3QgY3JlYXRlU3RvcmUoVmFsdWUqIHZh
bHVlLCBjb25zdCBBcmcmIGRlc3QpCiAgICAgewotICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bj
b2RlID0gbW92ZUZvclR5cGUodmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVT
dG9yZShtb3ZlT3Bjb2RlLCB2YWx1ZSwgZGVzdCk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVP
cGNvZGUgPSBzdG9yZU9wY29kZSh2YWx1ZSk7CisgICAgICAgIHJldHVybiBjcmVhdGVTdG9yZSht
b3ZlT3Bjb2RlLCB2YWx1ZS0+Y2hpbGQoMCksIGRlc3QpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3M+CkBAIC0xMDA1LDcgKzEwNzIsNyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVTdG9yZShzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKSk7CiAgICAgfQotCisgICAgCiAgICAgQWlyOjpPcGNvZGUg
bW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CkBA
IC0xMDcyLDcgKzExMzksNDEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1faW5zdHMubGFz
dCgpLmFwcGVuZChpbnN0KTsKICAgICB9CisgICAgCisgICAgdm9pZCBmaW5pc2hBcHBlbmRpbmdJ
bnN0cnVjdGlvbnMoQWlyOjpCYXNpY0Jsb2NrKiB0YXJnZXQpCisgICAgeworICAgICAgICAvLyBO
b3cgYXBwZW5kIHRoZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMgY29udGFpbnMgdGhlbSBpbiByZXZl
cnNlIG9yZGVyLCBzbyB3ZSBwcm9jZXNzCisgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAg
ICBmb3IgKEluc3QmIGluc3QgOiBtX2luc3RzW2ldKQorICAgICAgICAgICAgICAgIHRhcmdldC0+
YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKKyAgICAgICAgfQorICAgICAgICBtX2luc3RzLnJl
c2l6ZSgwKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpCYXNpY0Jsb2NrKiBuZXdCbG9jaygpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlcihtX2Js
b2NrVG9CbG9ja1ttX2Jsb2NrXSk7CisgICAgfQogCisgICAgLy8gTk9URTogVGhpcyB3aWxsIGNy
ZWF0ZSBhIGNvbnRpbnVhdGlvbiBibG9jayAoYG5leHRCbG9ja2ApICphZnRlciogYW55IGJsb2Nr
cyB5b3UndmUgY3JlYXRlZCB1c2luZworICAgIC8vIG5ld0Jsb2NrKCkuIFNvLCBpdCdzIHByZWZl
cmFibGUgdG8gY3JlYXRlIGFsbCBvZiB5b3VyIGJsb2NrcyB1cGZyb250IHVzaW5nIG5ld0Jsb2Nr
KCkuIEFsc28gbm90ZQorICAgIC8vIHRoYXQgYW55IGNvZGUgeW91IGVtaXQgYmVmb3JlIHRoaXMg
d2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIGNvbnRpbnVhdGlvbiwgYW5kIGFueSBjb2RlIHlvdSBl
bWl0CisgICAgLy8gYWZ0ZXIgdGhpcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBwcmV2aW91cyBi
bG9jay4KKyAgICB2b2lkIHNwbGl0QmxvY2soQWlyOjpCYXNpY0Jsb2NrKiYgcHJldmlvdXNCbG9j
aywgQWlyOjpCYXNpY0Jsb2NrKiYgbmV4dEJsb2NrKQorICAgIHsKKyAgICAgICAgQWlyOjpCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdOworICAgICAgICAKKyAgICAg
ICAgcHJldmlvdXNCbG9jayA9IGJsb2NrOworICAgICAgICBuZXh0QmxvY2sgPSBtX2Jsb2NrSW5z
ZXJ0aW9uU2V0Lmluc2VydEFmdGVyKGJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGZpbmlzaEFw
cGVuZGluZ0luc3RydWN0aW9ucyhuZXh0QmxvY2spOworICAgICAgICBuZXh0QmxvY2stPnN1Y2Nl
c3NvcnMoKSA9IGJsb2NrLT5zdWNjZXNzb3JzKCk7CisgICAgICAgIGJsb2NrLT5zdWNjZXNzb3Jz
KCkuY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJbnN0
PigpKTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4g
QXJndW1lbnRzPgogICAgIFQqIGVuc3VyZVNwZWNpYWwoVComIGZpZWxkLCBBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCiAgICAgewpAQCAtMTEyMiw3ICsxMjIzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlN0YWNrQXJndW1l
bnQ6CiAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjpjYWxsQXJnKHZhbHVlLnJlcCgpLm9mZnNl
dEZyb21TUCgpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZS52YWx1ZSgpLCBh
cmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1vdmVGb3JUeXBlKHZhbHVlLnZhbHVl
KCktPnR5cGUoKSksIHZhbHVlLnZhbHVlKCksIGFyZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0xOTYwLDYgKzIwNjEsMzEzIEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kWDg2RGl2KEIzOjpPcGNvZGUgb3Ap
CisgICAgeworICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVXb3JkOworICAgICAg
ICBBaXI6Ok9wY29kZSBkaXY7CisgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+dHlwZSgpKSB7Cisg
ICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2
Q29udmVydFRvRG91YmxlV29yZDMyOworICAgICAgICAgICAgZGl2ID0gWDg2RGl2MzI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgIGNvbnZlcnRU
b0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0OworICAgICAgICAgICAgZGl2ID0g
WDg2RGl2NjQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8IG9wID09IE1vZCk7CisgICAg
ICAgIFRtcCByZXN1bHQgPSBvcCA9PSBEaXYgPyBtX2VheCA6IG1fZWR4OworCisgICAgICAgIGFw
cGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgIGFwcGVu
ZChjb252ZXJ0VG9Eb3VibGVXb3JkLCBtX2VheCwgbV9lZHgpOworICAgICAgICBhcHBlbmQoZGl2
LCBtX2VheCwgbV9lZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOworICAgICAgICBhcHBlbmQo
TW92ZSwgcmVzdWx0LCB0bXAobV92YWx1ZSkpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kWDg2
VURpdihCMzo6T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2ID0gbV92
YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0OworCisgICAgICAg
IEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVNb2QpOworICAgICAgICBUbXAgcmVzdWx0ID0g
b3AgPT0gVURpdiA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcCht
X3ZhbHVlLT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKFhvcjY0LCBtX2VkeCwg
bV9lZHgpOworICAgICAgICBhcHBlbmQoZGl2LCBtX2VheCwgbV9lZHgsIHRtcChtX3ZhbHVlLT5j
aGlsZCgxKSkpOworICAgICAgICBhcHBlbmQoTW92ZSwgcmVzdWx0LCB0bXAobV92YWx1ZSkpOwor
ICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBsb2FkTGlua09wY29kZShXaWR0aCB3aWR0aCwg
Ym9vbCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmZW5jZSA/IE9QQ09ERV9GT1JfV0lE
VEgoTG9hZExpbmtBY3EsIHdpZHRoKSA6IE9QQ09ERV9GT1JfV0lEVEgoTG9hZExpbmssIHdpZHRo
KTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVDb25kT3Bjb2RlKFdpZHRoIHdp
ZHRoLCBib29sIGZlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZlbmNlID8gT1BDT0RFX0ZP
Ul9XSURUSChTdG9yZUNvbmRSZWwsIHdpZHRoKSA6IE9QQ09ERV9GT1JfV0lEVEgoU3RvcmVDb25k
LCB3aWR0aCk7CisgICAgfQorICAgIAorICAgIC8vIFRoaXMgY2FuIGVtaXQgY29kZSBmb3IgdGhl
IGZvbGxvd2luZyBwYXR0ZXJuczoKKyAgICAvLyBBdG9taWNXZWFrQ0FTCisgICAgLy8gQml0WG9y
KEF0b21pY1dlYWtDQVMsIDEpCisgICAgLy8gQXRvbWljU3Ryb25nQ0FTCisgICAgLy8gRXF1YWwo
QXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkKKyAgICAvLyBOb3RFcXVhbChBdG9taWNTdHJvbmdD
QVMsIGV4cGVjdGVkKQorICAgIC8vIEJyYW5jaChBdG9taWNXZWFrQ0FTKQorICAgIC8vIEJyYW5j
aChFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKSkKKyAgICAvLyBCcmFuY2goTm90RXF1
YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAgLy8KKyAgICAvLyBJdCBhc3N1bWVz
IHRoYXQgYXRvbWljVmFsdWUgcG9pbnRzIHRvIHRoZSBDQVMsIGFuZCBtX3ZhbHVlIHBvaW50cyB0
byB0aGUgaW5zdHJ1Y3Rpb24gYmVpbmcKKyAgICAvLyBnZW5lcmF0ZWQuIEl0IGFzc3VtZXMgdGhh
dCB5b3UndmUgY29uc3VtZWQgZXZlcnl0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGNvbnN1bWVkLgor
ICAgIHZvaWQgYXBwZW5kQ0FTKFZhbHVlKiBhdG9taWNWYWx1ZSwgYm9vbCBpbnZlcnQpCisgICAg
eworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gYXRvbWljVmFsdWUtPmFzPEF0b21pY1Zh
bHVlPigpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChhdG9taWMpOworICAgICAgICAKKyAgICAg
ICAgYm9vbCBpc0JyYW5jaCA9IG1fdmFsdWUtPm9wY29kZSgpID09IEJyYW5jaDsKKyAgICAgICAg
Ym9vbCBpc1N0cm9uZyA9IGF0b21pYy0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTOworICAg
ICAgICBib29sIHJldHVybnNPbGRWYWx1ZSA9IG1fdmFsdWUtPm9wY29kZSgpID09IEF0b21pY1N0
cm9uZ0NBUzsKKyAgICAgICAgYm9vbCBoYXNGZW5jZSA9IGF0b21pYy0+aGFzRmVuY2UoKTsKKyAg
ICAgICAgCisgICAgICAgIFdpZHRoIHdpZHRoID0gYXRvbWljLT5hY2Nlc3NXaWR0aCgpOworICAg
ICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKworICAgICAgICBUbXAgdmFsdWVSZXN1
bHRUbXA7CisgICAgICAgIFRtcCBib29sUmVzdWx0VG1wOworICAgICAgICBpZiAocmV0dXJuc09s
ZFZhbHVlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghaW52ZXJ0KTsKKyAgICAgICAg
ICAgIHZhbHVlUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOworICAgICAgICAgICAgYm9vbFJlc3Vs
dFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICB9IGVsc2UgaWYgKGlzQnJhbmNoKSB7
CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAg
ICAgICAgYm9vbFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAg
ICAgICAgIGJvb2xSZXN1bHRUbXAgPSB0bXAobV92YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIFRtcCBzdWNjZXNzQm9vbFJlc3VsdFRtcDsKKyAgICAgICAgaWYgKGlzU3Ryb25n
ICYmICFpc0JyYW5jaCkKKyAgICAgICAgICAgIHN1Y2Nlc3NCb29sUmVzdWx0VG1wID0gbV9jb2Rl
Lm5ld1RtcChHUCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN1Y2Nlc3NCb29sUmVzdWx0
VG1wID0gYm9vbFJlc3VsdFRtcDsKKworICAgICAgICBUbXAgZXhwZWN0ZWRWYWx1ZVRtcCA9IHRt
cChhdG9taWMtPmNoaWxkKDApKTsKKyAgICAgICAgVG1wIG5ld1ZhbHVlVG1wID0gdG1wKGF0b21p
Yy0+Y2hpbGQoMSkpOworICAgICAgICAKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sgc3Vj
Y2VzczsKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sgZmFpbHVyZTsKKyAgICAgICAgaWYg
KGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9j
a10tPnN1Y2Nlc3NvcihpbnZlcnQpOworICAgICAgICAgICAgZmFpbHVyZSA9IG1fYmxvY2tUb0Js
b2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoIWludmVydCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JU
eXBlKGF0b21pYy0+YWNjZXNzVHlwZSgpKSwgaW1tT3JUbXAoYXRvbWljLT5jaGlsZCgwKSksIG1f
ZWF4KTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdHJvbmdDQVMsIHdpZHRoKSwgbV9lYXgs
IG5ld1ZhbHVlVG1wLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1v
dmVGb3JUeXBlKGF0b21pYy0+YWNjZXNzVHlwZSgpKSwgbV9lYXgsIHZhbHVlUmVzdWx0VG1wKTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgICAgICBhcHBl
bmQoT1BDT0RFX0ZPUl9XSURUSChCcmFuY2hBdG9taWNTdHJvbmdDQVMsIHdpZHRoKSwgQXJnOjpz
dGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgsIG5ld1ZhbHVlVG1wLCBh
ZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c2V0U3Vj
Y2Vzc29ycyhzdWNjZXNzLCBmYWlsdXJlKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0cm9uZ0NBUywgd2lkdGgpLCBB
cmc6OnN0YXR1c0NvbmQoaW52ZXJ0ID8gTWFjcm9Bc3NlbWJsZXI6OkZhaWx1cmUgOiBNYWNyb0Fz
c2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCB0bXAoYXRvbWljLT5jaGlsZCgxKSksIGFkZHJlc3Ms
IGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOworICAgICAgICAvLyBXZSB3aXNo
IHRvIGVtaXQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJsb2NrICNyZWxvb3A6CisgICAgICAg
IC8vICAgICBMb2FkTGluaworICAgICAgICAvLyAgICAgQnJhbmNoIE5vdEVxdWFsCisgICAgICAg
IC8vICAgU3VjY2Vzc29yczogVGhlbjojZmFpbCwgRWxzZTogI3N0b3JlCisgICAgICAgIC8vIEJs
b2NrICNzdG9yZToKKyAgICAgICAgLy8gICAgIFN0b3JlQ29uZAorICAgICAgICAvLyAgICAgWG9y
ICQxLCAlcmVzdWx0ICAgIDwtLS0gb25seSBpZiAhaW52ZXJ0CisgICAgICAgIC8vICAgICBKdW1w
CisgICAgICAgIC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAgICAgICAgLy8gQmxvY2sgI2ZhaWw6
CisgICAgICAgIC8vICAgICBNb3ZlICRpbnZlcnQsICVyZXN1bHQKKyAgICAgICAgLy8gICAgIEp1
bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAgICAgICAvLyBCbG9jayAjZG9u
ZToKKyAgICAgICAgCisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogcmVsb29wQmxvY2sgPSBuZXdC
bG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0b3JlQmxvY2sgPSBuZXdCbG9jaygp
OworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN1Y2Nlc3NCbG9jayA9IG51bGxwdHI7CisgICAg
ICAgIGlmICghaXNCcmFuY2ggJiYgaXNTdHJvbmcpCisgICAgICAgICAgICBzdWNjZXNzQmxvY2sg
PSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGZhaWxCbG9jayA9IG51bGxw
dHI7CisgICAgICAgIGlmICghaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIGZhaWxCbG9jayA9IG5l
d0Jsb2NrKCk7CisgICAgICAgICAgICBmYWlsdXJlID0gZmFpbEJsb2NrOworICAgICAgICB9Cisg
ICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3Ryb25nRmFpbEJsb2NrOworICAgICAgICBpZiAoaXNT
dHJvbmcgJiYgaGFzRmVuY2UpCisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2sgPSBuZXdCbG9j
aygpOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBjb21wYXJpc29uRmFpbCA9IGZhaWx1
cmU7CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIHdlYWtGYWlsOworICAgICAgICBpZiAo
aXNTdHJvbmcpIHsKKyAgICAgICAgICAgIGlmIChoYXNGZW5jZSkKKyAgICAgICAgICAgICAgICBj
b21wYXJpc29uRmFpbCA9IHN0cm9uZ0ZhaWxCbG9jazsKKyAgICAgICAgICAgIHdlYWtGYWlsID0g
cmVsb29wQmxvY2s7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgIHdlYWtGYWlsID0gZmFp
bHVyZTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOworICAgICAgICBBaXI6
OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhiZWdpbkJsb2NrLCBk
b25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFpcjo6SnVtcCk7CisgICAgICAg
IGJlZ2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAgICAKKyAgICAg
ICAgcmVsb29wQmxvY2stPmFwcGVuZChsb2FkTGlua09wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNG
ZW5jZSgpKSwgbV92YWx1ZSwgYWRkcmVzcywgdmFsdWVSZXN1bHRUbXApOworICAgICAgICByZWxv
b3BCbG9jay0+YXBwZW5kKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEJyYW5jaCwgd2lkdGgp
LCBtX3ZhbHVlLCBBcmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSwgdmFsdWVS
ZXN1bHRUbXAsIGV4cGVjdGVkVmFsdWVUbXApOworICAgICAgICByZWxvb3BCbG9jay0+c2V0U3Vj
Y2Vzc29ycyhjb21wYXJpc29uRmFpbCwgc3RvcmVCbG9jayk7CisgICAgICAgIAorICAgICAgICBz
dG9yZUJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNl
KCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZVRtcCwgYWRkcmVzcywgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAp
OworICAgICAgICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVu
ZChCcmFuY2hUZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVy
byksIGJvb2xSZXN1bHRUbXAsIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgc3RvcmVCbG9j
ay0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzLCB3ZWFrRmFpbCk7CisgICAgICAgICAgICBkb25lQmxv
Y2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRv
bmVCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGRvbmVCbG9jay0+YXBwZW5kKEFpcjo6T29w
cywgbV92YWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNTdHJvbmcp
IHsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3Zh
bHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBzdWNjZXNzQm9vbFJlc3Vs
dFRtcCwgc3VjY2Vzc0Jvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgICAgIHN0b3JlQmxvY2st
PnNldFN1Y2Nlc3NvcnMoc3VjY2Vzc0Jsb2NrLCByZWxvb3BCbG9jayk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5hcHBlbmQoTW92ZSwgbV92YWx1ZSwg
QXJnOjppbW0oIWludmVydCksIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgICAgIHN1Y2Nl
c3NCbG9jay0+YXBwZW5kKEFpcjo6SnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3Vj
Y2Vzc0Jsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmICghaW52ZXJ0KQorICAgICAgICAgICAgICAgICAgICBzdG9y
ZUJsb2NrLT5hcHBlbmQoWG9yMzIsIG1fdmFsdWUsIEFyZzo6Yml0SW1tKDEpLCBib29sUmVzdWx0
VG1wLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBz
dG9yZUJsb2NrLT5hcHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBz
dG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKE1vdmUsIG1fdmFsdWUsIEFy
Zzo6aW1tKGludmVydCksIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgZmFpbEJsb2NrLT5h
cHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgIGZhaWxCbG9jay0+c2V0U3Vj
Y2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNT
dHJvbmcgJiYgaGFzRmVuY2UpIHsKKyAgICAgICAgICAgIFRtcCB0bXAgPSBtX2NvZGUubmV3VG1w
KEdQKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29k
ZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgdmFsdWVSZXN1bHRUbXAsIGFk
ZHJlc3MsIHRtcCk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPmFwcGVuZChCcmFuY2hU
ZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIHRtcCwg
dG1wKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jay0+c2V0U3VjY2Vzc29ycyhmYWlsdXJl
LCByZWxvb3BCbG9jayk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgYm9vbCBhcHBlbmRW
b2lkQXRvbWljKEFpcjo6T3Bjb2RlIGF0b21pY09wY29kZSkKKyAgICB7CisgICAgICAgIGlmICht
X3VzZUNvdW50cy5udW1Vc2VzKG1fdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKG1fdmFsdWUpOworICAgICAgICAK
KyAgICAgICAgaWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwgQXJnOjpJbW0sIGFkZHJlc3Mu
a2luZCgpKSAmJiBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICBhcHBlbmQo
YXRvbWljT3Bjb2RlLCBpbW0obV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRyZXNzKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNWYWxp
ZEZvcm0oYXRvbWljT3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAg
ICAgICBhcHBlbmQoYXRvbWljT3Bjb2RlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBhZGRyZXNz
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kR2VuZXJhbEF0b21p
YyhBaXI6Ok9wY29kZSBvcGNvZGUsIENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9IE5vdENv
bW11dGF0aXZlKQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUt
PmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRy
KG1fdmFsdWUpOworICAgICAgICBUbXAgb2xkVmFsdWUgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAg
ICAgICAgVG1wIG5ld1ZhbHVlID0gb3Bjb2RlID09IEFpcjo6Tm9wID8gdG1wKGF0b21pYy0+Y2hp
bGQoMCkpIDogbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIAorICAgICAgICAvLyBXZSBuZWVk
IGEgQ0FTIGxvb3Agb3IgYSBMTC9TQyBsb29wLiBVc2luZyBwcmVwYXJlL2F0dGVtcHQgamFyZ29u
LCB3ZSB3YW50OgorICAgICAgICAvLworICAgICAgICAvLyBCbG9jayAjcmVsb29wOgorICAgICAg
ICAvLyAgICAgUHJlcGFyZQorICAgICAgICAvLyAgICAgb3Bjb2RlCisgICAgICAgIC8vICAgICBB
dHRlbXB0CisgICAgICAgIC8vICAgU3VjY2Vzc29yczogVGhlbjojZG9uZSwgRWxzZTojcmVsb29w
CisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAgICAvLyAgICAgTW92ZSBvbGRWYWx1ZSwg
cmVzdWx0CisgICAgICAgIAorICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21p
Yy0+dHlwZSgpKSwgb2xkVmFsdWUsIHRtcChhdG9taWMpKTsKKyAgICAgICAgCisgICAgICAgIEFp
cjo6QmFzaWNCbG9jayogcmVsb29wQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICBBaXI6OkJh
c2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogZG9uZUJsb2Nr
OworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ssIGRvbmVCbG9jayk7CisgICAgICAgIAor
ICAgICAgICBhcHBlbmQoQWlyOjpKdW1wKTsKKyAgICAgICAgYmVnaW5CbG9jay0+c2V0U3VjY2Vz
c29ycyhyZWxvb3BCbG9jayk7CisgICAgICAgIAorICAgICAgICBBaXI6Ok9wY29kZSBwcmVwYXJl
T3Bjb2RlOworICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgc3dpdGNoIChhdG9t
aWMtPmFjY2Vzc1dpZHRoKCkpIHsKKyAgICAgICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAg
ICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgICAgICAgICAg
cHJlcGFyZU9wY29kZSA9IExvYWQxNlNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgICAgICAgICAgcHJlcGFy
ZU9wY29kZSA9IE1vdmUzMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgV2lkdGg2NDoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTW92ZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBwcmVwYXJlT3Bj
b2RlID0gbG9hZExpbmtPcGNvZGUoYXRvbWljLT5hY2Nlc3NXaWR0aCgpLCBhdG9taWMtPmhhc0Zl
bmNlKCkpOworICAgICAgICB9CisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQocHJlcGFyZU9w
Y29kZSwgbV92YWx1ZSwgYWRkcmVzcywgb2xkVmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYg
KG9wY29kZSAhPSBBaXI6Ok5vcCkgeworICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGV2ZXIg
aGF2ZSB0byB3cml0ZSB0aGlzIGFnYWluLCB3ZSBuZWVkIHRvIGZpbmQgYSB3YXkgdG8gc2hhcmUg
dGhlIGNvZGUgd2l0aAorICAgICAgICAgICAgLy8gYXBwZW5kQmluT3AuCisgICAgICAgICAgICBp
ZiAoY29tbXV0YXRpdml0eSA9PSBDb21tdXRhdGl2ZSAmJiBpbW0oYXRvbWljLT5jaGlsZCgwKSkg
JiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAg
ICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0
b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgICAgICAgICAgZWxzZSBp
ZiAoaW1tKGF0b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAs
IEFyZzo6SW1tLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVu
ZChvcGNvZGUsIG1fdmFsdWUsIG9sZFZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG5ld1Zh
bHVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbW11dGF0aXZpdHkgPT0gQ29tbXV0YXRpdmUg
JiYgYml0SW1tKGF0b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpC
aXRJbW0sIEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2st
PmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIGJpdEltbShhdG9taWMtPmNoaWxkKDApKSwgb2xkVmFs
dWUsIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwg
QXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29wQmxv
Y2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIG9sZFZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgw
KSksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJlbG9v
cEJsb2NrLT5hcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgbV92YWx1
ZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoaW1tKGF0b21pYy0+
Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpJbW0sIEFyZzo6VG1wKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIGlt
bShhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIHRt
cChhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIGNhc09w
Y29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNoQXRvbWljU3Ryb25nQ0FTLCBhdG9taWMtPmFj
Y2Vzc1dpZHRoKCkpOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChyZWxheGVkTW92
ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBtX3ZhbHVlLCBvbGRWYWx1ZSwgbV9lYXgpOworICAg
ICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChjYXNPcGNvZGUsIG1fdmFsdWUsIEFyZzo6c3Rh
dHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCBuZXdWYWx1ZSwgYWRkcmVz
cyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0
KCkpOworICAgICAgICAgICAgVG1wIGJvb2xSZXN1bHQgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAg
ICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKGF0b21pYy0+YWNj
ZXNzV2lkdGgoKSwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgbmV3VmFsdWUsIGFkZHJl
c3MsIGJvb2xSZXN1bHQpOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChCcmFuY2hU
ZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVybyksIGJvb2xS
ZXN1bHQsIGJvb2xSZXN1bHQpOworICAgICAgICB9CisgICAgICAgIHJlbG9vcEJsb2NrLT5zZXRT
dWNjZXNzb3JzKGRvbmVCbG9jaywgcmVsb29wQmxvY2spOworICAgIH0KKyAgICAKICAgICB2b2lk
IGxvd2VyKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsKQEAg
LTE5NzAsMzAgKzIzNzgsNTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgTG9hZDogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3Zh
bHVlLCBtb3ZlRm9yVHlwZShtX3ZhbHVlLT50eXBlKCkpLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUp
LCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBtX3Zh
bHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9
IEFpcjo6T29wczsKKyAgICAgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKG1lbW9yeS0+dHlwZSgpKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTMyOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEludDY0OgorICAgICAg
ICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNxNjQ7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG9wY29k
ZSA9IG1vdmVGb3JUeXBlKG1lbW9yeS0+dHlwZSgpKTsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFw
cGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92
YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgTG9hZDhTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1f
dmFsdWUsIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1w
KG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5h
czxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMiA6
IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3Qo
bV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDhaOiB7
Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQ4LCBtX3ZhbHVl
LCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2Rl
IG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFj
cTggOiBMb2FkODsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bj
b2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2UzogewotICAgICAgICAg
ICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTZTaWduZWRFeHRlbmRUbzMyLCBt
X3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6
T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8g
TG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiA6IExvYWQxNlNpZ25lZEV4dGVuZFRvMzI7CisgICAg
ICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRk
cihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBjYXNlIExvYWQxNlo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGlu
Z0luc3QobV92YWx1ZSwgTG9hZDE2LCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1
ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9y
eVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFjcTE2IDogTG9hZDE2OworICAgICAgICAgICAg
YXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1
ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KKyAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIEFkZDogewogICAgICAgICAgICAgaWYgKHRyeUFwcGVu
ZExlYSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwOTEsNyArMjUxOSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNDaGlsbCgpKQogICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CiAgICAgICAgICAgICBpZiAoaXNJbnQobV92
YWx1ZS0+dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJYODZEaXYo
RGl2KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZEaXYoRGl2KTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoIWlzWDg2KCkgfHwg
aXNGbG9hdChtX3ZhbHVlLT50eXBlKCkpKTsKQEAgLTIxMDIsNyArMjUzMCw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgY2FzZSBVRGl2OiB7CiAgICAgICAgICAgICBpZiAoaXNJbnQobV92YWx1ZS0+
dHlwZSgpKSAmJiBpc1g4NigpKSB7Ci0gICAgICAgICAgICAgICAgbG93ZXJYODZVRGl2KFVEaXYp
OworICAgICAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVURpdik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0yMTE2LDEzICsyNTQ0LDEzIEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgTW9kOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4Nigp
KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZhbHVlLT5pc0NoaWxsKCkpOwotICAg
ICAgICAgICAgbG93ZXJYODZEaXYoTW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NkRpdihNb2Qp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBVTW9kOiB7
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1g4NigpKTsKLSAgICAgICAgICAgIGxvd2Vy
WDg2VURpdihVTW9kKTsKKyAgICAgICAgICAgIGFwcGVuZFg4NlVEaXYoVU1vZCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjE2MSwxMCArMjU4OSwyOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8Tm90MzIsIE5vdDY0PihtX3ZhbHVlLT5jaGls
ZCgwKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyBUaGlzIHBhdHRlcm4gaXMgc3VwZXIgdXNlZnVsIG9uIGJvdGgg
eDg2IGFuZCBBUk02NCwgc2luY2UgdGhlIGludmVyc2lvbiBvZiB0aGUgQ0FTIHJlc3VsdAorICAg
ICAgICAgICAgLy8gY2FuIGJlIGRvbmUgd2l0aCB6ZXJvIGNvc3Qgb24geDg2IChqdXN0IGZsaXAg
dGhlIHNldCBmcm9tIEUgdG8gTkUpIGFuZCBpdCdzIGEgcHJvZ3Jlc3Npb24KKyAgICAgICAgICAg
IC8vIG9uIEFSTTY0IChzaW5jZSBTVFggcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIHNvIG9yZGluYXJp
bHkgd2UgaGF2ZSB0byBmbGlwIGl0KS4KKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgx
KS0+aXNJbnQoMSkKKyAgICAgICAgICAgICAgICAmJiBpc0F0b21pY0NBUyhtX3ZhbHVlLT5jaGls
ZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVl
LT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtX3ZhbHVlLT5j
aGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUtPmNoaWxkKDApLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKICAgICAgICAgICAgIGFwcGVuZEJpbk9wPFhvcjMyLCBYb3I2NCwgWG9yRG91YmxlLCBYb3JG
bG9hdCwgQ29tbXV0YXRpdmU+KAogICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBt
X3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIERlcGVuZDogeworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNBUk02NCgpKTsKKyAgICAgICAgICAgIGFwcGVuZFVuT3A8RGVwZW5kMzIsIERlcGVuZDY0
PihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIFNobDogewogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5p
c0ludDMyKDEpKSB7CkBAIC0yMjY1LDcgKzI3MTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWVUb1N0
b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIyODYs
NyArMjczMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhcHBlbmRTdG9yZShBaXI6
OlN0b3JlOCwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVu
ZFN0b3JlKG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTIzMDcsNyArMjc1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBhcHBlbmRTdG9yZShBaXI6OlN0b3JlMTYsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7
CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDE1LDcgKzI4NjEsMjIgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgRXF1YWw6Ci0gICAgICAgIGNhc2UgTm90RXF1
YWw6CisgICAgICAgIGNhc2UgTm90RXF1YWw6IHsKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5j
aGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAgICAgICAgICAgICAgJiYg
bV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApID09IG1fdmFsdWUtPmNoaWxkKDEpCisgICAgICAg
ICAgICAgICAgJiYgY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUtPmNoaWxkKDApLT5jaGls
ZCgxKSkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMobV92YWx1
ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjb21taXRJ
bnRlcm5hbChtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1f
dmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGNyZWF0ZUNvbXBhcmUobV92YWx1ZSkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBM
ZXNzVGhhbjoKICAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAgICAgY2FzZSBMZXNzRXF1
YWw6CkBAIC0yNzI2LDYgKzMxODcsNDAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAg
IGNhc2UgQnJhbmNoOiB7CisgICAgICAgICAgICBpZiAoY2FuQmVJbnRlcm5hbChtX3ZhbHVlLT5j
aGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogYnJhbmNoQ2hpbGQgPSBtX3ZhbHVl
LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyYW5jaENoaWxkLT5vcGNvZGUo
KSkgeworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgICAg
ICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAgICAgICAgICAgICAgICBh
cHBlbmRDQVMoYnJhbmNoQ2hpbGQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9u
Z0NBUzoKKyAgICAgICAgICAgICAgICAgICAgLy8gQSBicmFuY2ggaXMgYSBjb21wYXJpc29uIHRv
IHplcm8uCisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPmlz
SW50KDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFuY2hD
aGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQsIHRy
dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBjYXNlIEVxdWFsOgorICAgICAgICAgICAgICAgIGNhc2UgTm90RXF1YWw6
CisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPm9wY29kZSgp
ID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRl
cm5hbChicmFuY2hDaGlsZC0+Y2hpbGQoMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBi
cmFuY2hDaGlsZC0+Y2hpbGQoMCktPmNoaWxkKDApID09IGJyYW5jaENoaWxkLT5jaGlsZCgxKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQtPmNoaWxk
KDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZC0+Y2hp
bGQoMCksIGJyYW5jaENoaWxkLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5k
KGNyZWF0ZUJyYW5jaChtX3ZhbHVlLT5jaGlsZCgwKSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0yNzgzLDcgKzMyNzgsODEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGFw
cGVuZChBaXI6OkVudHJ5U3dpdGNoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgY2FzZSBB
dG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLCBmYWxzZSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIEF0b21pY1hjaGdBZGQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBt
X3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRv
bWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQWRkLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFyZyBh
ZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0g
T1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnQWRkLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpOwor
ICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIGFkZHJlc3Mua2lu
ZCgpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWlj
LT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9taWMpKTsKKyAgICAgICAg
ICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVzcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFs
QXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEFkZCwgYXRvbWljLT5hY2Nlc3NXaWR0
aCgpKSwgQ29tbXV0YXRpdmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRv
bWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5k
Vm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1N1YiwgYXRvbWljLT5hY2Nlc3NXaWR0
aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFN1YiwgYXRv
bWljLT5hY2Nlc3NXaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6IHsKKyAgICAgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAg
ICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQW5kLCBhdG9t
aWMtPmFjY2Vzc1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxf
V0lEVEgoQW5kLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpLCBDb21tdXRhdGl2ZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21p
Y1hjaGdPcjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFz
PEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RF
X0ZPUl9XSURUSChBdG9taWNPciwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRv
bWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKE9yLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkp
LCBDb21tdXRhdGl2ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6IHsKKyAgICAgICAgICAgIEF0b21pY1Zh
bHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlm
IChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWG9yLCBhdG9taWMtPmFj
Y2Vzc1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgo
WG9yLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpLCBDb21tdXRhdGl2ZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGc6
IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNW
YWx1ZT4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0
b21pYyk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVfRk9SX1dJRFRI
KEF0b21pY1hjaGcsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSk7CisgICAgICAgICAgICBpZiAoaXNW
YWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAgICAg
ICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIHRtcChhdG9t
aWMtPmNoaWxkKDApKSwgdG1wKGF0b21pYykpOworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNv
ZGUsIHRtcChhdG9taWMpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMo
QWlyOjpOb3ApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNzkx
LDY0ICszMzYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgZGF0YUxvZygiRkFUQUw6IGNvdWxkIG5v
dCBsb3dlciAiLCBkZWVwRHVtcChtX3Byb2NlZHVyZSwgbV92YWx1ZSksICJcbiIpOwogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLQotICAgIHZvaWQgbG93ZXJY
ODZEaXYoQjM6Ok9wY29kZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkK
LSAgICAgICAgVG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBl
ZHggPSBUbXAoWDg2UmVnaXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZl
cnRUb0RvdWJsZVdvcmQ7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKLSAgICAgICAgc3dpdGNo
IChtX3ZhbHVlLT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBJbnQzMjoKLSAgICAgICAgICAgIGNv
bnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7Ci0gICAgICAgICAg
ICBkaXYgPSBYODZEaXYzMjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDY0
OgotICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3Jk
NjQ7Ci0gICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChvcCA9PSBE
aXYgfHwgb3AgPT0gTW9kKTsKLSAgICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJlc3Vs
dCA9IG9wID09IERpdiA/IFg4NlJlZ2lzdGVyczo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0K
LSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0gICAg
ICAgIGFwcGVuZChjb252ZXJ0VG9Eb3VibGVXb3JkLCBlYXgsIGVkeCk7Ci0gICAgICAgIGFwcGVu
ZChkaXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5k
KE1vdmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOwotCi0jZWxzZQotICAgICAgICBVTlVT
RURfUEFSQU0ob3ApOwotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRp
ZgotICAgIH0KLQotICAgIHZvaWQgbG93ZXJYODZVRGl2KEIzOjpPcGNvZGUgb3ApCi0gICAgewot
I2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAoWDg2UmVn
aXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4KTsK
LQotICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBY
ODZVRGl2MzIgOiBYODZVRGl2NjQ7Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3Ag
PT0gVU1vZCk7Ci0gICAgICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9
PSBVRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAg
ICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBw
ZW5kKFhvcjY0LCBlZHgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0bXAo
bV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0
bXAobV92YWx1ZSkpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAg
VU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KKyAgICAKICAgICBJ
bmRleFNldDxWYWx1ZT4gbV9sb2NrZWQ7IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCB3aWxsIGhh
dmUgbm8gVG1wIGluIEFpci4KICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3ZhbHVlVG9UbXA7
IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCBtdXN0IGhhdmUgYSBUbXAgaW4gQWlyLiBXZSBzYXkg
dGhhdCBhIFZhbHVlKiB3aXRoIGEgbm9uLW51bGwgVG1wIGlzICJwaW5uZWQiLgogICAgIEluZGV4
TWFwPFZhbHVlLCBUbXA+IG1fcGhpVG9UbXA7IC8vIEVhY2ggUGhpIGdldHMgaXRzIG93biBUbXAu
CkBAIC0yODYzLDcgKzMzNzUsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFZlY3RvcjxJbnN0
LCA0Pj4gbV9pbnN0czsKICAgICBWZWN0b3I8SW5zdD4gbV9wcm9sb2d1ZTsKLQorICAgIAogICAg
IEIzOjpCYXNpY0Jsb2NrKiBtX2Jsb2NrOwogICAgIGJvb2wgbV9pc1JhcmU7CiAgICAgdW5zaWdu
ZWQgbV9pbmRleDsKQEAgLTI4NzQsNiArMzM4NiwxMiBAQCBwcml2YXRlOgogCiAgICAgUHJvY2Vk
dXJlJiBtX3Byb2NlZHVyZTsKICAgICBDb2RlJiBtX2NvZGU7CisKKyAgICBBaXI6OkJsb2NrSW5z
ZXJ0aW9uU2V0IG1fYmxvY2tJbnNlcnRpb25TZXQ7CisKKyAgICBUbXAgbV9lYXg7CisgICAgVG1w
IG1fZWN4OworICAgIFRtcCBtX2VkeDsKIH07CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuaAkocmV2aXNpb24gMjEz
NDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzIsNyArMzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
IGNsYXNzIFByb2NlZHVyZTsKIG5hbWVzcGFjZSBBaXIgeyBjbGFzcyBDb2RlOyB9CiAKLS8vIFRo
aXMgbG93ZXJzIHRoZSBjdXJyZW50IEIzIHByb2NlZHVyZSB0byBhbiBBaXIgY29kZS4KKy8vIFRo
aXMgbG93ZXJzIHRoZSBjdXJyZW50IEIzIHByb2NlZHVyZSB0byBhbiBBaXIgY29kZS4gTm90ZSB0
aGF0IHRoaXMgYXNzdW1lcyB0aGF0IHRoZSBwcm9jZWR1cmUgaXMgaW4KKy8vIHF1aXJrcyBtb2Rl
LCBidXQgaXQgZG9lcyBub3QgYXNzZXJ0IHRoaXMsIHRvIHNpbXBsaWZ5IGhvdyB3ZSB3cml0ZSB0
ZXN0cy4KIAogSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBsb3dlclRvQWlyKFByb2NlZHVyZSYpOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCShyZXZp
c2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDM2ICsyOCwzNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJ
VCkKIAorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCisKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgewogCiBNZW1vcnlWYWx1ZTo6fk1lbW9yeVZhbHVlKCkKIHsKIH0KIAot
c2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0Citib29sIE1lbW9yeVZh
bHVlOjppc0xlZ2FsT2Zmc2V0KGludDY0X3Qgb2Zmc2V0KSBjb25zdAogewotICAgIHN3aXRjaCAo
b3Bjb2RlKCkpIHsKLSAgICBjYXNlIExvYWQ4WjoKLSAgICBjYXNlIExvYWQ4UzoKLSAgICBjYXNl
IFN0b3JlODoKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgY2FzZSBMb2FkMTZaOgotICAgIGNhc2Ug
TG9hZDE2UzoKLSAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIHJldHVybiAyOwotICAgIGNhc2Ug
TG9hZDoKLSAgICAgICAgcmV0dXJuIHNpemVvZlR5cGUodHlwZSgpKTsKLSAgICBjYXNlIFN0b3Jl
OgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZShjaGlsZCgwKS0+dHlwZSgpKTsKLSAgICBkZWZh
dWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9CisgICAgcmV0dXJuIEIzOjppc1JlcHJlc2VudGFibGVBczxpbnQzMl90Pihv
ZmZzZXQpICYmIGlzTGVnYWxPZmZzZXQoc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSk7Cit9
CisKK1R5cGUgTWVtb3J5VmFsdWU6OmFjY2Vzc1R5cGUoKSBjb25zdAoreworICAgIGlmIChpc0xv
YWQoKSkKKyAgICAgICAgcmV0dXJuIHR5cGUoKTsKKyAgICAvLyBUaGlzIGhhcHBlbnMgdG8gd29y
ayBmb3IgYXRvbWljcywgdG9vLiBUaGF0J3Mgd2h5IEF0b21pY1ZhbHVlIGRvZXMgbm90IG5lZWQg
dG8gb3ZlcnJpZGUgdGhpcy4KKyAgICByZXR1cm4gY2hpbGQoMCktPnR5cGUoKTsKIH0KIAotV2lk
dGggTWVtb3J5VmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKK0JhbmsgTWVtb3J5VmFsdWU6OmFj
Y2Vzc0JhbmsoKSBjb25zdAogewotICAgIHJldHVybiB3aWR0aEZvckJ5dGVzKGFjY2Vzc0J5dGVT
aXplKCkpOworICAgIHJldHVybiBiYW5rRm9yVHlwZShhY2Nlc3NUeXBlKCkpOworfQorCitzaXpl
X3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYnl0
ZXMoYWNjZXNzV2lkdGgoKSk7CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1h
UHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02NSw4ICs2NiwxMSBA
QCB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImCiAgICAgaWYgKG1fb2Zm
c2V0KQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJvZmZzZXQgPSAiLCBtX29mZnNldCk7CiAg
ICAgaWYgKChpc0xvYWQoKSAmJiBlZmZlY3RzKCkucmVhZHMgIT0gcmFuZ2UoKSkKLSAgICAgICAg
fHwgKGlzU3RvcmUoKSAmJiBlZmZlY3RzKCkud3JpdGVzICE9IHJhbmdlKCkpKQorICAgICAgICB8
fCAoaXNTdG9yZSgpICYmIGVmZmVjdHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkKKyAgICAgICAgfHwg
aXNFeG90aWMoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicmFuZ2UgPSAiLCByYW5nZSgp
KTsKKyAgICBpZiAoaXNFeG90aWMoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZmVuY2VS
YW5nZSA9ICIsIGZlbmNlUmFuZ2UoKSk7CiB9CiAKIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJ
bXBsKCkgY29uc3QKQEAgLTc0LDYgKzc4LDYyIEBAIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJ
bXBsKCkgY29uc3QKICAgICByZXR1cm4gbmV3IE1lbW9yeVZhbHVlKCp0aGlzKTsKIH0KIAorLy8g
VXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9m
IHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAorLy8gZGVzY3JpYmVzIHRoZSByZXR1
cm5lZCB0eXBlKS4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlw
ZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFu
Z2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29k
ZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQor
ICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQorewor
ICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUo
KSkgeworICAgICAgICBjYXNlIExvYWQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQxNlo6Cisg
ICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IEludDMyKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0b3JlODoKKyAgICAgICAgY2FzZSBT
dG9yZTE2OgorICAgICAgICBjYXNlIFN0b3JlOgorICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0g
Vm9pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBVc2UgdGhp
cyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KK01lbW9y
eVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2lu
dGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5n
ZSkKKyAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNl
dCwgcmFuZ2UsIGZlbmNlUmFuZ2UpCit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAg
ICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAg
ICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExv
YWQxNlM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBVc2UgdGhp
cyBmb3JtIGZvciBzdG9yZXMuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBP
cmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNl
dCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKKyAgICA6IFZhbHVlKENo
ZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpCisgICAgLCBt
X29mZnNldChvZmZzZXQpCisgICAgLCBtX3JhbmdlKHJhbmdlKQorICAgICwgbV9mZW5jZVJhbmdl
KGZlbmNlUmFuZ2UpCit7CisgICAgQVNTRVJUKEIzOjppc1N0b3JlKGtpbmQub3Bjb2RlKCkpKTsK
K30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklU
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCShyZXZpc2lv
biAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxMjcgKzI3LDg2IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQog
CisjaW5jbHVkZSAiQWlyQXJnLmgiCisjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNI
ZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxvdyBmZW5jZWQgbWVtb3J5IGFj
Y2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVtb3J5VmFsdWUgOiBwdWJsaWMg
VmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQogICAg
IHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgTG9hZDha
OgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAgICBj
YXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgY2FzZSBTdG9yZTg6Ci0g
ICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNTdG9yZShLaW5kIGtpbmQpCi0g
ICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgY2FzZSBTdG9y
ZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNMb2FkKEtpbmQga2lu
ZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQpICYmICFpc1N0b3JlKGtpbmQp
OworICAgICAgICByZXR1cm4gaXNNZW1vcnlBY2Nlc3Moa2luZC5vcGNvZGUoKSk7CiAgICAgfQog
CiAgICAgfk1lbW9yeVZhbHVlKCk7CiAKICAgICBpbnQzMl90IG9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fb2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRPZmZzZXQoaW50MzJfdCBvZmZzZXQpIHsgbV9v
ZmZzZXQgPSBvZmZzZXQ7IH0KKyAgICAKKyAgICAvLyBZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBh
Ym91dCB1c2luZyBsZWdhbCBvZmZzZXRzIHVubGVzcyB5b3UndmUgZW50ZXJlZCBxdWlya3MgbW9k
ZS4KKyAgICBib29sIGlzTGVnYWxPZmZzZXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0OworICAgIGJv
b2wgaXNMZWdhbE9mZnNldChpbnQ2NF90IG9mZnNldCkgY29uc3Q7CisgICAgCisgICAgLy8gQSBu
ZWNlc3NhcnkgY29uc2VxdWVuY2Ugb2YgTWVtb3J5VmFsdWUgaGF2aW5nIGFuIG9mZnNldCBpcyB0
aGF0IGl0IHBhcnRpY2lwYXRlcyBpbiBpbnN0cnVjdGlvbgorICAgIC8vIHNlbGVjdGlvbi4gVGhp
cyB0ZWxscyB5b3UgaWYgdGhpcyB3aWxsIGdldCBsb3dlcmVkIHRvIHNvbWV0aGluZyB0aGF0IHJl
cXVpcmVzIGFuIG9mZnNldGxlc3MKKyAgICAvLyBhZGRyZXNzLgorICAgIGJvb2wgcmVxdWlyZXNT
aW1wbGVBZGRyKCkgY29uc3Q7CiAKICAgICBjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKCkgY29uc3Qg
eyByZXR1cm4gbV9yYW5nZTsgfQogICAgIHZvaWQgc2V0UmFuZ2UoY29uc3QgSGVhcFJhbmdlJiBy
YW5nZSkgeyBtX3JhbmdlID0gcmFuZ2U7IH0KKyAgICAKKyAgICAvLyBUaGlzIGlzIGFuIGFsaWFz
IGZvciByYW5nZS4KKyAgICBjb25zdCBIZWFwUmFuZ2UmIGFjY2Vzc1JhbmdlKCkgY29uc3QgeyBy
ZXR1cm4gcmFuZ2UoKTsgfQorICAgIHZvaWQgc2V0QWNjZXNzUmFuZ2UoY29uc3QgSGVhcFJhbmdl
JiByYW5nZSkgeyBzZXRSYW5nZShyYW5nZSk7IH0KKyAgICAKKyAgICBjb25zdCBIZWFwUmFuZ2Um
IGZlbmNlUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2ZlbmNlUmFuZ2U7IH0KKyAgICB2b2lkIHNl
dEZlbmNlUmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5nZSkgeyBtX2ZlbmNlUmFuZ2UgPSByYW5n
ZTsgfQorCisgICAgYm9vbCBpc1N0b3JlKCkgY29uc3QgeyByZXR1cm4gQjM6OmlzU3RvcmUob3Bj
b2RlKCkpOyB9CisgICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiBCMzo6aXNMb2FkKG9w
Y29kZSgpKTsgfQogCi0gICAgYm9vbCBpc1N0b3JlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09
IFZvaWQ7IH0KLSAgICBib29sIGlzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSAhPSBWb2lk
OyB9CisgICAgYm9vbCBoYXNGZW5jZSgpIGNvbnN0IHsgcmV0dXJuICEhZmVuY2VSYW5nZSgpOyB9
CisgICAgYm9vbCBpc0V4b3RpYygpIGNvbnN0IHsgcmV0dXJuIGhhc0ZlbmNlKCkgfHwgaXNBdG9t
aWMob3Bjb2RlKCkpOyB9CiAKKyAgICBUeXBlIGFjY2Vzc1R5cGUoKSBjb25zdDsKKyAgICBCYW5r
IGFjY2Vzc0JhbmsoKSBjb25zdDsKICAgICBzaXplX3QgYWNjZXNzQnl0ZVNpemUoKSBjb25zdDsK
KyAgICAKICAgICBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAg
dm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFZhbHVlKiBjbG9uZUltcGwoKSBjb25zdCBvdmVycmlkZTsK
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBNZW1vcnlWYWx1ZShD
aGVja2VkT3Bjb2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgaW50
MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UsIEFyZ3Vt
ZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwg
dHlwZSwgb3JpZ2luLCBhcmd1bWVudHMuLi4pCisgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQor
ICAgICAgICAsIG1fcmFuZ2UocmFuZ2UpCisgICAgICAgICwgbV9mZW5jZVJhbmdlKGZlbmNlUmFu
Z2UpCisgICAgeworICAgIH0KKyAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2Nl
ZHVyZTsKLQorICAgIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1dCBub3QgTG9h
ZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3VmZml4IHRoYXQK
ICAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgotICAgIE1lbW9yeVZhbHVlKEtp
bmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJf
dCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUs
IG9yaWdpbiwgcG9pbnRlcikKLSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwg
bV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQotICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAgICAgICAg
ICAgY2FzZSBMb2FkOgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBM
b2FkOFo6Ci0gICAgICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2
WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlw
ZSA9PSBJbnQzMik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFN0
b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gVm9pZCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorICAgIE1lbW9yeVZh
bHVlKEtpbmQsIFR5cGUsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0g
MCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFu
Z2UgPSBIZWFwUmFuZ2UoKSk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVy
ZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQs
IE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAg
ICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQot
ICAgIHsKLSAgICB9CisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogcG9pbnRl
ciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgp
LCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKIAogICAgIC8vIFVzZSB0aGlz
IGZvcm0gZm9yIHN0b3Jlcy4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmln
aW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAg
ICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBw
b2ludGVyKQotICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAgICAgLCBtX3JhbmdlKEhl
YXBSYW5nZTo6dG9wKCkpCi0gICAgewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewot
ICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFN0
b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmU6
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3Jp
Z2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhl
YXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0g
SGVhcFJhbmdlKCkpOworICAgIAogICAgIGludDMyX3QgbV9vZmZzZXQgeyAwIH07Ci0gICAgSGVh
cFJhbmdlIG1fcmFuZ2U7CisgICAgSGVhcFJhbmdlIG1fcmFuZ2UgeyBIZWFwUmFuZ2U6OnRvcCgp
IH07CisgICAgSGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhlYXBSYW5nZSgpIH07CiB9OwogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M01lbW9yeVZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJBcmcu
aCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeworCitpbmxpbmUgYm9vbCBNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldChpbnQzMl90
IG9mZnNldCkgY29uc3QKK3sKKyAgICAvLyBOT1RFOiBUaGlzIGlzIGlubGluZSBiZWNhdXNlIGl0
IGNvbnN0YW50LWZvbGRzIHRvIHRydWUgb24geDg2IQorICAgIAorICAgIC8vIFNvIGZhciBvbmx5
IFg4NiBhbGxvd3MgZXhvdGljIGxvYWRzIHRvIGhhdmUgYW4gb2Zmc2V0LgorICAgIGlmIChyZXF1
aXJlc1NpbXBsZUFkZHIoKSkKKyAgICAgICAgcmV0dXJuICFvZmZzZXQ7CisgICAgCisgICAgcmV0
dXJuIEFpcjo6QXJnOjppc1ZhbGlkQWRkckZvcm0ob2Zmc2V0LCBhY2Nlc3NXaWR0aCgpKTsKK30K
KworaW5saW5lIGJvb2wgTWVtb3J5VmFsdWU6OnJlcXVpcmVzU2ltcGxlQWRkcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFpc1g4NigpICYmIGlzRXhvdGljKCk7Cit9CisKK2lubGluZSBXaWR0aCBN
ZW1vcnlWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAoreworICAgIHN3aXRjaCAob3Bjb2RlKCkp
IHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIFN0b3JlODoK
KyAgICAgICAgcmV0dXJuIFdpZHRoODsKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2Fk
MTZTOgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICAgICAgcmV0dXJuIFdpZHRoMTY7CisgICAgY2Fz
ZSBMb2FkOgorICAgICAgICByZXR1cm4gd2lkdGhGb3JUeXBlKHR5cGUoKSk7CisgICAgY2FzZSBT
dG9yZToKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZShjaGlsZCgwKS0+dHlwZSgpKTsKKyAg
ICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2Fz
ZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21p
Y1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9y
OgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIGFzPEF0b21pY1ZhbHVlPigp
LT5hY2Nlc3NXaWR0aCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXaWR0aDg7CisgICAgfQorfQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3BwCShyZXZpc2lvbiAy
MTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNb3ZlQ29uc3RhbnRzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lu
bGluZXMuaCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJCM0luc2VydGlv
blNldElubGluZXMuaCIKLSNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNN
ZW1vcnlWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRl
ICJCM1Byb2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgpAQCAt
MjAzLDEyICsyMDMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNhbmRpZGF0ZVBvaW50ZXItPmhhc0ludFB0cigpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0
ID0gZGVzaXJlZE9mZnNldChjYW5kaWRhdGVQb2ludGVyKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFCMzo6aXNSZXByZXNlbnRhYmxlQXM8aW50MzJfdD4oc3RhdGljX2Nh
c3Q8aW50NjRfdD4ob2Zmc2V0KSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBB
aXI6OkFyZzo6aXNWYWxpZEFkZHJGb3JtKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdpZHRoRm9yQnl0ZXMobWVtb3J5VmFsdWUtPmFjY2Vzc0J5dGVTaXpl
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBk
ZXNpcmVkT2Zmc2V0KGNhbmRpZGF0ZVBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbWVtb3J5VmFsdWUtPmlzTGVnYWxPZmZzZXQob2Zmc2V0KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGJlc3RQb2ludGVyKSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFpdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFpdHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM0Jhbmsu
aCIKKyNpbmNsdWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IE5hdGl2
ZVRyYWl0czsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGludDhfdD4geworICAg
IHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lk
dGggPSBXaWR0aDg7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29u
c3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg4
OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IE5hdGl2ZVRyYWl0czxpbnQxNl90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFu
ayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoMTY7CisgICAgc3Rh
dGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0
aXZlVHJhaXRzPHVpbnQxNl90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOwor
ICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoMTY7CisgICAgc3RhdGljIGNvbnN0
IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRz
PGludDMyX3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGlj
IGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBl
ID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDMyX3Q+
IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdp
ZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7
Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50NjRfdD4geworICAgIHN0
YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGgg
PSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQ2NDsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czx1aW50NjRfdD4geworICAgIHN0YXRpYyBjb25z
dCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDY0
OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQ2NDsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IE5hdGl2ZVRyYWl0czxmbG9hdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsg
PSBGUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDMyOworICAgIHN0YXRp
YyBjb25zdCBUeXBlIHR5cGUgPSBGbG9hdDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2
ZVRyYWl0czxkb3VibGU+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gRlA7CisgICAg
c3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg2NDsKKyAgICBzdGF0aWMgY29uc3QgVHlw
ZSB0eXBlID0gRG91YmxlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29k
ZS5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09w
Y29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw2ICs2OCwyMyBAQCBzdGQ6Om9wdGlvbmFs
PE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJlKE9wCiAgICAgfQogfQogCitPcGNvZGUgc3RvcmVPcGNv
ZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICBj
YXNlIEdQOgorICAgICAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgICAgIGNhc2UgV2lkdGg4Ogor
ICAgICAgICAgICAgcmV0dXJuIFN0b3JlODsKKyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAg
ICAgICAgcmV0dXJuIFN0b3JlMTY7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gU3RvcmU7CisgICAgICAgIH0KKyAgICBjYXNlIEZQOgorICAgICAgICByZXR1cm4gU3RvcmU7
CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7
CkBAIC0yNjMsNiArMjgwLDMzIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBPcGMKICAgICBjYXNlIFN0b3JlOgogICAgICAgICBvdXQucHJpbnQoIlN0b3JlIik7CiAgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgIG91dC5wcmludCgi
QXRvbWljV2Vha0NBUyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNTdHJvbmdD
QVM6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljU3Ryb25nQ0FTIik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNo
Z0FkZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAg
ICBvdXQucHJpbnQoIkF0b21pY1hjaGdBbmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
QXRvbWljWGNoZ09yOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdPciIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICBvdXQucHJpbnQoIkF0
b21pY1hjaGdTdWIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoK
KyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnWG9yIik7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZyIpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBEZXBlbmQ6CisgICAgICAgIG91dC5wcmludCgiRGVwZW5k
Iik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAgICBvdXQu
cHJpbnQoIldhc21BZGRyZXNzIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKICNp
ZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAiQjNXaWR0
aC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIApAQCAtODIsNyArODMsNiBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIE1v
ZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBhcyB0byB3aGF0IHdpbGwgaGFwcGVuIHdoZW4geW91IGV4
ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEgYW5kIHglMC4KICAgICBVTW9kLAogCi0KICAgICAvLyBQ
b2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90ZSB0aGF0IHdlIG9ubHkgbmVlZCB0aGlzIGZvciBmbG9h
dGluZyBwb2ludCwgc2luY2UgaW50ZWdlciBuZWdhdGlvbgogICAgIC8vIGlzIGV4YWN0bHkgbGlr
ZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mgbm90IHRydWUgZm9yIGZsb2F0aW5nIHBvaW50LiBTdWIo
MCwgMCkgaXMgMCwgd2hpbGUKICAgICAvLyBOZWcoMCkgaXMgLTAuIEFsc28sIHdlIGNhbm9uaWNh
bGl6ZSBTdWIoMCwgeCkgaW50byBOZWcoeCkgaW4gY2FzZSBvZiBpbnRlZ2Vycy4KQEAgLTE2Miw2
ICsxNjIsMTA3IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgU3RvcmUxNiwKICAgICAv
LyBUaGlzIGlzIGEgcG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgRmxvYXQsIGFu
ZCBEb3VibGUuCiAgICAgU3RvcmUsCisgICAgCisgICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3
YXAgdGhhdCByZXR1cm5zIGEgYm9vbGVhbi4gTWF5IGNob29zZSB0byBkbyBub3RoaW5nIGFuZCBy
ZXR1cm4gZmFsc2UuIFlvdSBjYW4KKyAgICAvLyB1c3VhbGx5IGFzc3VtZSB0aGF0IHRoaXMgaXMg
ZmFzdGVyIGFuZCByZXN1bHRzIGluIGxlc3MgY29kZSB0aGFuIEF0b21pY1N0cm9uZ0NBUywgdGhv
dWdoIHRoYXQncworICAgIC8vIG5vdCBuZWNlc3NhcmlseSB0cnVlIG9uIEludGVsLCBpZiBpbnN0
cnVjdGlvbiBzZWxlY3Rpb24gZG9lcyBpdHMgam9iLiBJbWFnaW5lIHRoYXQgdGhpcyBvcGNvZGUg
aXMKKyAgICAvLyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8v
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gYm9vbCBBdG9taWNXZWFrQ0FTKFQgZXhwZWN0
ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAgICAvLyAgICAgaWYgKCFy
YW5kKCkpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFJlYWwgd29ybGQgZXhhbXBs
ZSBvZiB0aGlzOiBjb250ZXh0IHN3aXRjaCBvbiBBUk0gd2hpbGUgZG9pbmcgQ0FTLgorICAgIC8v
ICAgICBpZiAoKnB0ciAhPSBleHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIC8vICAgICAqcHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVybiB0cnVl
OworICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBhbGwgYXRvbWljcyBwdXQgdGhl
IHBvaW50ZXIgbGFzdCB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IGxvYWRzIGFuZCBzdG9yZXMg
d29yay4gVGhpcworICAgIC8vIGlzIGEgZ29vZnkgdHJhZGl0aW9uLCBidXQgaXQncyBoYXJtbGVz
cywgYW5kIGJldHRlciB0aGFuIGJlaW5nIGluY29uc2lzdGVudC4KKyAgICAvLworICAgIC8vIE5v
dGUgdGhhdCB3ZWFrIENBUyBoYXMgbm8gZmVuY2luZyBndWFyYW50ZWVzIHdoZW4gaXQgZmFpbHMu
IFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nCisgICAgLy8gdHJhbnNmb3JtYXRpb24gaXMg
YWx3YXlzIHZhbGlkOgorICAgIC8vCisgICAgLy8gQmVmb3JlOgorICAgIC8vCisgICAgLy8gICAg
ICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8vICAg
ICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICAvLworICAgIC8v
IEFmdGVyOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goRXF1YWwoTG9hZChwdHIpLCBl
eHBlY3RlZCkpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojYXR0ZW1wdCwgRWxzZToj
ZmFpbAorICAgIC8vICAgICBCQiNhdHRlbXB0OgorICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21p
Y1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBU
aGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBCb3RoIGtpbmRzIG9mIENB
UyBmb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNikgaWdub3JlIHRo
ZSBpcnJlbGV2YW50IGJpdHMgb2YgdGhlCisgICAgLy8gaW5wdXQuCisgICAgQXRvbWljV2Vha0NB
UywKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgdGhl
IG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2ZSB0aGUgbm9uZGV0ZXJtaW5pc20gb2YgV2Vha0NBUy4K
KyAgICAvLyBUaGlzIGlzIGEgYml0IG1vcmUgY29kZSBhbmQgYSBiaXQgc2xvd2VyIGluIHNvbWUg
Y2FzZXMsIHRob3VnaCBub3QgYnkgYSBsb3QuIEltYWdpbmUgdGhhdCB0aGlzCisgICAgLy8gb3Bj
b2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5OgorICAgIC8vCisgICAgLy8gdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBUIEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFs
dWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7CisgICAgLy8gICAgIFQgb2xkVmFsdWUg
PSAqcHRyOworICAgIC8vICAgICBpZiAob2xkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAv
LyAgICAgICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAgICAgcmV0dXJuIG9sZFZhbHVlCisg
ICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5kIEF0b21p
Y1N0cm9uZ0NBUyBzb3J0IG9mIGhhdmUgdGhpcyBraW5kIG9mIGVxdWl2YWxlbmNlOgorICAgIC8v
CisgICAgLy8gQXRvbWljV2Vha0NBUyhAZXhwLCBAbmV3LCBAcHRyKSA9PSBFcXVhbChBdG9taWNT
dHJvbmdDQVMoQGV4cCwgQG5ldywgQHB0ciksIEBleHApCisgICAgLy8KKyAgICAvLyBBc3N1bWlu
ZyB0aGF0IHRoZSBXZWFrQ0FTIGRvZXMgbm90IHNwdXJpb3VzbHkgZmFpbCwgb2YgY291cnNlLgor
ICAgIEF0b21pY1N0cm9uZ0NBUywKKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IF9fXyBhIG1lbW9y
eSBsb2NhdGlvbiBhbmQgcmV0dXJuIHRoZSBvbGQgdmFsdWUuIFN5bnRheDoKKyAgICAvLworICAg
IC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGdfX18oQG9wZXJhbmQsIEBwdHIpCisgICAgLy8KKyAg
ICAvLyBGb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNiksIHRoZXNl
IHJldHVybiBzaWduLWV4dGVuZGVkIHJlc3VsdHMgYW5kIGlnbm9yZSB0aGUKKyAgICAvLyBpcnJl
bGV2YW50IGJpdHMgb2YgdGhlaXIgaW5wdXRzLgorICAgIEF0b21pY1hjaGdBZGQsCisgICAgQXRv
bWljWGNoZ0FuZCwKKyAgICBBdG9taWNYY2hnT3IsCisgICAgQXRvbWljWGNoZ1N1YiwKKyAgICBB
dG9taWNYY2hnWG9yLAorICAgIAorICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBB
dG9taWNYY2hnTmVnIGFuZCBBdG9taWNYY2hnTm90LgorICAgIAorICAgIC8vIEF0b21pY2FsbHkg
ZXhjaGFuZ2UgYSB2YWx1ZSB3aXRoIGEgbWVtb3J5IGxvY2F0aW9uLiBTeW50YXg6CisgICAgLy8K
KyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNYY2hnKEBuZXdWYWx1ZSwgQHB0cikKKyAgICBBdG9t
aWNYY2hnLAorICAgIAorICAgIC8vIEludHJvZHVjZSBhbiBpbnZpc2libGUgZGVwZW5kZW5jeSBm
b3IgYmxvY2tpbmcgbW90aW9uIG9mIGxvYWRzIHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyLiBT
eW50YXg6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gRGVwZW5kKEBwaGFudG9tKQorICAgIC8v
CisgICAgLy8gVGhpcyBpcyBldmVudHVhbGx5IGNvZGVnZW5lcmF0ZWQgdG8gaGF2ZSBsb2NhbCBz
ZW1hbnRpY3MgYXMgaWYgd2UgZGlkOgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9ICQwCisgICAg
Ly8KKyAgICAvLyBCdXQgaXQgZW5zdXJlcyB0aGF0IHRoZSB1c2VycyBvZiBAcmVzdWx0IGNhbm5v
dCBleGVjdXRlIHVudGlsIEBwaGFudG9tIGlzIGNvbXB1dGVkLgorICAgIC8vCisgICAgLy8gVGhl
IGNvbXBpbGVyIGlzIG5vdCBhbGxvd2VkIHRvIHJlYXNvbiBhYm91dCB0aGUgZmFjdCB0aGF0IERl
cGVuZCBjb2RlZ2VuZXJhdGVzIHRoaXMgd2F5LiBBbnkga2luZAorICAgIC8vIG9mIHRyYW5zZm9y
bWF0aW9uIG9yIGFuYWx5c2lzIHRoYXQgcmVsaWVzIG9uIHRoZSBpbnNpZ2h0IHRoYXQgRGVwZW5k
IGlzIHJlYWxseSB6ZXJvIGlzIHVuc291bmQsCisgICAgLy8gYmVjYXVzZSBpdCB1bmxvY2tzIHJl
b3JkZXJpbmcgb2YgdXNlcnMgb2YgQHJlc3VsdCBhbmQgQHBoYW50b20uCisgICAgLy8KKyAgICAv
LyBPbiBYODYsIHRoaXMgaXMgbG93ZXJlZCB0byBhIGxvYWQtbG9hZCBmZW5jZSBhbmQgQHJlc3Vs
dCB1c2VzIEBwaGFudG9tIGRpcmVjdGx5LgorICAgIC8vCisgICAgLy8gT24gQVJNLCB0aGlzIGlz
IGxvd2VyZWQgYXMgaWYgbGlrZToKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSBCaXRYb3IoQHBo
YW50b20sIEBwaGFudG9tKQorICAgIC8vCisgICAgLy8gRXhjZXB0IHRoYXQgdGhlIGNvbXBpbGVy
IG5ldmVyIGdldHMgYW4gb3Bwb3J0dW5pdHkgdG8gc2ltcGxpZnkgb3V0IHRoZSBCaXRYb3IuCisg
ICAgRGVwZW5kLAogCiAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIGFjdHVhbCBh
ZGRyZXNzIG9mIGEgV2FzbSBtZW1vcnkgb3BlcmF0aW9uLiBJdCB0YWtlcyBhbiBJbnRQdHIKICAg
ICAvLyBhbmQgYSBwaW5uZWQgcmVnaXN0ZXIgdGhlbiBjb21wdXRlcyB0aGUgYXBwcm9wcmlhdGUg
SW50UHRyIGFkZHJlc3MuIEZvciB0aGUgdXNlLWNhc2Ugb2YKQEAgLTMwMSw2ICs0MDIsMTEyIEBA
IGlubGluZSBib29sIGlzRGVmaW5pdGVseVRlcm1pbmFsKE9wY29kZSAKICAgICB9CiB9CiAKK2lu
bGluZSBib29sIGlzTG9hZChPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7
CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAgY2FzZSBMb2FkMTZaOgor
ICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBi
b29sIGlzU3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAg
IGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitpbmxpbmUgYm9vbCBpc0xvYWRTdG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3
aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAgY2FzZSBMb2FkOFM6CisgICAg
Y2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIExvYWQ6CisgICAgY2Fz
ZSBTdG9yZTg6CisgICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9
CisKK2lubGluZSBib29sIGlzQXRvbWljKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChv
cGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdD
QVM6CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAg
ICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBB
dG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5l
IGJvb2wgaXNBdG9taWNDQVMoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkg
eworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNYY2hnKE9wY29kZSBvcGNvZGUpCit7Cisg
ICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBB
dG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNo
Z1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCitpbmxpbmUgYm9vbCBpc01lbW9yeUFjY2VzcyhPcGNvZGUgb3Bjb2RlKQorewor
ICAgIHJldHVybiBpc0F0b21pYyhvcGNvZGUpIHx8IGlzTG9hZFN0b3JlKG9wY29kZSk7Cit9CisK
K2lubGluZSBPcGNvZGUgc2lnbkV4dGVuZE9wY29kZShXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0
Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiBTRXh0ODsKKyAg
ICBjYXNlIFdpZHRoMTY6CisgICAgICAgIHJldHVybiBTRXh0MTY7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIE9vcHM7
CisgICAgfQorfQorCitKU19FWFBPUlRfUFJJVkFURSBPcGNvZGUgc3RvcmVPcGNvZGUoQmFuayBi
YW5rLCBXaWR0aCB3aWR0aCk7CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3Bh
Y2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAko
cmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiw4IEBAIHZvaWQgUHJvY2VkdXJlOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGMKICAgICAgICAgfQogICAgICAgICBkYXRhTG9nKCIgICAg
IiwgZGVlcER1bXAoKnRoaXMsIHZhbHVlKSwgIlxuIik7CiAgICAgfQorICAgIGlmIChoYXNRdWly
a3MoKSkKKyAgICAgICAgb3V0LnByaW50KCJIYXMgUXVpcmtzOiBUcnVlXG4iKTsKICAgICBpZiAo
dmFyaWFibGVzKCkuc2l6ZSgpKSB7CiAgICAgICAgIG91dC5wcmludCgiVmFyaWFibGVzOlxuIik7
CiAgICAgICAgIGZvciAoVmFyaWFibGUqIHZhcmlhYmxlIDogdmFyaWFibGVzKCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkocmV2aXNpb24gMjEzNDI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMTcsNiArMTE3LDcgQEAgcHVibGljOgogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChPcmln
aW4sIFR5cGUsIGludDY0X3QgdmFsdWUpOwogICAgIFZhbHVlKiBhZGRJbnRDb25zdGFudChWYWx1
ZSosIGludDY0X3QgdmFsdWUpOwogCisgICAgLy8gWW91J3JlIGd1YXJhbnRlZWQgdGhhdCBib3R0
b20gaXMgemVyby4KICAgICBWYWx1ZSogYWRkQm90dG9tKE9yaWdpbiwgVHlwZSk7CiAgICAgVmFs
dWUqIGFkZEJvdHRvbShWYWx1ZSopOwogCkBAIC0xOTUsNiArMTk2LDE3IEBAIHB1YmxpYzoKICAg
ICAvLyBhbGl2ZS4gR3JlYXQgZm9yIGNvbXBpbGVyLWdlbmVyYXRlZCBkYXRhIHNlY3Rpb25zLCBs
aWtlIHN3aXRjaCBqdW1wIHRhYmxlcyBhbmQgY29uc3RhbnQgcG9vbHMuCiAgICAgLy8gVGhpcyBy
ZXR1cm5zIG1lbW9yeSB0aGF0IGhhcyBiZWVuIHplcm8taW5pdGlhbGl6ZWQuCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCogYWRkRGF0YVNlY3Rpb24oc2l6ZV90KTsKKyAgICAKKyAgICAvLyBT
b21lIG9wZXJhdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBCMyBJUiB0byBiZWhhdmUgb25lIHdheSBi
dXQgb24gdGhpcyBnaXZlbiBDUFUgdGhleSBiZWhhdmUgYQorICAgIC8vIGRpZmZlcmVudCB3YXku
IFdoZW4gdHJ1ZSwgdGhvc2UgQjMgSVIgb3BzIHN3aXRjaCB0byBiZWhhdmluZyB0aGUgQ1BVIHdh
eSwgYW5kIHRoZSBvcHRpbWl6ZXIgbWF5CisgICAgLy8gc3RhcnQgdGFraW5nIGFkdmFudGFnZSBv
ZiBpdC4KKyAgICAvLworICAgIC8vIE9uZSB3YXkgdG8gdGhpbmsgb2YgaXQgaXMgbGlrZSB0aGlz
LiBJbWFnaW5lIHRoYXQgeW91IGZpbmQgdGhhdCB0aGUgY2xlYW5lc3Qgd2F5IG9mIGxvd2VyaW5n
CisgICAgLy8gc29tZXRoaW5nIGluIGxvd2VyTWFjcm9zIGlzIHRvIHVuY29uZGl0aW9uYWxseSBy
ZXBsYWNlIG9uZSBvcGNvZGUgd2l0aCBhbm90aGVyLiBUaGlzIGlzIGEgc2hvcnRjdXQKKyAgICAv
LyB3aGVyZSB5b3UgaW5zdGVhZCBrZWVwIHRoZSBzYW1lIG9wY29kZSwgYnV0IHJlbHkgb24gdGhl
IG9wY29kZSdzIG1lYW5pbmcgY2hhbmdlcyBvbmNlIGxvd2VyTWFjcm9zCisgICAgLy8gc2V0cyBo
YXNRdWlya3MuCisgICAgYm9vbCBoYXNRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX2hhc1F1aXJr
czsgfQorICAgIHZvaWQgc2V0SGFzUXVpcmtzKGJvb2wgdmFsdWUpIHsgbV9oYXNRdWlya3MgPSB2
YWx1ZTsgfQogCiAgICAgT3BhcXVlQnlwcm9kdWN0cyYgYnlwcm9kdWN0cygpIHsgcmV0dXJuICpt
X2J5cHJvZHVjdHM7IH0KIApAQCAtMjUyLDYgKzI2NCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PFNoYXJlZFRhc2s8dm9pZChQcmludFN0cmVhbSYsIE9yaWdpbik+PiBtX29yaWdpblByaW50ZXI7
CiAgICAgY29uc3Qgdm9pZCogbV9mcm9udGVuZERhdGE7CiAgICAgUENUb09yaWdpbk1hcCBtX3Bj
VG9PcmlnaW5NYXA7CisgICAgYm9vbCBtX2hhc1F1aXJrcyB7IGZhbHNlIH07CiB9OwogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1B1
cmVDU0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVD
U0UuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
dXJlQ1NFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEIzX0pJ
VCkKIAogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgorI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5o
IgogI2luY2x1ZGUgIkIzVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
CkBAIC04OSw2ICs5MCwyMyBAQCBib29sIFB1cmVDU0U6OnByb2Nlc3MoVmFsdWUqIHZhbHVlLCBE
b21pCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIHB1cmVDU0UoUHJvY2VkdXJlJiBwcm9j
KQoreworICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jLCAicHVyZUNTRSIpOworICAgIAor
ICAgIERvbWluYXRvcnMmIGRvbWluYXRvcnMgPSBwcm9jLmRvbWluYXRvcnMoKTsKKyAgICBQdXJl
Q1NFIHB1cmVDU0U7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBmb3IgKEJhc2ljQmxv
Y2sqIGJsb2NrIDogcHJvYy5ibG9ja3NJblByZU9yZGVyKCkpIHsKKyAgICAgICAgZm9yIChWYWx1
ZSogdmFsdWUgOiAqYmxvY2spIHsKKyAgICAgICAgICAgIHJlc3VsdCB8PSB2YWx1ZS0+cGVyZm9y
bVN1YnN0aXR1dGlvbigpOworICAgICAgICAgICAgcmVzdWx0IHw9IHB1cmVDU0UucHJvY2Vzcyh2
YWx1ZSwgZG9taW5hdG9ycyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuaAkocmV2aXNpb24g
MjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxWYWx1ZUtleSwg
TWF0Y2hlcz4gbV9tYXA7CiB9OwogCitib29sIHB1cmVDU0UoUHJvY2VkdXJlJik7CisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJldmlzaW9u
IDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDEyICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJ
VCkKIAorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCbG9ja0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkIz
Q29tcHV0ZURpdmlzaW9uTWFnaWMuaCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKICNpbmNs
dWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKLSNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgi
CisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1BoYXNlU2Nv
cGUuaCIKICNpbmNsdWRlICJCM1BoaUNoaWxkcmVuLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJ
bmxpbmVzLmgiCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgYnJlYWs7Ci0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIE5lZzoKICAg
ICAgICAgICAgIC8vIFR1cm4gdGhpczogTmVnKGNvbnN0YW50KQogICAgICAgICAgICAgLy8gSW50
byB0aGlzOiAtY29uc3RhbnQKQEAgLTEyOTUsNiArMTI5NiwxNiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghbV9wcm9jLmhhc1F1aXJrcygpKSB7CisgICAg
ICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTRXh0OChBdG9taWNYY2hnX19fKQorICAgICAgICAg
ICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXworICAgICAgICAgICAgICAgIGlmIChp
c0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAg
ICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFsdWU+KCktPmFjY2Vzc1dpZHRo
KCkgPT0gV2lkdGg4KSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoSWRlbnRpdHko
bV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIFNFeHQxNjoKQEAgLTEzNDMsNiArMTM1NCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICghbV9wcm9jLmhhc1F1aXJrcygpKSB7CisgICAgICAgICAgICAgICAgLy8gVHVy
biB0aGlzOiBTRXh0MTYoQXRvbWljWGNoZ19fXykKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRo
aXM6IEF0b21pY1hjaGdfX18KKyAgICAgICAgICAgICAgICBpZiAoaXNBdG9taWNYY2hnKG1fdmFs
dWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+
Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5hY2Nlc3NXaWR0aCgpID09IFdpZHRoMTYpIHsK
KyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgw
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU0V4dDMyOgpAQCAt
MjEwMSwyMiArMjEyMiwyNSBAQCBwcml2YXRlOgogICAgICAgICBBU1NFUlQobV92YWx1ZS0+bnVt
Q2hpbGRyZW4oKSA+PSAyKTsKICAgICAgICAgCiAgICAgICAgIC8vIExlYXZlIGl0IGFsb25lIGlm
IHRoZSByaWdodCBjaGlsZCBpcyBhIGNvbnN0YW50LgotICAgICAgICBpZiAobV92YWx1ZS0+Y2hp
bGQoMSktPmlzQ29uc3RhbnQoKSkKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0Nv
bnN0YW50KCkKKyAgICAgICAgICAgIHx8IG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBB
dG9taWNTdHJvbmdDQVMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBp
ZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQoKSkgeworICAgICAgICBhdXRvIHN3YXAg
PSBbJl0gKCkgewogICAgICAgICAgICAgc3RkOjpzd2FwKG1fdmFsdWUtPmNoaWxkKDApLCBtX3Zh
bHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGlm
IChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNDb25zdGFudCgpKQorICAgICAgICAgICAgcmV0dXJuIHN3
YXAoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+b3Bjb2RlKCkg
PT0gQXRvbWljU3Ryb25nQ0FTKQorICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKKyAgICAgICAg
CiAgICAgICAgIC8vIFNvcnQgdGhlIG9wZXJhbmRzLiBUaGlzIGlzIGFuIGltcG9ydGFudCBjYW5v
bmljYWxpemF0aW9uLiBXZSB1c2UgdGhlIGluZGV4IGluc3RlYWQgb2YKICAgICAgICAgLy8gdGhl
IGFkZHJlc3MgdG8gbWFrZSB0aGlzIGF0IGxlYXN0IHNsaWdodGx5IGRldGVybWluaXN0aWMuCi0g
ICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5kZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEp
LT5pbmRleCgpKSB7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAobV92YWx1ZS0+Y2hpbGQoMCksIG1f
dmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5p
bmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4KCkpCisgICAgICAgICAgICByZXR1cm4g
c3dhcCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgYSBm
b3J3YXJkIGFuYWx5c2lzLiBJbnN0ZWFkLCB3ZSB1c2VzIGEgYm91bmRlZC1zZWFyY2ggYmFja3dh
cmRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCShyZXZpc2lv
biAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBaXJDb2RlLmgiCiAj
aW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0RvbWluYXRv
cnMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCkBAIC0zNDYsNiArMzQ3LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEs
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxk
KDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAg
IHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBMb2FkOgpAQCAtMzUzLDYgKzM1NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1
ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09
IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPnR5cGUoKSAhPSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tB
Y2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBT
dG9yZTg6CkBAIC0zNjIsNiArMzY1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50
ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZh
bGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3Mo
dmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTdG9yZToK
QEAgLTM2OSw4ICszNzMsNDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09
IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2
YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAg
ICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09
IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5
cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hp
bGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPmNoaWxkKDIpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5j
aGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgi
QXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDIp
LT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFj
a0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAg
ICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoK
KyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWlj
WGNoZzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCks
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNo
aWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+
dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tB
Y2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBE
ZXBlbmQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFC
aXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
Pm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkp
LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQo
KS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtNTM3
LDYgKzU4MiwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUZlbmNlKFZhbHVlKiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7Cisg
ICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICBWQUxJREFURShtZW1v
cnktPmFjY2Vzc0JhbmsoKSA9PSBHUCwgKCJGZW5jZSBhdCAiLCAqbWVtb3J5KSk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgdmFsaWRhdGVBdG9taWMoVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IHZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAg
ICAgCisgICAgICAgIFZBTElEQVRFKGJlc3RUeXBlKEdQLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkp
ID09IGF0b21pYy0+YWNjZXNzVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgIH0KIAogICAg
IHZvaWQgdmFsaWRhdGVTdGFja0FjY2VzcyhWYWx1ZSogdmFsdWUpCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFs
dWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2Nr
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQm90dG9tUHJvdmlkZXIuaCIKICNpbmNsdWRlICJCM0ND
YWxsVmFsdWUuaCIKQEAgLTUxMCw2ICs1MTEsNyBAQCBib29sIFZhbHVlOjpyZXR1cm5zQm9vbCgp
IGNvbnN0CiAgICAgY2FzZSBBYm92ZUVxdWFsOgogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBj
YXNlIEVxdWFsT3JVbm9yZGVyZWQ6CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFBoaToKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBo
YXZlIGEgc3RvcnkgaGVyZS4KQEAgLTU4OSw2ICs1OTEsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZl
Y3RzKCkgY29uc3QKICAgICBjYXNlIEJlbG93RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRl
cmVkOgogICAgIGNhc2UgU2VsZWN0OgorICAgIGNhc2UgRGVwZW5kOgogICAgICAgICBicmVhazsK
ICAgICBjYXNlIERpdjoKICAgICBjYXNlIFVEaXY6CkBAIC02MDAsMTYgKzYwMyw0NCBAQCBFZmZl
Y3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIExv
YWQxNlo6CiAgICAgY2FzZSBMb2FkMTZTOgotICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmVzdWx0
LnJlYWRzID0gYXM8TWVtb3J5VmFsdWU+KCktPnJhbmdlKCk7CisgICAgY2FzZSBMb2FkOiB7Cisg
ICAgICAgIGNvbnN0IE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAg
ICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5
LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICByZXN1bHQud3JpdGVzID0gbWVtb3J5LT5mZW5j
ZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOworICAgICAgICB9CiAg
ICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgIGNhc2UgU3RvcmU4OgogICAgIGNhc2UgU3RvcmUxNjoKLSAgICBjYXNlIFN0b3Jl
OgotICAgICAgICByZXN1bHQud3JpdGVzID0gYXM8TWVtb3J5VmFsdWU+KCktPnJhbmdlKCk7Cisg
ICAgY2FzZSBTdG9yZTogeworICAgICAgICBjb25zdCBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gYXM8
TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC53cml0ZXMgPSBtZW1vcnktPnJhbmdlKCk7
CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5y
ZWFkcyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgpOworICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2Fz
ZSBBdG9taWNTdHJvbmdDQVM6CisgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRv
bWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdT
dWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzogeworICAg
ICAgICBjb25zdCBBdG9taWNWYWx1ZSogYXRvbWljID0gYXM8QXRvbWljVmFsdWU+KCk7CisgICAg
ICAgIHJlc3VsdC5yZWFkcyA9IGF0b21pYy0+cmFuZ2UoKSB8IGF0b21pYy0+ZmVuY2VSYW5nZSgp
OworICAgICAgICByZXN1bHQud3JpdGVzID0gYXRvbWljLT5yYW5nZSgpIHwgYXRvbWljLT5mZW5j
ZVJhbmdlKCk7CisgICAgICAgIGlmIChhdG9taWMtPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICBy
ZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRy
dWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAg
ICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVlOwogICAgICAgICBicmVhazsKQEAgLTYxNywxOCAr
NjQ4LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgICAgIGNvbnN0IEZl
bmNlVmFsdWUqIGZlbmNlID0gYXM8RmVuY2VWYWx1ZT4oKTsKICAgICAgICAgcmVzdWx0LnJlYWRz
ID0gZmVuY2UtPnJlYWQ7CiAgICAgICAgIHJlc3VsdC53cml0ZXMgPSBmZW5jZS0+d3JpdGU7Ci0g
ICAgICAgIAotICAgICAgICAvLyBQcmV2ZW50IGtpbGxpbmcgb2YgZmVuY2VzIHRoYXQgY2xhaW0g
bm90IHRvIHdyaXRlIGFueXRoaW5nLiBJdCdzIGEgYml0IHdlaXJkIHRoYXQgd2UgdXNlCi0gICAg
ICAgIC8vIGxvY2FsIHN0YXRlIGFzIHRoZSB3YXkgdG8gZG8gdGhpcywgYnV0IGl0IGhhcHBlbnMg
dG8gd29yazogd2UgbXVzdCBhc3N1bWUgdGhhdCB3ZSBjYW5ub3QKLSAgICAgICAgLy8ga2lsbCB3
cml0ZXNMb2NhbFN0YXRlIHVubGVzcyB3ZSB1bmRlcnN0YW5kcyBleGFjdGx5IHdoYXQgdGhlIGlu
c3RydWN0aW9uIGlzIGRvaW5nIChsaWtlCi0gICAgICAgIC8vIHRoZSB3YXkgdGhhdCBmaXhTU0Eg
dW5kZXJzdGFuZHMgU2V0L0dldCBhbmQgdGhlIHdheSB0aGF0IHJlZHVjZVN0cmVuZ3RoIGFuZCBv
dGhlcnMKLSAgICAgICAgLy8gdW5kZXJzdGFuZCBVcHNpbG9uKS4gVGhpcyB3b3VsZCBvbmx5IGJl
Y29tZSBhIHByb2JsZW0gaWYgd2UgaGFkIHNvbWUgYW5hbHlzaXMgdGhhdCB3YXMKLSAgICAgICAg
Ly8gbG9va2luZyB0byB1c2UgdGhlIHdyaXRlc0xvY2FsU3RhdGUgYml0IHRvIGludmFsaWRhdGUg
YSBDU0Ugb3ZlciBsb2NhbCBzdGF0ZSBvcGVyYXRpb25zLgotICAgICAgICAvLyBUaGVuIGEgRmVu
Y2Ugd291bGQgbG9vayBibG9jaywgc2F5LCB0aGUgZWxpbWluYXRpb24gb2YgYSByZWR1bmRhbnQg
R2V0LiBCdXQgaXQgbGlrZQotICAgICAgICAvLyB0aGF0J3Mgbm90IGF0IGFsbCBob3cgb3VyIG9w
dGltaXphdGlvbnMgZm9yIFNldC9HZXQvVXBzaWxvbi9QaGkgd29yayAtIHRoZXkgZ3JvayB0aGVp
cgotICAgICAgICAvLyBvcGVyYXRpb25zIGRlZXBseSBlbm91Z2ggdGhhdCB0aGV5IGhhdmUgbm8g
bmVlZCB0byBjaGVjayB0aGlzIGJpdCAtIHNvIHRoaXMgY2hlYXQgaXMKLSAgICAgICAgLy8gZmlu
ZS4KLSAgICAgICAgcmVzdWx0LndyaXRlc0xvY2FsU3RhdGUgPSB0cnVlOworICAgICAgICByZXN1
bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDQ2FsbDoK
QEAgLTY5NCw2ICs3MTQsNyBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5KCkgY29uc3QKICAgICBjYXNl
IENoZWNrOgogICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgY2FzZSBOZWc6CisgICAgY2FzZSBE
ZXBlbmQ6CiAgICAgICAgIHJldHVybiBWYWx1ZUtleShraW5kKCksIHR5cGUoKSwgY2hpbGQoMCkp
OwogICAgIGNhc2UgQWRkOgogICAgIGNhc2UgU3ViOgpAQCAtNzQ2LDEyICs3NjcsMTYgQEAgVmFs
dWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFZhbHVlOjpwZXJmb3Jt
U3Vic3RpdHV0aW9uKCkKK2Jvb2wgVmFsdWU6OnBlcmZvcm1TdWJzdGl0dXRpb24oKQogeworICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgZm9yIChWYWx1ZSomIGNoaWxkIDogY2hpbGRyZW4o
KSkgewotICAgICAgICB3aGlsZSAoY2hpbGQtPm9wY29kZSgpID09IElkZW50aXR5KQorICAgICAg
ICB3aGlsZSAoY2hpbGQtPm9wY29kZSgpID09IElkZW50aXR5KSB7CisgICAgICAgICAgICByZXN1
bHQgPSB0cnVlOwogICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC0+Y2hpbGQoMCk7CisgICAgICAg
IH0KICAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBWYWx1ZTo6aXNGcmVlKCkg
Y29uc3QKQEAgLTgwMSw2ICs4MjYsNyBAQCBUeXBlIFZhbHVlOjp0eXBlRm9yKEtpbmQga2luZCwg
VmFsdWUqIGZpCiAgICAgY2FzZSBDaGVja0FkZDoKICAgICBjYXNlIENoZWNrU3ViOgogICAgIGNh
c2UgQ2hlY2tNdWw6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIHJldHVybiBmaXJzdENoaWxk
LT50eXBlKCk7CiAgICAgY2FzZSBGcmFtZVBvaW50ZXI6CiAgICAgICAgIHJldHVybiBwb2ludGVy
VHlwZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAyMTM0
MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw2ICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgT3Bjb2RlIG9wY29kZSgpIGNv
bnN0IHsgcmV0dXJuIGtpbmQoKS5vcGNvZGUoKTsgfQogICAgIAorICAgIC8vIE5vdGUgdGhhdCB0
aGUga2luZCBpcyBtZWFudCB0byBiZSBpbW11dGFibGUuIERvIHRoaXMgd2hlbiB5b3Uga25vdyB0
aGF0IHRoaXMgaXMgc2FmZS4gSXQncyBub3QKKyAgICAvLyB1c3VhbGx5IHNhZmUuCisgICAgdm9p
ZCBzZXRLaW5kVW5zYWZlbHkoS2luZCBraW5kKSB7IG1fa2luZCA9IGtpbmQ7IH0KKyAgICB2b2lk
IHNldE9wY29kZVVuc2FmZWx5KE9wY29kZSBvcGNvZGUpIHsgbV9raW5kLnNldE9wY29kZShvcGNv
ZGUpOyB9CisgICAgCiAgICAgLy8gSXQncyBnb29kIHByYWN0aWNlIHRvIG1pcnJvciBLaW5kIG1l
dGhvZHMgaGVyZSwgc28geW91IGNhbiBzYXkgdmFsdWUtPmlzQmxhaCgpCiAgICAgLy8gaW5zdGVh
ZCBvZiB2YWx1ZS0+a2luZCgpLmlzQmxhaCgpLgogICAgIGJvb2wgaXNDaGlsbCgpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKS5pc0NoaWxsKCk7IH0KQEAgLTEwNyw2ICsxMTIsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gdmFsdWVzIHdpdGggSWRlbnRpdGllcyBvbiBib3R0b20gY29uc3RhbnRzLiBGb3IgdGhp
cyByZWFzb24sIHRoaXMgdGFrZXMgYSBjYWxsYmFjayB0aGF0IGlzCiAgICAgLy8gcmVzcG9uc2li
bGUgZm9yIGNyZWF0aW5nIGJvdHRvbXMuIFRoZXJlJ3MgYSB1dGlsaXR5IGZvciB0aGlzLCBzZWUg
QjNCb3R0b21Qcm92aWRlci5oLiBZb3UKICAgICAvLyBjYW4gYWxzbyBhY2Nlc3MgdGhhdCB1dGls
aXR5IHVzaW5nIHJlcGxhY2VXaXRoQm90dG9tKEluc2VydGlvblNldCYsIHNpemVfdCkuCisgICAg
Ly8KKyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEJvdHRvbVByb3ZpZGVyPgogICAgIHZvaWQgcmVwbGFjZVdpdGhCb3R0
b20oY29uc3QgQm90dG9tUHJvdmlkZXImKTsKICAgICAKQEAgLTI1Niw3ICsyNjMsNyBAQCBwdWJs
aWM6CiAgICAgLy8gTWFrZXMgc3VyZSB0aGF0IG5vbmUgb2YgdGhlIGNoaWxkcmVuIGFyZSBJZGVu
dGl0eSdzLiBJZiBhIGNoaWxkIHBvaW50cyB0byBJZGVudGl0eSwgdGhpcyB3aWxsCiAgICAgLy8g
cmVwb2ludCBpdCBhdCB0aGUgSWRlbnRpdHkncyBjaGlsZC4gRm9yIHNpbXBsaWNpdHksIHRoaXMg
d2lsbCBmb2xsb3cgYXJiaXRyYXJpbHkgbG9uZyBjaGFpbnMKICAgICAvLyBvZiBJZGVudGl0eSdz
LgotICAgIHZvaWQgcGVyZm9ybVN1YnN0aXR1dGlvbigpOworICAgIGJvb2wgcGVyZm9ybVN1YnN0
aXR1dGlvbigpOwogICAgIAogICAgIC8vIEZyZWUgdmFsdWVzIGFyZSB0aG9zZSB3aG9zZSBwcmVz
ZW5jZSBpcyBndWFyYW50ZWVkIG5vdCB0byBodXJ0IGNvZGUuIFdlIGNvbnNpZGVyIGNvbnN0YW50
cywKICAgICAvLyBJZGVudGl0aWVzLCBhbmQgTm9wcyB0byBiZSBmcmVlLiBDb25zdGFudHMgYXJl
IGZyZWUgYmVjYXVzZSB3ZSBob2lzdCB0aGVtIHRvIGFuIG9wdGltYWwgcGxhY2UuCkBAIC0zMjEs
NiArMzI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJVG9GOgogICAgICAgICBjYXNlIEJp
dHdpc2VDYXN0OgogICAgICAgICBjYXNlIEJyYW5jaDoKKyAgICAgICAgY2FzZSBEZXBlbmQ6CiAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkobnVtQXJncyAhPSAxKSkKICAgICAgICAgICAgICAgICBi
YWRLaW5kKGtpbmQsIG51bUFyZ3MpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDM4
IEBACiAKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAorbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CisKK1R5cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKK3sK
KyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgY2FzZSBXaWR0aDE2
OgorICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgIGNh
c2UgR1A6CisgICAgICAgICAgICByZXR1cm4gSW50MzI7CisgICAgICAgIGNhc2UgRlA6CisgICAg
ICAgICAgICByZXR1cm4gRmxvYXQ7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFZvaWQ7CisgICAgY2FzZSBXaWR0aDY0Ogor
ICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJl
dHVybiBJbnQ2NDsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBEb3VibGU7
CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIFZvaWQ7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIFZvaWQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCiBuYW1l
c3BhY2UgV1RGIHsKIAogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6
QjM6OldpZHRoIHdpZHRoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCShyZXZp
c2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCw4ICs2MCwyMSBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JUeXBlKFR5
cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIFdpZHRoNjQ7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBXaWR0aDg7CiB9CiAKK2lubGluZSBXaWR0aCBjYW5vbmlj
YWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gc3RkOjptYXgoV2lkdGgzMiwgd2lk
dGgpOworfQorCitpbmxpbmUgYm9vbCBpc0Nhbm9uaWNhbFdpZHRoKFdpZHRoIHdpZHRoKQorewor
ICAgIHJldHVybiB3aWR0aCA+PSBXaWR0aDMyOworfQorCitUeXBlIGJlc3RUeXBlKEJhbmsgYmFu
aywgV2lkdGggd2lkdGgpOworCiBpbmxpbmUgV2lkdGggY29uc2VydmF0aXZlV2lkdGgoQmFuayBi
YW5rKQogewogICAgIHJldHVybiBiYW5rID09IEdQID8gcG9pbnRlcldpZHRoKCkgOiBXaWR0aDY0
OwpAQCAtOTMsNiArMTA2LDIwIEBAIGlubGluZSBXaWR0aCB3aWR0aEZvckJ5dGVzKHVuc2lnbmVk
IGJ5dGUKICAgICB9CiB9CiAKK2lubGluZSB1aW50NjRfdCBtYXNrKFdpZHRoIHdpZHRoKQorewor
ICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgcmV0dXJuIDB4
MDAwMDAwMDAwMDAwMDBmZmxsdTsKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgICAgIHJldHVybiAw
eDAwMDAwMDAwMDAwMGZmZmZsbHU7CisgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICByZXR1cm4g
MHgwMDAwMDAwMGZmZmZmZmZmbGx1OworICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgcmV0dXJu
IDB4ZmZmZmZmZmZmZmZmZmZmZmxsdTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMu
Y3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFpclZhbGlk
YXRlLmgiCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCiAjaW5j
bHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgog
I2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUu
aCIKICNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCkBAIC00NCw2ICs0NSw3IEBACiAjaW5jbHVk
ZSAiQjNNYXRoRXh0cmFzLmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgogI2luY2x1ZGUg
IkIzTW92ZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgIkIzTmF0aXZlVHJhaXRzLmgiCiAjaW5jbHVk
ZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlICJCM1JlZHVjZVN0cmVuZ3RoLmgiCiAjaW5jbHVk
ZSAiQjNTbG90QmFzZVZhbHVlLmgiCkBAIC0yOTcsNiArMjk5LDI0IEBAIHZvaWQgdGVzdExvYWQ0
MigpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09IDQyKTsKIH0KIAordm9p
ZCB0ZXN0TG9hZEFjcTQyKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCB4ID0gNDI7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAmeCksCisgICAgICAgICAgICAwLCBIZWFwUmFuZ2UoNDIp
LCBIZWFwUmFuZ2UoNDIpKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAg
IGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRh
Iik7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUpID09IDQyKTsKK30KKwogdm9pZCB0ZXN0
TG9hZFdpdGhPZmZzZXRJbXBsKGludDMyX3Qgb2Zmc2V0NjQsIGludDMyX3Qgb2Zmc2V0MzIpCiB7
CiAgICAgewpAQCAtNTc0OCw2ICs1NzY4LDM1IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZDMyKGlu
dCBhbW91bnQpCiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7CiB9CiAKK3ZvaWQgdGVz
dFN0b3JlUmVsQWRkTG9hZEFjcTMyKGludCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQgc2xvdCA9
IDM3OworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhl
YXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5n
ZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7Cisg
ICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
ImxkYSIpOworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOworICAg
IH0KKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNLKHNs
b3QgPT0gMzcgKyBhbW91bnQpOworfQorCiB2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW0zMihpbnQg
YW1vdW50KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTc5Miw2ICs1ODQxLDc0IEBAIHZv
aWQgdGVzdFN0b3JlQWRkTG9hZDgoaW50IGFtb3VudCwgQjM6Ok8KICAgICBDSEVDSyhzbG90ID09
IDM3ICsgYW1vdW50KTsKIH0KIAordm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxOChpbnQgYW1v
dW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQ4X3Qgc2xvdCA9IDM3
OworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTgsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBS
YW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0
MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAg
aWYgKGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxk
YSIpOworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOworICAgIH0K
KyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNLKHNsb3Qg
PT0gMzcgKyBhbW91bnQpOworfQorCit2b2lkIHRlc3RTdG9yZVJlbEFkZEZlbmNlTG9hZEFjcTgo
aW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50OF90IHNs
b3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgVmFsdWUqIGxvYWRlZFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgbG9hZE9w
Y29kZSwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0Mikp
OworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRj
aHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBqaXQuc3RvcmU4
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4YmVlZiksICZzbG90KTsKKyAgICAgICAgfSk7
CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICBwYXRjaHBv
aW50LT5lZmZlY3RzLmZlbmNlID0gdHJ1ZTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAorICAgICAgICBwcm9jLCBTdG9yZTgsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIGxvYWRlZFZhbHVlLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBS
YW5nZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7
CisgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29k
ZSwgImxkYSIpOworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOwor
ICAgIH0KKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNL
KHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCiB2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW04KGlu
dCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsK
QEAgLTU4MzYsNiArNTk1MywzNSBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQxNihpbnQgYW1vdW50
LCBCMzo6CiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7CiB9CiAKK3ZvaWQgdGVzdFN0
b3JlUmVsQWRkTG9hZEFjcTE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIGludDE2X3Qgc2xvdCA9IDM3OworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIg
PSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsK
KyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTE2
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90
UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAgICAgICBzbG90UHRyLCAw
LCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRv
IGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgY2hl
Y2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1
Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2Rl
LCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30KKwogdm9pZCB0
ZXN0U3RvcmVBZGRMb2FkSW1tMTYoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQog
ewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTg3OCw2ICs2MDI0LDMzIEBAIHZvaWQgdGVzdFN0
b3JlQWRkTG9hZDY0KGludCBhbW91bnQpCiAgICAgQ0hFQ0soc2xvdCA9PSAzNzAwMDAwMDAwMGxs
ICsgYW1vdW50KTsKIH0KIAordm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxNjQoaW50IGFtb3Vu
dCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIGludDY0X3Qgc2xvdCA9IDM3MDAwMDAwMDAwbGw7CisgICAgQ29uc3RQ
dHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAg
ICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDY0
LCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFu
Z2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUo
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBj
b21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5z
dHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNv
ZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQp
KTsKKyAgICBDSEVDSyhzbG90ID09IDM3MDAwMDAwMDAwbGwgKyBhbW91bnQpOworfQorCiB2b2lk
IHRlc3RTdG9yZUFkZExvYWRJbW02NChpbnQ2NF90IGFtb3VudCkKIHsKICAgICBQcm9jZWR1cmUg
cHJvYzsKQEAgLTEzNzkxLDcgKzEzOTY0LDcgQEAgdm9pZCB0ZXN0VHJhcHBpbmdTdG9yZUVsaW1p
bmF0aW9uKCkKICAgICBjb21waWxlQW5kUnVuPGludD4ocHJvYyk7CiAgICAgdW5zaWduZWQgc3Rv
cmVDb3VudCA9IDA7CiAgICAgZm9yIChWYWx1ZSogdmFsdWUgOiBwcm9jLnZhbHVlcygpKSB7Ci0g
ICAgICAgIGlmIChNZW1vcnlWYWx1ZTo6aXNTdG9yZSh2YWx1ZS0+b3Bjb2RlKCkpKQorICAgICAg
ICBpZiAoaXNTdG9yZSh2YWx1ZS0+b3Bjb2RlKCkpKQogICAgICAgICAgICAgc3RvcmVDb3VudCsr
OwogICAgIH0KICAgICBDSEVDS19FUShzdG9yZUNvdW50LCAydSk7CkBAIC0xMzk5Nyw2ICsxNDE3
MCw3IEBAIHZvaWQgdGVzdFg4NkxlYUFkZEFkZCgpCiAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwogICAgIAogICAgIGF1dG8gY29kZSA9
IGNvbXBpbGUocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90PigqY29kZSwgMSwg
MiksICgxICsgMikgKyAxMDApOwogICAgIGNoZWNrRGlzYXNzZW1ibHkoCiAgICAgICAgICpjb2Rl
LAogICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5KSAtPiBib29sIHsKQEAgLTE0
MDA0LDcgKzE0MTc4LDYgQEAgdm9pZCB0ZXN0WDg2TGVhQWRkQWRkKCkKICAgICAgICAgICAgICAg
ICB8fCBzdHJzdHIoZGlzYXNzZW1ibHksICJsZWEgMHg2NCglcnNpLCVyZGkpLCAlcmF4Iik7CiAg
ICAgICAgIH0sCiAgICAgICAgICJFeHBlY3RlZCB0byBmaW5kIHNvbWV0aGluZyBsaWtlIGxlYSAw
eDY0KCVyZGksJXJzaSksICVyYXggYnV0IGRpZG4ndCEiKTsKLSAgICBDSEVDS19FUShpbnZva2U8
aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwgKDEgKyAyKSArIDEwMCk7CiB9CiAKIHZvaWQgdGVzdFg4
NkxlYUFkZFNobFJpZ2h0KCkKQEAgLTE0MDQxLDYgKzE0MjE0LDcgQEAgdm9pZCB0ZXN0WDg2TGVh
QWRkU2hsTGVmdFNjYWxlMSgpCiAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQpOwogICAgIAogICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJv
Yyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksIDEgKyAyKTsK
ICAgICBjaGVja0Rpc2Fzc2VtYmx5KAogICAgICAgICAqY29kZSwKICAgICAgICAgWyZdIChjb25z
dCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CkBAIC0xNDA0OCw3ICsxNDIyMiw2IEBAIHZv
aWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTEoKQogICAgICAgICAgICAgICAgIHx8IHN0cnN0
cihkaXNhc3NlbWJseSwgImxlYSAoJXJzaSwlcmRpKSwgJXJheCIpOwogICAgICAgICB9LAogICAg
ICAgICAiRXhwZWN0ZWQgdG8gZmluZCBzb21ldGhpbmcgbGlrZSBsZWEgKCVyZGksJXJzaSksICVy
YXggYnV0IGRpZG4ndCEiKTsKLSAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAx
LCAyKSwgMSArIDIpOwogfQogCiB2b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGUyKCkKQEAg
LTE0Mjc3LDYgKzE0NDUwLDY4MCBAQCB2b2lkIHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXphdGlvbigp
CiAgICAgQ0hFQ0soZm91bmQpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0
QXRvbWljV2Vha0NBUygpCit7CisgICAgVHlwZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBl
OworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBh
dXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRpb24mIGNvbXBpbGF0aW9uLCBi
b29sIGZlbmNlZCkgeworICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsb2NrIik7CisgICAgICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImNtcHhjaGciKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJ
bnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0bHgiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsZHgiKTsK
KyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0eCIp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICBCYXNpY0Jsb2NrKiByZWxvb3AgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
ICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAg
ICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEp1bXAsIE9yaWdpbigpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29y
cyhyZWxvb3ApOworICAgICAgICAKKyAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJlbG9vcC0+
YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFr
Q0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRD
b25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJlbG9v
cC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAg
ICAgICAgICAgICAgcHRyKSk7CisgICAgICAgIHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25lLCBy
ZWxvb3ApOworICAgICAgICAKKyAgICAgICAgZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUo
cHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAg
ICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgq
Y29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJh
c2ljQmxvY2sqIHJlbG9vcCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayog
ZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVt
cCwgT3JpZ2luKCkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHJlbG9vcCk7CisgICAg
ICAgIAorICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8QXRvbWlj
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3
aWR0aCwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBwdHIs
IDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKSk7CisgICAgICAgIHJlbG9vcC0+c2V0U3Vj
Y2Vzc29ycyhkb25lLCByZWxvb3ApOworICAgICAgICAKKyAgICAgICAgZG9uZS0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVl
WzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lkPigq
Y29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4o
MHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNr
TXlEaXNhc3NlbWJseSgqY29kZSwgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAg
VmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21p
Y1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJ
bnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAg
ICAgICAgICAgICAgIHB0cikpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKHN1Y2MsIGZh
aWwpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAg
ICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCks
CisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBd
ID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICh2YWx1ZVswXSA9
PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsK
KyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0s
IDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9Cisg
ICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAg
ICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywg
T3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAg
ICAgICAgICAgICAgICAgcHRyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgSW50MzIsIDApKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nl
c3NvcnMoZmFpbCwgc3VjYyk7CisgICAgICAgIAorICAgICAgICBzdWNjLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdpZHRoKSwgT3Jp
Z2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1Y2MtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBmYWls
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAg
ICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAg
ICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hp
bGUgKHZhbHVlWzBdID09IDQyKQorICAgICAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1
ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDApKTsKKyAg
ICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNf
Y2FzdDxUPigzMDApOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVD
S19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRy
dWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVl
ZiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgICAgIAorICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAg
ICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAo
IWludm9rZTxib29sPigqY29kZSwgdmFsdWUpKSB7IH0KKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwg
MTMpOworICAgICAgICAKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOwor
ICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBDSEVD
S19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Cisg
ICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAg
ICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9
IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0g
NDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlIChpbnZva2U8Ym9vbD4o
KmNvZGUsIHZhbHVlKSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2Fz
dDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAg
CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0so
aW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwg
c3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7Cisg
ICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAg
IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmln
aW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJv
YywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRD
b25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAgICAgNDIpKTsKKyAgICAgICAgCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAg
IHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICgh
aW52b2tlPGJvb2w+KCpjb2RlLCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSAtIDQyKSkg
eyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgCisgICAgICAgIHZhbHVl
WzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0soIWludm9rZTxib29sPigq
Y29kZSwgYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZSkgLSA0MikpOworICAgICAgICBDSEVD
S19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0QXRvbWljU3Ryb25nQ0FT
KCkKK3sKKyAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGgg
d2lkdGggPSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOworICAgIAorICAgIGF1dG8gY2hlY2tNeURp
c2Fzc2VtYmx5ID0gWyZdIChDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGJvb2wgZmVuY2VkKSB7
CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bihjb21waWxhdGlvbiwgImxvY2siKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9u
KGNvbXBpbGF0aW9uLCAiY21weGNoZyIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKGZlbmNlZCkgeworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBp
bGF0aW9uLCAibGRheCIpOworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNv
bXBpbGF0aW9uLCAic3RseCIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkeCIpOworICAgICAgICAgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3R4Iik7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sq
IGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAg
ICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIp
LAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmln
aW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcHRyKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIp
KSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7CisgICAgICAgIAor
ICAgICAgICBzdWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
c3RvcmVPcGNvZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBl
bmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0
cik7CisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSk7CisgICAgICAgIAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9j
KTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAg
dmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDApKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigz
MDApOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAg
IH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0g
cHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJv
bmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiks
CisgICAgICAgICAgICAgICAgICAgIHB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKCkp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCA0MikpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhzdWNjLCBmYWlsKTsK
KyAgICAgICAgCisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAg
ICAgICAgICAgcHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQy
OworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZh
bHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRp
Y19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENI
RUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwg
ZmFsc2UpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Js
b2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0g
cHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBw
cm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAg
ICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOwor
ICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgICAgICAKKyAgICAg
ICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3Jl
T3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50
Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOwor
ICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwor
ICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7Cisg
ICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVl
WzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsK
KyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0s
IDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9Cisg
ICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9u
Z0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUg
PSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9
IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBDSEVDS19FUShpbnZva2U8VD4o
KmNvZGUsIHZhbHVlKSwgNDIpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nh
c3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAg
IHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PFQ+KCpjb2RlLCB2YWx1ZSksIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19F
USh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVl
WzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAg
fQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2lu
KCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAg
ICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHBy
b2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9
IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0g
NDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIENIRUNLKGludm9rZTxib29sPigq
Y29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+
KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1
ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKCFpbnZva2U8Ym9vbD4o
KmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxU
PigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tN
eURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1
ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdp
bigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKSkpOworICAgICAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJv
Yyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAg
IHZhbHVlWzFdID0gMTM7CisgICAgICAgIENIRUNLKGludm9rZTxib29sPigqY29kZSwgdmFsdWUp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRp
Y19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKCFpbnZva2U8Ym9vbD4oKmNvZGUsICZ2YWx1
ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJs
eSgqY29kZSwgdHJ1ZSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0
ZXN0QXRvbWljWGNoZyhCMzo6T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBUeXBlIHR5cGUgPSBOYXRp
dmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46Ondp
ZHRoOworICAgIAorICAgIGF1dG8gZG9UaGVNYXRoID0gWyZdIChUJiBtZW1vcnksIFQgb3BlcmFu
ZCkgLT4gVCB7CisgICAgICAgIFQgb2xkVmFsdWUgPSBtZW1vcnk7CisgICAgICAgIHN3aXRjaCAo
b3Bjb2RlKSB7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAgICAgIG1lbW9y
eSArPSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNo
Z0FuZDoKKyAgICAgICAgICAgIG1lbW9yeSAmPSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgbWVtb3J5IHw9IG9wZXJh
bmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAg
ICAgICAgICAgbWVtb3J5IC09IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgbWVtb3J5IF49IG9wZXJhbmQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICAgICAgbWVt
b3J5ID0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gb2xkVmFsdWU7CisgICAgfTsKKyAgICAKKyAgICBhdXRvIG9sZFZhbHVlID0gWyZd
IChUIG1lbW9yeSwgVCBvcGVyYW5kKSAtPiBUIHsKKyAgICAgICAgcmV0dXJuIGRvVGhlTWF0aCht
ZW1vcnksIG9wZXJhbmQpOworICAgIH07CisgICAgCisgICAgYXV0byBuZXdWYWx1ZSA9IFsmXSAo
VCBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7CisgICAgICAgIGRvVGhlTWF0aChtZW1vcnksIG9w
ZXJhbmQpOworICAgICAgICByZXR1cm4gbWVtb3J5OworICAgIH07CisgICAgCisgICAgYXV0byBj
aGVja015RGlzYXNzZW1ibHkgPSBbJl0gKENvbXBpbGF0aW9uJiBjb21waWxhdGlvbiwgYm9vbCBm
ZW5jZWQpIHsKKyAgICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBpZiAoZmVuY2VkKSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29t
cGlsYXRpb24sICJsZGF4Iik7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24o
Y29tcGlsYXRpb24sICJzdGx4Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGR4Iik7CisgICAgICAgICAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJzdHgiKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAg
ICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0g
Y29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1
OworICAgICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpj
b2RlLCB2YWx1ZSksIG9sZFZhbHVlKDUsIDEpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0s
IG5ld1ZhbHVlKDUsIDEpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAg
ICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsK
KyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0
b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0
aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4o
KSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIAor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOwor
ICAgICAgICB2YWx1ZVswXSA9IDU7CisgICAgICAgIHZhbHVlWzFdID0gMTAwOworICAgICAgICBD
SEVDS19FUShpbnZva2U8VD4oKmNvZGUsIHZhbHVlKSwgb2xkVmFsdWUoNSwgNDIpKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMF0sIG5ld1ZhbHVlKDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzFdLCAxMDApOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUp
OworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lk
dGgsCisgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwg
dHlwZSwgNDIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAKKyAgICAgICAg
YXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAg
dmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAgICAgICAgaW52b2tlPFQ+
KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0
MikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTAwKTsKKyAgICAgICAgY2hlY2tNeURp
c2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IG9wY29kZSwgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29u
c3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSwKKyAgICAgICAgICAgIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKTsKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsK
KyAgICAgICAgdmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAgICAgICAg
aW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdW
YWx1ZSg1LCA0MikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTAwKTsKKyAgICAgICAg
Y2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCBmYWxzZSk7CisgICAgfQorfQorCit2b2lkIHRlc3RE
ZXBlbmQzMigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IFZhbHVlKiBmaXJzdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwg
SW50MzIsIE9yaWdpbigpLCBwdHIsIDApOworICAgIFZhbHVlKiBzZWNvbmQgPSByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQs
IE9yaWdpbigpLCBwdHIsCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIFpFeHQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEZXBlbmQsIE9yaWdpbigpLCBmaXJzdCkpKSwKKyAg
ICAgICAgNCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBmaXJzdCwgc2Vjb25kKSk7CisgICAgCisgICAgaW50MzJfdCB2YWx1ZXNbMl07
CisgICAgdmFsdWVzWzBdID0gNDI7CisgICAgdmFsdWVzWzFdID0gMHhiZWVmOworICAgIAorICAg
IGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJlb3IiKTsKKyAgICBlbHNlIGlmIChpc1g4Nigp
KSB7CisgICAgICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibWZlbmNlIik7
CisgICAgICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibG9jayIpOworICAg
IH0KKyAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUsIHZhbHVlcyksIDQyICsgMHhi
ZWVmKTsKK30KKwordm9pZCB0ZXN0RGVwZW5kNjQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHB0ciA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgcHRyLCAwKTsKKyAgICBWYWx1
ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywg
TG9hZCwgSW50NjQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgcHRyLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEZXBlbmQsIE9yaWdpbigpLCBmaXJzdCkpLAorICAgICAg
ICA4KTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3Jp
Z2luKCksIGZpcnN0LCBzZWNvbmQpKTsKKyAgICAKKyAgICBpbnQ2NF90IHZhbHVlc1syXTsKKyAg
ICB2YWx1ZXNbMF0gPSA0MjsKKyAgICB2YWx1ZXNbMV0gPSAweGJlZWY7CisgICAgCisgICAgYXV0
byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImVvciIpOworICAgIGVsc2UgaWYgKGlzWDg2KCkpIHsK
KyAgICAgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKKyAg
ICAgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJsb2NrIik7CisgICAgfQor
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90PigqY29kZSwgdmFsdWVzKSwgNDIgKyAweGJlZWYp
OworfQorCiB2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQogewogICAg
IFByb2NlZHVyZSBwcm9jOwpAQCAtMTQzNzAsNiArMTUyMTcsMTMgQEAgZG91YmxlIG5lZ2F0aXZl
WmVybygpCiAgICAgcmV0dXJuIC16ZXJvKCk7CiB9CiAKKyNkZWZpbmUgUlVOX05PVyh0ZXN0KSBk
byB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3Qp
KSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiLi4uXG4iKTsgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgdGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiOiBPSyFcbiIpOyAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKICNkZWZpbmUgUlVOKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTE0NDIxLDEyICsxNTI3NSwxMSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAg
ICAgICAgIHJldHVybiAhZmlsdGVyIHx8ICEhc3RyY2FzZXN0cih0ZXN0TmFtZSwgZmlsdGVyKTsK
ICAgICB9OwogCi0gICAgLy8gV2UgcnVuIHRoaXMgdGVzdCBmaXJzdCBiZWNhdXNlIGl0IGZpZGRs
ZXMgd2l0aCBzb21lCi0gICAgLy8gSlNDIG9wdGlvbnMuCi0gICAgdGVzdFRlcm1pbmFsUGF0Y2hw
b2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpOworICAgIFJVTl9OT1codGVzdFRlcm1pbmFsUGF0
Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpKTsKIAogICAgIFJVTih0ZXN0NDIoKSk7CiAg
ICAgUlVOKHRlc3RMb2FkNDIoKSk7CisgICAgUlVOKHRlc3RMb2FkQWNxNDIoKSk7CiAgICAgUlVO
KHRlc3RMb2FkT2Zmc2V0SW1tOU1heCgpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4
UGx1c09uZSgpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3bygpKTsKQEAg
LTE1MDk5LDE2ICsxNTk1MiwyMyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAg
UlVOKHRlc3ROZWczMig1MikpOwogICAgIFJVTih0ZXN0TmVnUHRyKDUzKSk7CiAgICAgUlVOKHRl
c3RTdG9yZUFkZExvYWQzMig0NikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIo
NDYpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTMyKDQ2KSk7CiAgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWQ2NCg0NjAwKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E2NCg0
NjAwKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW02NCg0NjAwKSk7CiAgICAgUlVOKHRl
c3RTdG9yZUFkZExvYWQ4KDQsIExvYWQ4WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2Fk
QWNxOCg0LCBMb2FkOFopKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkRmVuY2VMb2FkQWNxOCg0
LCBMb2FkOFopKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgoNCwgTG9hZDhaKSk7CiAg
ICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4KDQsIExvYWQ4UykpOworICAgIFJVTih0ZXN0U3RvcmVS
ZWxBZGRMb2FkQWNxOCg0LCBMb2FkOFMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgo
NCwgTG9hZDhTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQxNig2LCBMb2FkMTZaKSk7Cisg
ICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRl
c3RTdG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExv
YWQxNig2LCBMb2FkMTZTKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBM
b2FkMTZTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZTKSk7CiAg
ICAgUlVOKHRlc3RTdG9yZUFkZExvYWQzMkluZGV4KDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFk
ZExvYWRJbW0zMkluZGV4KDQ2KSk7CkBAIC0xNTgzMSw2ICsxNjY5MSw0MSBAQCB2b2lkIHJ1bihj
b25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQyKCkpOwog
ICAgIFJVTih0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RPcHRpbWl6
ZU1hdGVyaWFsaXphdGlvbigpKTsKKyAgICAKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50
OF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50MTZfdD4oKSk7CisgICAgUlVO
KHRlc3RBdG9taWNXZWFrQ0FTPGludDMyX3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NB
UzxpbnQ2NF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ4X3Q+KCkpOwor
ICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDE2X3Q+KCkpOworICAgIFJVTih0ZXN0QXRv
bWljU3Ryb25nQ0FTPGludDMyX3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGlu
dDY0X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdBZGQp
KTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ0FkZCkpOworICAg
IFJVTih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRl
c3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50OF90PihBdG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGlu
dDE2X3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4o
QXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNY
Y2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ09yKSk7
CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0
b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hn
PGludDhfdD4oQXRvbWljWGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90
PihBdG9taWNYY2hnU3ViKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21p
Y1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ1N1
YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAg
ICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0
ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9t
aWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8
aW50OF90PihBdG9taWNYY2hnKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0
b21pY1hjaGcpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZykp
OworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnKSk7CisgICAgUlVO
KHRlc3REZXBlbmQzMigpKTsKKyAgICBSVU4odGVzdERlcGVuZDY0KCkpOwogCiAgICAgUlVOKHRl
c3RXYXNtQm91bmRzQ2hlY2soMCkpOwogICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDEwMCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAkocmV2aXNpb24g
MjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgdW5zaWduZWQgQXJnOjpqc0hhc2goKSBjb25z
dAogICAgIGNhc2UgUmVsQ29uZDoKICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgY2FzZSBEb3VibGVD
b25kOgorICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICBy
ZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KTsKICAgICAgICAgYnJlYWs7
CkBAIC0xMTAsNiArMTExLDkgQEAgdW5zaWduZWQgQXJnOjpqc0hhc2goKSBjb25zdAogICAgICAg
ICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KTsKICAgICAgICAgcmVz
dWx0ICs9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCA+PiAzMik7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgU2ltcGxlQWRkcjoKKyAgICAgICAgcmVzdWx0ICs9IG1fYmFzZS5pbnRl
cm5hbFZhbHVlKCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWRkcjoKICAgICAgICAgcmVz
dWx0ICs9IG1fb2Zmc2V0OwogICAgICAgICByZXN1bHQgKz0gbV9iYXNlLmludGVybmFsVmFsdWUo
KTsKQEAgLTE1MCw2ICsxNTQsOSBAQCB2b2lkIEFyZzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAogICAgIGNhc2UgQml0SW1tNjQ6CiAgICAgICAgIG91dC5wcmludGYoIiQweCVsbHgiLCBz
dGF0aWNfY2FzdDxsb25nIGxvbmcgdW5zaWduZWQ+KG1fb2Zmc2V0KSk7CiAgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIFNpbXBsZUFkZHI6CisgICAgICAgIG91dC5wcmludCgiKCIsIGJhc2UoKSwg
IikiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWRkcjoKICAgICAgICAgaWYgKG9mZnNl
dCgpKQogICAgICAgICAgICAgb3V0LnByaW50KG9mZnNldCgpKTsKQEAgLTE4Miw2ICsxODksOSBA
QCB2b2lkIEFyZzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIGNhc2UgRG91Ymxl
Q29uZDoKICAgICAgICAgb3V0LnByaW50KGFzRG91YmxlQ29uZGl0aW9uKCkpOwogICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBTdGF0dXNDb25kOgorICAgICAgICBvdXQucHJpbnQoYXNTdGF0dXND
b25kaXRpb24oKSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAg
IG91dC5wcmludChwb2ludGVyRHVtcChzcGVjaWFsKCkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjIwLDYgKzIzMCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmcK
ICAgICBjYXNlIEFyZzo6Qml0SW1tNjQ6CiAgICAgICAgIG91dC5wcmludCgiQml0SW1tNjQiKTsK
ICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJnOjpTaW1wbGVBZGRyOgorICAgICAgICBvdXQu
cHJpbnQoIlNpbXBsZUFkZHIiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpBZGRy
OgogICAgICAgICBvdXQucHJpbnQoIkFkZHIiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQxLDYg
KzI1NCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBj
YXNlIEFyZzo6RG91YmxlQ29uZDoKICAgICAgICAgb3V0LnByaW50KCJEb3VibGVDb25kIik7CiAg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6U3RhdHVzQ29uZDoKKyAgICAgICAgb3V0LnBy
aW50KCJTdGF0dXNDb25kIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFyZzo6U3BlY2lh
bDoKICAgICAgICAgb3V0LnByaW50KCJTcGVjaWFsIik7CiAgICAgICAgIHJldHVybjsKQEAgLTI4
NSw2ICszMDEsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAg
ICAgY2FzZSBBcmc6OkVhcmx5RGVmOgogICAgICAgICBvdXQucHJpbnQoIkVhcmx5RGVmIik7CiAg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgorICAgICAgICBvdXQucHJp
bnQoIkVhcmx5WkRlZiIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6
CiAgICAgICAgIG91dC5wcmludCgiU2NyYXRjaCIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDYgKzcyLDcgQEAgcHVibGljOgogCiAgICAgICAgIC8vIFRoZXNlIGFyZSB0aGUgYWRkcmVzc2Vz
LiBJbnN0cnVjdGlvbnMgbWF5IGxvYWQgZnJvbSAoVXNlKSwgc3RvcmUgdG8gKERlZiksIG9yIGV2
YWx1YXRlCiAgICAgICAgIC8vIChVc2VBZGRyKSBhZGRyZXNzZXMuCisgICAgICAgIFNpbXBsZUFk
ZHIsCiAgICAgICAgIEFkZHIsCiAgICAgICAgIFN0YWNrLAogICAgICAgICBDYWxsQXJnLApAQCAt
ODIsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlbENvbmQsCiAgICAgICAgIFJlc0NvbmQs
CiAgICAgICAgIERvdWJsZUNvbmQsCisgICAgICAgIFN0YXR1c0NvbmQsCiAgICAgICAgIFNwZWNp
YWwsCiAgICAgICAgIFdpZHRoQXJnCiAgICAgfTsKQEAgLTE1MSw2ICsxNTMsOCBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIGFzIFVzZSBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yOiB0aGUgdXNlIG1heSBo
YXBwZW4gYmVmb3JlIHRoZSBkZWYsIG9yIGl0IG1heSBoYXBwZW4gYWZ0ZXIKICAgICAgICAgLy8g
aXQuCiAgICAgICAgIEVhcmx5RGVmLAorICAgICAgICAgICAgCisgICAgICAgIEVhcmx5WkRlZiwK
IAogICAgICAgICAvLyBTb21lIGluc3RydWN0aW9ucyBuZWVkIGEgc2NyYXRjaCByZWdpc3Rlci4g
V2UgbW9kZWwgdGhpcyBieSBzYXlpbmcgdGhhdCB0aGUgdGVtcG9yYXJ5IGlzCiAgICAgICAgIC8v
IGRlZmluZWQgZWFybHkgYW5kIHVzZWQgbGF0ZS4gVGhpcyByb2xlIGltcGxpZXMgdGhhdC4KQEAg
LTE4Niw2ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2Fz
ZSBVc2VBZGRyOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRl
ZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTIwNiw2ICsyMTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
VXNlQWRkcjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgor
ICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIyOCw2ICsyMzQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAg
ICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAg
IHJldHVybiByb2xlOwogICAgICAgICBjYXNlIFVzZToKICAgICAgICAgICAgIHJldHVybiBDb2xk
VXNlOwpAQCAtMjUzLDYgKzI2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVz
ZToKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAg
ICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI3NCw2ICsyODIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNl
IEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5NCw2
ICszMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2Va
RGVmOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAg
ICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
QEAgLTMxNSw2ICszMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAg
IGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzMwLDYgKzM0MSw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIExhdGVVc2U6CiAgICAgICAgIGNhc2UgRWFybHlE
ZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAg
ICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTgs
NiArMzcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBj
YXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlWkRlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTQxNiw2ICs0MjksMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YmlnSW1tKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oYWRkcmVzcykpOwogICAgIH0KIAorICAgIHN0
YXRpYyBBcmcgc2ltcGxlQWRkcihBaXI6OlRtcCBwdHIpCisgICAgeworICAgICAgICBBU1NFUlQo
cHRyLmlzR1AoKSk7CisgICAgICAgIEFyZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQg
PSBTaW1wbGVBZGRyOworICAgICAgICByZXN1bHQubV9iYXNlID0gcHRyOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKwogICAgIHN0YXRpYyBBcmcgYWRkcihBaXI6OlRtcCBiYXNlLCBp
bnQzMl90IG9mZnNldCA9IDApCiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZS5pc0dQKCkpOwpA
QCAtNTMzLDYgKzU1NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCisgICAgc3RhdGljIEFyZyBzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25k
aXRpb24gY29uZGl0aW9uKQorICAgIHsKKyAgICAgICAgQXJnIHJlc3VsdDsKKyAgICAgICAgcmVz
dWx0Lm1fa2luZCA9IFN0YXR1c0NvbmQ7CisgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IGNvbmRp
dGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBzdGF0aWMgQXJnIHNw
ZWNpYWwoQWlyOjpTcGVjaWFsKiBzcGVjaWFsKQogICAgIHsKICAgICAgICAgQXJnIHJlc3VsdDsK
QEAgLTYwOCw2ICs2MzgsMTEgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgYm9v
bCBpc1NpbXBsZUFkZHIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBT
aW1wbGVBZGRyOworICAgIH0KKwogICAgIGJvb2wgaXNBZGRyKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBraW5kKCkgPT0gQWRkcjsKQEAgLTYzMSw2ICs2NjYsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc01lbW9yeSgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkg
eworICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAg
Y2FzZSBTdGFjazoKICAgICAgICAgY2FzZSBDYWxsQXJnOgpAQCAtNjQxLDYgKzY3NywxMyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBp
cyBhbiBpZGlvbWF0aWMgc3RhY2sgcmVmZXJlbmNlLiBJdCBtYXkgcmV0dXJuIGZhbHNlIGZvciBz
b21lIGtpbmRzIG9mCisgICAgLy8gc3RhY2sgcmVmZXJlbmNlcy4gVGhlIGZvbGxvd2luZyBpZGlv
bXMgYXJlIHJlY29nbml6ZWQ6CisgICAgLy8gLSB0aGUgU3RhY2sga2luZAorICAgIC8vIC0gdGhl
IENhbGxBcmcga2luZAorICAgIC8vIC0gdGhlIEFkZHIga2luZCB3aXRoIHRoZSBiYXNlIGJlaW5n
IGVpdGhlciBTUCBvciBGUAorICAgIC8vIENhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbiBhcmUgYWxs
b3dlZCB0byBleHBlY3QgdGhhdCBpZiBpdCByZXR1cm5zIHRydWUsIHRoZW4gaXQgbXVzdCBiZSBv
bmUgb2YKKyAgICAvLyB0aGVzZSBlYXN5LXRvLXJlY29nbml6ZSBraW5kcy4gU28sIG1ha2luZyB0
aGlzIGZ1bmN0aW9uIHJlY29nbml6ZSBtb3JlIGtpbmRzIGNvdWxkIGJyZWFrIHRoaW5ncy4KICAg
ICBib29sIGlzU3RhY2tNZW1vcnkoKSBjb25zdDsKIAogICAgIGJvb2wgaXNSZWxDb25kKCkgY29u
c3QKQEAgLTY1OCwxMiArNzAxLDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGtpbmQoKSA9
PSBEb3VibGVDb25kOwogICAgIH0KIAorICAgIGJvb2wgaXNTdGF0dXNDb25kKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0gU3RhdHVzQ29uZDsKKyAgICB9CisKICAgICBi
b29sIGlzQ29uZGl0aW9uKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7
CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBj
YXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNzc0LDEwICs4MjMsMTYgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoa2luZCgpID09IEJp
Z0ltbSk7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGlu
dHB0cl90PihtX29mZnNldCkpOwogICAgIH0KKyAgICAKKyAgICBBaXI6OlRtcCBwdHIoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBTaW1wbGVBZGRyKTsKKyAgICAgICAg
cmV0dXJuIG1fYmFzZTsKKyAgICB9CiAKICAgICBBaXI6OlRtcCBiYXNlKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIEFTU0VSVChraW5kKCkgPT0gQWRkciB8fCBraW5kKCkgPT0gSW5kZXgpOworICAg
ICAgICBBU1NFUlQoa2luZCgpID09IFNpbXBsZUFkZHIgfHwga2luZCgpID09IEFkZHIgfHwga2lu
ZCgpID09IEluZGV4KTsKICAgICAgICAgcmV0dXJuIG1fYmFzZTsKICAgICB9CiAKQEAgLTg0NCw2
ICs4OTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQmlnSW1tOgogICAgICAgICBjYXNlIEJp
dEltbToKICAgICAgICAgY2FzZSBCaXRJbW02NDoKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgog
ICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGNhc2UgSW5kZXg6CiAgICAgICAgIGNhc2UgU3Rh
Y2s6CkBAIC04NTEsNiArOTA3LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAg
ICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBj
YXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0
aEFyZzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODcyLDEwICs5MjksMTIgQEAgcHVi
bGljOgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAg
ICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNh
c2UgU3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgY2FzZSBJbnZhbGlk
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CiAg
ICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgY2FzZSBJbmRleDoKICAgICAgICAgY2FzZSBTdGFj
azoKQEAgLTEwNDksNiArMTEwOCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBpc1Zh
bGlkQml0SW1tRm9ybSh2YWx1ZSgpKTsKICAgICAgICAgY2FzZSBCaXRJbW02NDoKICAgICAgICAg
ICAgIHJldHVybiBpc1ZhbGlkQml0SW1tNjRGb3JtKHZhbHVlKCkpOworICAgICAgICBjYXNlIFNp
bXBsZUFkZHI6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBBZGRyOgog
ICAgICAgICBjYXNlIFN0YWNrOgogICAgICAgICBjYXNlIENhbGxBcmc6CkBAIC0xMDU4LDYgKzEx
MTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXND
b25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoK
ICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xMDcwLDYgKzExMzIsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgICAgICBjYXNlIFRtcDoKKyAgICAgICAgY2FzZSBT
aW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmFz
ZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExMTAsNiArMTE3Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIEFTU0VSVChpc0FueVVzZShhcmdSb2xlKSB8fCBpc0FueURlZihhcmdSb2xlKSk7
CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwgYXJnUm9sZSwgYXJnQmFuaywgYXJnV2lkdGgp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAg
Y2FzZSBBZGRyOgogICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIFVzZSwgR1AsIGFyZ1JvbGUg
PT0gVXNlQWRkciA/IGFyZ1dpZHRoIDogcG9pbnRlcldpZHRoKCkpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMTQ0LDkgKzEyMDgsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUKGlz
SW1tKCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocG9p
bnRlclZhbHVlKCkpOwogICAgIH0KLQorICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
IGFzQWRkcmVzcygpIGNvbnN0CiAgICAgeworICAgICAgICBpZiAoaXNTaW1wbGVBZGRyKCkpCisg
ICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLmdwcigpKTsK
ICAgICAgICAgQVNTRVJUKGlzQWRkcigpKTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG1fYmFzZS5ncHIoKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obV9vZmZzZXQpKTsK
ICAgICB9CkBAIC0xMTc3LDYgKzEyNDMsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbj4obV9vZmZzZXQpOwogICAg
IH0KICAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uIGFzU3RhdHVzQ29u
ZGl0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1N0YXR1c0NvbmQoKSk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9u
PihtX29mZnNldCk7CisgICAgfQorICAgIAogICAgIC8vIFRlbGxzIHlvdSBpZiB0aGUgQXJnIGlz
IGludmVydGlibGUuIE9ubHkgY29uZGl0aW9uIGFyZ3VtZW50cyBhcmUgaW52ZXJ0aWJsZSwgYW5k
IGV2ZW4gZm9yIHRob3NlLCB0aGVyZQogICAgIC8vIGFyZSBhIGZldyBleGNlcHRpb25zIC0gbm90
YWJseSBPdmVyZmxvdyBhbmQgU2lnbmVkLgogICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3QK
QEAgLTExODQsNiArMTI1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsK
ICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAg
IGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNl
IFJlc0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OmlzSW52ZXJ0aWJs
ZShhc1Jlc3VsdENvbmRpdGlvbigpKTsKQEAgLTEyMDQsNiArMTI3Nyw4IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiByZXNDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQoYXNSZXN1bHRD
b25kaXRpb24oKSkpOwogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAgICAgICByZXR1
cm4gZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzRG91YmxlQ29uZGl0aW9uKCkp
KTsKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgorICAgICAgICAgICAgcmV0dXJuIHN0YXR1c0Nv
bmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1N0YXR1c0NvbmRpdGlvbigpKSk7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgcmV0dXJuIEFyZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDYg
KzM1LDE5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UKIAogY29u
c3QgY2hhciogY29uc3QgQmFzaWNCbG9jazo6ZHVtcFByZWZpeCA9ICIjIjsKIAordm9pZCBCYXNp
Y0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayB0YXJnZXQpCit7CisgICAgbV9z
dWNjZXNzb3JzLnJlc2l6ZSgxKTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0gPSB0YXJnZXQ7Cit9CisK
K3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sgdGFrZW4sIEZy
ZXF1ZW50ZWRCbG9jayBub3RUYWtlbikKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVzaXplKDIpOwor
ICAgIG1fc3VjY2Vzc29yc1swXSA9IHRha2VuOworICAgIG1fc3VjY2Vzc29yc1sxXSA9IG5vdFRh
a2VuOworfQorCiBib29sIEJhc2ljQmxvY2s6OmFkZFByZWRlY2Vzc29yKEJhc2ljQmxvY2sqIGJs
b2NrKQogewogICAgIHJldHVybiBCMzo6YWRkUHJlZGVjZXNzb3IodGhpcywgYmxvY2spOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHJldmlz
aW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyArMzMsMTEgQEAKICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi1uYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlv
blNldDsKKworbmFtZXNwYWNlIEFpciB7CiAKIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogY2xh
c3MgQ29kZTsKQEAgLTk5LDYgKzEwMyw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdWNjZXNzb3JM
aXN0JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAgICAgU3Vj
Y2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQogCisgICAg
dm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayk7CisgICAgdm9pZCBzZXRTdWNjZXNz
b3JzKEZyZXF1ZW50ZWRCbG9jaywgRnJlcXVlbnRlZEJsb2NrKTsKKwogICAgIEJhc2ljQmxvY2sq
IHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBzdWNjZXNzb3Io
aW5kZXgpLmJsb2NrKCk7IH0KICAgICBCYXNpY0Jsb2NrKiYgc3VjY2Vzc29yQmxvY2sodW5zaWdu
ZWQgaW5kZXgpIHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQogICAgIFN1Y2Nl
c3NvckNvbGxlY3Rpb248QmFzaWNCbG9jaywgU3VjY2Vzc29yTGlzdD4gc3VjY2Vzc29yQmxvY2tz
KCkKQEAgLTEzMyw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBCbG9ja0lu
c2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgQ29kZTsKICAgICBmcmllbmQgY2xhc3MgSW5z
ZXJ0aW9uU2V0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgQjM6OkdlbmVy
aWNCbG9ja0luc2VydGlvblNldDsKICAgICAKICAgICBCYXNpY0Jsb2NrKHVuc2lnbmVkIGluZGV4
LCBkb3VibGUgZnJlcXVlbmN5KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWlyQmxv
Y2tJbnNlcnRpb25TZXQuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJC
YXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9CdWJibGVT
b3J0Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsK
KworQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KENvZGUgJmNvZGUpCisgICAg
OiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoY29kZS5tX2Jsb2NrcykKK3sKK30KKworQmxvY2tJ
bnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpCit7Cit9CisKK30gfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9j
a0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQu
aCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5h
bWVzcGFjZSBBaXIgeworCitjbGFzcyBJbnNlcnRpb25TZXQ7CisKK3R5cGVkZWYgR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+OjpCbG9ja0luc2VydGlvbiBCbG9ja0luc2VydGlv
bjsKKworY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQgOiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0PEJhc2ljQmxvY2s+IHsKK3B1YmxpYzoKKyAgICBCbG9ja0luc2VydGlvblNldChDb2Rl
Jik7CisgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7CisgICAgCisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBldmVudHVhbGx5IGltcGxlbWVudCBCMzo6QmxvY2tJbnNlcnRpb25TZXQncyBzcGxpdEZv
cndhcmQoKS4KK307CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlm
IC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckR1bXBBc0pTLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckR1bXBBc0pTLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNDUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBaXJEdW1wQXNKUy5oIgotCi0jaWYgRU5BQkxF
KEIzX0pJVCkKLQotI2luY2x1ZGUgIkFpckNvZGUuaCIKLSNpbmNsdWRlICJBaXJJbnN0SW5saW5l
cy5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Ci0K
LW5hbWVzcGFjZSB7Ci0KLUNTdHJpbmcgdmFyTmFtZUZvckJsb2NrQXRJbmRleCh1bnNpZ25lZCBp
bmRleCkKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJiYiIsIGluZGV4KTsKLX0KLQotQ1N0cmlu
ZyB2YXJOYW1lKEJhc2ljQmxvY2sqIGJsb2NrKQotewotICAgIHJldHVybiB2YXJOYW1lRm9yQmxv
Y2tBdEluZGV4KGJsb2NrLT5pbmRleCgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lRm9yU3RhY2tT
bG90QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJzbG90
IiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZhck5hbWUoU3RhY2tTbG90KiBzbG90KQotewotICAg
IHJldHVybiB2YXJOYW1lRm9yU3RhY2tTbG90QXRJbmRleChzbG90LT5pbmRleCgpKTsKLX0KLQot
Q1N0cmluZyB2YXJOYW1lKFJlZyByZWcpCi17Ci0gICAgcmV0dXJuIHRvQ1N0cmluZygiUmVnLiIs
IHJlZy5kZWJ1Z05hbWUoKSk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5k
SW5kZXgoQmFuayBiYW5rLCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5n
KGJhbmsgPT0gRlAgPyAiZiIgOiAiIiwgInRtcCIsIGluZGV4KTsKLX0KLQotQ1N0cmluZyB2YXJO
YW1lKFRtcCB0bXApCi17Ci0gICAgaWYgKHRtcC5pc1JlZygpKQotICAgICAgICByZXR1cm4gdmFy
TmFtZSh0bXAucmVnKCkpOwotICAgIHJldHVybiB2YXJOYW1lRm9yVG1wV2l0aEJhbmtBbmRJbmRl
eChBcmcodG1wKS5iYW5rKCksIHRtcC50bXBJbmRleCgpKTsKLX0KLQotfSAvLyBhbm9ueW1vdXMg
bmFtZXNwYWNlCi0KLXZvaWQgZHVtcEFzSlMoQ29kZSYgY29kZSwgUHJpbnRTdHJlYW0mIG91dCkK
LXsKLSAgICBvdXQucHJpbnRsbigibGV0IGNvZGUgPSBuZXcgQ29kZSgpOyIpOwotICAgIAotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlLnNpemUoKTsgKytpKQotICAgICAgICBvdXQu
cHJpbnRsbigibGV0ICIsIHZhck5hbWVGb3JCbG9ja0F0SW5kZXgoaSksICIgPSBjb2RlLmFkZEJs
b2NrKCk7Iik7Ci0gICAgCi0gICAgb3V0LnByaW50bG4oImxldCBoYXNoOyIpOwotCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGUuc3RhY2tTbG90cygpLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIFN0YWNrU2xvdCogc2xvdCA9IGNvZGUuc3RhY2tTbG90cygpW2ldOwotICAgICAgICBp
ZiAoc2xvdCkgewotICAgICAgICAgICAgb3V0LnByaW50bG4oImxldCAiLCB2YXJOYW1lKHNsb3Qp
LCAiID0gY29kZS5hZGRTdGFja1Nsb3QoIiwgc2xvdC0+Ynl0ZVNpemUoKSwgIiwgIiwgc2xvdC0+
a2luZCgpLCAiKTsiKTsKLSAgICAgICAgICAgIGlmIChzbG90LT5vZmZzZXRGcm9tRlAoKSkKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnRsbih2YXJOYW1lKHNsb3QpLCAiLnNldE9mZnNldEZyb21G
UCgiLCBzbG90LT5vZmZzZXRGcm9tRlAoKSwgIik7Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRs
bigiaGFzaCA9ICIsIHZhck5hbWUoc2xvdCksICIuaGFzaCgpOyIpOwotICAgICAgICAgICAgb3V0
LnByaW50bG4oImlmIChoYXNoICE9ICIsIHNsb3QtPmpzSGFzaCgpLCAiKSIpOwotICAgICAgICAg
ICAgb3V0LnByaW50bG4oIiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgaGFzaDogXCIgKyBoYXNo
KTsiKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnRsbigiY29kZS5hZGRT
dGFja1Nsb3QoMSwgU3BpbGwpOyIpOwotICAgIH0KLSAgICAKLSAgICBmb3JFYWNoQmFuaygKLSAg
ICAgICAgWyZdIChCYW5rIGJhbmspIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNv
ZGUubnVtVG1wcyhiYW5rKTsgaS0tOykgewotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAot
ICAgICAgICAgICAgICAgICAgICAibGV0ICIsIHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZEluZGV4
KGJhbmssIGkpLCAiID0gY29kZS5uZXdUbXAoIiwgYmFuaywgIik7Iik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0pOwotICAgIAotICAgIG91dC5wcmludGxuKCJsZXQgaW5zdDsiKTsKLSAgICBv
dXQucHJpbnRsbigibGV0IGFyZzsiKTsKLSAgICAKLSAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2Nr
IDogY29kZSkgewotICAgICAgICBmb3IgKEZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9j
ay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAg
ICAgICB2YXJOYW1lKGJsb2NrKSwgIi5zdWNjZXNzb3JzLnB1c2gobmV3IEZyZXF1ZW50ZWRCbG9j
aygiLAotICAgICAgICAgICAgICAgIHZhck5hbWUoc3VjY2Vzc29yLmJsb2NrKCkpLCAiLCAiLCBz
dWNjZXNzb3IuZnJlcXVlbmN5KCksICIpKTsiKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMoKSkK
LSAgICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoYmxvY2spLCAiLnByZWRlY2Vzc29ycy5w
dXNoKCIsIHZhck5hbWUocHJlZGVjZXNzb3IpLCAiKTsiKTsKLSAgICAgICAgCi0gICAgICAgIGZv
ciAoSW5zdCYgaW5zdCA6ICpibG9jaykgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGRvIHNvbWV0aGluZyBmb3IgZmxhZ3MuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNzUxCi0gICAgICAgICAgICBvdXQucHJpbnRs
bigiaW5zdCA9IG5ldyBJbnN0KCIsIGluc3Qua2luZC5vcGNvZGUsICIpOyIpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBpbnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICAgICAgWyZdIChB
cmcmIGFyZywgQXJnOjpSb2xlLCBCYW5rLCBXaWR0aCkgewotICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGFyZy5raW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkludmFs
aWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlRtcDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlVG1wKCIsIHZhck5hbWUoYXJnLnRt
cCgpKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6SW1tOgotICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVJbW0oIiwgYXJn
LnZhbHVlKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkJpZ0ltbToK
LSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlQmlnSW1tKCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkpLCAiLCAiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52YWx1ZSgpID4+
IDMyKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6Qml0SW1tOgotICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVCaXRJbW0o
IiwgYXJnLnZhbHVlKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkJp
dEltbTY0OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVCaXRJbW02NCgiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52YWx1ZSgpKSwgIiwg
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90Pihhcmcu
dmFsdWUoKSA+PiAzMiksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkFk
ZHI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUFkZHIoIiwgdmFyTmFtZShhcmcuYmFzZSgp
KSwgIiwgIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
QXJnOjpTdGFjazoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlU3RhY2soIiwgdmFyTmFtZShh
cmcuc3RhY2tTbG90KCkpLCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBcmc6OkNhbGxBcmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUNhbGxBcmcoIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbmRleDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBB
cmcuY3JlYXRlSW5kZXgoIiwgdmFyTmFtZShhcmcuYmFzZSgpKSwgIiwgIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXJOYW1lKGFyZy5pbmRleCgpKSwgIiwgIiwgYXJnLnNjYWxlKCks
ICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6UmVsQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBB
cmcuY3JlYXRlUmVsQ29uZCgiLCBhcmcuYXNSZWxhdGlvbmFsQ29uZGl0aW9uKCksICIpOyIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlJlc0NvbmQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVJlc0NvbmQoIiwgYXJnLmFzUmVz
dWx0Q29uZGl0aW9uKCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkRv
dWJsZUNvbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJn
LmNyZWF0ZURvdWJsZUNvbmQoIiwgYXJnLmFzRG91YmxlQ29uZGl0aW9uKCksICIpOyIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlNwZWNpYWw6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVNwZWNpYWwoKTsiKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXJnOjpXaWR0aEFyZzoKLSAgICAgICAgICAgICAgICAgICAgICAg
IG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlV2lkdGhBcmcoIiwgYXJnLndpZHRoKCksICIp
OyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxu
KCJpbnN0LmFyZ3MucHVzaChhcmcpOyIpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29kZSA9PSBQYXRjaCkgewotICAgICAg
ICAgICAgICAgIGlmIChpbnN0Lmhhc05vbkFyZ0VmZmVjdHMoKSkKLSAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50bG4oImluc3QucGF0Y2hIYXNOb25BcmdFZmZlY3RzID0gdHJ1ZTsiKTsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUVh
cmx5Q2xvYmJlcmVkUmVncyA9IG5ldyBTZXQoKTsiKTsKLSAgICAgICAgICAgICAgICBvdXQucHJp
bnRsbigiaW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MgPSBuZXcgU2V0KCk7Iik7Ci0gICAgICAgICAg
ICAgICAgaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncygpLmZvckVhY2goCi0gICAgICAgICAg
ICAgICAgICAgIFsmXSAoUmVnIHJlZykgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnBy
aW50bG4oImluc3QuZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MuYWRkKCIsIHZhck5hbWUocmVnKSwg
Iik7Iik7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGluc3QuZXh0
cmFDbG9iYmVyZWRSZWdzKCkuZm9yRWFjaCgKLSAgICAgICAgICAgICAgICAgICAgWyZdIChSZWcg
cmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUNs
b2JiZXJlZFJlZ3MuYWRkKCIsIHZhck5hbWUocmVnKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJp
bnN0LnBhdGNoQXJnRGF0YSA9IFtdOyIpOwotICAgICAgICAgICAgICAgIGluc3QuZm9yRWFjaEFy
ZygKLSAgICAgICAgICAgICAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQmFuayBi
YW5rLCBXaWR0aCB3aWR0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3QucGF0Y2hBcmdEYXRhLnB1c2goe3Jv
bGU6IEFyZy4iLCByb2xlLCAiLCB0eXBlOiAiLCBiYW5rLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIsIHdpZHRoOiAiLCB3aWR0aCwgIn0pOyIpOwotICAgICAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGluc3Qua2lu
ZC5vcGNvZGUgPT0gQ0NhbGwgfHwgaW5zdC5raW5kLm9wY29kZSA9PSBDb2xkQ0NhbGwpIHsKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5jQ2FsbFR5cGUgPSAiLCBpbnN0Lm9yaWdp
bi0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5jQ2FsbEFyZ1R5
cGVzID0gW107Iik7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGlu
c3Qub3JpZ2luLT5udW1DaGlsZHJlbigpOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKCJpbnN0LmNDYWxsQXJnVHlwZXMucHVzaCgiLCBpbnN0Lm9yaWdpbi0+Y2hpbGQoaSkt
PnR5cGUoKSwgIik7Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IG91dC5wcmludGxuKCJoYXNoID0gaW5zdC5oYXNoKCk7Iik7Ci0gICAgICAgICAgICBvdXQucHJp
bnRsbigiaWYgKGhhc2ggIT0gIiwgaW5zdC5qc0hhc2goKSwgIikiKTsKLSAgICAgICAgICAgIG91
dC5wcmludGxuKCIgICAgdGhyb3cgbmV3IEVycm9yKFwiQmFkIGhhc2g6IFwiICsgaGFzaCk7Iik7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoYmxvY2spLCAi
LmFwcGVuZChpbnN0KTsiKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotfSB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKLQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuaAkocmV2aXNpb24gMjEzNDI1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5oCShub25leGlz
dGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
IG5hbWVzcGFjZSBBaXIgewotCi1jbGFzcyBDb2RlOwotCi0vLyBUaGlzIGlzIHVzZWQgZm9yIGJl
bmNobWFya2luZy4gVmFyaW91cyBvcGVyYXRpb25zIG9uIEFpciBhcmUgaW50ZXJlc3RpbmcgZnJv
bSBhIGJlbmNobWFya2luZwotLy8gc3RhbmRwb2ludC4gV2UgY2FuIHdyaXRlIHNvbWUgQWlyIHBo
YXNlcyBpbiBKUyBhbmQgdGhlbiB1c2UgdGhhdCB0byBiZW5jaG1hcmsgSlMuIFRoZSBiZW5jaG1h
cmsKLS8vIGlzIGNhbGxlZCBKU0FpciwgYW5kIGl0J3MgaW4gUGVyZm9ybWFuY2VUZXN0cy9KU0Fp
ci4KLXZvaWQgZHVtcEFzSlMoQ29kZSYsIFByaW50U3RyZWFtJik7Ci0KLX0gfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzOjpBaXIKLQotI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2Rl
LmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJFbGltaW5hdGVEZWFkQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsOCBA
QCBib29sIGVsaW1pbmF0ZURlYWRDb2RlKENvZGUmIGNvZGUpCiAgICAgICAgIGNoYW5nZWQgPSBm
YWxzZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBibG9ja0luZGV4ID0gY29kZS5zaXplKCk7IGJs
b2NrSW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gY29kZVtibG9j
a0luZGV4XTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluc3RJbmRleCA9IGJsb2NrLT5zaXplKCk7
IGluc3RJbmRleC0tOykKICAgICAgICAgICAgICAgICBoYW5kbGVJbnN0KGJsb2NrLT5hdChpbnN0
SW5kZXgpKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNyArMzEs
NiBAQAogI2luY2x1ZGUgIkFpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmgiCiAj
aW5jbHVkZSAiQWlyQWxsb2NhdGVTdGFjay5oIgogI2luY2x1ZGUgIkFpckNvZGUuaCIKLSNpbmNs
dWRlICJBaXJEdW1wQXNKUy5oIgogI2luY2x1ZGUgIkFpckVsaW1pbmF0ZURlYWRDb2RlLmgiCiAj
aW5jbHVkZSAiQWlyRml4T2J2aW91c1NwaWxscy5oIgogI2luY2x1ZGUgIkFpckZpeFBhcnRpYWxS
ZWdpc3RlclN0YWxscy5oIgpAQCAtNjIsMTcgKzYxLDE5IEBAIHZvaWQgcHJlcGFyZUZvckdlbmVy
YXRpb24oQ29kZSYgY29kZSkKIHsKICAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgiQWlyOjpw
cmVwYXJlRm9yR2VuZXJhdGlvbiIpOwogICAgIAorICAgIC8vIElmIHdlJ3JlIGRvaW5nIHN1cGVy
IHZlcmJvc2UgZHVtcGluZywgdGhlIHBoYXNlIHNjb3BlIG9mIGFueSBwaGFzZSB3aWxsIGFscmVh
ZHkgZG8gYSBkdW1wLgorICAgIGlmIChzaG91bGREdW1wSVIoQWlyTW9kZSkgJiYgIXNob3VsZER1
bXBJUkF0RWFjaFBoYXNlKEFpck1vZGUpKSB7CisgICAgICAgIGRhdGFMb2coIkluaXRpYWwgYWly
OlxuIik7CisgICAgICAgIGRhdGFMb2coY29kZSk7CisgICAgfQorICAgIAogICAgIC8vIFdlIGRv
bid0IGV4cGVjdCB0aGUgaW5jb21pbmcgY29kZSB0byBoYXZlIHByZWRlY2Vzc29ycyBjb21wdXRl
ZC4KICAgICBjb2RlLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgCiAgICAgaWYgKHNob3VsZFZh
bGlkYXRlSVIoKSkKICAgICAgICAgdmFsaWRhdGUoY29kZSk7CiAKLSAgICAvLyBJZiB3ZSdyZSBk
b2luZyBzdXBlciB2ZXJib3NlIGR1bXBpbmcsIHRoZSBwaGFzZSBzY29wZSBvZiBhbnkgcGhhc2Ug
d2lsbCBhbHJlYWR5IGRvIGEgZHVtcC4KLSAgICBpZiAoc2hvdWxkRHVtcElSKEFpck1vZGUpICYm
ICFzaG91bGREdW1wSVJBdEVhY2hQaGFzZShBaXJNb2RlKSkgewotICAgICAgICBkYXRhTG9nKCJJ
bml0aWFsIGFpcjpcbiIpOwotICAgICAgICBkYXRhTG9nKGNvZGUpOwotICAgIH0KKyAgICBzaW1w
bGlmeUNGRyhjb2RlKTsKIAogICAgIGxvd2VyTWFjcm9zKGNvZGUpOwogCkBAIC0xMDcsMjMgKzEw
OCwxMSBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAgLy8gZG9l
cyB0aGluZ3MgbGlrZSBpZGVudGlmeSB3aGljaCBjYWxsZWUtc2F2ZXMgd2UncmUgdXNpbmcgYW5k
IHNhdmVzIHRoZW0uCiAgICAgaGFuZGxlQ2FsbGVlU2F2ZXMoY29kZSk7CiAgICAgCi0gICAgaWYg
KE9wdGlvbnM6OmR1bXBBaXJBc0pTQmVmb3JlQWxsb2NhdGVTdGFjaygpKSB7Ci0gICAgICAgIGRh
dGFMb2coIkR1bXBpbmcgQWlyIGFzIEpTIGJlZm9yZSBhbGxvY2F0ZVN0YWNrOlxuIik7Ci0gICAg
ICAgIGR1bXBBc0pTKGNvZGUsIFdURjo6ZGF0YUZpbGUoKSk7Ci0gICAgICAgIGRhdGFMb2coIkFp
ciBoYXNoOiAiLCBjb2RlLmpzSGFzaCgpLCAiXG4iKTsKLSAgICB9Ci0KICAgICAvLyBUaGlzIHR1
cm5zIGFsbCBTdGFjayBhbmQgQ2FsbEFyZyBBcmdzIGludG8gQWRkciBhcmdzIHRoYXQgdXNlIHRo
ZSBmcmFtZSBwb2ludGVyLiBJdCBkb2VzCiAgICAgLy8gdGhpcyBieSBmaXJzdC1maXQgYWxsb2Nh
dGluZyBzdGFjayBzbG90cy4gSXQgc2hvdWxkIGJlIHByZXR0eSBkYXJuIGNsb3NlIHRvIG9wdGlt
YWwsIHNvIHdlCiAgICAgLy8gc2hvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhpcyB2ZXJ5
IG11Y2guCiAgICAgYWxsb2NhdGVTdGFjayhjb2RlKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6
ZHVtcEFpckFmdGVyQWxsb2NhdGVTdGFjaygpKSB7Ci0gICAgICAgIGRhdGFMb2coIkR1bXBpbmcg
QWlyIGFmdGVyIGFsbG9jYXRlU3RhY2s6XG4iKTsKLSAgICAgICAgZGF0YUxvZyhjb2RlKTsKLSAg
ICAgICAgZGF0YUxvZygiQWlyIGhhc2g6ICIsIGNvZGUuanNIYXNoKCksICJcbiIpOwotICAgIH0K
LQogICAgIC8vIElmIHdlIGNvYWxlc2NlZCBtb3ZlcyB0aGVuIHdlIGNhbiB1bmJyZWFrIGNyaXRp
Y2FsIGVkZ2VzLiBUaGlzIGlzIHRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcwogICAgIC8vIHBoYXNl
LgogICAgIHNpbXBsaWZ5Q0ZHKGNvZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJJbnN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlySW5zdElubGluZXMuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzcsNiArMjc3LDczIEBAIGlubGluZSBib29sIGlzWDg2VURpdjY0VmFsaWQoY29uc3QgSW5zdCYK
ICAgICByZXR1cm4gaXNYODZEaXZIZWxwZXJWYWxpZChpbnN0KTsKIH0KIAoraW5saW5lIGJvb2wg
aXNBdG9taWNTdHJvbmdDQVNWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworI2lmIENQVShYODYp
IHx8IENQVShYODZfNjQpCisgICAgc3dpdGNoIChpbnN0LmFyZ3Muc2l6ZSgpKSB7CisgICAgY2Fz
ZSAzOgorICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdID09IFRtcChYODZSZWdpc3RlcnM6OmVh
eCk7CisgICAgY2FzZSA1OgorICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzFdID09IFRtcChYODZS
ZWdpc3RlcnM6OmVheCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyNlbHNlIC8vIENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgVU5VU0VEX1BBUkFNKGlu
c3QpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZiAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KQorfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGNvbnN0IElu
c3QmIGluc3QpCit7CisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gaW5z
dC5hcmdzWzFdID09IFRtcChYODZSZWdpc3RlcnM6OmVheCk7CisjZWxzZSAvLyBDUFUoWDg2KSB8
fCBDUFUoWDg2XzY0KQorICAgIFVOVVNFRF9QQVJBTShpbnN0KTsKKyAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYgLy8gQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKK30KKworaW5saW5lIGJvb2wgaXNB
dG9taWNTdHJvbmdDQVM4VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNB
dG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNTdHJv
bmdDQVMxNlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ry
b25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTMzJW
YWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1Zh
bGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzY0VmFsaWQoY29u
c3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0
KTsKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVM4VmFsaWQoY29uc3Qg
SW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChp
bnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVMxNlZhbGlkKGNv
bnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFs
aWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzJWYWxp
ZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NB
U1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzY0
VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJv
bmdDQVNWYWxpZChpbnN0KTsKK30KKwogfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgog
CiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNyw2
ICsxMTcsNyBAQCBBZGQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAg
ICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAg
IHg4NjogVG1wLCBBZGRyCiAgICAgeDg2OiBUbXAsIEluZGV4CiAKQEAgLTEzNSw5ICsxMzYsMTIg
QEAgeDg2OiBBZGQxNiBVOkc6MTYsIFVEOkc6MTYKIDY0OiBBZGQ2NCBVOkc6NjQsIFVEOkc6NjQK
ICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAg
ICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAg
IHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAKIDY0OiBBZGQ2NCBVOkc6NjQs
IFU6Rzo2NCwgRDpHOjY0CiAgICAgSW1tLCBUbXAsIFRtcApAQCAtMTY2LDkgKzE3MCwxMiBAQCB4
ODY6IEFkZEZsb2F0IFU6RjozMiwgVUQ6RjozMgogU3ViMzIgVTpHOjMyLCBVWkQ6RzozMgogICAg
IFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJ
bW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2
OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKIAogYXJtNjQ6IFN1YjMyIFU6RzozMiwg
VTpHOjMyLCBEOkc6MzIKICAgICBUbXAsIFRtcCwgVG1wCkBAIC0xNzYsOSArMTgzLDEyIEBAIGFy
bTY0OiBTdWIzMiBVOkc6MzIsIFU6RzozMiwgRDpHOjMyCiA2NDogU3ViNjQgVTpHOjY0LCBVRDpH
OjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRl
eAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAK
ICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogCiBhcm02NDogU3ViNjQg
VTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTIwNCw5ICsyMTQs
MTIgQEAgeDg2OiBTdWJGbG9hdCBVOkY6MzIsIFVEOkY6MzIKIE5lZzMyIFVaRDpHOjMyCiAgICAg
VG1wCiAgICAgeDg2OiBBZGRyCisgICAgeDg2OiBJbmRleAogCiA2NDogTmVnNjQgVUQ6Rzo2NAog
ICAgIFRtcAorICAgIHg4NjogQWRkcgorICAgIHg4NjogSW5kZXgKIAogYXJtNjQ6IE5lZ2F0ZURv
dWJsZSBVOkY6NjQsIEQ6Rjo2NAogICAgIFRtcCwgVG1wCkBAIC0zMzAsOCArMzQzLDExIEBAIEFu
ZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAg
ICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1w
CisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwg
SW5kZXgKIAogNjQ6IEFuZDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwg
VG1wCkBAIC0zMzksNyArMzU1LDEzIEBAIEFuZDMyIFU6RzozMiwgVVpEOkc6MzIKIAogeDg2XzY0
OiBBbmQ2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAotICAgIHg4NjogSW1tLCBUbXAK
KyAgICBJbW0sIFRtcAorICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisgICAgQWRkciwgVG1wCisgICAgSW5kZXgsIFRtcAogCiBBbmRE
b3VibGUgVTpGOjY0LCBVOkY6NjQsIEQ6Rjo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ1OSw4
ICs0ODEsMTEgQEAgT3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6
IEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKICAgICB4
ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisg
ICAgeDg2OiBJbW0sIEluZGV4CiAKIDY0OiBPcjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAg
ICBUbXAsIFRtcCwgVG1wCkBAIC00NjksNiArNDk0LDEyIEBAIE9yMzIgVTpHOjMyLCBVWkQ6Rzoz
MgogNjQ6IE9yNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwg
VG1wCisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IFRt
cCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAorICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2
OiBJbmRleCwgVG1wCiAKIFhvcjMyIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgVG1wLCBU
bXAsIFRtcApAQCAtNDgwLDggKzUxMSwxMSBAQCBYb3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAg
VG1wLCBUbXAKICAgICB4ODY6IEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6
IFRtcCwgSW5kZXgKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAg
IHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAKIDY0OiBYb3I2NCBVOkc6NjQs
IFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDkwLDYgKzUyNCwxMSBAQCBY
b3IzMiBVOkc6MzIsIFVaRDpHOjMyCiA2NDogWG9yNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1w
LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAorICAgIHg4Njog
QWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4
ODY6IEltbSwgSW5kZXgKICAgICB4ODY6IEltbSwgVG1wCiAKIGFybTY0OiBOb3QzMiBVOkc6MzIs
IFpEOkc6MzIKQEAgLTQ5OCwxMyArNTM3LDE1IEBAIGFybTY0OiBOb3QzMiBVOkc6MzIsIFpEOkc6
MzIKIHg4NjogTm90MzIgVVpEOkc6MzIKICAgICBUbXAKICAgICBBZGRyCisgICAgSW5kZXgKIAog
YXJtNjQ6IE5vdDY0IFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAKIAoteDg2OiBOb3Q2NCBV
RDpHOjY0Cit4ODZfNjQ6IE5vdDY0IFVEOkc6NjQKICAgICBUbXAKICAgICBBZGRyCisgICAgSW5k
ZXgKIAogYXJtNjQ6IEFic0RvdWJsZSBVOkY6NjQsIEQ6Rjo2NAogICAgIFRtcCwgVG1wCkBAIC02
NjgsMjcgKzcwOSwzNzcgQEAgTG9hZDggVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAg
ICBJbmRleCwgVG1wCiAKK0xvYWRBY3E4IFU6Rzo4LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2
OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwog
U3RvcmU4IFU6Rzo4LCBEOkc6OAogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKICAgICB4
ODY6IEltbSwgSW5kZXgKICAgICB4ODY6IEltbSwgQWRkcgogCitTdG9yZVJlbDggVTpHOjgsIEQ6
Rzo4IC9lZmZlY3RzCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBUbXAsIEFkZHIKKyAg
ICB4ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIFRtcCwgU2ltcGxlQWRk
cgorCiBMb2FkOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAK
ICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6Rzoz
MiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAg
U2ltcGxlQWRkciwgVG1wCisKIExvYWQxNiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAK
ICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3ExNiBVOkc6MTYsIFpEOkc6MzIgL2VmZmVjdHMKKyAg
ICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRt
cAorCiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRt
cAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpE
Okc6MzIgL2VmZmVjdHMKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAor
ICAgIFNpbXBsZUFkZHIsIFRtcAorCiBTdG9yZTE2IFU6RzoxNiwgRDpHOjE2CiAgICAgVG1wLCBJ
bmRleAogICAgIFRtcCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBB
ZGRyCisKK1N0b3JlUmVsMTYgVTpHOjE2LCBEOkc6MTYgL2VmZmVjdHMKKyAgICB4ODY6IFRtcCwg
SW5kZXgKKyAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4Njog
SW1tLCBBZGRyCisgICAgVG1wLCBTaW1wbGVBZGRyCisKK0xvYWRBY3EzMiBVOkc6MzIsIFpEOkc6
MzIgL2VmZmVjdHMKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAg
IFNpbXBsZUFkZHIsIFRtcAorCitTdG9yZVJlbDMyIFU6RzozMiwgWkQ6RzozMiAvZWZmZWN0cwor
ICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFk
ZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICBUbXAsIFNpbXBsZUFkZHIKKworNjQ6IExvYWRB
Y3E2NCBVOkc6NjQsIFpEOkc6NjQgL2VmZmVjdHMKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4
NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAorCis2NDogU3RvcmVSZWw2NCBVOkc6
NjQsIFpEOkc6NjQgL2VmZmVjdHMKKyAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJ
bmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgVG1wLCBT
aW1wbGVBZGRyCisKKyMgVGhlIGZpcnN0IG9wZXJhbmQgaXMgcmF4LgorIyBGSVhNRTogVGhpcyBm
b3JtdWxhdGlvbiBtZWFucyB0aGF0IHRoZSBib29sZWFuIHJlc3VsdCBjYW5ub3QgYmUgcHV0IGlu
IGVheCwgZXZlbiB0aG91Z2ggYWxsIHVzZXJzCisjIG9mIHRoaXMgd291bGQgYmUgT0sgd2l0aCB0
aGF0LgoreDg2OiBBdG9taWNTdHJvbmdDQVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4
LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAor
ICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6IEF0b21pY1N0cm9u
Z0NBUzE2IFU6RzozMiwgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2LCBaRDpHOjggL2VmZmVjdHMK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRt
cCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzMyIFU6RzozMiwgVUQ6
RzozMiwgVTpHOjMyLCBVRDpHOjMyLCBaRDpHOjggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBU
bXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRt
cAorCit4ODZfNjQ6IEF0b21pY1N0cm9uZ0NBUzY0IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBV
RDpHOjY0LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIs
IFRtcAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6IEF0b21p
Y1N0cm9uZ0NBUzggVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wKiwgVG1w
LCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzE2IFVE
Okc6MTYsIFU6RzozMiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIFRtcCosIFRtcCwgQWRkcgorICAg
IFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdHJvbmdDQVMzMiBVRDpHOjMyLCBVOkc6
MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAs
IEluZGV4CisKK3g4Nl82NDogQXRvbWljU3Ryb25nQ0FTNjQgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpH
OjY0IC9lZmZlY3RzCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAor
Cit4ODY6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzggVTpHOjMyLCBVRDpHOjgsIFU6Rzo4LCBVRDpH
OjggL2JyYW5jaCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAg
IFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdD
QVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiAvYnJhbmNoIC9lZmZlY3RzCisg
ICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1w
LCBJbmRleAorCit4ODY6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyIFU6RzozMiwgVUQ6RzozMiwg
VTpHOjMyLCBVRDpHOjMyIC9icmFuY2ggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBU
bXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4Nl82NDogQnJh
bmNoQXRvbWljU3Ryb25nQ0FTNjQgVTpHOjMyLCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQgL2Jy
YW5jaCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1
c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQ4IFU6Rzo4LCBVRDpHOjgg
L2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0
cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4NjogQXRvbWljQWRkMzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2XzY0OiBBdG9taWNBZGQ2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBJbW0s
IEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODY6IEF0b21pY1N1YjggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAg
IEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
U3ViMTYgVTpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWIzMiBV
Okc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1N1YjY0IFU6Rzo2
NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kOCBVOkc6OCwgVUQ6Rzo4
IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgor
ICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBbmQxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVj
dHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODY6IEF0b21pY0FuZDMyIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4Nl82NDogQXRvbWljQW5kNjQgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1t
LCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwor
eDg2OiBBdG9taWNPcjggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAg
IEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
T3IxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yMzIgVTpH
OjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNPcjY0IFU6Rzo2NCwg
VUQ6Rzo2NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAs
IEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9yOCBVOkc6OCwgVUQ6Rzo4IC9l
ZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYb3IxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMK
KyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJ
bmRleAorCit4ODY6IEF0b21pY1hvcjMyIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIElt
bSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisK
K3g4Nl82NDogQXRvbWljWG9yNjQgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNOZWc4IFVEOkc6OCAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6
IEF0b21pY05lZzE2IFVEOkc6MTYgL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2
OiBBdG9taWNOZWczMiBVRDpHOjMyIC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4
Nl82NDogQXRvbWljTmVnNjQgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAor
Cit4ODY6IEF0b21pY05vdDggVUQ6Rzo4IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisK
K3g4NjogQXRvbWljTm90MTYgVUQ6RzoxNiAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAor
Cit4ODY6IEF0b21pY05vdDMyIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgK
KworeDg2XzY0OiBBdG9taWNOb3Q2NCBVRDpHOjY0IC9lZmZlY3RzCisgICAgQWRkcgorICAgIElu
ZGV4CisKK3g4NjogQXRvbWljWGNoZ0FkZDggVUQ6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZ0FkZDE2IFVEOkc6MTYs
IFVEOkc6MTYgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Njog
QXRvbWljWGNoZ0FkZDMyIFVEOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljWGNoZ0FkZDY0IFVEOkc6NjQsIFVEOkc6
NjQgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
WGNoZzggVUQ6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisKK3g4NjogQXRvbWljWGNoZzE2IFVEOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZzMyIFVEOkc6MzIsIFVE
Okc6MzIgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDog
QXRvbWljWGNoZzY0IFVEOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK2FybTY0OiBMb2FkTGluazggVTpHOjgsIFpEOkc6OCAvZWZmZWN0cwor
ICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmtBY3E4IFU6Rzo4LCBaRDpHOjgg
L2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworIyBTdXBlciBjb25mdXNpbmcgZmFjdDog
dGhpcyByZXR1cm5zIDAgdG8gbWVhbiBzdWNjZXNzLCAxIHRvIG1lYW4gZmFpbHVyZS4KK2FybTY0
OiBTdG9yZUNvbmQ4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2lt
cGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6
OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGluazE2
IFU6RzoxNiwgWkQ6RzoxNiAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDog
TG9hZExpbmtBY3ExNiBVOkc6MTYsIFpEOkc6MTYgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBU
bXAKKworYXJtNjQ6IFN0b3JlQ29uZDE2IFU6RzoxNiwgRDpHOjE2LCBFWkQ6Rzo4IC9lZmZlY3Rz
CisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDE2IFU6Rzox
NiwgRDpHOjE2LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKwor
YXJtNjQ6IExvYWRMaW5rMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZlY3RzCisgICAgU2ltcGxlQWRk
ciwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTMyIFU6RzozMiwgWkQ6RzozMiAvZWZmZWN0cwor
ICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kMzIgVTpHOjMyLCBEOkc6MzIs
IEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3Rv
cmVDb25kUmVsMzIgVTpHOjMyLCBEOkc6MzIsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNp
bXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbms2NCBVOkc6NjQsIFpEOkc6NjQgL2VmZmVj
dHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxNjQgVTpHOjY0LCBa
RDpHOjY0IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQ2
NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwg
VG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OCAvZWZm
ZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBEZXBlbmQzMiBVOkc6MzIs
IFpEOkc6MzIKKyAgICBUbXAsIFRtcAorCithcm02NDogRGVwZW5kNjQgVTpHOjY0LCBaRDpHOjY0
CisgICAgVG1wLCBUbXAKIAogQ29tcGFyZTMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6
MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCShyZXZpc2lv
biAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxv
Y2tPcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzcsNiArMTc3LDEwIEBAIHZvaWQgb3B0
aW1pemVCbG9ja09yZGVyKENvZGUmIGNvZGUpCiAgICAgICAgIGNhc2UgQnJhbmNoU3ViNjQ6CiAg
ICAgICAgIGNhc2UgQnJhbmNoTmVnMzI6CiAgICAgICAgIGNhc2UgQnJhbmNoTmVnNjQ6CisgICAg
ICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTODoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9t
aWNTdHJvbmdDQVMxNjoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMjoKKyAg
ICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVM2NDoKICAgICAgICAgICAgIGlmIChjb2Rl
LmZpbmROZXh0QmxvY2soYmxvY2spID09IGJsb2NrLT5zdWNjZXNzb3JCbG9jaygwKSAmJiBicmFu
Y2guYXJnc1swXS5pc0ludmVydGlibGUoKSkgewogICAgICAgICAgICAgICAgIHN0ZDo6c3dhcChi
bG9jay0+c3VjY2Vzc29yKDApLCBibG9jay0+c3VjY2Vzc29yKDEpKTsKICAgICAgICAgICAgICAg
ICBicmFuY2guYXJnc1swXSA9IGJyYW5jaC5hcmdzWzBdLmludmVydGVkKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3Bw
CShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBh
ZEludGVyZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgdm9pZCBw
YWRJbnRlcmZlcmVuY2UoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFy
Zzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KHJvbGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAg
ICAgaGFzRWFybHlEZWYgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlVXNlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNp
b24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5
dGhpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBzcGlsbEV2
ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVD
b2xkVXNlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNl
IEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDog
Y29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKGJhbmspKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFzZXRCZWZvcmUuZ2V0KHJlZykgJiYgIXNldEFmdGVyLmdldChyZWcpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgko
cmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVf
Z2VuZXJhdG9yLnJiCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNCArNTEsNDkgQEAgY2xhc3MgQXJn
CiAgICAgICAgIEBiYW5rID0gYmFuawogICAgICAgICBAd2lkdGggPSB3aWR0aAogICAgIGVuZAot
Ci0gICAgZGVmIHdpZHRoQ29kZQorICAgIAorICAgIGRlZiBzZWxmLndpZHRoQ29kZSh3aWR0aCkK
ICAgICAgICAgaWYgd2lkdGggPT0gIlB0ciIKICAgICAgICAgICAgICJwb2ludGVyV2lkdGgoKSIK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgIldpZHRoI3t3aWR0aH0iCiAgICAgICAgIGVuZAog
ICAgIGVuZAorCisgICAgZGVmIHdpZHRoQ29kZQorICAgICAgICBBcmcud2lkdGhDb2RlKHdpZHRo
KQorICAgIGVuZAorICAgIAorICAgIGRlZiBzZWxmLnJvbGVDb2RlKHJvbGUpCisgICAgICAgIGNh
c2Ugcm9sZQorICAgICAgICB3aGVuICJVIgorICAgICAgICAgICAgIlVzZSIKKyAgICAgICAgd2hl
biAiRCIKKyAgICAgICAgICAgICJEZWYiCisgICAgICAgIHdoZW4gIlpEIgorICAgICAgICAgICAg
IlpEZWYiCisgICAgICAgIHdoZW4gIlVEIgorICAgICAgICAgICAgIlVzZURlZiIKKyAgICAgICAg
d2hlbiAiVVpEIgorICAgICAgICAgICAgIlVzZVpEZWYiCisgICAgICAgIHdoZW4gIlVBIgorICAg
ICAgICAgICAgIlVzZUFkZHIiCisgICAgICAgIHdoZW4gIlMiCisgICAgICAgICAgICAiU2NyYXRj
aCIKKyAgICAgICAgd2hlbiAiRUQiCisgICAgICAgICAgICAiRWFybHlEZWYiCisgICAgICAgIHdo
ZW4gIkVaRCIKKyAgICAgICAgICAgICJFYXJseVpEZWYiCisgICAgICAgIHdoZW4gIkxVIgorICAg
ICAgICAgICAgIkxhdGVVc2UiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisgICAg
ICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiByb2xlQ29kZQorICAgICAgICBBcmcucm9s
ZUNvZGUocm9sZSkKKyAgICBlbmQKIGVuZAogCiBjbGFzcyBPdmVybG9hZApAQCAtMTgyLDcgKzIx
Nyw3IEBAIGRlZiBsZXgoc3RyLCBmaWxlTmFtZSkKIGVuZAogCiBkZWYgaXNSb2xlKHRva2VuKQot
ICAgIHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpEKXwoVUEpfChTKSlcWi8KKyAg
ICB0b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUyl8KEVEKXwoRVpE
KXwoTFUpKVxaLwogZW5kCiAKIGRlZiBpc0dGKHRva2VuKQpAQCAtMTkwLDcgKzIyNSw3IEBAIGRl
ZiBpc0dGKHRva2VuKQogZW5kCiAKIGRlZiBpc0tpbmQodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xB
KChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8KEFkZHIpfChJbmRleCl8
KFJlbENvbmQpfChSZXNDb25kKXwoRG91YmxlQ29uZCkpXFovCisgICAgdG9rZW4gPX4gL1xBKChU
bXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8KFNpbXBsZUFkZHIpfChBZGRy
KXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNvbmQpfChTdGF0dXNDb25kKSlc
Wi8KIGVuZAogCiBkZWYgaXNBcmNoKHRva2VuKQpAQCAtMjY0LDcgKzI5OSw3IEBAIGNsYXNzIFBh
cnNlcgogCiAgICAgZGVmIGNvbnN1bWVLaW5kCiAgICAgICAgIHJlc3VsdCA9IHRva2VuLnN0cmlu
ZwotICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwgQml0SW1t
LCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgb3IgRG91Ymxl
Q29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKKyAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0
ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgU2ltcGxlQWRkciwg
QWRkciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIERvdWJsZUNvbmQsIG9yIFN0YXR1c0NvbmQp
IikgdW5sZXNzIGlzS2luZChyZXN1bHQpCiAgICAgICAgIGFkdmFuY2UKICAgICAgICAgcmVzdWx0
CiAgICAgZW5kCkBAIC02MzQsMjggKzY2OSw3IEBAIHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5k
ZXggewogICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUK
LSAgICAgICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVz
ZSIKLSAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAgICAgICByb2xlID0g
IkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJaRCIKLSAgICAgICAgICAgICAgICAgICAgcm9s
ZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlVEIgotICAgICAgICAgICAgICAgICAg
ICByb2xlID0gIlVzZURlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJVWkQiCi0gICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJVQSIKLSAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAgICAgICAgIHdoZW4g
IlMiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2NyYXRjaCIKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgZW5kCi0K
LSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0sIEFyZzo6
I3tyb2xlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCisgICAgICAgICAgICAg
ICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7YXJnLnJvbGVDb2Rl
fSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCiAgICAgICAgICAgICB9CiAgICAg
ICAgIGVuZAogICAgIH0KQEAgLTgwNCw2ICs4MTgsOSBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRl
ZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJCaXRJbW02NCIKICAgICAgICAgICAgICAgICAg
ICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZEJpdEltbTY0Rm9ybShhcmdzWyN7aW5kZXh9
XS52YWx1ZSgpKSkiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJO
KGZhbHNlKTsiCisgICAgICAgICAgICAgICAgd2hlbiAiU2ltcGxlQWRkciIKKyAgICAgICAgICAg
ICAgICAgICAgb3V0cC5wdXRzICJpZiAoIWFyZ3NbI3tpbmRleH1dLnRtcCgpLmlzR1AoKSkiCisg
ICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAg
ICAgICAgICAgICAgd2hlbiAiQWRkciIKICAgICAgICAgICAgICAgICAgICAgaWYgYXJnLnJvbGUg
PT0gIlVBIgogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoYXJnc1sje2lu
ZGV4fV0uaXNTdGFjaygpICYmIGFyZ3NbI3tpbmRleH1dLnN0YWNrU2xvdCgpLT5pc1NwaWxsKCkp
IgpAQCAtODE5LDYgKzgzNiw3IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAg
ICAgICAgICAgIHdoZW4gIlJlbENvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiUmVzQ29uZCIK
ICAgICAgICAgICAgICAgICB3aGVuICJEb3VibGVDb25kIgorICAgICAgICAgICAgICAgIHdoZW4g
IlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBy
YWlzZSAiVW5leHBlY3RlZCBraW5kOiAje2tpbmQubmFtZX0iCiAgICAgICAgICAgICAgICAgZW5k
CkBAIC0xMDk1LDcgKzExMTMsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAg
ICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNUcnVzdGVkSW1tMzIo
KSIKICAgICAgICAgICAgICAgICB3aGVuICJCaWdJbW0iLCAiQml0SW1tNjQiCiAgICAgICAgICAg
ICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzVHJ1c3RlZEltbTY0KCkiCi0g
ICAgICAgICAgICAgICAgd2hlbiAiQWRkciIKKyAgICAgICAgICAgICAgICB3aGVuICJTaW1wbGVB
ZGRyIiwgIkFkZHIiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRl
eH1dLmFzQWRkcmVzcygpIgogICAgICAgICAgICAgICAgIHdoZW4gIkluZGV4IgogICAgICAgICAg
ICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc0Jhc2VJbmRleCgpIgpAQCAt
MTEwNSw2ICsxMTIzLDggQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAg
ICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzUmVzdWx0Q29uZGl0aW9uKCki
CiAgICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29uZCIKICAgICAgICAgICAgICAgICAgICAg
b3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNEb3VibGVDb25kaXRpb24oKSIKKyAgICAgICAg
ICAgICAgICB3aGVuICJTdGF0dXNDb25kIgorICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50
ICJhcmdzWyN7aW5kZXh9XS5hc1N0YXR1c0NvbmRpdGlvbigpIgogICAgICAgICAgICAgICAgIGVu
ZAogICAgICAgICAgICAgfQogCkBAIC0xMTQ4LDI3ICsxMTY4LDcgQEAgRmlsZS5vcGVuKCJKU0Fp
cl9vcGNvZGUuanMiLCAidyIpIHsKICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tv
dmVybG9hZC5zaWduYXR1cmUubGVuZ3RofToiIGlmIG5lZWRPdmVybG9hZFN3aXRjaAogICAgICAg
ICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAg
ICAgICAgICAgICB8IGFyZywgaW5kZXggfAotICAgICAgICAgICAgICAgICAgICByb2xlID0gbmls
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUKLSAgICAgICAgICAgICAgICAgICAg
d2hlbiAiVSIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAg
ICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYi
Ci0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlpEIgotICAgICAgICAgICAgICAgICAgICAgICAg
cm9sZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVRCIKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJV
WkQiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZVpEZWYiCi0gICAgICAgICAg
ICAgICAgICAgIHdoZW4gIlVBIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VB
ZGRyIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJTIgotICAgICAgICAgICAgICAgICAgICAg
ICAgcm9sZSA9ICJTY3JhdGNoIgotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygj
e2luZGV4fSwgZnVuYywgQXJnLiN7cm9sZX0sICN7YXJnLmJhbmt9UCwgI3thcmcud2lkdGh9KTsi
CisgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwg
ZnVuYywgQXJnLiN7YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aH0pOyIK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJicmVhazsiCiAg
ICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNyw5ICs0MTcsNiBAQCB0eXBlZGVmIGNvbnN0IGNo
YXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGR1bXBNb2R1bGVMb2FkaW5nU3RhdGUsIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGV4cG9zZUludGVybmFsTW9kdWxl
TG9hZGVyLCBmYWxzZSwgTm9ybWFsLCAiZXhwb3NlIHRoZSBpbnRlcm5hbCBtb2R1bGUgbG9hZGVy
IG9iamVjdCB0byB0aGUgZ2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dpbmciKSBcCiAgICAgXAotICAg
IHYoYm9vbCwgZHVtcEFpckFzSlNCZWZvcmVBbGxvY2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCi0gICAgdihib29sLCBkdW1wQWlyQWZ0ZXJBbGxvY2F0ZVN0YWNrLCBmYWxzZSwg
Tm9ybWFsLCBudWxscHRyKSBcCi0gICAgXAogICAgIHYoYm9vbCwgdXNlU3VwZXJTYW1wbGVyLCBm
YWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoYm9vbCwgcmVwb3J0TExJbnRT
dGF0cywgZmFsc2UsIENvbmZpZ3VyYWJsZSwgIlJlcG9ydHMgTExJbnQgc3RhdGlzdGljcyIpIFwK
SW5kZXg6IFdlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNp
dGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTM0MjUpCisrKyBXZWJzaXRlcy93
ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE3
LTAzLTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQjMgc2hv
dWxkIGhhdmUgY29tcHJlaGVuc2l2ZSBzdXBwb3J0IGZvciBhdG9taWMgb3BlcmF0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMzQ5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBEb2N1
bWVudCB0aGUgbmV3IG9wY29kZXMhCisKKyAgICAgICAgKiBkb2NzL2IzL2ludGVybWVkaWF0ZS1y
ZXByZXNlbnRhdGlvbi5odG1sOgorCiAyMDE3LTAzLTAzICBNYW51ZWwgUmVnbyBDYXNhc25vdmFz
ICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG1pbm9yIHVwZGF0ZXMg
b24gQ1NTIEdyaWQgTGF5b3V0IGV4YW1wbGVzLgpJbmRleDogV2Vic2l0ZXMvd2Via2l0Lm9yZy9k
b2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRt
bAkocmV2aXNpb24gMjEzNDI1KQorKysgV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVy
bWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4
LDI4IEBACiAKICAgICA8cD5FYWNoIGJhc2ljIGJsb2NrIGNvbnRhaW5zIGEgVmVjdG9yJmx0O1Zh
bHVlKiZndDsgYXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBibG9jay4gQ29udHJvbAogICAgICAgZmxv
dyBpbnNpZGUgdGhlIGJsb2NrIGlzIGltcGxpY2l0IGJhc2VkIG9uIHRoZSBvcmRlciBvZiBWYWx1
ZXMgaW4gdGhlIHZlY3Rvci48L3A+CisgICAgCisgICAgPGgyPk1lbW9yeSBtb2RlbDwvaDI+Cisg
ICAgCisgICAgPHA+QjMgdXNlcyBhIHNlY29uZGFyeSBhZGRyZXNzIHNwYWNlIG9mIDxpPmFic3Ry
YWN0IGhlYXBzPC9pPiB0byByZWFzb24gYWJvdXQgYWxpYXNpbmcgYW5kCisgICAgICBjb25jdXJy
ZW5jeS4gVGhpcyBhZGRyZXNzIHNwYWNlIGlzIDMyLWJpdCBhbmQgd2UgcG9pbnQgYXQgaXQgdXNp
bmcgdGhlIEhlYXBSYW5nZSB0eXBlLiBJZiB5b3UKKyAgICAgIG5ldmVyIHN1cHBseSBIZWFwUmFu
Z2VzIHRvIHlvdXIgbWVtb3J5IG9wZXJhdGlvbnMgKHRoZSBkZWZhdWx0KSwgdGhleSB3aWxsIGhh
dmUgWzAsIFVJTlRfTUFYXQorICAgICAgYXMgdGhlaXIgcmFuZ2UsIGluZGljYXRpbmcgdGhhdCB0
aGUgb3BlcmF0aW9uIG1heSBjb25zZXJ2YXRpdmVseSB3cml0ZSB0byBhbGwgMjxzdXA+MzI8L3N1
cD4KKyAgICAgIGFic3RyYWN0IGhlYXBzLiBUd28gbWVtb3J5IG9wZXJhdGlvbnMgYXJlIHNhaWQg
dG8gYWxpYXMgaWYgdGhleSBhY2Nlc3MgdGhlIHNhbWUgYWJzdHJhY3QgaGVhcHMuCisgICAgICBB
IHNpbXBsZSBleGFtcGxlIG9mIHVzaW5nIEhlYXBSYW5nZXMgaXMgd2l0aCBsb2FkcyBhbmQgc3Rv
cmVzLCBidXQgeW91IGNhbiBhbHNvIHN1cHBseQorICAgICAgSGVhcFJhbmdlcyBhcyBib3VuZHMg
b24gdGhlIGVmZmVjdHMgb2YgY2FsbHMgYW5kIHBhdGNocG9pbnRzLjwvcD4KKyAgICAKKyAgICA8
cD5GZW5jZXMgYXJlIG1vZGVsZWQgYXMgcGhhbnRvbSBlZmZlY3RzIHRoYXQgd2UgY2FsbCA8aT5m
ZW5jZSByYW5nZXM8L2k+LiBGb3IgZXhhbXBsZSwgYSBsb2FkCisgICAgICBmZW5jZSBjb3VsZCBi
ZSByZXByZXNlbnRlZCBhcyBhIHBhdGNocG9pbnQgdGhhdCB3cml0ZXMgdG8gWzAsIFVJTlRfTUFY
XS4gQjMgbW9kZWxzIGxvYWQgZmVuY2VzLAorICAgICAgc3RvcmUgZmVuY2VzLCBzdG9yZS1sb2Fk
IGZlbmNlcywgYWNxdWlyZSBmZW5jZXMsIGFuZCByZWxlYXNlIGZlbmNlcyB1c2luZyBmZW5jZSBy
YW5nZXMuIFRoZQorICAgICAgYWJzZW5jZSBvZiBhIGZlbmNlIHJhbmdlIG1lYW5zIHRoYXQgdGhl
cmUgaXMgbm8gZmVuY2UuPC9wPgorICAgIAorICAgIDxwPkFjcXVpcmUgZmVuY2VzIGFyZSBtb2Rl
bGVkIGFzIHBoYW50b20gd3JpdGVzIHRvIG1lbW9yeSwgd2hpbGUgcmVsZWFzZSBmZW5jZXMgYXJl
IG1vZGVsZWQgYXMKKyAgICAgIHBoYW50b20gcmVhZHMgZnJvbSBtZW1vcnkuIEJ5IGl0c2VsZiB0
aGlzIGRvZXMgbm90IHBlcm1pdCBCMyB0byBkbyBhbGwgb2YgdGhlIHJlb3JkZXJpbmdzIHRoYXQK
KyAgICAgIGFjcXVpcmUvcmVsZWFzZSBhbGxvdy4gQjMgaXMgdGhlcmVmb3JlIGFsbG93ZWQgdG8g
dHJlYXQgbG9hZHMvc3RvcmVzIHdpdGggZmVuY2UgcmFuZ2VzIG1vcmUKKyAgICAgIHByZWNpc2Vs
eS4gVGhlIHBoYW50b20gd3JpdGUgZWZmZWN0cyBvZiBhIGZlbmNlZCBsb2FkIGNhbm5vdCB3cml0
ZSB0byBhbnl0aGluZyB0aGF0IGlzIHJlYWQgb3IKKyAgICAgIHdyaXR0ZW4gYWZ0ZXIgdGhlIGZl
bmNlLiBUaGUgcGhhbnRvbSByZWFkIGVmZmVjdHMgb2YgYSBmZW5jZWQgc3RvcmUgY2Fubm90IHJl
YWQgYW55dGhpbmcgdGhhdAorICAgICAgaXMgd3JpdHRlbiBhZnRlciB0aGUgZmVuY2UuPC9wPgog
CiAgICAgPGgyPk9wY29kZXM8L2gyPgogCkBAIC0zOTUsNTEgKzQxNywxMTMgQEAKICAgICAgIDxk
dD5JbnQzMiBMb2FkOFooSW50UHRyLCBvZmZzZXQpPC9kdD4KICAgICAgIDxkZD5Mb2FkcyBhIGJ5
dGUgZnJvbSB0aGUgYWRkcmVzcywgd2hpY2ggaXMgY29tcHV0ZWQgYnkgYWRkaW5nIHRoZSBjb21w
aWxlLXRpbWUgMzItYml0CiAgICAgICAgIHNpZ25lZCBpbnRlZ2VyIG9mZnNldCB0byB0aGUgY2hp
bGQgdmFsdWUuICBaZXJvIGV4dGVuZHMgdGhlIGxvYWRlZCBieXRlLCBzbyB0aGUgaGlnaCAyNAot
ICAgICAgICBiaXRzIGFyZSBhbGwgemVyby4gIE11c3QgdXNlIHRoZSBNZW1vcnlWYWx1ZSBjbGFz
cy4gIE1heSBoYXZlIHRoZSBUcmFwcyBmbGFnIHNldC48L2RkPgorICAgICAgICBiaXRzIGFyZSBh
bGwgemVyby4gIE11c3QgdXNlIHRoZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBU
cmFwcyBmbGFnIHNldC4gTWF5IHNldAorICAgICAgICBhIGZlbmNlIHJhbmdlIHRvIHR1cm4gdGhp
cyBpbnRvIGEgbG9hZCBhY3F1aXJlLjwvZGQ+CiAKICAgICAgIDxkdD5JbnQzMiBMb2FkOFMoSW50
UHRyLCBvZmZzZXQpPC9kdD4KICAgICAgIDxkZD5Mb2FkcyBhIGJ5dGUgZnJvbSB0aGUgYWRkcmVz
cywgd2hpY2ggaXMgY29tcHV0ZWQgYnkgYWRkaW5nIHRoZSBjb21waWxlLXRpbWUgMzItYml0CiAg
ICAgICAgIHNpZ25lZCBpbnRlZ2VyIG9mZnNldCB0byB0aGUgY2hpbGQgdmFsdWUuICBTaWduIGV4
dGVuZHMgdGhlIGxvYWRlZCBieXRlLiAgTXVzdCB1c2UgdGhlCi0gICAgICAgIE1lbW9yeVZhbHVl
IGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0LjwvZGQ+CisgICAgICAgIE1lbW9y
eVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0LiBNYXkgc2V0CisgICAg
ICAgIGEgZmVuY2UgcmFuZ2UgdG8gdHVybiB0aGlzIGludG8gYSBsb2FkIGFjcXVpcmUuPC9kZD4K
IAogICAgICAgPGR0PkludDMyIExvYWQxNlooSW50UHRyLCBvZmZzZXQpPC9kdD4KICAgICAgIDxk
ZD5Mb2FkcyBhIDE2LWJpdCBpbnRlZ2VyIGZyb20gdGhlIGFkZHJlc3MsIHdoaWNoIGlzIGNvbXB1
dGVkIGJ5IGFkZGluZyB0aGUgY29tcGlsZS10aW1lCiAgICAgICAgIDMyLWJpdCBzaWduZWQgaW50
ZWdlciBvZmZzZXQgdG8gdGhlIGNoaWxkIHZhbHVlLiAgWmVybyBleHRlbmRzIHRoZSBsb2FkZWQg
MTYtYml0CiAgICAgICAgIGludGVnZXIsIHNvIHRoZSBoaWdoIDE2IGJpdHMgYXJlIGFsbCB6ZXJv
LiAgTWlzYWxpZ25lZCBsb2FkcyBhcmUgbm90IHBlbmFsaXplZC4gIE11c3QKLSAgICAgICAgdXNl
IHRoZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBUcmFwcyBmbGFnIHNldC48L2Rk
PgorICAgICAgICB1c2UgdGhlIE1lbW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBz
IGZsYWcgc2V0LiBNYXkgc2V0CisgICAgICAgIGEgZmVuY2UgcmFuZ2UgdG8gdHVybiB0aGlzIGlu
dG8gYSBsb2FkIGFjcXVpcmUuPC9kZD4KIAogICAgICAgPGR0PkludDMyIExvYWQxNlMoSW50UHRy
LCBvZmZzZXQpPC9kdD4KICAgICAgIDxkZD5Mb2FkcyBhIDE2LWJpdCBpbnRlZ2VyIGZyb20gdGhl
IGFkZHJlc3MsIHdoaWNoIGlzIGNvbXB1dGVkIGJ5IGFkZGluZyB0aGUgY29tcGlsZS10aW1lCiAg
ICAgICAgIDMyLWJpdCBzaWduZWQgaW50ZWdlciBvZmZzZXQgdG8gdGhlIGNoaWxkIHZhbHVlLiAg
U2lnbiBleHRlbmRzIHRoZSBsb2FkZWQgMTYtYml0CiAgICAgICAgIGludGVnZXIuICBNaXNhbGln
bmVkIGxvYWRzIGFyZSBub3QgcGVuYWxpemVkLiAgTXVzdCB1c2UgdGhlIE1lbW9yeVZhbHVlIGNs
YXNzLiAgTWF5IGhhdmUgdGhlCi0gICAgICAgIFRyYXBzIGZsYWcgc2V0LjwvZGQ+CisgICAgICAg
IFRyYXBzIGZsYWcgc2V0LiBNYXkgc2V0IGEgZmVuY2UgcmFuZ2UgdG8gdHVybiB0aGlzIGludG8g
YSBsb2FkIGFjcXVpcmUuPC9kZD4KIAogICAgICAgPGR0PlQgTG9hZChJbnRQdHIsIG9mZnNldCk8
L2R0PgogICAgICAgPGRkPlZhbGlkIGZvciBhbnkgdHlwZSBleGNlcHQgVm9pZC4gIExvYWRzIGEg
dmFsdWUgb2YgdGhhdCB0eXBlIGZyb20gdGhlIGFkZHJlc3MsIHdoaWNoIGlzCiAgICAgICAgIGNv
bXB1dGVkIGJ5IGFkZGluZyB0aGUgY29tcGlsZS10aW1lIDMyLWJpdCBzaWduZWQgaW50ZWdlciBv
ZmZzZXQgdG8gdGhlIGNoaWxkIHZhbHVlLgogICAgICAgICBNaXNhbGlnbmVkIGxvYWRzIGFyZSBu
b3QgcGVuYWxpemVkLiAgTXVzdCB1c2UgdGhlIE1lbW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUg
dGhlIFRyYXBzCi0gICAgICAgIGZsYWcgc2V0LjwvZGQ+CisgICAgICAgIGZsYWcgc2V0LiBNYXkg
c2V0IGEgZmVuY2UgcmFuZ2UgdG8gdHVybiB0aGlzIGludG8gYSBsb2FkIGFjcXVpcmUuPC9kZD4K
IAogICAgICAgPGR0PlZvaWQgU3RvcmU4KEludDMyLCBJbnRQdHIsIG9mZnNldCk8L2R0PgogICAg
ICAgPGRkPlN0b3JlcyBhIHRoZSBsb3cgYnl0ZSBvZiB0aGUgZmlyc3QgY2hpbGQgaW50byB0aGUg
YWRkcmVzcyBjb21wdXRlZCBieSBhZGRpbmcgdGhlCiAgICAgICAgIGNvbXBpbGUtdGltZSAzMi1i
aXQgc2lnbmVkIGludGVnZXIgb2Zmc2V0IHRvIHRoZSBzZWNvbmQgY2hpbGQuICBNdXN0IHVzZSB0
aGUgTWVtb3J5VmFsdWUKLSAgICAgICAgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxhZyBz
ZXQuPC9kZD4KKyAgICAgICAgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxhZyBzZXQuIE1h
eSBzZXQgYSBmZW5jZSByYW5nZSB0byB0dXJuIHRoaXMgaW50byBhIHN0b3JlIHJlbGVhc2UuPC9k
ZD4KIAogICAgICAgPGR0PlZvaWQgU3RvcmUxNihJbnQzMiwgSW50UHRyLCBvZmZzZXQpPC9kdD4K
ICAgICAgIDxkZD5TdG9yZXMgYSB0aGUgbG93IDE2IGJpdHMgb2YgdGhlIGZpcnN0IGNoaWxkIGlu
dG8gdGhlIGFkZHJlc3MgY29tcHV0ZWQgYnkgYWRkaW5nIHRoZQogICAgICAgICBjb21waWxlLXRp
bWUgMzItYml0IHNpZ25lZCBpbnRlZ2VyIG9mZnNldCB0byB0aGUgc2Vjb25kIGNoaWxkLiAgTWlz
YWxpZ25lZCBzdG9yZXMgYXJlCi0gICAgICAgIG5vdCBwZW5hbGl6ZWQuICBNdXN0IHVzZSB0aGUg
TWVtb3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxhZyBzZXQuPC9kZD4KKyAg
ICAgICAgbm90IHBlbmFsaXplZC4gIE11c3QgdXNlIHRoZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1h
eSBoYXZlIHRoZSBUcmFwcyBmbGFnIHNldC4gTWF5IHNldCBhCisgICAgICAgIGZlbmNlIHJhbmdl
IHRvIHR1cm4gdGhpcyBpbnRvIGEgc3RvcmUgcmVsZWFzZS48L2RkPgogCiAgICAgICA8ZHQ+Vm9p
ZCBTdG9yZShULCBJbnRQdHIsIG9mZnNldCk8L2R0PgogICAgICAgPGRkPlN0b3JlcyB0aGUgdmFs
dWUgaW4gdGhlIGZpcnN0IGNoaWxkIGludG8gdGhlIGFkZHJlc3MgY29tcHV0ZWQgYnkgYWRkaW5n
IHRoZQogICAgICAgICBjb21waWxlLXRpbWUgMzItYml0IHNpZ25lZCBpbnRlZ2VyIG9mZnNldCB0
byB0aGUgc2Vjb25kIGNoaWxkLiAgTWlzYWxpZ25lZCBzdG9yZXMgYXJlCi0gICAgICAgIG5vdCBw
ZW5hbGl6ZWQuICBNdXN0IHVzZSB0aGUgTWVtb3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUg
VHJhcHMgZmxhZyBzZXQuPC9kZD4KKyAgICAgICAgbm90IHBlbmFsaXplZC4gIE11c3QgdXNlIHRo
ZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBUcmFwcyBmbGFnIHNldC4gTWF5IHNl
dCBhCisgICAgICAgIGZlbmNlIHJhbmdlIHRvIHR1cm4gdGhpcyBpbnRvIGEgc3RvcmUgcmVsZWFz
ZS48L2RkPgorICAgICAgCisgICAgICA8ZHQ+SW50MzIgQXRvbWljV2Vha0NBUyhUIGV4cGVjdGVk
VmFsdWUsIFQgbmV3VmFsdWUsIEludFB0ciBwdHIpPC9kdD4KKyAgICAgIDxkZD5QZXJmb3JtcyBh
IHdlYWsgPGEgaHJlZj0iaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyZS1hbmQt
c3dhcCI+Q0FTCisgICAgICAgICAgKGNvbXBhcmUtYW5kLXN3YXApPC9hPi4gUmV0dXJucyBhIGJv
b2xlYW4gKDAgb3IgMSkgdG8gaW5kaWNhdGUgdGhlIHJlc3VsdCAoZmFpbHVyZSBvcgorICAgICAg
ICBzdWNjZXNzLCByZXNwZWN0aXZlbHkpLiBNYXkgc3B1cmlvdXNseSBmYWlsLCBpbiB3aGljaCBj
YXNlIGl0IHdpbGwgZG8gbm90aGluZyBhbmQgcmV0dXJuCisgICAgICAgIDAuIFlvdSBjYW4gc3Vw
cGx5IGEgZmVuY2UgcmFuZ2UgdG8gaW5kaWNhdGUgdGhhdCB0aGUgQ0FTIGlzIGZlbmNlZC4gRmVu
Y2VkIENBUyBoYXMgYm90aAorICAgICAgICBhY3F1aXJlIGFuZCByZWxlYXNlIGZlbmNlcywgYW5k
IGNsYWltcyB0byBib3RoIHJlYWQgYW5kIHdyaXRlIHRoZSBmdWxsIGZlbmNlIHJhbmdlIGluCisg
ICAgICAgIGFkZGl0aW9uIHRvIHdoYXRldmVyIHByaW1hcnkgcmFuZ2UgaXMgc3VwcGxpZWQgZm9y
IHRoZSBDQVMgaXRzZWxmLiBBdG9taWNXZWFrQ0FTIG9ubHkKKyAgICAgICAgaGFzIGZlbmNpbmcg
YmVoYXZpb3IgaW4gdGhlIGNhc2UgdGhhdCBpdCBzdWNjZWVkcy4gQXRvbWljIG9wZXJhdGlvbnMg
dGFrZSBhIHdpZHRoIHBhcmFtZXRlciwKKyAgICAgICAgYWxsb3dpbmcgdGhlbSB0byBvcGVyYXRl
IG92ZXIgOC1iaXQsIDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQgaW50ZWdlciBtZW1vcnkgbG9j
YXRpb25zLjwvZGQ+CisKKyAgICAgIDxkdD5UIEF0b21pY1N0cm9uZ0NBUyhUIGV4cGVjdGVkVmFs
dWUsIFQgbmV3VmFsdWUsIEludFB0ciBwdHIpPC9kdD4KKyAgICAgIDxkZD5QZXJmb3JtcyBhIHN0
cm9uZyA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wYXJlLWFuZC1z
d2FwIj5DQVMKKyAgICAgICAgICAoY29tcGFyZS1hbmQtc3dhcCk8L2E+LiBSZXR1cm5zIHRoZSBv
bGQgdmFsdWUgYmVmb3JlIHRoZSBDQVMuIFRoZSBpbnN0cnVjdGlvbiBzZWxlY3RvcgorICAgICAg
ICBpcyBzbWFydCBhYm91dCBFcXVhbChBdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWQsIC4uLiksIGV4
cGVjdGVkKSBwYXR0ZXJucywgc28gdGhpcyBvcGNvZGUKKyAgICAgICAgaXMgYWxzbyB0aGUgYmVz
dCB3YXkgdG8gZG8gYSBzdHJvbmcgQ0FTIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4gLSBqdXN0IHVz
ZSBFcXVhbCB0byBjb21wYXJlCisgICAgICAgIHRoZSByZXN1bHQgdG8gZXhwZWN0ZWQuIFlvdSBj
YW4gc3VwcGx5IGEgZmVuY2UgcmFuZ2UgdG8gaW5kaWNhdGUgdGhhdCB0aGUgQ0FTIGlzIGZlbmNl
ZC4KKyAgICAgICAgRmVuY2VkIENBUyBoYXMgYm90aCBhY3F1aXJlIGFuZCByZWxlYXNlIGZlbmNl
cywgYW5kIGNsYWltcyB0byBib3RoIHJlYWQgYW5kIHdyaXRlIHRoZSBmdWxsCisgICAgICAgIGZl
bmNlIHJhbmdlIGluIGFkZGl0aW9uIHRvIHdoYXRldmVyIHByaW1hcnkgcmFuZ2UgaXMgc3VwcGxp
ZWQgZm9yIHRoZSBDQVMgaXRzZWxmLgorICAgICAgICBBdG9taWNTdHJvbmdDQVMgaGFzIHRoZSBz
YW1lIGZlbmNpbmcgb24gZmFpbHVyZSBhbmQgc3VjY2Vzcy4gQXRvbWljIG9wZXJhdGlvbnMgdGFr
ZSBhIHdpZHRoCisgICAgICAgIHBhcmFtZXRlciwgYWxsb3dpbmcgdGhlbSB0byBvcGVyYXRlIG92
ZXIgOC1iaXQsIDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQgaW50ZWdlciBtZW1vcnkKKyAgICAg
ICAgbG9jYXRpb25zLiBSZXR1cm5zIGEgc2lnbi1leHRlbmRlZCByZXN1bHQgZm9yIDgtYml0IG9y
IDE2LWJpdCB3aWR0aHMuPC9kZD4KKyAgICAgIAorICAgICAgPGR0PlQgQXRvbWljWGNoZ0FkZChU
LCBJbnRQdHIpPC9kdD4KKyAgICAgIDxkZD5BdG9taWNhbGx5IGFkZHMgYSB2YWx1ZSB0byB0aGUg
bWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5zIHRoZSBvbGQgdmFsdWUuIElzIGFsbG93ZWQgdG8K
KyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdlLCB3aGljaCBjYXVzZXMgaXQgdG8gaGF2ZSBhY3F1
aXJlL3JlbGVhc2UgZmVuY2luZy4gQXRvbWljIG9wZXJhdGlvbnMgdGFrZQorICAgICAgICBhIHdp
ZHRoIHBhcmFtZXRlciwgYWxsb3dpbmcgdGhlbSB0byBvcGVyYXRlIG92ZXIgOC1iaXQsIDE2LWJp
dCwgMzItYml0LCBvciA2NC1iaXQgaW50ZWdlciBtZW1vcnkKKyAgICAgICAgbG9jYXRpb25zLiBS
ZXR1cm5zIGEgc2lnbi1leHRlbmRlZCByZXN1bHQgZm9yIDgtYml0IG9yIDE2LWJpdCB3aWR0aHMu
PC9kZD4KKworICAgICAgPGR0PlQgQXRvbWljWGNoZ0FuZChULCBJbnRQdHIpPC9kdD4KKyAgICAg
IDxkZD5BdG9taWNhbGx5IGJpdHdpc2UtYW5kcyBhIHZhbHVlIHRvIHRoZSBtZW1vcnkgbG9jYXRp
b24gYW5kIHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gSXMgYWxsb3dlZCB0bworICAgICAgICBoYXZl
IGEgZmVuY2UgcmFuZ2UsIHdoaWNoIGNhdXNlcyBpdCB0byBoYXZlIGFjcXVpcmUvcmVsZWFzZSBm
ZW5jaW5nLiBBdG9taWMgb3BlcmF0aW9ucyB0YWtlCisgICAgICAgIGEgd2lkdGggcGFyYW1ldGVy
LCBhbGxvd2luZyB0aGVtIHRvIG9wZXJhdGUgb3ZlciA4LWJpdCwgMTYtYml0LCAzMi1iaXQsIG9y
IDY0LWJpdCBpbnRlZ2VyIG1lbW9yeQorICAgICAgICBsb2NhdGlvbnMuIFJldHVybnMgYSBzaWdu
LWV4dGVuZGVkIHJlc3VsdCBmb3IgOC1iaXQgb3IgMTYtYml0IHdpZHRocy48L2RkPgorCisgICAg
ICA8ZHQ+VCBBdG9taWNYY2hnT3IoVCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+QXRvbWljYWxs
eSBiaXR3aXNlLW9ycyBhIHZhbHVlIHRvIHRoZSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybnMg
dGhlIG9sZCB2YWx1ZS4gSXMgYWxsb3dlZCB0bworICAgICAgICBoYXZlIGEgZmVuY2UgcmFuZ2Us
IHdoaWNoIGNhdXNlcyBpdCB0byBoYXZlIGFjcXVpcmUvcmVsZWFzZSBmZW5jaW5nLiBBdG9taWMg
b3BlcmF0aW9ucyB0YWtlCisgICAgICAgIGEgd2lkdGggcGFyYW1ldGVyLCBhbGxvd2luZyB0aGVt
IHRvIG9wZXJhdGUgb3ZlciA4LWJpdCwgMTYtYml0LCAzMi1iaXQsIG9yIDY0LWJpdCBpbnRlZ2Vy
IG1lbW9yeQorICAgICAgICBsb2NhdGlvbnMuIFJldHVybnMgYSBzaWduLWV4dGVuZGVkIHJlc3Vs
dCBmb3IgOC1iaXQgb3IgMTYtYml0IHdpZHRocy48L2RkPgorCisgICAgICA8ZHQ+VCBBdG9taWNY
Y2hnU3ViKFQsIEludFB0cik8L2R0PgorICAgICAgPGRkPkF0b21pY2FsbHkgc3VidHJhY3RzIGEg
dmFsdWUgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBJ
cyBhbGxvd2VkIHRvCisgICAgICAgIGhhdmUgYSBmZW5jZSByYW5nZSwgd2hpY2ggY2F1c2VzIGl0
IHRvIGhhdmUgYWNxdWlyZS9yZWxlYXNlIGZlbmNpbmcuIEF0b21pYyBvcGVyYXRpb25zIHRha2UK
KyAgICAgICAgYSB3aWR0aCBwYXJhbWV0ZXIsIGFsbG93aW5nIHRoZW0gdG8gb3BlcmF0ZSBvdmVy
IDgtYml0LCAxNi1iaXQsIDMyLWJpdCwgb3IgNjQtYml0IGludGVnZXIgbWVtb3J5CisgICAgICAg
IGxvY2F0aW9ucy4gUmV0dXJucyBhIHNpZ24tZXh0ZW5kZWQgcmVzdWx0IGZvciA4LWJpdCBvciAx
Ni1iaXQgd2lkdGhzLjwvZGQ+CisKKyAgICAgIDxkdD5UIEF0b21pY1hjaGdYb3IoVCwgSW50UHRy
KTwvZHQ+CisgICAgICA8ZGQ+QXRvbWljYWxseSBiaXR3aXNlLXhvcnMgYSB2YWx1ZSB0byB0aGUg
bWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5zIHRoZSBvbGQgdmFsdWUuIElzIGFsbG93ZWQgdG8K
KyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdlLCB3aGljaCBjYXVzZXMgaXQgdG8gaGF2ZSBhY3F1
aXJlL3JlbGVhc2UgZmVuY2luZy4gQXRvbWljIG9wZXJhdGlvbnMgdGFrZQorICAgICAgICBhIHdp
ZHRoIHBhcmFtZXRlciwgYWxsb3dpbmcgdGhlbSB0byBvcGVyYXRlIG92ZXIgOC1iaXQsIDE2LWJp
dCwgMzItYml0LCBvciA2NC1iaXQgaW50ZWdlciBtZW1vcnkKKyAgICAgICAgbG9jYXRpb25zLiBS
ZXR1cm5zIGEgc2lnbi1leHRlbmRlZCByZXN1bHQgZm9yIDgtYml0IG9yIDE2LWJpdCB3aWR0aHMu
PC9kZD4KKworICAgICAgPGR0PlQgQXRvbWljWGNoZyhULCBJbnRQdHIpPC9kdD4KKyAgICAgIDxk
ZD5BdG9taWNhbGx5IHN0b3JlcyBhIHZhbHVlIHRvIHRoZSBtZW1vcnkgbG9jYXRpb24gYW5kIHJl
dHVybnMgdGhlIG9sZCB2YWx1ZS4gSXMgYWxsb3dlZCB0bworICAgICAgICBoYXZlIGEgZmVuY2Ug
cmFuZ2UsIHdoaWNoIGNhdXNlcyBpdCB0byBoYXZlIGFjcXVpcmUvcmVsZWFzZSBmZW5jaW5nLiBB
dG9taWMgb3BlcmF0aW9ucyB0YWtlCisgICAgICAgIGEgd2lkdGggcGFyYW1ldGVyLCBhbGxvd2lu
ZyB0aGVtIHRvIG9wZXJhdGUgb3ZlciA4LWJpdCwgMTYtYml0LCAzMi1iaXQsIG9yIDY0LWJpdCBp
bnRlZ2VyIG1lbW9yeQorICAgICAgICBsb2NhdGlvbnMuIFJldHVybnMgYSBzaWduLWV4dGVuZGVk
IHJlc3VsdCBmb3IgOC1iaXQgb3IgMTYtYml0IHdpZHRocy48L2RkPgogCiAgICAgICA8ZHQ+SW50
UHRyIFdhc21BZGRyZXNzKEludFB0ciwgcGlubmVkR1BSKTwvZHQ+CiAgICAgICA8ZGQ+VGhpcyBp
cyB1c2VkIHRvIGNvbXB1dGUgdGhlIGFkZHJlc3Mgb2YgYSB3YXNtIG1lbW9yeSBsb2FkIGZyb20g
YSBwaW5uZWQgYmFzZSBHUFIuCiAgICAgICAgIE11c3QgdXNlIHRoZSBXYXNtQWRkcmVzc1ZhbHVl
IGNsYXNzLjwvZGQ+CiAKLQogICAgICAgPGR0PlZvaWQgRmVuY2UoKTwvZHQ+CiAgICAgICA8ZGQ+
QWJzdHJhY3RzIHN0YW5kYWxvbmUgZGF0YSBmZW5jZXMgb24geDg2IGFuZCBBUk0uIE11c3QgdXNl
IHRoZSBGZW5jZVZhbHVlIGNsYXNzLCB3aGljaCBoYXMKICAgICAgICAgdHdvIGFkZGl0aW9uYWwg
bWVtYmVycyB0aGF0IGNvbmZpZ3VyZSB0aGUgcHJlY2lzZSBtZWFuaW5nIG9mIHRoZSBmZW5jZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303435</attachid>
            <date>2017-03-04 19:52:42 -0800</date>
            <delta_ts>2017-03-04 20:28:50 -0800</delta_ts>
            <desc>more build fixes</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>388657</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyMiBA
QAorMjAxNy0wMy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzIHNob3VsZCBoYXZlIGNvbXByZWhlbnNpdmUgc3VwcG9ydCBmb3IgYXRvbWljIG9wZXJhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBhZGRzIHRoZSBmb2xsb3dpbmcgY2FwYWJpbGl0aWVzIHRvIEIzOgorICAgICAgICAK
KyAgICAgICAgLSBBdG9taWMgd2Vhay9zdHJvbmcgdW5mZW5jZWQvZmVuY2VkIGNvbXBhcmUtYW5k
LXN3YXAKKyAgICAgICAgLSBBdG9taWMgYWRkcy9zdWIvb3IvYW5kL3hvci94aGcKKyAgICAgICAg
LSBBY3F1aXJlL3JlbGVhc2UgZmVuY2luZyBvbiBsb2Fkcy9zdG9yZXMKKyAgICAgICAgLSBGZW5j
ZWxlc3MgbG9hZC1sb2FkIGRlcGVuZGVuY2llcworICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRz
IGxvd2VyaW5nIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIG9uIHg4NjoKKyAgICAgICAg
CisgICAgICAgIC0gbG9jayBjbXB4Y2hnCisgICAgICAgIC0gbG9jayB4YWRkCisgICAgICAgIC0g
bG9jayBhZGQvc3ViL29yL2FuZC94b3IveGNoZworICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRz
IGxvd2VyaW5nIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIG9uIEFSTTY0OgorICAgICAg
ICAKKyAgICAgICAgLSBsZGFyIGFuZCBmcmllbmRzCisgICAgICAgIC0gc3RsciBhbmQgZnJpZW5k
cworICAgICAgICAtIGxkeHIgYW5kIGZyaWVuZHMgKHVuZmVuY2VkIExMKQorICAgICAgICAtIHN0
eHIgYW5kIGZyaWVuZHMgKHVuZmVuZGVkIFNDKQorICAgICAgICAtIGxkYXhyIGFuZCBmcmllbmRz
IChmZW5jZWQgTEwpCisgICAgICAgIC0gc3RseHIgYW5kIGZyaWVuZHMgKGZlbmNlZCBTQykKKyAg
ICAgICAgLSBlb3IgYXMgYSBmZW5jZWxlc3MgbG9hZC1sb2FkIGRlcGVuZGVuY3kKKyAgICAgICAg
CisgICAgICAgIFRoaXMgZG9lcyBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gcGF0dGVybiBtYXRjaGlu
ZyB0byBlbnN1cmUgdGhhdCB3ZWFrL3N0cm9uZyBDQVMgYW5kIGFsbCBvZiB0aGUKKyAgICAgICAg
dmFyaWFudHMgb2YgZmVuY2VzIGFuZCBhdG9taWMgbWF0aCBvcHMgZ2V0IGxvd2VyZWQgdG8gdGhl
IGJlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UuCisgICAgICAgIEZvciBleGFtcGxl
LCB3ZSBzdXBwb3J0IHRoZSBFcXVhbChBdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWQsIC4uLiksIGV4
cGVjdGVkKSBwYXR0ZXJuIGFuZCBhIGJ1bmNoCisgICAgICAgIG9mIGl0cyBmcmllbmRzLiBZb3Ug
Y2FuIHNheSBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkLCAuLi4pLCBleHBl
Y3RlZCkpIGFuZCBpdCB3aWxsCisgICAgICAgIGdlbmVyYXRlIHRoZSBiZXN0IHBvc3NpYmxlIGJy
YW5jaCBzZXF1ZW5jZSBvbiB4ODYgYW5kIEFSTTY0LgorICAgICAgICAKKyAgICAgICAgQjMgbm93
IGtub3dzIGhvdyB0byBtb2RlbCBhbGwgb2YgdGhlIGtpbmRzIG9mIGZlbmNpbmcuIEl0IGtub3dz
IHRoYXQgYWNxIGxvYWRzIGFyZSBvcmRlcmVkIHdpdGgKKyAgICAgICAgcmVzcGVjdCB0byBlYWNo
IG90aGVyIGFuZCB3aXRoIHJlc3BlY3QgdG8gcmVsIHN0b3JlcywgY3JlYXRpbmcgc2VxdWVudGlh
bCBjb25zaXN0ZW5jeSB0aGF0CisgICAgICAgIHRyYW5zY2VuZHMganVzdCB0aGUgYWNxL3JlbCBm
ZW5jZXMgdGhlbXNlbHZlcyAoc2VlIEVmZmVjdHM6OmZlbmNlKS4gSXQga25vd3MgdGhhdCB0aGUg
cGhhbnRvbQorICAgICAgICBmZW5jZSBlZmZlY3RzIG1heSBvbmx5IHRhcmdldCBzb21lIGFic3Ry
YWN0IGhlYXBzIGJ1dCBub3Qgb3RoZXJzLCBzbyB0aGF0IGxvYWQgZWxpbWluYXRpb24gYW5kCisg
ICAgICAgIHN0b3JlIHNpbmtpbmcgY2FuIHN0aWxsIG9wZXJhdGUgYWNyb3NzIGZlbmNlcyBpZiB5
b3UganVzdCB0ZWxsIEIzIHRoYXQgdGhlIGZlbmNlIGRvZXMgbm90IGFsaWFzCisgICAgICAgIHRo
b3NlIGFjY2Vzc2VzLiBUaGlzIG1ha2VzIGl0IHN1cGVyIGVhc3kgdG8gdGVhY2ggQjMgdGhhdCBz
b21lIG9mIHlvdXIgaGVhcCBpcyB0aHJlYWQtbG9jYWwuCisgICAgICAgIEV2ZW4gYmV0dGVyLCBp
dCBsZXRzIHlvdSBleHByZXNzIGZpbmUtZ3JhaW5lZCBkZXBlbmRlbmNpZXMgd2hlcmUgdGhlIGF0
b21pY3MgdGhhdCBhZmZlY3Qgb25lCisgICAgICAgIHByb3BlcnR5IGluIHNoYXJlZCBtZW1vcnkg
ZG8gbm90IGNsb2JiZXIgbm9uLWF0b21pY3MgdGhhdCBmZmVjdCBzb21lIG90aGVyIHByb3BlcnR5
IGluIHNoYXJlZAorICAgICAgICBtZW1vcnkuCisgICAgICAgIAorICAgICAgICBPbmUgb2YgbXkg
ZmF2b3JpdGUgZmVhdHVyZXMgaXMgRGVwZW5kLCB3aGljaCBhbGxvd3MgeW91IHRvIGV4cHJlc3Mg
bG9hZC1sb2FkIGRlcGVuZGVuY2llcy4gT24KKyAgICAgICAgeDg2IGl0IGxvd2VycyB0byBub3Ro
aW5nLCB3aGlsZSBvbiBBUk02NCBpdCBsb3dlcnMgdG8gZW9yLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBhbHNvIGV4cG9zZXMgYSBjb21tb24gYXRvbWljV2Vha0NBUyBBUEkgdG8gdGhlIHg4Nl82
NC9BUk02NCBNYWNyb0Fzc2VtYmxlcnMuIFNhbWUgZm9yCisgICAgICAgIGFjcS9yZWwuIEpTQydz
IDY0LWJpdCBKSVRzIGFyZSBub3cgYSBoYXBweSBjb25jdXJyZW5jeSBwbGF5Z3JvdW5kLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBkb2Vzbid0IHlldCBleHBvc2UgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gSlMgb3Igd2FzbS4gU0FCIHN0aWxsIHVzZXMgdGhlIG5vbi1pbnRyaW5zaWMKKyAgICAgICAg
aW1wbGVtZW50YXRpb25zIG9mIHRoZSBBdG9taWNzIG9iamVjdCwgZm9yIG5vdy4KKyAgICAgICAg
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmxkYXIpOgorICAgICAgICAoSlND
OjpBUk02NEFzc2VtYmxlcjo6bGR4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjps
ZGF4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdHhyKToKKyAgICAgICAgKEpT
Qzo6QVJNNjRBc3NlbWJsZXI6OnN0bHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6
c3RseHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZXhjZXBuR2VuZXJhdGlvbklt
bU1hc2spOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZXhvdGljTG9hZCk6CisgICAg
ICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdG9yZVJlbGVhc2UpOgorICAgICAgICAoSlNDOjpB
Uk02NEFzc2VtYmxlcjo6ZXhvdGljU3RvcmUpOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRBY3E4
U2lnbmVkRXh0ZW5kVG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omxv
YWRBY3E4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVSZWw4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZEFjcTE2U2lnbmVkRXh0ZW5k
VG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRBY3ExNik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlUmVsMTYpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZVJlbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
c3RvcmVSZWw2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5r
OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxOCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZDgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmRSZWw4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbmsxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZUNvbmQxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlQ29uZFJlbDE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZExpbmszMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNx
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbms2NCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YXRvbWljU3Ryb25nQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmF0b21pY1N0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YXRvbWljU3Ryb25nQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphdG9taWNTdHJvbmdDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmF0b21pY1JlbGF4ZWRTdHJvbmdDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoQXRvbWljV2Vha0NBUzgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTNjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNSZWxheGVkV2Vh
a0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNS
ZWxheGVkV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJh
bmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpkZXBlbmQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmRlcGVuZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZExpbmspOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkTGlua0FjcSk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZFJlbCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNpZ25FeHRlbmQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpicmFuY2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphdG9taWNTdHJvbmdDQVMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojph
dG9taWNSZWxheGVkU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoQXRvbWljV2Vha0NBUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6ZXh0cmFjdFNpbXBsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDg+KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6c2lnbkV4dGVuZDwxNj4pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0OjpicmFuY2g8NjQ+KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFkZDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bmVnMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bmVnOCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMTYpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6b3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN1YjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnN1YjgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMTYpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpub3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
Ojpub3QxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpub3Q4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Ryb25nQ0FTOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdHJvbmdDQVMxNik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdHJvbmdDQVMzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBdG9taWNTdHJv
bmdDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0
b21pY1N0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmF0b21pY1dlYWtDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmF0b21pY1dlYWtDQVMxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjphdG9taWNXZWFrQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YnJhbmNoQXRvbWljV2Vha0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoQXRvbWljV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1dlYWtDQVMzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNSZWxheGVkV2Vha0NBUzgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljUmVsYXhlZFdlYWtD
QVMxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNSZWxh
eGVkV2Vha0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJy
YW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljQWRkOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBZGQxNik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBZGQzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdWI4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N1YjE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmF0b21pY0FuZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6YXRvbWljQW5kMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YXRvbWljQW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6YXRvbWljT3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OmF0b21pY09yMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YXRvbWljT3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9t
aWNYb3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hv
cjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hvcjMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY05lZzgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTmVnMTYpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTmVnMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTm90OCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNOb3QxNik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNOb3QzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnQWRkOCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnQWRkMTYpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljWGNoZ0FkZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGc4KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGcxNik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6bG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3ExNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3EzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZVJlbDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6c3RvcmVSZWwxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzdG9yZVJlbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN0b3JlRmVuY2UpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6bG9hZEZlbmNlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnBhdGNoYWJsZUp1bXBTaXplKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OnN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1cHBvcnRzQVZYKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnVwZGF0ZUVheDFFY3hGbGFncyk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp4ODZDb25kaXRpb24pOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1N0cm9uZ0NBUyk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjphZGQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0OjphbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpuZWc2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpvcjY0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN1YjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZfNjQ6OnhvcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om5vdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0b3JlNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljU3Ryb25nQ0FTNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoQXRvbWljU3Ryb25n
Q0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljV2Vha0NB
UzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaEF0b21pY1dl
YWtDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNSZWxh
eGVkV2Vha0NBUzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5j
aEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6YXRvbWljQWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YXRvbWljU3ViNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWlj
QW5kNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljT3I2NCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNYb3I2NCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNOZWc2NCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNOb3Q2NCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNYY2hnQWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljWGNoZzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OmxvYWRBY3E2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpzdG9yZVJlbDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6YWRkcV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkcV9ybSk6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkcV9pbSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6YW5kbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kbF9y
bSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kd19ybSk6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6YW5kYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5k
bF9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kd19pbSk6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6YW5kYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
YW5kcV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcV9ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcV9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6aW5jcV9tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdxX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5lZ2xfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bmVnd19tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdiX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdGxfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bm90d19tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpub3RiX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdHFfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JsX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfcm0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yd19ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfaW0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yd19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JiX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcnFfbXIpOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9ycV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX21yKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpzdWJ3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJiX3JtKToKKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjpzdWJ3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJiX2ltKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJxX21yKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpzdWJxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJxX2lt
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JsX21yKToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjp4b3JsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3Js
X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3J3X3JtKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjp4b3J3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4
b3JiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JiX2ltKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp4b3JxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX21yKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4Y2hnYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6eGNoZ3dfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnhjaGdsX3JtKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4Y2hncV9ybSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6bW92d19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92cV9p
MzJtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hnYl9ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6Y21weGNoZ3dfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6OmNtcHhjaGdsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hn
cV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZGJfcm0pOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OnhhZGR3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp4YWRkbF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZHFfcm0pOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGIzL0IzQXRv
bWljVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjp+QXRv
bWljVmFsdWUpOgorICAgICAgICAoSlNDOjpCMzo6QXRvbWljVmFsdWU6OmR1bXBNZXRhKToKKyAg
ICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjpjbG9uZUltcGwpOgorICAgICAgICAoSlNDOjpC
Mzo6QXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKToKKyAgICAgICAgKiBiMy9CM0F0b21pY1ZhbHVl
Lmg6IEFkZGVkLgorICAgICAgICAqIGIzL0IzQmFzaWNCbG9jay5oOgorICAgICAgICAqIGIzL0Iz
QmxvY2tJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJbnNlcnRpb25T
ZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6QjM6OkJsb2NrSW5zZXJ0aW9u
U2V0OjppbnNlcnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJbnNlcnRpb25T
ZXQ6Omluc2VydEJlZm9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpCbG9ja0luc2Vy
dGlvblNldDo6aW5zZXJ0QWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJ
bnNlcnRpb25TZXQ6OmV4ZWN1dGUpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzQmxvY2tJbnNl
cnRpb25TZXQuaDoKKyAgICAgICAgKiBiMy9CM0VmZmVjdHMuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6RWZmZWN0czo6aW50ZXJmZXJlcyk6CisgICAgICAgIChKU0M6OkIzOjpFZmZlY3RzOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKEpTQzo6QjM6OkVmZmVjdHM6OmR1bXApOgorICAgICAgICAqIGIz
L0IzRWZmZWN0cy5oOgorICAgICAgICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2FsbCk6CisgICAg
ICAgIChKU0M6OkIzOjpFZmZlY3RzOjptdXN0RXhlY3V0ZSk6CisgICAgICAgICogYjMvQjNFbGlt
aW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNHZW5lcmF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpnZW5lcmF0ZVRvQWlyKToKKyAgICAgICAgKiBiMy9CM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkdlbmVy
aWNCbG9ja0luc2VydGlvblNldDo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAg
KEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAg
KEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIpOgorICAgICAg
ICAoSlNDOjpCMzo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAg
KiBiMy9CM0hlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpCMzo6SGVhcFJhbmdlOjpvcGVyYXRv
cnwpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
Okluc2VydGlvblNldDo6aW5zZXJ0Q2xvbmUpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0
Lmg6CisgICAgICAgICogYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwOgorICAgICAgICAq
IGIzL0IzTG93ZXJNYWNyb3MuY3BwOgorICAgICAgICAoSlNDOjpCMzo6bG93ZXJNYWNyb3MpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAg
ICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6Okxvd2VyVG9BaXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpydW4p
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YWRkcik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlQW55T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9wKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6c3RvcmVPcGNvZGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpjcmVhdGVTdG9yZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6Om5ld0Jsb2NrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
c3BsaXRCbG9jayk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFj
a21hcCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NkRpdik6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NlVEaXYpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojpsb3dlclg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6Omxvd2VyWDg2VURpdik6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmg6
CisgICAgICAgICogYjMvQjNNZW1vcnlWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpNZW1v
cnlWYWx1ZTo6aXNMZWdhbE9mZnNldCk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6
YWNjZXNzVHlwZSk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuayk6
CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUpOgorICAgICAg
ICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6OmR1bXBNZXRhKToKKyAgICAgICAgKEpTQzo6QjM6Ok1l
bW9yeVZhbHVlOjpNZW1vcnlWYWx1ZSk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6
YWNjZXNzV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTWVtb3J5VmFsdWUuaDoKKyAg
ICAgICAgKiBiMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
QjM6Ok1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6QjM6Ok1lbW9y
eVZhbHVlOjpyZXF1aXJlc1NpbXBsZUFkZHIpOgorICAgICAgICAoSlNDOjpCMzo6TWVtb3J5VmFs
dWU6OmFjY2Vzc1dpZHRoKToKKyAgICAgICAgKiBiMy9CM01vdmVDb25zdGFudHMuY3BwOgorICAg
ICAgICAqIGIzL0IzTmF0aXZlVHJhaXRzLmg6IEFkZGVkLgorICAgICAgICAqIGIzL0IzT3Bjb2Rl
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnN0b3JlT3Bjb2RlKToKKyAgICAgICAgKFdURjo6cHJp
bnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAgKEpTQzo6QjM6
OmlzTG9hZCk6CisgICAgICAgIChKU0M6OkIzOjppc1N0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6
OmlzTG9hZFN0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6OmlzQXRvbWljKToKKyAgICAgICAgKEpT
Qzo6QjM6OmlzQXRvbWljQ0FTKToKKyAgICAgICAgKEpTQzo6QjM6OmlzQXRvbWljWGNoZyk6Cisg
ICAgICAgIChKU0M6OkIzOjppc01lbW9yeUFjY2Vzcyk6CisgICAgICAgIChKU0M6OkIzOjpzaWdu
RXh0ZW5kT3Bjb2RlKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpQcm9jZWR1cmU6OmR1bXApOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6Cisg
ICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Omhhc1F1aXJrcyk6CisgICAgICAgIChKU0M6OkIz
OjpQcm9jZWR1cmU6OnNldEhhc1F1aXJrcyk6CisgICAgICAgICogYjMvQjNQdXJlQ1NFLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OnB1cmVDU0UpOgorICAgICAgICAqIGIzL0IzUHVyZUNTRS5oOgor
ICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsaWRh
dGUuY3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFs
dWU6OnJldHVybnNCb29sKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnBl
cmZvcm1TdWJzdGl0dXRpb24pOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnR5cGVGb3IpOgor
ICAgICAgICAqIGIzL0IzVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM1dpZHRoLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OmJlc3RUeXBlKToKKyAgICAgICAgKiBiMy9CM1dpZHRoLmg6CisgICAgICAg
IChKU0M6OkIzOjpjYW5vbmljYWxXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjppc0Nhbm9uaWNh
bFdpZHRoKToKKyAgICAgICAgKEpTQzo6QjM6Om1hc2spOgorICAgICAgICAqIGIzL2Fpci9BaXJB
cmcuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmpzSGFzaCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6OkFyZzo6ZHVtcCk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpp
c0FueVVzZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNDb2xkVXNlKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpjb29sZWQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzRWFybHlVc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzTGF0ZVVzZSk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNBbnlEZWYpOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpBcmc6OmlzRWFybHlEZWYpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6Omlz
TGF0ZURlZik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNaRGVmKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjpzaW1wbGVBZGRyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjpzdGF0dXNDb25kKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1NpbXBsZUFk
ZHIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzTWVtb3J5KToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc1N0YXR1c0NvbmQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpwdHIpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmJhc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzR1ApOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRlApOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpBcmc6OmlzVmFsaWRGb3JtKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjpmb3JFYWNoVG1wRmFzdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6Zm9yRWFj
aFRtcCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6YXNBZGRyZXNzKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjphc1N0YXR1c0NvbmRpdGlvbik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OkFyZzo6aXNJbnZlcnRpYmxlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpp
bnZlcnRlZCk6CisgICAgICAgICogYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKToKKyAgICAgICAgKiBiMy9h
aXIvQWlyQmFzaWNCbG9jay5oOgorICAgICAgICAqIGIzL2Fpci9BaXJCbG9ja0luc2VydGlvblNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCbG9ja0luc2VydGlvblNldDo6
QmxvY2tJbnNlcnRpb25TZXQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCbG9ja0luc2VydGlv
blNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKiBiMy9haXIvQWlyQmxvY2tJbnNl
cnRpb25TZXQuaDogQWRkZWQuCisgICAgICAgICogYjMvYWlyL0FpckR1bXBBc0pTLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBiMy9haXIvQWlyRHVtcEFzSlMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBiMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjplbGltaW5hdGVEZWFkQ29kZSk6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24pOgorICAgICAgICAq
IGIzL2Fpci9BaXJJbnN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjppc0F0b21p
Y1N0cm9uZ0NBU1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNT
dHJvbmdDQVNWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmlzQXRvbWljU3Ryb25nQ0FT
OFZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVMxNlZhbGlk
KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVMzMlZhbGlkKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVM2NFZhbGlkKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNTdHJvbmdDQVM4VmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzE2VmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzY0VmFsaWQpOgorICAgICAgICAq
IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy9haXIvQWlyT3B0aW1pemVC
bG9ja09yZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6b3B0aW1pemVCbG9ja09yZGVy
KToKKyAgICAgICAgKiBiMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6cGFkSW50ZXJmZXJlbmNlKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6c3BpbGxFdmVyeXRoaW5nKToK
KyAgICAgICAgKiBiMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYjoKKyAgICAgICAgKiBiMy90ZXN0
YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRBY3E0Mik6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0
b3JlUmVsQWRkTG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkRmVu
Y2VMb2FkQWNxOCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdFg4NkxlYUFkZEFkZCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0WDg2TGVhQWRkU2hs
TGVmdFNjYWxlMSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljV2Vha0NBUyk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RBdG9taWNYY2hnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3REZXBlbmQzMik6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0RGVwZW5kNjQpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAg
ICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHA6CisgICAgICAgIChKU0M6OkFS
TTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlOjpmb3JtYXQpOgor
ICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmg6CisgICAgICAgIChKU0M6
OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlOjpvcE5hbWUp
OgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9yZUV4
Y2x1c2l2ZTo6cnMpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29k
ZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6cnQyKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJs
ZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6Om8wKToKKyAgICAgICAgKEpTQzo6QVJN
NjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6Om8xKToKKyAgICAg
ICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6
Om8yKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3Rv
cmVFeGNsdXNpdmU6OmxvYWRCaXQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6
QTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6b3BOdW1iZXIpOgorICAgICAgICAoSlNDOjpB
Uk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6aXNQYWlyT3Ap
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE3LTAzLTA0ICBDc2FiYSBPc3p0
cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0FSTV0gVW5yZXZpZXdlZCBi
dWlsZGZpeCBhZnRlciByMjEzMzc2LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAogCiAgICAgYXNzZW1ibGVyL0FS
TUFzc2VtYmxlci5jcHAKKyAgICBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAK
ICAgICBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuY3BwCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcApAQCAtNzYsMTIgKzc3
LDEyIEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYjMvYWlyL0FpckFsbG9jYXRl
U3RhY2suY3BwCiAgICAgYjMvYWlyL0FpckFyZy5jcHAKICAgICBiMy9haXIvQWlyQmFzaWNCbG9j
ay5jcHAKKyAgICBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCiAgICAgYjMvYWlyL0Fp
ckNDYWxsU3BlY2lhbC5jcHAKICAgICBiMy9haXIvQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcAog
ICAgIGIzL2Fpci9BaXJDb2RlLmNwcAogICAgIGIzL2Fpci9BaXJDdXN0b20uY3BwCiAgICAgYjMv
YWlyL0FpckRpc2Fzc2VtYmxlci5jcHAKLSAgICBiMy9haXIvQWlyRHVtcEFzSlMuY3BwCiAgICAg
YjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAogICAgIGIzL2Fpci9BaXJFbWl0U2h1ZmZs
ZS5jcHAKICAgICBiMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTExMCw2ICsxMTEs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGIzL2Fpci9BaXJWYWxpZGF0ZS5j
cHAKIAogICAgIGIzL0IzQXJndW1lbnRSZWdWYWx1ZS5jcHAKKyAgICBiMy9CM0F0b21pY1ZhbHVl
LmNwcAogICAgIGIzL0IzQmFuay5jcHAKICAgICBiMy9CM0Jhc2ljQmxvY2suY3BwCiAgICAgYjMv
QjNCbG9ja0luc2VydGlvblNldC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3
NCwxNCBAQAogCQkwRjJDNjNCMDFFNjBBRTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBD
MTM4MzkgLyogQjNCYW5rLmggKi87IH07CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBC
M1dpZHRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYz
QjIxRTYwQUU0NzAwQzEzODM5IC8qIEIzV2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRo
LmggKi87IH07CisJCTBGMkM2M0I2MUU2MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0Iz
MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcx
RTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmggKi87IH07CisJCTBGMkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggKi87IH07CisJCTBGMkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9j
a0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQu
Y3BwICovOyB9OworCQkwRjJDNjNCQzFFNjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRp
b25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9Owor
CQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFF
NjYwRUE1MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBG
MkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5
IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87IH07CisJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAv
KiBCM01lbW9yeVZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzYzQzMxRTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJ
bmxpbmVzLmggKi87IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNj
b3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYy
RDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5
ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDksOCArMjI1
Nyw2IEBACiAJCURDMjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIw
MDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThD
IC8qIEhlYXBDZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBC
QTkxOEMgLyogSGVhcENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsg
fTsKLQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYw
MDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRD
MThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87
IH07CiAJCURDNjA1QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZF
OTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVB
MjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
REM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5Mzcx
OCAvKiBQcm9maWxlclVJRC5jcHAgKi87IH07CkBAIC0yNzc1LDYgKzI3ODEsMTQgQEAKIAkJMEYy
QzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIz
L0IzV2lkdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBB
RTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBCM1dpZHRoLmg7IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRo
ID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEz
ODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0
aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0
aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMkM2M0MxMUU2NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCM05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRp
dmVUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQzMxRTY5RUY5
MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEIzTWVtb3J5VmFsdWVJbmxpbmVzLmg7IHBhdGggPSBiMy9CM01lbW9yeVZh
bHVlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQjE5ODMy
RDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEZWJ1Z2dlclNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyRDREREMxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXJTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJENERERjE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVy
TG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVQcm9maWxlckxvZy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Nzk1LDggKzQ4MDksNiBAQAogCQlEQzIxNDMwNjFDQTMy
RTUyMDAwQTg4NjkgLyogSUNTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJQ1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDM0QyQjA5MUQzNDMx
NjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIZWFwQ2VsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwQjFEMzQz
NzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSGVhcENlbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEQzQ1
NEI4QTFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyRHVtcEFzSlMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckR1
bXBBc0pTLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEIxRDAwRTgx
RjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEFpckR1bXBBc0pTLmg7IHBhdGggPSBiMy9haXIvQWlyRHVtcEFzSlMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVy
RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJF
dmVudC5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckV2ZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNUExQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJFdmVudC5oOyBw
YXRoID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEQzYwNUI1QjFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJVSUQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJVSUQuY3BwOyBwYXRoID0gcHJv
ZmlsZXIvUHJvZmlsZXJVSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMx
NCw2ICs1MzI2LDggQEAKIAkJCQkwRkVDODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAog
CQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICov
LAogCQkJCTBGRUM4NEI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAq
LywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8s
CisJCQkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJ
CQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNB
QzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzQmFzaWNCbG9jay5jcHAgKi8sCkBAIC01Mzc2LDYgKzUzOTAsNyBAQAogCQkJ
CTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJ
CTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVD
ODRDRjFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2
MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBG
RUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywK
IAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJ
CTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTM5OCw4
ICs1NDEzLDEwIEBACiAJCQkJNDNBQjI2QzUxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJh
cy5oICovLAogCQkJCTBGRUM4NEQ1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNw
cCAqLywKIAkJCQkwRkVDODRENjFCREFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5oICov
LAorCQkJCTBGMkM2M0MzMUU2OUVGOTIwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5o
ICovLAogCQkJCTBGMzM4RTAzMUJGMDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuY3Bw
ICovLAogCQkJCTBGMzM4RTA0MUJGMDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuaCAq
LywKKwkJCQkwRjJDNjNDMTFFNjY0QTVBMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLywK
IAkJCQkwRjMzOEUwNTFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3QuaCAqLywK
IAkJCQkwRjMzOEUwNjFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmNwcCAq
LywKIAkJCQkwRjMzOEUwNzFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmgg
Ki8sCkBAIC01NDkxLDYgKzU1MDgsOCBAQAogCQkJCTBGNjRFQUYyMUM0RUNEMDYwMDYyMUU5QiAv
KiBBaXJBcmdJbmxpbmVzLmggKi8sCiAJCQkJMEZFQzg1NEMxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
ckJhc2ljQmxvY2suY3BwICovLAogCQkJCTBGRUM4NTREMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJC
YXNpY0Jsb2NrLmggKi8sCisJCQkJMEYyQzYzQjkxRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2Nr
SW5zZXJ0aW9uU2V0LmNwcCAqLywKKwkJCQkwRjJDNjNCQTFFNjM0NDA4MDBDMTM4MzkgLyogQWly
QmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkIzODc4QjFCRkJDNDREMDBFM0FCMUUgLyog
QWlyQmxvY2tXb3JrbGlzdC5oICovLAogCQkJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBB
aXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTBGNjE4MzIxMUM0NUJGMDcwMDcyNDUw
QiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKQEAgLTU1MDIsOCArNTUyMSw2IEBACiAJ
CQkJMEYxMEYxQTIxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oICovLAogCQkJCTc5QUJC
MTdCMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuY3BwICovLAogCQkJCTc5QUJC
MTdDMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuaCAqLywKLQkJCQlEQzQ1NEI4
QTFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovLAotCQkJCURDNDU0QjhCMUQw
MEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oICovLAogCQkJCTBGNDU3MDM2MUJFNDRDOTEw
MDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgKi8sCiAJCQkJMEY0NTcwMzcxQkU0
NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi8sCiAJCQkJMEY2MTgzMjMx
QzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVtaXRTaHVmZmxlLmNwcCAqLywKQEAgLTczNTUsNiArNzM3
Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMUZFNTFC
MTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oICovLAorCQkJCTBGMkM2M0JGMUU2NjBF
QTUwMEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCAqLywKIAkJCQk4NjAxNjFE
RjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovLAogCQkJCTBG
MzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Uu
aCAqLywKIAkJCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAq
LywKQEAgLTczODMsOCArNzQwMSw4IEBACiAJCQkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8q
IE1hY3JvQXNzZW1ibGVyTUlQUy5oICovLAogCQkJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAv
KiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovLAogCQkJCUZFNjhDNjM2MUI5MERERDkwMDQy
QkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLywKLQkJCQk4NjAxNjFFMDBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQk4NjAxNjFFMTBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLywKKwkJCQk4NjAxNjFFMDBGM0E4
M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQlBN0E0QUUwNzE3OTcz
QjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwICovLAogCQkJCTg2MDE2
MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovLAogCQkJ
CTY1ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bC5oICovLApAQCAtNzk3Nyw3ICs3OTk1LDYgQEAKIAkJCQkwRkVDODU3NDFCREFDREM3MDA4MEZG
NzQgLyogQWlyQ0NhbGxTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU3NjFCREFD
REM3MDA4MEZGNzQgLyogQWlyQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMEYxQTMxQzQy
MEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREM0NTRCOEQx
RDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ1
NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNjE4MzJEMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0REUxQ0YxQzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlv
dXNTcGlsbHMuaCBpbiBIZWFkZXJzICovLApAQCAtNzk5MCw2ICs4MDA3LDcgQEAKIAkJCQkwRkVD
ODU4MDFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
Qzg1ODExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkRGNjdENzFEOURDNDQyMDAxQjk4MjUgLyogQWlyS2luZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYyQzYzQkMxRTYzNDQwQzAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyNjg0RDQzODFDMDAxNjFDMDA4MUQ2NjMgLyogQWlyTGl2ZW5l
c3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTM0QzFBMUM0QjM5QUUwMDAzQTUxMiAvKiBBaXJM
b2dSZWdpc3RlclByZXNzdXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyRjFDNDVCRjA3
MDA3MjQ1MEIgLyogQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmggaW4gSGVhZGVycyAqLywKQEAgLTgw
ODEsNiArODA5OSw3IEBACiAJCQkJNDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RG
bG9hdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVCMzFCREVEOTU3MDA4MEZGNzQg
LyogQjNDb25zdFB0clZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOERGNjFCRTkzRDU1
MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJD
NjNCODFFNjM0M0Y3MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMzM4RTBFMUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzRkNGQzFDMTYyNUJFMDAzMjNGNjcgLyogQjNEb21p
bmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCOEFEOTFDNEVEREEyMDA5NjkwNTIgLyog
QjNEdXBsaWNhdGVUYWlscy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MjcxLDYgKzgyOTAsNyBAQAog
CQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3MDREOTAzMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVy
cHJldGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwNDE3QTBCQUE4MDA2QkE1NTQgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2
M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2MjAxNzcxNDNGQ0QzRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRDNFNDAyMUI2MThBQUYwMEM4MEUxRSAvKiBERkdBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMThEM0Qw
MUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtODQwMiw2ICs4NDIyLDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4
NDQ3MjggLyogREZHT1NSRXhpdEZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4
MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9t
aWNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8q
IERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMx
NEVGOTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNF
QjE5RDBCQTdEMDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAt
ODgyMCw2ICs4ODQxLDcgQEAKIAkJCQk3OUI4MTk5MzFERDI1Q0Y1MDBEREM3MTQgLyogSlNHbG9i
YWxPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEwMDdDMTE4N0NDM0M2MDBC
Mzg4NzkgLyogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBC
M01lbW9yeVZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMkExODhGMTA1
OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTk4MzEsNiArOTg1
Myw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTg0MSw3ICs5ODY0LDYgQEAKIAkJCQkwRkVD
ODU3MzFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTc1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0Ux
QzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMDI4OSw2ICsxMDMxMSw3IEBACiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8q
IEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVC
OEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQw
RTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMzA3LDYgKzEwMzMwLDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBB
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdB
NDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9u
IDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjk0LDYgKzY5NCwyMSBAQCBwcml2YXRlOgogICAgICAg
ICBMZHJMaXRlcmFsT3BfTERSU1cgPSAyLAogICAgICAgICBMZHJMaXRlcmFsT3BfMTI4QklUID0g
MgogICAgIH07CisgICAgCisgICAgZW51bSBFeG90aWNMb2FkRmVuY2UgeworICAgICAgICBFeG90
aWNMb2FkRmVuY2VfTm9uZSwKKyAgICAgICAgRXhvdGljTG9hZEZlbmNlX0FjcXVpcmUKKyAgICB9
OworICAgIAorICAgIGVudW0gRXhvdGljTG9hZEF0b21pYyB7CisgICAgICAgIEV4b3RpY0xvYWRB
dG9taWNfTGluaywKKyAgICAgICAgRXhvdGljTG9hZEF0b21pY19Ob25lCisgICAgfTsKKworICAg
IGVudW0gRXhvdGljU3RvcmVGZW5jZSB7CisgICAgICAgIEV4b3RpY1N0b3JlRmVuY2VfTm9uZSwK
KyAgICAgICAgRXhvdGljU3RvcmVGZW5jZV9SZWxlYXNlLAorICAgIH07CiAKICAgICBzdGF0aWMg
dW5zaWduZWQgbWVtUGFpck9mZnNldFNoaWZ0KGJvb2wgViwgTWVtUGFpck9wU2l6ZSBzaXplKQog
ICAgIHsKQEAgLTE1MzEsNiArMTU0Niw0OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbnNu
KDB4ZDUwMzNhYmYpOwogICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+Cisg
ICAgdm9pZCBsZGFyKFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAg
ICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUs
IEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlLCBFeG90aWNMb2FkQXRvbWljX05vbmUsIGRzdCwgc3Jj
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgbGR4cihS
ZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzcmMpCisgICAgeworICAgICAgICBDSEVDS19EQVRB
U0laRSgpOworICAgICAgICBpbnNuKGV4b3RpY0xvYWQoTUVNT1BTSVpFLCBFeG90aWNMb2FkRmVu
Y2VfTm9uZSwgRXhvdGljTG9hZEF0b21pY19MaW5rLCBkc3QsIHNyYykpOworICAgIH0KKworICAg
IHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxkYXhyKFJlZ2lzdGVySUQgZHN0LCBS
ZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAg
IGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUsIEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlLCBFeG90
aWNMb2FkQXRvbWljX0xpbmssIGRzdCwgc3JjKSk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIHN0eHIoUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7
CisgICAgICAgIGluc24oZXhvdGljU3RvcmUoTUVNT1BTSVpFLCBFeG90aWNTdG9yZUZlbmNlX05v
bmUsIHJlc3VsdCwgc3JjLCBkc3QpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNp
emU+CisgICAgdm9pZCBzdGxyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oc3RvcmVSZWxlYXNlKE1F
TU9QU0laRSwgc3JjLCBkc3QpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+
CisgICAgdm9pZCBzdGx4cihSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5z
bihleG90aWNTdG9yZShNRU1PUFNJWkUsIEV4b3RpY1N0b3JlRmVuY2VfUmVsZWFzZSwgcmVzdWx0
LCBzcmMsIGRzdCkpOworICAgIH0KIAogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgb3JuKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lz
dGVySUQgcm0pCkBAIC0zNjAxLDcgKzM2NTgsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3Qg
aW50IG9wNCA9IDA7CiAgICAgICAgIHJldHVybiAoMHhkNjAwMDAwMCB8IG9wYyA8PCAyMSB8IG9w
MiA8PCAxNiB8IG9wMyA8PCAxMCB8IHhPclpyKHJuKSA8PCA1IHwgb3A0KTsKICAgICB9Ci0KKyAg
ICAKKyAgICBzdGF0aWMgaW50IGV4b3RpY0xvYWQoTWVtT3BTaXplIHNpemUsIEV4b3RpY0xvYWRG
ZW5jZSBmZW5jZSwgRXhvdGljTG9hZEF0b21pYyBhdG9taWMsIFJlZ2lzdGVySUQgZHN0LCBSZWdp
c3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIHJldHVybiAweDA4NWY3YzAwIHwgc2l6ZSA8PCAz
MCB8IGZlbmNlIDw8IDE1IHwgYXRvbWljIDw8IDIzIHwgc3JjIDw8IDUgfCBkc3Q7CisgICAgfQor
ICAgIAorICAgIHN0YXRpYyBpbnQgc3RvcmVSZWxlYXNlKE1lbU9wU2l6ZSBzaXplLCBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICByZXR1cm4gMHgwODlmZmMw
MCB8IHNpemUgPDwgMzAgfCBkc3QgPDwgNSB8IHNyYzsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IGludCBleG90aWNTdG9yZShNZW1PcFNpemUgc2l6ZSwgRXhvdGljU3RvcmVGZW5jZSBmZW5jZSwg
UmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIHJldHVybiAweDA4MDA3YzAwIHwgc2l6ZSA8PCAzMCB8IHJlc3VsdCA8PCAxNiB8
IGZlbmNlIDw8IDE1IHwgZHN0IDw8IDUgfCBzcmM7CisgICAgfQorICAgIAogICAgIC8vIFdvcmth
cm91bmQgZm9yIENvcnRleC1BNTMgZXJyYXR1bSAoODM1NzY5KS4gRW1pdCBhbiBleHRyYSBub3Ag
aWYgdGhlCiAgICAgLy8gbGFzdCBpbnN0cnVjdGlvbiBpbiB0aGUgYnVmZmVyIGlzIGEgbG9hZCwg
c3RvcmUgb3IgcHJlZmV0Y2guIE5lZWRlZAogICAgIC8vIGJlZm9yZSA2NC1iaXQgbXVsdGlwbHkt
YWNjdW11bGF0ZSBpbnN0cnVjdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIiAvLyBIYXZlIHRvIGJyZWFrIHdpdGggc3R5bGUg
YmVjYXVzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggaXMgYSBzaGFkeSBoZWFkZXIuCisKKyNp
ZiBFTkFCTEUoQVNTRU1CTEVSKQorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN0YXR1c0Nv
bmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICBjYXNl
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdWNjZXNzOgorICAgICAgICBvdXQucHJpbnQo
IlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlckJhc2U6OkZhaWx1cmU6CisgICAgICAgIG91dC5wcmludCgiRmFpbHVyZSIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTQtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1JhbmRvbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDggKzUxLDI4IEBAIG5h
bWVzcGFjZSBERkcgewogc3RydWN0IE9TUkV4aXQ7CiB9CiAKK2NsYXNzIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXR1c0NvbmRpdGlvbiB7CisgICAg
ICAgIFN1Y2Nlc3MsCisgICAgICAgIEZhaWx1cmUKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBT
dGF0dXNDb25kaXRpb24gaW52ZXJ0KFN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisgICAgewor
ICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbikgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAg
ICAgICAgICByZXR1cm4gRmFpbHVyZTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAg
ICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgfQorfTsKKwogdGVtcGxh
dGUgPGNsYXNzIEFzc2VtYmxlclR5cGUsIGNsYXNzIE1hY3JvQXNzZW1ibGVyVHlwZT4KLWNsYXNz
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgeworY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1ibGVyVHlw
ZT4gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlclR5cGU7CiAgICAgdHlwZWRlZiBBc3NlbWJsZXJUeXBl
IEFzc2VtYmxlclR5cGVfVDsKQEAgLTExMDgsMyArMTEyOSwxNiBAQCBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCituYW1lc3BhY2Ug
V1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdGF0dXNDb25kaXRp
b24pOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiw2ICsx
MzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMyOyAvLyBU
aGlzIGlzIHN1cGVyIHVzZWZ1bCBmb3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8vIFV0aWxp
dGllcyB1c2VkIGJ5IHRoZSBERkcgSklULgorICAgIHVzaW5nIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXJCYXNlOjppbnZlcnQ7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQ7CiAg
ICAgCiAgICAgc3RhdGljIERvdWJsZUNvbmRpdGlvbiBpbnZlcnQoRG91YmxlQ29uZGl0aW9uIGNv
bmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzNzUsNyArMzM3NSwyMjkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
ZG1iSVNIKCk7CiAgICAgfQotCisgICAgCisgICAgdm9pZCBsb2FkQWNxOFNpZ25lZEV4dGVuZFRv
MzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxkYXI8OD4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVz
cykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkQWNxOFNpZ25lZEV4dGVu
ZFRvMzIoYWRkcmVzcywgZGVzdCk7CisgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMigweGZmKSwg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHI8
OD4oc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRhcjwxNj4oZGVz
dCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3ExNihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihhZGRyZXNzLCBkZXN0KTsKKyAg
ICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKDB4ZmZmZiksIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RscjwxNj4oc3JjLCBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTMyKEltcGxp
Y2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sZGFyPDMyPihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGFyPDY0PihkZXN0
LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
c3RvcmVSZWwzMihSZWdpc3RlcklEIGRlc3QsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RscjwzMj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJl
c3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJ
RCBkZXN0LCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN0bHI8NjQ+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBsb2FkTGluazgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8OD4oZGVzdCwgZXh0
cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRM
aW5rQWNxOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8OD4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3Mo
YWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZDgoUmVnaXN0ZXJJRCBz
cmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnN0eHI8OD4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRy
ZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmRSZWw4KFJlZ2lz
dGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjw4PihyZXN1bHQsIHNyYywgZXh0cmFjdFNp
bXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rMTYo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxkeHI8MTY+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGlua0FjcTE2KEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGF4
cjwxNj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHN0b3JlQ29uZDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdHhy
PDE2PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdGx4cjwxNj4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGluazMyKEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhyPDMy
PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZExpbmtBY3EzMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8MzI+KGRlc3QsIGV4dHJhY3RT
aW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmQz
MihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVz
dWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4cjwzMj4ocmVzdWx0LCBzcmMsIGV4
dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZUNvbmRSZWwzMihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RseHI8MzI+KHJlc3Vs
dCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZExpbms2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGR4cjw2ND4oZGVzdCwgZXh0cmFjdFNpbXBs
ZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rQWNxNjQo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxkYXhyPDY0PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNz
KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kNjQoUmVnaXN0ZXJJRCBzcmMsIElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN0eHI8NjQ+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhh
ZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kUmVsNjQoUmVnaXN0ZXJJ
RCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPDY0PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBs
ZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTPDE2Pihjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM8MzI+KGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9u
Z0NBUzw2ND4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1
bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM4KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzw4Pihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
bmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
UmVsYXhlZFN0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzwxNj4o
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0
b21pY1JlbGF4ZWRTdHJvbmdDQVM8MzI+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1
ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVk
U3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNSZWxheGVkU3Ryb25nQ0FTPDY0Pihjb25kLCBl
eHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAg
IAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljV2Vha0NB
Uzw4Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNXZWFrQ0FTPDE2Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTMzIoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2hBdG9taWNXZWFrQ0FTPDMyPihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFr
Q0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNXZWFrQ0FTPDY0Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hB
dG9taWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzw4Pihjb25k
LCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
UmVsYXhlZFdlYWtDQVM8MTY+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRX
ZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExp
c3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFr
Q0FTPDY0Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGRlcGVuZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5lb3I8MzI+KGRlc3QsIHNyYywgc3Jj
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkZXBlbmQ2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZW9yPDY0PihkZXN0LCBzcmMs
IHNyYyk7CisgICAgfQorICAgIAogICAgIC8vIE1pc2MgaGVscGVyIGZ1bmN0aW9ucy4KIAogICAg
IC8vIEludmVydCBhIHJlbGF0aW9uYWwgY29uZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwg
YmVjb21lcyA+PSwgZXRjLgpAQCAtMzg3Nyw2ICs0MDk5LDE1OCBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50
IGRhdGFzaXplPgorICAgIHZvaWQgbG9hZExpbmsoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8ZGF0YXNpemU+KGRlc3QsIHNy
Yyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxv
YWRMaW5rQWNxKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sZGF4cjxkYXRhc2l6ZT4oZGVzdCwgc3JjKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgc3RvcmVDb25kKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3R4cjxkYXRhc2l6ZT4oc3JjLCBkZXN0LCByZXN1bHQpOworICAgIH0KKyAg
ICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdG9yZUNvbmRSZWwoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjxkYXRhc2l6ZT4oc3JjLCBkZXN0LCByZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzaWduRXh0
ZW5kKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3Zl
KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAg
ICBKdW1wIGJyYW5jaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwg
UmVnaXN0ZXJJRCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBs
ZWZ0LCByaWdodCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4
cGVjdGVkQW5kUmVzdWx0LCBleHBlY3RlZEFuZFJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBS
ZWdpc3RlcklEIHNpbXBsZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCk7CisgICAgICAgIAorICAgICAgICBMYWJlbCByZWxvb3AgPSBsYWJlbCgpOwor
ICAgICAgICBsb2FkTGlua0FjcTxkYXRhc2l6ZT4oc2ltcGxlQWRkcmVzcywgdG1wKTsKKyAgICAg
ICAgSnVtcCBmYWlsdXJlID0gYnJhbmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIHRtcCk7CisgICAgICAgIAorICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNpemU+KG5l
d1ZhbHVlLCBzaW1wbGVBZGRyZXNzLCByZXN1bHQpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9u
WmVybywgcmVzdWx0KS5saW5rVG8ocmVsb29wLCB0aGlzKTsKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIoY29uZCA9PSBTdWNjZXNzKSwgcmVzdWx0KTsKKyAgICAgICAgSnVtcCBkb25lID0ganVt
cCgpOworICAgICAgICAKKyAgICAgICAgZmFpbHVyZS5saW5rKHRoaXMpOworICAgICAgICBtb3Zl
KHRtcCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNpemU+
KHRtcCwgc2ltcGxlQWRkcmVzcywgcmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKE5vblpl
cm8sIHJlc3VsdCkubGlua1RvKHJlbG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGNvbmQgPT0gRmFpbHVyZSksIHJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBkb25lLmxp
bmsodGhpcyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2
b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBzaWduRXh0ZW5kPGRhdGFzaXpl
PihleHBlY3RlZEFuZFJlc3VsdCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICAKKyAgICAg
ICAgUmVnaXN0ZXJJRCBzaW1wbGVBZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVz
cyk7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpOworICAgICAgICAKKyAgICAgICAgTGFiZWwgcmVsb29wID0gbGFiZWwo
KTsKKyAgICAgICAgbG9hZExpbms8ZGF0YXNpemU+KHNpbXBsZUFkZHJlc3MsIHRtcCk7CisgICAg
ICAgIEp1bXAgZmFpbHVyZSA9IGJyYW5jaDxkYXRhc2l6ZT4oTm90RXF1YWwsIGV4cGVjdGVkQW5k
UmVzdWx0LCB0bXApOworICAgICAgICAKKyAgICAgICAgc3RvcmVDb25kPGRhdGFzaXplPihuZXdW
YWx1ZSwgc2ltcGxlQWRkcmVzcywgcmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKE5vblpl
cm8sIHJlc3VsdCkubGlua1RvKHJlbG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGNvbmQgPT0gU3VjY2VzcyksIHJlc3VsdCk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKKyAgICAgICAgCisgICAgICAgIGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgbW92ZSh0
bXAsIGV4cGVjdGVkQW5kUmVzdWx0KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoY29uZCA9
PSBGYWlsdXJlKSwgcmVzdWx0KTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluayh0aGlzKTsK
KyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEp1bXBMaXN0IGJy
YW5jaEF0b21pY1dlYWtDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBl
eHBlY3RlZEFuZENsb2JiZXJlZCk7CisgICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIHNpbXBs
ZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Cisg
ICAgICAgIAorICAgICAgICBKdW1wTGlzdCBzdWNjZXNzOworICAgICAgICBKdW1wTGlzdCBmYWls
dXJlOworCisgICAgICAgIGxvYWRMaW5rQWNxPGRhdGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXAp
OworICAgICAgICBmYWlsdXJlLmFwcGVuZChicmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgdG1wKSk7CisgICAgICAgIHN0b3JlQ29uZFJlbDxkYXRhc2l6ZT4o
bmV3VmFsdWUsIHNpbXBsZUFkZHJlc3MsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKTsKKyAgICAgICAg
CisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAg
ICAgICBzdWNjZXNzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQpKTsKKyAgICAgICAgICAgIGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBzdWNjZXNzOworICAgICAgICBjYXNlIEZhaWx1cmU6CisgICAgICAgICAgICBmYWlsdXJlLmFw
cGVuZChicmFuY2hUZXN0MzIoTm9uWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWlsdXJlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQg
ZGF0YXNpemU+CisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHNpZ25FeHRlbmQ8
ZGF0YXNpemU+KGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBleHBlY3RlZEFuZENsb2JiZXJlZCk7Cisg
ICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIHNpbXBsZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRh
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIAorICAgICAgICBKdW1wTGlz
dCBzdWNjZXNzOworICAgICAgICBKdW1wTGlzdCBmYWlsdXJlOworCisgICAgICAgIGxvYWRMaW5r
PGRhdGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXApOworICAgICAgICBmYWlsdXJlLmFwcGVuZChi
cmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgdG1wKSk7Cisg
ICAgICAgIHN0b3JlQ29uZDxkYXRhc2l6ZT4obmV3VmFsdWUsIHNpbXBsZUFkZHJlc3MsIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkKTsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAg
ICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAgICAgICBzdWNjZXNzLmFwcGVuZChicmFuY2hUZXN0
MzIoWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAgICAgICAgIGZhaWx1cmUubGlu
ayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBzdWNjZXNzOworICAgICAgICBjYXNlIEZhaWx1
cmU6CisgICAgICAgICAgICBmYWlsdXJlLmFwcGVuZChicmFuY2hUZXN0MzIoTm9uWmVybywgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWlsdXJlOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICAKKyAgICBSZWdpc3RlcklEIGV4dHJhY3RTaW1wbGVBZGRyZXNzKEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCkKKyAgICAg
ICAgICAgIHJldHVybiBhZGRyZXNzLmJhc2U7CisgICAgICAgIAorICAgICAgICBzaWduRXh0ZW5k
MzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIGFkZDY0KGFkZHJlc3MuYmFzZSwg
bWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIG1lbW9yeVRlbXBSZWdpc3RlcjsK
KyAgICB9CiAKICAgICBKdW1wIGp1bXBBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKERvdWJsZUNv
bmRpdGlvbiBjb25kKQogICAgIHsKQEAgLTM5ODksNiArNDM2MywyNCBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk02NDo6CiAgICAgbV9hc3NlbWJsZXIuc3R1cmgocnQsIHJu
LCBzaW1tKTsKIH0KIAordGVtcGxhdGU8PgoraW5saW5lIHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk02
NDo6c2lnbkV4dGVuZDw4PihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQoreworICAg
IHNpZ25FeHRlbmQ4VG8zMihzcmMsIGRlc3QpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9p
ZCBNYWNyb0Fzc2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDE2PihSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQoreworICAgIHNpZ25FeHRlbmQxNlRvMzIoc3JjLCBkZXN0KTsKK30KKwor
dGVtcGxhdGU8PgoraW5saW5lIE1hY3JvQXNzZW1ibGVyQVJNNjQ6Okp1bXAgTWFjcm9Bc3NlbWJs
ZXJBUk02NDo6YnJhbmNoPDY0PihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKK3sKKyAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVm
dCwgcmlnaHQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShB
U1NFTUJMRVIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFkZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CkBAIC0yNTEsMTYgKzI1Niw3MSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
ICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBB
ZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX3JtKHNyYywgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQg
c3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfcm0o
c3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAg
ICB9CisKICAgICB2b2lkIGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJh
c2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMy
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8aW50
MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19pbShzdGF0aWNfY2FzdDxpbnQxNl90Pihp
bW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kOChUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0
YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgaWYgKG9wMSA9PSBvcDIpCkBAIC00NTYsNiArNTE2LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOwogICAgIH0K
IAorICAgIHZvaWQgbmVnMzIoQmFzZUluZGV4IHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5uZWdsX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRl
eCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihBZGRyZXNzIHNyY0Rl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQsIHNy
Y0Rlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihCYXNlSW5kZXggc3JjRGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3dfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVz
dC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IG5lZzgoQWRkcmVzcyBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnYl9t
KHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnOChC
YXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2JfbShzcmNE
ZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsK
KyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNDcxLDE2
ICs1NTYsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcm0oc3JjLCBkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5vcndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoUmVn
aXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9y
Yl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I4
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQsIHNyYy5i
YXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9p
ZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm9ybF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKGltbS5tX3ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGlu
dDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGlt
bS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX2ltKHN0YXRp
Y19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9pbShzdGF0aWNfY2FzdDxpbnQ4
X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQg
b3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYg
KG9wMSA9PSBvcDIpCkBAIC02NTQsMTYgKzc5NCw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19pbShzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1f
dmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBzdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUp
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKEFkZHJl
c3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJs
X21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMy
KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBk
ZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWIxNihSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNy
YywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vi
bF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUp
OworICAgIH0KKworICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3Vi
OChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9ycihzcmMsIGRlc3Qp
OwpAQCAtNjc3LDYgKzg3Miw1MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54
b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAg
ICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAg
ICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90
bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisK
KyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpOwor
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5u
b3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Up
OworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGlt
bS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRl
c3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3J3X2lt
KGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGlt
bS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVz
dC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5k
ZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0x
KQpAQCAtNjkwLDExICs5MjksNDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3Js
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCB4b3Iz
MihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwor
ICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihB
ZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZv
aWQgeG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMu
c2NhbGUsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3Ax
LCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9w
MSA9PSBvcDIpCkBAIC03NDEsNiArMTAxMCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG5v
dDMyKEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwor
ICAgIHZvaWQgbm90MTYoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90MTYo
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBub3Q4KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdGJf
bShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDgoQmFzZUlu
ZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBz
cXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5zcXJ0c2RfcnIoc3JjLCBkc3QpOwpAQCAtMTA3MSw0MiArMTM2NSwy
MyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBhZGRyZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAgICAgICAvLyBPbiAzMi1iaXQgeDg2
IHdlIGNhbiBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOwotICAgICAgICAv
LyBlc3AuLmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQotICAgICAgICBpZiAo
c3JjID49IDQpIHsKLSAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCi0g
ICAgICAgICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRSZWdpc3RlcihhZGRyZXNzKTsK
LQotICAgICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5IHJlZ2lzdGVyIHRvIHBlcmZv
cm0gdGhlIHN0b3JlLgotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAg
bV9hc3NlbWJsZXIubW92d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1w
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0
ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAg
Ly8gT24gMzItYml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lz
dGVyczsKLSAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVy
cyEKLSAgICAgICAgaWYgKHNyYyA+PSA0KSB7Ci0gICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9y
YXJ5IHJlZ2lzdGVyLgotICAgICAgICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVn
aXN0ZXIoYWRkcmVzcyk7Ci0KLSAgICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSBy
ZWdpc3RlciB0byBwZXJmb3JtIHRoZSBzdG9yZS4KLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1w
KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7Ci0gICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3Jt
KHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBz
dG9yZTE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSks
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKworICAgIHZvaWQgc3RvcmUxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X2ltKHN0YXRpY19jYXN0
PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7Cisg
ICAgfQogCiAgICAgLy8gRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uOgogICAgIC8vCkBAIC0yNzQ1
LDc0ICszMDIwLDkwMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKDAsIDAsIFg4NlJlZ2lzdGVyczo6ZXNwKTsKICAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25n
Q0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNt
cHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7Cisg
ICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rp
b24gb2Ygbm9ybWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBz
dG9yZUZlbmNlKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAgIH0KIAotICAgIC8vIFdlIHRh
a2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBsb2Fkcy4g
U28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBsb2FkRmVuY2UoKQorICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFy
dCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgdm9pZCBhdG9taWNTdHJvbmdD
QVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rp
b25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVz
cygpKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBy
ZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAg
ICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFg4NkFzc2Vt
Ymxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9
CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHBhdGNoYWJsZUp1bXBTaXplKCkKKyAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpwYXRjaGFi
bGVKdW1wU2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
OyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3Vu
ZGluZygpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAg
ICAgIGlmIChzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2Vk
KQotICAgICAgICAgICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7Ci0gICAgICAgIHJldHVybiBzX3Nz
ZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0o
bmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJl
Z2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRl
eCBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gQVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3Vz
IHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4gYmUgbWFzc2l2ZS4KLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1
bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAgICAg
fQogCi0gICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdzKCkKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIGludCBmbGFncyA9IDA7Ci0j
aWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgaW50IGNwdUluZm9bNF07Ci0gICAgICAgIF9fY3B1
aWQoY3B1SW5mbywgMHgxKTsKLSAgICAgICAgZmxhZ3MgPSBjcHVJbmZvWzJdOwotI2VsaWYgQ09N
UElMRVIoR0NDX09SX0NMQU5HKQotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGFzbSAoCi0gICAg
ICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAiY3B1aWQ7IgotICAgICAg
ICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCi0gICAg
ICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlYngiLCAiJWVjeCIsICIlZWR4Igot
ICAgICAgICAgICAgKTsKLSNlbHNlCi0gICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAk
MHgxLCAlJWVheDsiCi0gICAgICAgICAgICAicHVzaGwgJSVlYng7IgotICAgICAgICAgICAgImNw
dWlkOyIKLSAgICAgICAgICAgICJwb3BsICUlZWJ4OyIKLSAgICAgICAgICAgICJtb3ZsICUlZWN4
LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAgICAgICAgICAgOgotICAgICAg
ICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICApOwotI2VuZGlmCisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9
KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fz
c2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25n
Q0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZv
aWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNT
dHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdD
QVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBt
X2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJh
bmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRB
bmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9t
aWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIC8vIElmIHlvdSB1c2Ugd2VhayBDQVMsIHlvdSBj
YW5ub3QgcmVseSBvbiBleHBlY3RlZEFuZENsb2JiZXJlZCB0byBoYXZlIGFueSBwYXJ0aWN1bGFy
IHZhbHVlIGFmdGVyCisgICAgLy8gdGhpcyBjb21wbGV0ZXMuIE9uIHg4NiwgaXQgd2lsbCBjb250
YWluIHRoZSByZXN1bHQgb2YgdGhlIHN0cm9uZyBDQVMuIE9uIEFSTSwgaXQgd2lsbCBzdGlsbCBo
YXZlCisgICAgLy8gdGhlIGV4cGVjdGVkIHZhbHVlLgorICAgIHZvaWQgYXRvbWljV2Vha0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dl
YWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
MTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQp
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBB
ZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWlj
U3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNz
LCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAg
ICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFr
Q0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtD
QVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFr
Q0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vh
a0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
V2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVn
aXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUlu
ZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJl
c3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1Zh
bHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdl
YWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZv
aWQgYXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMy
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRX
ZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1Jl
bGF4ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMx
Nihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hBdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhZGQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQWRkOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJ
RCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhZGQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQWRkMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQz
MihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHN1YjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHN1YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNTdWI4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChyZWcsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFRydXN0ZWRJbW0zMiBpbW0s
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFJlZ2lzdGVy
SUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNTdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Vi
MzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWIzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIg
aW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFuZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNBbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMy
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoUmVnaXN0
ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihUcnVzdGVk
SW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBv
cjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBvcjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHhvcjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNY
b3I4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYb3I4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Ix
NihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNYb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHhvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WG9yMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzgo
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnOChh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2KGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzE2KEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWcxNihh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMyKGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzMyKEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWczMihh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90OChhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MTYoQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDE2KGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MzIoQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDMyKGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCBy
ZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54
YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhhZGR3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0Fk
ZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRsX3JtKHJlZywgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNo
Z0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBtX2Fzc2VtYmxlci54Y2hnYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3dfcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShy
ZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJl
ZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTgoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQ4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTgoQmFz
ZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDgoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoQWRk
cmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4U2lnbmVkRXh0
ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4U2lnbmVk
RXh0ZW5kVG8zMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBsb2FkQWNxMTYoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IGxvYWQxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNihCYXNl
SW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTYoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKEFk
ZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTZTaWduZWRF
eHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2ln
bmVkRXh0ZW5kVG8zMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMzIo
QmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDMyKHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTgoc3JjLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgc3RvcmVSZWw4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIHN0b3JlOChpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChp
bW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMTYoc3JjLCBkZXN0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBzdG9yZVJlbDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7
CisgICAgICAgIHN0b3JlMTYoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZVJlbDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
c3RvcmUxNihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoUmVn
aXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBzdG9yZVJlbDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgc3RvcmUzMihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICAvLyBXZSB0YWtl
IHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwgc3RvcmVzLiBT
bywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KKyAgICB2b2lkIHN0b3JlRmVuY2UoKQorICAgIHsKKyAg
ICB9CisKKyAgICAvLyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlv
biBvZiBub3JtYWwgbG9hZHMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgorICAgIHZvaWQgbG9h
ZEZlbmNlKCkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1w
KENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRl
c3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAo
aW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1w
UmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IHBh
dGNoYWJsZUp1bXBTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OnBh
dGNoYWJsZUp1bXBTaXplKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9h
dGluZ1BvaW50Um91bmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKHNfc3NlNF8xQ2hlY2tTdGF0
ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpCisgICAgICAgICAgICB1cGRhdGVFYXgx
RWN4RmxhZ3MoKTsKKyAgICAgICAgcmV0dXJuIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJRENo
ZWNrU3RhdGU6OlNldDsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisg
ICAgeworICAgICAgICAvLyBBVlggc3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVzc2lvbnMg
YW5kIHRob3NlIHJlZ3Jlc3Npb25zIGNhbiBiZSBtYXNzaXZlLgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdzKCkKKyAgICB7
CisgICAgICAgIGludCBmbGFncyA9IDA7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICAgICAgaW50
IGNwdUluZm9bNF07CisgICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHgxKTsKKyAgICAgICAgZmxh
Z3MgPSBjcHVJbmZvWzJdOworI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorI2lmIENQVShY
ODZfNjQpCisgICAgICAgIGFzbSAoCisgICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCisg
ICAgICAgICAgICAiY3B1aWQ7IgorICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAg
ICAgICAgIDogIj1nIiAoZmxhZ3MpCisgICAgICAgICAgICA6CisgICAgICAgICAgICA6ICIlZWF4
IiwgIiVlYngiLCAiJWVjeCIsICIlZWR4IgorICAgICAgICAgICAgKTsKKyNlbHNlCisgICAgICAg
IGFzbSAoCisgICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCisgICAgICAgICAgICAicHVz
aGwgJSVlYng7IgorICAgICAgICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICJwb3BsICUlZWJ4
OyIKKyAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCisgICAgICAgICAgICA6ICI9ZyIgKGZs
YWdzKQorICAgICAgICAgICAgOgorICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgi
CisgICAgICAgICAgICApOworI2VuZGlmCiAjZW5kaWYgLy8gQ09NUElMRVIoR0NDX09SX0NMQU5H
KQogICAgICAgICBzX3NzZTRfMUNoZWNrU3RhdGUgPSAoZmxhZ3MgJiAoMSA8PCAxOSkpID8gQ1BV
SURDaGVja1N0YXRlOjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOwogICAgICAgICBzX2F2
eENoZWNrU3RhdGUgPSAoZmxhZ3MgJiAoMSA8PCAyOCkpID8gQ1BVSURDaGVja1N0YXRlOjpTZXQg
OiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOwpAQCAtMjgzMyw2ICszOTM1LDE4IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uPihj
b25kKTsKICAgICB9CiAKKyAgICBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24o
U3RhdHVzQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAg
ICAgICAgY2FzZSBTdWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6Q29u
ZGl0aW9uRTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAgICAgcmV0dXJuIFg4NkFz
c2VtYmxlcjo6Q29uZGl0aW9uTkU7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uRTsK
KyAgICB9CisKICAgICB2b2lkIHNldDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAjaWYgQ1BVKFg4NikKQEAgLTI5MjcsNiArNDA0MSwzNSBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHNpemVPZlJlZ2lzdGVyKSwg
ZHN0KTsKICAgICAgICAgc3JjSXNOb25aZXJvLmxpbmsodGhpcyk7CiAgICAgfQorICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
cmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFu
ZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVn
aXN0ZXJzOjplYXgpOworICAgICAgICBzZXQzMih4ODZDb25kaXRpb24oY29uZCksIHJlc3VsdCk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGF0b21pY1N0
cm9uZ0NBUyhSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQor
ICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgp
OworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAg
c3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIGNvbnN0
IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZS
ZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVu
YygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7
CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkp
KTsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgLy8gT25seSBNYWNyb0Fzc2VtYmxlclg4NiBzaG91
bGQgYmUgdXNpbmcgdGhlIGZvbGxvd2luZyBtZXRob2Q7IFNTRTIgaXMgYWx3YXlzIGF2YWlsYWJs
ZSBvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiwgMjAxNC0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjY0LDExICsyNjQsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5hZGRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFkZDY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZDY0KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGRx
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChBYnNvbHV0ZUFkZHJlc3Mgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgc2Ny
YXRjaFJlZ2lzdGVyKCkpOwpAQCAtMzA2LDYgKzMxNiwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5hZGRxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IDEpCisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5pbmNxX20oYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZHFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQg
YWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3Rl
cigpKTsKQEAgLTM0MiwxMSArMzYwLDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
YW5kcV9ycihzcmMsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFu
ZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwg
c3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lk
IGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZHFfaXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwogICAgIH0KIAor
ICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KwogICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkK
ICAgICB7CiAgICAgICAgIGludHB0cl90IGludFZhbHVlID0gaW1tLmFzSW50cHRyKCk7CkBAIC01
NTIsMTEgKzYwMCw1MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfcihkZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIG5lZzY0KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5lZ3FfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5lZzY0KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bmVncV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKwogICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisg
ICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5vcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwg
ZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KEFkZHJlc3Mg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgb3I2NChCYXNl
SW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5v
cnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsK
KyAgICB9CisKKyAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfaW0oaW1tLm1f
dmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKwogICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdpc3RlcklEIHNyY0Rl
c3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkKQEAgLTYxOSwxNiArNzA3LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIuc3VicV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgc3ViNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoQmFzZUluZGV4IHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAg
IHZvaWQgc3ViNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLnN1YnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9
CiAKKyAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
LCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54
b3JxX3JyKHNyYywgZGVzdCk7CkBAIC02NTEsNiArNzU0LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIueG9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0K
IAorICAgIHZvaWQgeG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoQWRkcmVz
cyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFf
bXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQo
QmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueG9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRl
c3QpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pbShpbW0ubV92YWx1ZSwgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFf
aW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pcihpbW0ubV92
YWx1ZSwgc3JjRGVzdCk7CkBAIC02NjYsNiArNzk0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIubm90cV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZv
aWQgbm90NjQoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3Rx
X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgZGVzdCk7CkBAIC03MjUsNiArODU4LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NlbWJsZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2kzMm0o
aW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tNjQg
aW1tLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lH
Tl9FWFRFTkRfMzJfNjQoaW1tLm1fdmFsdWUpKSB7CkBAIC0xMjk0LDcgKzE0MzIsMjc1IEBAIHB1
YmxpYzoKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwogICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJl
Z2lzdGVyKCkpLCBtYXNrOCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
NjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CiAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQp
CisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsK
KyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9
KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fz
c2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hB
dG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwor
ICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCBy
ZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAg
ICBhdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FT
NjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJl
dHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
bmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdl
YWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hB
dG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFk
ZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIHN1YjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljU3ViNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1
YjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY0FuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFuZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
QW5kNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHhvcjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9y
NjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY05lZzY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljTmVnNjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY05vdDY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljTm90NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2Vt
Ymxlci54YWRkcV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZzY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZzY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGxvYWRBY3E2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZVJlbDY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9y
ZTY0KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNyYywgZGVz
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBB
ZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAg
dm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDE2ICsxOTAsMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgT1BfQUREX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MDEsCiAg
ICAgICAgIE9QX0FERF9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDAzLAogICAgICAgICBP
UF9BRERfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgwNSwKKyAgICAgICAgT1BfT1JfRXZH
YiAgICAgICAgICAgICAgICAgICAgICA9IDB4MDgsCiAgICAgICAgIE9QX09SX0V2R3YgICAgICAg
ICAgICAgICAgICAgICAgPSAweDA5LAogICAgICAgICBPUF9PUl9HdkV2ICAgICAgICAgICAgICAg
ICAgICAgID0gMHgwQiwKICAgICAgICAgT1BfT1JfRUFYSXYgICAgICAgICAgICAgICAgICAgICA9
IDB4MEQsCiAgICAgICAgIE9QXzJCWVRFX0VTQ0FQRSAgICAgICAgICAgICAgICAgPSAweDBGLAor
ICAgICAgICBPUF9BTkRfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgyMCwKICAgICAgICAg
T1BfQU5EX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MjEsCiAgICAgICAgIE9QX0FORF9H
dkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDIzLAorICAgICAgICBPUF9TVUJfRXZHYiAgICAg
ICAgICAgICAgICAgICAgID0gMHgyOCwKICAgICAgICAgT1BfU1VCX0V2R3YgICAgICAgICAgICAg
ICAgICAgICA9IDB4MjksCiAgICAgICAgIE9QX1NVQl9HdkV2ICAgICAgICAgICAgICAgICAgICAg
PSAweDJCLAogICAgICAgICBPUF9TVUJfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgyRCwK
ICAgICAgICAgUFJFX1BSRURJQ1RfQlJBTkNIX05PVF9UQUtFTiAgICA9IDB4MkUsCisgICAgICAg
IE9QX1hPUl9FdkdiICAgICAgICAgICAgICAgICAgICAgPSAweDMwLAogICAgICAgICBPUF9YT1Jf
RXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgzMSwKICAgICAgICAgT1BfWE9SX0d2RXYgICAg
ICAgICAgICAgICAgICAgICA9IDB4MzMsCiAgICAgICAgIE9QX1hPUl9FQVhJdiAgICAgICAgICAg
ICAgICAgICAgPSAweDM1LApAQCAtMjIzLDYgKzIyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9Q
X0dST1VQMV9FdkliICAgICAgICAgICAgICAgICAgPSAweDgzLAogICAgICAgICBPUF9URVNUX0Vi
R2IgICAgICAgICAgICAgICAgICAgID0gMHg4NCwKICAgICAgICAgT1BfVEVTVF9Fdkd2ICAgICAg
ICAgICAgICAgICAgICA9IDB4ODUsCisgICAgICAgIE9QX1hDSEdfRXZHYiAgICAgICAgICAgICAg
ICAgICAgPSAweDg2LAogICAgICAgICBPUF9YQ0hHX0V2R3YgICAgICAgICAgICAgICAgICAgID0g
MHg4NywKICAgICAgICAgT1BfTU9WX0ViR2IgICAgICAgICAgICAgICAgICAgICA9IDB4ODgsCiAg
ICAgICAgIE9QX01PVl9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDg5LApAQCAtMjUyLDYg
KzI1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIFBSRV9TU0VfRjIgICAgICAgICAgICAgICAgICAg
ICAgPSAweEYyLAogICAgICAgICBQUkVfU1NFX0YzICAgICAgICAgICAgICAgICAgICAgID0gMHhG
MywKICAgICAgICAgT1BfSExUICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4RjQsCisgICAg
ICAgIE9QX0dST1VQM19FYiAgICAgICAgICAgICAgICAgICAgPSAweEY2LAogICAgICAgICBPUF9H
Uk9VUDNfRWJJYiAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAgT1BfR1JPVVAzX0V2
ICAgICAgICAgICAgICAgICAgICA9IDB4RjcsCiAgICAgICAgIE9QX0dST1VQM19Fdkl6ICAgICAg
ICAgICAgICAgICAgPSAweEY3LCAvLyBPUF9HUk9VUDNfRXYgaGFzIGFuIGltbWVkaWF0ZSwgd2hl
biBpbnN0cnVjdGlvbiBpcyBhIHRlc3QuIApAQCAtMjkwLDYgKzI5Niw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIE9QX1NFVENDICAgICAgICAgICAgPSAweDkwLAogICAgICAgICBPUDJfM0JZVEVfRVND
QVBFX0FFID0gMHhBRSwKICAgICAgICAgT1AyX0lNVUxfR3ZFdiAgICAgICA9IDB4QUYsCisgICAg
ICAgIE9QMl9DTVBYQ0hHYiAgICAgICAgPSAweEIwLAorICAgICAgICBPUDJfQ01QWENIRyAgICAg
ICAgID0gMHhCMSwKICAgICAgICAgT1AyX01PVlpYX0d2RWIgICAgICA9IDB4QjYsCiAgICAgICAg
IE9QMl9CU0YgICAgICAgICAgICAgPSAweEJDLAogICAgICAgICBPUDJfVFpDTlQgICAgICAgICAg
ID0gMHhCQywKQEAgLTI5OCw2ICszMDYsOCBAQCBwcml2YXRlOgogICAgICAgICBPUDJfTU9WU1hf
R3ZFYiAgICAgID0gMHhCRSwKICAgICAgICAgT1AyX01PVlpYX0d2RXcgICAgICA9IDB4QjcsCiAg
ICAgICAgIE9QMl9NT1ZTWF9HdkV3ICAgICAgPSAweEJGLAorICAgICAgICBPUDJfWEFERGIgICAg
ICAgICAgID0gMHhDMCwKKyAgICAgICAgT1AyX1hBREQgICAgICAgICAgICA9IDB4QzEsCiAgICAg
ICAgIE9QMl9QRVhUUldfR2RVZEliICAgPSAweEM1LAogICAgICAgICBPUDJfUFNMTFFfVWRxSWIg
ICAgID0gMHg3MywKICAgICAgICAgT1AyX1BTUkxRX1VkcUliICAgICA9IDB4NzMsCkBAIC00NDAs
NiArNDUwLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FE
RF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgYWRkbF9t
cihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAg
ICAKICNpZiAhQ1BVKFg4Nl82NCkKICAgICB2b2lkIGFkZGxfbXIoY29uc3Qgdm9pZCogYWRkciwg
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNTYyLDExICs1NzcsMjEgQEAgcHVibGljOgogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZz
ZXQpOwogICAgIH0KIAorICAgIHZvaWQgYWRkcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhZGRxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgYWRkcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhZGRxX2lyKGludCBpbW0sIFJlZ2lzdGVy
SUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsK
QEAgLTU5MSw2ICs2MTYsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYWRkcV9pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAx
X09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BREQsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAjZWxzZQogICAgIHZvaWQgYWRkbF9pbShpbnQg
aW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKQEAgLTYxNCwxMSArNjUwLDQzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3QsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBhbmRsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhbmRsX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGFuZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnBy
ZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5kbF9ybShzcmMsIG9mZnNldCwgYmFz
ZSk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5k
bF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kYl9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9pcihpbnQg
aW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CkBAIC02NDEsNiArNzA5LDUzIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KIAorICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJ
eiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgYW5kd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmR3X2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFuZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9FYkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBH
Uk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZv
aWQgYW5kcV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNjU3
LDYgKzc3Miw0OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUz
MihpbW0pOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBhbmRxX21yKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBhbmRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JP
VVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAj
ZWxzZQogICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsK
QEAgLTcwMyw2ICs4NjAsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfR1JPVVA1X0V2LCBHUk9VUDFfT1BfQURELCBiYXNlLCBvZmZzZXQpOwog
ICAgIH0KKworICAgIHZvaWQgaW5jcV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfR1JPVVA1X0V2LCBHUk9VUDFfT1BfQURELCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQogI2VuZGlmIC8vIENQVShYODZfNjQpCiAKICAgICB2b2lkIG5lZ2xf
cihSZWdpc3RlcklEIGRzdCkKQEAgLTcxNSw2ICs4NzcsMTYgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVH
LCBkc3QpOwogICAgIH0KKworICAgIHZvaWQgbmVncV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19F
diwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3Ff
bShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19Fdiwg
R1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRp
ZgogCiAgICAgdm9pZCBuZWdsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQpAQCAtNzIy
LDYgKzg5NCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDNfRXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9p
ZCBuZWdsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAz
X0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CisgICAgdm9pZCBuZWd3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWds
X20ob2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3dfbShpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVnbF9t
KG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2JfbShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOworICAg
IH0KKworICAgIHZvaWQgbmVnYl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKwogICAgIHZvaWQgbm90bF9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwg
ZHN0KTsKQEAgLTczMiw2ICs5MzEsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgbm90bF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKworICAgIHZvaWQgbm90d19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgbm90bF9tKG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3R3X20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIG5vdGxfbShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGJfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgbm90
cV9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTc0Miw2ICs5NjgsMTEgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9V
UDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgbm90cV9tKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNf
T1BfTk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAg
ICB2b2lkIG9ybF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC03NTQsMTEg
Kzk4NSw0MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9H
dkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBvcmxfbXIoaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2
RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQg
b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAg
ewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBvcmxfcm0oc3JjLCBvZmZz
ZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAg
ICAgb3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIG9ybF9pcihpbnQg
aW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CkBAIC03ODQsMTIgKzEwNDcsMTAxIEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAorICAgIHZvaWQgb3JsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENB
Tl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgb3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9V
UDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBvcndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0Vi
SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgb3JiX2ltKGludCBpbW0sIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1Bf
T1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBvcnFfcnIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQg
b3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
R1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIHZvaWQgb3JxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTgzMSwxMSArMTE4Myw0
MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwg
ZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYs
IGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3Vi
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9m
ZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgc3Vid19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBz
cmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1Ymxf
aXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzhfMzIoaW1tKSkgewpAQCAtODYxLDYgKzEyNDUsNTMgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgfQogCisgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAg
fQorCisgICAgdm9pZCBzdWJ3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1Yndf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9T
VUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1t
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQp
CiAgICAgdm9pZCBzdWJxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7
CkBAIC04NzIsMTEgKzEzMDMsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZv
aWQgc3VicV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCiAgICAgdm9pZCBzdWJxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CiAgICAgdm9pZCBzdWJxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTkwMSw2ICsxMzQyLDE3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICB2b2lkIHN1YnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9
CisgICAgfQogI2Vsc2UKICAgICB2b2lkIHN1YmxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRk
cikKICAgICB7CkBAIC05MjQsMTEgKzEzNzYsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfWE9SX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAK
KyAgICB2b2lkIHhvcmxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKICAgICB2b2lkIHhvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9y
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KwogICAgIHZvaWQgeG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTQw
LDYgKzE0MDIsNzUgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB4b3Js
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGlt
bSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwg
R1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3Jj
LCBvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcndf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9Y
T1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1t
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1hPUl9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAg
dm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCB4b3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAx
X09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX2lyKGludCBpbW0sIFJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGlt
bSkpIHsKQEAgLTk3NCwxMSArMTUwNSw0NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09Q
X1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICB2b2lkIHhvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorICAg
IAogICAgIHZvaWQgeG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2
R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcnFfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9S
X0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2LCBkZXN0
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYs
IGRlc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAg
IHZvaWQgbHpjbnRfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTU4Niwx
MSArMjE1MywzOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfWENIR19Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnYl9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgeGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4
Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9Y
Q0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAg
IHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3Ys
IHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogI2lmIENQVShYODZf
NjQpCiAgICAgdm9pZCB4Y2hncV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewpAQCAtMTYwNiw2ICsyMjAwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KKworICAgIHZvaWQgeGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgbW92bF9ycihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNzMxLDYgKzIzMzAsMjAgQEAgcHVibGljOgog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG1vdndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAxMV9Fdkl6LCBHUk9VUDExX01PViwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG1vdndfaW0oaW50
IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SXosIEdST1VQ
MTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZsX0VBWG0oY29uc3Qgdm9p
ZCogYWRkcikKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfT3ZF
QVgpOwpAQCAtMTgwMCw2ICsyNDEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMzIoaW1tKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdnFfaTMybShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMTFfRXZJeiwg
R1JPVVAxMV9NT1YsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICB9CisKICAgICB2b2lkIG1vdnFfaTY0cihpbnQ2
NF90IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9NT1ZfRUFYSXYsIGRzdCk7CkBAIC0yNzgxLDYgKzM0MDAsOTQgQEAgcHVibGlj
OgogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX0xPQ0spOwogICAgIH0KICAgICAKKyAg
ICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hH
Yiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgo
T1AyX0NNUFhDSEdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21w
eGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisjaWYgQ1BVKFg4Nl82
NCkgICAgCisgICAgdm9pZCBjbXB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQo
T1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBj
bXB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorI2VuZGlmIC8vIENQVShYODZfNjQpCisgICAgCisgICAgdm9pZCB4YWRkYl9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQUREYiwgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQs
IHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkbF9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hB
REQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworI2lmIENQVShY
ODZfNjQpICAgIAorICAgIHZvaWQgeGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFk
ZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0
ZU9wNjQoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorICAgIAogICAgIHZvaWQgbWZlbmNlKCkKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wKE9QMl8zQllURV9FU0NBUEVfQUUsIE9QM19N
RkVOQ0UpOwpAQCAtMzc1Nyw2ICs0NDY0LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0
ZXIucmVnaXN0ZXJNb2RSTShncm91cE9wLCBybSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lk
IHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBi
YXNlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlv
bkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRS
ZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBiYXNlKSwgcmVnLCAwLCBiYXNlKTsKKyAgICAg
ICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAg
ICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVy
Lm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKKyAgICAgICAg
eworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVm
ZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJl
ZykgfHwgcmVnUmVxdWlyZXNSZXgoaW5kZXgsIGJhc2UpLCByZWcsIGluZGV4LCBiYXNlKTsKKyAg
ICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3Jp
dGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICB9CisKICAgICAgICAgLy8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KICAgICAgICAgLy8gQW4g
aW1tZWRhaXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBv
cCBoYXMgYmVlbiBlbWl0dGVkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRv
bWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0
b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworQXRvbWljVmFsdWU6On5BdG9taWNWYWx1
ZSgpCit7Cit9CisKK3ZvaWQgQXRvbWljVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29t
bWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KGNvbW1hLCAid2lk
dGggPSAiLCBtX3dpZHRoKTsKKyAgICAKKyAgICBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoY29tbWEs
IG91dCk7Cit9CisKK1ZhbHVlKiBBdG9taWNWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbmV3IEF0b21pY1ZhbHVlKCp0aGlzKTsKK30KKworQXRvbWljVmFsdWU6OkF0b21p
Y1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBvcGVy
YW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVh
cFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5k
LCBvcGVyYW5kLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSwgb3Bl
cmFuZCwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7CisgICAgQVNTRVJUKGJlc3RU
eXBlKEdQLCBhY2Nlc3NXaWR0aCgpKSA9PSBhY2Nlc3NUeXBlKCkpOworICAgIAorICAgIHN3aXRj
aCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0
b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hn
U3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KK30KKworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9y
aWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUs
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFu
Z2UgZmVuY2VSYW5nZSkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIGtp
bmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRWYWx1ZS0+dHlw
ZSgpLCBvcmlnaW4sIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UsIGV4cGVjdGVkVmFsdWUsIG5l
d1ZhbHVlLCBwb2ludGVyKQorICAgICwgbV93aWR0aCh3aWR0aCkKK3sKKyAgICBBU1NFUlQoYmVz
dFR5cGUoR1AsIGFjY2Vzc1dpZHRoKCkpID09IGFjY2Vzc1R5cGUoKSk7CisKKyAgICBzd2l0Y2gg
KGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9t
aWNTdHJvbmdDQVM6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisK
KyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNBdG9taWNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0F0b21pY1ZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1
ZGUgIkIzV2lkdGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIEF0b21pY1ZhbHVlIDogcHVibGljIE1lbW9yeVZhbHVlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAg
IHJldHVybiBpc0F0b21pYyhraW5kLm9wY29kZSgpKTsKKyAgICB9CisgICAgCisgICAgfkF0b21p
Y1ZhbHVlKCk7CisgICAgCisgICAgVHlwZSBhY2Nlc3NUeXBlKCkgY29uc3QgeyByZXR1cm4gY2hp
bGQoMCktPnR5cGUoKTsgfQorICAgIAorICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV93aWR0aDsgfQorICAgIAorcHJvdGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29t
bWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICAKKyAgICBWYWx1
ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2luLCBX
aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAs
IEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdl
ID0gSGVhcFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2lu
LCBXaWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0
b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAg
ICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNC
YXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFz
aWNCbG9jay5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIEJs
b2NrSW5zZXJ0aW9uU2V0OwogY2xhc3MgSW5zZXJ0aW9uU2V0OwogY2xhc3MgUHJvY2VkdXJlOwog
Y2xhc3MgVmFsdWU7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0OwogCiBjbGFzcyBCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShC
YXNpY0Jsb2NrKTsKQEAgLTE1OCw2ICsxNTksNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBCbG9ja0luc2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgSW5zZXJ0aW9uU2V0OwogICAg
IGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBj
bGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgCiAgICAgLy8gSW5zdGFudGlhdGUg
dmlhIFByb2NlZHVyZS4KICAgICBCYXNpY0Jsb2NrKHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJl
cXVlbmN5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0lu
c2VydGlvblNldC5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwzNSArMzYsMTMg
QEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBCbG9ja0luc2VydGlvblNldDo6
QmxvY2tJbnNlcnRpb25TZXQoUHJvY2VkdXJlICZwcm9jKQotICAgIDogbV9wcm9jKHByb2MpCisg
ICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQocHJvYy5tX2Jsb2NrcykKKyAgICAsIG1fcHJv
Yyhwcm9jKQogewogfQogCiBCbG9ja0luc2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KCkg
eyB9CiAKLXZvaWQgQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydChCbG9ja0luc2VydGlvbiYmIGlu
c2VydGlvbikKLXsKLSAgICBtX2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7
Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQodW5zaWduZWQgaW5k
ZXgsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+
IGJsb2NrKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKLSAgICBCYXNpY0Js
b2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsKLSAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5k
ZXgsIFdURk1vdmUoYmxvY2spKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQmFzaWNCbG9j
ayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRv
dWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZy
ZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsK
LX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEFmdGVyKEJhc2ljQmxv
Y2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHJldHVybiBpbnNlcnQoYWZ0ZXIt
PmluZGV4KCkgKyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYWZ0ZXIt
PmZyZXF1ZW5jeSgpKTsKLX0KLQogQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6OnNwbGl0
Rm9yd2FyZCgKICAgICBCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQmIHZhbHVlSW5kZXgsIElu
c2VydGlvblNldCogaW5zZXJ0aW9uU2V0LCBkb3VibGUgZnJlcXVlbmN5KQogewpAQCAtMTAyLDMy
ICs4MCw2IEBAIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcncKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEJsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKCkKLXsK
LSAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIAotICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4gYW55
IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCi0gICAgLy8gcnVubmluZyBX
VEY6OmV4ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBh
bmQgd2Ugd2FudCBpdCB0byBiZQotICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBidWJibGUgc29ydC4K
LSAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkp
OwotCi0gICAgZXhlY3V0ZUluc2VydGlvbnMobV9wcm9jLm1fYmxvY2tzLCBtX2luc2VydGlvbnMp
OwotICAgIAotICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBUaGlzIGlzbid0IHN0cmlj
dGx5IG5lY2Vzc2FyeSBidXQgaXQncwotICAgIC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxvY2sg
bGlzdCBmcm9tIGdyb3dpbmcuCi0gICAgbV9wcm9jLm1fYmxvY2tzLnJlbW92ZUFsbE1hdGNoaW5n
KAotICAgICAgICBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+
IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuICFibG9ja1B0cjsKLSAgICAgICAgfSk7Ci0gICAg
Ci0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2Vz
LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Byb2MubV9ibG9ja3Muc2l6ZSgpOyAr
K2kpCi0gICAgICAgIG1fcHJvYy5tX2Jsb2Nrc1tpXS0+bV9pbmRleCA9IGk7Ci0gICAgCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8g
RU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5z
ZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxv
Y2tJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0lu
c2VydGlvblNldC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSA8d3RmL0lu
c2VydGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM1LDI2ICszNiwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgSW5zZXJ0aW9uU2V0OwogCi10
eXBlZGVmIFdURjo6SW5zZXJ0aW9uPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4gQmxvY2tJ
bnNlcnRpb247Cit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPjo6
QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CiAKLWNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0
IHsKK2NsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2VydGlv
blNldDxCYXNpY0Jsb2NrPiB7CiBwdWJsaWM6CiAgICAgQmxvY2tJbnNlcnRpb25TZXQoUHJvY2Vk
dXJlJik7CiAgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7CiAgICAgCi0gICAgdm9pZCBpbnNlcnQo
QmxvY2tJbnNlcnRpb24mJik7Ci0KLSAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQgYSBnaXZl
biBpbmRleC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBm
cmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRo
ZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5Ci0g
ICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZy
ZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxvY2suIFRoYXQncwotICAgIC8vIHVzdWFsbHkgd2hh
dCB5b3Ugd2FudC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVm
b3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJs
b2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRBZnRlcihC
YXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCiAgICAgLy8gQSBo
ZWxwZXIgdG8gc3BsaXQgYSBibG9jayB3aGVuIGZvcndhcmQgaXRlcmF0aW5nIG92ZXIgaXQuIEl0
IGNyZWF0ZXMgYSBuZXcgYmxvY2sgdG8gaG9sZAogICAgIC8vIGV2ZXJ5dGhpbmcgYmVmb3JlIHRo
ZSBpbnN0cnVjdGlvbiBhdCB2YWx1ZUluZGV4LiBUaGUgY3VycmVudCBibG9jayBpcyBsZWZ0IHdp
dGgKICAgICAvLyBldmVyeXRoaW5nIGF0IGFuZCBhZnRlciB2YWx1ZUluZGV4LiBJZiB0aGUgb3B0
aW9uYWwgSW5zZXJ0aW9uU2V0IGlzIHByb3ZpZGVkLCBpdCB3aWxsIGdldApAQCAtODAsMTIgKzY4
LDkgQEAgcHVibGljOgogICAgIEJhc2ljQmxvY2sqIHNwbGl0Rm9yd2FyZCgKICAgICAgICAgQmFz
aWNCbG9jayosIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqID0gbnVsbHB0ciwK
ICAgICAgICAgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotICAgIAotICAgIGJvb2wgZXhlY3V0
ZSgpOwogCiBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwotICAgIFZlY3RvcjxCbG9j
a0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAkocmV2aXNpb24g
MjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04Miw3ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJmZXJlcyhjb25z
dCBFZmZlY3RzJiAKICAgICAgICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQaW5uZWQob3RoZXIs
ICp0aGlzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQogICAgICAg
ICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8IHJlYWRzLm92ZXJs
YXBzKG90aGVyLndyaXRlcyk7CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRl
cykKKyAgICAgICAgfHwgKGZlbmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAogYm9vbCBFZmZlY3Rz
OjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTYsOCBA
QCBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAgICAgICAgICYmIHdy
aXRlc1Bpbm5lZCA9PSBvdGhlci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYgcmVhZHNQaW5uZWQg
PT0gb3RoZXIucmVhZHNQaW5uZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90aGVyLndyaXRlcwot
ICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYgcmVhZHMgPT0gb3Ro
ZXIucmVhZHMKKyAgICAgICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9CiAKIGJvb2wgRWZm
ZWN0czo6b3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTEyMCw2ICsx
MjIsOCBAQCB2b2lkIEVmZmVjdHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uCiAgICAgICAg
IG91dC5wcmludChjb21tYSwgIldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChyZWFkc1Bpbm5lZCkK
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAgICBpZiAoZmVuY2Up
CisgICAgICAgIG91dC5wcmludChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYgKHdyaXRlcykKICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAgICAgaWYgKHJlYWRz
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNpb24gMjEzNDI1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNzEsNiArNzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBib29sIHJlYWRzUGlubmVk
IHsgZmFsc2UgfTsKICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07CisgICAgCisgICAg
Ly8gTWVtb3J5IGZlbmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBlYWNoIG90aGVyIHJl
Z2FyZGxlc3Mgb2YgdGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisgICAgLy8gaWYgdGhl
IG9wZXJhdGlvbiBpcyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZlbmNlIHsgZmFsc2UgfTsK
IAogICAgIEhlYXBSYW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRzOwpAQCAtODksNiAr
OTMsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5n
ZTo6dG9wKCk7CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIHJl
c3VsdC53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcgKzEwOCw3IEBAIHN0cnVj
dCBFZmZlY3RzIHsKIAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8
fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhp
dHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQg
fHwgZmVuY2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHJlb3JkZXJpbmcgaW5z
dHJ1Y3Rpb25zIHdpdGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxkIGNoYW5nZSBwcm9n
cmFtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
RWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0cnVjdCBJbXB1cmVCbG9ja0RhdGEg
ewogCiAgICAgUmFuZ2VTZXQ8SGVhcFJhbmdlPiByZWFkczsgLy8gVGhpcyBvbmx5IGdldHMgdXNl
ZCBmb3IgZm9yd2FyZCBzdG9yZSBlbGltaW5hdGlvbi4KICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+
IHdyaXRlczsgLy8gVGhpcyBnZXRzIHVzZWQgZm9yIGJvdGggbG9hZCBhbmQgc3RvcmUgZWxpbWlu
YXRpb24uCisgICAgYm9vbCBmZW5jZTsKIAogICAgIE1lbW9yeVZhbHVlTWFwIHN0b3Jlc0F0SGVh
ZDsKICAgICBNZW1vcnlWYWx1ZU1hcCBtZW1vcnlWYWx1ZXNBdFRhaWw7CkBAIC0xNzQsMTIgKzE3
NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG1l
bW9yeSAmJiBtZW1vcnktPmlzU3RvcmUoKQogICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS5y
ZWFkcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCi0gICAgICAgICAgICAgICAgICAgICYmICFk
YXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpKQorICAgICAgICAgICAgICAgICAg
ICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQorICAgICAgICAgICAg
ICAgICAgICAmJiAoIWRhdGEuZmVuY2UgfHwgIW1lbW9yeS0+aGFzRmVuY2UoKSkpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGEuc3RvcmVzQXRIZWFkLmFkZChtZW1vcnkpOwogICAgICAgICAgICAg
ICAgIGRhdGEucmVhZHMuYWRkKGVmZmVjdHMucmVhZHMpOwogCiAgICAgICAgICAgICAgICAgaWYg
KEhlYXBSYW5nZSB3cml0ZXMgPSBlZmZlY3RzLndyaXRlcykKICAgICAgICAgICAgICAgICAgICAg
Y2xvYmJlcihkYXRhLCB3cml0ZXMpOworICAgICAgICAgICAgICAgIGRhdGEuZmVuY2UgfD0gZWZm
ZWN0cy5mZW5jZTsKIAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkpOwpAQCAtNDQ1LDggKzQ0
OCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgZGF0YUxvZygiQmFkIG1lbW9yeSB2YWx1ZTogIiwgZGVlcER1bXAobV9wcm9jLCBtX3ZhbHVl
KSwgIlxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzgsNiArNDc5LDkgQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVB
ZnRlckNsb2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXImIGZp
bHRlcikKICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFz
RmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIC8v
IFdlIGNhbiBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0
b3JlIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFueSBv
cGVyYXRpb24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxpa2Ug
aXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1p
bmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIApA
QCAtNjE0LDYgKzYxOCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIs
ICIuLi5cbiIpOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVl
PigpLT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoTWVtb3J5
VmFsdWUqIG1hdGNoID0gbV9kYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5kKHB0ciwgZmlsdGVy
KSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0
Myw3IEBACiAjaW5jbHVkZSAiQjNMb3dlclRvQWlyLmgiCiAjaW5jbHVkZSAiQjNNb3ZlQ29uc3Rh
bnRzLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKKyNpbmNsdWRlICJCM1B1cmVDU0UuaCIK
ICNpbmNsdWRlICJCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCIKICNpbmNsdWRlICJCM1JlZHVjZVN0
cmVuZ3RoLmgiCiAjaW5jbHVkZSAiQjNUaW1pbmdTY29wZS5oIgpAQCAtOTIsNiArOTMsNyBAQCB2
b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MDcKICAgICB9CiAKKyAgICAv
LyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgogICAgIGxvd2VyTWFjcm9zKHByb2Nl
ZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSAiUHVyZU5hTi5oIgorI2luY2x1ZGUgPHd0Zi9CdWJibGVT
b3J0Lmg+CisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeworCitjbGFzcyBJbnNlcnRpb25TZXQ7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJh
c2ljQmxvY2s+CitjbGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQgeworcHVibGljOgorICAg
IHR5cGVkZWYgV1RGOjpJbnNlcnRpb248c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBCbG9j
a0luc2VydGlvbjsKKyAgICAKKyAgICBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4mIGJsb2NrcykKKyAgICAgICAgOiBtX2Jsb2Nrcyhi
bG9ja3MpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2b2lkIGluc2VydChCbG9ja0luc2VydGlv
biYmIGluc2VydGlvbikKKyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoV1RGTW92
ZShpbnNlcnRpb24pKTsKKyAgICB9CisKKyAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQgYSBn
aXZlbiBpbmRleC4KKyAgICBCYXNpY0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJs
ZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+IGJsb2NrKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKKyAgICAg
ICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxvY2suZ2V0KCk7CisgICAgICAgIGluc2VydChCbG9j
a0luc2VydGlvbihpbmRleCwgV1RGTW92ZShibG9jaykpKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKKyAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9yZSB0aGUgZ2l2ZW4g
YmxvY2suIFVzdWFsbHkgeW91IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5jeQorICAgIC8vIGFy
Z3VtZW50LiBQYXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRoZSBmcmVxdWVuY3kg
b2YgdGhlICdiZWZvcmUnIGJsb2NrLiBUaGF0J3MKKyAgICAvLyB1c3VhbGx5IHdoYXQgeW91IHdh
bnQuCisgICAgQmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZG91
YmxlIGZyZXF1ZW5jeSA9IFBOYU4pCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGJlZm9y
ZS0+aW5kZXgoKSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGJlZm9yZS0+
ZnJlcXVlbmN5KCkpOworICAgIH0KKworICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYWZ0ZXIg
dGhlIGdpdmVuIGJsb2NrLgorICAgIEJhc2ljQmxvY2sqIGluc2VydEFmdGVyKEJhc2ljQmxvY2sq
IGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHJldHVybiBp
bnNlcnQoYWZ0ZXItPmluZGV4KCkgKyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVl
bmN5IDogYWZ0ZXItPmZyZXF1ZW5jeSgpKTsKKyAgICB9CisKKyAgICBib29sIGV4ZWN1dGUoKQor
ICAgIHsKKyAgICAgICAgaWYgKG1faW5zZXJ0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyBXZSBhbGxvdyBpbnNlcnRpb25zIHRv
IGJlIGdpdmVuIHRvIHVzIGluIGFueSBvcmRlci4gU28sIHdlIG5lZWQgdG8gc29ydCB0aGVtIGJl
Zm9yZQorICAgICAgICAvLyBydW5uaW5nIFdURjo6ZXhlY3V0ZUluc2VydGlvbnMuIFdlIHN0cm9u
Z2x5IHByZWZlciBhIHN0YWJsZSBzb3J0IGFuZCB3ZSB3YW50IGl0IHRvIGJlCisgICAgICAgIC8v
IGZhc3QsIHNvIHdlIHVzZSBidWJibGUgc29ydC4KKyAgICAgICAgYnViYmxlU29ydChtX2luc2Vy
dGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKKyAgICAgICAgCisgICAgICAgIGV4
ZWN1dGVJbnNlcnRpb25zKG1fYmxvY2tzLCBtX2luc2VydGlvbnMpOworICAgICAgICAKKyAgICAg
ICAgLy8gUHJ1bmUgb3V0IGVtcHR5IGVudHJpZXMuIFRoaXMgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNz
YXJ5IGJ1dCBpdCdzCisgICAgICAgIC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxvY2sgbGlzdCBm
cm9tIGdyb3dpbmcuCisgICAgICAgIG1fYmxvY2tzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAg
ICAgICAgWyZdIChzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRyKSAtPiBib29s
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIWJsb2NrUHRyOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIAorICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYmxvY2tzIGtub3cgdGhlaXIg
bmV3IGluZGljZXMuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrcy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fYmxvY2tzW2ldLT5tX2luZGV4ID0gaTsKKyAgICAg
ICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiYgbV9ibG9ja3M7CisgICAgVmVjdG9yPEJsb2Nr
SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNIZWFwUmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNIZWFwUmFuZ2UuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzSGVhcFJhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODgsNiArODgsMTMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAorICAgIEhl
YXBSYW5nZSBvcGVyYXRvcnwoY29uc3QgSGVhcFJhbmdlJiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBIZWFwUmFuZ2UoCisgICAgICAgICAgICBzdGQ6Om1pbihtX2JlZ2luLCBv
dGhlci5tX2JlZ2luKSwKKyAgICAgICAgICAgIHN0ZDo6bWF4KG1fZW5kLCBvdGhlci5tX2VuZCkp
OworICAgIH0KKyAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gbV9iZWdpbiAhPSBtX2VuZDsgfQogCiAgICAgdW5zaWduZWQgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBtX2JlZ2luOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRp
b25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2Vy
dGlvblNldC5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCwxMSBAQCBW
YWx1ZSogSW5zZXJ0aW9uU2V0OjppbnNlcnRCb3R0b20oc2l6ZV90CiAgICAgcmV0dXJuIGluc2Vy
dEJvdHRvbShpbmRleCwgbGlrZVZhbHVlLT5vcmlnaW4oKSwgbGlrZVZhbHVlLT50eXBlKCkpOwog
fQogCitWYWx1ZSogSW5zZXJ0aW9uU2V0OjppbnNlcnRDbG9uZShzaXplX3QgaW5kZXgsIFZhbHVl
KiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gaW5zZXJ0VmFsdWUoaW5kZXgsIG1fcHJvY2VkdXJlLmNs
b25lKHZhbHVlKSk7Cit9CisKIHZvaWQgSW5zZXJ0aW9uU2V0OjpleGVjdXRlKEJhc2ljQmxvY2sq
IGJsb2NrKQogewogICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0
aW9ucy5lbmQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25T
ZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25T
ZXQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5z
ZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKIAog
ICAgIFZhbHVlKiBpbnNlcnRCb3R0b20oc2l6ZV90IGluZGV4LCBPcmlnaW4sIFR5cGUpOwogICAg
IFZhbHVlKiBpbnNlcnRCb3R0b20oc2l6ZV90IGluZGV4LCBWYWx1ZSopOworICAgIAorICAgIFZh
bHVlKiBpbnNlcnRDbG9uZShzaXplX3QgaW5kZXgsIFZhbHVlKik7CiAKICAgICB2b2lkIGV4ZWN1
dGUoQmFzaWNCbG9jayopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMZWdh
bGl6ZU1lbW9yeU9mZnNldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDkgKzI4LDggQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNpbmNs
dWRlICJBaXJBcmcuaCIKICNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKLSNpbmNs
dWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMu
aCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgpAQCAtNDksMjAgKzQ4LDE4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICghaXNBUk02NCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotCisgICAgICAgIC8vIEZJWE1FOiBQZXJoYXBzIHRoaXMgc2hvdWxk
IGJlIG1vdmVkIHRvIGxvd2VyTWFjcm9zLCBhbmQgcXVpcmtzIG1vZGUgY2FuIGltcG9zZSB0aGUg
cmVxdWlyZW1lbnQKKyAgICAgICAgLy8gdGhhdCB0aGUgb2Zmc2V0IGlzIGxlZ2FsLiBCdXQgZm9y
IG5vdyB0aGlzIGlzIHNvcnQgb2YgT0sgYmVjYXVzZSB3ZSBydW4gcHVyZUNTRSAKKyAgICAgICAg
CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXgp
IHsKICAgICAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5VmFsdWUgPSBibG9jay0+YXQo
aW5kZXgpLT5hczxNZW1vcnlWYWx1ZT4oKTsKICAgICAgICAgICAgICAgICBpZiAoIW1lbW9yeVZh
bHVlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIGlu
dDMyX3Qgb2Zmc2V0ID0gbWVtb3J5VmFsdWUtPm9mZnNldCgpOwotICAgICAgICAgICAgICAgIFdp
ZHRoIHdpZHRoID0gbWVtb3J5VmFsdWUtPmFjY2Vzc1dpZHRoKCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFBaXI6OkFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgd2lkdGgpKSB7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCFtZW1vcnlWYWx1ZS0+aXNMZWdhbE9mZnNl
dChtZW1vcnlWYWx1ZS0+b2Zmc2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBi
YXNlID0gbWVtb3J5VmFsdWUtPmxhc3RDaGlsZCgpOwotICAgICAgICAgICAgICAgICAgICBWYWx1
ZSogb2Zmc2V0VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChpbmRleCwg
bWVtb3J5VmFsdWUtPm9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBvZmZzZXQpOworICAgICAgICAg
ICAgICAgICAgICBWYWx1ZSogb2Zmc2V0VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnRJbnRD
b25zdGFudChpbmRleCwgbWVtb3J5VmFsdWUtPm9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBtZW1v
cnlWYWx1ZS0+b2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcmVzb2x2ZWRB
ZGRyZXNzID0gbV9wcm9jLmFkZDxWYWx1ZT4oQWRkLCBtZW1vcnlWYWx1ZS0+b3JpZ2luKCksIGJh
c2UsIG9mZnNldFZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0VmFsdWUoaW5kZXgsIHJlc29sdmVkQWRkcmVzcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDE5ICsyOSwyMiBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAj
aW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRp
b25TZXQuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0Nhc2VDb2xs
ZWN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgorI2luY2x1ZGUg
IkIzRmVuY2VWYWx1ZS5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgotI2lu
Y2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3Bl
LmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMuaCIKICNpbmNsdWRlICJCM1N3aXRjaFZhbHVlLmgiCiAjaW5jbHVk
ZSAiQjNVcHNpbG9uVmFsdWUuaCIKKyNpbmNsdWRlICJCM1VzZUNvdW50cy5oIgogI2luY2x1ZGUg
IkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgpAQCAtNTgsMTEgKzYxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3By
b2MocHJvYykKICAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MpCiAgICAgICAgICwg
bV9pbnNlcnRpb25TZXQocHJvYykKKyAgICAgICAgLCBtX3VzZUNvdW50cyhwcm9jKQogICAgIHsK
ICAgICB9CiAKICAgICBib29sIHJ1bigpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9wcm9jLmhhc1F1aXJrcygpKTsKKyAgICAgICAgCiAgICAgICAgIGZvciAoQmFzaWNCbG9jayog
YmxvY2sgOiBtX3Byb2MpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAg
ICAgIHByb2Nlc3NDdXJyZW50QmxvY2soKTsKQEAgLTcyLDYgKzc4LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIG1fcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICAgICAgbV9wcm9j
LmludmFsaWRhdGVDRkcoKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBp
bmRpY2F0ZXMgdGhhdCB3ZSd2ZSAKKyAgICAgICAgbV9wcm9jLnNldEhhc1F1aXJrcyh0cnVlKTsK
KyAgICAgICAgCiAgICAgICAgIHJldHVybiBtX2NoYW5nZWQ7CiAgICAgfQogICAgIApAQCAtMTg1
LDcgKzE5NSwxMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYo
KSkgeworICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBsb2FkLWxvYWQgZmVuY2UuIFRo
aXMgY29kZWdlbnMgdG8gbm90aGluZyBvbiBYODYuIFdlIHVzZSBpdCB0byB0ZWxsIHRoZQorICAg
ICAgICAgICAgICAgICAgICAvLyBjb21waWxlciBub3QgdG8gYmxvY2sgbG9hZCBtb3Rpb24uCisg
ICAgICAgICAgICAgICAgICAgIEZlbmNlVmFsdWUqIGZlbmNlID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0PEZlbmNlVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAg
ZmVuY2UtPnJlYWQgPSBIZWFwUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgZmVuY2UtPndy
aXRlID0gSGVhcFJhbmdlOjp0b3AoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgIC8vIEtpbGwgdGhlIERlcGVuZCwgd2hpY2ggc2hvdWxkIHVubG9jayBhIGJ1bmNo
IG9mIGNvZGUgc2ltcGxpZmljYXRpb24uCisgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJl
cGxhY2VXaXRoQm90dG9tKG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4KTsKKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NB
UzogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRv
bWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGgg
d2lkdGggPSBhdG9taWMtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogZXhwZWN0
ZWRWYWx1ZSA9IGF0b21pYy0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgLy8gT24gQVJNLCB0aGUgbG9hZCBwYXJ0IG9mIHRoZSBDQVMgZG9lcyBhIGxvYWQgd2l0
aCB6ZXJvIGV4dGVuc2lvbi4gVGhlcmVmb3JlLCB3ZSBuZWVkCisgICAgICAgICAgICAgICAgLy8g
dG8gemVyby1leHRlbmQgdGhlIGlucHV0LgorICAgICAgICAgICAgICAgIFZhbHVlKiBtYXNrZWRF
eHBlY3RlZFZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbmRleCwgQml0QW5kLCBtX29yaWdpbiwgZXhwZWN0ZWRWYWx1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQobV9pbmRleCwg
ZXhwZWN0ZWRWYWx1ZSwgbWFzayh3aWR0aCkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBhdG9taWMtPmNoaWxkKDApID0gbWFza2VkRXhwZWN0ZWRWYWx1ZTsKKyAgICAgICAg
ICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRk
OgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgY2FzZSBBdG9t
aWNYY2hnT3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBj
YXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAg
ICAgICAgICAgICAvLyBPbiBYODYsIHRoZXNlIG1heSBhY3R1YWxseSByZXR1cm4gZ2FyYmFnZSBp
biB0aGUgaGlnaCBiaXRzLiBPbiBBUk02NCwgdGhlc2Ugc29ydGEKKyAgICAgICAgICAgICAgICAv
LyB6ZXJvLWV4dGVuZCB0aGVpciBoaWdoIGJpdHMsIGV4Y2VwdCB0aGF0IHRoZSBoaWdoIGJpdHMg
bWlnaHQgZ2V0IHBvbGx1dGVkIGJ5IGhpZ2gKKyAgICAgICAgICAgICAgICAvLyBiaXRzIGluIHRo
ZSBvcGVyYW5kLiAuIFNvLCBlaXRoZXIgd2F5LCB3ZSBuZWVkIHRvIHRocm93IGEgc2lnbi1leHRl
bmQgb24gdGhlc2UKKyAgICAgICAgICAgICAgICAvLyB0aGluZ3MuCisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KG1fdmFsdWUtPm9wY29kZSgpID09IEF0b21pY1hjaGdTdWIgJiYgbV91c2VDb3VudHMubnVtVXNl
cyhtX3ZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gT24geDg2LCB4Y2hnYWRk
IGlzIGJldHRlciB0aGFuIHhjaGdzdWIgaWYgaXQgaGFzIGFueSB1c2Vycy4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdmFsdWUtPnNldE9wY29kZVVuc2FmZWx5KEF0b21pY1hjaGdBZGQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCkgPSBtX2luc2VydGlvblNl
dC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIE5l
ZywgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBleGVtcHQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewor
ICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdTdWI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV4ZW1wdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlm
IChleGVtcHQpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21p
YyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgICAgIFdpZHRoIHdp
ZHRoID0gYXRvbWljLT5hY2Nlc3NXaWR0aCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1ZhbHVl
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgbV9p
bmRleCwgc2lnbkV4dGVuZE9wY29kZSh3aWR0aCksIG1fb3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnRDbG9uZShtX2luZGV4LCBhdG9taWMpKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5
KG5ld1ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgY2FzZSBMb2FkOFo6CisgICAgICAgICAgICBjYXNlIExvYWQxNlo6IHsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IG1fdmFsdWUtPmFz
PE1lbW9yeVZhbHVlPigpOworICAgICAgICAgICAgICAgIGlmICghbWVtb3J5LT5oYXNGZW5jZSgp
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAvLyBTdWItd2lkdGggbG9hZC1hY3Egb24gQVJNNjQgYWx3YXlzIHNpZ24gZXh0ZW5k
cy4KKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3TG9hZCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dENsb25lKG1faW5kZXgsIG1lbW9yeSk7CisgICAgICAgICAgICAgICAgbmV3TG9hZC0+c2V0T3Bj
b2RlVW5zYWZlbHkobWVtb3J5LT5vcGNvZGUoKSA9PSBMb2FkOFogPyBMb2FkOFMgOiBMb2FkMTZT
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3VmFsdWUgPSBt
X2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4
LCBCaXRBbmQsIG1fb3JpZ2luLCBuZXdMb2FkLAorICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnRJbnRDb25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5k
ZXgsIG1fb3JpZ2luLCBJbnQzMiwgbWFzayhtZW1vcnktPmFjY2Vzc1dpZHRoKCkpKSk7CiAKKyAg
ICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG5ld1ZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQ3MCw2ICs1OTIsNyBAQCBw
cml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwogICAgIEJsb2NrSW5zZXJ0aW9uU2V0IG1f
YmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OworICAg
IFVzZUNvdW50cyBtX3VzZUNvdW50czsKICAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOwogICAgIHVu
c2lnbmVkIG1faW5kZXg7CiAgICAgVmFsdWUqIG1fdmFsdWU7CkBAIC00NzcsMjEgKzYwMCwxMiBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9jaGFuZ2VkIHsgZmFsc2UgfTsKIH07CiAKLWJvb2wgbG93
ZXJNYWNyb3NJbXBsKFByb2NlZHVyZSYgcHJvYykKLXsKLSAgICBMb3dlck1hY3JvcyBsb3dlck1h
Y3Jvcyhwcm9jKTsKLSAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7Ci19Ci0KIH0gLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQogCiBib29sIGxvd2VyTWFjcm9zKFByb2NlZHVyZSYgcHJvYykKIHsK
LSAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvYywgImxvd2VyTWFjcm9zIik7Ci0gICAgYm9v
bCByZXN1bHQgPSBsb3dlck1hY3Jvc0ltcGwocHJvYyk7Ci0gICAgaWYgKHNob3VsZFZhbGlkYXRl
SVIoKSkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxvd2VyTWFjcm9zSW1wbChwcm9jKSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICBMb3dlck1hY3JvcyBsb3dlck1hY3Jvcyhwcm9jKTsKKyAg
ICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
MwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTU2LDE1ICsxNTYsMTQgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGNhc2UgUm90TDogewogICAgICAgICAgICAgICAgIC8vIEFSTTY0IGRvZXNuJ3QgaGF2ZSBh
IHJvdGF0ZSBsZWZ0LgogICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBOZWcs
IG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZSogcm90YXRlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2lu
ZGV4LCBSb3RSLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCksIG5ld1NoaWZ0
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHko
cm90YXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlmdCA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1
ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcm90YXRlID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBSb3RSLCBtX3ZhbHVlLT5vcmlnaW4oKSwg
bV92YWx1ZS0+Y2hpbGQoMCksIG5ld1NoaWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgbV92YWx1
ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTQg
QEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJBaXJCbG9ja0luc2VydGlvblNl
dC5oIgogI2luY2x1ZGUgIkFpckNDYWxsU3BlY2lhbC5oIgogI2luY2x1ZGUgIkFpckNvZGUuaCIK
ICNpbmNsdWRlICJBaXJJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5o
IgogI2luY2x1ZGUgIkFpclN0YWNrU2xvdC5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1
ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCbG9ja1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiQjNDQ2Fs
bFZhbHVlLmgiCkBAIC00MSw3ICs0Myw3IEBACiAjaW5jbHVkZSAiQjNDb21tdXRhdGl2aXR5Lmgi
CiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNGZW5jZVZhbHVlLmgiCi0j
aW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQjNQYXRjaHBvaW50U3BlY2lhbC5oIgogI2luY2x1ZGUgIkIzUGF0Y2hw
b2ludFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCkBAIC03Miw2ICs3NCwxNiBA
QCBuYW1lc3BhY2UgewogCiBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAorLy8gRklYTUU6
IFdlIHdvdWxkbid0IG5lZWQgdGhpcyBpZiBBaXIgc3VwcG9ydGVkIFdpZHRoIG1vZGlmaWVycyBp
biBBaXI6OktpbmQuCisvLyBPT1BTISEhIChuZWVkIGEgYnVnIFVSTCkKKyNkZWZpbmUgT1BDT0RF
X0ZPUl9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKKyAgICAod2lkdGgpID09IFdpZHRoOCA/IG9w
Y29kZSAjIyA4IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IG9wY29kZSAjIyAxNiA6IFwK
KyAgICAod2lkdGgpID09IFdpZHRoMzIgPyBvcGNvZGUgIyMgMzIgOiBcCisgICAgb3Bjb2RlICMj
IDY0KQorI2RlZmluZSBPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChvcGNvZGUsIHdpZHRoKSAo
IFwKKyAgICAod2lkdGgpID09IFdpZHRoNjQgPyBvcGNvZGUgIyMgNjQgOiBvcGNvZGUgIyMgMzIp
CisKIGNsYXNzIExvd2VyVG9BaXIgewogcHVibGljOgogICAgIExvd2VyVG9BaXIoUHJvY2VkdXJl
JiBwcm9jZWR1cmUpCkBAIC04Myw2ICs5NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9kb21p
bmF0b3JzKHByb2NlZHVyZS5kb21pbmF0b3JzKCkpCiAgICAgICAgICwgbV9wcm9jZWR1cmUocHJv
Y2VkdXJlKQogICAgICAgICAsIG1fY29kZShwcm9jZWR1cmUuY29kZSgpKQorICAgICAgICAsIG1f
YmxvY2tJbnNlcnRpb25TZXQobV9jb2RlKQorI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCisg
ICAgICAgICwgbV9lYXgoWDg2UmVnaXN0ZXJzOjplYXgpCisgICAgICAgICwgbV9lY3goWDg2UmVn
aXN0ZXJzOjplY3gpCisgICAgICAgICwgbV9lZHgoWDg2UmVnaXN0ZXJzOjplZHgpCisjZW5kaWYK
ICAgICB7CiAgICAgfQogCkBAIC0xMjQsMTQgKzE0MiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIC8v
IGhvaXN0ZWQgYWRkcmVzcyBleHByZXNzaW9uIGJlZm9yZSB3ZSBkdXBsaWNhdGUgaXQgYmFjayBp
bnRvIHRoZSBsb29wLgogICAgICAgICBmb3IgKEIzOjpCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJv
Y2VkdXJlLmJsb2Nrc0luUHJlT3JkZXIoKSkgewogICAgICAgICAgICAgbV9ibG9jayA9IGJsb2Nr
OwotICAgICAgICAgICAgLy8gUmVzZXQgc29tZSBzdGF0ZS4KLSAgICAgICAgICAgIG1faW5zdHMu
cmVzaXplKDApOwogCiAgICAgICAgICAgICBtX2lzUmFyZSA9ICFtX2Zhc3RXb3JrbGlzdC5zYXco
YmxvY2spOwogCiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJMb3dlcmluZyBCbG9jayAiLCAqYmxvY2ssICI6XG4iKTsKICAgICAgICAgICAgIAorICAg
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3Jy
ZWN0bHkuCisgICAgICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDog
YmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Js
b2NrXS0+c3VjY2Vzc29ycygpLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgQWlyOjpGcmVx
dWVudGVkQmxvY2sobV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNjZXNzb3Iu
ZnJlcXVlbmN5KCkpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gUHJvY2VzcyBi
bG9ja3MgaW4gcmV2ZXJzZSBvcmRlciBzbyB3ZSBzZWUgdXNlcyBiZWZvcmUgZGVmcy4gVGhhdCdz
IHdoYXQgYWxsb3dzIHVzCiAgICAgICAgICAgICAvLyB0byBtYXRjaCBwYXR0ZXJucyBlZmZlY3Rp
dmVseS4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGktLTsp
IHsKQEAgLTE0OSwxOSArMTcxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIE5vdyBhcHBlbmQgdGhlIGluc3RydWN0aW9ucy4g
bV9pbnN0cyBjb250YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIsIHNvIHdlIHByb2Nlc3MKLSAg
ICAgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2luc3RzLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgIGZvciAoSW5zdCYgaW5z
dCA6IG1faW5zdHNbaV0pCi0gICAgICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2Nr
XS0+YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3JyZWN0bHku
Ci0gICAgICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxvY2st
PnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+
c3VjY2Vzc29ycygpLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgQWlyOjpGcmVxdWVudGVk
QmxvY2sobV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNjZXNzb3IuZnJlcXVl
bmN5KCkpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmlzaEFwcGVuZGluZ0luc3Ry
dWN0aW9ucyhtX2Jsb2NrVG9CbG9ja1tibG9ja10pOwogICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBtX2Jsb2NrSW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKIAogICAgICAgICBBaXI6Okluc2Vy
dGlvblNldCBpbnNlcnRpb25TZXQobV9jb2RlKTsKICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDog
bV9wcm9sb2d1ZSkKQEAgLTQ0OCwxMiArNDYxLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gc2NhbGU7CiAgICAgfQotCisgICAg
CiAgICAgLy8gVGhpcyB0dXJucyB0aGUgZ2l2ZW4gb3BlcmFuZCBpbnRvIGFuIGFkZHJlc3MuCiAg
ICAgQXJnIGVmZmVjdGl2ZUFkZHIoVmFsdWUqIGFkZHJlc3MsIGludDMyX3Qgb2Zmc2V0LCBXaWR0
aCB3aWR0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZz
ZXQsIHdpZHRoKSk7Ci0KKyAgICAgICAgCiAgICAgICAgIGF1dG8gZmFsbGJhY2sgPSBbJl0gKCkg
LT4gQXJnIHsKICAgICAgICAgICAgIHJldHVybiBBcmc6OmFkZHIodG1wKGFkZHJlc3MpLCBvZmZz
ZXQpOwogICAgICAgICB9OwpAQCAtNTM1LDEyICs1NDgsMTUgQEAgcHJpdmF0ZToKICAgICAgICAg
TWVtb3J5VmFsdWUqIHZhbHVlID0gbWVtb3J5VmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOwogICAg
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOworICAgICAgICAKKyAg
ICAgICAgaWYgKHZhbHVlLT5yZXF1aXJlc1NpbXBsZUFkZHIoKSkKKyAgICAgICAgICAgIHJldHVy
biBBcmc6OnNpbXBsZUFkZHIodG1wKHZhbHVlLT5sYXN0Q2hpbGQoKSkpOwogCiAgICAgICAgIGlu
dDMyX3Qgb2Zmc2V0ID0gdmFsdWUtPm9mZnNldCgpOwogICAgICAgICBXaWR0aCB3aWR0aCA9IHZh
bHVlLT5hY2Nlc3NXaWR0aCgpOwogCiAgICAgICAgIEFyZyByZXN1bHQgPSBlZmZlY3RpdmVBZGRy
KHZhbHVlLT5sYXN0Q2hpbGQoKSwgb2Zmc2V0LCB3aWR0aCk7Ci0gICAgICAgIEFTU0VSVChyZXN1
bHQuaXNWYWxpZEZvcm0od2lkdGgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0Lmlz
VmFsaWRGb3JtKHdpZHRoKSk7CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC01
NjEsMTEgKzU3NywxOSBAQCBwcml2YXRlOgogICAgIAogICAgIEFyZ1Byb21pc2UgbG9hZFByb21p
c2VBbnlPcGNvZGUoVmFsdWUqIGxvYWRWYWx1ZSkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGxvYWRWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOwogICAgICAgICBpZiAoIWNhbkJlSW50
ZXJuYWwobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKICAgICAgICAgaWYg
KGNyb3NzZXNJbnRlcmZlcmVuY2UobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmco
KTsKLSAgICAgICAgQXJnUHJvbWlzZSByZXN1bHQoYWRkcihsb2FkVmFsdWUpLCBsb2FkVmFsdWUp
OworICAgICAgICAvLyBPbiB4ODYsIGFsbCBsb2FkcyBoYXZlIGZlbmNlcy4gRG9pbmcgdGhpcyBr
aW5kIG9mIGluc3RydWN0aW9uIHNlbGVjdGlvbiB3aWxsIG1vdmUgdGhlIGxvYWQsCisgICAgICAg
IC8vIGJ1dCB0aGF0J3MgZmluZSBiZWNhdXNlIG91ciBpbnRlcmZlcmVuY2UgYW5hbHlzaXMgc3Rv
cHMgdGhlIG1vdGlvbiBvZiBmZW5jZXMgYXJvdW5kIG90aGVyCisgICAgICAgIC8vIGZlbmNlcy4g
U28sIGFueSBsb2FkIG1vdGlvbiB3ZSBpbnRyb2R1Y2UgaGVyZSB3b3VsZCBub3QgYmUgb2JzZXJ2
YWJsZS4KKyAgICAgICAgaWYgKCFpc1g4NigpICYmIGxvYWRWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+
KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnKCk7CisgICAgICAgIEFyZyBs
b2FkQWRkciA9IGFkZHIobG9hZFZhbHVlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobG9hZEFk
ZHIpOworICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChsb2FkQWRkciwgbG9hZFZhbHVlKTsKICAg
ICAgICAgaWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkKICAgICAgICAgICAgIHJlc3VsdC5zZXRUcmFw
cyh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTczOCw3ICs3NjIsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQorICAgIAogICAgIHRlbXBsYXRl
PEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQWlyOjpPcGNvZGUg
b3Bjb2RlRG91YmxlLCBBaXI6Ok9wY29kZSBvcGNvZGVGbG9hdCwgQ29tbXV0YXRpdml0eSBjb21t
dXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmU+CiAgICAgdm9pZCBhcHBlbmRCaW5PcChWYWx1ZSog
bGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKQEAgLTg5NywxMSArOTIxLDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4
Nl82NCkKICAgICAgICAgYXBwZW5kKE1vdmUsIHRtcCh2YWx1ZSksIHRtcChtX3ZhbHVlKSk7Ci0g
ICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1vdW50KSwgVG1wKFg4NlJlZ2lzdGVyczo6ZWN4KSk7
Ci0gICAgICAgIGFwcGVuZChvcGNvZGUsIFRtcChYODZSZWdpc3RlcnM6OmVjeCksIHRtcChtX3Zh
bHVlKSk7Ci0jZW5kaWYKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChhbW91bnQpLCBtX2VjeCk7
CisgICAgICAgIGFwcGVuZChvcGNvZGUsIG1fZWN4LCB0bXAobV92YWx1ZSkpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2ND4K
QEAgLTkzMCwxMCArOTUyLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0g
Tm90Q29tbXV0YXRpdmU+CiAgICAgYm9vbCB0cnlBcHBlbmRTdG9yZUJpbk9wKFZhbHVlKiBsZWZ0
LCBWYWx1ZSogcmlnaHQpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhbHVlLT5h
czxNZW1vcnlWYWx1ZT4oKSk7CisgICAgICAgIAogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUg
PSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgbGVmdC0+dHlwZSgpKTsKICAg
ICAgICAgaWYgKG9wY29kZSA9PSBBaXI6Ok9vcHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIAorICAgICAgICAvLyBPbiB4ODYsIGFsbCBzdG9yZXMgaGF2ZSBmZW5jZXMsIGFu
ZCB0aGlzIGlzbid0IHJlb3JkZXJpbmcgdGhlIHN0b3JlIGl0c2VsZi4KKyAgICAgICAgaWYgKCFp
c1g4NigpICYmIG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICAgICAgQXJnIHN0b3JlQWRkciA9IGFk
ZHIobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVChzdG9yZUFkZHIpOwogCkBAIC05OTMsMTEgKzEw
MjEsNTAgQEAgcHJpdmF0ZToKIAogICAgICAgICByZXR1cm4gSW5zdChtb3ZlLCBtX3ZhbHVlLCB0
bXAodmFsdWUpLCBkZXN0KTsKICAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNv
ZGUoV2lkdGggd2lkdGgsIEJhbmsgYmFuaywgYm9vbCByZWxlYXNlKQorICAgIHsKKyAgICAgICAg
c3dpdGNoICh3aWR0aCkgeworICAgICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9y
ZVJlbDggOiBBaXI6OlN0b3JlODsKKyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/
IFN0b3JlUmVsMTYgOiBBaXI6OlN0b3JlMTY7CisgICAgICAgIGNhc2UgV2lkdGgzMjoKKyAgICAg
ICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMzIgOiBNb3ZlMzI7CisgICAgICAgICAgICBj
YXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGlzNjRCaXQoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNh
c2UgR1A6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDY0IDogTW92
ZTsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNv
ZGUoVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZh
bHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5LT5p
c1N0b3JlKCkpOworICAgICAgICByZXR1cm4gc3RvcmVPcGNvZGUobWVtb3J5LT5hY2Nlc3NXaWR0
aCgpLCBtZW1vcnktPmFjY2Vzc0JhbmsoKSwgbWVtb3J5LT5oYXNGZW5jZSgpKTsKKyAgICB9CiAK
ICAgICBJbnN0IGNyZWF0ZVN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQogICAg
IHsKLSAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IG1vdmVGb3JUeXBlKHZhbHVlLT50
eXBlKCkpOwotICAgICAgICByZXR1cm4gY3JlYXRlU3RvcmUobW92ZU9wY29kZSwgdmFsdWUsIGRl
c3QpOworICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gc3RvcmVPcGNvZGUodmFsdWUp
OworICAgICAgICByZXR1cm4gY3JlYXRlU3RvcmUobW92ZU9wY29kZSwgdmFsdWUtPmNoaWxkKDAp
LCBkZXN0KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgpAQCAtMTAw
NSw3ICsxMDcyLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0lu
c3QobV92YWx1ZSwgY3JlYXRlU3RvcmUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkpOwog
ICAgIH0KLQorICAgIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlwZSkKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTA3Miw3ICsxMTM5LDQxIEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoaW5zdCk7CiAgICAgfQor
ICAgIAorICAgIHZvaWQgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKEFpcjo6QmFzaWNCbG9j
ayogdGFyZ2V0KQorICAgIHsKKyAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25z
LiBtX2luc3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2Vzcwor
ICAgICAgICAvLyBpdCBpbiByZXZlcnNlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2lu
c3RzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0
c1tpXSkKKyAgICAgICAgICAgICAgICB0YXJnZXQtPmFwcGVuZEluc3QoV1RGTW92ZShpbnN0KSk7
CisgICAgICAgIH0KKyAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CisgICAgfQorICAgIAorICAg
IEFpcjo6QmFzaWNCbG9jayogbmV3QmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYmxv
Y2tJbnNlcnRpb25TZXQuaW5zZXJ0QWZ0ZXIobV9ibG9ja1RvQmxvY2tbbV9ibG9ja10pOworICAg
IH0KIAorICAgIC8vIE5PVEU6IFRoaXMgd2lsbCBjcmVhdGUgYSBjb250aW51YXRpb24gYmxvY2sg
KGBuZXh0QmxvY2tgKSAqYWZ0ZXIqIGFueSBibG9ja3MgeW91J3ZlIGNyZWF0ZWQgdXNpbmcKKyAg
ICAvLyBuZXdCbG9jaygpLiBTbywgaXQncyBwcmVmZXJhYmxlIHRvIGNyZWF0ZSBhbGwgb2YgeW91
ciBibG9ja3MgdXBmcm9udCB1c2luZyBuZXdCbG9jaygpLiBBbHNvIG5vdGUKKyAgICAvLyB0aGF0
IGFueSBjb2RlIHlvdSBlbWl0IGJlZm9yZSB0aGlzIHdpbGwgYmUgcHJlcGVuZGVkIHRvIHRoZSBj
b250aW51YXRpb24sIGFuZCBhbnkgY29kZSB5b3UgZW1pdAorICAgIC8vIGFmdGVyIHRoaXMgd2ls
bCBiZSBhcHBlbmRlZCB0byB0aGUgcHJldmlvdXMgYmxvY2suCisgICAgdm9pZCBzcGxpdEJsb2Nr
KEFpcjo6QmFzaWNCbG9jayomIHByZXZpb3VzQmxvY2ssIEFpcjo6QmFzaWNCbG9jayomIG5leHRC
bG9jaykKKyAgICB7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmxvY2sgPSBtX2Jsb2NrVG9C
bG9ja1ttX2Jsb2NrXTsKKyAgICAgICAgCisgICAgICAgIHByZXZpb3VzQmxvY2sgPSBibG9jazsK
KyAgICAgICAgbmV4dEJsb2NrID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlcihibG9j
ayk7CisgICAgICAgIAorICAgICAgICBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMobmV4dEJs
b2NrKTsKKyAgICAgICAgbmV4dEJsb2NrLT5zdWNjZXNzb3JzKCkgPSBibG9jay0+c3VjY2Vzc29y
cygpOworICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpLmNsZWFyKCk7CisgICAgICAgIAorICAg
ICAgICBtX2luc3RzLmFwcGVuZChWZWN0b3I8SW5zdD4oKSk7CisgICAgfQorICAgIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBUKiBlbnN1cmVT
cGVjaWFsKFQqJiBmaWVsZCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKQEAgLTEx
MjIsNyArMTIyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFZhbHVlUmVwOjpTdGFja0FyZ3VtZW50OgogICAgICAgICAgICAgICAgIGFyZyA9
IEFyZzo6Y2FsbEFyZyh2YWx1ZS5yZXAoKS5vZmZzZXRGcm9tU1AoKSk7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kU3RvcmUodmFsdWUudmFsdWUoKSwgYXJnKTsKKyAgICAgICAgICAgICAgICBhcHBl
bmRTdG9yZShtb3ZlRm9yVHlwZSh2YWx1ZS52YWx1ZSgpLT50eXBlKCkpLCB2YWx1ZS52YWx1ZSgp
LCBhcmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTk2MCw2ICsy
MDYxLDMxMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICB2
b2lkIGFwcGVuZFg4NkRpdihCMzo6T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgQWlyOjpPcGNv
ZGUgY29udmVydFRvRG91YmxlV29yZDsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2OworICAgICAg
ICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgeworICAgICAgICBjYXNlIEludDMyOgorICAgICAg
ICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMjsKKyAg
ICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgSW50NjQ6CisgICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRv
UXVhZFdvcmQ2NDsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRpdjY0OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJU
KG9wID09IERpdiB8fCBvcCA9PSBNb2QpOworICAgICAgICBUbXAgcmVzdWx0ID0gb3AgPT0gRGl2
ID8gbV9lYXggOiBtX2VkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNo
aWxkKDApKSwgbV9lYXgpOworICAgICAgICBhcHBlbmQoY29udmVydFRvRG91YmxlV29yZCwgbV9l
YXgsIG1fZWR4KTsKKyAgICAgICAgYXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4LCB0bXAobV92YWx1
ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwgdG1wKG1fdmFsdWUp
KTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7
CisgICAgICAgIEFpcjo6T3Bjb2RlIGRpdiA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IFg4
NlVEaXYzMiA6IFg4NlVEaXY2NDsKKworICAgICAgICBBU1NFUlQob3AgPT0gVURpdiB8fCBvcCA9
PSBVTW9kKTsKKyAgICAgICAgVG1wIHJlc3VsdCA9IG9wID09IFVEaXYgPyBtX2VheCA6IG1fZWR4
OworCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBtX2VheCk7
CisgICAgICAgIGFwcGVuZChYb3I2NCwgbV9lZHgsIG1fZWR4KTsKKyAgICAgICAgYXBwZW5kKGRp
diwgbV9lYXgsIG1fZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5k
KE1vdmUsIHJlc3VsdCwgdG1wKG1fdmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNv
ZGUgbG9hZExpbmtPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVuY2UpCisgICAgeworICAgICAg
ICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKExvYWRMaW5rQWNxLCB3aWR0aCkgOiBP
UENPREVfRk9SX1dJRFRIKExvYWRMaW5rLCB3aWR0aCk7CisgICAgfQorICAgIAorICAgIEFpcjo6
T3Bjb2RlIHN0b3JlQ29uZE9wY29kZShXaWR0aCB3aWR0aCwgYm9vbCBmZW5jZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmZW5jZSA/IE9QQ09ERV9GT1JfV0lEVEgoU3RvcmVDb25kUmVsLCB3aWR0
aCkgOiBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZCwgd2lkdGgpOworICAgIH0KKyAgICAKKyAg
ICAvLyBUaGlzIGNhbiBlbWl0IGNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcGF0dGVybnM6CisgICAg
Ly8gQXRvbWljV2Vha0NBUworICAgIC8vIEJpdFhvcihBdG9taWNXZWFrQ0FTLCAxKQorICAgIC8v
IEF0b21pY1N0cm9uZ0NBUworICAgIC8vIEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQp
CisgICAgLy8gTm90RXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkKKyAgICAvLyBCcmFu
Y2goQXRvbWljV2Vha0NBUykKKyAgICAvLyBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBl
eHBlY3RlZCkpCisgICAgLy8gQnJhbmNoKE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0
ZWQpKQorICAgIC8vCisgICAgLy8gSXQgYXNzdW1lcyB0aGF0IGF0b21pY1ZhbHVlIHBvaW50cyB0
byB0aGUgQ0FTLCBhbmQgbV92YWx1ZSBwb2ludHMgdG8gdGhlIGluc3RydWN0aW9uIGJlaW5nCisg
ICAgLy8gZ2VuZXJhdGVkLiBJdCBhc3N1bWVzIHRoYXQgeW91J3ZlIGNvbnN1bWVkIGV2ZXJ5dGhp
bmcgdGhhdCBuZWVkcyB0byBiZSBjb25zdW1lZC4KKyAgICB2b2lkIGFwcGVuZENBUyhWYWx1ZSog
YXRvbWljVmFsdWUsIGJvb2wgaW52ZXJ0KQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0
b21pYyA9IGF0b21pY1ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoYXRvbWljKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCcmFuY2ggPSBtX3ZhbHVl
LT5vcGNvZGUoKSA9PSBCcmFuY2g7CisgICAgICAgIGJvb2wgaXNTdHJvbmcgPSBhdG9taWMtPm9w
Y29kZSgpID09IEF0b21pY1N0cm9uZ0NBUzsKKyAgICAgICAgYm9vbCByZXR1cm5zT2xkVmFsdWUg
PSBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wgaGFz
RmVuY2UgPSBhdG9taWMtPmhhc0ZlbmNlKCk7CisgICAgICAgIAorICAgICAgICBXaWR0aCB3aWR0
aCA9IGF0b21pYy0+YWNjZXNzV2lkdGgoKTsKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0
b21pYyk7CisKKyAgICAgICAgVG1wIHZhbHVlUmVzdWx0VG1wOworICAgICAgICBUbXAgYm9vbFJl
c3VsdFRtcDsKKyAgICAgICAgaWYgKHJldHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWludmVydCk7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IHRtcCht
X3ZhbHVlKTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsK
KyAgICAgICAgfSBlbHNlIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgdmFsdWVSZXN1bHRU
bXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2Nv
ZGUubmV3VG1wKEdQKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0
VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gdG1w
KG1fdmFsdWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBUbXAgc3VjY2Vzc0Jvb2xS
ZXN1bHRUbXA7CisgICAgICAgIGlmIChpc1N0cm9uZyAmJiAhaXNCcmFuY2gpCisgICAgICAgICAg
ICBzdWNjZXNzQm9vbFJlc3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBzdWNjZXNzQm9vbFJlc3VsdFRtcCA9IGJvb2xSZXN1bHRUbXA7CisKKyAg
ICAgICAgVG1wIGV4cGVjdGVkVmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGlsZCgwKSk7CisgICAg
ICAgIFRtcCBuZXdWYWx1ZVRtcCA9IHRtcChhdG9taWMtPmNoaWxkKDEpKTsKKyAgICAgICAgCisg
ICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3M7CisgICAgICAgIEFpcjo6RnJlcXVl
bnRlZEJsb2NrIGZhaWx1cmU7CisgICAgICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAg
c3VjY2VzcyA9IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoaW52ZXJ0KTsKKyAg
ICAgICAgICAgIGZhaWx1cmUgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29yKCFp
bnZlcnQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNYODYoKSkgeworICAg
ICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPmFjY2Vzc1R5cGUoKSks
IGltbU9yVG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgICAgICBpZiAocmV0
dXJuc09sZFZhbHVlKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgo
QXRvbWljU3Ryb25nQ0FTLCB3aWR0aCksIG1fZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPmFjY2Vzc1R5
cGUoKSksIG1fZWF4LCB2YWx1ZVJlc3VsdFRtcCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlz
QnJhbmNoKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNo
QXRvbWljU3Ryb25nQ0FTLCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6
U3VjY2VzcyksIG1fZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAg
bV9ibG9ja1RvQmxvY2tbbV9ibG9ja10tPnNldFN1Y2Nlc3NvcnMoc3VjY2VzcywgZmFpbHVyZSk7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9X
SURUSChBdG9taWNTdHJvbmdDQVMsIHdpZHRoKSwgQXJnOjpzdGF0dXNDb25kKGludmVydCA/IE1h
Y3JvQXNzZW1ibGVyOjpGYWlsdXJlIDogTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwg
dG1wKGF0b21pYy0+Y2hpbGQoMSkpLCBhZGRyZXNzLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNBUk02NCgpKTsKKyAgICAgICAgLy8gV2Ugd2lzaCB0byBlbWl0OgorICAgICAgICAvLworICAg
ICAgICAvLyBCbG9jayAjcmVsb29wOgorICAgICAgICAvLyAgICAgTG9hZExpbmsKKyAgICAgICAg
Ly8gICAgIEJyYW5jaCBOb3RFcXVhbAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRoZW46I2Zh
aWwsIEVsc2U6ICNzdG9yZQorICAgICAgICAvLyBCbG9jayAjc3RvcmU6CisgICAgICAgIC8vICAg
ICBTdG9yZUNvbmQKKyAgICAgICAgLy8gICAgIFhvciAkMSwgJXJlc3VsdCAgICA8LS0tIG9ubHkg
aWYgIWludmVydAorICAgICAgICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6
ICNkb25lCisgICAgICAgIC8vIEJsb2NrICNmYWlsOgorICAgICAgICAvLyAgICAgTW92ZSAkaW52
ZXJ0LCAlcmVzdWx0CisgICAgICAgIC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29y
czogI2RvbmUKKyAgICAgICAgLy8gQmxvY2sgI2RvbmU6CisgICAgICAgIAorICAgICAgICBBaXI6
OkJhc2ljQmxvY2sqIHJlbG9vcEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNp
Y0Jsb2NrKiBzdG9yZUJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2Nr
KiBzdWNjZXNzQmxvY2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoICYmIGlzU3Ry
b25nKQorICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWly
OjpCYXNpY0Jsb2NrKiBmYWlsQmxvY2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNo
KSB7CisgICAgICAgICAgICBmYWlsQmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICAgICAgZmFp
bHVyZSA9IGZhaWxCbG9jazsKKyAgICAgICAgfQorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0
cm9uZ0ZhaWxCbG9jazsKKyAgICAgICAgaWYgKGlzU3Ryb25nICYmIGhhc0ZlbmNlKQorICAgICAg
ICAgICAgc3Ryb25nRmFpbEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpGcmVxdWVu
dGVkQmxvY2sgY29tcGFyaXNvbkZhaWwgPSBmYWlsdXJlOworICAgICAgICBBaXI6OkZyZXF1ZW50
ZWRCbG9jayB3ZWFrRmFpbDsKKyAgICAgICAgaWYgKGlzU3Ryb25nKSB7CisgICAgICAgICAgICBp
ZiAoaGFzRmVuY2UpCisgICAgICAgICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBzdHJvbmdGYWls
QmxvY2s7CisgICAgICAgICAgICB3ZWFrRmFpbCA9IHJlbG9vcEJsb2NrOworICAgICAgICB9IGVs
c2UgCisgICAgICAgICAgICB3ZWFrRmFpbCA9IGZhaWx1cmU7CisgICAgICAgIEFpcjo6QmFzaWNC
bG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBkb25lQmxvY2s7Cisg
ICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9uZUJsb2NrKTsKKyAgICAgICAgCisgICAg
ICAgIGFwcGVuZChBaXI6Okp1bXApOworICAgICAgICBiZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3Jz
KHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQobG9h
ZExpbmtPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIGFkZHJlc3Ms
IHZhbHVlUmVzdWx0VG1wKTsKKyAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChPUENPREVfRk9S
X0NBTk9OSUNBTF9XSURUSChCcmFuY2gsIHdpZHRoKSwgbV92YWx1ZSwgQXJnOjpyZWxDb25kKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCksIHZhbHVlUmVzdWx0VG1wLCBleHBlY3RlZFZhbHVlVG1w
KTsKKyAgICAgICAgcmVsb29wQmxvY2stPnNldFN1Y2Nlc3NvcnMoY29tcGFyaXNvbkZhaWwsIHN0
b3JlQmxvY2spOworICAgICAgICAKKyAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKHN0b3JlQ29u
ZE9wY29kZSh3aWR0aCwgYXRvbWljLT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgbmV3VmFsdWVUbXAs
IGFkZHJlc3MsIHN1Y2Nlc3NCb29sUmVzdWx0VG1wKTsKKyAgICAgICAgaWYgKGlzQnJhbmNoKSB7
CisgICAgICAgICAgICBzdG9yZUJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBB
cmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVzdWx0VG1wLCBib29sUmVz
dWx0VG1wKTsKKyAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMoc3VjY2Vzcywg
d2Vha0ZhaWwpOworICAgICAgICAgICAgZG9uZUJsb2NrLT5zdWNjZXNzb3JzKCkuY2xlYXIoKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkb25lQmxvY2stPnNpemUoKSk7CisgICAgICAg
ICAgICBkb25lQmxvY2stPmFwcGVuZChBaXI6Ok9vcHMsIG1fdmFsdWUpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaWYgKGlzU3Ryb25nKSB7CisgICAgICAgICAgICAgICAgc3RvcmVC
bG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvKSwgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAsIHN1Y2Nlc3NCb29sUmVzdWx0VG1w
KTsKKyAgICAgICAgICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3NCbG9j
aywgcmVsb29wQmxvY2spOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN1Y2Nl
c3NCbG9jay0+YXBwZW5kKE1vdmUsIG1fdmFsdWUsIEFyZzo6aW1tKCFpbnZlcnQpLCBib29sUmVz
dWx0VG1wKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChBaXI6Okp1bXAs
IG1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+c2V0U3VjY2Vzc29ycyhk
b25lQmxvY2spOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlu
dmVydCkKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKFhvcjMyLCBtX3Zh
bHVlLCBBcmc6OmJpdEltbSgxKSwgYm9vbFJlc3VsdFRtcCwgYm9vbFJlc3VsdFRtcCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEFpcjo6SnVt
cCwgbV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhk
b25lQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmYWls
QmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6OmltbShpbnZlcnQpLCBib29sUmVzdWx0
VG1wKTsKKyAgICAgICAgICAgIGZhaWxCbG9jay0+YXBwZW5kKEFpcjo6SnVtcCwgbV92YWx1ZSk7
CisgICAgICAgICAgICBmYWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzU3Ryb25nICYmIGhhc0ZlbmNlKSB7CisgICAg
ICAgICAgICBUbXAgdG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBzdHJvbmdG
YWlsQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2Uo
KSksIG1fdmFsdWUsIHZhbHVlUmVzdWx0VG1wLCBhZGRyZXNzLCB0bXApOworICAgICAgICAgICAg
c3Ryb25nRmFpbEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0Nv
bmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCB0bXAsIHRtcCk7CisgICAgICAgICAgICBzdHJvbmdG
YWlsQmxvY2stPnNldFN1Y2Nlc3NvcnMoZmFpbHVyZSwgcmVsb29wQmxvY2spOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIGJvb2wgYXBwZW5kVm9pZEF0b21pYyhBaXI6Ok9wY29kZSBhdG9t
aWNPcGNvZGUpCisgICAgeworICAgICAgICBpZiAobV91c2VDb3VudHMubnVtVXNlcyhtX3ZhbHVl
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIEFyZyBhZGRy
ZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc1ZhbGlkRm9ybShh
dG9taWNPcGNvZGUsIEFyZzo6SW1tLCBhZGRyZXNzLmtpbmQoKSkgJiYgaW1tKG1fdmFsdWUtPmNo
aWxkKDApKSkgeworICAgICAgICAgICAgYXBwZW5kKGF0b21pY09wY29kZSwgaW1tKG1fdmFsdWUt
PmNoaWxkKDApKSwgYWRkcmVzcyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgaWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwgQXJnOjpU
bXAsIGFkZHJlc3Mua2luZCgpKSkgeworICAgICAgICAgICAgYXBwZW5kKGF0b21pY09wY29kZSwg
dG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGFwcGVuZEdlbmVyYWxBdG9taWMoQWlyOjpPcGNvZGUgb3Bjb2RlLCBDb21t
dXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZSkKKyAgICB7CisgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAg
ICAgCisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgVG1wIG9s
ZFZhbHVlID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIFRtcCBuZXdWYWx1ZSA9IG9wY29k
ZSA9PSBBaXI6Ok5vcCA/IHRtcChhdG9taWMtPmNoaWxkKDApKSA6IG1fY29kZS5uZXdUbXAoR1Ap
OworICAgICAgICAKKyAgICAgICAgLy8gV2UgbmVlZCBhIENBUyBsb29wIG9yIGEgTEwvU0MgbG9v
cC4gVXNpbmcgcHJlcGFyZS9hdHRlbXB0IGphcmdvbiwgd2Ugd2FudDoKKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIFByZXBhcmUKKyAgICAgICAg
Ly8gICAgIG9wY29kZQorICAgICAgICAvLyAgICAgQXR0ZW1wdAorICAgICAgICAvLyAgIFN1Y2Nl
c3NvcnM6IFRoZW46I2RvbmUsIEVsc2U6I3JlbG9vcAorICAgICAgICAvLyBCbG9jayAjZG9uZToK
KyAgICAgICAgLy8gICAgIE1vdmUgb2xkVmFsdWUsIHJlc3VsdAorICAgICAgICAKKyAgICAgICAg
YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG9sZFZhbHVlLCB0bXAo
YXRvbWljKSk7CisgICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9vcEJsb2Nr
ID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOworICAg
ICAgICBBaXI6OkJhc2ljQmxvY2sqIGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhiZWdp
bkJsb2NrLCBkb25lQmxvY2spOworICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFpcjo6SnVtcCk7
CisgICAgICAgIGJlZ2luQmxvY2stPnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAg
ICAKKyAgICAgICAgQWlyOjpPcGNvZGUgcHJlcGFyZU9wY29kZTsKKyAgICAgICAgaWYgKGlzWDg2
KCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSB7CisgICAg
ICAgICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9h
ZDhTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkMTZTaWdu
ZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBX
aWR0aDMyOgorICAgICAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlMzI7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICAg
ICAgcHJlcGFyZU9wY29kZSA9IE1vdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FS
TTY0KCkpOworICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IGxvYWRMaW5rT3Bjb2RlKGF0b21p
Yy0+YWNjZXNzV2lkdGgoKSwgYXRvbWljLT5oYXNGZW5jZSgpKTsKKyAgICAgICAgfQorICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKHByZXBhcmVPcGNvZGUsIG1fdmFsdWUsIGFkZHJlc3MsIG9s
ZFZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChvcGNvZGUgIT0gQWlyOjpOb3ApIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBldmVyIGhhdmUgdG8gd3JpdGUgdGhpcyBhZ2Fpbiwg
d2UgbmVlZCB0byBmaW5kIGEgd2F5IHRvIHNoYXJlIHRoZSBjb2RlIHdpdGgKKyAgICAgICAgICAg
IC8vIGFwcGVuZEJpbk9wLgorICAgICAgICAgICAgaWYgKGNvbW11dGF0aXZpdHkgPT0gQ29tbXV0
YXRpdmUgJiYgaW1tKGF0b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJn
OjpJbW0sIEFyZzo6VG1wLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2st
PmFwcGVuZChvcGNvZGUsIG1fdmFsdWUsIGltbShhdG9taWMtPmNoaWxkKDApKSwgb2xkVmFsdWUs
IG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGltbShhdG9taWMtPmNoaWxkKDApKSAm
JiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpUbXApKQorICAg
ICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBvbGRWYWx1
ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlm
IChjb21tdXRhdGl2aXR5ID09IENvbW11dGF0aXZlICYmIGJpdEltbShhdG9taWMtPmNoaWxkKDAp
KSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6Qml0SW1tLCBBcmc6OlRtcCwgQXJnOjpUbXAp
KQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBi
aXRJbW0oYXRvbWljLT5jaGlsZCgwKSksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAg
ICBlbHNlIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpU
bXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVl
LCBvbGRWYWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3Zl
Rm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG1fdmFsdWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShv
cGNvZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgICAgIHJlbG9vcEJs
b2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG5ld1Zh
bHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlbG9vcEJs
b2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIG5ld1Zh
bHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1g4NigpKSB7
CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBjYXNPcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEJy
YW5jaEF0b21pY1N0cm9uZ0NBUywgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKTsKKyAgICAgICAgICAg
IHJlbG9vcEJsb2NrLT5hcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwg
bV92YWx1ZSwgb2xkVmFsdWUsIG1fZWF4KTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBl
bmQoY2FzT3Bjb2RlLCBtX3ZhbHVlLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN1
Y2Nlc3MpLCBtX2VheCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAgICAgICAgIFRtcCBib29s
UmVzdWx0ID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBw
ZW5kKHN0b3JlQ29uZE9wY29kZShhdG9taWMtPmFjY2Vzc1dpZHRoKCksIGF0b21pYy0+aGFzRmVu
Y2UoKSksIG1fdmFsdWUsIG5ld1ZhbHVlLCBhZGRyZXNzLCBib29sUmVzdWx0KTsKKyAgICAgICAg
ICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0Nv
bmQoTWFjcm9Bc3NlbWJsZXI6Olplcm8pLCBib29sUmVzdWx0LCBib29sUmVzdWx0KTsKKyAgICAg
ICAgfQorICAgICAgICByZWxvb3BCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2ssIHJlbG9v
cEJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBsb3dlcigpCiAgICAgewogICAgICAgICBz
d2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CkBAIC0xOTcwLDMwICsyMzc4LDUwIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ6IHsKLSAgICAg
ICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgbW92ZUZvclR5cGUobV92YWx1ZS0+
dHlwZSgpKSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAg
ICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7Cisg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBBaXI6Ok9vcHM7CisgICAgICAgICAgICBp
ZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChtZW1vcnkt
PnR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICAgICAg
ICAgIG9wY29kZSA9IExvYWRBY3EzMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9h
ZEFjcTY0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBvcGNvZGUgPSBtb3ZlRm9yVHlwZShtZW1vcnktPnR5
cGUoKSk7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwg
bV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ4UzogewotICAg
ICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOFNpZ25lZEV4dGVuZFRv
MzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAg
QWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNl
KCkgPyBMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7Cisg
ICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwg
YWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIExvYWQ4WjogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBw
aW5nSW5zdChtX3ZhbHVlLCBMb2FkOCwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFs
dWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4IDogTG9hZDg7CisgICAgICAgICAgICBh
cHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVl
KSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIExvYWQxNlM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92
YWx1ZSwgTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1w
KG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5h
czxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIg
OiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5z
dChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZa
OiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNiwgbV92
YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9w
Y29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExv
YWRBY3ExNiA6IExvYWQxNjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1
ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotCisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBB
ZGQ6IHsKICAgICAgICAgICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yMDkxLDcgKzI1MTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1f
dmFsdWUtPmlzQ2hpbGwoKSkKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0
KCkpOwogICAgICAgICAgICAgaWYgKGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkg
ewotICAgICAgICAgICAgICAgIGxvd2VyWDg2RGl2KERpdik7CisgICAgICAgICAgICAgICAgYXBw
ZW5kWDg2RGl2KERpdik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgQVNTRVJUKCFpc1g4NigpIHx8IGlzRmxvYXQobV92YWx1ZS0+dHlwZSgpKSk7
CkBAIC0yMTAyLDcgKzI1MzAsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgVURpdjogewog
ICAgICAgICAgICAgaWYgKGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAg
ICAgICAgICAgICAgIGxvd2VyWDg2VURpdihVRGl2KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRY
ODZVRGl2KFVEaXYpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApA
QCAtMjExNiwxMyArMjU0NCwxMyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE1vZDogewogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghbV92YWx1ZS0+aXNDaGlsbCgpKTsKLSAgICAgICAgICAgIGxvd2VyWDg2RGl2KE1vZCk7
CisgICAgICAgICAgICBhcHBlbmRYODZEaXYoTW9kKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2UgVU1vZDogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNYODYoKSk7Ci0gICAgICAgICAgICBsb3dlclg4NlVEaXYoVU1vZCk7CisgICAgICAgICAg
ICBhcHBlbmRYODZVRGl2KFVNb2QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTIxNjEsMTAgKzI1ODksMjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBhcHBlbmRV
bk9wPE5vdDMyLCBOb3Q2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVGhpcyBw
YXR0ZXJuIGlzIHN1cGVyIHVzZWZ1bCBvbiBib3RoIHg4NiBhbmQgQVJNNjQsIHNpbmNlIHRoZSBp
bnZlcnNpb24gb2YgdGhlIENBUyByZXN1bHQKKyAgICAgICAgICAgIC8vIGNhbiBiZSBkb25lIHdp
dGggemVybyBjb3N0IG9uIHg4NiAoanVzdCBmbGlwIHRoZSBzZXQgZnJvbSBFIHRvIE5FKSBhbmQg
aXQncyBhIHByb2dyZXNzaW9uCisgICAgICAgICAgICAvLyBvbiBBUk02NCAoc2luY2UgU1RYIHJl
dHVybnMgMCBvbiBzdWNjZXNzLCBzbyBvcmRpbmFyaWx5IHdlIGhhdmUgdG8gZmxpcCBpdCkuCisg
ICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDEpCisgICAgICAgICAgICAg
ICAgJiYgaXNBdG9taWNDQVMobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQorICAgICAgICAg
ICAgICAgICYmIGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAg
ICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAg
IGFwcGVuZENBUyhtX3ZhbHVlLT5jaGlsZCgwKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBhcHBlbmRCaW5P
cDxYb3IzMiwgWG9yNjQsIFhvckRvdWJsZSwgWG9yRmxvYXQsIENvbW11dGF0aXZlPigKICAgICAg
ICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEZXBl
bmQ6IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAg
ICBhcHBlbmRVbk9wPERlcGVuZDMyLCBEZXBlbmQ2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTaGw6IHsKICAgICAg
ICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQzMigxKSkgewpAQCAtMjI2NSw3ICsy
NzExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGFwcGVuZFN0b3JlKHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAg
ICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMjg2LDcgKzI3MzIsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQotICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTgsIHZhbHVlVG9TdG9yZSwgYWRk
cihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFs
dWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMzA3LDcgKzI3NTMs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTE2
LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUo
bV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IApAQCAtMjQxNSw3ICsyODYxLDIyIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIEVxdWFsOgotICAgICAgICBjYXNlIE5vdEVxdWFsOgorICAgICAgICBjYXNlIE5vdEVxdWFs
OiB7CisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21p
Y1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgw
KSA9PSBtX3ZhbHVlLT5jaGlsZCgxKQorICAgICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwo
bV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5j
b250YWlucyhtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkp
OworICAgICAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+
b3Bjb2RlKCkgPT0gTm90RXF1YWwpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVu
ZChjcmVhdGVDb21wYXJlKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTGVzc1RoYW46CiAgICAgICAgIGNhc2UgR3Jl
YXRlclRoYW46CiAgICAgICAgIGNhc2UgTGVzc0VxdWFsOgpAQCAtMjcyNiw2ICszMTg3LDQwIEBA
IHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEJyYW5jaDogeworICAgICAgICAg
ICAgaWYgKGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAg
ICAgVmFsdWUqIGJyYW5jaENoaWxkID0gbV92YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAg
ICAgc3dpdGNoIChicmFuY2hDaGlsZC0+b3Bjb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNl
IEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5j
aENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLCBmYWxz
ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgICAgICAgICAgICAg
IC8vIEEgYnJhbmNoIGlzIGEgY29tcGFyaXNvbiB0byB6ZXJvLgorICAgICAgICAgICAgICAgICAg
ICBpZiAoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5pc0ludCgwKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBFcXVhbDoK
KyAgICAgICAgICAgICAgICBjYXNlIE5vdEVxdWFsOgorICAgICAgICAgICAgICAgICAgICBpZiAo
YnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMKKyAgICAg
ICAgICAgICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwoYnJhbmNoQ2hpbGQtPmNoaWxkKDAp
KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgYnJhbmNoQ2hpbGQtPmNoaWxkKDApLT5jaGls
ZCgwKSA9PSBicmFuY2hDaGlsZC0+Y2hpbGQoMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1pdEludGVybmFsKGJyYW5jaENoaWxkLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRDQVMoYnJhbmNoQ2hpbGQtPmNoaWxkKDApLCBicmFuY2hDaGlsZC0+b3Bjb2Rl
KCkgPT0gTm90RXF1YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAg
ICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChjcmVhdGVCcmFuY2gobV92YWx1ZS0+Y2hp
bGQoMCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjc4Myw3ICszMjc4
LDgxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBhcHBlbmQoQWlyOjpFbnRyeVN3aXRjaCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IEF0b21pY1dlYWtDQVM6CisgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOiB7CisgICAgICAg
ICAgICBhcHBlbmRDQVMobV92YWx1ZSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOiB7CisgICAg
ICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7
CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21p
Y0FkZCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAg
ICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNo
Z0FkZCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9y
bShvcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBh
cHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hp
bGQoMCkpLCB0bXAoYXRvbWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1w
KGF0b21pYyksIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNB
TF9XSURUSChBZGQsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSksIENvbW11dGF0aXZlKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1Yjog
eworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1Zh
bHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURU
SChBdG9taWNTdWIsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENP
REVfRk9SX0NBTk9OSUNBTF9XSURUSChTdWIsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBB
dG9taWNYY2hnQW5kOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1
ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhP
UENPREVfRk9SX1dJRFRIKEF0b21pY0FuZCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5l
cmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEFuZCwgYXRvbWljLT5hY2Nlc3NX
aWR0aCgpKSwgQ29tbXV0YXRpdmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6IHsKKyAgICAgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAg
ICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljT3IsIGF0b21p
Yy0+YWNjZXNzV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9X
SURUSChPciwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSwgQ29tbXV0YXRpdmUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNY
Y2hnWG9yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8
QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVf
Rk9SX1dJRFRIKEF0b21pY1hvciwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRv
bWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFhvciwgYXRvbWljLT5hY2Nlc3NXaWR0aCgp
KSwgQ29tbXV0YXRpdmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1
ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAgICAgQWlyOjpP
cGNvZGUgb3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnLCBhdG9taWMtPmFjY2Vz
c1dpZHRoKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAs
IGFkZHJlc3Mua2luZCgpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZv
clR5cGUoYXRvbWljLT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9taWMp
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVzcyk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKEFpcjo6Tm9wKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjc5MSw2NCArMzM2MCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGRhdGFMb2coIkZBVEFMOiBjb3VsZCBub3QgbG93ZXIgIiwgZGVlcER1bXAobV9wcm9j
ZWR1cmUsIG1fdmFsdWUpLCAiXG4iKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9Ci0KLSAgICB2b2lkIGxvd2VyWDg2RGl2KEIzOjpPcGNvZGUgb3ApCi0gICAg
ewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAoWDg2
UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4
KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVXb3JkOwotICAgICAgICBB
aXI6Ok9wY29kZSBkaXY7Ci0gICAgICAgIHN3aXRjaCAobV92YWx1ZS0+dHlwZSgpKSB7Ci0gICAg
ICAgIGNhc2UgSW50MzI6Ci0gICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29u
dmVydFRvRG91YmxlV29yZDMyOwotICAgICAgICAgICAgZGl2ID0gWDg2RGl2MzI7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbnQ2NDoKLSAgICAgICAgICAgIGNvbnZlcnRUb0Rv
dWJsZVdvcmQgPSBYODZDb252ZXJ0VG9RdWFkV29yZDY0OwotICAgICAgICAgICAgZGl2ID0gWDg2
RGl2NjQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBBU1NFUlQob3AgPT0gRGl2IHx8IG9wID09IE1vZCk7Ci0gICAgICAg
IFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBvcCA9PSBEaXYgPyBYODZSZWdpc3Rl
cnM6OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAo
bV92YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBlbmQoY29udmVydFRvRG91Ymxl
V29yZCwgZWF4LCBlZHgpOwotICAgICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1fdmFs
dWUtPmNoaWxkKDEpKSk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1wKG1f
dmFsdWUpKTsKLQotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAgICAgVU5S
RUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGxvd2Vy
WDg2VURpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAgICAgVG1w
IGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAgICAgICAgQWlyOjpPcGNvZGUgZGl2
ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0OwotCi0g
ICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9wID09IFVNb2QpOwotICAgICAgICBYODZSZWdp
c3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gVURpdiA/IFg4NlJlZ2lzdGVyczo6ZWF4
IDogWDg2UmVnaXN0ZXJzOjplZHg7Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVl
LT5jaGlsZCgwKSksIGVheCk7Ci0gICAgICAgIGFwcGVuZChYb3I2NCwgZWR4LCBlZHgpOwotICAg
ICAgICBhcHBlbmQoZGl2LCBlYXgsIGVkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7Ci0gICAg
ICAgIGFwcGVuZChNb3ZlLCBUbXAocmVzdWx0KSwgdG1wKG1fdmFsdWUpKTsKLSNlbHNlCi0gICAg
ICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OwotI2VuZGlmCi0gICAgfQotCisgICAgCiAgICAgSW5kZXhTZXQ8VmFsdWU+IG1fbG9ja2VkOyAv
LyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQgd2lsbCBoYXZlIG5vIFRtcCBpbiBBaXIuCiAgICAgSW5k
ZXhNYXA8VmFsdWUsIFRtcD4gbV92YWx1ZVRvVG1wOyAvLyBUaGVzZSBhcmUgdmFsdWVzIHRoYXQg
bXVzdCBoYXZlIGEgVG1wIGluIEFpci4gV2Ugc2F5IHRoYXQgYSBWYWx1ZSogd2l0aCBhIG5vbi1u
dWxsIFRtcCBpcyAicGlubmVkIi4KICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3BoaVRvVG1w
OyAvLyBFYWNoIFBoaSBnZXRzIGl0cyBvd24gVG1wLgpAQCAtMjg2Myw3ICszMzc1LDcgQEAgcHJp
dmF0ZToKIAogICAgIFZlY3RvcjxWZWN0b3I8SW5zdCwgND4+IG1faW5zdHM7CiAgICAgVmVjdG9y
PEluc3Q+IG1fcHJvbG9ndWU7Ci0KKyAgICAKICAgICBCMzo6QmFzaWNCbG9jayogbV9ibG9jazsK
ICAgICBib29sIG1faXNSYXJlOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CkBAIC0yODc0LDYgKzMz
ODYsMTIgQEAgcHJpdmF0ZToKIAogICAgIFByb2NlZHVyZSYgbV9wcm9jZWR1cmU7CiAgICAgQ29k
ZSYgbV9jb2RlOworCisgICAgQWlyOjpCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0aW9u
U2V0OworCisgICAgVG1wIG1fZWF4OworICAgIFRtcCBtX2VjeDsKKyAgICBUbXAgbV9lZHg7CiB9
OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDggQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiBjbGFzcyBQcm9jZWR1cmU7CiBuYW1lc3Bh
Y2UgQWlyIHsgY2xhc3MgQ29kZTsgfQogCi0vLyBUaGlzIGxvd2VycyB0aGUgY3VycmVudCBCMyBw
cm9jZWR1cmUgdG8gYW4gQWlyIGNvZGUuCisvLyBUaGlzIGxvd2VycyB0aGUgY3VycmVudCBCMyBw
cm9jZWR1cmUgdG8gYW4gQWlyIGNvZGUuIE5vdGUgdGhhdCB0aGlzIGFzc3VtZXMgdGhhdCB0aGUg
cHJvY2VkdXJlIGlzIGluCisvLyBxdWlya3MgbW9kZSwgYnV0IGl0IGRvZXMgbm90IGFzc2VydCB0
aGlzLCB0byBzaW1wbGlmeSBob3cgd2Ugd3JpdGUgdGVzdHMuCiAKIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgbG93ZXJUb0FpcihQcm9jZWR1cmUmKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwz
NiArMjgsMzcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM0F0b21pY1Zh
bHVlLmgiCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJCM1Zh
bHVlSW5saW5lcy5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogTWVtb3J5
VmFsdWU6On5NZW1vcnlWYWx1ZSgpCiB7CiB9CiAKLXNpemVfdCBNZW1vcnlWYWx1ZTo6YWNjZXNz
Qnl0ZVNpemUoKSBjb25zdAorYm9vbCBNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldChpbnQ2NF90
IG9mZnNldCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG9wY29kZSgpKSB7Ci0gICAgY2FzZSBMb2Fk
OFo6Ci0gICAgY2FzZSBMb2FkOFM6Ci0gICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgIHJldHVybiAx
OwotICAgIGNhc2UgTG9hZDE2WjoKLSAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBTdG9yZTE2
OgotICAgICAgICByZXR1cm4gMjsKLSAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJldHVybiBzaXpl
b2ZUeXBlKHR5cGUoKSk7Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmV0dXJuIHNpemVvZlR5
cGUoY2hpbGQoMCktPnR5cGUoKSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIHJldHVybiBC
Mzo6aXNSZXByZXNlbnRhYmxlQXM8aW50MzJfdD4ob2Zmc2V0KSAmJiBpc0xlZ2FsT2Zmc2V0KHN0
YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkpOworfQorCitUeXBlIE1lbW9yeVZhbHVlOjphY2Nl
c3NUeXBlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNMb2FkKCkpCisgICAgICAgIHJldHVybiB0eXBl
KCk7CisgICAgLy8gVGhpcyBoYXBwZW5zIHRvIHdvcmsgZm9yIGF0b21pY3MsIHRvby4gVGhhdCdz
IHdoeSBBdG9taWNWYWx1ZSBkb2VzIG5vdCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMuCisgICAgcmV0
dXJuIGNoaWxkKDApLT50eXBlKCk7CiB9CiAKLVdpZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0
aCgpIGNvbnN0CitCYW5rIE1lbW9yeVZhbHVlOjphY2Nlc3NCYW5rKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gd2lkdGhGb3JCeXRlcyhhY2Nlc3NCeXRlU2l6ZSgpKTsKKyAgICByZXR1cm4gYmFua0Zv
clR5cGUoYWNjZXNzVHlwZSgpKTsKK30KKworc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRl
U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ5dGVzKGFjY2Vzc1dpZHRoKCkpOwogfQogCiB2
b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVh
bSYgb3V0KSBjb25zdApAQCAtNjUsOCArNjYsMTEgQEAgdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1l
dGEoQ29tbWFQcmludGVyJgogICAgIGlmIChtX29mZnNldCkKICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAib2Zmc2V0ID0gIiwgbV9vZmZzZXQpOwogICAgIGlmICgoaXNMb2FkKCkgJiYgZWZmZWN0
cygpLnJlYWRzICE9IHJhbmdlKCkpCi0gICAgICAgIHx8IChpc1N0b3JlKCkgJiYgZWZmZWN0cygp
LndyaXRlcyAhPSByYW5nZSgpKSkKKyAgICAgICAgfHwgKGlzU3RvcmUoKSAmJiBlZmZlY3RzKCku
d3JpdGVzICE9IHJhbmdlKCkpCisgICAgICAgIHx8IGlzRXhvdGljKCkpCiAgICAgICAgIG91dC5w
cmludChjb21tYSwgInJhbmdlID0gIiwgcmFuZ2UoKSk7CisgICAgaWYgKGlzRXhvdGljKCkpCisg
ICAgICAgIG91dC5wcmludChjb21tYSwgImZlbmNlUmFuZ2UgPSAiLCBmZW5jZVJhbmdlKCkpOwog
fQogCiBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CkBAIC03NCw2ICs3OCw2
MiBAQCBWYWx1ZSogTWVtb3J5VmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAgICAgcmV0dXJuIG5l
dyBNZW1vcnlWYWx1ZSgqdGhpcyk7CiB9CiAKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1
dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3Vm
Zml4IHRoYXQKKy8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCitNZW1vcnlWYWx1ZTo6
TWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBw
b2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VS
YW5nZSkKKyAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9p
bnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1fcmFuZ2UocmFuZ2UpCisgICAg
LCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkg
eworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAgICAgY2FzZSBMb2FkOgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICBjYXNlIExv
YWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNlIExvYWQxNlM6CisgICAg
ICAgICAgICBBU1NFUlQodHlwZSA9PSBJbnQzMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTdG9yZTg6CisgICAgICAgIGNhc2UgU3RvcmUxNjoKKyAgICAgICAgY2FzZSBTdG9y
ZToKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhl
IHJldHVybiB0eXBlIGlzIGltcGxpZWQuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBr
aW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBS
YW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1vcnlWYWx1ZShraW5k
LCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlKQorewor
ICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUo
KSkgeworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6CisgICAgICAg
IGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgorTWVtb3J5
VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVl
LCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJh
bmdlIGZlbmNlUmFuZ2UpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBv
cmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICwgbV9y
YW5nZShyYW5nZSkKKyAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQoreworICAgIEFTU0VS
VChCMzo6aXNTdG9yZShraW5kLm9wY29kZSgpKSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTI3ICsy
Nyw4NiBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckFyZy5oIgorI2lu
Y2x1ZGUgIkIzQmFuay5oIgogI2luY2x1ZGUgIkIzSGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAiQjNW
YWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotLy8gRklYTUU6IFdl
IHdhbnQgdG8gYWxsb3cgZmVuY2VkIG1lbW9yeSBhY2Nlc3NlcyBvbiBBUk0uCi0vLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMzQ5Ci0KIGNsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIE1lbW9yeVZhbHVlIDogcHVibGljIFZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZC5v
cGNvZGUoKSkgewotICAgICAgICBjYXNlIExvYWQ4WjoKLSAgICAgICAgY2FzZSBMb2FkOFM6Ci0g
ICAgICAgIGNhc2UgTG9hZDE2WjoKLSAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAgICBjYXNl
IExvYWQ6Ci0gICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAg
ICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0
YXRpYyBib29sIGlzU3RvcmUoS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5k
Lm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICBjYXNlIFN0b3JlMTY6
Ci0gICAgICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHN0YXRpYyBib29sIGlzTG9hZChLaW5kIGtpbmQpCi0gICAgewotICAgICAgICByZXR1cm4g
YWNjZXB0cyhraW5kKSAmJiAhaXNTdG9yZShraW5kKTsKKyAgICAgICAgcmV0dXJuIGlzTWVtb3J5
QWNjZXNzKGtpbmQub3Bjb2RlKCkpOwogICAgIH0KIAogICAgIH5NZW1vcnlWYWx1ZSgpOwogCiAg
ICAgaW50MzJfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIHZvaWQg
c2V0T2Zmc2V0KGludDMyX3Qgb2Zmc2V0KSB7IG1fb2Zmc2V0ID0gb2Zmc2V0OyB9CisgICAgCisg
ICAgLy8gWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdXNpbmcgbGVnYWwgb2Zmc2V0cyB1
bmxlc3MgeW91J3ZlIGVudGVyZWQgcXVpcmtzIG1vZGUuCisgICAgYm9vbCBpc0xlZ2FsT2Zmc2V0
KGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKyAgICBib29sIGlzTGVnYWxPZmZzZXQoaW50NjRfdCBv
ZmZzZXQpIGNvbnN0OworICAgIAorICAgIC8vIEEgbmVjZXNzYXJ5IGNvbnNlcXVlbmNlIG9mIE1l
bW9yeVZhbHVlIGhhdmluZyBhbiBvZmZzZXQgaXMgdGhhdCBpdCBwYXJ0aWNpcGF0ZXMgaW4gaW5z
dHJ1Y3Rpb24KKyAgICAvLyBzZWxlY3Rpb24uIFRoaXMgdGVsbHMgeW91IGlmIHRoaXMgd2lsbCBn
ZXQgbG93ZXJlZCB0byBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBhbiBvZmZzZXRsZXNzCisgICAg
Ly8gYWRkcmVzcy4KKyAgICBib29sIHJlcXVpcmVzU2ltcGxlQWRkcigpIGNvbnN0OwogCiAgICAg
Y29uc3QgSGVhcFJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2U7IH0KICAgICB2
b2lkIHNldFJhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgbV9yYW5nZSA9IHJhbmdlOyB9
CisgICAgCisgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgcmFuZ2UuCisgICAgY29uc3QgSGVh
cFJhbmdlJiBhY2Nlc3NSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJhbmdlKCk7IH0KKyAgICB2b2lk
IHNldEFjY2Vzc1JhbmdlKGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UpIHsgc2V0UmFuZ2UocmFuZ2Up
OyB9CisgICAgCisgICAgY29uc3QgSGVhcFJhbmdlJiBmZW5jZVJhbmdlKCkgY29uc3QgeyByZXR1
cm4gbV9mZW5jZVJhbmdlOyB9CisgICAgdm9pZCBzZXRGZW5jZVJhbmdlKGNvbnN0IEhlYXBSYW5n
ZSYgcmFuZ2UpIHsgbV9mZW5jZVJhbmdlID0gcmFuZ2U7IH0KKworICAgIGJvb2wgaXNTdG9yZSgp
IGNvbnN0IHsgcmV0dXJuIEIzOjppc1N0b3JlKG9wY29kZSgpKTsgfQorICAgIGJvb2wgaXNMb2Fk
KCkgY29uc3QgeyByZXR1cm4gQjM6OmlzTG9hZChvcGNvZGUoKSk7IH0KIAotICAgIGJvb2wgaXNT
dG9yZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBWb2lkOyB9Ci0gICAgYm9vbCBpc0xvYWQo
KSBjb25zdCB7IHJldHVybiB0eXBlKCkgIT0gVm9pZDsgfQorICAgIGJvb2wgaGFzRmVuY2UoKSBj
b25zdCB7IHJldHVybiAhIWZlbmNlUmFuZ2UoKTsgfQorICAgIGJvb2wgaXNFeG90aWMoKSBjb25z
dCB7IHJldHVybiBoYXNGZW5jZSgpIHx8IGlzQXRvbWljKG9wY29kZSgpKTsgfQogCisgICAgVHlw
ZSBhY2Nlc3NUeXBlKCkgY29uc3Q7CisgICAgQmFuayBhY2Nlc3NCYW5rKCkgY29uc3Q7CiAgICAg
c2l6ZV90IGFjY2Vzc0J5dGVTaXplKCkgY29uc3Q7CisgICAgCiAgICAgV2lkdGggYWNjZXNzV2lk
dGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVy
JiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGR1bXBNZXRh
KENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWYWx1
ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBraW5k
LCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFu
Z2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlLCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgICAg
ICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgYXJndW1lbnRzLi4u
KQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3JhbmdlKHJhbmdlKQor
ICAgICAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQorICAgIHsKKyAgICB9CisgICAgCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0KKyAgICAKICAgICAvLyBVc2Ug
dGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhl
IExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CiAgICAgLy8gZGVzY3JpYmVzIHRoZSByZXR1
cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2lu
IG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBW
YWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCi0gICAgICAg
ICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSkK
LSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICBzd2l0
Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAgICAgICAgY2FzZSBM
b2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAgICAgICBjYXNlIExvYWQx
NlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAgICBjYXNlIFN0
b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAgIEFTU0VSVCh0
eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBUeXBlLCBPcmlnaW4sIFZh
bHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBS
YW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkpOwogCiAgICAg
Ly8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxp
ZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9p
bnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIElu
dDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKLSAgICB7Ci0gICAgfQorICAgIE1lbW9yeVZh
bHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVh
cFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBI
ZWFwUmFuZ2UoKSk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBzdG9yZXMuCi0gICAgTWVt
b3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBw
b2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29k
ZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKLSAgICAgICAgLCBtX29mZnNl
dChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQotICAgIHsKLSAg
ICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoa2luZC5v
cGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAgICBjYXNlIFN0
b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSog
cG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6
OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKKyAgICAKICAgICBp
bnQzMl90IG1fb2Zmc2V0IHsgMCB9OwotICAgIEhlYXBSYW5nZSBtX3JhbmdlOworICAgIEhlYXBS
YW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSBtX2ZlbmNl
UmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZUlubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZUlubGluZXMu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1
ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQXJnLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworaW5saW5lIGJvb2wgTWVt
b3J5VmFsdWU6OmlzTGVnYWxPZmZzZXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0Cit7CisgICAgLy8g
Tk9URTogVGhpcyBpcyBpbmxpbmUgYmVjYXVzZSBpdCBjb25zdGFudC1mb2xkcyB0byB0cnVlIG9u
IHg4NiEKKyAgICAKKyAgICAvLyBTbyBmYXIgb25seSBYODYgYWxsb3dzIGV4b3RpYyBsb2FkcyB0
byBoYXZlIGFuIG9mZnNldC4KKyAgICBpZiAocmVxdWlyZXNTaW1wbGVBZGRyKCkpCisgICAgICAg
IHJldHVybiAhb2Zmc2V0OworICAgIAorICAgIHJldHVybiBBaXI6OkFyZzo6aXNWYWxpZEFkZHJG
b3JtKG9mZnNldCwgYWNjZXNzV2lkdGgoKSk7Cit9CisKK2lubGluZSBib29sIE1lbW9yeVZhbHVl
OjpyZXF1aXJlc1NpbXBsZUFkZHIoKSBjb25zdAoreworICAgIHJldHVybiAhaXNYODYoKSAmJiBp
c0V4b3RpYygpOworfQorCitpbmxpbmUgV2lkdGggTWVtb3J5VmFsdWU6OmFjY2Vzc1dpZHRoKCkg
Y29uc3QKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSgpKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAg
Y2FzZSBMb2FkOFM6CisgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIHJldHVybiBXaWR0aDg7Cisg
ICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIFN0b3JlMTY6Cisg
ICAgICAgIHJldHVybiBXaWR0aDE2OworICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmV0dXJuIHdp
ZHRoRm9yVHlwZSh0eXBlKCkpOworICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB3aWR0
aEZvclR5cGUoY2hpbGQoMCktPnR5cGUoKSk7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAg
IGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNl
IEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNY
Y2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6Cisg
ICAgICAgIHJldHVybiBhczxBdG9taWNWYWx1ZT4oKS0+YWNjZXNzV2lkdGgoKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gV2lkdGg4OworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNN
b3ZlQ29uc3RhbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNNb3ZlQ29uc3RhbnRzLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMy
LDcgQEAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNEb21p
bmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
QjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKQEAgLTIwMywxMiArMjAzLDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVQb2ludGVyLT5o
YXNJbnRQdHIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludHB0cl90IG9mZnNldCA9IGRlc2lyZWRPZmZzZXQoY2FuZGlkYXRl
UG9pbnRlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQjM6OmlzUmVw
cmVzZW50YWJsZUFzPGludDMyX3Q+KHN0YXRpY19jYXN0PGludDY0X3Q+KG9mZnNldCkpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpBcmc6OmlzVmFsaWRBZGRyRm9ybSgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+
KG9mZnNldCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aEZvckJ5
dGVzKG1lbW9yeVZhbHVlLT5hY2Nlc3NCeXRlU2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gZGVzaXJlZE9mZnNldChjYW5kaWRhdGVQb2lu
dGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9yeVZhbHVl
LT5pc0xlZ2FsT2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChi
ZXN0UG9pbnRlcikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTmF0aXZlVHJh
aXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTmF0aXZlVHJh
aXRzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTmF0aXZl
VHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNCYW5rLmgiCisjaW5jbHVkZSAiQjNUeXBlLmgiCisj
aW5jbHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBOYXRpdmVUcmFpdHM7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IE5hdGl2ZVRyYWl0czxpbnQ4X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0g
R1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg4OworICAgIHN0YXRpYyBj
b25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRy
YWl0czx1aW50OF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0
YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoODsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0
eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50MTZf
dD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3Qg
V2lkdGggd2lkdGggPSBXaWR0aDE2OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQz
MjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czx1aW50MTZfdD4geworICAg
IHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lk
dGggPSBXaWR0aDE2OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxpbnQzMl90PiB7CisgICAgc3RhdGljIGNv
bnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRo
MzI7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQzMl90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsg
YmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoMzI7CisgICAg
c3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
TmF0aXZlVHJhaXRzPGludDY0X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7
CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg2NDsKKyAgICBzdGF0aWMgY29u
c3QgVHlwZSB0eXBlID0gSW50NjQ7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFp
dHM8dWludDY0X3Q+IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3Rh
dGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg2NDsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0
eXBlID0gSW50NjQ7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8ZmxvYXQ+
IHsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gRlA7CisgICAgc3RhdGljIGNvbnN0IFdp
ZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gRmxvYXQ7
Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8ZG91YmxlPiB7CisgICAgc3Rh
dGljIGNvbnN0IEJhbmsgYmFuayA9IEZQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9
IFdpZHRoNjQ7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IERvdWJsZTsKK307CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjgsNiArNjgsMjMgQEAgc3RkOjpvcHRpb25hbDxPcGNvZGU+IGludmVydGVkQ29tcGFyZShP
cAogICAgIH0KIH0KIAorT3Bjb2RlIHN0b3JlT3Bjb2RlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgp
Cit7CisgICAgc3dpdGNoIChiYW5rKSB7CisgICAgY2FzZSBHUDoKKyAgICAgICAgc3dpdGNoICh3
aWR0aCkgeworICAgICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgIHJldHVybiBTdG9yZTg7
CisgICAgICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgICAgIHJldHVybiBTdG9yZTE2OworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlOworICAgICAgICB9CisgICAg
Y2FzZSBGUDoKKyAgICAgICAgcmV0dXJuIFN0b3JlOworICAgIH0KK30KKwogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMjYzLDYgKzI4MCwzMyBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgT3BjCiAgICAgY2FzZSBTdG9yZToKICAg
ICAgICAgb3V0LnByaW50KCJTdG9yZSIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9t
aWNXZWFrQ0FTOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1dlYWtDQVMiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICBvdXQucHJpbnQoIkF0
b21pY1N0cm9uZ0NBUyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnQWRk
OgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdBZGQiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnQW5k
Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgb3V0
LnByaW50KCJBdG9taWNYY2hnT3IiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWlj
WGNoZ1N1YjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnU3ViIik7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgIG91dC5wcmludCgiQXRvbWlj
WGNoZ1hvciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAg
ICBvdXQucHJpbnQoIkF0b21pY1hjaGciKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRGVw
ZW5kOgorICAgICAgICBvdXQucHJpbnQoIkRlcGVuZCIpOworICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgb3V0LnByaW50KCJXYXNtQWRkcmVzcyIpOwogICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkocmV2aXNp
b24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1
ZGUgIkIzVHlwZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTgyLDcgKzgzLDYgQEAg
ZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBNb2QsIC8vIEFsbCBiZXRzIGFyZSBvZmYgYXMg
dG8gd2hhdCB3aWxsIGhhcHBlbiB3aGVuIHlvdSBleGVjdXRlIHRoaXMgZm9yIC0yXjMxJS0xIGFu
ZCB4JTAuCiAgICAgVU1vZCwKIAotCiAgICAgLy8gUG9seW1vcnBoaWMgbmVnYXRpb24uIE5vdGUg
dGhhdCB3ZSBvbmx5IG5lZWQgdGhpcyBmb3IgZmxvYXRpbmcgcG9pbnQsIHNpbmNlIGludGVnZXIg
bmVnYXRpb24KICAgICAvLyBpcyBleGFjdGx5IGxpa2UgU3ViKDAsIHgpLiBCdXQgdGhhdCdzIG5v
dCB0cnVlIGZvciBmbG9hdGluZyBwb2ludC4gU3ViKDAsIDApIGlzIDAsIHdoaWxlCiAgICAgLy8g
TmVnKDApIGlzIC0wLiBBbHNvLCB3ZSBjYW5vbmljYWxpemUgU3ViKDAsIHgpIGludG8gTmVnKHgp
IGluIGNhc2Ugb2YgaW50ZWdlcnMuCkBAIC0xNjIsNiArMTYyLDEwNyBAQCBlbnVtIE9wY29kZSA6
IGludDE2X3QgewogICAgIFN0b3JlMTYsCiAgICAgLy8gVGhpcyBpcyBhIHBvbHltb3JwaGljIHN0
b3JlIGZvciBJbnQzMiwgSW50NjQsIEZsb2F0LCBhbmQgRG91YmxlLgogICAgIFN0b3JlLAorICAg
IAorICAgIC8vIEF0b21pYyBjb21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4u
IE1heSBjaG9vc2UgdG8gZG8gbm90aGluZyBhbmQgcmV0dXJuIGZhbHNlLiBZb3UgY2FuCisgICAg
Ly8gdXN1YWxseSBhc3N1bWUgdGhhdCB0aGlzIGlzIGZhc3RlciBhbmQgcmVzdWx0cyBpbiBsZXNz
IGNvZGUgdGhhbiBBdG9taWNTdHJvbmdDQVMsIHRob3VnaCB0aGF0J3MKKyAgICAvLyBub3QgbmVj
ZXNzYXJpbHkgdHJ1ZSBvbiBJbnRlbCwgaWYgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIGRvZXMgaXRz
IGpvYi4gSW1hZ2luZSB0aGF0IHRoaXMgb3Bjb2RlIGlzCisgICAgLy8gYXMgaWYgeW91IGRpZCB0
aGlzIGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IC8vIGJvb2wgQXRvbWljV2Vha0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0
cikKKyAgICAvLyB7CisgICAgLy8gICAgIGlmICghcmFuZCgpKQorICAgIC8vICAgICAgICAgcmV0
dXJuIGZhbHNlOyAvLyBSZWFsIHdvcmxkIGV4YW1wbGUgb2YgdGhpczogY29udGV4dCBzd2l0Y2gg
b24gQVJNIHdoaWxlIGRvaW5nIENBUy4KKyAgICAvLyAgICAgaWYgKCpwdHIgIT0gZXhwZWN0ZWRW
YWx1ZSkKKyAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyAgICAgKnB0ciA9IG5l
d1ZhbHVlOworICAgIC8vICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyB9CisgICAgLy8KKyAgICAv
LyBOb3RlIHRoYXQgYWxsIGF0b21pY3MgcHV0IHRoZSBwb2ludGVyIGxhc3QgdG8gYmUgY29uc2lz
dGVudCB3aXRoIGhvdyBsb2FkcyBhbmQgc3RvcmVzIHdvcmsuIFRoaXMKKyAgICAvLyBpcyBhIGdv
b2Z5IHRyYWRpdGlvbiwgYnV0IGl0J3MgaGFybWxlc3MsIGFuZCBiZXR0ZXIgdGhhbiBiZWluZyBp
bmNvbnNpc3RlbnQuCisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgd2VhayBDQVMgaGFzIG5vIGZl
bmNpbmcgZ3VhcmFudGVlcyB3aGVuIGl0IGZhaWxzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxv
d2luZworICAgIC8vIHRyYW5zZm9ybWF0aW9uIGlzIGFsd2F5cyB2YWxpZDoKKyAgICAvLworICAg
IC8vIEJlZm9yZToKKyAgICAvLworICAgIC8vICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtDQVMo
ZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNj
ZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBBZnRlcjoKKyAgICAvLworICAgIC8vICAg
ICAgICAgQnJhbmNoKEVxdWFsKExvYWQocHRyKSwgZXhwZWN0ZWQpKQorICAgIC8vICAgICAgIFN1
Y2Nlc3NvcnM6IFRoZW46I2F0dGVtcHQsIEVsc2U6I2ZhaWwKKyAgICAvLyAgICAgQkIjYXR0ZW1w
dDoKKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FTKGV4cGVjdGVkLCBuZXcsIHB0
cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3VjY2VzcywgRWxzZTojZmFpbAor
ICAgIC8vCisgICAgLy8gQm90aCBraW5kcyBvZiBDQVMgZm9yIG5vbi1jYW5vbmljYWwgd2lkdGhz
IChXaWR0aDggYW5kIFdpZHRoMTYpIGlnbm9yZSB0aGUgaXJyZWxldmFudCBiaXRzIG9mIHRoZQor
ICAgIC8vIGlucHV0LgorICAgIEF0b21pY1dlYWtDQVMsCisgICAgCisgICAgLy8gQXRvbWljIGNv
bXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIHRoZSBvbGQgdmFsdWUuIERvZXMgbm90IGhhdmUg
dGhlIG5vbmRldGVybWluaXNtIG9mIFdlYWtDQVMuCisgICAgLy8gVGhpcyBpcyBhIGJpdCBtb3Jl
IGNvZGUgYW5kIGEgYml0IHNsb3dlciBpbiBzb21lIGNhc2VzLCB0aG91Z2ggbm90IGJ5IGEgbG90
LiBJbWFnaW5lIHRoYXQgdGhpcworICAgIC8vIG9wY29kZSBpcyBhcyBpZiB5b3UgZGlkIHRoaXMg
YXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8g
VCBBdG9taWNTdHJvbmdDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBUKiBwdHIpCisg
ICAgLy8geworICAgIC8vICAgICBUIG9sZFZhbHVlID0gKnB0cjsKKyAgICAvLyAgICAgaWYgKG9s
ZFZhbHVlID09IGV4cGVjdGVkVmFsdWUpCisgICAgLy8gICAgICAgICAqcHRyID0gbmV3VmFsdWU7
CisgICAgLy8gICAgIHJldHVybiBvbGRWYWx1ZQorICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5v
dGUgdGhhdCBBdG9taWNXZWFrQ0FTIGFuZCBBdG9taWNTdHJvbmdDQVMgc29ydCBvZiBoYXZlIHRo
aXMga2luZCBvZiBlcXVpdmFsZW5jZToKKyAgICAvLworICAgIC8vIEF0b21pY1dlYWtDQVMoQGV4
cCwgQG5ldywgQHB0cikgPT0gRXF1YWwoQXRvbWljU3Ryb25nQ0FTKEBleHAsIEBuZXcsIEBwdHIp
LCBAZXhwKQorICAgIC8vCisgICAgLy8gQXNzdW1pbmcgdGhhdCB0aGUgV2Vha0NBUyBkb2VzIG5v
dCBzcHVyaW91c2x5IGZhaWwsIG9mIGNvdXJzZS4KKyAgICBBdG9taWNTdHJvbmdDQVMsCisgICAg
CisgICAgLy8gQXRvbWljYWxseSBfX18gYSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybiB0aGUg
b2xkIHZhbHVlLiBTeW50YXg6CisgICAgLy8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNYY2hn
X19fKEBvcGVyYW5kLCBAcHRyKQorICAgIC8vCisgICAgLy8gRm9yIG5vbi1jYW5vbmljYWwgd2lk
dGhzIChXaWR0aDggYW5kIFdpZHRoMTYpLCB0aGVzZSByZXR1cm4gc2lnbi1leHRlbmRlZCByZXN1
bHRzIGFuZCBpZ25vcmUgdGhlCisgICAgLy8gaXJyZWxldmFudCBiaXRzIG9mIHRoZWlyIGlucHV0
cy4KKyAgICBBdG9taWNYY2hnQWRkLAorICAgIEF0b21pY1hjaGdBbmQsCisgICAgQXRvbWljWGNo
Z09yLAorICAgIEF0b21pY1hjaGdTdWIsCisgICAgQXRvbWljWGNoZ1hvciwKKyAgICAKKyAgICAv
LyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkIGhhdmUgQXRvbWljWGNoZ05lZyBhbmQgQXRvbWljWGNo
Z05vdC4KKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IGV4Y2hhbmdlIGEgdmFsdWUgd2l0aCBhIG1l
bW9yeSBsb2NhdGlvbi4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWlj
WGNoZyhAbmV3VmFsdWUsIEBwdHIpCisgICAgQXRvbWljWGNoZywKKyAgICAKKyAgICAvLyBJbnRy
b2R1Y2UgYW4gaW52aXNpYmxlIGRlcGVuZGVuY3kgZm9yIGJsb2NraW5nIG1vdGlvbiBvZiBsb2Fk
cyB3aXRoIHJlc3BlY3QgdG8gZWFjaCBvdGhlci4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQHJl
c3VsdCA9IERlcGVuZChAcGhhbnRvbSkKKyAgICAvLworICAgIC8vIFRoaXMgaXMgZXZlbnR1YWxs
eSBjb2RlZ2VuZXJhdGVkIHRvIGhhdmUgbG9jYWwgc2VtYW50aWNzIGFzIGlmIHdlIGRpZDoKKyAg
ICAvLworICAgIC8vIEByZXN1bHQgPSAkMAorICAgIC8vCisgICAgLy8gQnV0IGl0IGVuc3VyZXMg
dGhhdCB0aGUgdXNlcnMgb2YgQHJlc3VsdCBjYW5ub3QgZXhlY3V0ZSB1bnRpbCBAcGhhbnRvbSBp
cyBjb21wdXRlZC4KKyAgICAvLworICAgIC8vIFRoZSBjb21waWxlciBpcyBub3QgYWxsb3dlZCB0
byByZWFzb24gYWJvdXQgdGhlIGZhY3QgdGhhdCBEZXBlbmQgY29kZWdlbmVyYXRlcyB0aGlzIHdh
eS4gQW55IGtpbmQKKyAgICAvLyBvZiB0cmFuc2Zvcm1hdGlvbiBvciBhbmFseXNpcyB0aGF0IHJl
bGllcyBvbiB0aGUgaW5zaWdodCB0aGF0IERlcGVuZCBpcyByZWFsbHkgemVybyBpcyB1bnNvdW5k
LAorICAgIC8vIGJlY2F1c2UgaXQgdW5sb2NrcyByZW9yZGVyaW5nIG9mIHVzZXJzIG9mIEByZXN1
bHQgYW5kIEBwaGFudG9tLgorICAgIC8vCisgICAgLy8gT24gWDg2LCB0aGlzIGlzIGxvd2VyZWQg
dG8gYSBsb2FkLWxvYWQgZmVuY2UgYW5kIEByZXN1bHQgdXNlcyBAcGhhbnRvbSBkaXJlY3RseS4K
KyAgICAvLworICAgIC8vIE9uIEFSTSwgdGhpcyBpcyBsb3dlcmVkIGFzIGlmIGxpa2U6CisgICAg
Ly8KKyAgICAvLyBAcmVzdWx0ID0gQml0WG9yKEBwaGFudG9tLCBAcGhhbnRvbSkKKyAgICAvLwor
ICAgIC8vIEV4Y2VwdCB0aGF0IHRoZSBjb21waWxlciBuZXZlciBnZXRzIGFuIG9wcG9ydHVuaXR5
IHRvIHNpbXBsaWZ5IG91dCB0aGUgQml0WG9yLgorICAgIERlcGVuZCwKIAogICAgIC8vIFRoaXMg
aXMgdXNlZCB0byBjb21wdXRlIHRoZSBhY3R1YWwgYWRkcmVzcyBvZiBhIFdhc20gbWVtb3J5IG9w
ZXJhdGlvbi4gSXQgdGFrZXMgYW4gSW50UHRyCiAgICAgLy8gYW5kIGEgcGlubmVkIHJlZ2lzdGVy
IHRoZW4gY29tcHV0ZXMgdGhlIGFwcHJvcHJpYXRlIEludFB0ciBhZGRyZXNzLiBGb3IgdGhlIHVz
ZS1jYXNlIG9mCkBAIC0zMDEsNiArNDAyLDExMiBAQCBpbmxpbmUgYm9vbCBpc0RlZmluaXRlbHlU
ZXJtaW5hbChPcGNvZGUgCiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBpc0xvYWQoT3Bjb2RlIG9w
Y29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNh
c2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2Fz
ZSBMb2FkOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1N0b3JlKE9wY29kZSBvcGNvZGUp
Cit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNlIFN0
b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNMb2Fk
U3RvcmUoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2Ug
TG9hZDhaOgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExv
YWQxNlM6CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3RvcmUx
NjoKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pYyhP
cGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNX
ZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0Fk
ZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAg
Y2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0
b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljQ0FTKE9wY29kZSBv
cGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6
CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlz
QXRvbWljWGNoZyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAg
Y2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0
b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hn
WG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNN
ZW1vcnlBY2Nlc3MoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICByZXR1cm4gaXNBdG9taWMob3Bjb2Rl
KSB8fCBpc0xvYWRTdG9yZShvcGNvZGUpOworfQorCitpbmxpbmUgT3Bjb2RlIHNpZ25FeHRlbmRP
cGNvZGUoV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lk
dGg4OgorICAgICAgICByZXR1cm4gU0V4dDg7CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICBy
ZXR1cm4gU0V4dDE2OworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBPb3BzOworICAgIH0KK30KKworSlNfRVhQT1JUX1BS
SVZBVEUgT3Bjb2RlIHN0b3JlT3Bjb2RlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpOworCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
Miw2ICsyMDIsOCBAQCB2b2lkIFByb2NlZHVyZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjCiAg
ICAgICAgIH0KICAgICAgICAgZGF0YUxvZygiICAgICIsIGRlZXBEdW1wKCp0aGlzLCB2YWx1ZSks
ICJcbiIpOwogICAgIH0KKyAgICBpZiAoaGFzUXVpcmtzKCkpCisgICAgICAgIG91dC5wcmludCgi
SGFzIFF1aXJrczogVHJ1ZVxuIik7CiAgICAgaWYgKHZhcmlhYmxlcygpLnNpemUoKSkgewogICAg
ICAgICBvdXQucHJpbnQoIlZhcmlhYmxlczpcbiIpOwogICAgICAgICBmb3IgKFZhcmlhYmxlKiB2
YXJpYWJsZSA6IHZhcmlhYmxlcygpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJv
Y2VkdXJlLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1Byb2NlZHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE3LDYgKzExNyw3IEBAIHB1YmxpYzoK
ICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoT3JpZ2luLCBUeXBlLCBpbnQ2NF90IHZhbHVlKTsK
ICAgICBWYWx1ZSogYWRkSW50Q29uc3RhbnQoVmFsdWUqLCBpbnQ2NF90IHZhbHVlKTsKIAorICAg
IC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgVmFsdWUqIGFk
ZEJvdHRvbShPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBhZGRCb3R0b20oVmFsdWUqKTsKIApA
QCAtMTk1LDYgKzE5NiwxNyBAQCBwdWJsaWM6CiAgICAgLy8gYWxpdmUuIEdyZWF0IGZvciBjb21w
aWxlci1nZW5lcmF0ZWQgZGF0YSBzZWN0aW9ucywgbGlrZSBzd2l0Y2gganVtcCB0YWJsZXMgYW5k
IGNvbnN0YW50IHBvb2xzLgogICAgIC8vIFRoaXMgcmV0dXJucyBtZW1vcnkgdGhhdCBoYXMgYmVl
biB6ZXJvLWluaXRpYWxpemVkLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFkZERhdGFT
ZWN0aW9uKHNpemVfdCk7CisgICAgCisgICAgLy8gU29tZSBvcGVyYXRpb25zIGFyZSBzcGVjaWZp
ZWQgaW4gQjMgSVIgdG8gYmVoYXZlIG9uZSB3YXkgYnV0IG9uIHRoaXMgZ2l2ZW4gQ1BVIHRoZXkg
YmVoYXZlIGEKKyAgICAvLyBkaWZmZXJlbnQgd2F5LiBXaGVuIHRydWUsIHRob3NlIEIzIElSIG9w
cyBzd2l0Y2ggdG8gYmVoYXZpbmcgdGhlIENQVSB3YXksIGFuZCB0aGUgb3B0aW1pemVyIG1heQor
ICAgIC8vIHN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2YgaXQuCisgICAgLy8KKyAgICAvLyBPbmUg
d2F5IHRvIHRoaW5rIG9mIGl0IGlzIGxpa2UgdGhpcy4gSW1hZ2luZSB0aGF0IHlvdSBmaW5kIHRo
YXQgdGhlIGNsZWFuZXN0IHdheSBvZiBsb3dlcmluZworICAgIC8vIHNvbWV0aGluZyBpbiBsb3dl
ck1hY3JvcyBpcyB0byB1bmNvbmRpdGlvbmFsbHkgcmVwbGFjZSBvbmUgb3Bjb2RlIHdpdGggYW5v
dGhlci4gVGhpcyBpcyBhIHNob3J0Y3V0CisgICAgLy8gd2hlcmUgeW91IGluc3RlYWQga2VlcCB0
aGUgc2FtZSBvcGNvZGUsIGJ1dCByZWx5IG9uIHRoZSBvcGNvZGUncyBtZWFuaW5nIGNoYW5nZXMg
b25jZSBsb3dlck1hY3JvcworICAgIC8vIHNldHMgaGFzUXVpcmtzLgorICAgIGJvb2wgaGFzUXVp
cmtzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNRdWlya3M7IH0KKyAgICB2b2lkIHNldEhhc1F1aXJr
cyhib29sIHZhbHVlKSB7IG1faGFzUXVpcmtzID0gdmFsdWU7IH0KIAogICAgIE9wYXF1ZUJ5cHJv
ZHVjdHMmIGJ5cHJvZHVjdHMoKSB7IHJldHVybiAqbV9ieXByb2R1Y3RzOyB9CiAKQEAgLTI1Miw2
ICsyNjQsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoUHJpbnRTdHJl
YW0mLCBPcmlnaW4pPj4gbV9vcmlnaW5QcmludGVyOwogICAgIGNvbnN0IHZvaWQqIG1fZnJvbnRl
bmREYXRhOwogICAgIFBDVG9PcmlnaW5NYXAgbV9wY1RvT3JpZ2luTWFwOworICAgIGJvb2wgbV9o
YXNRdWlya3MgeyBmYWxzZSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmNwcAkocmV2aXNpb24gMjEzNDI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJCM0RvbWluYXRv
cnMuaCIKKyNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewpAQCAtODksNiArOTAsMjMgQEAgYm9vbCBQ
dXJlQ1NFOjpwcm9jZXNzKFZhbHVlKiB2YWx1ZSwgRG9taQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorYm9vbCBwdXJlQ1NFKFByb2NlZHVyZSYgcHJvYykKK3sKKyAgICBQaGFzZVNjb3BlIHBoYXNl
U2NvcGUocHJvYywgInB1cmVDU0UiKTsKKyAgICAKKyAgICBEb21pbmF0b3JzJiBkb21pbmF0b3Jz
ID0gcHJvYy5kb21pbmF0b3JzKCk7CisgICAgUHVyZUNTRSBwdXJlQ1NFOworICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuYmxvY2tzSW5Q
cmVPcmRlcigpKSB7CisgICAgICAgIGZvciAoVmFsdWUqIHZhbHVlIDogKmJsb2NrKSB7CisgICAg
ICAgICAgICByZXN1bHQgfD0gdmFsdWUtPnBlcmZvcm1TdWJzdGl0dXRpb24oKTsKKyAgICAgICAg
ICAgIHJlc3VsdCB8PSBwdXJlQ1NFLnByb2Nlc3ModmFsdWUsIGRvbWluYXRvcnMpOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQdXJlQ1NFLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1B1cmVDU0UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBAQCBw
cml2YXRlOgogICAgIEhhc2hNYXA8VmFsdWVLZXksIE1hdGNoZXM+IG1fbWFwOwogfTsKIAorYm9v
bCBwdXJlQ1NFKFByb2NlZHVyZSYpOworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2Vu
ZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VTdHJlbmd0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUmVkdWNlU3RyZW5ndGguY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwx
MiArMjgsMTMgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM0F0b21pY1Zh
bHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxv
Y2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgiCiAj
aW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNQaGlDaGls
ZHJlbi5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgpAQCAtNjAyLDcgKzYwMyw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGJyZWFrOwotCisgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBOZWc6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IE5l
Zyhjb25zdGFudCkKICAgICAgICAgICAgIC8vIEludG8gdGhpczogLWNvbnN0YW50CkBAIC0xMjk1
LDYgKzEyOTYsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczog
U0V4dDgoQXRvbWljWGNoZ19fXykKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21p
Y1hjaGdfX18KKyAgICAgICAgICAgICAgICBpZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxk
KDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCkt
PmFzPEF0b21pY1ZhbHVlPigpLT5hY2Nlc3NXaWR0aCgpID09IFdpZHRoOCkgeworICAgICAgICAg
ICAgICAgICAgICByZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTRXh0MTY6CkBAIC0xMzQzLDYgKzEz
NTQsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWly
a3MoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDE2KEF0b21pY1hjaGdf
X18pCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlzOiBBdG9taWNYY2hnX19fCisgICAgICAg
ICAgICAgICAgaWYgKGlzQXRvbWljWGNoZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisg
ICAgICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4o
KS0+YWNjZXNzV2lkdGgoKSA9PSBXaWR0aDE2KSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGxh
Y2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICBjYXNlIFNFeHQzMjoKQEAgLTIxMDEsMjIgKzIxMjIsMjUgQEAgcHJpdmF0
ZToKICAgICAgICAgQVNTRVJUKG1fdmFsdWUtPm51bUNoaWxkcmVuKCkgPj0gMik7CiAgICAgICAg
IAogICAgICAgICAvLyBMZWF2ZSBpdCBhbG9uZSBpZiB0aGUgcmlnaHQgY2hpbGQgaXMgYSBjb25z
dGFudC4KLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkpCisgICAg
ICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNDb25zdGFudCgpCisgICAgICAgICAgICB8fCBt
X3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pc0Nv
bnN0YW50KCkpIHsKKyAgICAgICAgYXV0byBzd2FwID0gWyZdICgpIHsKICAgICAgICAgICAgIHN0
ZDo6c3dhcChtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCisg
ICAgICAgIH07CisgICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29u
c3RhbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7CisgICAgICAgIAorICAgICAgICBp
ZiAobV92YWx1ZS0+Y2hpbGQoMSktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUykKKyAgICAg
ICAgICAgIHJldHVybiBzd2FwKCk7CisgICAgICAgIAogICAgICAgICAvLyBTb3J0IHRoZSBvcGVy
YW5kcy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgY2Fub25pY2FsaXphdGlvbi4gV2UgdXNlIHRoZSBp
bmRleCBpbnN0ZWFkIG9mCiAgICAgICAgIC8vIHRoZSBhZGRyZXNzIHRvIG1ha2UgdGhpcyBhdCBs
ZWFzdCBzbGlnaHRseSBkZXRlcm1pbmlzdGljLgotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQo
MCktPmluZGV4KCkgPiBtX3ZhbHVlLT5jaGlsZCgxKS0+aW5kZXgoKSkgewotICAgICAgICAgICAg
c3RkOjpzd2FwKG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAgICAg
ICAgICBtX2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Cisg
ICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5kZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEp
LT5pbmRleCgpKQorICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKICAgICB9CiAKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGEgZm9yd2FyZCBhbmFseXNpcy4gSW5zdGVhZCwg
d2UgdXNlcyBhIGJvdW5kZWQtc2VhcmNoIGJhY2t3YXJkcwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1
ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlW
YWx1ZS5oIgpAQCAtMzQ2LDYgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBl
KCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5
cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0
ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVl
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTG9hZDoKQEAgLTM1
Myw2ICszNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51
bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2
YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgIT0gVm9pZCwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsK
ICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU4OgpAQCAtMzYyLDYgKzM2NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUo
KSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAg
ICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU6CkBAIC0zNjksOCArMzczLDQ5IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgx
KS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZh
bGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1
ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkg
PT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgp
ID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFs
aWRhdGVBdG9taWModmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3Mo
dmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNT
dHJvbmdDQVM6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGls
bCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5u
dW1DaGlsZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVl
LT5jaGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZB
TElEQVRFKGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCks
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUp
OworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAg
ICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6Cisg
ICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgICAgICAgICAgVkFM
SURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+
Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsK
KyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOgorICAgICAgICAgICAgICAgIFZB
TElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2
YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwg
KnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkg
PT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKQEAgLTUzNyw2ICs1ODIsMjAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRh
dGVGZW5jZShWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5
ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5j
ZSgpKQorICAgICAgICAgICAgVkFMSURBVEUobWVtb3J5LT5hY2Nlc3NCYW5rKCkgPT0gR1AsICgi
RmVuY2UgYXQgIiwgKm1lbW9yeSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRlQXRv
bWljKFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSB2
YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBWQUxJREFURShiZXN0
VHlwZShHUCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSA9PSBhdG9taWMtPmFjY2Vzc1R5cGUoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICB9CiAKICAgICB2b2lkIHZhbGlkYXRlU3RhY2tBY2Nlc3Mo
VmFsdWUqIHZhbHVlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5j
cHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQjNfSklU
KQogCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNW
YWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jv
dHRvbVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCkBAIC01MTAsNiArNTEx
LDcgQEAgYm9vbCBWYWx1ZTo6cmV0dXJuc0Jvb2woKSBjb25zdAogICAgIGNhc2UgQWJvdmVFcXVh
bDoKICAgICBjYXNlIEJlbG93RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgorICAg
IGNhc2UgQXRvbWljV2Vha0NBUzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQaGk6
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC01ODks
NiArNTkxLDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBCZWxv
d0VxdWFsOgogICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKICAgICBjYXNlIFNlbGVjdDoKKyAg
ICBjYXNlIERlcGVuZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXY6CiAgICAgY2FzZSBV
RGl2OgpAQCAtNjAwLDE2ICs2MDMsNDQgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0
CiAgICAgY2FzZSBMb2FkOFM6CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoK
LSAgICBjYXNlIExvYWQ6Ci0gICAgICAgIHJlc3VsdC5yZWFkcyA9IGFzPE1lbW9yeVZhbHVlPigp
LT5yYW5nZSgpOworICAgIGNhc2UgTG9hZDogeworICAgICAgICBjb25zdCBNZW1vcnlWYWx1ZSog
bWVtb3J5ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9y
eS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAg
ICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgpOworICAgICAgICAgICAgcmVz
dWx0LmZlbmNlID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQuY29udHJvbERlcGVu
ZGVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFN0b3JlODoKICAg
ICBjYXNlIFN0b3JlMTY6Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmVzdWx0LndyaXRlcyA9
IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAgIGNhc2UgU3RvcmU6IHsKKyAgICAgICAg
Y29uc3QgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICBy
ZXN1bHQud3JpdGVzID0gbWVtb3J5LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNG
ZW5jZSgpKSB7CisgICAgICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPmZlbmNlUmFuZ2Uo
KTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
cmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNh
c2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9t
aWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hv
cjoKKyAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgY29uc3QgQXRvbWljVmFsdWUqIGF0
b21pYyA9IGFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBhdG9taWMt
PnJhbmdlKCkgfCBhdG9taWMtPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9
IGF0b21pYy0+cmFuZ2UoKSB8IGF0b21pYy0+ZmVuY2VSYW5nZSgpOworICAgICAgICBpZiAoYXRv
bWljLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAg
ICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1
ZTsKICAgICAgICAgYnJlYWs7CkBAIC02MTcsMTggKzY0OCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVm
ZmVjdHMoKSBjb25zdAogICAgICAgICBjb25zdCBGZW5jZVZhbHVlKiBmZW5jZSA9IGFzPEZlbmNl
VmFsdWU+KCk7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IGZlbmNlLT5yZWFkOwogICAgICAgICBy
ZXN1bHQud3JpdGVzID0gZmVuY2UtPndyaXRlOwotICAgICAgICAKLSAgICAgICAgLy8gUHJldmVu
dCBraWxsaW5nIG9mIGZlbmNlcyB0aGF0IGNsYWltIG5vdCB0byB3cml0ZSBhbnl0aGluZy4gSXQn
cyBhIGJpdCB3ZWlyZCB0aGF0IHdlIHVzZQotICAgICAgICAvLyBsb2NhbCBzdGF0ZSBhcyB0aGUg
d2F5IHRvIGRvIHRoaXMsIGJ1dCBpdCBoYXBwZW5zIHRvIHdvcms6IHdlIG11c3QgYXNzdW1lIHRo
YXQgd2UgY2Fubm90Ci0gICAgICAgIC8vIGtpbGwgd3JpdGVzTG9jYWxTdGF0ZSB1bmxlc3Mgd2Ug
dW5kZXJzdGFuZHMgZXhhY3RseSB3aGF0IHRoZSBpbnN0cnVjdGlvbiBpcyBkb2luZyAobGlrZQot
ICAgICAgICAvLyB0aGUgd2F5IHRoYXQgZml4U1NBIHVuZGVyc3RhbmRzIFNldC9HZXQgYW5kIHRo
ZSB3YXkgdGhhdCByZWR1Y2VTdHJlbmd0aCBhbmQgb3RoZXJzCi0gICAgICAgIC8vIHVuZGVyc3Rh
bmQgVXBzaWxvbikuIFRoaXMgd291bGQgb25seSBiZWNvbWUgYSBwcm9ibGVtIGlmIHdlIGhhZCBz
b21lIGFuYWx5c2lzIHRoYXQgd2FzCi0gICAgICAgIC8vIGxvb2tpbmcgdG8gdXNlIHRoZSB3cml0
ZXNMb2NhbFN0YXRlIGJpdCB0byBpbnZhbGlkYXRlIGEgQ1NFIG92ZXIgbG9jYWwgc3RhdGUgb3Bl
cmF0aW9ucy4KLSAgICAgICAgLy8gVGhlbiBhIEZlbmNlIHdvdWxkIGxvb2sgYmxvY2ssIHNheSwg
dGhlIGVsaW1pbmF0aW9uIG9mIGEgcmVkdW5kYW50IEdldC4gQnV0IGl0IGxpa2UKLSAgICAgICAg
Ly8gdGhhdCdzIG5vdCBhdCBhbGwgaG93IG91ciBvcHRpbWl6YXRpb25zIGZvciBTZXQvR2V0L1Vw
c2lsb24vUGhpIHdvcmsgLSB0aGV5IGdyb2sgdGhlaXIKLSAgICAgICAgLy8gb3BlcmF0aW9ucyBk
ZWVwbHkgZW5vdWdoIHRoYXQgdGhleSBoYXZlIG5vIG5lZWQgdG8gY2hlY2sgdGhpcyBiaXQgLSBz
byB0aGlzIGNoZWF0IGlzCi0gICAgICAgIC8vIGZpbmUuCi0gICAgICAgIHJlc3VsdC53cml0ZXNM
b2NhbFN0YXRlID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ0NhbGw6CkBAIC02OTQsNiArNzE0LDcgQEAgVmFsdWVL
ZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEJpdHdpc2VD
YXN0OgogICAgIGNhc2UgTmVnOgorICAgIGNhc2UgRGVwZW5kOgogICAgICAgICByZXR1cm4gVmFs
dWVLZXkoa2luZCgpLCB0eXBlKCksIGNoaWxkKDApKTsKICAgICBjYXNlIEFkZDoKICAgICBjYXNl
IFN1YjoKQEAgLTc0NiwxMiArNzY3LDE2IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAog
ICAgIH0KIH0KIAotdm9pZCBWYWx1ZTo6cGVyZm9ybVN1YnN0aXR1dGlvbigpCitib29sIFZhbHVl
OjpwZXJmb3JtU3Vic3RpdHV0aW9uKCkKIHsKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAg
IGZvciAoVmFsdWUqJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgd2hpbGUgKGNoaWxk
LT5vcGNvZGUoKSA9PSBJZGVudGl0eSkKKyAgICAgICAgd2hpbGUgKGNoaWxkLT5vcGNvZGUoKSA9
PSBJZGVudGl0eSkgeworICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgICAgIGNo
aWxkID0gY2hpbGQtPmNoaWxkKDApOworICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIGJvb2wgVmFsdWU6OmlzRnJlZSgpIGNvbnN0CkBAIC04MDEsNiArODI2LDcgQEAg
VHlwZSBWYWx1ZTo6dHlwZUZvcihLaW5kIGtpbmQsIFZhbHVlKiBmaQogICAgIGNhc2UgQ2hlY2tB
ZGQ6CiAgICAgY2FzZSBDaGVja1N1YjoKICAgICBjYXNlIENoZWNrTXVsOgorICAgIGNhc2UgRGVw
ZW5kOgogICAgICAgICByZXR1cm4gZmlyc3RDaGlsZC0+dHlwZSgpOwogICAgIGNhc2UgRnJhbWVQ
b2ludGVyOgogICAgICAgICByZXR1cm4gcG9pbnRlclR5cGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWUuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTEgQEAgcHVibGlj
OgogICAgIAogICAgIE9wY29kZSBvcGNvZGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkub3Bjb2Rl
KCk7IH0KICAgICAKKyAgICAvLyBOb3RlIHRoYXQgdGhlIGtpbmQgaXMgbWVhbnQgdG8gYmUgaW1t
dXRhYmxlLiBEbyB0aGlzIHdoZW4geW91IGtub3cgdGhhdCB0aGlzIGlzIHNhZmUuIEl0J3Mgbm90
CisgICAgLy8gdXN1YWxseSBzYWZlLgorICAgIHZvaWQgc2V0S2luZFVuc2FmZWx5KEtpbmQga2lu
ZCkgeyBtX2tpbmQgPSBraW5kOyB9CisgICAgdm9pZCBzZXRPcGNvZGVVbnNhZmVseShPcGNvZGUg
b3Bjb2RlKSB7IG1fa2luZC5zZXRPcGNvZGUob3Bjb2RlKTsgfQorICAgIAogICAgIC8vIEl0J3Mg
Z29vZCBwcmFjdGljZSB0byBtaXJyb3IgS2luZCBtZXRob2RzIGhlcmUsIHNvIHlvdSBjYW4gc2F5
IHZhbHVlLT5pc0JsYWgoKQogICAgIC8vIGluc3RlYWQgb2YgdmFsdWUtPmtpbmQoKS5pc0JsYWgo
KS4KICAgICBib29sIGlzQ2hpbGwoKSBjb25zdCB7IHJldHVybiBraW5kKCkuaXNDaGlsbCgpOyB9
CkBAIC0xMDcsNiArMTEyLDggQEAgcHVibGljOgogICAgIC8vIHZhbHVlcyB3aXRoIElkZW50aXRp
ZXMgb24gYm90dG9tIGNvbnN0YW50cy4gRm9yIHRoaXMgcmVhc29uLCB0aGlzIHRha2VzIGEgY2Fs
bGJhY2sgdGhhdCBpcwogICAgIC8vIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBib3R0b21zLiBU
aGVyZSdzIGEgdXRpbGl0eSBmb3IgdGhpcywgc2VlIEIzQm90dG9tUHJvdmlkZXIuaC4gWW91CiAg
ICAgLy8gY2FuIGFsc28gYWNjZXNzIHRoYXQgdXRpbGl0eSB1c2luZyByZXBsYWNlV2l0aEJvdHRv
bShJbnNlcnRpb25TZXQmLCBzaXplX3QpLgorICAgIC8vCisgICAgLy8gWW91J3JlIGd1YXJhbnRl
ZWQgdGhhdCBib3R0b20gaXMgemVyby4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCb3R0b21Qcm92
aWRlcj4KICAgICB2b2lkIHJlcGxhY2VXaXRoQm90dG9tKGNvbnN0IEJvdHRvbVByb3ZpZGVyJik7
CiAgICAgCkBAIC0yNTYsNyArMjYzLDcgQEAgcHVibGljOgogICAgIC8vIE1ha2VzIHN1cmUgdGhh
dCBub25lIG9mIHRoZSBjaGlsZHJlbiBhcmUgSWRlbnRpdHkncy4gSWYgYSBjaGlsZCBwb2ludHMg
dG8gSWRlbnRpdHksIHRoaXMgd2lsbAogICAgIC8vIHJlcG9pbnQgaXQgYXQgdGhlIElkZW50aXR5
J3MgY2hpbGQuIEZvciBzaW1wbGljaXR5LCB0aGlzIHdpbGwgZm9sbG93IGFyYml0cmFyaWx5IGxv
bmcgY2hhaW5zCiAgICAgLy8gb2YgSWRlbnRpdHkncy4KLSAgICB2b2lkIHBlcmZvcm1TdWJzdGl0
dXRpb24oKTsKKyAgICBib29sIHBlcmZvcm1TdWJzdGl0dXRpb24oKTsKICAgICAKICAgICAvLyBG
cmVlIHZhbHVlcyBhcmUgdGhvc2Ugd2hvc2UgcHJlc2VuY2UgaXMgZ3VhcmFudGVlZCBub3QgdG8g
aHVydCBjb2RlLiBXZSBjb25zaWRlciBjb25zdGFudHMsCiAgICAgLy8gSWRlbnRpdGllcywgYW5k
IE5vcHMgdG8gYmUgZnJlZS4gQ29uc3RhbnRzIGFyZSBmcmVlIGJlY2F1c2Ugd2UgaG9pc3QgdGhl
bSB0byBhbiBvcHRpbWFsIHBsYWNlLgpAQCAtMzIxLDYgKzMyOCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgSVRvRjoKICAgICAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgY2FzZSBC
cmFuY2g6CisgICAgICAgIGNhc2UgRGVwZW5kOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51
bUFyZ3MgIT0gMSkpCiAgICAgICAgICAgICAgICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsKICAg
ICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAko
cmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwzOCBAQAogCiAjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CiAKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitUeXBlIGJlc3RU
eXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAg
IGNhc2UgV2lkdGg4OgorICAgIGNhc2UgV2lkdGgxNjoKKyAgICBjYXNlIFdpZHRoMzI6CisgICAg
ICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNlIEdQOgorICAgICAgICAgICAgcmV0dXJu
IEludDMyOworICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJuIEZsb2F0OworICAg
ICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBWb2lkOworICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgc3dpdGNoIChiYW5rKSB7Cisg
ICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICByZXR1cm4gSW50NjQ7CisgICAgICAgIGNhc2Ug
RlA6CisgICAgICAgICAgICByZXR1cm4gRG91YmxlOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lkOworICAgIH0KKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBWb2lkOworfQorCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKwogbmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkIzOjpXaWR0aCB3aWR0aCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsMjEg
QEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiBX
aWR0aDY0OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gV2lk
dGg4OwogfQogCitpbmxpbmUgV2lkdGggY2Fub25pY2FsV2lkdGgoV2lkdGggd2lkdGgpCit7Cisg
ICAgcmV0dXJuIHN0ZDo6bWF4KFdpZHRoMzIsIHdpZHRoKTsKK30KKworaW5saW5lIGJvb2wgaXND
YW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gd2lkdGggPj0gV2lkdGgz
MjsKK30KKworVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKTsKKwogaW5saW5l
IFdpZHRoIGNvbnNlcnZhdGl2ZVdpZHRoKEJhbmsgYmFuaykKIHsKICAgICByZXR1cm4gYmFuayA9
PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2NDsKQEAgLTkzLDYgKzEwNiwyMCBAQCBpbmxp
bmUgV2lkdGggd2lkdGhGb3JCeXRlcyh1bnNpZ25lZCBieXRlCiAgICAgfQogfQogCitpbmxpbmUg
dWludDY0X3QgbWFzayhXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAg
Y2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMDAwZmZsbHU7CisgICAg
Y2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDBmZmZmbGx1OworICAg
IGNhc2UgV2lkdGgzMjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDBmZmZmZmZmZmxsdTsKKyAg
ICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHJldHVybiAweGZmZmZmZmZmZmZmZmZmZmZsbHU7Cisg
ICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJBaXJWYWxpZGF0ZS5oIgogI2luY2x1ZGUgIkFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5o
IgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb21waWxhdGlv
bi5oIgpAQCAtNDQsNiArNDUsNyBAQAogI2luY2x1ZGUgIkIzTWF0aEV4dHJhcy5oIgogI2luY2x1
ZGUgIkIzTWVtb3J5VmFsdWUuaCIKICNpbmNsdWRlICJCM01vdmVDb25zdGFudHMuaCIKKyNpbmNs
dWRlICJCM05hdGl2ZVRyYWl0cy5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVk
ZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgogI2luY2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5oIgpAQCAt
Mjk3LDYgKzI5OSwyNCBAQCB2b2lkIHRlc3RMb2FkNDIoKQogICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jKSA9PSA0Mik7CiB9CiAKK3ZvaWQgdGVzdExvYWRBY3E0MigpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBpbnQgeCA9IDQyOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJngp
LAorICAgICAgICAgICAgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSkpOworCisgICAg
YXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgIENIRUNLKGludm9rZTxpbnQ+
KCpjb2RlKSA9PSA0Mik7Cit9CisKIHZvaWQgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbChpbnQzMl90
IG9mZnNldDY0LCBpbnQzMl90IG9mZnNldDMyKQogewogICAgIHsKQEAgLTU3NDgsNiArNTc2OCwz
NSBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQzMihpbnQgYW1vdW50KQogICAgIENIRUNLKHNsb3Qg
PT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3EzMihpbnQg
YW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBz
bG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAm
c2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywg
U3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigp
LCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAgICAgICBzbG90
UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+
KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30KKwog
dm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tMzIoaW50IGFtb3VudCkKIHsKICAgICBQcm9jZWR1cmUg
cHJvYzsKQEAgLTU3OTIsNiArNTg0MSw3NCBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQ4KGludCBh
bW91bnQsIEIzOjpPCiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7CiB9CiAKK3ZvaWQg
dGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2Rl
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgaW50OF90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90
UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xv
dCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3Rv
cmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBz
bG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAgICAgICBzbG90UHRy
LCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBh
dXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5z
dHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpj
b2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30KKwordm9p
ZCB0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9h
ZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIGludDhfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1
ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgJnNsb3QpOworICAgIFZhbHVlKiBsb2FkZWRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4oCisgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBzbG90UHRyLCAw
LCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBP
cmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3Jh
dGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAg
WyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikg
eworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRj
aChqaXQpOworICAgICAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigweGJlZWYpLCAmc2xvdCk7CisgICAgICAgIH0pOworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMg
PSBFZmZlY3RzOjpub25lKCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5mZW5jZSA9IHRydWU7
CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmU4
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICBsb2FkZWRWYWx1ZSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAgICAgICBz
bG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisK
KyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxp
bnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKK30K
Kwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tOChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRP
cGNvZGUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01ODM2LDYgKzU5NTMsMzUgQEAgdm9p
ZCB0ZXN0U3RvcmVBZGRMb2FkMTYoaW50IGFtb3VudCwgQjM6OgogICAgIENIRUNLKHNsb3QgPT0g
MzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3ExNihpbnQgYW1v
dW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQxNl90IHNsb3QgPSAz
NzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUxNiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVh
cFJhbmdlKDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdl
KDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAg
ICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAi
bGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAg
fQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xv
dCA9PSAzNyArIGFtb3VudCk7Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTE2KGludCBh
bW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAg
LTU4NzgsNiArNjAyNCwzMyBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQ2NChpbnQgYW1vdW50KQog
ICAgIENIRUNLKHNsb3QgPT0gMzcwMDAwMDAwMDBsbCArIGFtb3VudCk7CiB9CiAKK3ZvaWQgdGVz
dFN0b3JlUmVsQWRkTG9hZEFjcTY0KGludCBhbW91bnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQ2NF90IHNs
b3QgPSAzNzAwMDAwMDAwMGxsOworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQs
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhl
YXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNB
Uk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7Cisg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQorICAgIENI
RUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNzAw
MDAwMDAwMGxsICsgYW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tNjQoaW50
NjRfdCBhbW91bnQpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzc5MSw3ICsxMzk2NCw3
IEBAIHZvaWQgdGVzdFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCiAgICAgY29tcGlsZUFuZFJ1
bjxpbnQ+KHByb2MpOwogICAgIHVuc2lnbmVkIHN0b3JlQ291bnQgPSAwOwogICAgIGZvciAoVmFs
dWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoTWVtb3J5VmFsdWU6Omlz
U3RvcmUodmFsdWUtPm9wY29kZSgpKSkKKyAgICAgICAgaWYgKGlzU3RvcmUodmFsdWUtPm9wY29k
ZSgpKSkKICAgICAgICAgICAgIHN0b3JlQ291bnQrKzsKICAgICB9CiAgICAgQ0hFQ0tfRVEoc3Rv
cmVDb3VudCwgMnUpOwpAQCAtMTM5OTcsNiArMTQxNzAsNyBAQCB2b2lkIHRlc3RYODZMZWFBZGRB
ZGQoKQogICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0KTsKICAgICAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIENIRUNL
X0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAoMSArIDIpICsgMTAwKTsKICAgICBj
aGVja0Rpc2Fzc2VtYmx5KAogICAgICAgICAqY29kZSwKICAgICAgICAgWyZdIChjb25zdCBjaGFy
KiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CkBAIC0xNDAwNCw3ICsxNDE3OCw2IEBAIHZvaWQgdGVz
dFg4NkxlYUFkZEFkZCgpCiAgICAgICAgICAgICAgICAgfHwgc3Ryc3RyKGRpc2Fzc2VtYmx5LCAi
bGVhIDB4NjQoJXJzaSwlcmRpKSwgJXJheCIpOwogICAgICAgICB9LAogICAgICAgICAiRXhwZWN0
ZWQgdG8gZmluZCBzb21ldGhpbmcgbGlrZSBsZWEgMHg2NCglcmRpLCVyc2kpLCAlcmF4IGJ1dCBk
aWRuJ3QhIik7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksICgx
ICsgMikgKyAxMDApOwogfQogCiB2b2lkIHRlc3RYODZMZWFBZGRTaGxSaWdodCgpCkBAIC0xNDA0
MSw2ICsxNDIxNCw3IEBAIHZvaWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTEoKQogICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKICAg
ICAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIENIRUNLX0VRKGludm9rZTxp
bnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgMik7CiAgICAgY2hlY2tEaXNhc3NlbWJseSgKICAg
ICAgICAgKmNvZGUsCiAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlzYXNzZW1ibHkpIC0+IGJv
b2wgewpAQCAtMTQwNDgsNyArMTQyMjIsNiBAQCB2b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2Nh
bGUxKCkKICAgICAgICAgICAgICAgICB8fCBzdHJzdHIoZGlzYXNzZW1ibHksICJsZWEgKCVyc2ks
JXJkaSksICVyYXgiKTsKICAgICAgICAgfSwKICAgICAgICAgIkV4cGVjdGVkIHRvIGZpbmQgc29t
ZXRoaW5nIGxpa2UgbGVhICglcmRpLCVyc2kpLCAlcmF4IGJ1dCBkaWRuJ3QhIik7Ci0gICAgQ0hF
Q0tfRVEoaW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksIDEgKyAyKTsKIH0KIAogdm9pZCB0
ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlMigpCkBAIC0xNDI3Nyw2ICsxNDQ1MCw2ODAgQEAgdm9p
ZCB0ZXN0T3B0aW1pemVNYXRlcmlhbGl6YXRpb24oKQogICAgIENIRUNLKGZvdW5kKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1dlYWtDQVMoKQoreworICAgIFR5
cGUgdHlwZSA9IE5hdGl2ZVRyYWl0czxUPjo6dHlwZTsKKyAgICBXaWR0aCB3aWR0aCA9IE5hdGl2
ZVRyYWl0czxUPjo6d2lkdGg7CisgICAgCisgICAgYXV0byBjaGVja015RGlzYXNzZW1ibHkgPSBb
Jl0gKENvbXBpbGF0aW9uJiBjb21waWxhdGlvbiwgYm9vbCBmZW5jZWQpIHsKKyAgICAgICAgaWYg
KGlzWDg2KCkpIHsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9u
LCAibG9jayIpOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24s
ICJjbXB4Y2hnIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZmVuY2VkKSB7
CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsZGF4
Iik7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJz
dGx4Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0lu
c3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGR4Iik7CisgICAgICAgICAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJzdHgiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH07CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayog
cmVsb29wID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBkb25lID0gcHJv
Yy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4o
KSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMocmVsb29wKTsKKyAgICAgICAgCisgICAg
ICAgIHJlbG9vcC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwg
T3JpZ2luKCksCisgICAgICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAg
ICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0cikpOworICAgICAg
ICByZWxvb3AtPnNldFN1Y2Nlc3NvcnMoZG9uZSwgcmVsb29wKTsKKyAgICAgICAgCisgICAgICAg
IGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAg
IAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJd
OworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAg
ICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0s
IHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAK
KyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiByZWxvb3AgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9yaWdpbigpKTsKKyAgICAgICAgcm9v
dC0+c2V0U3VjY2Vzc29ycyhyZWxvb3ApOworICAgICAgICAKKyAgICAgICAgcmVsb29wLT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcmVs
b29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAg
ICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFu
Z2UoKSkpOworICAgICAgICByZWxvb3AtPnNldFN1Y2Nlc3NvcnMoZG9uZSwgcmVsb29wKTsKKyAg
ICAgICAgCisgICAgICAgIGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAg
ICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsx
XSA9IDEzOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19F
USh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIGZhbHNl
KTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayog
c3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBC
cmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgs
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBwdHIpKTsKKyAgICAg
ICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhzdWNjLCBmYWlsKTsKKyAgICAgICAgCisgICAgICAgIHN1
Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29k
ZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAg
ICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAg
ICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAg
ICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9
IDEzOworICAgICAgICB3aGlsZSAodmFsdWVbMF0gPT0gNDIpCisgICAgICAgICAgICBpbnZva2U8
dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19j
YXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2
YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29k
ZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAw
KSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNh
c3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2lj
QmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSog
cHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywg
T3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIEludDMy
LCAwKSkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2MpOworICAgICAg
ICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAg
ICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUo
cHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAg
ICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICh2YWx1ZVswXSA9PSA0MikKKyAgICAg
ICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAx
Myk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52
b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0
aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAg
ICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRv
bWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigp
LCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9j
KTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAg
dmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hpbGUgKCFpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVl
KSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgCisgICAgICAgIHZh
bHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0soIWludm9rZTxib29s
PigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0
PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVj
a015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0
b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4
YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSk7
CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBU
IHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEz
OworICAgICAgICB3aGlsZSAoaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpIHsgfQorICAgICAg
ICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENI
RUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIAorICAgICAgICB2YWx1ZVswXSA9IHN0YXRp
Y19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKGludm9rZTxib29sPigqY29kZSwgdmFsdWUp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHko
KmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAg
ICAgICAgIDQyKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2Mp
OworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2
YWx1ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAoIWludm9rZTxib29sPigqY29kZSwgYml0d2lz
ZV9jYXN0PGludHB0cl90Pih2YWx1ZSkgLSA0MikpIHsgfQorICAgICAgICBDSEVDS19FUSh2YWx1
ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFd
LCAxMyk7CisgICAgICAgIAorICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7
CisgICAgICAgIENIRUNLKCFpbnZva2U8Ym9vbD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnRwdHJf
dD4odmFsdWUpIC0gNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0
PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVj
a015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK3ZvaWQgdGVzdEF0b21pY1N0cm9uZ0NBUygpCit7CisgICAgVHlwZSB0eXBlID0gTmF0
aXZlVHJhaXRzPFQ+Ojp0eXBlOworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3
aWR0aDsKKyAgICAKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRp
b24mIGNvbXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAgICAgICBpZiAoaXNYODYoKSkgewor
ICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsb2NrIik7Cisg
ICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImNtcHhjaGciKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsKKyAgICAgICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgiKTsKKyAgICAgICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0bHgiKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29t
cGlsYXRpb24sICJsZHgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihj
b21waWxhdGlvbiwgInN0eCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKyAg
ICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5h
ZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMs
IE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29u
c3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAg
ICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29u
c3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICByb290LT5zZXRTdWNj
ZXNzb3JzKHN1Y2MsIGZhaWwpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9y
aWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFp
bC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisg
ICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07Cisg
ICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGlu
dm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
ICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+
KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxU
PigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tN
eURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAg
QmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZh
bHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2lu
KCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAg
ICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICBwdHIs
IDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKSwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIHJv
b3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7CisgICAgICAgIAorICAgICAgICBzdWNjLT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1As
IHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1
Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAor
ICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwor
ICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2
YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsK
KyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0s
IDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBp
bnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0
YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAg
ICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIGZhbHNlKTsKKyAgICB9CisgICAgCisgICAg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAg
CisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBO
b3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21p
Y1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmln
aW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAg
ICAgICAgICAgICBwdHIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29y
cyhmYWlsLCBzdWNjKTsKKyAgICAgICAgCisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGZhaWwtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAg
ICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZva2U8
dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19j
YXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2
YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29k
ZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAw
KSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNh
c3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9y
aWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkp
OworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAg
VCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAx
MzsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIDQyKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+
KDMwMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFsdWUpLCBzdGF0aWNf
Y2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+
KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015
RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21p
Y1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhi
ZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7
CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBU
IHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEz
OworICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENI
RUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDAp
OworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7
CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdpbigpLAorICAgICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwg
NDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJv
YywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpKTsKKyAgICAgICAgICAgIAor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOwor
ICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBD
SEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVl
WzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0s
IDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBD
SEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCAmdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwg
MTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1hjaGcoQjM6Ok9wY29kZSBv
cGNvZGUpCit7CisgICAgVHlwZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBlOworICAgIFdp
ZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBhdXRvIGRvVGhl
TWF0aCA9IFsmXSAoVCYgbWVtb3J5LCBUIG9wZXJhbmQpIC0+IFQgeworICAgICAgICBUIG9sZFZh
bHVlID0gbWVtb3J5OworICAgICAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgICAgICBjYXNlIEF0
b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBtZW1vcnkgKz0gb3BlcmFuZDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBtZW1vcnkg
Jj0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGdP
cjoKKyAgICAgICAgICAgIG1lbW9yeSB8PSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgICAgIG1lbW9yeSAtPSBvcGVyYW5k
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAg
ICAgICAgIG1lbW9yeSBePSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgIG1lbW9yeSA9IG9wZXJhbmQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOworICAgIH07
CisgICAgCisgICAgYXV0byBvbGRWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3BlcmFuZCkgLT4g
VCB7CisgICAgICAgIHJldHVybiBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5kKTsKKyAgICB9Owor
ICAgIAorICAgIGF1dG8gbmV3VmFsdWUgPSBbJl0gKFQgbWVtb3J5LCBUIG9wZXJhbmQpIC0+IFQg
eworICAgICAgICBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuIG1l
bW9yeTsKKyAgICB9OworICAgIAorICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChD
b21waWxhdGlvbiYgY29tcGlsYXRpb24sIGJvb2wgZmVuY2VkKSB7CisgICAgICAgIGlmIChpc1g4
NigpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsb2Nr
Iik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGZlbmNlZCkgeworICAgICAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGRheCIpOworICAgICAg
ICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3RseCIpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihj
b21waWxhdGlvbiwgImxkeCIpOworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9u
KGNvbXBpbGF0aW9uLCAic3R4Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Owor
ICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9y
aWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgMSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQg
dmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAgICAgICAgdmFsdWVbMV0gPSAxMDA7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFsdWUpLCBvbGRWYWx1ZSg1LCAx
KSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCAxKSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzFdLCAxMDApOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNv
ZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgcHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGls
ZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1OworICAg
ICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2
YWx1ZSksIG9sZFZhbHVlKDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdW
YWx1ZSg1LCA0MikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTAwKTsKKyAgICAgICAg
Y2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7
CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAgICAgICAgdmFs
dWVbMV0gPSAxMDA7CisgICAgICAgIGludm9rZTxUPigqY29kZSwgdmFsdWUpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVswXSwgbmV3VmFsdWUoNSwgNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMV0sIDEwMCk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7Cisg
ICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
dG9taWNWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0aCwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCA0MiksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAwLCBIZWFw
UmFuZ2UoNDIpLCBIZWFwUmFuZ2UoKSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBp
bGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAg
ICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAgIGludm9rZTxUPigqY29kZSwgdmFsdWUpOwor
ICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFsdWUoNSwgNDIpKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwg
ZmFsc2UpOworICAgIH0KK30KKwordm9pZCB0ZXN0RGVwZW5kMzIoKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgcHRyLCAwKTsK
KyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgcHRyLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBaRXh0MzIs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RGVwZW5kLCBPcmlnaW4oKSwgZmlyc3QpKSksCisgICAgICAgIDQpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmlyc3QsIHNlY29uZCkp
OworICAgIAorICAgIGludDMyX3QgdmFsdWVzWzJdOworICAgIHZhbHVlc1swXSA9IDQyOworICAg
IHZhbHVlc1sxXSA9IDB4YmVlZjsKKyAgICAKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2Mp
OworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2Rl
LCAiZW9yIik7CisgICAgZWxzZSBpZiAoaXNYODYoKSkgeworICAgICAgICBjaGVja0RvZXNOb3RV
c2VJbnN0cnVjdGlvbigqY29kZSwgIm1mZW5jZSIpOworICAgICAgICBjaGVja0RvZXNOb3RVc2VJ
bnN0cnVjdGlvbigqY29kZSwgImxvY2siKTsKKyAgICB9CisgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dDMyX3Q+KCpjb2RlLCB2YWx1ZXMpLCA0MiArIDB4YmVlZik7Cit9CisKK3ZvaWQgdGVzdERlcGVu
ZDY0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFs
dWUqIGZpcnN0ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2
NCwgT3JpZ2luKCksIHB0ciwgMCk7CisgICAgVmFsdWUqIHNlY29uZCA9IHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksIHB0ciwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGVw
ZW5kLCBPcmlnaW4oKSwgZmlyc3QpKSwKKyAgICAgICAgOCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBmaXJzdCwgc2Vjb25kKSk7Cisg
ICAgCisgICAgaW50NjRfdCB2YWx1ZXNbMl07CisgICAgdmFsdWVzWzBdID0gNDI7CisgICAgdmFs
dWVzWzFdID0gMHhiZWVmOworICAgIAorICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7Cisg
ICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJl
b3IiKTsKKyAgICBlbHNlIGlmIChpc1g4NigpKSB7CisgICAgICAgIGNoZWNrRG9lc05vdFVzZUlu
c3RydWN0aW9uKCpjb2RlLCAibWZlbmNlIik7CisgICAgICAgIGNoZWNrRG9lc05vdFVzZUluc3Ry
dWN0aW9uKCpjb2RlLCAibG9jayIpOworICAgIH0KKyAgICBDSEVDS19FUShpbnZva2U8aW50NjRf
dD4oKmNvZGUsIHZhbHVlcyksIDQyICsgMHhiZWVmKTsKK30KKwogdm9pZCB0ZXN0V2FzbUJvdW5k
c0NoZWNrKHVuc2lnbmVkIG9mZnNldCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTE0Mzcw
LDYgKzE1MjE3LDEzIEBAIGRvdWJsZSBuZWdhdGl2ZVplcm8oKQogICAgIHJldHVybiAtemVybygp
OwogfQogCisjZGVmaW5lIFJVTl9OT1codGVzdCkgZG8geyAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIGlmICghc2hvdWxkUnVuKCN0ZXN0KSkgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRh
dGFMb2coI3Rlc3QgIi4uLlxuIik7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRlc3Q7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRhdGFMb2coI3Rlc3Qg
IjogT0shXG4iKTsgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCiAjZGVmaW5l
IFJVTih0ZXN0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICgh
c2hvdWxkUnVuKCN0ZXN0KSkgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBicmVhazsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNDQyMSwxMiArMTUyNzUsMTEgQEAg
dm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgICAgICByZXR1cm4gIWZpbHRlciB8fCAh
IXN0cmNhc2VzdHIodGVzdE5hbWUsIGZpbHRlcik7CiAgICAgfTsKIAotICAgIC8vIFdlIHJ1biB0
aGlzIHRlc3QgZmlyc3QgYmVjYXVzZSBpdCBmaWRkbGVzIHdpdGggc29tZQotICAgIC8vIEpTQyBv
cHRpb25zLgotICAgIHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxlZDIo
KTsKKyAgICBSVU5fTk9XKHRlc3RUZXJtaW5hbFBhdGNocG9pbnRUaGF0TmVlZHNUb0JlU3BpbGxl
ZDIoKSk7CiAKICAgICBSVU4odGVzdDQyKCkpOwogICAgIFJVTih0ZXN0TG9hZDQyKCkpOworICAg
IFJVTih0ZXN0TG9hZEFjcTQyKCkpOwogICAgIFJVTih0ZXN0TG9hZE9mZnNldEltbTlNYXgoKSk7
CiAgICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1heFBsdXNPbmUoKSk7CiAgICAgUlVOKHRlc3RM
b2FkT2Zmc2V0SW1tOU1heFBsdXNUd28oKSk7CkBAIC0xNTA5OSwxNiArMTU5NTIsMjMgQEAgdm9p
ZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0TmVnMzIoNTIpKTsKICAgICBS
VU4odGVzdE5lZ1B0cig1MykpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMzIoNDYpKTsKKyAg
ICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTMyKDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFk
ZExvYWRJbW0zMig0NikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkNjQoNDYwMCkpOworICAg
IFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxNjQoNDYwMCkpOwogICAgIFJVTih0ZXN0U3RvcmVB
ZGRMb2FkSW1tNjQoNDYwMCkpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkOCg0LCBMb2FkOFop
KTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoNCwgTG9hZDhaKSk7CisgICAgUlVO
KHRlc3RTdG9yZVJlbEFkZEZlbmNlTG9hZEFjcTgoNCwgTG9hZDhaKSk7CiAgICAgUlVOKHRlc3RT
dG9yZUFkZExvYWRJbW04KDQsIExvYWQ4WikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkOCg0
LCBMb2FkOFMpKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoNCwgTG9hZDhTKSk7
CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW04KDQsIExvYWQ4UykpOwogICAgIFJVTih0ZXN0
U3RvcmVBZGRMb2FkMTYoNiwgTG9hZDE2WikpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2Fk
QWNxMTYoNiwgTG9hZDE2WikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tMTYoNiwgTG9h
ZDE2WikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMTYoNiwgTG9hZDE2UykpOworICAgIFJV
Tih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYoNiwgTG9hZDE2UykpOwogICAgIFJVTih0ZXN0U3Rv
cmVBZGRMb2FkSW1tMTYoNiwgTG9hZDE2UykpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMzJJ
bmRleCg0NikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tMzJJbmRleCg0NikpOwpAQCAt
MTU4MzEsNiArMTY2OTEsNDEgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJV
Tih0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MigpKTsKICAgICBSVU4odGVzdExvYWRCYXNlSW5kZXhT
aGlmdDMyKCkpOwogICAgIFJVTih0ZXN0T3B0aW1pemVNYXRlcmlhbGl6YXRpb24oKSk7CisgICAg
CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDhfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9t
aWNXZWFrQ0FTPGludDE2X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxpbnQzMl90
PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50NjRfdD4oKSk7CisgICAgUlVOKHRl
c3RBdG9taWNTdHJvbmdDQVM8aW50OF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NB
UzxpbnQxNl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQzMl90PigpKTsK
KyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ2NF90PigpKTsKKyAgICBSVU4odGVzdEF0
b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hn
PGludDE2X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJf
dD4oQXRvbWljWGNoZ0FkZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9t
aWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ0Fu
ZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hnQW5kKSk7Cisg
ICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAgICBSVU4o
dGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRv
bWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxp
bnQxNl90PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4o
QXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hj
aGdPcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdTdWIpKTsK
KyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ1N1YikpOworICAgIFJV
Tih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnU3ViKSk7CisgICAgUlVOKHRlc3RB
dG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hj
aGc8aW50OF90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2
X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRv
bWljWGNoZ1hvcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hn
WG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZykpOworICAg
IFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hnKSk7CisgICAgUlVOKHRlc3RB
dG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGcpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8
aW50NjRfdD4oQXRvbWljWGNoZykpOworICAgIFJVTih0ZXN0RGVwZW5kMzIoKSk7CisgICAgUlVO
KHRlc3REZXBlbmQ2NCgpKTsKIAogICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKDApKTsKICAg
ICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjaygxMDApKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQXJnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFyZy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3
IEBAIHVuc2lnbmVkIEFyZzo6anNIYXNoKCkgY29uc3QKICAgICBjYXNlIFJlbENvbmQ6CiAgICAg
Y2FzZSBSZXNDb25kOgogICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICBjYXNlIFN0YXR1c0NvbmQ6
CiAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX29mZnNldCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTEwLDYgKzExMSw5IEBAIHVuc2ln
bmVkIEFyZzo6anNIYXNoKCkgY29uc3QKICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX29mZnNldCk7CiAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9vZmZzZXQgPj4gMzIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbXBsZUFkZHI6
CisgICAgICAgIHJlc3VsdCArPSBtX2Jhc2UuaW50ZXJuYWxWYWx1ZSgpOworICAgICAgICBicmVh
azsKICAgICBjYXNlIEFkZHI6CiAgICAgICAgIHJlc3VsdCArPSBtX29mZnNldDsKICAgICAgICAg
cmVzdWx0ICs9IG1fYmFzZS5pbnRlcm5hbFZhbHVlKCk7CkBAIC0xNTAsNiArMTU0LDkgQEAgdm9p
ZCBBcmc6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNlIEJpdEltbTY0Ogog
ICAgICAgICBvdXQucHJpbnRmKCIkMHglbGx4Iiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nIHVuc2ln
bmVkPihtX29mZnNldCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTaW1wbGVBZGRyOgor
ICAgICAgICBvdXQucHJpbnQoIigiLCBiYXNlKCksICIpIik7CisgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIEFkZHI6CiAgICAgICAgIGlmIChvZmZzZXQoKSkKICAgICAgICAgICAgIG91dC5wcmlu
dChvZmZzZXQoKSk7CkBAIC0xODIsNiArMTg5LDkgQEAgdm9pZCBBcmc6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKICAgICBjYXNlIERvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5wcmludChh
c0RvdWJsZUNvbmRpdGlvbigpKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RhdHVzQ29u
ZDoKKyAgICAgICAgb3V0LnByaW50KGFzU3RhdHVzQ29uZGl0aW9uKCkpOworICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBvdXQucHJpbnQocG9pbnRlckR1bXAoc3Bl
Y2lhbCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIyMCw2ICsyMzAsOSBAQCB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkJpdEltbTY0Ogog
ICAgICAgICBvdXQucHJpbnQoIkJpdEltbTY0Iik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEFyZzo6U2ltcGxlQWRkcjoKKyAgICAgICAgb3V0LnByaW50KCJTaW1wbGVBZGRyIik7CisgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEFyZzo6QWRkcjoKICAgICAgICAgb3V0LnByaW50KCJBZGRy
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTI0MSw2ICsyNTQsOSBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkRvdWJsZUNvbmQ6CiAgICAg
ICAgIG91dC5wcmludCgiRG91YmxlQ29uZCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
cmc6OlN0YXR1c0NvbmQ6CisgICAgICAgIG91dC5wcmludCgiU3RhdHVzQ29uZCIpOworICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNwZWNpYWw6CiAgICAgICAgIG91dC5wcmludCgiU3Bl
Y2lhbCIpOwogICAgICAgICByZXR1cm47CkBAIC0yODUsNiArMzAxLDkgQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpFYXJseURlZjoKICAg
ICAgICAgb3V0LnByaW50KCJFYXJseURlZiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
cmc6OkVhcmx5WkRlZjoKKyAgICAgICAgb3V0LnByaW50KCJFYXJseVpEZWYiKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQXJnOjpTY3JhdGNoOgogICAgICAgICBvdXQucHJpbnQoIlNjcmF0
Y2giKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJBcmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckFyZy5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICAvLyBUaGVzZSBhcmUgdGhlIGFkZHJlc3Nlcy4gSW5zdHJ1Y3Rpb25zIG1heSBsb2FkIGZy
b20gKFVzZSksIHN0b3JlIHRvIChEZWYpLCBvciBldmFsdWF0ZQogICAgICAgICAvLyAoVXNlQWRk
cikgYWRkcmVzc2VzLgorICAgICAgICBTaW1wbGVBZGRyLAogICAgICAgICBBZGRyLAogICAgICAg
ICBTdGFjaywKICAgICAgICAgQ2FsbEFyZywKQEAgLTgyLDYgKzgzLDcgQEAgcHVibGljOgogICAg
ICAgICBSZWxDb25kLAogICAgICAgICBSZXNDb25kLAogICAgICAgICBEb3VibGVDb25kLAorICAg
ICAgICBTdGF0dXNDb25kLAogICAgICAgICBTcGVjaWFsLAogICAgICAgICBXaWR0aEFyZwogICAg
IH07CkBAIC0xNTEsNiArMTUzLDggQEAgcHVibGljOgogICAgICAgICAvLyBhcyBVc2UgaGFzIHVu
ZGVmaW5lZCBiZWhhdmlvcjogdGhlIHVzZSBtYXkgaGFwcGVuIGJlZm9yZSB0aGUgZGVmLCBvciBp
dCBtYXkgaGFwcGVuIGFmdGVyCiAgICAgICAgIC8vIGl0LgogICAgICAgICBFYXJseURlZiwKKyAg
ICAgICAgICAgIAorICAgICAgICBFYXJseVpEZWYsCiAKICAgICAgICAgLy8gU29tZSBpbnN0cnVj
dGlvbnMgbmVlZCBhIHNjcmF0Y2ggcmVnaXN0ZXIuIFdlIG1vZGVsIHRoaXMgYnkgc2F5aW5nIHRo
YXQgdGhlIHRlbXBvcmFyeSBpcwogICAgICAgICAvLyBkZWZpbmVkIGVhcmx5IGFuZCB1c2VkIGxh
dGUuIFRoaXMgcm9sZSBpbXBsaWVzIHRoYXQuCkBAIC0xODYsNiArMTkwLDcgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBF
YXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMDYsNiAr
MjExLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgU2Ny
YXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0yMjgsNiArMjM0LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFk
ZHI6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAg
ICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gcm9sZTsKICAgICAgICAgY2Fz
ZSBVc2U6CiAgICAgICAgICAgICByZXR1cm4gQ29sZFVzZTsKQEAgLTI1Myw2ICsyNjAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoK
ICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0yNzQsNiArMjgyLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFpEZWY6CiAgICAg
ICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBF
YXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTQsNiArMzAzLDcgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlWkRlZjoKICAgICAgICAgY2FzZSBFYXJseURl
ZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMTUsNiArMzI1LDcgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAg
Y2FzZSBTY3JhdGNoOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMz
MCw2ICszNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2Fz
ZSBMYXRlVXNlOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRl
ZjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU4LDYgKzM3MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVz
ZVpEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00MTYsNiArNDI5
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpZ0ltbShiaXR3aXNlX2Nhc3Q8aW50cHRy
X3Q+KGFkZHJlc3MpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgQXJnIHNpbXBsZUFkZHIoQWlyOjpU
bXAgcHRyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHB0ci5pc0dQKCkpOworICAgICAgICBBcmcg
cmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gU2ltcGxlQWRkcjsKKyAgICAgICAgcmVz
dWx0Lm1fYmFzZSA9IHB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBz
dGF0aWMgQXJnIGFkZHIoQWlyOjpUbXAgYmFzZSwgaW50MzJfdCBvZmZzZXQgPSAwKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGJhc2UuaXNHUCgpKTsKQEAgLTUzMyw2ICs1NTUsMTQgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHN0YXRpYyBBcmcgc3RhdHVz
Q29uZChNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uIGNvbmRpdGlvbikKKyAgICB7Cisg
ICAgICAgIEFyZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBTdGF0dXNDb25kOwor
ICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBjb25kaXRpb247CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCiAgICAgc3RhdGljIEFyZyBzcGVjaWFsKEFpcjo6U3BlY2lhbCogc3BlY2lh
bCkKICAgICB7CiAgICAgICAgIEFyZyByZXN1bHQ7CkBAIC02MDgsNiArNjM4LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH0KIAorICAgIGJvb2wgaXNTaW1wbGVBZGRyKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0gU2ltcGxlQWRkcjsKKyAgICB9CisKICAgICBi
b29sIGlzQWRkcigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4ga2luZCgpID09IEFkZHI7
CkBAIC02MzEsNiArNjY2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNNZW1vcnkoKSBjb25zdAog
ICAgIHsKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRy
OgogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGNhc2UgU3RhY2s6CiAgICAgICAgIGNhc2Ug
Q2FsbEFyZzoKQEAgLTY0MSw2ICs2NzcsMTMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYW4gaWRpb21hdGljIHN0YWNrIHJlZmVy
ZW5jZS4gSXQgbWF5IHJldHVybiBmYWxzZSBmb3Igc29tZSBraW5kcyBvZgorICAgIC8vIHN0YWNr
IHJlZmVyZW5jZXMuIFRoZSBmb2xsb3dpbmcgaWRpb21zIGFyZSByZWNvZ25pemVkOgorICAgIC8v
IC0gdGhlIFN0YWNrIGtpbmQKKyAgICAvLyAtIHRoZSBDYWxsQXJnIGtpbmQKKyAgICAvLyAtIHRo
ZSBBZGRyIGtpbmQgd2l0aCB0aGUgYmFzZSBiZWluZyBlaXRoZXIgU1Agb3IgRlAKKyAgICAvLyBD
YWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gYXJlIGFsbG93ZWQgdG8gZXhwZWN0IHRoYXQgaWYgaXQg
cmV0dXJucyB0cnVlLCB0aGVuIGl0IG11c3QgYmUgb25lIG9mCisgICAgLy8gdGhlc2UgZWFzeS10
by1yZWNvZ25pemUga2luZHMuIFNvLCBtYWtpbmcgdGhpcyBmdW5jdGlvbiByZWNvZ25pemUgbW9y
ZSBraW5kcyBjb3VsZCBicmVhayB0aGluZ3MuCiAgICAgYm9vbCBpc1N0YWNrTWVtb3J5KCkgY29u
c3Q7CiAKICAgICBib29sIGlzUmVsQ29uZCgpIGNvbnN0CkBAIC02NTgsMTIgKzcwMSwxOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBraW5kKCkgPT0gRG91YmxlQ29uZDsKICAgICB9CiAKKyAg
ICBib29sIGlzU3RhdHVzQ29uZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4ga2luZCgp
ID09IFN0YXR1c0NvbmQ7CisgICAgfQorCiAgICAgYm9vbCBpc0NvbmRpdGlvbigpIGNvbnN0CiAg
ICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAgICAgICBjYXNlIFJlbENvbmQ6CiAg
ICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBj
YXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc3NCwxMCArODIzLDE2IEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBCaWdJbW0pOwogICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4obV9vZmZzZXQpKTsKICAgICB9
CisgICAgCisgICAgQWlyOjpUbXAgcHRyKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChr
aW5kKCkgPT0gU2ltcGxlQWRkcik7CisgICAgICAgIHJldHVybiBtX2Jhc2U7CisgICAgfQogCiAg
ICAgQWlyOjpUbXAgYmFzZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoa2luZCgpID09
IEFkZHIgfHwga2luZCgpID09IEluZGV4KTsKKyAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBTaW1w
bGVBZGRyIHx8IGtpbmQoKSA9PSBBZGRyIHx8IGtpbmQoKSA9PSBJbmRleCk7CiAgICAgICAgIHJl
dHVybiBtX2Jhc2U7CiAgICAgfQogCkBAIC04NDQsNiArODk5LDcgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIEJpZ0ltbToKICAgICAgICAgY2FzZSBCaXRJbW06CiAgICAgICAgIGNhc2UgQml0SW1t
NjQ6CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgogICAgICAg
ICBjYXNlIEluZGV4OgogICAgICAgICBjYXNlIFN0YWNrOgpAQCAtODUxLDYgKzkwNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAg
ICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBj
YXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTg3MiwxMCArOTI5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25k
OgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAg
ICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2Ug
V2lkdGhBcmc6CiAgICAgICAgIGNhc2UgSW52YWxpZDoKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAg
IGNhc2UgSW5kZXg6CiAgICAgICAgIGNhc2UgU3RhY2s6CkBAIC0xMDQ5LDYgKzExMDgsOCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZEJpdEltbUZvcm0odmFsdWUoKSk7CiAg
ICAgICAgIGNhc2UgQml0SW1tNjQ6CiAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZEJpdEltbTY0
Rm9ybSh2YWx1ZSgpKTsKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgY2FzZSBTdGFjazoKICAgICAg
ICAgY2FzZSBDYWxsQXJnOgpAQCAtMTA1OCw2ICsxMTE5LDcgQEAgcHVibGljOgogICAgICAgICBj
YXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVD
b25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2UgU3BlY2lhbDoKICAg
ICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTA3MCw2
ICsxMTMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3dpdGNoIChtX2tpbmQpIHsKICAg
ICAgICAgY2FzZSBUbXA6CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAgY2FzZSBB
ZGRyOgogICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMTEwLDYgKzExNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQoaXNBbnlVc2Uo
YXJnUm9sZSkgfHwgaXNBbnlEZWYoYXJnUm9sZSkpOwogICAgICAgICAgICAgZnVuY3RvcihtX2Jh
c2UsIGFyZ1JvbGUsIGFyZ0JhbmssIGFyZ1dpZHRoKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgICAgIGZ1
bmN0b3IobV9iYXNlLCBVc2UsIEdQLCBhcmdSb2xlID09IFVzZUFkZHIgPyBhcmdXaWR0aCA6IHBv
aW50ZXJXaWR0aCgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE0NCw5ICsxMjA4LDExIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVChpc0ltbSgpKTsKICAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXJWYWx1ZSgpKTsKICAgICB9Ci0KKyAg
ICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhc0FkZHJlc3MoKSBjb25zdAogICAgIHsK
KyAgICAgICAgaWYgKGlzU2ltcGxlQWRkcigpKQorICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5ncHIoKSk7CiAgICAgICAgIEFTU0VSVChpc0FkZHIoKSk7
CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UuZ3ByKCksIHN0
YXRpY19jYXN0PGludDMyX3Q+KG1fb2Zmc2V0KSk7CiAgICAgfQpAQCAtMTE3Nyw2ICsxMjQzLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpE
b3VibGVDb25kaXRpb24+KG1fb2Zmc2V0KTsKICAgICB9CiAgICAgCisgICAgTWFjcm9Bc3NlbWJs
ZXI6OlN0YXR1c0NvbmRpdGlvbiBhc1N0YXR1c0NvbmRpdGlvbigpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQoaXNTdGF0dXNDb25kKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
TWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbj4obV9vZmZzZXQpOworICAgIH0KKyAgICAK
ICAgICAvLyBUZWxscyB5b3UgaWYgdGhlIEFyZyBpcyBpbnZlcnRpYmxlLiBPbmx5IGNvbmRpdGlv
biBhcmd1bWVudHMgYXJlIGludmVydGlibGUsIGFuZCBldmVuIGZvciB0aG9zZSwgdGhlcmUKICAg
ICAvLyBhcmUgYSBmZXcgZXhjZXB0aW9ucyAtIG5vdGFibHkgT3ZlcmZsb3cgYW5kIFNpZ25lZC4K
ICAgICBib29sIGlzSW52ZXJ0aWJsZSgpIGNvbnN0CkBAIC0xMTg0LDYgKzEyNTYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAg
ICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyOjppc0ludmVydGlibGUoYXNSZXN1bHRDb25kaXRpb24oKSk7CkBA
IC0xMjA0LDYgKzEyNzcsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gcmVzQ29uZChN
YWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzUmVzdWx0Q29uZGl0aW9uKCkpKTsKICAgICAgICAgY2Fz
ZSBEb3VibGVDb25kOgogICAgICAgICAgICAgcmV0dXJuIGRvdWJsZUNvbmQoTWFjcm9Bc3NlbWJs
ZXI6OmludmVydChhc0RvdWJsZUNvbmRpdGlvbigpKSk7CisgICAgICAgIGNhc2UgU3RhdHVzQ29u
ZDoKKyAgICAgICAgICAgIHJldHVybiBzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQo
YXNTdGF0dXNDb25kaXRpb24oKSkpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAko
cmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNp
Y0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw2ICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlCiAKIGNvbnN0IGNoYXIqIGNvbnN0IEJhc2ljQmxvY2s6
OmR1bXBQcmVmaXggPSAiIyI7CiAKK3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29ycyhGcmVx
dWVudGVkQmxvY2sgdGFyZ2V0KQoreworICAgIG1fc3VjY2Vzc29ycy5yZXNpemUoMSk7CisgICAg
bV9zdWNjZXNzb3JzWzBdID0gdGFyZ2V0OworfQorCit2b2lkIEJhc2ljQmxvY2s6OnNldFN1Y2Nl
c3NvcnMoRnJlcXVlbnRlZEJsb2NrIHRha2VuLCBGcmVxdWVudGVkQmxvY2sgbm90VGFrZW4pCit7
CisgICAgbV9zdWNjZXNzb3JzLnJlc2l6ZSgyKTsKKyAgICBtX3N1Y2Nlc3NvcnNbMF0gPSB0YWtl
bjsKKyAgICBtX3N1Y2Nlc3NvcnNbMV0gPSBub3RUYWtlbjsKK30KKwogYm9vbCBCYXNpY0Jsb2Nr
OjphZGRQcmVkZWNlc3NvcihCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICByZXR1cm4gQjM6OmFk
ZFByZWRlY2Vzc29yKHRoaXMsIGJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMz
LDcgKzMzLDExIEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFj
ZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lPiBjbGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CisKK25hbWVzcGFjZSBBaXIgewog
CiBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKIGNsYXNzIENvZGU7CkBAIC05OSw2ICsxMDMsOSBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIGNvbnN0IHsg
cmV0dXJuIG1fc3VjY2Vzc29yczsgfQogICAgIFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3NvcnMoKSB7
IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KIAorICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhGcmVxdWVu
dGVkQmxvY2spOworICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2ssIEZyZXF1
ZW50ZWRCbG9jayk7CisKICAgICBCYXNpY0Jsb2NrKiBzdWNjZXNzb3JCbG9jayh1bnNpZ25lZCBp
bmRleCkgY29uc3QgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5ibG9jaygpOyB9CiAgICAgQmFz
aWNCbG9jayomIHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBzdWNjZXNz
b3IoaW5kZXgpLmJsb2NrKCk7IH0KICAgICBTdWNjZXNzb3JDb2xsZWN0aW9uPEJhc2ljQmxvY2ss
IFN1Y2Nlc3Nvckxpc3Q+IHN1Y2Nlc3NvckJsb2NrcygpCkBAIC0xMzMsNiArMTQwLDcgQEAgcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgZnJpZW5kIGNs
YXNzIENvZGU7CiAgICAgZnJpZW5kIGNsYXNzIEluc2VydGlvblNldDsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEIzOjpHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAg
CiAgICAgQmFzaWNCbG9jayh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNl
cnRpb25TZXQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCisKKyNpZiBF
TkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkFp
ckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK0Jsb2NrSW5zZXJ0aW9uU2V0OjpCbG9j
a0luc2VydGlvblNldChDb2RlICZjb2RlKQorICAgIDogR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0
KGNvZGUubV9ibG9ja3MpCit7Cit9CisKK0Jsb2NrSW5zZXJ0aW9uU2V0Ojp+QmxvY2tJbnNlcnRp
b25TZXQoKQoreworfQorCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1
ZGUgIkIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiQWlyQ29kZS5oIgor
I2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworY2xhc3MgSW5z
ZXJ0aW9uU2V0OworCit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2Nr
Pjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CisKK2NsYXNzIEJsb2NrSW5zZXJ0aW9u
U2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPiB7CitwdWJs
aWM6CisgICAgQmxvY2tJbnNlcnRpb25TZXQoQ29kZSYpOworICAgIH5CbG9ja0luc2VydGlvblNl
dCgpOworICAgIAorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZXZlbnR1YWxseSBpbXBsZW1lbnQg
QjM6OkJsb2NrSW5zZXJ0aW9uU2V0J3Mgc3BsaXRGb3J3YXJkKCkuCit9OworCit9IH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5jcHAJKHJldmlzaW9u
IDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuY3Bw
CShub25leGlzdGVudCkKQEAgLTEsMjQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQWlyRHVtcEFzSlMuaCIKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRlICJBaXJD
b2RlLmgiCi0jaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewotCi1uYW1lc3BhY2UgewotCi1DU3RyaW5nIHZh
ck5hbWVGb3JCbG9ja0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgcmV0dXJuIHRvQ1N0
cmluZygiYmIiLCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShCYXNpY0Jsb2NrKiBibG9j
aykKLXsKLSAgICByZXR1cm4gdmFyTmFtZUZvckJsb2NrQXRJbmRleChibG9jay0+aW5kZXgoKSk7
Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZUZvclN0YWNrU2xvdEF0SW5kZXgodW5zaWduZWQgaW5kZXgp
Ci17Ci0gICAgcmV0dXJuIHRvQ1N0cmluZygic2xvdCIsIGluZGV4KTsKLX0KLQotQ1N0cmluZyB2
YXJOYW1lKFN0YWNrU2xvdCogc2xvdCkKLXsKLSAgICByZXR1cm4gdmFyTmFtZUZvclN0YWNrU2xv
dEF0SW5kZXgoc2xvdC0+aW5kZXgoKSk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShSZWcgcmVnKQot
ewotICAgIHJldHVybiB0b0NTdHJpbmcoIlJlZy4iLCByZWcuZGVidWdOYW1lKCkpOwotfQotCi1D
U3RyaW5nIHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZEluZGV4KEJhbmsgYmFuaywgdW5zaWduZWQg
aW5kZXgpCi17Ci0gICAgcmV0dXJuIHRvQ1N0cmluZyhiYW5rID09IEZQID8gImYiIDogIiIsICJ0
bXAiLCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShUbXAgdG1wKQotewotICAgIGlmICh0
bXAuaXNSZWcoKSkKLSAgICAgICAgcmV0dXJuIHZhck5hbWUodG1wLnJlZygpKTsKLSAgICByZXR1
cm4gdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5kSW5kZXgoQXJnKHRtcCkuYmFuaygpLCB0bXAudG1w
SW5kZXgoKSk7Ci19Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi12b2lkIGR1bXBBc0pT
KENvZGUmIGNvZGUsIFByaW50U3RyZWFtJiBvdXQpCi17Ci0gICAgb3V0LnByaW50bG4oImxldCBj
b2RlID0gbmV3IENvZGUoKTsiKTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y29kZS5zaXplKCk7ICsraSkKLSAgICAgICAgb3V0LnByaW50bG4oImxldCAiLCB2YXJOYW1lRm9y
QmxvY2tBdEluZGV4KGkpLCAiID0gY29kZS5hZGRCbG9jaygpOyIpOwotICAgIAotICAgIG91dC5w
cmludGxuKCJsZXQgaGFzaDsiKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2Rl
LnN0YWNrU2xvdHMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBTdGFja1Nsb3QqIHNsb3QgPSBj
b2RlLnN0YWNrU2xvdHMoKVtpXTsKLSAgICAgICAgaWYgKHNsb3QpIHsKLSAgICAgICAgICAgIG91
dC5wcmludGxuKCJsZXQgIiwgdmFyTmFtZShzbG90KSwgIiA9IGNvZGUuYWRkU3RhY2tTbG90KCIs
IHNsb3QtPmJ5dGVTaXplKCksICIsICIsIHNsb3QtPmtpbmQoKSwgIik7Iik7Ci0gICAgICAgICAg
ICBpZiAoc2xvdC0+b2Zmc2V0RnJvbUZQKCkpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
dmFyTmFtZShzbG90KSwgIi5zZXRPZmZzZXRGcm9tRlAoIiwgc2xvdC0+b2Zmc2V0RnJvbUZQKCks
ICIpOyIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oImhhc2ggPSAiLCB2YXJOYW1lKHNsb3Qp
LCAiLmhhc2goKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJpZiAoaGFzaCAhPSAiLCBz
bG90LT5qc0hhc2goKSwgIikiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCIgICAgdGhyb3cg
bmV3IEVycm9yKFwiQmFkIGhhc2g6IFwiICsgaGFzaCk7Iik7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgb3V0LnByaW50bG4oImNvZGUuYWRkU3RhY2tTbG90KDEsIFNwaWxsKTsiKTsKLSAg
ICB9Ci0gICAgCi0gICAgZm9yRWFjaEJhbmsoCi0gICAgICAgIFsmXSAoQmFuayBiYW5rKSB7Ci0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlLm51bVRtcHMoYmFuayk7IGktLTspIHsK
LSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgImxldCAi
LCB2YXJOYW1lRm9yVG1wV2l0aEJhbmtBbmRJbmRleChiYW5rLCBpKSwgIiA9IGNvZGUubmV3VG1w
KCIsIGJhbmssICIpOyIpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAKLSAgICBv
dXQucHJpbnRsbigibGV0IGluc3Q7Iik7Ci0gICAgb3V0LnByaW50bG4oImxldCBhcmc7Iik7Ci0g
ICAgCi0gICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKLSAgICAgICAgZm9yIChG
cmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAg
ICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgdmFyTmFtZShibG9jayksICIuc3Vj
Y2Vzc29ycy5wdXNoKG5ldyBGcmVxdWVudGVkQmxvY2soIiwKLSAgICAgICAgICAgICAgICB2YXJO
YW1lKHN1Y2Nlc3Nvci5ibG9jaygpKSwgIiwgIiwgc3VjY2Vzc29yLmZyZXF1ZW5jeSgpLCAiKSk7
Iik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVj
ZXNzb3IgOiBibG9jay0+cHJlZGVjZXNzb3JzKCkpCi0gICAgICAgICAgICBvdXQucHJpbnRsbih2
YXJOYW1lKGJsb2NrKSwgIi5wcmVkZWNlc3NvcnMucHVzaCgiLCB2YXJOYW1lKHByZWRlY2Vzc29y
KSwgIik7Iik7Ci0gICAgICAgIAotICAgICAgICBmb3IgKEluc3QmIGluc3QgOiAqYmxvY2spIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBkbyBzb21ldGhpbmcgZm9yIGZsYWdz
LgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Mjc1MQotICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QgPSBuZXcgSW5zdCgiLCBpbnN0
LmtpbmQub3Bjb2RlLCAiKTsiKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW5zdC5mb3JF
YWNoQXJnKAotICAgICAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSwgQmFuaywg
V2lkdGgpIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhcmcua2luZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbnZhbGlkOgotICAgICAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQXJnOjpUbXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0g
QXJnLmNyZWF0ZVRtcCgiLCB2YXJOYW1lKGFyZy50bXAoKSksICIpOyIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBcmc6OkltbToKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmlu
dGxuKCJhcmcgPSBBcmcuY3JlYXRlSW1tKCIsIGFyZy52YWx1ZSgpLCAiKTsiKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXJnOjpCaWdJbW06Ci0gICAgICAgICAgICAgICAgICAgICAgICBv
dXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0
ZUJpZ0ltbSgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMy
X3Q+KGFyZy52YWx1ZSgpKSwgIiwgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSA+PiAzMiksICIpOyIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBcmc6OkJpdEltbToKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKCJhcmcgPSBBcmcuY3JlYXRlQml0SW1tKCIsIGFyZy52YWx1ZSgpLCAiKTsiKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaXRJbW02NDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBB
cmcuY3JlYXRlQml0SW1tNjQoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSksICIsICIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkgPj4gMzIpLCAiKTsiKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpBZGRyOgotICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5j
cmVhdGVBZGRyKCIsIHZhck5hbWUoYXJnLmJhc2UoKSksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U3RhY2s6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJn
ID0gQXJnLmNyZWF0ZVN0YWNrKCIsIHZhck5hbWUoYXJnLnN0YWNrU2xvdCgpKSwgIiwgIiwgYXJn
Lm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpDYWxsQXJn
OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVD
YWxsQXJnKCIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNl
IEFyZzo6SW5kZXg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUluZGV4KCIsIHZhck5hbWUo
YXJnLmJhc2UoKSksICIsICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyTmFtZShh
cmcuaW5kZXgoKSksICIsICIsIGFyZy5zY2FsZSgpLCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlJlbENvbmQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVJlbENvbmQoIiwgYXJnLmFz
UmVsYXRpb25hbENvbmRpdGlvbigpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
QXJnOjpSZXNDb25kOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9
IEFyZy5jcmVhdGVSZXNDb25kKCIsIGFyZy5hc1Jlc3VsdENvbmRpdGlvbigpLCAiKTsiKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpEb3VibGVDb25kOgotICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVEb3VibGVDb25kKCIsIGFyZy5h
c0RvdWJsZUNvbmRpdGlvbigpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpTcGVjaWFsOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFy
Zy5jcmVhdGVTcGVjaWFsKCk7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6V2lk
dGhBcmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNy
ZWF0ZVdpZHRoQXJnKCIsIGFyZy53aWR0aCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5hcmdzLnB1c2goYXJnKTsiKTsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGluc3Qu
a2luZC5vcGNvZGUgPT0gUGF0Y2gpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5zdC5oYXNOb25B
cmdFZmZlY3RzKCkpCi0gICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LnBhdGNo
SGFzTm9uQXJnRWZmZWN0cyA9IHRydWU7Iik7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MgPSBuZXcgU2V0
KCk7Iik7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFDbG9iYmVyZWRS
ZWdzID0gbmV3IFNldCgpOyIpOwotICAgICAgICAgICAgICAgIGluc3QuZXh0cmFFYXJseUNsb2Ji
ZXJlZFJlZ3MoKS5mb3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhRWFybHlDbG9i
YmVyZWRSZWdzLmFkZCgiLCB2YXJOYW1lKHJlZyksICIpOyIpOwotICAgICAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgICAgICBpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncygpLmZvckVhY2go
Ci0gICAgICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykgewotICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFDbG9iYmVyZWRSZWdzLmFkZCgiLCB2YXJOYW1l
KHJlZyksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5wYXRjaEFyZ0RhdGEgPSBbXTsiKTsK
LSAgICAgICAgICAgICAgICBpbnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICAgICAgICAgIFsm
XSAoQXJnJiwgQXJnOjpSb2xlIHJvbGUsIEJhbmsgYmFuaywgV2lkdGggd2lkdGgpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJpbnN0LnBhdGNoQXJnRGF0YS5wdXNoKHtyb2xlOiBBcmcuIiwgcm9sZSwgIiwgdHlwZTog
IiwgYmFuaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCB3aWR0aDogIiwgd2lkdGgs
ICJ9KTsiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IENDYWxsIHx8IGluc3Qu
a2luZC5vcGNvZGUgPT0gQ29sZENDYWxsKSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Imluc3QuY0NhbGxUeXBlID0gIiwgaW5zdC5vcmlnaW4tPnR5cGUoKSk7Ci0gICAgICAgICAgICAg
ICAgb3V0LnByaW50bG4oImluc3QuY0NhbGxBcmdUeXBlcyA9IFtdOyIpOwotICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBpbnN0Lm9yaWdpbi0+bnVtQ2hpbGRyZW4oKTsg
KytpKQotICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5jQ2FsbEFyZ1R5cGVz
LnB1c2goIiwgaW5zdC5vcmlnaW4tPmNoaWxkKGkpLT50eXBlKCksICIpOyIpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBvdXQucHJpbnRsbigiaGFzaCA9IGluc3Qu
aGFzaCgpOyIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oImlmIChoYXNoICE9ICIsIGluc3Qu
anNIYXNoKCksICIpIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiICAgIHRocm93IG5ldyBF
cnJvcihcIkJhZCBoYXNoOiBcIiArIGhhc2gpOyIpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBvdXQucHJpbnRsbih2YXJOYW1lKGJsb2NrKSwgIi5hcHBlbmQoaW5zdCk7Iik7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKLQotI2VuZGlm
IC8vIEVOQUJMRShCM19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRHVtcEFzSlMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckR1bXBBc0pTLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRHVtcEFzSlMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoQjNfSklUKQotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0K
LW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKLQotY2xhc3Mg
Q29kZTsKLQotLy8gVGhpcyBpcyB1c2VkIGZvciBiZW5jaG1hcmtpbmcuIFZhcmlvdXMgb3BlcmF0
aW9ucyBvbiBBaXIgYXJlIGludGVyZXN0aW5nIGZyb20gYSBiZW5jaG1hcmtpbmcKLS8vIHN0YW5k
cG9pbnQuIFdlIGNhbiB3cml0ZSBzb21lIEFpciBwaGFzZXMgaW4gSlMgYW5kIHRoZW4gdXNlIHRo
YXQgdG8gYmVuY2htYXJrIEpTLiBUaGUgYmVuY2htYXJrCi0vLyBpcyBjYWxsZWQgSlNBaXIsIGFu
ZCBpdCdzIGluIFBlcmZvcm1hbmNlVGVzdHMvSlNBaXIuCi12b2lkIGR1bXBBc0pTKENvZGUmLCBQ
cmludFN0cmVhbSYpOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJFbGltaW5hdGVEZWFkQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDggQEAgYm9vbCBlbGltaW5hdGVEZWFkQ29kZShD
b2RlJiBjb2RlKQogICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgYmxvY2tJbmRleCA9IGNvZGUuc2l6ZSgpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBibG9jayA9IGNvZGVbYmxvY2tJbmRleF07CisgICAgICAgICAgICBpZiAo
IWJsb2NrKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnN0SW5kZXggPSBibG9jay0+c2l6ZSgpOyBpbnN0SW5kZXgtLTspCiAgICAgICAgICAg
ICAgICAgaGFuZGxlSW5zdChibG9jay0+YXQoaW5zdEluZGV4KSk7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShyZXZpc2lv
biAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBaXJBbGxvY2F0
ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5oIgogI2luY2x1ZGUgIkFpckFsbG9jYXRlU3RhY2su
aCIKICNpbmNsdWRlICJBaXJDb2RlLmgiCi0jaW5jbHVkZSAiQWlyRHVtcEFzSlMuaCIKICNpbmNs
dWRlICJBaXJFbGltaW5hdGVEZWFkQ29kZS5oIgogI2luY2x1ZGUgIkFpckZpeE9idmlvdXNTcGls
bHMuaCIKICNpbmNsdWRlICJBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKQEAgLTYyLDE3
ICs2MSwxOSBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiB7CiAgICAg
VGltaW5nU2NvcGUgdGltaW5nU2NvcGUoIkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24iKTsKICAg
ICAKKyAgICAvLyBJZiB3ZSdyZSBkb2luZyBzdXBlciB2ZXJib3NlIGR1bXBpbmcsIHRoZSBwaGFz
ZSBzY29wZSBvZiBhbnkgcGhhc2Ugd2lsbCBhbHJlYWR5IGRvIGEgZHVtcC4KKyAgICBpZiAoc2hv
dWxkRHVtcElSKEFpck1vZGUpICYmICFzaG91bGREdW1wSVJBdEVhY2hQaGFzZShBaXJNb2RlKSkg
eworICAgICAgICBkYXRhTG9nKCJJbml0aWFsIGFpcjpcbiIpOworICAgICAgICBkYXRhTG9nKGNv
ZGUpOworICAgIH0KKyAgICAKICAgICAvLyBXZSBkb24ndCBleHBlY3QgdGhlIGluY29taW5nIGNv
ZGUgdG8gaGF2ZSBwcmVkZWNlc3NvcnMgY29tcHV0ZWQuCiAgICAgY29kZS5yZXNldFJlYWNoYWJp
bGl0eSgpOwogICAgIAogICAgIGlmIChzaG91bGRWYWxpZGF0ZUlSKCkpCiAgICAgICAgIHZhbGlk
YXRlKGNvZGUpOwogCi0gICAgLy8gSWYgd2UncmUgZG9pbmcgc3VwZXIgdmVyYm9zZSBkdW1waW5n
LCB0aGUgcGhhc2Ugc2NvcGUgb2YgYW55IHBoYXNlIHdpbGwgYWxyZWFkeSBkbyBhIGR1bXAuCi0g
ICAgaWYgKHNob3VsZER1bXBJUihBaXJNb2RlKSAmJiAhc2hvdWxkRHVtcElSQXRFYWNoUGhhc2Uo
QWlyTW9kZSkpIHsKLSAgICAgICAgZGF0YUxvZygiSW5pdGlhbCBhaXI6XG4iKTsKLSAgICAgICAg
ZGF0YUxvZyhjb2RlKTsKLSAgICB9CisgICAgc2ltcGxpZnlDRkcoY29kZSk7CiAKICAgICBsb3dl
ck1hY3Jvcyhjb2RlKTsKIApAQCAtMTA3LDIzICsxMDgsMTEgQEAgdm9pZCBwcmVwYXJlRm9yR2Vu
ZXJhdGlvbihDb2RlJiBjb2RlKQogICAgIC8vIGRvZXMgdGhpbmdzIGxpa2UgaWRlbnRpZnkgd2hp
Y2ggY2FsbGVlLXNhdmVzIHdlJ3JlIHVzaW5nIGFuZCBzYXZlcyB0aGVtLgogICAgIGhhbmRsZUNh
bGxlZVNhdmVzKGNvZGUpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpkdW1wQWlyQXNKU0JlZm9y
ZUFsbG9jYXRlU3RhY2soKSkgewotICAgICAgICBkYXRhTG9nKCJEdW1waW5nIEFpciBhcyBKUyBi
ZWZvcmUgYWxsb2NhdGVTdGFjazpcbiIpOwotICAgICAgICBkdW1wQXNKUyhjb2RlLCBXVEY6OmRh
dGFGaWxlKCkpOwotICAgICAgICBkYXRhTG9nKCJBaXIgaGFzaDogIiwgY29kZS5qc0hhc2goKSwg
IlxuIik7Ci0gICAgfQotCiAgICAgLy8gVGhpcyB0dXJucyBhbGwgU3RhY2sgYW5kIENhbGxBcmcg
QXJncyBpbnRvIEFkZHIgYXJncyB0aGF0IHVzZSB0aGUgZnJhbWUgcG9pbnRlci4gSXQgZG9lcwog
ICAgIC8vIHRoaXMgYnkgZmlyc3QtZml0IGFsbG9jYXRpbmcgc3RhY2sgc2xvdHMuIEl0IHNob3Vs
ZCBiZSBwcmV0dHkgZGFybiBjbG9zZSB0byBvcHRpbWFsLCBzbyB3ZQogICAgIC8vIHNob3VsZG4n
dCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoaXMgdmVyeSBtdWNoLgogICAgIGFsbG9jYXRlU3RhY2so
Y29kZSk7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OmR1bXBBaXJBZnRlckFsbG9jYXRlU3RhY2so
KSkgewotICAgICAgICBkYXRhTG9nKCJEdW1waW5nIEFpciBhZnRlciBhbGxvY2F0ZVN0YWNrOlxu
Iik7Ci0gICAgICAgIGRhdGFMb2coY29kZSk7Ci0gICAgICAgIGRhdGFMb2coIkFpciBoYXNoOiAi
LCBjb2RlLmpzSGFzaCgpLCAiXG4iKTsKLSAgICB9Ci0KICAgICAvLyBJZiB3ZSBjb2FsZXNjZWQg
bW92ZXMgdGhlbiB3ZSBjYW4gdW5icmVhayBjcml0aWNhbCBlZGdlcy4gVGhpcyBpcyB0aGUgbWFp
biByZWFzb24gZm9yIHRoaXMKICAgICAvLyBwaGFzZS4KICAgICBzaW1wbGlmeUNGRyhjb2RlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJ
KHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5z
dElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3Nyw3MyBAQCBpbmxpbmUgYm9v
bCBpc1g4NlVEaXY2NFZhbGlkKGNvbnN0IEluc3QmCiAgICAgcmV0dXJuIGlzWDg2RGl2SGVscGVy
VmFsaWQoaW5zdCk7CiB9CiAKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoY29u
c3QgSW5zdCYgaW5zdCkKK3sKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgIHN3aXRj
aCAoaW5zdC5hcmdzLnNpemUoKSkgeworICAgIGNhc2UgMzoKKyAgICAgICAgcmV0dXJuIGluc3Qu
YXJnc1swXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIGNhc2UgNToKKyAgICAgICAg
cmV0dXJuIGluc3QuYXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZWxzZSAvLyBDUFUoWDg2KSB8fCBD
UFUoWDg2XzY0KQorICAgIFVOVVNFRF9QQVJBTShpbnN0KTsKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYgLy8gQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKK30KKworaW5saW5lIGJvb2wgaXNCcmFu
Y2hBdG9taWNTdHJvbmdDQVNWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworI2lmIENQVShYODYp
IHx8IENQVShYODZfNjQpCisgICAgcmV0dXJuIGluc3QuYXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0
ZXJzOjplYXgpOworI2Vsc2UgLy8gQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICBVTlVTRURf
UEFSQU0oaW5zdCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8vIENQVShYODYpIHx8IENQ
VShYODZfNjQpCit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTOFZhbGlkKGNvbnN0
IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7
Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTMTZWYWxpZChjb25zdCBJbnN0JiBp
bnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitp
bmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sK
KyAgICByZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJv
b2wgaXNBdG9taWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0
dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJh
bmNoQXRvbWljU3Ryb25nQ0FTOFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJu
IGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlz
QnJhbmNoQXRvbWljU3Ryb25nQ0FTMTZWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJl
dHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9v
bCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAg
ICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5l
IGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7
CisgICAgcmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKIH0g
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29k
ZXMJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
T3Bjb2RlLm9wY29kZXMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTcsNiArMTE3LDcgQEAgQWRkMzIgVTpHOjMyLCBV
WkQ6RzozMgogICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRy
LCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAgIHg4Njog
VG1wLCBJbmRleAogCkBAIC0xMzUsOSArMTM2LDEyIEBAIHg4NjogQWRkMTYgVTpHOjE2LCBVRDpH
OjE2CiA2NDogQWRkNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IElt
bSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRy
LCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4Njog
VG1wLCBJbmRleAogCiA2NDogQWRkNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIEltbSwg
VG1wLCBUbXAKQEAgLTE2Niw5ICsxNzAsMTIgQEAgeDg2OiBBZGRGbG9hdCBVOkY6MzIsIFVEOkY6
MzIKIFN1YjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBB
ZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRt
cAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAs
IEluZGV4CiAKIGFybTY0OiBTdWIzMiBVOkc6MzIsIFU6RzozMiwgRDpHOjMyCiAgICAgVG1wLCBU
bXAsIFRtcApAQCAtMTc2LDkgKzE4MywxMiBAQCBhcm02NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIs
IEQ6RzozMgogNjQ6IFN1YjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2
OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4Njog
QWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4
ODY6IFRtcCwgSW5kZXgKIAogYXJtNjQ6IFN1YjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAg
ICBUbXAsIFRtcCwgVG1wCkBAIC0yMDQsOSArMjE0LDEyIEBAIHg4NjogU3ViRmxvYXQgVTpGOjMy
LCBVRDpGOjMyCiBOZWczMiBVWkQ6RzozMgogICAgIFRtcAogICAgIHg4NjogQWRkcgorICAgIHg4
NjogSW5kZXgKIAogNjQ6IE5lZzY0IFVEOkc6NjQKICAgICBUbXAKKyAgICB4ODY6IEFkZHIKKyAg
ICB4ODY6IEluZGV4CiAKIGFybTY0OiBOZWdhdGVEb3VibGUgVTpGOjY0LCBEOkY6NjQKICAgICBU
bXAsIFRtcApAQCAtMzMwLDggKzM0MywxMSBAQCBBbmQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAg
VG1wLCBUbXAKICAgICB4ODY6IEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6
IFRtcCwgSW5kZXgKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAg
IHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAKIDY0OiBBbmQ2NCBVOkc6NjQs
IFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMzM5LDcgKzM1NSwxMyBAQCBB
bmQzMiBVOkc6MzIsIFVaRDpHOjMyCiAKIHg4Nl82NDogQW5kNjQgVTpHOjY0LCBVRDpHOjY0CiAg
ICAgVG1wLCBUbXAKLSAgICB4ODY6IEltbSwgVG1wCisgICAgSW1tLCBUbXAKKyAgICBJbW0sIEFk
ZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorICAgIEFk
ZHIsIFRtcAorICAgIEluZGV4LCBUbXAKIAogQW5kRG91YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6
NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00NTksOCArNDgxLDExIEBAIE9yMzIgVTpHOjMyLCBV
WkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBB
ZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IElu
ZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogCiA2NDog
T3I2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDY5LDYg
KzQ5NCwxMiBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBPcjY0IFU6Rzo2NCwgVUQ6Rzo2
NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAorICAgIHg4NjogSW1tLCBBZGRyCisg
ICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5k
ZXgKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogCiBYb3IzMiBVOkc6
MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ4MCw4ICs1MTEsMTEg
QEAgWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRt
cAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRy
LCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4Njog
SW1tLCBJbmRleAogCiA2NDogWG9yNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwg
VG1wLCBUbXAKQEAgLTQ5MCw2ICs1MjQsMTEgQEAgWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogNjQ6
IFhvcjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIK
KyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgs
IFRtcAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJ
bW0sIFRtcAogCiBhcm02NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCkBAIC00OTgsMTMgKzUzNywx
NSBAQCBhcm02NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCiB4ODY6IE5vdDMyIFVaRDpHOjMyCiAg
ICAgVG1wCiAgICAgQWRkcgorICAgIEluZGV4CiAKIGFybTY0OiBOb3Q2NCBVOkc6NjQsIEQ6Rzo2
NAogICAgIFRtcCwgVG1wCiAKLXg4NjogTm90NjQgVUQ6Rzo2NAoreDg2XzY0OiBOb3Q2NCBVRDpH
OjY0CiAgICAgVG1wCiAgICAgQWRkcgorICAgIEluZGV4CiAKIGFybTY0OiBBYnNEb3VibGUgVTpG
OjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcApAQCAtNjY4LDI3ICs3MDksMzc3IEBAIExvYWQ4IFU6
Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOCBV
Okc6OCwgWkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRl
eCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisKIFN0b3JlOCBVOkc6OCwgRDpHOjgKICAgICBU
bXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJ
bW0sIEFkZHIKIAorU3RvcmVSZWw4IFU6Rzo4LCBEOkc6OCAvZWZmZWN0cworICAgIHg4NjogVG1w
LCBJbmRleAorICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2
OiBJbW0sIEFkZHIKKyAgICBUbXAsIFNpbXBsZUFkZHIKKwogTG9hZDhTaWduZWRFeHRlbmRUbzMy
IFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNx
OFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6IEFkZHIs
IFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAorCiBMb2FkMTYg
VTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNx
MTYgVTpHOjE2LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6
IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwogTG9hZDE2U2lnbmVkRXh0ZW5kVG8z
MiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRB
Y3ExNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBB
ZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwogU3Rv
cmUxNiBVOkc6MTYsIEQ6RzoxNgogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKKyAgICB4
ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorCitTdG9yZVJlbDE2IFU6RzoxNiwg
RDpHOjE2IC9lZmZlY3RzCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBUbXAsIEFkZHIK
KyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIFRtcCwgU2ltcGxl
QWRkcgorCitMb2FkQWNxMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRy
LCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworU3RvcmVS
ZWwzMiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4
NjogVG1wLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4Cisg
ICAgVG1wLCBTaW1wbGVBZGRyCisKKzY0OiBMb2FkQWNxNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZl
Y3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVB
ZGRyLCBUbXAKKworNjQ6IFN0b3JlUmVsNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCisgICAg
eDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgor
ICAgIHg4NjogSW1tLCBJbmRleAorICAgIFRtcCwgU2ltcGxlQWRkcgorCisjIFRoZSBmaXJzdCBv
cGVyYW5kIGlzIHJheC4KKyMgRklYTUU6IFRoaXMgZm9ybXVsYXRpb24gbWVhbnMgdGhhdCB0aGUg
Ym9vbGVhbiByZXN1bHQgY2Fubm90IGJlIHB1dCBpbiBlYXgsIGV2ZW4gdGhvdWdoIGFsbCB1c2Vy
cworIyBvZiB0aGlzIHdvdWxkIGJlIE9LIHdpdGggdGhhdC4KK3g4NjogQXRvbWljU3Ryb25nQ0FT
OCBVOkc6MzIsIFVEOkc6OCwgVTpHOjgsIFVEOkc6OCwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU3Rh
dHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAs
IEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6
RzozMiwgVUQ6RzoxNiwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1w
LCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2
OiBBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiwgWkQ6
Rzo4IC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2XzY0OiBBdG9taWNTdHJvbmdD
QVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCwgWkQ6Rzo4IC9lZmZlY3RzCisg
ICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAq
LCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVM4IFVEOkc6OCwgVTpHOjgs
IFVEOkc6OCAvZWZmZWN0cworICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5k
ZXgKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYgL2Vm
ZmVjdHMKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4Njog
QXRvbWljU3Ryb25nQ0FTMzIgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAg
VG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1N0
cm9uZ0NBUzY0IFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIFRtcCosIFRt
cCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9taWNTdHJvbmdD
QVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4IC9icmFuY2ggL2VmZmVjdHMKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIElu
ZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6
MzIsIFVEOkc6MTYgL2JyYW5jaCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwg
QWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hBdG9t
aWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiAvYnJhbmNoIC9l
ZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwg
VG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0IFU6Rzoz
MiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2ggL2VmZmVjdHMKKyAgICBTdGF0dXND
b25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisK
K3g4NjogQXRvbWljQWRkOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNBZGQxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0s
IEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDMy
IFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljQWRkNjQgVTpH
OjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWI4IFU6Rzo4LCBVRDpH
OjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZm
ZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViMzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisg
ICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5k
ZXgKKworeDg2XzY0OiBBdG9taWNTdWI2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBJ
bW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IEF0b21pY0FuZDggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgor
ICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRv
bWljQW5kMTYgVTpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1t
LCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBbmQz
MiBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY0FuZDY0IFU6
Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3I4IFU6Rzo4LCBVRDpH
OjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yMTYgVTpHOjE2LCBVRDpHOjE2IC9lZmZl
Y3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2OiBBdG9taWNPcjMyIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4Nl82NDogQXRvbWljT3I2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBJbW0s
IEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODY6IEF0b21pY1hvcjggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAg
IEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
WG9yMTYgVTpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJ
bmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYb3IzMiBV
Okc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hvcjY0IFU6Rzo2
NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljTmVnOCBVRDpHOjggL2VmZmVj
dHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOZWcxNiBVRDpHOjE2IC9lZmZl
Y3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTmVnMzIgVUQ6RzozMiAvZWZm
ZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0b21pY05lZzY0IFVEOkc6NjQg
L2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3Q4IFVEOkc6OCAv
ZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDE2IFVEOkc6MTYg
L2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QzMiBVRDpHOjMy
IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Nl82NDogQXRvbWljTm90NjQgVUQ6
Rzo2NCAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQ4
IFVEOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IEF0b21pY1hjaGdBZGQxNiBVRDpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQzMiBVRDpHOjMyLCBV
RDpHOjMyIC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6
IEF0b21pY1hjaGdBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGc4IFVEOkc6OCwgVUQ6Rzo4IC9lZmZl
Y3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGcxNiBV
RDpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IEF0b21pY1hjaGczMiBVRDpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hjaGc2NCBVRDpHOjY0LCBVRDpH
OjY0IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCithcm02NDogTG9h
ZExpbms4IFU6Rzo4LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJt
NjQ6IExvYWRMaW5rQWNxOCBVOkc6OCwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwg
VG1wCisKKyMgU3VwZXIgY29uZnVzaW5nIGZhY3Q6IHRoaXMgcmV0dXJucyAwIHRvIG1lYW4gc3Vj
Y2VzcywgMSB0byBtZWFuIGZhaWx1cmUuCithcm02NDogU3RvcmVDb25kOCBVOkc6OCwgRDpHOjgs
IEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3Rv
cmVDb25kUmVsOCBVOkc6OCwgRDpHOjgsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBs
ZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmsxNiBVOkc6MTYsIFpEOkc6MTYgL2VmZmVjdHMK
KyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMTYgVTpHOjE2LCBaRDpH
OjE2IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmQxNiBV
Okc6MTYsIEQ6RzoxNiwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1w
CisKK2FybTY0OiBTdG9yZUNvbmRSZWwxNiBVOkc6MTYsIEQ6RzoxNiwgRVpEOkc6OCAvZWZmZWN0
cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGluazMyIFU6RzozMiwg
WkQ6RzozMiAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmtB
Y3EzMiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJt
NjQ6IFN0b3JlQ29uZDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1w
LCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDMyIFU6RzozMiwgRDpHOjMy
LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExv
YWRMaW5rNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisK
K2FybTY0OiBMb2FkTGlua0FjcTY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIFNpbXBs
ZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kNjQgVTpHOjY0LCBEOkc6NjQsIEVaRDpHOjgg
L2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kUmVs
NjQgVTpHOjY0LCBEOkc6NjQsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIs
IFRtcAorCithcm02NDogRGVwZW5kMzIgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAKKwor
YXJtNjQ6IERlcGVuZDY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIFRtcCwgVG1wCiAKIENvbXBhcmUz
MiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29uZCwgVG1wLCBUbXAs
IFRtcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2Nr
T3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
T3B0aW1pemVCbG9ja09yZGVyLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTc3LDYgKzE3NywxMCBAQCB2b2lkIG9wdGltaXplQmxvY2tPcmRlcihDb2RlJiBjb2Rl
KQogICAgICAgICBjYXNlIEJyYW5jaFN1YjY0OgogICAgICAgICBjYXNlIEJyYW5jaE5lZzMyOgog
ICAgICAgICBjYXNlIEJyYW5jaE5lZzY0OgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0cm9u
Z0NBUzg6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTY6CisgICAgICAgIGNh
c2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzI6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ry
b25nQ0FTNjQ6CiAgICAgICAgICAgICBpZiAoY29kZS5maW5kTmV4dEJsb2NrKGJsb2NrKSA9PSBi
bG9jay0+c3VjY2Vzc29yQmxvY2soMCkgJiYgYnJhbmNoLmFyZ3NbMF0uaXNJbnZlcnRpYmxlKCkp
IHsKICAgICAgICAgICAgICAgICBzdGQ6OnN3YXAoYmxvY2stPnN1Y2Nlc3NvcigwKSwgYmxvY2st
PnN1Y2Nlc3NvcigxKSk7CiAgICAgICAgICAgICAgICAgYnJhbmNoLmFyZ3NbMF0gPSBicmFuY2gu
YXJnc1swXS5pbnZlcnRlZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJQYWRJbnRlcmZlcmVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHZvaWQgcGFkSW50ZXJmZXJlbmNlKENvZGUmIGNvZGUp
CiAgICAgICAgICAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywgV2lkdGgp
IHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyb2xlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgQXJnOjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVh
cmx5WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vhcmx5RGVmID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6TGF0ZVVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlQ29sZFVzZToKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJs
eURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcihi
YW5rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0QmVmb3JlLmdldChy
ZWcpICYmICFzZXRBZnRlci5nZXQocmVnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRBZnRlci5zZXQocmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvb3Bjb2RlX2dlbmVyYXRvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkod29ya2luZyBjb3B5
KQpAQCAtNTEsMTQgKzUxLDQ5IEBAIGNsYXNzIEFyZwogICAgICAgICBAYmFuayA9IGJhbmsKICAg
ICAgICAgQHdpZHRoID0gd2lkdGgKICAgICBlbmQKLQotICAgIGRlZiB3aWR0aENvZGUKKyAgICAK
KyAgICBkZWYgc2VsZi53aWR0aENvZGUod2lkdGgpCiAgICAgICAgIGlmIHdpZHRoID09ICJQdHIi
CiAgICAgICAgICAgICAicG9pbnRlcldpZHRoKCkiCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICJXaWR0aCN7d2lkdGh9IgogICAgICAgICBlbmQKICAgICBlbmQKKworICAgIGRlZiB3aWR0aENv
ZGUKKyAgICAgICAgQXJnLndpZHRoQ29kZSh3aWR0aCkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
c2VsZi5yb2xlQ29kZShyb2xlKQorICAgICAgICBjYXNlIHJvbGUKKyAgICAgICAgd2hlbiAiVSIK
KyAgICAgICAgICAgICJVc2UiCisgICAgICAgIHdoZW4gIkQiCisgICAgICAgICAgICAiRGVmIgor
ICAgICAgICB3aGVuICJaRCIKKyAgICAgICAgICAgICJaRGVmIgorICAgICAgICB3aGVuICJVRCIK
KyAgICAgICAgICAgICJVc2VEZWYiCisgICAgICAgIHdoZW4gIlVaRCIKKyAgICAgICAgICAgICJV
c2VaRGVmIgorICAgICAgICB3aGVuICJVQSIKKyAgICAgICAgICAgICJVc2VBZGRyIgorICAgICAg
ICB3aGVuICJTIgorICAgICAgICAgICAgIlNjcmF0Y2giCisgICAgICAgIHdoZW4gIkVEIgorICAg
ICAgICAgICAgIkVhcmx5RGVmIgorICAgICAgICB3aGVuICJFWkQiCisgICAgICAgICAgICAiRWFy
bHlaRGVmIgorICAgICAgICB3aGVuICJMVSIKKyAgICAgICAgICAgICJMYXRlVXNlIgorICAgICAg
ICBlbHNlCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgcm9sZUNvZGUKKyAgICAgICAgQXJnLnJvbGVDb2RlKHJvbGUpCisgICAgZW5kCiBlbmQK
IAogY2xhc3MgT3ZlcmxvYWQKQEAgLTE4Miw3ICsyMTcsNyBAQCBkZWYgbGV4KHN0ciwgZmlsZU5h
bWUpCiBlbmQKIAogZGVmIGlzUm9sZSh0b2tlbikKLSAgICB0b2tlbiA9fiAvXEEoKFUpfChEKXwo
VUQpfChaRCl8KFVaRCl8KFVBKXwoUykpXFovCisgICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVE
KXwoWkQpfChVWkQpfChVQSl8KFMpfChFRCl8KEVaRCl8KExVKSlcWi8KIGVuZAogCiBkZWYgaXNH
Rih0b2tlbikKQEAgLTE5MCw3ICsyMjUsNyBAQCBkZWYgaXNHRih0b2tlbikKIGVuZAogCiBkZWYg
aXNLaW5kKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwoQml0
SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJs
ZUNvbmQpKVxaLworICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmlnSW1tKXwoQml0SW1t
KXwoQml0SW1tNjQpfChTaW1wbGVBZGRyKXwoQWRkcil8KEluZGV4KXwoUmVsQ29uZCl8KFJlc0Nv
bmQpfChEb3VibGVDb25kKXwoU3RhdHVzQ29uZCkpXFovCiBlbmQKIAogZGVmIGlzQXJjaCh0b2tl
bikKQEAgLTI2NCw3ICsyOTksNyBAQCBjbGFzcyBQYXJzZXIKIAogICAgIGRlZiBjb25zdW1lS2lu
ZAogICAgICAgICByZXN1bHQgPSB0b2tlbi5zdHJpbmcKLSAgICAgICAgcGFyc2VFcnJvcigiRXhw
ZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQsIFRtcCwgQWRkciwgSW5k
ZXgsIFJlbENvbmQsIFJlc0NvbmQsIG9yIERvdWJsZUNvbmQpIikgdW5sZXNzIGlzS2luZChyZXN1
bHQpCisgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGtpbmQgKEltbSwgQmlnSW1tLCBCaXRJ
bW0sIEJpdEltbTY0LCBUbXAsIFNpbXBsZUFkZHIsIEFkZHIsIEluZGV4LCBSZWxDb25kLCBSZXND
b25kLCBEb3VibGVDb25kLCBvciBTdGF0dXNDb25kKSIpIHVubGVzcyBpc0tpbmQocmVzdWx0KQog
ICAgICAgICBhZHZhbmNlCiAgICAgICAgIHJlc3VsdAogICAgIGVuZApAQCAtNjM0LDI4ICs2Njks
NyBAQCB3cml0ZUgoIk9wY29kZVV0aWxzIikgewogICAgICAgICBlbHNlCiAgICAgICAgICAgICBv
dmVybG9hZC5zaWduYXR1cmUuZWFjaF93aXRoX2luZGV4IHsKICAgICAgICAgICAgICAgICB8IGFy
ZywgaW5kZXggfAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHJvbGUgPSBuaWwK
LSAgICAgICAgICAgICAgICBjYXNlIGFyZy5yb2xlCi0gICAgICAgICAgICAgICAgd2hlbiAiVSIK
LSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2UiCi0gICAgICAgICAgICAgICAgd2hlbiAi
RCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYiCi0gICAgICAgICAgICAgICAgd2hl
biAiWkQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiWkRlZiIKLSAgICAgICAgICAgICAg
ICB3aGVuICJVRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VEZWYiCi0gICAgICAg
ICAgICAgICAgd2hlbiAiVVpEIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZVpEZWYi
Ci0gICAgICAgICAgICAgICAgd2hlbiAiVUEiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAi
VXNlQWRkciIKLSAgICAgICAgICAgICAgICB3aGVuICJTIgotICAgICAgICAgICAgICAgICAgICBy
b2xlID0gIlNjcmF0Y2giCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICByYWlzZQotICAgICAgICAgICAgICAgIGVuZAotCi0gICAgICAgICAgICAgICAgb3V0cC5wdXRz
ICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7cm9sZX0sICN7YXJnLmJhbmt9UCwgI3th
cmcud2lkdGhDb2RlfSk7IgorICAgICAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3Rvcihhcmdz
WyN7aW5kZXh9XSwgQXJnOjoje2FyZy5yb2xlQ29kZX0sICN7YXJnLmJhbmt9UCwgI3thcmcud2lk
dGhDb2RlfSk7IgogICAgICAgICAgICAgfQogICAgICAgICBlbmQKICAgICB9CkBAIC04MDQsNiAr
ODE4LDkgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgd2hl
biAiQml0SW1tNjQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKCFBcmc6Omlz
VmFsaWRCaXRJbW02NEZvcm0oYXJnc1sje2luZGV4fV0udmFsdWUoKSkpIgogICAgICAgICAgICAg
ICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7IgorICAgICAgICAgICAgICAg
IHdoZW4gIlNpbXBsZUFkZHIiCisgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKCFh
cmdzWyN7aW5kZXh9XS50bXAoKS5pc0dQKCkpIgorICAgICAgICAgICAgICAgICAgICBvdXRwLnB1
dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7IgogICAgICAgICAgICAgICAgIHdoZW4gIkFkZHIiCiAg
ICAgICAgICAgICAgICAgICAgIGlmIGFyZy5yb2xlID09ICJVQSIKICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dHAucHV0cyAiaWYgKGFyZ3NbI3tpbmRleH1dLmlzU3RhY2soKSAmJiBhcmdzWyN7
aW5kZXh9XS5zdGFja1Nsb3QoKS0+aXNTcGlsbCgpKSIKQEAgLTgxOSw2ICs4MzYsNyBAQCB3cml0
ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJSZWxDb25kIgog
ICAgICAgICAgICAgICAgIHdoZW4gIlJlc0NvbmQiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91
YmxlQ29uZCIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQga2luZDogI3tr
aW5kLm5hbWV9IgogICAgICAgICAgICAgICAgIGVuZApAQCAtMTA5NSw3ICsxMTEzLDcgQEAgd3Jp
dGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQg
ImFyZ3NbI3tpbmRleH1dLmFzVHJ1c3RlZEltbTMyKCkiCiAgICAgICAgICAgICAgICAgd2hlbiAi
QmlnSW1tIiwgIkJpdEltbTY0IgogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdz
WyN7aW5kZXh9XS5hc1RydXN0ZWRJbW02NCgpIgotICAgICAgICAgICAgICAgIHdoZW4gIkFkZHIi
CisgICAgICAgICAgICAgICAgd2hlbiAiU2ltcGxlQWRkciIsICJBZGRyIgogICAgICAgICAgICAg
ICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc0FkZHJlc3MoKSIKICAgICAgICAg
ICAgICAgICB3aGVuICJJbmRleCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJn
c1sje2luZGV4fV0uYXNCYXNlSW5kZXgoKSIKQEAgLTExMDUsNiArMTEyMyw4IEBAIHdyaXRlSCgi
T3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdz
WyN7aW5kZXh9XS5hc1Jlc3VsdENvbmRpdGlvbigpIgogICAgICAgICAgICAgICAgIHdoZW4gIkRv
dWJsZUNvbmQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1d
LmFzRG91YmxlQ29uZGl0aW9uKCkiCisgICAgICAgICAgICAgICAgd2hlbiAiU3RhdHVzQ29uZCIK
KyAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNTdGF0dXND
b25kaXRpb24oKSIKICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgIH0KIApAQCAtMTE0
OCwyNyArMTE2OCw3IEBAIEZpbGUub3BlbigiSlNBaXJfb3Bjb2RlLmpzIiwgInciKSB7CiAgICAg
ICAgICAgICAgICAgb3V0cC5wdXRzICJjYXNlICN7b3ZlcmxvYWQuc2lnbmF0dXJlLmxlbmd0aH06
IiBpZiBuZWVkT3ZlcmxvYWRTd2l0Y2gKICAgICAgICAgICAgICAgICBvdmVybG9hZC5zaWduYXR1
cmUuZWFjaF93aXRoX2luZGV4IHsKICAgICAgICAgICAgICAgICAgICAgfCBhcmcsIGluZGV4IHwK
LSAgICAgICAgICAgICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAgICAgICAgICBjYXNl
IGFyZy5yb2xlCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlUiCi0gICAgICAgICAgICAgICAg
ICAgICAgICByb2xlID0gIlVzZSIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiRCIKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVu
ICJaRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiWkRlZiIKLSAgICAgICAgICAg
ICAgICAgICAgd2hlbiAiVUQiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZURl
ZiIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVVpEIgotICAgICAgICAgICAgICAgICAgICAg
ICAgcm9sZSA9ICJVc2VaRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJVQSIKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlQWRkciIKLSAgICAgICAgICAgICAgICAgICAg
d2hlbiAiUyIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2NyYXRjaCIKLSAgICAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAg
ICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICBvdXRwLnB1dHMgImluc3QudmlzaXRBcmcoI3tpbmRleH0sIGZ1bmMsIEFyZy4je3JvbGV9
LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRofSk7IgorICAgICAgICAgICAgICAgICAgICBvdXRw
LnB1dHMgImluc3QudmlzaXRBcmcoI3tpbmRleH0sIGZ1bmMsIEFyZy4je2FyZy5yb2xlQ29kZX0s
ICN7YXJnLmJhbmt9UCwgI3thcmcud2lkdGh9KTsiCiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIG91dHAucHV0cyAiYnJlYWs7IgogICAgICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MTcsOSArNDE3LDYgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdihi
b29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihib29sLCBleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlciwgZmFsc2UsIE5vcm1hbCwgImV4
cG9zZSB0aGUgaW50ZXJuYWwgbW9kdWxlIGxvYWRlciBvYmplY3QgdG8gdGhlIGdsb2JhbCBzcGFj
ZSBmb3IgZGVidWdnaW5nIikgXAogICAgIFwKLSAgICB2KGJvb2wsIGR1bXBBaXJBc0pTQmVmb3Jl
QWxsb2NhdGVTdGFjaywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIHYoYm9vbCwgZHVt
cEFpckFmdGVyQWxsb2NhdGVTdGFjaywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIFwK
ICAgICB2KGJvb2wsIHVzZVN1cGVyU2FtcGxlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAog
ICAgIFwKICAgICB2KGJvb2wsIHJlcG9ydExMSW50U3RhdHMsIGZhbHNlLCBDb25maWd1cmFibGUs
ICJSZXBvcnRzIExMSW50IHN0YXRpc3RpY3MiKSBcCkluZGV4OiBXZWJzaXRlcy93ZWJraXQub3Jn
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwko
cmV2aXNpb24gMjEzNDI1KQorKysgV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgorCisgICAgICAgIEIzIHNob3VsZCBoYXZlIGNvbXByZWhlbnNpdmUgc3Vw
cG9ydCBmb3IgYXRvbWljIG9wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MjM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgRG9jdW1lbnQgdGhlIG5ldyBvcGNvZGVzIQorCisg
ICAgICAgICogZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbDoKKwogMjAx
Ny0wMy0wMyAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCBtaW5vciB1cGRhdGVzIG9uIENTUyBHcmlkIExheW91dCBleGFtcGxl
cy4KSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVz
ZW50YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMv
aW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwJKHJldmlzaW9uIDIxMzQyNSkKKysrIFdl
YnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCwyOCBAQAogCiAgICAgPHA+RWFjaCBiYXNp
YyBibG9jayBjb250YWlucyBhIFZlY3RvciZsdDtWYWx1ZSomZ3Q7IGFzIHRoZSBjb250ZW50cyBv
ZiB0aGUgYmxvY2suIENvbnRyb2wKICAgICAgIGZsb3cgaW5zaWRlIHRoZSBibG9jayBpcyBpbXBs
aWNpdCBiYXNlZCBvbiB0aGUgb3JkZXIgb2YgVmFsdWVzIGluIHRoZSB2ZWN0b3IuPC9wPgorICAg
IAorICAgIDxoMj5NZW1vcnkgbW9kZWw8L2gyPgorICAgIAorICAgIDxwPkIzIHVzZXMgYSBzZWNv
bmRhcnkgYWRkcmVzcyBzcGFjZSBvZiA8aT5hYnN0cmFjdCBoZWFwczwvaT4gdG8gcmVhc29uIGFi
b3V0IGFsaWFzaW5nIGFuZAorICAgICAgY29uY3VycmVuY3kuIFRoaXMgYWRkcmVzcyBzcGFjZSBp
cyAzMi1iaXQgYW5kIHdlIHBvaW50IGF0IGl0IHVzaW5nIHRoZSBIZWFwUmFuZ2UgdHlwZS4gSWYg
eW91CisgICAgICBuZXZlciBzdXBwbHkgSGVhcFJhbmdlcyB0byB5b3VyIG1lbW9yeSBvcGVyYXRp
b25zICh0aGUgZGVmYXVsdCksIHRoZXkgd2lsbCBoYXZlIFswLCBVSU5UX01BWF0KKyAgICAgIGFz
IHRoZWlyIHJhbmdlLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhdGlvbiBtYXkgY29uc2VydmF0
aXZlbHkgd3JpdGUgdG8gYWxsIDI8c3VwPjMyPC9zdXA+CisgICAgICBhYnN0cmFjdCBoZWFwcy4g
VHdvIG1lbW9yeSBvcGVyYXRpb25zIGFyZSBzYWlkIHRvIGFsaWFzIGlmIHRoZXkgYWNjZXNzIHRo
ZSBzYW1lIGFic3RyYWN0IGhlYXBzLgorICAgICAgQSBzaW1wbGUgZXhhbXBsZSBvZiB1c2luZyBI
ZWFwUmFuZ2VzIGlzIHdpdGggbG9hZHMgYW5kIHN0b3JlcywgYnV0IHlvdSBjYW4gYWxzbyBzdXBw
bHkKKyAgICAgIEhlYXBSYW5nZXMgYXMgYm91bmRzIG9uIHRoZSBlZmZlY3RzIG9mIGNhbGxzIGFu
ZCBwYXRjaHBvaW50cy48L3A+CisgICAgCisgICAgPHA+RmVuY2VzIGFyZSBtb2RlbGVkIGFzIHBo
YW50b20gZWZmZWN0cyB0aGF0IHdlIGNhbGwgPGk+ZmVuY2UgcmFuZ2VzPC9pPi4gRm9yIGV4YW1w
bGUsIGEgbG9hZAorICAgICAgZmVuY2UgY291bGQgYmUgcmVwcmVzZW50ZWQgYXMgYSBwYXRjaHBv
aW50IHRoYXQgd3JpdGVzIHRvIFswLCBVSU5UX01BWF0uIEIzIG1vZGVscyBsb2FkIGZlbmNlcywK
KyAgICAgIHN0b3JlIGZlbmNlcywgc3RvcmUtbG9hZCBmZW5jZXMsIGFjcXVpcmUgZmVuY2VzLCBh
bmQgcmVsZWFzZSBmZW5jZXMgdXNpbmcgZmVuY2UgcmFuZ2VzLiBUaGUKKyAgICAgIGFic2VuY2Ug
b2YgYSBmZW5jZSByYW5nZSBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIGZlbmNlLjwvcD4KKyAgICAK
KyAgICA8cD5BY3F1aXJlIGZlbmNlcyBhcmUgbW9kZWxlZCBhcyBwaGFudG9tIHdyaXRlcyB0byBt
ZW1vcnksIHdoaWxlIHJlbGVhc2UgZmVuY2VzIGFyZSBtb2RlbGVkIGFzCisgICAgICBwaGFudG9t
IHJlYWRzIGZyb20gbWVtb3J5LiBCeSBpdHNlbGYgdGhpcyBkb2VzIG5vdCBwZXJtaXQgQjMgdG8g
ZG8gYWxsIG9mIHRoZSByZW9yZGVyaW5ncyB0aGF0CisgICAgICBhY3F1aXJlL3JlbGVhc2UgYWxs
b3cuIEIzIGlzIHRoZXJlZm9yZSBhbGxvd2VkIHRvIHRyZWF0IGxvYWRzL3N0b3JlcyB3aXRoIGZl
bmNlIHJhbmdlcyBtb3JlCisgICAgICBwcmVjaXNlbHkuIFRoZSBwaGFudG9tIHdyaXRlIGVmZmVj
dHMgb2YgYSBmZW5jZWQgbG9hZCBjYW5ub3Qgd3JpdGUgdG8gYW55dGhpbmcgdGhhdCBpcyByZWFk
IG9yCisgICAgICB3cml0dGVuIGFmdGVyIHRoZSBmZW5jZS4gVGhlIHBoYW50b20gcmVhZCBlZmZl
Y3RzIG9mIGEgZmVuY2VkIHN0b3JlIGNhbm5vdCByZWFkIGFueXRoaW5nIHRoYXQKKyAgICAgIGlz
IHdyaXR0ZW4gYWZ0ZXIgdGhlIGZlbmNlLjwvcD4KIAogICAgIDxoMj5PcGNvZGVzPC9oMj4KIApA
QCAtMzk1LDUxICs0MTcsMTEzIEBACiAgICAgICA8ZHQ+SW50MzIgTG9hZDhaKEludFB0ciwgb2Zm
c2V0KTwvZHQ+CiAgICAgICA8ZGQ+TG9hZHMgYSBieXRlIGZyb20gdGhlIGFkZHJlc3MsIHdoaWNo
IGlzIGNvbXB1dGVkIGJ5IGFkZGluZyB0aGUgY29tcGlsZS10aW1lIDMyLWJpdAogICAgICAgICBz
aWduZWQgaW50ZWdlciBvZmZzZXQgdG8gdGhlIGNoaWxkIHZhbHVlLiAgWmVybyBleHRlbmRzIHRo
ZSBsb2FkZWQgYnl0ZSwgc28gdGhlIGhpZ2ggMjQKLSAgICAgICAgYml0cyBhcmUgYWxsIHplcm8u
ICBNdXN0IHVzZSB0aGUgTWVtb3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxh
ZyBzZXQuPC9kZD4KKyAgICAgICAgYml0cyBhcmUgYWxsIHplcm8uICBNdXN0IHVzZSB0aGUgTWVt
b3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxhZyBzZXQuIE1heSBzZXQKKyAg
ICAgICAgYSBmZW5jZSByYW5nZSB0byB0dXJuIHRoaXMgaW50byBhIGxvYWQgYWNxdWlyZS48L2Rk
PgogCiAgICAgICA8ZHQ+SW50MzIgTG9hZDhTKEludFB0ciwgb2Zmc2V0KTwvZHQ+CiAgICAgICA8
ZGQ+TG9hZHMgYSBieXRlIGZyb20gdGhlIGFkZHJlc3MsIHdoaWNoIGlzIGNvbXB1dGVkIGJ5IGFk
ZGluZyB0aGUgY29tcGlsZS10aW1lIDMyLWJpdAogICAgICAgICBzaWduZWQgaW50ZWdlciBvZmZz
ZXQgdG8gdGhlIGNoaWxkIHZhbHVlLiAgU2lnbiBleHRlbmRzIHRoZSBsb2FkZWQgYnl0ZS4gIE11
c3QgdXNlIHRoZQotICAgICAgICBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBUcmFw
cyBmbGFnIHNldC48L2RkPgorICAgICAgICBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRo
ZSBUcmFwcyBmbGFnIHNldC4gTWF5IHNldAorICAgICAgICBhIGZlbmNlIHJhbmdlIHRvIHR1cm4g
dGhpcyBpbnRvIGEgbG9hZCBhY3F1aXJlLjwvZGQ+CiAKICAgICAgIDxkdD5JbnQzMiBMb2FkMTZa
KEludFB0ciwgb2Zmc2V0KTwvZHQ+CiAgICAgICA8ZGQ+TG9hZHMgYSAxNi1iaXQgaW50ZWdlciBm
cm9tIHRoZSBhZGRyZXNzLCB3aGljaCBpcyBjb21wdXRlZCBieSBhZGRpbmcgdGhlIGNvbXBpbGUt
dGltZQogICAgICAgICAzMi1iaXQgc2lnbmVkIGludGVnZXIgb2Zmc2V0IHRvIHRoZSBjaGlsZCB2
YWx1ZS4gIFplcm8gZXh0ZW5kcyB0aGUgbG9hZGVkIDE2LWJpdAogICAgICAgICBpbnRlZ2VyLCBz
byB0aGUgaGlnaCAxNiBiaXRzIGFyZSBhbGwgemVyby4gIE1pc2FsaWduZWQgbG9hZHMgYXJlIG5v
dCBwZW5hbGl6ZWQuICBNdXN0Ci0gICAgICAgIHVzZSB0aGUgTWVtb3J5VmFsdWUgY2xhc3MuICBN
YXkgaGF2ZSB0aGUgVHJhcHMgZmxhZyBzZXQuPC9kZD4KKyAgICAgICAgdXNlIHRoZSBNZW1vcnlW
YWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBUcmFwcyBmbGFnIHNldC4gTWF5IHNldAorICAgICAg
ICBhIGZlbmNlIHJhbmdlIHRvIHR1cm4gdGhpcyBpbnRvIGEgbG9hZCBhY3F1aXJlLjwvZGQ+CiAK
ICAgICAgIDxkdD5JbnQzMiBMb2FkMTZTKEludFB0ciwgb2Zmc2V0KTwvZHQ+CiAgICAgICA8ZGQ+
TG9hZHMgYSAxNi1iaXQgaW50ZWdlciBmcm9tIHRoZSBhZGRyZXNzLCB3aGljaCBpcyBjb21wdXRl
ZCBieSBhZGRpbmcgdGhlIGNvbXBpbGUtdGltZQogICAgICAgICAzMi1iaXQgc2lnbmVkIGludGVn
ZXIgb2Zmc2V0IHRvIHRoZSBjaGlsZCB2YWx1ZS4gIFNpZ24gZXh0ZW5kcyB0aGUgbG9hZGVkIDE2
LWJpdAogICAgICAgICBpbnRlZ2VyLiAgTWlzYWxpZ25lZCBsb2FkcyBhcmUgbm90IHBlbmFsaXpl
ZC4gIE11c3QgdXNlIHRoZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZQotICAgICAg
ICBUcmFwcyBmbGFnIHNldC48L2RkPgorICAgICAgICBUcmFwcyBmbGFnIHNldC4gTWF5IHNldCBh
IGZlbmNlIHJhbmdlIHRvIHR1cm4gdGhpcyBpbnRvIGEgbG9hZCBhY3F1aXJlLjwvZGQ+CiAKICAg
ICAgIDxkdD5UIExvYWQoSW50UHRyLCBvZmZzZXQpPC9kdD4KICAgICAgIDxkZD5WYWxpZCBmb3Ig
YW55IHR5cGUgZXhjZXB0IFZvaWQuICBMb2FkcyBhIHZhbHVlIG9mIHRoYXQgdHlwZSBmcm9tIHRo
ZSBhZGRyZXNzLCB3aGljaCBpcwogICAgICAgICBjb21wdXRlZCBieSBhZGRpbmcgdGhlIGNvbXBp
bGUtdGltZSAzMi1iaXQgc2lnbmVkIGludGVnZXIgb2Zmc2V0IHRvIHRoZSBjaGlsZCB2YWx1ZS4K
ICAgICAgICAgTWlzYWxpZ25lZCBsb2FkcyBhcmUgbm90IHBlbmFsaXplZC4gIE11c3QgdXNlIHRo
ZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBUcmFwcwotICAgICAgICBmbGFnIHNl
dC48L2RkPgorICAgICAgICBmbGFnIHNldC4gTWF5IHNldCBhIGZlbmNlIHJhbmdlIHRvIHR1cm4g
dGhpcyBpbnRvIGEgbG9hZCBhY3F1aXJlLjwvZGQ+CiAKICAgICAgIDxkdD5Wb2lkIFN0b3JlOChJ
bnQzMiwgSW50UHRyLCBvZmZzZXQpPC9kdD4KICAgICAgIDxkZD5TdG9yZXMgYSB0aGUgbG93IGJ5
dGUgb2YgdGhlIGZpcnN0IGNoaWxkIGludG8gdGhlIGFkZHJlc3MgY29tcHV0ZWQgYnkgYWRkaW5n
IHRoZQogICAgICAgICBjb21waWxlLXRpbWUgMzItYml0IHNpZ25lZCBpbnRlZ2VyIG9mZnNldCB0
byB0aGUgc2Vjb25kIGNoaWxkLiAgTXVzdCB1c2UgdGhlIE1lbW9yeVZhbHVlCi0gICAgICAgIGNs
YXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0LjwvZGQ+CisgICAgICAgIGNsYXNzLiAg
TWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0LiBNYXkgc2V0IGEgZmVuY2UgcmFuZ2UgdG8gdHVy
biB0aGlzIGludG8gYSBzdG9yZSByZWxlYXNlLjwvZGQ+CiAKICAgICAgIDxkdD5Wb2lkIFN0b3Jl
MTYoSW50MzIsIEludFB0ciwgb2Zmc2V0KTwvZHQ+CiAgICAgICA8ZGQ+U3RvcmVzIGEgdGhlIGxv
dyAxNiBiaXRzIG9mIHRoZSBmaXJzdCBjaGlsZCBpbnRvIHRoZSBhZGRyZXNzIGNvbXB1dGVkIGJ5
IGFkZGluZyB0aGUKICAgICAgICAgY29tcGlsZS10aW1lIDMyLWJpdCBzaWduZWQgaW50ZWdlciBv
ZmZzZXQgdG8gdGhlIHNlY29uZCBjaGlsZC4gIE1pc2FsaWduZWQgc3RvcmVzIGFyZQotICAgICAg
ICBub3QgcGVuYWxpemVkLiAgTXVzdCB1c2UgdGhlIE1lbW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhh
dmUgdGhlIFRyYXBzIGZsYWcgc2V0LjwvZGQ+CisgICAgICAgIG5vdCBwZW5hbGl6ZWQuICBNdXN0
IHVzZSB0aGUgTWVtb3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxhZyBzZXQu
IE1heSBzZXQgYQorICAgICAgICBmZW5jZSByYW5nZSB0byB0dXJuIHRoaXMgaW50byBhIHN0b3Jl
IHJlbGVhc2UuPC9kZD4KIAogICAgICAgPGR0PlZvaWQgU3RvcmUoVCwgSW50UHRyLCBvZmZzZXQp
PC9kdD4KICAgICAgIDxkZD5TdG9yZXMgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBjaGlsZCBpbnRv
IHRoZSBhZGRyZXNzIGNvbXB1dGVkIGJ5IGFkZGluZyB0aGUKICAgICAgICAgY29tcGlsZS10aW1l
IDMyLWJpdCBzaWduZWQgaW50ZWdlciBvZmZzZXQgdG8gdGhlIHNlY29uZCBjaGlsZC4gIE1pc2Fs
aWduZWQgc3RvcmVzIGFyZQotICAgICAgICBub3QgcGVuYWxpemVkLiAgTXVzdCB1c2UgdGhlIE1l
bW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0LjwvZGQ+CisgICAg
ICAgIG5vdCBwZW5hbGl6ZWQuICBNdXN0IHVzZSB0aGUgTWVtb3J5VmFsdWUgY2xhc3MuICBNYXkg
aGF2ZSB0aGUgVHJhcHMgZmxhZyBzZXQuIE1heSBzZXQgYQorICAgICAgICBmZW5jZSByYW5nZSB0
byB0dXJuIHRoaXMgaW50byBhIHN0b3JlIHJlbGVhc2UuPC9kZD4KKyAgICAgIAorICAgICAgPGR0
PkludDMyIEF0b21pY1dlYWtDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBJbnRQdHIg
cHRyKTwvZHQ+CisgICAgICA8ZGQ+UGVyZm9ybXMgYSB3ZWFrIDxhIGhyZWY9Imh0dHBzOi8vZW4u
d2lraXBlZGlhLm9yZy93aWtpL0NvbXBhcmUtYW5kLXN3YXAiPkNBUworICAgICAgICAgIChjb21w
YXJlLWFuZC1zd2FwKTwvYT4uIFJldHVybnMgYSBib29sZWFuICgwIG9yIDEpIHRvIGluZGljYXRl
IHRoZSByZXN1bHQgKGZhaWx1cmUgb3IKKyAgICAgICAgc3VjY2VzcywgcmVzcGVjdGl2ZWx5KS4g
TWF5IHNwdXJpb3VzbHkgZmFpbCwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGRvIG5vdGhpbmcgYW5k
IHJldHVybgorICAgICAgICAwLiBZb3UgY2FuIHN1cHBseSBhIGZlbmNlIHJhbmdlIHRvIGluZGlj
YXRlIHRoYXQgdGhlIENBUyBpcyBmZW5jZWQuIEZlbmNlZCBDQVMgaGFzIGJvdGgKKyAgICAgICAg
YWNxdWlyZSBhbmQgcmVsZWFzZSBmZW5jZXMsIGFuZCBjbGFpbXMgdG8gYm90aCByZWFkIGFuZCB3
cml0ZSB0aGUgZnVsbCBmZW5jZSByYW5nZSBpbgorICAgICAgICBhZGRpdGlvbiB0byB3aGF0ZXZl
ciBwcmltYXJ5IHJhbmdlIGlzIHN1cHBsaWVkIGZvciB0aGUgQ0FTIGl0c2VsZi4gQXRvbWljV2Vh
a0NBUyBvbmx5CisgICAgICAgIGhhcyBmZW5jaW5nIGJlaGF2aW9yIGluIHRoZSBjYXNlIHRoYXQg
aXQgc3VjY2VlZHMuIEF0b21pYyBvcGVyYXRpb25zIHRha2UgYSB3aWR0aCBwYXJhbWV0ZXIsCisg
ICAgICAgIGFsbG93aW5nIHRoZW0gdG8gb3BlcmF0ZSBvdmVyIDgtYml0LCAxNi1iaXQsIDMyLWJp
dCwgb3IgNjQtYml0IGludGVnZXIgbWVtb3J5IGxvY2F0aW9ucy48L2RkPgorCisgICAgICA8ZHQ+
VCBBdG9taWNTdHJvbmdDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBJbnRQdHIgcHRy
KTwvZHQ+CisgICAgICA8ZGQ+UGVyZm9ybXMgYSBzdHJvbmcgPGEgaHJlZj0iaHR0cHM6Ly9lbi53
aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyZS1hbmQtc3dhcCI+Q0FTCisgICAgICAgICAgKGNvbXBh
cmUtYW5kLXN3YXApPC9hPi4gUmV0dXJucyB0aGUgb2xkIHZhbHVlIGJlZm9yZSB0aGUgQ0FTLiBU
aGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IKKyAgICAgICAgaXMgc21hcnQgYWJvdXQgRXF1YWwoQXRv
bWljU3Ryb25nQ0FTKGV4cGVjdGVkLCAuLi4pLCBleHBlY3RlZCkgcGF0dGVybnMsIHNvIHRoaXMg
b3Bjb2RlCisgICAgICAgIGlzIGFsc28gdGhlIGJlc3Qgd2F5IHRvIGRvIGEgc3Ryb25nIENBUyB0
aGF0IHJldHVybnMgYSBib29sZWFuIC0ganVzdCB1c2UgRXF1YWwgdG8gY29tcGFyZQorICAgICAg
ICB0aGUgcmVzdWx0IHRvIGV4cGVjdGVkLiBZb3UgY2FuIHN1cHBseSBhIGZlbmNlIHJhbmdlIHRv
IGluZGljYXRlIHRoYXQgdGhlIENBUyBpcyBmZW5jZWQuCisgICAgICAgIEZlbmNlZCBDQVMgaGFz
IGJvdGggYWNxdWlyZSBhbmQgcmVsZWFzZSBmZW5jZXMsIGFuZCBjbGFpbXMgdG8gYm90aCByZWFk
IGFuZCB3cml0ZSB0aGUgZnVsbAorICAgICAgICBmZW5jZSByYW5nZSBpbiBhZGRpdGlvbiB0byB3
aGF0ZXZlciBwcmltYXJ5IHJhbmdlIGlzIHN1cHBsaWVkIGZvciB0aGUgQ0FTIGl0c2VsZi4KKyAg
ICAgICAgQXRvbWljU3Ryb25nQ0FTIGhhcyB0aGUgc2FtZSBmZW5jaW5nIG9uIGZhaWx1cmUgYW5k
IHN1Y2Nlc3MuIEF0b21pYyBvcGVyYXRpb25zIHRha2UgYSB3aWR0aAorICAgICAgICBwYXJhbWV0
ZXIsIGFsbG93aW5nIHRoZW0gdG8gb3BlcmF0ZSBvdmVyIDgtYml0LCAxNi1iaXQsIDMyLWJpdCwg
b3IgNjQtYml0IGludGVnZXIgbWVtb3J5CisgICAgICAgIGxvY2F0aW9ucy4gUmV0dXJucyBhIHNp
Z24tZXh0ZW5kZWQgcmVzdWx0IGZvciA4LWJpdCBvciAxNi1iaXQgd2lkdGhzLjwvZGQ+CisgICAg
ICAKKyAgICAgIDxkdD5UIEF0b21pY1hjaGdBZGQoVCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+
QXRvbWljYWxseSBhZGRzIGEgdmFsdWUgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJu
cyB0aGUgb2xkIHZhbHVlLiBJcyBhbGxvd2VkIHRvCisgICAgICAgIGhhdmUgYSBmZW5jZSByYW5n
ZSwgd2hpY2ggY2F1c2VzIGl0IHRvIGhhdmUgYWNxdWlyZS9yZWxlYXNlIGZlbmNpbmcuIEF0b21p
YyBvcGVyYXRpb25zIHRha2UKKyAgICAgICAgYSB3aWR0aCBwYXJhbWV0ZXIsIGFsbG93aW5nIHRo
ZW0gdG8gb3BlcmF0ZSBvdmVyIDgtYml0LCAxNi1iaXQsIDMyLWJpdCwgb3IgNjQtYml0IGludGVn
ZXIgbWVtb3J5CisgICAgICAgIGxvY2F0aW9ucy4gUmV0dXJucyBhIHNpZ24tZXh0ZW5kZWQgcmVz
dWx0IGZvciA4LWJpdCBvciAxNi1iaXQgd2lkdGhzLjwvZGQ+CisKKyAgICAgIDxkdD5UIEF0b21p
Y1hjaGdBbmQoVCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+QXRvbWljYWxseSBiaXR3aXNlLWFu
ZHMgYSB2YWx1ZSB0byB0aGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5zIHRoZSBvbGQgdmFs
dWUuIElzIGFsbG93ZWQgdG8KKyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdlLCB3aGljaCBjYXVz
ZXMgaXQgdG8gaGF2ZSBhY3F1aXJlL3JlbGVhc2UgZmVuY2luZy4gQXRvbWljIG9wZXJhdGlvbnMg
dGFrZQorICAgICAgICBhIHdpZHRoIHBhcmFtZXRlciwgYWxsb3dpbmcgdGhlbSB0byBvcGVyYXRl
IG92ZXIgOC1iaXQsIDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQgaW50ZWdlciBtZW1vcnkKKyAg
ICAgICAgbG9jYXRpb25zLiBSZXR1cm5zIGEgc2lnbi1leHRlbmRlZCByZXN1bHQgZm9yIDgtYml0
IG9yIDE2LWJpdCB3aWR0aHMuPC9kZD4KKworICAgICAgPGR0PlQgQXRvbWljWGNoZ09yKFQsIElu
dFB0cik8L2R0PgorICAgICAgPGRkPkF0b21pY2FsbHkgYml0d2lzZS1vcnMgYSB2YWx1ZSB0byB0
aGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5zIHRoZSBvbGQgdmFsdWUuIElzIGFsbG93ZWQg
dG8KKyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdlLCB3aGljaCBjYXVzZXMgaXQgdG8gaGF2ZSBh
Y3F1aXJlL3JlbGVhc2UgZmVuY2luZy4gQXRvbWljIG9wZXJhdGlvbnMgdGFrZQorICAgICAgICBh
IHdpZHRoIHBhcmFtZXRlciwgYWxsb3dpbmcgdGhlbSB0byBvcGVyYXRlIG92ZXIgOC1iaXQsIDE2
LWJpdCwgMzItYml0LCBvciA2NC1iaXQgaW50ZWdlciBtZW1vcnkKKyAgICAgICAgbG9jYXRpb25z
LiBSZXR1cm5zIGEgc2lnbi1leHRlbmRlZCByZXN1bHQgZm9yIDgtYml0IG9yIDE2LWJpdCB3aWR0
aHMuPC9kZD4KKworICAgICAgPGR0PlQgQXRvbWljWGNoZ1N1YihULCBJbnRQdHIpPC9kdD4KKyAg
ICAgIDxkZD5BdG9taWNhbGx5IHN1YnRyYWN0cyBhIHZhbHVlIHRvIHRoZSBtZW1vcnkgbG9jYXRp
b24gYW5kIHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gSXMgYWxsb3dlZCB0bworICAgICAgICBoYXZl
IGEgZmVuY2UgcmFuZ2UsIHdoaWNoIGNhdXNlcyBpdCB0byBoYXZlIGFjcXVpcmUvcmVsZWFzZSBm
ZW5jaW5nLiBBdG9taWMgb3BlcmF0aW9ucyB0YWtlCisgICAgICAgIGEgd2lkdGggcGFyYW1ldGVy
LCBhbGxvd2luZyB0aGVtIHRvIG9wZXJhdGUgb3ZlciA4LWJpdCwgMTYtYml0LCAzMi1iaXQsIG9y
IDY0LWJpdCBpbnRlZ2VyIG1lbW9yeQorICAgICAgICBsb2NhdGlvbnMuIFJldHVybnMgYSBzaWdu
LWV4dGVuZGVkIHJlc3VsdCBmb3IgOC1iaXQgb3IgMTYtYml0IHdpZHRocy48L2RkPgorCisgICAg
ICA8ZHQ+VCBBdG9taWNYY2hnWG9yKFQsIEludFB0cik8L2R0PgorICAgICAgPGRkPkF0b21pY2Fs
bHkgYml0d2lzZS14b3JzIGEgdmFsdWUgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJu
cyB0aGUgb2xkIHZhbHVlLiBJcyBhbGxvd2VkIHRvCisgICAgICAgIGhhdmUgYSBmZW5jZSByYW5n
ZSwgd2hpY2ggY2F1c2VzIGl0IHRvIGhhdmUgYWNxdWlyZS9yZWxlYXNlIGZlbmNpbmcuIEF0b21p
YyBvcGVyYXRpb25zIHRha2UKKyAgICAgICAgYSB3aWR0aCBwYXJhbWV0ZXIsIGFsbG93aW5nIHRo
ZW0gdG8gb3BlcmF0ZSBvdmVyIDgtYml0LCAxNi1iaXQsIDMyLWJpdCwgb3IgNjQtYml0IGludGVn
ZXIgbWVtb3J5CisgICAgICAgIGxvY2F0aW9ucy4gUmV0dXJucyBhIHNpZ24tZXh0ZW5kZWQgcmVz
dWx0IGZvciA4LWJpdCBvciAxNi1iaXQgd2lkdGhzLjwvZGQ+CisKKyAgICAgIDxkdD5UIEF0b21p
Y1hjaGcoVCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+QXRvbWljYWxseSBzdG9yZXMgYSB2YWx1
ZSB0byB0aGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5zIHRoZSBvbGQgdmFsdWUuIElzIGFs
bG93ZWQgdG8KKyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdlLCB3aGljaCBjYXVzZXMgaXQgdG8g
aGF2ZSBhY3F1aXJlL3JlbGVhc2UgZmVuY2luZy4gQXRvbWljIG9wZXJhdGlvbnMgdGFrZQorICAg
ICAgICBhIHdpZHRoIHBhcmFtZXRlciwgYWxsb3dpbmcgdGhlbSB0byBvcGVyYXRlIG92ZXIgOC1i
aXQsIDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQgaW50ZWdlciBtZW1vcnkKKyAgICAgICAgbG9j
YXRpb25zLiBSZXR1cm5zIGEgc2lnbi1leHRlbmRlZCByZXN1bHQgZm9yIDgtYml0IG9yIDE2LWJp
dCB3aWR0aHMuPC9kZD4KIAogICAgICAgPGR0PkludFB0ciBXYXNtQWRkcmVzcyhJbnRQdHIsIHBp
bm5lZEdQUik8L2R0PgogICAgICAgPGRkPlRoaXMgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBhZGRy
ZXNzIG9mIGEgd2FzbSBtZW1vcnkgbG9hZCBmcm9tIGEgcGlubmVkIGJhc2UgR1BSLgogICAgICAg
ICBNdXN0IHVzZSB0aGUgV2FzbUFkZHJlc3NWYWx1ZSBjbGFzcy48L2RkPgogCi0KICAgICAgIDxk
dD5Wb2lkIEZlbmNlKCk8L2R0PgogICAgICAgPGRkPkFic3RyYWN0cyBzdGFuZGFsb25lIGRhdGEg
ZmVuY2VzIG9uIHg4NiBhbmQgQVJNLiBNdXN0IHVzZSB0aGUgRmVuY2VWYWx1ZSBjbGFzcywgd2hp
Y2ggaGFzCiAgICAgICAgIHR3byBhZGRpdGlvbmFsIG1lbWJlcnMgdGhhdCBjb25maWd1cmUgdGhl
IHByZWNpc2UgbWVhbmluZyBvZiB0aGUgZmVuY2U6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303437</attachid>
            <date>2017-03-04 20:28:50 -0800</date>
            <delta_ts>2017-03-06 20:11:11 -0800</delta_ts>
            <desc>try again to fix gtk build</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>388646</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyMiBA
QAorMjAxNy0wMy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzIHNob3VsZCBoYXZlIGNvbXByZWhlbnNpdmUgc3VwcG9ydCBmb3IgYXRvbWljIG9wZXJhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBhZGRzIHRoZSBmb2xsb3dpbmcgY2FwYWJpbGl0aWVzIHRvIEIzOgorICAgICAgICAK
KyAgICAgICAgLSBBdG9taWMgd2Vhay9zdHJvbmcgdW5mZW5jZWQvZmVuY2VkIGNvbXBhcmUtYW5k
LXN3YXAKKyAgICAgICAgLSBBdG9taWMgYWRkcy9zdWIvb3IvYW5kL3hvci94aGcKKyAgICAgICAg
LSBBY3F1aXJlL3JlbGVhc2UgZmVuY2luZyBvbiBsb2Fkcy9zdG9yZXMKKyAgICAgICAgLSBGZW5j
ZWxlc3MgbG9hZC1sb2FkIGRlcGVuZGVuY2llcworICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRz
IGxvd2VyaW5nIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIG9uIHg4NjoKKyAgICAgICAg
CisgICAgICAgIC0gbG9jayBjbXB4Y2hnCisgICAgICAgIC0gbG9jayB4YWRkCisgICAgICAgIC0g
bG9jayBhZGQvc3ViL29yL2FuZC94b3IveGNoZworICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRz
IGxvd2VyaW5nIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIG9uIEFSTTY0OgorICAgICAg
ICAKKyAgICAgICAgLSBsZGFyIGFuZCBmcmllbmRzCisgICAgICAgIC0gc3RsciBhbmQgZnJpZW5k
cworICAgICAgICAtIGxkeHIgYW5kIGZyaWVuZHMgKHVuZmVuY2VkIExMKQorICAgICAgICAtIHN0
eHIgYW5kIGZyaWVuZHMgKHVuZmVuZGVkIFNDKQorICAgICAgICAtIGxkYXhyIGFuZCBmcmllbmRz
IChmZW5jZWQgTEwpCisgICAgICAgIC0gc3RseHIgYW5kIGZyaWVuZHMgKGZlbmNlZCBTQykKKyAg
ICAgICAgLSBlb3IgYXMgYSBmZW5jZWxlc3MgbG9hZC1sb2FkIGRlcGVuZGVuY3kKKyAgICAgICAg
CisgICAgICAgIFRoaXMgZG9lcyBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gcGF0dGVybiBtYXRjaGlu
ZyB0byBlbnN1cmUgdGhhdCB3ZWFrL3N0cm9uZyBDQVMgYW5kIGFsbCBvZiB0aGUKKyAgICAgICAg
dmFyaWFudHMgb2YgZmVuY2VzIGFuZCBhdG9taWMgbWF0aCBvcHMgZ2V0IGxvd2VyZWQgdG8gdGhl
IGJlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UuCisgICAgICAgIEZvciBleGFtcGxl
LCB3ZSBzdXBwb3J0IHRoZSBFcXVhbChBdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWQsIC4uLiksIGV4
cGVjdGVkKSBwYXR0ZXJuIGFuZCBhIGJ1bmNoCisgICAgICAgIG9mIGl0cyBmcmllbmRzLiBZb3Ug
Y2FuIHNheSBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkLCAuLi4pLCBleHBl
Y3RlZCkpIGFuZCBpdCB3aWxsCisgICAgICAgIGdlbmVyYXRlIHRoZSBiZXN0IHBvc3NpYmxlIGJy
YW5jaCBzZXF1ZW5jZSBvbiB4ODYgYW5kIEFSTTY0LgorICAgICAgICAKKyAgICAgICAgQjMgbm93
IGtub3dzIGhvdyB0byBtb2RlbCBhbGwgb2YgdGhlIGtpbmRzIG9mIGZlbmNpbmcuIEl0IGtub3dz
IHRoYXQgYWNxIGxvYWRzIGFyZSBvcmRlcmVkIHdpdGgKKyAgICAgICAgcmVzcGVjdCB0byBlYWNo
IG90aGVyIGFuZCB3aXRoIHJlc3BlY3QgdG8gcmVsIHN0b3JlcywgY3JlYXRpbmcgc2VxdWVudGlh
bCBjb25zaXN0ZW5jeSB0aGF0CisgICAgICAgIHRyYW5zY2VuZHMganVzdCB0aGUgYWNxL3JlbCBm
ZW5jZXMgdGhlbXNlbHZlcyAoc2VlIEVmZmVjdHM6OmZlbmNlKS4gSXQga25vd3MgdGhhdCB0aGUg
cGhhbnRvbQorICAgICAgICBmZW5jZSBlZmZlY3RzIG1heSBvbmx5IHRhcmdldCBzb21lIGFic3Ry
YWN0IGhlYXBzIGJ1dCBub3Qgb3RoZXJzLCBzbyB0aGF0IGxvYWQgZWxpbWluYXRpb24gYW5kCisg
ICAgICAgIHN0b3JlIHNpbmtpbmcgY2FuIHN0aWxsIG9wZXJhdGUgYWNyb3NzIGZlbmNlcyBpZiB5
b3UganVzdCB0ZWxsIEIzIHRoYXQgdGhlIGZlbmNlIGRvZXMgbm90IGFsaWFzCisgICAgICAgIHRo
b3NlIGFjY2Vzc2VzLiBUaGlzIG1ha2VzIGl0IHN1cGVyIGVhc3kgdG8gdGVhY2ggQjMgdGhhdCBz
b21lIG9mIHlvdXIgaGVhcCBpcyB0aHJlYWQtbG9jYWwuCisgICAgICAgIEV2ZW4gYmV0dGVyLCBp
dCBsZXRzIHlvdSBleHByZXNzIGZpbmUtZ3JhaW5lZCBkZXBlbmRlbmNpZXMgd2hlcmUgdGhlIGF0
b21pY3MgdGhhdCBhZmZlY3Qgb25lCisgICAgICAgIHByb3BlcnR5IGluIHNoYXJlZCBtZW1vcnkg
ZG8gbm90IGNsb2JiZXIgbm9uLWF0b21pY3MgdGhhdCBmZmVjdCBzb21lIG90aGVyIHByb3BlcnR5
IGluIHNoYXJlZAorICAgICAgICBtZW1vcnkuCisgICAgICAgIAorICAgICAgICBPbmUgb2YgbXkg
ZmF2b3JpdGUgZmVhdHVyZXMgaXMgRGVwZW5kLCB3aGljaCBhbGxvd3MgeW91IHRvIGV4cHJlc3Mg
bG9hZC1sb2FkIGRlcGVuZGVuY2llcy4gT24KKyAgICAgICAgeDg2IGl0IGxvd2VycyB0byBub3Ro
aW5nLCB3aGlsZSBvbiBBUk02NCBpdCBsb3dlcnMgdG8gZW9yLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBhbHNvIGV4cG9zZXMgYSBjb21tb24gYXRvbWljV2Vha0NBUyBBUEkgdG8gdGhlIHg4Nl82
NC9BUk02NCBNYWNyb0Fzc2VtYmxlcnMuIFNhbWUgZm9yCisgICAgICAgIGFjcS9yZWwuIEpTQydz
IDY0LWJpdCBKSVRzIGFyZSBub3cgYSBoYXBweSBjb25jdXJyZW5jeSBwbGF5Z3JvdW5kLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBkb2Vzbid0IHlldCBleHBvc2UgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gSlMgb3Igd2FzbS4gU0FCIHN0aWxsIHVzZXMgdGhlIG5vbi1pbnRyaW5zaWMKKyAgICAgICAg
aW1wbGVtZW50YXRpb25zIG9mIHRoZSBBdG9taWNzIG9iamVjdCwgZm9yIG5vdy4KKyAgICAgICAg
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmxkYXIpOgorICAgICAgICAoSlND
OjpBUk02NEFzc2VtYmxlcjo6bGR4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjps
ZGF4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdHhyKToKKyAgICAgICAgKEpT
Qzo6QVJNNjRBc3NlbWJsZXI6OnN0bHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6
c3RseHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZXhjZXBuR2VuZXJhdGlvbklt
bU1hc2spOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZXhvdGljTG9hZCk6CisgICAg
ICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdG9yZVJlbGVhc2UpOgorICAgICAgICAoSlNDOjpB
Uk02NEFzc2VtYmxlcjo6ZXhvdGljU3RvcmUpOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRBY3E4
U2lnbmVkRXh0ZW5kVG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omxv
YWRBY3E4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVSZWw4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZEFjcTE2U2lnbmVkRXh0ZW5k
VG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRBY3ExNik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlUmVsMTYpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZVJlbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
c3RvcmVSZWw2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5r
OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxOCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZDgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmRSZWw4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbmsxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZUNvbmQxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlQ29uZFJlbDE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZExpbmszMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNx
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbms2NCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YXRvbWljU3Ryb25nQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmF0b21pY1N0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YXRvbWljU3Ryb25nQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphdG9taWNTdHJvbmdDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmF0b21pY1JlbGF4ZWRTdHJvbmdDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoQXRvbWljV2Vha0NBUzgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTNjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNSZWxheGVkV2Vh
a0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNS
ZWxheGVkV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJh
bmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpkZXBlbmQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmRlcGVuZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZExpbmspOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkTGlua0FjcSk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZFJlbCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNpZ25FeHRlbmQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpicmFuY2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphdG9taWNTdHJvbmdDQVMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojph
dG9taWNSZWxheGVkU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoQXRvbWljV2Vha0NBUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6ZXh0cmFjdFNpbXBsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDg+KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6c2lnbkV4dGVuZDwxNj4pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0OjpicmFuY2g8NjQ+KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFkZDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bmVnMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bmVnOCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMTYpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6b3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN1YjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnN1YjgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMTYpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpub3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
Ojpub3QxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpub3Q4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Ryb25nQ0FTOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdHJvbmdDQVMxNik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdHJvbmdDQVMzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBdG9taWNTdHJv
bmdDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0
b21pY1N0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmF0b21pY1dlYWtDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmF0b21pY1dlYWtDQVMxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjphdG9taWNXZWFrQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YnJhbmNoQXRvbWljV2Vha0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoQXRvbWljV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1dlYWtDQVMzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNSZWxheGVkV2Vha0NBUzgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljUmVsYXhlZFdlYWtD
QVMxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNSZWxh
eGVkV2Vha0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJy
YW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljQWRkOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBZGQxNik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBZGQzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdWI4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N1YjE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmF0b21pY0FuZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6YXRvbWljQW5kMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YXRvbWljQW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6YXRvbWljT3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OmF0b21pY09yMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YXRvbWljT3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9t
aWNYb3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hv
cjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hvcjMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY05lZzgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTmVnMTYpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTmVnMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTm90OCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNOb3QxNik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNOb3QzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnQWRkOCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnQWRkMTYpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljWGNoZ0FkZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGc4KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGcxNik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6bG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3ExNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3EzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZVJlbDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6c3RvcmVSZWwxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzdG9yZVJlbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN0b3JlRmVuY2UpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6bG9hZEZlbmNlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnBhdGNoYWJsZUp1bXBTaXplKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OnN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1cHBvcnRzQVZYKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnVwZGF0ZUVheDFFY3hGbGFncyk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp4ODZDb25kaXRpb24pOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1N0cm9uZ0NBUyk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjphZGQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0OjphbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpuZWc2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpvcjY0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN1YjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZfNjQ6OnhvcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om5vdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0b3JlNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljU3Ryb25nQ0FTNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoQXRvbWljU3Ryb25n
Q0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljV2Vha0NB
UzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaEF0b21pY1dl
YWtDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNSZWxh
eGVkV2Vha0NBUzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5j
aEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6YXRvbWljQWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YXRvbWljU3ViNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWlj
QW5kNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljT3I2NCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNYb3I2NCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNOZWc2NCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNOb3Q2NCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNYY2hnQWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljWGNoZzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OmxvYWRBY3E2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpzdG9yZVJlbDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6YWRkcV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkcV9ybSk6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkcV9pbSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6YW5kbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kbF9y
bSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kd19ybSk6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6YW5kYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5k
bF9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kd19pbSk6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6YW5kYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
YW5kcV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcV9ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcV9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6aW5jcV9tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdxX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5lZ2xfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bmVnd19tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdiX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdGxfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bm90d19tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpub3RiX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdHFfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JsX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfcm0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yd19ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfaW0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yd19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JiX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcnFfbXIpOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9ycV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX21yKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpzdWJ3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJiX3JtKToKKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjpzdWJ3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJiX2ltKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJxX21yKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpzdWJxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJxX2lt
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JsX21yKToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjp4b3JsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3Js
X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3J3X3JtKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjp4b3J3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4
b3JiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JiX2ltKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp4b3JxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX21yKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4Y2hnYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6eGNoZ3dfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnhjaGdsX3JtKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4Y2hncV9ybSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6bW92d19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92cV9p
MzJtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hnYl9ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6Y21weGNoZ3dfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6OmNtcHhjaGdsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hn
cV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZGJfcm0pOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OnhhZGR3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp4YWRkbF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZHFfcm0pOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGIzL0IzQXRv
bWljVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjp+QXRv
bWljVmFsdWUpOgorICAgICAgICAoSlNDOjpCMzo6QXRvbWljVmFsdWU6OmR1bXBNZXRhKToKKyAg
ICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjpjbG9uZUltcGwpOgorICAgICAgICAoSlNDOjpC
Mzo6QXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKToKKyAgICAgICAgKiBiMy9CM0F0b21pY1ZhbHVl
Lmg6IEFkZGVkLgorICAgICAgICAqIGIzL0IzQmFzaWNCbG9jay5oOgorICAgICAgICAqIGIzL0Iz
QmxvY2tJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJbnNlcnRpb25T
ZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6QjM6OkJsb2NrSW5zZXJ0aW9u
U2V0OjppbnNlcnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJbnNlcnRpb25T
ZXQ6Omluc2VydEJlZm9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpCbG9ja0luc2Vy
dGlvblNldDo6aW5zZXJ0QWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJ
bnNlcnRpb25TZXQ6OmV4ZWN1dGUpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzQmxvY2tJbnNl
cnRpb25TZXQuaDoKKyAgICAgICAgKiBiMy9CM0VmZmVjdHMuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6RWZmZWN0czo6aW50ZXJmZXJlcyk6CisgICAgICAgIChKU0M6OkIzOjpFZmZlY3RzOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKEpTQzo6QjM6OkVmZmVjdHM6OmR1bXApOgorICAgICAgICAqIGIz
L0IzRWZmZWN0cy5oOgorICAgICAgICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2FsbCk6CisgICAg
ICAgIChKU0M6OkIzOjpFZmZlY3RzOjptdXN0RXhlY3V0ZSk6CisgICAgICAgICogYjMvQjNFbGlt
aW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNHZW5lcmF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpnZW5lcmF0ZVRvQWlyKToKKyAgICAgICAgKiBiMy9CM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkdlbmVy
aWNCbG9ja0luc2VydGlvblNldDo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAg
KEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAg
KEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIpOgorICAgICAg
ICAoSlNDOjpCMzo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAg
KiBiMy9CM0hlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpCMzo6SGVhcFJhbmdlOjpvcGVyYXRv
cnwpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
Okluc2VydGlvblNldDo6aW5zZXJ0Q2xvbmUpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0
Lmg6CisgICAgICAgICogYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwOgorICAgICAgICAq
IGIzL0IzTG93ZXJNYWNyb3MuY3BwOgorICAgICAgICAoSlNDOjpCMzo6bG93ZXJNYWNyb3MpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAg
ICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6Okxvd2VyVG9BaXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpydW4p
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YWRkcik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlQW55T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9wKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6c3RvcmVPcGNvZGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpjcmVhdGVTdG9yZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6Om5ld0Jsb2NrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
c3BsaXRCbG9jayk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFj
a21hcCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NkRpdik6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NlVEaXYpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojpsb3dlclg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6Omxvd2VyWDg2VURpdik6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmg6
CisgICAgICAgICogYjMvQjNNZW1vcnlWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpNZW1v
cnlWYWx1ZTo6aXNMZWdhbE9mZnNldCk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6
YWNjZXNzVHlwZSk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuayk6
CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUpOgorICAgICAg
ICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6OmR1bXBNZXRhKToKKyAgICAgICAgKEpTQzo6QjM6Ok1l
bW9yeVZhbHVlOjpNZW1vcnlWYWx1ZSk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6
YWNjZXNzV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTWVtb3J5VmFsdWUuaDoKKyAg
ICAgICAgKiBiMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
QjM6Ok1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6QjM6Ok1lbW9y
eVZhbHVlOjpyZXF1aXJlc1NpbXBsZUFkZHIpOgorICAgICAgICAoSlNDOjpCMzo6TWVtb3J5VmFs
dWU6OmFjY2Vzc1dpZHRoKToKKyAgICAgICAgKiBiMy9CM01vdmVDb25zdGFudHMuY3BwOgorICAg
ICAgICAqIGIzL0IzTmF0aXZlVHJhaXRzLmg6IEFkZGVkLgorICAgICAgICAqIGIzL0IzT3Bjb2Rl
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnN0b3JlT3Bjb2RlKToKKyAgICAgICAgKFdURjo6cHJp
bnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAgKEpTQzo6QjM6
OmlzTG9hZCk6CisgICAgICAgIChKU0M6OkIzOjppc1N0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6
OmlzTG9hZFN0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6OmlzQXRvbWljKToKKyAgICAgICAgKEpT
Qzo6QjM6OmlzQXRvbWljQ0FTKToKKyAgICAgICAgKEpTQzo6QjM6OmlzQXRvbWljWGNoZyk6Cisg
ICAgICAgIChKU0M6OkIzOjppc01lbW9yeUFjY2Vzcyk6CisgICAgICAgIChKU0M6OkIzOjpzaWdu
RXh0ZW5kT3Bjb2RlKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpQcm9jZWR1cmU6OmR1bXApOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6Cisg
ICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Omhhc1F1aXJrcyk6CisgICAgICAgIChKU0M6OkIz
OjpQcm9jZWR1cmU6OnNldEhhc1F1aXJrcyk6CisgICAgICAgICogYjMvQjNQdXJlQ1NFLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OnB1cmVDU0UpOgorICAgICAgICAqIGIzL0IzUHVyZUNTRS5oOgor
ICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsaWRh
dGUuY3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFs
dWU6OnJldHVybnNCb29sKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnBl
cmZvcm1TdWJzdGl0dXRpb24pOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnR5cGVGb3IpOgor
ICAgICAgICAqIGIzL0IzVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM1dpZHRoLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OmJlc3RUeXBlKToKKyAgICAgICAgKiBiMy9CM1dpZHRoLmg6CisgICAgICAg
IChKU0M6OkIzOjpjYW5vbmljYWxXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjppc0Nhbm9uaWNh
bFdpZHRoKToKKyAgICAgICAgKEpTQzo6QjM6Om1hc2spOgorICAgICAgICAqIGIzL2Fpci9BaXJB
cmcuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmpzSGFzaCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6OkFyZzo6ZHVtcCk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpp
c0FueVVzZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNDb2xkVXNlKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpjb29sZWQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzRWFybHlVc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzTGF0ZVVzZSk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNBbnlEZWYpOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpBcmc6OmlzRWFybHlEZWYpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6Omlz
TGF0ZURlZik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNaRGVmKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjpzaW1wbGVBZGRyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjpzdGF0dXNDb25kKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1NpbXBsZUFk
ZHIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzTWVtb3J5KToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc1N0YXR1c0NvbmQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpwdHIpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmJhc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzR1ApOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRlApOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpBcmc6OmlzVmFsaWRGb3JtKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjpmb3JFYWNoVG1wRmFzdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6Zm9yRWFj
aFRtcCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6YXNBZGRyZXNzKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjphc1N0YXR1c0NvbmRpdGlvbik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OkFyZzo6aXNJbnZlcnRpYmxlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpp
bnZlcnRlZCk6CisgICAgICAgICogYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKToKKyAgICAgICAgKiBiMy9h
aXIvQWlyQmFzaWNCbG9jay5oOgorICAgICAgICAqIGIzL2Fpci9BaXJCbG9ja0luc2VydGlvblNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCbG9ja0luc2VydGlvblNldDo6
QmxvY2tJbnNlcnRpb25TZXQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCbG9ja0luc2VydGlv
blNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKiBiMy9haXIvQWlyQmxvY2tJbnNl
cnRpb25TZXQuaDogQWRkZWQuCisgICAgICAgICogYjMvYWlyL0FpckR1bXBBc0pTLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBiMy9haXIvQWlyRHVtcEFzSlMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBiMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjplbGltaW5hdGVEZWFkQ29kZSk6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24pOgorICAgICAgICAq
IGIzL2Fpci9BaXJJbnN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjppc0F0b21p
Y1N0cm9uZ0NBU1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNT
dHJvbmdDQVNWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmlzQXRvbWljU3Ryb25nQ0FT
OFZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVMxNlZhbGlk
KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVMzMlZhbGlkKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVM2NFZhbGlkKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNTdHJvbmdDQVM4VmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzE2VmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzY0VmFsaWQpOgorICAgICAgICAq
IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy9haXIvQWlyT3B0aW1pemVC
bG9ja09yZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6b3B0aW1pemVCbG9ja09yZGVy
KToKKyAgICAgICAgKiBiMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6cGFkSW50ZXJmZXJlbmNlKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6c3BpbGxFdmVyeXRoaW5nKToK
KyAgICAgICAgKiBiMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYjoKKyAgICAgICAgKiBiMy90ZXN0
YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRBY3E0Mik6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0
b3JlUmVsQWRkTG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkRmVu
Y2VMb2FkQWNxOCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdFg4NkxlYUFkZEFkZCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0WDg2TGVhQWRkU2hs
TGVmdFNjYWxlMSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljV2Vha0NBUyk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RBdG9taWNYY2hnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3REZXBlbmQzMik6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0RGVwZW5kNjQpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAg
ICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHA6CisgICAgICAgIChKU0M6OkFS
TTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlOjpmb3JtYXQpOgor
ICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmg6CisgICAgICAgIChKU0M6
OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlOjpvcE5hbWUp
OgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9yZUV4
Y2x1c2l2ZTo6cnMpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29k
ZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6cnQyKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJs
ZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6Om8wKToKKyAgICAgICAgKEpTQzo6QVJN
NjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6Om8xKToKKyAgICAg
ICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6
Om8yKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3Rv
cmVFeGNsdXNpdmU6OmxvYWRCaXQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6
QTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6b3BOdW1iZXIpOgorICAgICAgICAoSlNDOjpB
Uk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZTo6aXNQYWlyT3Ap
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE3LTAzLTA0ICBDc2FiYSBPc3p0
cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0FSTV0gVW5yZXZpZXdlZCBi
dWlsZGZpeCBhZnRlciByMjEzMzc2LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAogCiAgICAgYXNzZW1ibGVyL0FS
TUFzc2VtYmxlci5jcHAKKyAgICBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAK
ICAgICBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuY3BwCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcApAQCAtNzYsMTIgKzc3
LDEyIEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYjMvYWlyL0FpckFsbG9jYXRl
U3RhY2suY3BwCiAgICAgYjMvYWlyL0FpckFyZy5jcHAKICAgICBiMy9haXIvQWlyQmFzaWNCbG9j
ay5jcHAKKyAgICBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCiAgICAgYjMvYWlyL0Fp
ckNDYWxsU3BlY2lhbC5jcHAKICAgICBiMy9haXIvQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcAog
ICAgIGIzL2Fpci9BaXJDb2RlLmNwcAogICAgIGIzL2Fpci9BaXJDdXN0b20uY3BwCiAgICAgYjMv
YWlyL0FpckRpc2Fzc2VtYmxlci5jcHAKLSAgICBiMy9haXIvQWlyRHVtcEFzSlMuY3BwCiAgICAg
YjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAogICAgIGIzL2Fpci9BaXJFbWl0U2h1ZmZs
ZS5jcHAKICAgICBiMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTExMCw2ICsxMTEs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGIzL2Fpci9BaXJWYWxpZGF0ZS5j
cHAKIAogICAgIGIzL0IzQXJndW1lbnRSZWdWYWx1ZS5jcHAKKyAgICBiMy9CM0F0b21pY1ZhbHVl
LmNwcAogICAgIGIzL0IzQmFuay5jcHAKICAgICBiMy9CM0Jhc2ljQmxvY2suY3BwCiAgICAgYjMv
QjNCbG9ja0luc2VydGlvblNldC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3
NCwxNCBAQAogCQkwRjJDNjNCMDFFNjBBRTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBD
MTM4MzkgLyogQjNCYW5rLmggKi87IH07CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBC
M1dpZHRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0FEMUU2MEFFM0MwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYz
QjIxRTYwQUU0NzAwQzEzODM5IC8qIEIzV2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRo
LmggKi87IH07CisJCTBGMkM2M0I2MUU2MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0Iz
MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcx
RTYzNDNFRDAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0
b21pY1ZhbHVlLmggKi87IH07CisJCTBGMkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggKi87IH07CisJCTBGMkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9j
a0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQu
Y3BwICovOyB9OworCQkwRjJDNjNCQzFFNjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRp
b25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9Owor
CQkwRjJDNjNDMDFFNjYwRUE3MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFF
NjYwRUE1MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBG
MkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5
IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87IH07CisJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAv
KiBCM01lbW9yeVZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzYzQzMxRTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJ
bmxpbmVzLmggKi87IH07CiAJCTBGMkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNj
b3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYy
RDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYyRDRERTgxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5
ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDksOCArMjI1
Nyw2IEBACiAJCURDMjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIw
MDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAqLzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThD
IC8qIEhlYXBDZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBC
QTkxOEMgLyogSGVhcENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsg
fTsKLQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYw
MDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRD
MThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87
IH07CiAJCURDNjA1QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZF
OTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVB
MjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
REM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5Mzcx
OCAvKiBQcm9maWxlclVJRC5jcHAgKi87IH07CkBAIC0yNzc1LDYgKzI3ODEsMTQgQEAKIAkJMEYy
QzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM0JhbmsuaDsgcGF0aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIz
L0IzV2lkdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBB
RTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBCM1dpZHRoLmg7IHBhdGggPSBiMy9CM1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRo
ID0gYjMvQjNBdG9taWNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEz
ODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0
aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0
aW9uU2V0Lmg7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMkM2M0MxMUU2NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCM05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRp
dmVUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQzMxRTY5RUY5
MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEIzTWVtb3J5VmFsdWVJbmxpbmVzLmg7IHBhdGggPSBiMy9CM01lbW9yeVZh
bHVlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQjE5ODMy
RDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEZWJ1Z2dlclNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyRDREREMxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXJTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJENERERjE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVy
TG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVQcm9maWxlckxvZy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Nzk1LDggKzQ4MDksNiBAQAogCQlEQzIxNDMwNjFDQTMy
RTUyMDAwQTg4NjkgLyogSUNTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJQ1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDM0QyQjA5MUQzNDMx
NjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIZWFwQ2VsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwQjFEMzQz
NzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSGVhcENlbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEQzQ1
NEI4QTFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyRHVtcEFzSlMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckR1
bXBBc0pTLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEIxRDAwRTgx
RjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEFpckR1bXBBc0pTLmg7IHBhdGggPSBiMy9haXIvQWlyRHVtcEFzSlMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVy
RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJF
dmVudC5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckV2ZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJREM2MDVCNUExQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJFdmVudC5oOyBw
YXRoID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEQzYwNUI1QjFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJVSUQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJVSUQuY3BwOyBwYXRoID0gcHJv
ZmlsZXIvUHJvZmlsZXJVSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMx
NCw2ICs1MzI2LDggQEAKIAkJCQkwRkVDODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAog
CQkJCTBGRUM4NEI0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICov
LAogCQkJCTBGRUM4NEI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAq
LywKKwkJCQkwRjJDNjNCMzFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8s
CisJCQkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJ
CQkwRjJDNjNBQjFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNB
QzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzQmFzaWNCbG9jay5jcHAgKi8sCkBAIC01Mzc2LDYgKzUzOTAsNyBAQAogCQkJ
CTBGRUM4NENEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJ
CTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVD
ODRDRjFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2
MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBG
RUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywK
IAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJ
CTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTM5OCw4
ICs1NDEzLDEwIEBACiAJCQkJNDNBQjI2QzUxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJh
cy5oICovLAogCQkJCTBGRUM4NEQ1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNw
cCAqLywKIAkJCQkwRkVDODRENjFCREFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5oICov
LAorCQkJCTBGMkM2M0MzMUU2OUVGOTIwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5o
ICovLAogCQkJCTBGMzM4RTAzMUJGMDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuY3Bw
ICovLAogCQkJCTBGMzM4RTA0MUJGMDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuaCAq
LywKKwkJCQkwRjJDNjNDMTFFNjY0QTVBMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLywK
IAkJCQkwRjMzOEUwNTFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3QuaCAqLywK
IAkJCQkwRjMzOEUwNjFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmNwcCAq
LywKIAkJCQkwRjMzOEUwNzFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmgg
Ki8sCkBAIC01NDkxLDYgKzU1MDgsOCBAQAogCQkJCTBGNjRFQUYyMUM0RUNEMDYwMDYyMUU5QiAv
KiBBaXJBcmdJbmxpbmVzLmggKi8sCiAJCQkJMEZFQzg1NEMxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
ckJhc2ljQmxvY2suY3BwICovLAogCQkJCTBGRUM4NTREMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJC
YXNpY0Jsb2NrLmggKi8sCisJCQkJMEYyQzYzQjkxRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2Nr
SW5zZXJ0aW9uU2V0LmNwcCAqLywKKwkJCQkwRjJDNjNCQTFFNjM0NDA4MDBDMTM4MzkgLyogQWly
QmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkIzODc4QjFCRkJDNDREMDBFM0FCMUUgLyog
QWlyQmxvY2tXb3JrbGlzdC5oICovLAogCQkJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBB
aXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTBGNjE4MzIxMUM0NUJGMDcwMDcyNDUw
QiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKQEAgLTU1MDIsOCArNTUyMSw2IEBACiAJ
CQkJMEYxMEYxQTIxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oICovLAogCQkJCTc5QUJC
MTdCMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuY3BwICovLAogCQkJCTc5QUJC
MTdDMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuaCAqLywKLQkJCQlEQzQ1NEI4
QTFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovLAotCQkJCURDNDU0QjhCMUQw
MEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oICovLAogCQkJCTBGNDU3MDM2MUJFNDRDOTEw
MDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgKi8sCiAJCQkJMEY0NTcwMzcxQkU0
NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi8sCiAJCQkJMEY2MTgzMjMx
QzQ1QkYwNzAwNzI0NTBCIC8qIEFpckVtaXRTaHVmZmxlLmNwcCAqLywKQEAgLTczNTUsNiArNzM3
Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMUZFNTFC
MTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oICovLAorCQkJCTBGMkM2M0JGMUU2NjBF
QTUwMEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCAqLywKIAkJCQk4NjAxNjFE
RjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovLAogCQkJCTBG
MzczMDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Uu
aCAqLywKIAkJCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAq
LywKQEAgLTczODMsOCArNzQwMSw4IEBACiAJCQkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8q
IE1hY3JvQXNzZW1ibGVyTUlQUy5oICovLAogCQkJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAv
KiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovLAogCQkJCUZFNjhDNjM2MUI5MERERDkwMDQy
QkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLywKLQkJCQk4NjAxNjFFMDBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQk4NjAxNjFFMTBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLywKKwkJCQk4NjAxNjFFMDBGM0E4
M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQlBN0E0QUUwNzE3OTcz
QjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwICovLAogCQkJCTg2MDE2
MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovLAogCQkJ
CTY1ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bC5oICovLApAQCAtNzk3Nyw3ICs3OTk1LDYgQEAKIAkJCQkwRkVDODU3NDFCREFDREM3MDA4MEZG
NzQgLyogQWlyQ0NhbGxTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU3NjFCREFD
REM3MDA4MEZGNzQgLyogQWlyQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMEYxQTMxQzQy
MEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREM0NTRCOEQx
RDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ1
NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNjE4MzJEMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0REUxQ0YxQzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlv
dXNTcGlsbHMuaCBpbiBIZWFkZXJzICovLApAQCAtNzk5MCw2ICs4MDA3LDcgQEAKIAkJCQkwRkVD
ODU4MDFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
Qzg1ODExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkRGNjdENzFEOURDNDQyMDAxQjk4MjUgLyogQWlyS2luZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYyQzYzQkMxRTYzNDQwQzAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyNjg0RDQzODFDMDAxNjFDMDA4MUQ2NjMgLyogQWlyTGl2ZW5l
c3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTM0QzFBMUM0QjM5QUUwMDAzQTUxMiAvKiBBaXJM
b2dSZWdpc3RlclByZXNzdXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyRjFDNDVCRjA3
MDA3MjQ1MEIgLyogQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmggaW4gSGVhZGVycyAqLywKQEAgLTgw
ODEsNiArODA5OSw3IEBACiAJCQkJNDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RG
bG9hdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVCMzFCREVEOTU3MDA4MEZGNzQg
LyogQjNDb25zdFB0clZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOERGNjFCRTkzRDU1
MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJD
NjNCODFFNjM0M0Y3MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMzM4RTBFMUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzRkNGQzFDMTYyNUJFMDAzMjNGNjcgLyogQjNEb21p
bmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCOEFEOTFDNEVEREEyMDA5NjkwNTIgLyog
QjNEdXBsaWNhdGVUYWlscy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MjcxLDYgKzgyOTAsNyBAQAog
CQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3MDREOTAzMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVy
cHJldGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwNDE3QTBCQUE4MDA2QkE1NTQgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2
M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2MjAxNzcxNDNGQ0QzRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRDNFNDAyMUI2MThBQUYwMEM4MEUxRSAvKiBERkdBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMThEM0Qw
MUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtODQwMiw2ICs4NDIyLDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4
NDQ3MjggLyogREZHT1NSRXhpdEZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4
MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9t
aWNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8q
IERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMx
NEVGOTBBRjAwQzcyNTMyIC8qIERGR1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNF
QjE5RDBCQTdEMDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAt
ODgyMCw2ICs4ODQxLDcgQEAKIAkJCQk3OUI4MTk5MzFERDI1Q0Y1MDBEREM3MTQgLyogSlNHbG9i
YWxPYmplY3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEwMDdDMTE4N0NDM0M2MDBC
Mzg4NzkgLyogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBC
M01lbW9yeVZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMkExODhGMTA1
OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTk4MzEsNiArOTg1
Myw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJ
CQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFi
c3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTg0MSw3ICs5ODY0LDYgQEAKIAkJCQkwRkVD
ODU3MzFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTc1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNjE4MzJCMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0Ux
QzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMDI4OSw2ICsxMDMxMSw3IEBACiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8q
IEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVC
OEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MTRCMkMyMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYyQzYzQjYxRTYzNDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1
QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQw
RTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMzA3LDYgKzEwMzMwLDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBB
MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU1MTY1RDIxQkRGMEI5ODAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdB
NDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9u
IDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjk0LDYgKzY5NCwyMSBAQCBwcml2YXRlOgogICAgICAg
ICBMZHJMaXRlcmFsT3BfTERSU1cgPSAyLAogICAgICAgICBMZHJMaXRlcmFsT3BfMTI4QklUID0g
MgogICAgIH07CisgICAgCisgICAgZW51bSBFeG90aWNMb2FkRmVuY2UgeworICAgICAgICBFeG90
aWNMb2FkRmVuY2VfTm9uZSwKKyAgICAgICAgRXhvdGljTG9hZEZlbmNlX0FjcXVpcmUKKyAgICB9
OworICAgIAorICAgIGVudW0gRXhvdGljTG9hZEF0b21pYyB7CisgICAgICAgIEV4b3RpY0xvYWRB
dG9taWNfTGluaywKKyAgICAgICAgRXhvdGljTG9hZEF0b21pY19Ob25lCisgICAgfTsKKworICAg
IGVudW0gRXhvdGljU3RvcmVGZW5jZSB7CisgICAgICAgIEV4b3RpY1N0b3JlRmVuY2VfTm9uZSwK
KyAgICAgICAgRXhvdGljU3RvcmVGZW5jZV9SZWxlYXNlLAorICAgIH07CiAKICAgICBzdGF0aWMg
dW5zaWduZWQgbWVtUGFpck9mZnNldFNoaWZ0KGJvb2wgViwgTWVtUGFpck9wU2l6ZSBzaXplKQog
ICAgIHsKQEAgLTE1MzEsNiArMTU0Niw0OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbnNu
KDB4ZDUwMzNhYmYpOwogICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+Cisg
ICAgdm9pZCBsZGFyKFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAg
ICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUs
IEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlLCBFeG90aWNMb2FkQXRvbWljX05vbmUsIGRzdCwgc3Jj
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgbGR4cihS
ZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzcmMpCisgICAgeworICAgICAgICBDSEVDS19EQVRB
U0laRSgpOworICAgICAgICBpbnNuKGV4b3RpY0xvYWQoTUVNT1BTSVpFLCBFeG90aWNMb2FkRmVu
Y2VfTm9uZSwgRXhvdGljTG9hZEF0b21pY19MaW5rLCBkc3QsIHNyYykpOworICAgIH0KKworICAg
IHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxkYXhyKFJlZ2lzdGVySUQgZHN0LCBS
ZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAg
IGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUsIEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlLCBFeG90
aWNMb2FkQXRvbWljX0xpbmssIGRzdCwgc3JjKSk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIHN0eHIoUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7
CisgICAgICAgIGluc24oZXhvdGljU3RvcmUoTUVNT1BTSVpFLCBFeG90aWNTdG9yZUZlbmNlX05v
bmUsIHJlc3VsdCwgc3JjLCBkc3QpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNp
emU+CisgICAgdm9pZCBzdGxyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oc3RvcmVSZWxlYXNlKE1F
TU9QU0laRSwgc3JjLCBkc3QpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+
CisgICAgdm9pZCBzdGx4cihSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5z
bihleG90aWNTdG9yZShNRU1PUFNJWkUsIEV4b3RpY1N0b3JlRmVuY2VfUmVsZWFzZSwgcmVzdWx0
LCBzcmMsIGRzdCkpOworICAgIH0KIAogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgb3JuKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lz
dGVySUQgcm0pCkBAIC0zNjAxLDcgKzM2NTgsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3Qg
aW50IG9wNCA9IDA7CiAgICAgICAgIHJldHVybiAoMHhkNjAwMDAwMCB8IG9wYyA8PCAyMSB8IG9w
MiA8PCAxNiB8IG9wMyA8PCAxMCB8IHhPclpyKHJuKSA8PCA1IHwgb3A0KTsKICAgICB9Ci0KKyAg
ICAKKyAgICBzdGF0aWMgaW50IGV4b3RpY0xvYWQoTWVtT3BTaXplIHNpemUsIEV4b3RpY0xvYWRG
ZW5jZSBmZW5jZSwgRXhvdGljTG9hZEF0b21pYyBhdG9taWMsIFJlZ2lzdGVySUQgZHN0LCBSZWdp
c3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIHJldHVybiAweDA4NWY3YzAwIHwgc2l6ZSA8PCAz
MCB8IGZlbmNlIDw8IDE1IHwgYXRvbWljIDw8IDIzIHwgc3JjIDw8IDUgfCBkc3Q7CisgICAgfQor
ICAgIAorICAgIHN0YXRpYyBpbnQgc3RvcmVSZWxlYXNlKE1lbU9wU2l6ZSBzaXplLCBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICByZXR1cm4gMHgwODlmZmMw
MCB8IHNpemUgPDwgMzAgfCBkc3QgPDwgNSB8IHNyYzsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IGludCBleG90aWNTdG9yZShNZW1PcFNpemUgc2l6ZSwgRXhvdGljU3RvcmVGZW5jZSBmZW5jZSwg
UmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIHJldHVybiAweDA4MDA3YzAwIHwgc2l6ZSA8PCAzMCB8IHJlc3VsdCA8PCAxNiB8
IGZlbmNlIDw8IDE1IHwgZHN0IDw8IDUgfCBzcmM7CisgICAgfQorICAgIAogICAgIC8vIFdvcmth
cm91bmQgZm9yIENvcnRleC1BNTMgZXJyYXR1bSAoODM1NzY5KS4gRW1pdCBhbiBleHRyYSBub3Ag
aWYgdGhlCiAgICAgLy8gbGFzdCBpbnN0cnVjdGlvbiBpbiB0aGUgYnVmZmVyIGlzIGEgbG9hZCwg
c3RvcmUgb3IgcHJlZmV0Y2guIE5lZWRlZAogICAgIC8vIGJlZm9yZSA2NC1iaXQgbXVsdGlwbHkt
YWNjdW11bGF0ZSBpbnN0cnVjdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIiAvLyBIYXZlIHRvIGJyZWFrIHdpdGggc3R5bGUg
YmVjYXVzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggaXMgYSBzaGFkeSBoZWFkZXIuCisKKyNp
ZiBFTkFCTEUoQVNTRU1CTEVSKQorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN0YXR1c0Nv
bmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICBjYXNl
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdWNjZXNzOgorICAgICAgICBvdXQucHJpbnQo
IlN1Y2Nlc3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlckJhc2U6OkZhaWx1cmU6CisgICAgICAgIG91dC5wcmludCgiRmFpbHVyZSIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTQtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvU2hhcmVkVGFzay5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1JhbmRvbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDggKzUxLDI4IEBAIG5h
bWVzcGFjZSBERkcgewogc3RydWN0IE9TUkV4aXQ7CiB9CiAKK2NsYXNzIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXR1c0NvbmRpdGlvbiB7CisgICAg
ICAgIFN1Y2Nlc3MsCisgICAgICAgIEZhaWx1cmUKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBT
dGF0dXNDb25kaXRpb24gaW52ZXJ0KFN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisgICAgewor
ICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbikgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAg
ICAgICAgICByZXR1cm4gRmFpbHVyZTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAg
ICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7CisgICAgfQorfTsKKwogdGVtcGxh
dGUgPGNsYXNzIEFzc2VtYmxlclR5cGUsIGNsYXNzIE1hY3JvQXNzZW1ibGVyVHlwZT4KLWNsYXNz
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgeworY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1ibGVyVHlw
ZT4gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlclR5cGU7CiAgICAgdHlwZWRlZiBBc3NlbWJsZXJUeXBl
IEFzc2VtYmxlclR5cGVfVDsKQEAgLTExMDgsMyArMTEyOSwxNiBAQCBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCituYW1lc3BhY2Ug
V1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdGF0dXNDb25kaXRp
b24pOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiw2ICsx
MzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMyOyAvLyBU
aGlzIGlzIHN1cGVyIHVzZWZ1bCBmb3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8vIFV0aWxp
dGllcyB1c2VkIGJ5IHRoZSBERkcgSklULgorICAgIHVzaW5nIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXJCYXNlOjppbnZlcnQ7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQ7CiAg
ICAgCiAgICAgc3RhdGljIERvdWJsZUNvbmRpdGlvbiBpbnZlcnQoRG91YmxlQ29uZGl0aW9uIGNv
bmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzNzUsNyArMzM3NSwyMjkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
ZG1iSVNIKCk7CiAgICAgfQotCisgICAgCisgICAgdm9pZCBsb2FkQWNxOFNpZ25lZEV4dGVuZFRv
MzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxkYXI8OD4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVz
cykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4KEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkQWNxOFNpZ25lZEV4dGVu
ZFRvMzIoYWRkcmVzcywgZGVzdCk7CisgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMigweGZmKSwg
ZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHI8
OD4oc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRhcjwxNj4oZGVz
dCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGxvYWRBY3ExNihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihhZGRyZXNzLCBkZXN0KTsKKyAg
ICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKDB4ZmZmZiksIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RscjwxNj4oc3JjLCBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTMyKEltcGxp
Y2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sZGFyPDMyPihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGFyPDY0PihkZXN0
LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
c3RvcmVSZWwzMihSZWdpc3RlcklEIGRlc3QsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RscjwzMj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJl
c3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJ
RCBkZXN0LCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN0bHI8NjQ+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBsb2FkTGluazgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8OD4oZGVzdCwgZXh0
cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRM
aW5rQWNxOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8OD4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3Mo
YWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZDgoUmVnaXN0ZXJJRCBz
cmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnN0eHI8OD4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRy
ZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmRSZWw4KFJlZ2lz
dGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjw4PihyZXN1bHQsIHNyYywgZXh0cmFjdFNp
bXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rMTYo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxkeHI8MTY+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGlua0FjcTE2KEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGF4
cjwxNj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHN0b3JlQ29uZDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdHhy
PDE2PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdGx4cjwxNj4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGluazMyKEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhyPDMy
PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZExpbmtBY3EzMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRheHI8MzI+KGRlc3QsIGV4dHJhY3RT
aW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmQz
MihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVz
dWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4cjwzMj4ocmVzdWx0LCBzcmMsIGV4
dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZUNvbmRSZWwzMihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RseHI8MzI+KHJlc3Vs
dCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZExpbms2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGR4cjw2ND4oZGVzdCwgZXh0cmFjdFNpbXBs
ZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rQWNxNjQo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxkYXhyPDY0PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNz
KSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kNjQoUmVnaXN0ZXJJRCBzcmMsIElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN0eHI8NjQ+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhh
ZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kUmVsNjQoUmVnaXN0ZXJJ
RCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPDY0PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBs
ZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTPDE2Pihjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM8MzI+KGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9u
Z0NBUzw2ND4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1
bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM4KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzw4Pihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
bmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
UmVsYXhlZFN0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzwxNj4o
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0
b21pY1JlbGF4ZWRTdHJvbmdDQVM8MzI+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1
ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVk
U3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNSZWxheGVkU3Ryb25nQ0FTPDY0Pihjb25kLCBl
eHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAg
IAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljV2Vha0NB
Uzw4Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNXZWFrQ0FTPDE2Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTMzIoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2hBdG9taWNXZWFrQ0FTPDMyPihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFr
Q0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNXZWFrQ0FTPDY0Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hB
dG9taWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzw4Pihjb25k
LCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
UmVsYXhlZFdlYWtDQVM8MTY+KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRX
ZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExp
c3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFr
Q0FTPDY0Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGRlcGVuZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5lb3I8MzI+KGRlc3QsIHNyYywgc3Jj
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkZXBlbmQ2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZW9yPDY0PihkZXN0LCBzcmMs
IHNyYyk7CisgICAgfQorICAgIAogICAgIC8vIE1pc2MgaGVscGVyIGZ1bmN0aW9ucy4KIAogICAg
IC8vIEludmVydCBhIHJlbGF0aW9uYWwgY29uZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwg
YmVjb21lcyA+PSwgZXRjLgpAQCAtMzg3Nyw2ICs0MDk5LDE1OCBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50
IGRhdGFzaXplPgorICAgIHZvaWQgbG9hZExpbmsoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8ZGF0YXNpemU+KGRlc3QsIHNy
Yyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxv
YWRMaW5rQWNxKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sZGF4cjxkYXRhc2l6ZT4oZGVzdCwgc3JjKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgc3RvcmVDb25kKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3R4cjxkYXRhc2l6ZT4oc3JjLCBkZXN0LCByZXN1bHQpOworICAgIH0KKyAg
ICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdG9yZUNvbmRSZWwoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjxkYXRhc2l6ZT4oc3JjLCBkZXN0LCByZXN1bHQpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzaWduRXh0
ZW5kKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3Zl
KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAg
ICBKdW1wIGJyYW5jaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwg
UmVnaXN0ZXJJRCByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBs
ZWZ0LCByaWdodCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4
cGVjdGVkQW5kUmVzdWx0LCBleHBlY3RlZEFuZFJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBS
ZWdpc3RlcklEIHNpbXBsZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCk7CisgICAgICAgIAorICAgICAgICBMYWJlbCByZWxvb3AgPSBsYWJlbCgpOwor
ICAgICAgICBsb2FkTGlua0FjcTxkYXRhc2l6ZT4oc2ltcGxlQWRkcmVzcywgdG1wKTsKKyAgICAg
ICAgSnVtcCBmYWlsdXJlID0gYnJhbmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIHRtcCk7CisgICAgICAgIAorICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNpemU+KG5l
d1ZhbHVlLCBzaW1wbGVBZGRyZXNzLCByZXN1bHQpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9u
WmVybywgcmVzdWx0KS5saW5rVG8ocmVsb29wLCB0aGlzKTsKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIoY29uZCA9PSBTdWNjZXNzKSwgcmVzdWx0KTsKKyAgICAgICAgSnVtcCBkb25lID0ganVt
cCgpOworICAgICAgICAKKyAgICAgICAgZmFpbHVyZS5saW5rKHRoaXMpOworICAgICAgICBtb3Zl
KHRtcCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNpemU+
KHRtcCwgc2ltcGxlQWRkcmVzcywgcmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKE5vblpl
cm8sIHJlc3VsdCkubGlua1RvKHJlbG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGNvbmQgPT0gRmFpbHVyZSksIHJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBkb25lLmxp
bmsodGhpcyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2
b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBzaWduRXh0ZW5kPGRhdGFzaXpl
PihleHBlY3RlZEFuZFJlc3VsdCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICAKKyAgICAg
ICAgUmVnaXN0ZXJJRCBzaW1wbGVBZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVz
cyk7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpOworICAgICAgICAKKyAgICAgICAgTGFiZWwgcmVsb29wID0gbGFiZWwo
KTsKKyAgICAgICAgbG9hZExpbms8ZGF0YXNpemU+KHNpbXBsZUFkZHJlc3MsIHRtcCk7CisgICAg
ICAgIEp1bXAgZmFpbHVyZSA9IGJyYW5jaDxkYXRhc2l6ZT4oTm90RXF1YWwsIGV4cGVjdGVkQW5k
UmVzdWx0LCB0bXApOworICAgICAgICAKKyAgICAgICAgc3RvcmVDb25kPGRhdGFzaXplPihuZXdW
YWx1ZSwgc2ltcGxlQWRkcmVzcywgcmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKE5vblpl
cm8sIHJlc3VsdCkubGlua1RvKHJlbG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGNvbmQgPT0gU3VjY2VzcyksIHJlc3VsdCk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKKyAgICAgICAgCisgICAgICAgIGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgbW92ZSh0
bXAsIGV4cGVjdGVkQW5kUmVzdWx0KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoY29uZCA9
PSBGYWlsdXJlKSwgcmVzdWx0KTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluayh0aGlzKTsK
KyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEp1bXBMaXN0IGJy
YW5jaEF0b21pY1dlYWtDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBl
eHBlY3RlZEFuZENsb2JiZXJlZCk7CisgICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIHNpbXBs
ZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Cisg
ICAgICAgIAorICAgICAgICBKdW1wTGlzdCBzdWNjZXNzOworICAgICAgICBKdW1wTGlzdCBmYWls
dXJlOworCisgICAgICAgIGxvYWRMaW5rQWNxPGRhdGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXAp
OworICAgICAgICBmYWlsdXJlLmFwcGVuZChicmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgdG1wKSk7CisgICAgICAgIHN0b3JlQ29uZFJlbDxkYXRhc2l6ZT4o
bmV3VmFsdWUsIHNpbXBsZUFkZHJlc3MsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKTsKKyAgICAgICAg
CisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAg
ICAgICBzdWNjZXNzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQpKTsKKyAgICAgICAgICAgIGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBzdWNjZXNzOworICAgICAgICBjYXNlIEZhaWx1cmU6CisgICAgICAgICAgICBmYWlsdXJlLmFw
cGVuZChicmFuY2hUZXN0MzIoTm9uWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWlsdXJlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQg
ZGF0YXNpemU+CisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHNpZ25FeHRlbmQ8
ZGF0YXNpemU+KGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBleHBlY3RlZEFuZENsb2JiZXJlZCk7Cisg
ICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIHNpbXBsZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRh
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIAorICAgICAgICBKdW1wTGlz
dCBzdWNjZXNzOworICAgICAgICBKdW1wTGlzdCBmYWlsdXJlOworCisgICAgICAgIGxvYWRMaW5r
PGRhdGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXApOworICAgICAgICBmYWlsdXJlLmFwcGVuZChi
cmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgdG1wKSk7Cisg
ICAgICAgIHN0b3JlQ29uZDxkYXRhc2l6ZT4obmV3VmFsdWUsIHNpbXBsZUFkZHJlc3MsIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkKTsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAg
ICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAgICAgICBzdWNjZXNzLmFwcGVuZChicmFuY2hUZXN0
MzIoWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAgICAgICAgIGZhaWx1cmUubGlu
ayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBzdWNjZXNzOworICAgICAgICBjYXNlIEZhaWx1
cmU6CisgICAgICAgICAgICBmYWlsdXJlLmFwcGVuZChicmFuY2hUZXN0MzIoTm9uWmVybywgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWlsdXJlOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICAKKyAgICBSZWdpc3RlcklEIGV4dHJhY3RTaW1wbGVBZGRyZXNzKEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCkKKyAgICAg
ICAgICAgIHJldHVybiBhZGRyZXNzLmJhc2U7CisgICAgICAgIAorICAgICAgICBzaWduRXh0ZW5k
MzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIGFkZDY0KGFkZHJlc3MuYmFzZSwg
bWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIG1lbW9yeVRlbXBSZWdpc3RlcjsK
KyAgICB9CiAKICAgICBKdW1wIGp1bXBBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKERvdWJsZUNv
bmRpdGlvbiBjb25kKQogICAgIHsKQEAgLTM5ODksNiArNDM2MywyNCBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk02NDo6CiAgICAgbV9hc3NlbWJsZXIuc3R1cmgocnQsIHJu
LCBzaW1tKTsKIH0KIAordGVtcGxhdGU8PgoraW5saW5lIHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk02
NDo6c2lnbkV4dGVuZDw4PihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQoreworICAg
IHNpZ25FeHRlbmQ4VG8zMihzcmMsIGRlc3QpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9p
ZCBNYWNyb0Fzc2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDE2PihSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQoreworICAgIHNpZ25FeHRlbmQxNlRvMzIoc3JjLCBkZXN0KTsKK30KKwor
dGVtcGxhdGU8PgoraW5saW5lIE1hY3JvQXNzZW1ibGVyQVJNNjQ6Okp1bXAgTWFjcm9Bc3NlbWJs
ZXJBUk02NDo6YnJhbmNoPDY0PihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKK3sKKyAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVm
dCwgcmlnaHQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShB
U1NFTUJMRVIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFkZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CkBAIC0yNTEsMTYgKzI1Niw3MSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
ICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmQxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBB
ZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX3JtKHNyYywgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQg
c3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfcm0o
c3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAg
ICB9CisKICAgICB2b2lkIGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJh
c2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMy
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZGxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8aW50
MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19pbShzdGF0aWNfY2FzdDxpbnQxNl90Pihp
bW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kOChUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0
YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgaWYgKG9wMSA9PSBvcDIpCkBAIC00NTYsNiArNTE2LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOwogICAgIH0K
IAorICAgIHZvaWQgbmVnMzIoQmFzZUluZGV4IHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5uZWdsX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRl
eCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihBZGRyZXNzIHNyY0Rl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQsIHNy
Y0Rlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWcxNihCYXNlSW5kZXggc3JjRGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3dfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVz
dC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IG5lZzgoQWRkcmVzcyBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnYl9t
KHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnOChC
YXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2JfbShzcmNE
ZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsK
KyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNDcxLDE2
ICs1NTYsNzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcm0oc3JjLCBkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5vcndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
KyAgICB9CisKKyAgICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoUmVn
aXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9y
Yl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I4
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQsIHNyYy5i
YXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9p
ZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm9ybF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKGltbS5tX3ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGlu
dDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAg
fQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGlt
bS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX2ltKHN0YXRp
Y19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsKKyAgICB9CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9pbShzdGF0aWNfY2FzdDxpbnQ4
X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQg
b3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYg
KG9wMSA9PSBvcDIpCkBAIC02NTQsMTYgKzc5NCw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19pbShzdGF0aWNfY2FzdDxpbnQx
Nl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0K
KworICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1f
dmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9p
ZCBzdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUp
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKEFkZHJl
c3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJs
X21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMy
KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBk
ZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWIxNihSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNy
YywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vi
bF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUp
OworICAgIH0KKworICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3Vi
OChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9ycihzcmMsIGRlc3Qp
OwpAQCAtNjc3LDYgKzg3Miw1MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54
b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAg
ICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAg
ICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90
bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisK
KyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpOwor
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5u
b3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Up
OworICAgIH0KKworICAgIHZvaWQgeG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGlt
bS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRl
c3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3J3X2lt
KGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGlt
bS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVz
dC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5k
ZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0x
KQpAQCAtNjkwLDExICs5MjksNDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3Js
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCB4b3Iz
MihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwor
ICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihB
ZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZv
aWQgeG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMu
c2NhbGUsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3Ax
LCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9w
MSA9PSBvcDIpCkBAIC03NDEsNiArMTAxMCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG5v
dDMyKEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwor
ICAgIHZvaWQgbm90MTYoQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90MTYo
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBub3Q4KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdGJf
bShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDgoQmFzZUlu
ZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBz
cXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5zcXJ0c2RfcnIoc3JjLCBkc3QpOwpAQCAtMTA3MSw0MiArMTM2NSwy
MyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBhZGRyZXNzKQogICAgIHsKLSNpZiBDUFUoWDg2KQotICAgICAgICAvLyBPbiAzMi1iaXQgeDg2
IHdlIGNhbiBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOwotICAgICAgICAv
LyBlc3AuLmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQotICAgICAgICBpZiAo
c3JjID49IDQpIHsKLSAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCi0g
ICAgICAgICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRSZWdpc3RlcihhZGRyZXNzKTsK
LQotICAgICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5IHJlZ2lzdGVyIHRvIHBlcmZv
cm0gdGhlIHN0b3JlLgotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAg
bV9hc3NlbWJsZXIubW92d19ybSh0ZW1wLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1w
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdndfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0
ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAg
Ly8gT24gMzItYml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lz
dGVyczsKLSAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVy
cyEKLSAgICAgICAgaWYgKHNyYyA+PSA0KSB7Ci0gICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9y
YXJ5IHJlZ2lzdGVyLgotICAgICAgICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVn
aXN0ZXIoYWRkcmVzcyk7Ci0KLSAgICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSBy
ZWdpc3RlciB0byBwZXJmb3JtIHRoZSBzdG9yZS4KLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1w
KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7Ci0gICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3Jt
KHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBz
dG9yZTE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSks
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKworICAgIHZvaWQgc3RvcmUxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X2ltKHN0YXRpY19jYXN0
PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7Cisg
ICAgfQogCiAgICAgLy8gRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uOgogICAgIC8vCkBAIC0yNzQ1
LDc0ICszMDIwLDkwMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKDAsIDAsIFg4NlJlZ2lzdGVyczo6ZXNwKTsKICAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25n
Q0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNt
cHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7Cisg
ICAgfQogCi0gICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rp
b24gb2Ygbm9ybWFsIHN0b3Jlcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBz
dG9yZUZlbmNlKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwogICAgIH0KIAotICAgIC8vIFdlIHRh
a2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBsb2Fkcy4g
U28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBsb2FkRmVuY2UoKQorICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFy
dCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgdm9pZCBhdG9taWNTdHJvbmdD
QVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQogICAgIHsKLSAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rp
b25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVz
cygpKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBy
ZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAg
ICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFg4NkFzc2Vt
Ymxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMo
Y29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9
CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHBhdGNoYWJsZUp1bXBTaXplKCkKKyAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpwYXRjaGFi
bGVKdW1wU2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
OyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3Vu
ZGluZygpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAg
ICAgIGlmIChzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2Vk
KQotICAgICAgICAgICAgdXBkYXRlRWF4MUVjeEZsYWdzKCk7Ci0gICAgICAgIHJldHVybiBzX3Nz
ZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0o
bmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJl
Z2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRl
eCBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgLy8gQVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3Vz
IHJlZ3Jlc3Npb25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4gYmUgbWFzc2l2ZS4KLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1
bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAgICAg
fQogCi0gICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdzKCkKKyAgICB2b2lkIGF0b21p
Y1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIGludCBmbGFncyA9IDA7Ci0j
aWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgaW50IGNwdUluZm9bNF07Ci0gICAgICAgIF9fY3B1
aWQoY3B1SW5mbywgMHgxKTsKLSAgICAgICAgZmxhZ3MgPSBjcHVJbmZvWzJdOwotI2VsaWYgQ09N
UElMRVIoR0NDX09SX0NMQU5HKQotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGFzbSAoCi0gICAg
ICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAgICAgICAiY3B1aWQ7IgotICAgICAg
ICAgICAgIm1vdmwgJSVlY3gsICUwOyIKLSAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCi0gICAg
ICAgICAgICA6Ci0gICAgICAgICAgICA6ICIlZWF4IiwgIiVlYngiLCAiJWVjeCIsICIlZWR4Igot
ICAgICAgICAgICAgKTsKLSNlbHNlCi0gICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAk
MHgxLCAlJWVheDsiCi0gICAgICAgICAgICAicHVzaGwgJSVlYng7IgotICAgICAgICAgICAgImNw
dWlkOyIKLSAgICAgICAgICAgICJwb3BsICUlZWJ4OyIKLSAgICAgICAgICAgICJtb3ZsICUlZWN4
LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQotICAgICAgICAgICAgOgotICAgICAg
ICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCi0gICAgICAgICAgICApOwotI2VuZGlmCisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9
KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fz
c2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25n
Q0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZv
aWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNT
dHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdD
QVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBt
X2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJh
bmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRB
bmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9t
aWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIC8vIElmIHlvdSB1c2Ugd2VhayBDQVMsIHlvdSBj
YW5ub3QgcmVseSBvbiBleHBlY3RlZEFuZENsb2JiZXJlZCB0byBoYXZlIGFueSBwYXJ0aWN1bGFy
IHZhbHVlIGFmdGVyCisgICAgLy8gdGhpcyBjb21wbGV0ZXMuIE9uIHg4NiwgaXQgd2lsbCBjb250
YWluIHRoZSByZXN1bHQgb2YgdGhlIHN0cm9uZyBDQVMuIE9uIEFSTSwgaXQgd2lsbCBzdGlsbCBo
YXZlCisgICAgLy8gdGhlIGV4cGVjdGVkIHZhbHVlLgorICAgIHZvaWQgYXRvbWljV2Vha0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dl
YWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBy
ZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
MTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQp
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBB
ZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWlj
U3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNz
LCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAg
ICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFr
Q0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtD
QVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFr
Q0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vh
a0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
V2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVn
aXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUlu
ZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJl
c3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1Zh
bHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdl
YWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZv
aWQgYXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMy
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRX
ZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1Jl
bGF4ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMx
Nihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hBdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhZGQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQWRkOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJ
RCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhZGQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQWRkMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQz
MihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHN1YjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4
KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHN1YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNTdWI4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChyZWcsIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFRydXN0ZWRJbW0zMiBpbW0s
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNT
dWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFJlZ2lzdGVy
SUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNTdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Vi
MzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWIzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIg
aW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGFuZDgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNBbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFuZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNBbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFuZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNBbmQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y0FuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMy
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoUmVnaXN0
ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFJlZ2lz
dGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2
KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihUcnVzdGVk
SW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBv
cjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBvcjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjgoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHhvcjgoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNY
b3I4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYb3I4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChyZWcsIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNYb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Ix
NihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNYb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIHhvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WG9yMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzgo
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnOChh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2KGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzE2KEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWcxNihh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMyKGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzMyKEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWczMihh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90OChhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q4KEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MTYoQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDE2KGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90MzIoQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDMyKGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnhhZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCBy
ZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54
YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hjaGdBZGQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnhhZGR3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0Fk
ZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRsX3JtKHJlZywgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNo
Z0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBtX2Fzc2VtYmxlci54Y2hnYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3dfcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYY2hnMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShy
ZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJl
ZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTgoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQ4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTgoQmFz
ZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDgoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoQWRk
cmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4U2lnbmVkRXh0
ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4U2lnbmVk
RXh0ZW5kVG8zMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBsb2FkQWNxMTYoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IGxvYWQxNihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNihCYXNl
SW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTYoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKEFk
ZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTZTaWduZWRF
eHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2ln
bmVkRXh0ZW5kVG8zMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMzIo
QmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDMyKHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTgoc3JjLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgc3RvcmVSZWw4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIHN0b3JlOChpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChU
cnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChp
bW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMTYoc3JjLCBkZXN0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBzdG9yZVJlbDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7
CisgICAgICAgIHN0b3JlMTYoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZVJlbDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAg
c3RvcmUxNihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoUmVn
aXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjLCBk
ZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjLCBkZXN0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBzdG9yZVJlbDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgc3RvcmUzMihpbW0sIGRlc3QpOworICAgIH0KKyAgICAKKyAgICAvLyBXZSB0YWtl
IHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwgc3RvcmVzLiBT
bywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KKyAgICB2b2lkIHN0b3JlRmVuY2UoKQorICAgIHsKKyAg
ICB9CisKKyAgICAvLyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlv
biBvZiBub3JtYWwgbG9hZHMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgorICAgIHZvaWQgbG9h
ZEZlbmNlKCkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1w
KENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRl
c3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAo
aW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1w
UmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IHBh
dGNoYWJsZUp1bXBTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OnBh
dGNoYWJsZUp1bXBTaXplKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9h
dGluZ1BvaW50Um91bmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKHNfc3NlNF8xQ2hlY2tTdGF0
ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpCisgICAgICAgICAgICB1cGRhdGVFYXgx
RWN4RmxhZ3MoKTsKKyAgICAgICAgcmV0dXJuIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJRENo
ZWNrU3RhdGU6OlNldDsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisg
ICAgeworICAgICAgICAvLyBBVlggc3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVzc2lvbnMg
YW5kIHRob3NlIHJlZ3Jlc3Npb25zIGNhbiBiZSBtYXNzaXZlLgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdzKCkKKyAgICB7
CisgICAgICAgIGludCBmbGFncyA9IDA7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICAgICAgaW50
IGNwdUluZm9bNF07CisgICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHgxKTsKKyAgICAgICAgZmxh
Z3MgPSBjcHVJbmZvWzJdOworI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorI2lmIENQVShY
ODZfNjQpCisgICAgICAgIGFzbSAoCisgICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCisg
ICAgICAgICAgICAiY3B1aWQ7IgorICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAg
ICAgICAgIDogIj1nIiAoZmxhZ3MpCisgICAgICAgICAgICA6CisgICAgICAgICAgICA6ICIlZWF4
IiwgIiVlYngiLCAiJWVjeCIsICIlZWR4IgorICAgICAgICAgICAgKTsKKyNlbHNlCisgICAgICAg
IGFzbSAoCisgICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCisgICAgICAgICAgICAicHVz
aGwgJSVlYng7IgorICAgICAgICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICJwb3BsICUlZWJ4
OyIKKyAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCisgICAgICAgICAgICA6ICI9ZyIgKGZs
YWdzKQorICAgICAgICAgICAgOgorICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgi
CisgICAgICAgICAgICApOworI2VuZGlmCiAjZW5kaWYgLy8gQ09NUElMRVIoR0NDX09SX0NMQU5H
KQogICAgICAgICBzX3NzZTRfMUNoZWNrU3RhdGUgPSAoZmxhZ3MgJiAoMSA8PCAxOSkpID8gQ1BV
SURDaGVja1N0YXRlOjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOwogICAgICAgICBzX2F2
eENoZWNrU3RhdGUgPSAoZmxhZ3MgJiAoMSA8PCAyOCkpID8gQ1BVSURDaGVja1N0YXRlOjpTZXQg
OiBDUFVJRENoZWNrU3RhdGU6OkNsZWFyOwpAQCAtMjgzMyw2ICszOTM1LDE4IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uPihj
b25kKTsKICAgICB9CiAKKyAgICBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24o
U3RhdHVzQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAg
ICAgICAgY2FzZSBTdWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6Q29u
ZGl0aW9uRTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAgICAgcmV0dXJuIFg4NkFz
c2VtYmxlcjo6Q29uZGl0aW9uTkU7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uRTsK
KyAgICB9CisKICAgICB2b2lkIHNldDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAjaWYgQ1BVKFg4NikKQEAgLTI5MjcsNiArNDA0MSwzNSBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHNpemVPZlJlZ2lzdGVyKSwg
ZHN0KTsKICAgICAgICAgc3JjSXNOb25aZXJvLmxpbmsodGhpcyk7CiAgICAgfQorICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMoU3RhdHVz
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
cmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFu
ZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVn
aXN0ZXJzOjplYXgpOworICAgICAgICBzZXQzMih4ODZDb25kaXRpb24oY29uZCksIHJlc3VsdCk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGF0b21pY1N0
cm9uZ0NBUyhSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQor
ICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgp
OworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAg
c3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIGNvbnN0
IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZS
ZWdpc3RlcnM6OmVheCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVu
YygpOworICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7
CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkp
KTsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgLy8gT25seSBNYWNyb0Fzc2VtYmxlclg4NiBzaG91
bGQgYmUgdXNpbmcgdGhlIGZvbGxvd2luZyBtZXRob2Q7IFNTRTIgaXMgYWx3YXlzIGF2YWlsYWJs
ZSBvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiwgMjAxNC0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjY0LDExICsyNjQsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5hZGRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGFkZDY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFkZDY0KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGRx
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChBYnNvbHV0ZUFkZHJlc3Mgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgc2Ny
YXRjaFJlZ2lzdGVyKCkpOwpAQCAtMzA2LDYgKzMxNiwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5hZGRxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IDEpCisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5pbmNxX20oYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZHFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQg
YWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3Rl
cigpKTsKQEAgLTM0MiwxMSArMzYwLDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
YW5kcV9ycihzcmMsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfcm0oc3Jj
LCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFu
ZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNl
LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwg
c3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lk
IGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZHFfaXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwogICAgIH0KIAor
ICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0K
KwogICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkK
ICAgICB7CiAgICAgICAgIGludHB0cl90IGludFZhbHVlID0gaW1tLmFzSW50cHRyKCk7CkBAIC01
NTIsMTEgKzYwMCw1MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfcihkZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIG5lZzY0KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5lZ3FfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5lZzY0KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bmVncV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKwogICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisg
ICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5vcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwg
ZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KEFkZHJlc3Mg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgb3I2NChCYXNl
SW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5v
cnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsK
KyAgICB9CisKKyAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfaW0oaW1tLm1f
dmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKwogICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdpc3RlcklEIHNyY0Rl
c3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkKQEAgLTYxOSwxNiArNzA3LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIuc3VicV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgc3ViNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoQmFzZUluZGV4IHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAg
IHZvaWQgc3ViNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLnN1YnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9
CiAKKyAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
LCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54
b3JxX3JyKHNyYywgZGVzdCk7CkBAIC02NTEsNiArNzU0LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIueG9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0K
IAorICAgIHZvaWQgeG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoQWRkcmVz
cyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFf
bXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQo
QmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueG9ycV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRl
c3QpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pbShpbW0ubV92YWx1ZSwgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFf
aW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBzcmNEZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pcihpbW0ubV92
YWx1ZSwgc3JjRGVzdCk7CkBAIC02NjYsNiArNzk0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIubm90cV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZv
aWQgbm90NjQoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3Rx
X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgZGVzdCk7CkBAIC03MjUsNiArODU4LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NlbWJsZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2kzMm0o
aW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tNjQg
aW1tLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lH
Tl9FWFRFTkRfMzJfNjQoaW1tLm1fdmFsdWUpKSB7CkBAIC0xMjk0LDcgKzE0MzIsMjc1IEBAIHB1
YmxpYzoKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwogICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJl
Z2lzdGVyKCkpLCBtYXNrOCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
NjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CiAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQp
CisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQs
IHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsK
KyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9
KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fz
c2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hB
dG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwor
ICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRy
ZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCBy
ZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAg
ICBhdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FT
NjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJl
dHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
bmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdl
YWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRy
ZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0
KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hB
dG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFk
ZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhdG9taWNBZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBhZGQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNTdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIHN1YjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljU3ViNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1
YjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY0FuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIGFuZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
QW5kNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0
KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHhvcjY0KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9y
NjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY05lZzY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljTmVnNjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY05vdDY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljTm90NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2Vt
Ymxlci54YWRkcV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZzY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
WGNoZzY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGxvYWRBY3E2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZVJlbDY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9y
ZTY0KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNyYywgZGVz
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBB
ZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAg
dm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDE2ICsxOTAsMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgT1BfQUREX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MDEsCiAg
ICAgICAgIE9QX0FERF9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDAzLAogICAgICAgICBP
UF9BRERfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgwNSwKKyAgICAgICAgT1BfT1JfRXZH
YiAgICAgICAgICAgICAgICAgICAgICA9IDB4MDgsCiAgICAgICAgIE9QX09SX0V2R3YgICAgICAg
ICAgICAgICAgICAgICAgPSAweDA5LAogICAgICAgICBPUF9PUl9HdkV2ICAgICAgICAgICAgICAg
ICAgICAgID0gMHgwQiwKICAgICAgICAgT1BfT1JfRUFYSXYgICAgICAgICAgICAgICAgICAgICA9
IDB4MEQsCiAgICAgICAgIE9QXzJCWVRFX0VTQ0FQRSAgICAgICAgICAgICAgICAgPSAweDBGLAor
ICAgICAgICBPUF9BTkRfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgyMCwKICAgICAgICAg
T1BfQU5EX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MjEsCiAgICAgICAgIE9QX0FORF9H
dkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDIzLAorICAgICAgICBPUF9TVUJfRXZHYiAgICAg
ICAgICAgICAgICAgICAgID0gMHgyOCwKICAgICAgICAgT1BfU1VCX0V2R3YgICAgICAgICAgICAg
ICAgICAgICA9IDB4MjksCiAgICAgICAgIE9QX1NVQl9HdkV2ICAgICAgICAgICAgICAgICAgICAg
PSAweDJCLAogICAgICAgICBPUF9TVUJfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgyRCwK
ICAgICAgICAgUFJFX1BSRURJQ1RfQlJBTkNIX05PVF9UQUtFTiAgICA9IDB4MkUsCisgICAgICAg
IE9QX1hPUl9FdkdiICAgICAgICAgICAgICAgICAgICAgPSAweDMwLAogICAgICAgICBPUF9YT1Jf
RXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHgzMSwKICAgICAgICAgT1BfWE9SX0d2RXYgICAg
ICAgICAgICAgICAgICAgICA9IDB4MzMsCiAgICAgICAgIE9QX1hPUl9FQVhJdiAgICAgICAgICAg
ICAgICAgICAgPSAweDM1LApAQCAtMjIzLDYgKzIyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9Q
X0dST1VQMV9FdkliICAgICAgICAgICAgICAgICAgPSAweDgzLAogICAgICAgICBPUF9URVNUX0Vi
R2IgICAgICAgICAgICAgICAgICAgID0gMHg4NCwKICAgICAgICAgT1BfVEVTVF9Fdkd2ICAgICAg
ICAgICAgICAgICAgICA9IDB4ODUsCisgICAgICAgIE9QX1hDSEdfRXZHYiAgICAgICAgICAgICAg
ICAgICAgPSAweDg2LAogICAgICAgICBPUF9YQ0hHX0V2R3YgICAgICAgICAgICAgICAgICAgID0g
MHg4NywKICAgICAgICAgT1BfTU9WX0ViR2IgICAgICAgICAgICAgICAgICAgICA9IDB4ODgsCiAg
ICAgICAgIE9QX01PVl9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDg5LApAQCAtMjUyLDYg
KzI1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIFBSRV9TU0VfRjIgICAgICAgICAgICAgICAgICAg
ICAgPSAweEYyLAogICAgICAgICBQUkVfU1NFX0YzICAgICAgICAgICAgICAgICAgICAgID0gMHhG
MywKICAgICAgICAgT1BfSExUICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4RjQsCisgICAg
ICAgIE9QX0dST1VQM19FYiAgICAgICAgICAgICAgICAgICAgPSAweEY2LAogICAgICAgICBPUF9H
Uk9VUDNfRWJJYiAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAgT1BfR1JPVVAzX0V2
ICAgICAgICAgICAgICAgICAgICA9IDB4RjcsCiAgICAgICAgIE9QX0dST1VQM19Fdkl6ICAgICAg
ICAgICAgICAgICAgPSAweEY3LCAvLyBPUF9HUk9VUDNfRXYgaGFzIGFuIGltbWVkaWF0ZSwgd2hl
biBpbnN0cnVjdGlvbiBpcyBhIHRlc3QuIApAQCAtMjkwLDYgKzI5Niw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIE9QX1NFVENDICAgICAgICAgICAgPSAweDkwLAogICAgICAgICBPUDJfM0JZVEVfRVND
QVBFX0FFID0gMHhBRSwKICAgICAgICAgT1AyX0lNVUxfR3ZFdiAgICAgICA9IDB4QUYsCisgICAg
ICAgIE9QMl9DTVBYQ0hHYiAgICAgICAgPSAweEIwLAorICAgICAgICBPUDJfQ01QWENIRyAgICAg
ICAgID0gMHhCMSwKICAgICAgICAgT1AyX01PVlpYX0d2RWIgICAgICA9IDB4QjYsCiAgICAgICAg
IE9QMl9CU0YgICAgICAgICAgICAgPSAweEJDLAogICAgICAgICBPUDJfVFpDTlQgICAgICAgICAg
ID0gMHhCQywKQEAgLTI5OCw2ICszMDYsOCBAQCBwcml2YXRlOgogICAgICAgICBPUDJfTU9WU1hf
R3ZFYiAgICAgID0gMHhCRSwKICAgICAgICAgT1AyX01PVlpYX0d2RXcgICAgICA9IDB4QjcsCiAg
ICAgICAgIE9QMl9NT1ZTWF9HdkV3ICAgICAgPSAweEJGLAorICAgICAgICBPUDJfWEFERGIgICAg
ICAgICAgID0gMHhDMCwKKyAgICAgICAgT1AyX1hBREQgICAgICAgICAgICA9IDB4QzEsCiAgICAg
ICAgIE9QMl9QRVhUUldfR2RVZEliICAgPSAweEM1LAogICAgICAgICBPUDJfUFNMTFFfVWRxSWIg
ICAgID0gMHg3MywKICAgICAgICAgT1AyX1BTUkxRX1VkcUliICAgICA9IDB4NzMsCkBAIC00NDAs
NiArNDUwLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FE
RF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgYWRkbF9t
cihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfQUREX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAg
ICAKICNpZiAhQ1BVKFg4Nl82NCkKICAgICB2b2lkIGFkZGxfbXIoY29uc3Qgdm9pZCogYWRkciwg
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNTYyLDExICs1NzcsMjEgQEAgcHVibGljOgogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZz
ZXQpOwogICAgIH0KIAorICAgIHZvaWQgYWRkcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhZGRxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgYWRkcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhZGRxX2lyKGludCBpbW0sIFJlZ2lzdGVy
SUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsK
QEAgLTU5MSw2ICs2MTYsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYWRkcV9pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAx
X09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BREQsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAjZWxzZQogICAgIHZvaWQgYWRkbF9pbShpbnQg
aW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKQEAgLTYxNCwxMSArNjUwLDQzIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3QsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBhbmRsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBhbmRsX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGFuZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnBy
ZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5kbF9ybShzcmMsIG9mZnNldCwgYmFz
ZSk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5k
bF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kYl9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9pcihpbnQg
aW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CkBAIC02NDEsNiArNzA5LDUzIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KIAorICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJ
eiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgYW5kd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmR3X2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFuZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9FYkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBH
Uk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZv
aWQgYW5kcV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNjU3
LDYgKzc3Miw0OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUz
MihpbW0pOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBhbmRxX21yKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBhbmRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JP
VVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5f
U0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAj
ZWxzZQogICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsK
QEAgLTcwMyw2ICs4NjAsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfR1JPVVA1X0V2LCBHUk9VUDFfT1BfQURELCBiYXNlLCBvZmZzZXQpOwog
ICAgIH0KKworICAgIHZvaWQgaW5jcV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfR1JPVVA1X0V2LCBHUk9VUDFfT1BfQURELCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQogI2VuZGlmIC8vIENQVShYODZfNjQpCiAKICAgICB2b2lkIG5lZ2xf
cihSZWdpc3RlcklEIGRzdCkKQEAgLTcxNSw2ICs4NzcsMTYgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVH
LCBkc3QpOwogICAgIH0KKworICAgIHZvaWQgbmVncV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19F
diwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3Ff
bShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19Fdiwg
R1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRp
ZgogCiAgICAgdm9pZCBuZWdsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQpAQCAtNzIy
LDYgKzg5NCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDNfRXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9p
ZCBuZWdsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAz
X0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CisgICAgdm9pZCBuZWd3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWds
X20ob2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3dfbShpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVnbF9t
KG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2JfbShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOworICAg
IH0KKworICAgIHZvaWQgbmVnYl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKwogICAgIHZvaWQgbm90bF9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwg
ZHN0KTsKQEAgLTczMiw2ICs5MzEsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KIAorICAgIHZvaWQgbm90bF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKworICAgIHZvaWQgbm90d19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgbm90bF9tKG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3R3X20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIG5vdGxfbShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGJfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgbm90
cV9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTc0Miw2ICs5NjgsMTEgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9V
UDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgbm90cV9tKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNf
T1BfTk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAg
ICB2b2lkIG9ybF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC03NTQsMTEg
Kzk4NSw0MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9H
dkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBvcmxfbXIoaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2
RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQg
b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAg
ewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBvcmxfcm0oc3JjLCBvZmZz
ZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAg
ICAgb3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIG9ybF9pcihpbnQg
aW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CkBAIC03ODQsMTIgKzEwNDcsMTAxIEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAorICAgIHZvaWQgb3JsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENB
Tl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgb3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9V
UDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBvcndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0Vi
SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgb3JiX2ltKGludCBpbW0sIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1Bf
T1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBvcnFfcnIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQg
b3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
R1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIHZvaWQgb3JxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTgzMSwxMSArMTE4Myw0
MyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwg
ZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYs
IGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3Vi
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9m
ZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgc3Vid19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBz
cmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1Ymxf
aXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzhfMzIoaW1tKSkgewpAQCAtODYxLDYgKzEyNDUsNTMgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgfQogCisgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
aWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAg
fQorCisgICAgdm9pZCBzdWJ3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1Yndf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9T
VUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1t
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0ViSWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQp
CiAgICAgdm9pZCBzdWJxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7
CkBAIC04NzIsMTEgKzEzMDMsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZv
aWQgc3VicV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCiAgICAgdm9pZCBzdWJxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CiAgICAgdm9pZCBzdWJxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTkwMSw2ICsxMzQyLDE3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICB2b2lkIHN1YnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9
CisgICAgfQogI2Vsc2UKICAgICB2b2lkIHN1YmxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRk
cikKICAgICB7CkBAIC05MjQsMTEgKzEzNzYsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfWE9SX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAK
KyAgICB2b2lkIHhvcmxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKICAgICB2b2lkIHhvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9y
bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KwogICAgIHZvaWQgeG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTQw
LDYgKzE0MDIsNzUgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB4b3Js
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGlt
bSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwg
R1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3Jj
LCBvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcndf
aW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9Y
T1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1t
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1hPUl9FdkdiLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAg
dm9pZCB4b3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCB4b3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAx
X09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX2lyKGludCBpbW0sIFJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGlt
bSkpIHsKQEAgLTk3NCwxMSArMTUwNSw0NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09Q
X1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICB2b2lkIHhvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorICAg
IAogICAgIHZvaWQgeG9ycV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2
R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcnFfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9S
X0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2LCBkZXN0
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYs
IGRlc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAg
IHZvaWQgbHpjbnRfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTU4Niwx
MSArMjE1MywzOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfWENIR19Fdkd2LCBzcmMsIGRzdCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnYl9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOwor
ICAgIH0KKworICAgIHZvaWQgeGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4
Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9Y
Q0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAg
IHZvaWQgeGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3Ys
IHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogI2lmIENQVShYODZf
NjQpCiAgICAgdm9pZCB4Y2hncV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewpAQCAtMTYwNiw2ICsyMjAwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAg
IH0KKworICAgIHZvaWQgeGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgbW92bF9ycihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNzMxLDYgKzIzMzAsMjAgQEAgcHVibGljOgog
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG1vdndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAxMV9Fdkl6LCBHUk9VUDExX01PViwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG1vdndfaW0oaW50
IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SXosIEdST1VQ
MTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZsX0VBWG0oY29uc3Qgdm9p
ZCogYWRkcikKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfT3ZF
QVgpOwpAQCAtMTgwMCw2ICsyNDEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMzIoaW1tKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdnFfaTMybShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMTFfRXZJeiwg
R1JPVVAxMV9NT1YsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICB9CisKICAgICB2b2lkIG1vdnFfaTY0cihpbnQ2
NF90IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9NT1ZfRUFYSXYsIGRzdCk7CkBAIC0yNzgxLDYgKzM0MDAsOTQgQEAgcHVibGlj
OgogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX0xPQ0spOwogICAgIH0KICAgICAKKyAg
ICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hH
Yiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgo
T1AyX0NNUFhDSEdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJB
TkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21w
eGNoZ2xfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdsX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywg
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisjaWYgQ1BVKFg4Nl82
NCkgICAgCisgICAgdm9pZCBjbXB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQo
T1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBj
bXB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorI2VuZGlmIC8vIENQVShYODZfNjQpCisgICAgCisgICAgdm9pZCB4YWRkYl9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9YQUREYiwgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHhhZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQs
IHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkbF9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hB
REQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworI2lmIENQVShY
ODZfNjQpICAgIAorICAgIHZvaWQgeGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9YQURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFk
ZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0
ZU9wNjQoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorICAgIAogICAgIHZvaWQgbWZlbmNlKCkKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLnRocmVlQnl0ZU9wKE9QMl8zQllURV9FU0NBUEVfQUUsIE9QM19N
RkVOQ0UpOwpAQCAtMzc1Nyw2ICs0NDY0LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0
ZXIucmVnaXN0ZXJNb2RSTShncm91cE9wLCBybSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lk
IHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBi
YXNlLCBpbnQgb2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlv
bkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRS
ZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBiYXNlKSwgcmVnLCAwLCBiYXNlKTsKKyAgICAg
ICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAg
ICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVy
Lm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKKyAgICAgICAg
eworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVm
ZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJl
ZykgfHwgcmVnUmVxdWlyZXNSZXgoaW5kZXgsIGJhc2UpLCByZWcsIGluZGV4LCBiYXNlKTsKKyAg
ICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3Jp
dGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICB9CisKICAgICAgICAgLy8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KICAgICAgICAgLy8gQW4g
aW1tZWRhaXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBv
cCBoYXMgYmVlbiBlbWl0dGVkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRv
bWljVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0
b21pY1ZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNBdG9taWNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworQXRvbWljVmFsdWU6On5BdG9taWNWYWx1
ZSgpCit7Cit9CisKK3ZvaWQgQXRvbWljVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29t
bWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KGNvbW1hLCAid2lk
dGggPSAiLCBtX3dpZHRoKTsKKyAgICAKKyAgICBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoY29tbWEs
IG91dCk7Cit9CisKK1ZhbHVlKiBBdG9taWNWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbmV3IEF0b21pY1ZhbHVlKCp0aGlzKTsKK30KKworQXRvbWljVmFsdWU6OkF0b21p
Y1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBvcGVy
YW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVh
cFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5k
LCBvcGVyYW5kLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSwgb3Bl
cmFuZCwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7CisgICAgQVNTRVJUKGJlc3RU
eXBlKEdQLCBhY2Nlc3NXaWR0aCgpKSA9PSBhY2Nlc3NUeXBlKCkpOworICAgIAorICAgIHN3aXRj
aCAoa2luZC5vcGNvZGUoKSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0
b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hn
U3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KK30KKworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9y
aWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUs
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFu
Z2UgZmVuY2VSYW5nZSkKKyAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIGtp
bmQub3Bjb2RlKCkgPT0gQXRvbWljV2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRWYWx1ZS0+dHlw
ZSgpLCBvcmlnaW4sIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UsIGV4cGVjdGVkVmFsdWUsIG5l
d1ZhbHVlLCBwb2ludGVyKQorICAgICwgbV93aWR0aCh3aWR0aCkKK3sKKyAgICBBU1NFUlQoYmVz
dFR5cGUoR1AsIGFjY2Vzc1dpZHRoKCkpID09IGFjY2Vzc1R5cGUoKSk7CisKKyAgICBzd2l0Y2gg
KGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9t
aWNTdHJvbmdDQVM6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisK
KyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNBdG9taWNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0F0b21pY1ZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1
ZGUgIkIzV2lkdGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIEF0b21pY1ZhbHVlIDogcHVibGljIE1lbW9yeVZhbHVlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAg
IHJldHVybiBpc0F0b21pYyhraW5kLm9wY29kZSgpKTsKKyAgICB9CisgICAgCisgICAgfkF0b21p
Y1ZhbHVlKCk7CisgICAgCisgICAgVHlwZSBhY2Nlc3NUeXBlKCkgY29uc3QgeyByZXR1cm4gY2hp
bGQoMCktPnR5cGUoKTsgfQorICAgIAorICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV93aWR0aDsgfQorICAgIAorcHJvdGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29t
bWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICAKKyAgICBWYWx1
ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2luLCBX
aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAs
IEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdl
ID0gSGVhcFJhbmdlOjp0b3AoKSk7CisgICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2lu
LCBXaWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0
b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAg
ICBXaWR0aCBtX3dpZHRoOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNC
YXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFz
aWNCbG9jay5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIEJs
b2NrSW5zZXJ0aW9uU2V0OwogY2xhc3MgSW5zZXJ0aW9uU2V0OwogY2xhc3MgUHJvY2VkdXJlOwog
Y2xhc3MgVmFsdWU7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0OwogCiBjbGFzcyBCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShC
YXNpY0Jsb2NrKTsKQEAgLTE1OCw2ICsxNTksNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBCbG9ja0luc2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3MgSW5zZXJ0aW9uU2V0OwogICAg
IGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBj
bGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgCiAgICAgLy8gSW5zdGFudGlhdGUg
dmlhIFByb2NlZHVyZS4KICAgICBCYXNpY0Jsb2NrKHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJl
cXVlbmN5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0lu
c2VydGlvblNldC5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwzNSArMzYsMTMg
QEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBCbG9ja0luc2VydGlvblNldDo6
QmxvY2tJbnNlcnRpb25TZXQoUHJvY2VkdXJlICZwcm9jKQotICAgIDogbV9wcm9jKHByb2MpCisg
ICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQocHJvYy5tX2Jsb2NrcykKKyAgICAsIG1fcHJv
Yyhwcm9jKQogewogfQogCiBCbG9ja0luc2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KCkg
eyB9CiAKLXZvaWQgQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydChCbG9ja0luc2VydGlvbiYmIGlu
c2VydGlvbikKLXsKLSAgICBtX2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7
Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQodW5zaWduZWQgaW5k
ZXgsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+
IGJsb2NrKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKLSAgICBCYXNpY0Js
b2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsKLSAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5k
ZXgsIFdURk1vdmUoYmxvY2spKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQmFzaWNCbG9j
ayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRv
dWJsZSBmcmVxdWVuY3kpCi17Ci0gICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZy
ZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsK
LX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEFmdGVyKEJhc2ljQmxv
Y2sqIGFmdGVyLCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHJldHVybiBpbnNlcnQoYWZ0ZXIt
PmluZGV4KCkgKyAxLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYWZ0ZXIt
PmZyZXF1ZW5jeSgpKTsKLX0KLQogQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6OnNwbGl0
Rm9yd2FyZCgKICAgICBCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQmIHZhbHVlSW5kZXgsIElu
c2VydGlvblNldCogaW5zZXJ0aW9uU2V0LCBkb3VibGUgZnJlcXVlbmN5KQogewpAQCAtMTAyLDMy
ICs4MCw2IEBAIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcncKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEJsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKCkKLXsK
LSAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIAotICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4gYW55
IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCi0gICAgLy8gcnVubmluZyBX
VEY6OmV4ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBh
bmQgd2Ugd2FudCBpdCB0byBiZQotICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBidWJibGUgc29ydC4K
LSAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkp
OwotCi0gICAgZXhlY3V0ZUluc2VydGlvbnMobV9wcm9jLm1fYmxvY2tzLCBtX2luc2VydGlvbnMp
OwotICAgIAotICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBUaGlzIGlzbid0IHN0cmlj
dGx5IG5lY2Vzc2FyeSBidXQgaXQncwotICAgIC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxvY2sg
bGlzdCBmcm9tIGdyb3dpbmcuCi0gICAgbV9wcm9jLm1fYmxvY2tzLnJlbW92ZUFsbE1hdGNoaW5n
KAotICAgICAgICBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+
IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuICFibG9ja1B0cjsKLSAgICAgICAgfSk7Ci0gICAg
Ci0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2Vz
LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Byb2MubV9ibG9ja3Muc2l6ZSgpOyAr
K2kpCi0gICAgICAgIG1fcHJvYy5tX2Jsb2Nrc1tpXS0+bV9pbmRleCA9IGk7Ci0gICAgCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8g
RU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5z
ZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxv
Y2tJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0lu
c2VydGlvblNldC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSA8d3RmL0lu
c2VydGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM1LDI2ICszNiwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgSW5zZXJ0aW9uU2V0OwogCi10
eXBlZGVmIFdURjo6SW5zZXJ0aW9uPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4gQmxvY2tJ
bnNlcnRpb247Cit0eXBlZGVmIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPjo6
QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CiAKLWNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0
IHsKK2NsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2VydGlv
blNldDxCYXNpY0Jsb2NrPiB7CiBwdWJsaWM6CiAgICAgQmxvY2tJbnNlcnRpb25TZXQoUHJvY2Vk
dXJlJik7CiAgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7CiAgICAgCi0gICAgdm9pZCBpbnNlcnQo
QmxvY2tJbnNlcnRpb24mJik7Ci0KLSAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQgYSBnaXZl
biBpbmRleC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBm
cmVxdWVuY3kgPSBQTmFOKTsKLQotICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRo
ZSBnaXZlbiBibG9jay4gVXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5Ci0g
ICAgLy8gYXJndW1lbnQuIFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZy
ZXF1ZW5jeSBvZiB0aGUgJ2JlZm9yZScgYmxvY2suIFRoYXQncwotICAgIC8vIHVzdWFsbHkgd2hh
dCB5b3Ugd2FudC4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVm
b3JlLCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJs
b2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRBZnRlcihC
YXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCiAgICAgLy8gQSBo
ZWxwZXIgdG8gc3BsaXQgYSBibG9jayB3aGVuIGZvcndhcmQgaXRlcmF0aW5nIG92ZXIgaXQuIEl0
IGNyZWF0ZXMgYSBuZXcgYmxvY2sgdG8gaG9sZAogICAgIC8vIGV2ZXJ5dGhpbmcgYmVmb3JlIHRo
ZSBpbnN0cnVjdGlvbiBhdCB2YWx1ZUluZGV4LiBUaGUgY3VycmVudCBibG9jayBpcyBsZWZ0IHdp
dGgKICAgICAvLyBldmVyeXRoaW5nIGF0IGFuZCBhZnRlciB2YWx1ZUluZGV4LiBJZiB0aGUgb3B0
aW9uYWwgSW5zZXJ0aW9uU2V0IGlzIHByb3ZpZGVkLCBpdCB3aWxsIGdldApAQCAtODAsMTIgKzY4
LDkgQEAgcHVibGljOgogICAgIEJhc2ljQmxvY2sqIHNwbGl0Rm9yd2FyZCgKICAgICAgICAgQmFz
aWNCbG9jayosIHVuc2lnbmVkJiB2YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqID0gbnVsbHB0ciwK
ICAgICAgICAgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotICAgIAotICAgIGJvb2wgZXhlY3V0
ZSgpOwogCiBwcml2YXRlOgogICAgIFByb2NlZHVyZSYgbV9wcm9jOwotICAgIFZlY3RvcjxCbG9j
a0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAkocmV2aXNpb24g
MjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04Miw3ICs4Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJmZXJlcyhjb25z
dCBFZmZlY3RzJiAKICAgICAgICAgfHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQaW5uZWQob3RoZXIs
ICp0aGlzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQogICAgICAg
ICB8fCB3cml0ZXMub3ZlcmxhcHMob3RoZXIucmVhZHMpCi0gICAgICAgIHx8IHJlYWRzLm92ZXJs
YXBzKG90aGVyLndyaXRlcyk7CisgICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRl
cykKKyAgICAgICAgfHwgKGZlbmNlICYmIG90aGVyLmZlbmNlKTsKIH0KIAogYm9vbCBFZmZlY3Rz
OjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTYsOCBA
QCBib29sIEVmZmVjdHM6Om9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYgCiAgICAgICAgICYmIHdy
aXRlc1Bpbm5lZCA9PSBvdGhlci53cml0ZXNQaW5uZWQKICAgICAgICAgJiYgcmVhZHNQaW5uZWQg
PT0gb3RoZXIucmVhZHNQaW5uZWQKICAgICAgICAgJiYgd3JpdGVzID09IG90aGVyLndyaXRlcwot
ICAgICAgICAmJiByZWFkcyA9PSBvdGhlci5yZWFkczsKKyAgICAgICAgJiYgcmVhZHMgPT0gb3Ro
ZXIucmVhZHMKKyAgICAgICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9CiAKIGJvb2wgRWZm
ZWN0czo6b3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTEyMCw2ICsx
MjIsOCBAQCB2b2lkIEVmZmVjdHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uCiAgICAgICAg
IG91dC5wcmludChjb21tYSwgIldyaXRlc1Bpbm5lZCIpOwogICAgIGlmIChyZWFkc1Bpbm5lZCkK
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAgICBpZiAoZmVuY2Up
CisgICAgICAgIG91dC5wcmludChjb21tYSwgIkZlbmNlIik7CiAgICAgaWYgKHdyaXRlcykKICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAgICAgaWYgKHJlYWRz
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNpb24gMjEzNDI1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNzEsNiArNzEsMTAgQEAgc3RydWN0IEVmZmVjdHMgewogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNzMKICAgICBib29sIHJlYWRzUGlubmVk
IHsgZmFsc2UgfTsKICAgICBib29sIHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07CisgICAgCisgICAg
Ly8gTWVtb3J5IGZlbmNlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBlYWNoIG90aGVyIHJl
Z2FyZGxlc3Mgb2YgdGhlaXIgZWZmZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisgICAgLy8gaWYgdGhl
IG9wZXJhdGlvbiBpcyBhIG1lbW9yeSBmZW5jZS4KKyAgICBib29sIGZlbmNlIHsgZmFsc2UgfTsK
IAogICAgIEhlYXBSYW5nZSB3cml0ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRzOwpAQCAtODksNiAr
OTMsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5n
ZTo6dG9wKCk7CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIHJl
c3VsdC53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTAzLDcgKzEwOCw3IEBAIHN0cnVj
dCBFZmZlY3RzIHsKIAogICAgIGJvb2wgbXVzdEV4ZWN1dGUoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRlcm1pbmFsIHx8IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8
fCB3cml0ZXMgfHwgd3JpdGVzUGlubmVkOworICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhp
dHNTaWRld2F5cyB8fCB3cml0ZXNMb2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQg
fHwgZmVuY2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHJlb3JkZXJpbmcgaW5z
dHJ1Y3Rpb25zIHdpdGggdGhlc2UgcmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxkIGNoYW5nZSBwcm9n
cmFtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
RWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0cnVjdCBJbXB1cmVCbG9ja0RhdGEg
ewogCiAgICAgUmFuZ2VTZXQ8SGVhcFJhbmdlPiByZWFkczsgLy8gVGhpcyBvbmx5IGdldHMgdXNl
ZCBmb3IgZm9yd2FyZCBzdG9yZSBlbGltaW5hdGlvbi4KICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+
IHdyaXRlczsgLy8gVGhpcyBnZXRzIHVzZWQgZm9yIGJvdGggbG9hZCBhbmQgc3RvcmUgZWxpbWlu
YXRpb24uCisgICAgYm9vbCBmZW5jZTsKIAogICAgIE1lbW9yeVZhbHVlTWFwIHN0b3Jlc0F0SGVh
ZDsKICAgICBNZW1vcnlWYWx1ZU1hcCBtZW1vcnlWYWx1ZXNBdFRhaWw7CkBAIC0xNzQsMTIgKzE3
NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG1l
bW9yeSAmJiBtZW1vcnktPmlzU3RvcmUoKQogICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS5y
ZWFkcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpCi0gICAgICAgICAgICAgICAgICAgICYmICFk
YXRhLndyaXRlcy5vdmVybGFwcyhtZW1vcnktPnJhbmdlKCkpKQorICAgICAgICAgICAgICAgICAg
ICAmJiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQorICAgICAgICAgICAg
ICAgICAgICAmJiAoIWRhdGEuZmVuY2UgfHwgIW1lbW9yeS0+aGFzRmVuY2UoKSkpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGEuc3RvcmVzQXRIZWFkLmFkZChtZW1vcnkpOwogICAgICAgICAgICAg
ICAgIGRhdGEucmVhZHMuYWRkKGVmZmVjdHMucmVhZHMpOwogCiAgICAgICAgICAgICAgICAgaWYg
KEhlYXBSYW5nZSB3cml0ZXMgPSBlZmZlY3RzLndyaXRlcykKICAgICAgICAgICAgICAgICAgICAg
Y2xvYmJlcihkYXRhLCB3cml0ZXMpOworICAgICAgICAgICAgICAgIGRhdGEuZmVuY2UgfD0gZWZm
ZWN0cy5mZW5jZTsKIAogICAgICAgICAgICAgICAgIGlmIChtZW1vcnkpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkpOwpAQCAtNDQ1LDggKzQ0
OCw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgZGF0YUxvZygiQmFkIG1lbW9yeSB2YWx1ZTogIiwgZGVlcER1bXAobV9wcm9jLCBtX3ZhbHVl
KSwgIlxuIik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzgsNiArNDc5LDkgQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVB
ZnRlckNsb2JiZXIoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXImIGZp
bHRlcikKICAgICB7CisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFz
RmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIC8v
IFdlIGNhbiBlbGltaW5hdGUgYSBzdG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0
b3JlIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFueSBv
cGVyYXRpb24gdGhhdCBvYnNlcnZlcyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxpa2Ug
aXQgc2hvdWxkIGJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1p
bmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIApA
QCAtNjE0LDYgKzYxOCwxMiBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIs
ICIuLi5cbiIpOwogICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVl
PigpLT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoTWVtb3J5
VmFsdWUqIG1hdGNoID0gbV9kYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5kKHB0ciwgZmlsdGVy
KSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0
Myw3IEBACiAjaW5jbHVkZSAiQjNMb3dlclRvQWlyLmgiCiAjaW5jbHVkZSAiQjNNb3ZlQ29uc3Rh
bnRzLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKKyNpbmNsdWRlICJCM1B1cmVDU0UuaCIK
ICNpbmNsdWRlICJCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCIKICNpbmNsdWRlICJCM1JlZHVjZVN0
cmVuZ3RoLmgiCiAjaW5jbHVkZSAiQjNUaW1pbmdTY29wZS5oIgpAQCAtOTIsNiArOTMsNyBAQCB2
b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MDcKICAgICB9CiAKKyAgICAv
LyBUaGlzIHB1dHMgdGhlIElSIGluIHF1aXJrcyBtb2RlLgogICAgIGxvd2VyTWFjcm9zKHByb2Nl
ZHVyZSk7CiAKICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0
aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSAiUHVyZU5hTi5oIgorI2luY2x1ZGUgPGNsaW1pdHM+Cisj
aW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
KworY2xhc3MgSW5zZXJ0aW9uU2V0OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNpY0Jsb2NrPgor
Y2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFdU
Rjo6SW5zZXJ0aW9uPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4gQmxvY2tJbnNlcnRpb247
CisgICAgCisgICAgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8QmFzaWNCbG9jaz4+JiBibG9ja3MpCisgICAgICAgIDogbV9ibG9ja3MoYmxvY2tzKQorICAg
IHsKKyAgICB9CisgICAgCisgICAgdm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRp
b24pCisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9u
KSk7CisgICAgfQorCisgICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXgu
CisgICAgQmFzaWNCbG9jayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5
ID0gUE5hTikKKyAgICB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9j
ayhuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgZnJlcXVlbmN5KSk7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJlc3VsdCA9IGJsb2NrLmdldCgpOworICAgICAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24o
aW5kZXgsIFdURk1vdmUoYmxvY2spKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CisgICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLiBVc3Vh
bGx5IHlvdSB3aWxsIG5vdCBwYXNzIHRoZSBmcmVxdWVuY3kKKyAgICAvLyBhcmd1bWVudC4gUGFz
c2luZyBQTmFOIGNhdXNlcyB1cyB0byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVm
b3JlJyBibG9jay4gVGhhdCdzCisgICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3YW50LgorICAgIEJh
c2ljQmxvY2sqIGluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVu
Y3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCks
IGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgp
KTsKKyAgICB9CisKKyAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBi
bG9jay4KKyAgICBCYXNpY0Jsb2NrKiBpbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91
YmxlIGZyZXF1ZW5jeSA9IFBOYU4pCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGFmdGVy
LT5pbmRleCgpICsgMSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVy
LT5mcmVxdWVuY3koKSk7CisgICAgfQorCisgICAgYm9vbCBleGVjdXRlKCkKKyAgICB7CisgICAg
ICAgIGlmIChtX2luc2VydGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAKKyAgICAgICAgLy8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0
byB1cyBpbiBhbnkgb3JkZXIuIFNvLCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKKyAgICAg
ICAgLy8gcnVubmluZyBXVEY6OmV4ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIg
YSBzdGFibGUgc29ydCBhbmQgd2Ugd2FudCBpdCB0byBiZQorICAgICAgICAvLyBmYXN0LCBzbyB3
ZSB1c2UgYnViYmxlIHNvcnQuCisgICAgICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2lu
KCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7CisgICAgICAgIAorICAgICAgICBleGVjdXRlSW5zZXJ0
aW9ucyhtX2Jsb2NrcywgbV9pbnNlcnRpb25zKTsKKyAgICAgICAgCisgICAgICAgIC8vIFBydW5l
IG91dCBlbXB0eSBlbnRyaWVzLiBUaGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQn
cworICAgICAgICAvLyBoZWFsdGh5IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5n
LgorICAgICAgICBtX2Jsb2Nrcy5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAo
c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+JiBibG9ja1B0cikgLT4gYm9vbCB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuICFibG9ja1B0cjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2Vz
LgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3Muc2l6ZSgpOyArK2kp
CisgICAgICAgICAgICBtX2Jsb2Nrc1tpXS0+bV9pbmRleCA9IGk7CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCYXNpY0Jsb2NrPj4mIG1fYmxvY2tzOworICAgIFZlY3RvcjxCbG9ja0luc2VydGlvbiwg
OD4gbV9pbnNlcnRpb25zOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVh
cFJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJh
bmdlLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hl
YXBSYW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg4LDYgKzg4LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KICAgICAKKyAgICBIZWFwUmFuZ2Ugb3Bl
cmF0b3J8KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gSGVhcFJhbmdlKAorICAgICAgICAgICAgc3RkOjptaW4obV9iZWdpbiwgb3RoZXIubV9iZWdp
biksCisgICAgICAgICAgICBzdGQ6Om1heChtX2VuZCwgb3RoZXIubV9lbmQpKTsKKyAgICB9Cisg
ICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW4g
IT0gbV9lbmQ7IH0KIAogICAgIHVuc2lnbmVkIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdp
bjsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3Bw
CShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRp
b25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsMTEgQEAgVmFsdWUqIEluc2Vy
dGlvblNldDo6aW5zZXJ0Qm90dG9tKHNpemVfdAogICAgIHJldHVybiBpbnNlcnRCb3R0b20oaW5k
ZXgsIGxpa2VWYWx1ZS0+b3JpZ2luKCksIGxpa2VWYWx1ZS0+dHlwZSgpKTsKIH0KIAorVmFsdWUq
IEluc2VydGlvblNldDo6aW5zZXJ0Q2xvbmUoc2l6ZV90IGluZGV4LCBWYWx1ZSogdmFsdWUpCit7
CisgICAgcmV0dXJuIGluc2VydFZhbHVlKGluZGV4LCBtX3Byb2NlZHVyZS5jbG9uZSh2YWx1ZSkp
OworfQorCiB2b2lkIEluc2VydGlvblNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKIHsK
ICAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgJKHJldmlz
aW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBWYWx1ZSog
aW5zZXJ0Qm90dG9tKHNpemVfdCBpbmRleCwgT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogaW5z
ZXJ0Qm90dG9tKHNpemVfdCBpbmRleCwgVmFsdWUqKTsKKyAgICAKKyAgICBWYWx1ZSogaW5zZXJ0
Q2xvbmUoc2l6ZV90IGluZGV4LCBWYWx1ZSopOwogCiAgICAgdm9pZCBleGVjdXRlKEJhc2ljQmxv
Y2sqKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTGVnYWxpemVNZW1vcnlP
ZmZzZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMZWdh
bGl6ZU1lbW9yeU9mZnNldHMuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw5ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi0jaW5jbHVkZSAiQWlyQXJn
LmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCi0jaW5jbHVkZSAiQjNNZW1v
cnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
QjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiQjNWYWx1ZUlubGluZXMuaCIKQEAgLTQ5LDIwICs0OCwxOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJ1bigpCiAgICAgewotICAgICAgICBpZiAoIWlzQVJNNjQoKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQorICAgICAgICAvLyBGSVhNRTogUGVyaGFwcyB0aGlzIHNob3VsZCBiZSBtb3ZlZCB0
byBsb3dlck1hY3JvcywgYW5kIHF1aXJrcyBtb2RlIGNhbiBpbXBvc2UgdGhlIHJlcXVpcmVtZW50
CisgICAgICAgIC8vIHRoYXQgdGhlIG9mZnNldCBpcyBsZWdhbC4gQnV0IGZvciBub3cgdGhpcyBp
cyBzb3J0IG9mIE9LIGJlY2F1c2Ugd2UgcnVuIHB1cmVDU0UgCisgICAgICAgIAogICAgICAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gMDsgaW5kZXggPCBibG9jay0+c2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAg
ICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeVZhbHVlID0gYmxvY2stPmF0KGluZGV4KS0+YXM8
TWVtb3J5VmFsdWU+KCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtZW1vcnlWYWx1ZSkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICBpbnQzMl90IG9mZnNl
dCA9IG1lbW9yeVZhbHVlLT5vZmZzZXQoKTsKLSAgICAgICAgICAgICAgICBXaWR0aCB3aWR0aCA9
IG1lbW9yeVZhbHVlLT5hY2Nlc3NXaWR0aCgpOwotICAgICAgICAgICAgICAgIGlmICghQWlyOjpB
cmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQsIHdpZHRoKSkgeworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIGlmICghbWVtb3J5VmFsdWUtPmlzTGVnYWxPZmZzZXQobWVtb3J5VmFs
dWUtPm9mZnNldCgpKSkgewogICAgICAgICAgICAgICAgICAgICBWYWx1ZSogYmFzZSA9IG1lbW9y
eVZhbHVlLT5sYXN0Q2hpbGQoKTsKLSAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG9mZnNldFZh
bHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQoaW5kZXgsIG1lbW9yeVZhbHVl
LT5vcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAg
VmFsdWUqIG9mZnNldFZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQoaW5k
ZXgsIG1lbW9yeVZhbHVlLT5vcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwgbWVtb3J5VmFsdWUtPm9m
ZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc29sdmVkQWRkcmVzcyA9IG1f
cHJvYy5hZGQ8VmFsdWU+KEFkZCwgbWVtb3J5VmFsdWUtPm9yaWdpbigpLCBiYXNlLCBvZmZzZXRW
YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydFZhbHVlKGlu
ZGV4LCByZXNvbHZlZEFkZHJlc3MpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxOSArMjks
MjIgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIz
QmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAj
aW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDYXNlQ29sbGVjdGlvbklubGlu
ZXMuaCIKICNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKKyNpbmNsdWRlICJCM0ZlbmNlVmFs
dWUuaCIKICNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKLSNpbmNsdWRlICJCM01l
bW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJCM1BhdGNocG9pbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1
ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1ZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxv
blZhbHVlLmgiCisjaW5jbHVkZSAiQjNVc2VDb3VudHMuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIu
aCIKQEAgLTU4LDExICs2MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9wcm9jKHByb2MpCiAg
ICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChwcm9jKQogICAgICAgICAsIG1faW5zZXJ0aW9u
U2V0KHByb2MpCisgICAgICAgICwgbV91c2VDb3VudHMocHJvYykKICAgICB7CiAgICAgfQogCiAg
ICAgYm9vbCBydW4oKQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcHJvYy5oYXNR
dWlya3MoKSk7CisgICAgICAgIAogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9w
cm9jKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAgICAgICAgICAgICBwcm9jZXNz
Q3VycmVudEJsb2NrKCk7CkBAIC03Miw2ICs3OCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X3Byb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAgICAgIG1fcHJvYy5pbnZhbGlkYXRl
Q0ZHKCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRo
YXQgd2UndmUgCisgICAgICAgIG1fcHJvYy5zZXRIYXNRdWlya3ModHJ1ZSk7CisgICAgICAgIAog
ICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwogICAgIH0KICAgICAKQEAgLTE4NSw3ICsxOTUsMTE5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbG9hZC1sb2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5z
IHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2UgaXQgdG8gdGVsbCB0aGUKKyAgICAgICAgICAgICAg
ICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJsb2NrIGxvYWQgbW90aW9uLgorICAgICAgICAgICAg
ICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZh
bHVlPihtX2luZGV4LCBtX29yaWdpbik7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT5yZWFk
ID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAgICAgICAgICAgIGZlbmNlLT53cml0ZSA9IEhlYXBS
YW5nZTo6dG9wKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAv
LyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNob3VsZCB1bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNp
bXBsaWZpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aEJv
dHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBB
dG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6IHsKKyAgICAg
ICAgICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFs
dWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgICAgIFdpZHRoIHdpZHRoID0gYXRv
bWljLT5hY2Nlc3NXaWR0aCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlm
IChpc0Nhbm9uaWNhbFdpZHRoKHdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIGV4cGVjdGVkVmFsdWUgPSBh
dG9taWMtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIE9u
IEFSTSwgdGhlIGxvYWQgcGFydCBvZiB0aGUgQ0FTIGRvZXMgYSBsb2FkIHdpdGggemVybyBleHRl
bnNpb24uIFRoZXJlZm9yZSwgd2UgbmVlZAorICAgICAgICAgICAgICAgIC8vIHRvIHplcm8tZXh0
ZW5kIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFza2VkRXhwZWN0ZWRWYWx1
ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIG1f
aW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIGV4cGVjdGVkVmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KG1faW5kZXgsIGV4cGVjdGVkVmFs
dWUsIG1hc2sod2lkdGgpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYXRv
bWljLT5jaGlsZCgwKSA9IG1hc2tlZEV4cGVjdGVkVmFsdWU7CisgICAgICAgICAgICAgICAgbV9j
aGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgor
ICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgY2FzZSBBdG9taWNY
Y2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgICAgICAgICAg
Ly8gT24gWDg2LCB0aGVzZSBtYXkgYWN0dWFsbHkgcmV0dXJuIGdhcmJhZ2UgaW4gdGhlIGhpZ2gg
Yml0cy4gT24gQVJNNjQsIHRoZXNlIHNvcnRhCisgICAgICAgICAgICAgICAgLy8gemVyby1leHRl
bmQgdGhlaXIgaGlnaCBiaXRzLCBleGNlcHQgdGhhdCB0aGUgaGlnaCBiaXRzIG1pZ2h0IGdldCBw
b2xsdXRlZCBieSBoaWdoCisgICAgICAgICAgICAgICAgLy8gYml0cyBpbiB0aGUgb3BlcmFuZC4g
LiBTbywgZWl0aGVyIHdheSwgd2UgbmVlZCB0byB0aHJvdyBhIHNpZ24tZXh0ZW5kIG9uIHRoZXNl
CisgICAgICAgICAgICAgICAgLy8gdGhpbmdzLgorICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5v
cGNvZGUoKSA9PSBBdG9taWNYY2hnU3ViICYmIG1fdXNlQ291bnRzLm51bVVzZXMobV92YWx1ZSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9uIHg4NiwgeGNoZ2FkZCBpcyBiZXR0ZXIg
dGhhbiB4Y2hnc3ViIGlmIGl0IGhhcyBhbnkgdXNlcnMuCisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3ZhbHVlLT5zZXRPcGNvZGVVbnNhZmVseShBdG9taWNYY2hnQWRkKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZh
bHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBOZWcsIG1fb3JpZ2lu
LCBtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGJvb2wgZXhlbXB0ID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEF0
b21pY1hjaGdPcjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAg
ICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgICAgICAgICAgICAg
ICAgICBleGVtcHQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoZXhlbXB0KQor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVl
LT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21p
Yy0+YWNjZXNzV2lkdGgoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAo
aXNDYW5vbmljYWxXaWR0aCh3aWR0aCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIHNpZ25F
eHRlbmRPcGNvZGUod2lkdGgpLCBtX29yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRleCwgYXRvbWljKSk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShuZXdWYWx1ZSk7
CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgTG9h
ZDhaOgorICAgICAgICAgICAgY2FzZSBMb2FkMTZaOiB7CisgICAgICAgICAgICAgICAgaWYgKGlz
WDg2KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1
ZT4oKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1lbW9yeS0+aGFzRmVuY2UoKSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8g
U3ViLXdpZHRoIGxvYWQtYWNxIG9uIEFSTTY0IGFsd2F5cyBzaWduIGV4dGVuZHMuCisgICAgICAg
ICAgICAgICAgVmFsdWUqIG5ld0xvYWQgPSBtX2luc2VydGlvblNldC5pbnNlcnRDbG9uZShtX2lu
ZGV4LCBtZW1vcnkpOworICAgICAgICAgICAgICAgIG5ld0xvYWQtPnNldE9wY29kZVVuc2FmZWx5
KG1lbW9yeS0+b3Bjb2RlKCkgPT0gTG9hZDhaID8gTG9hZDhTIDogTG9hZDE2Uyk7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1ZhbHVlID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgQml0QW5kLCBt
X29yaWdpbiwgbmV3TG9hZCwKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0SW50Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBtX29yaWdp
biwgSW50MzIsIG1hc2sobWVtb3J5LT5hY2Nlc3NXaWR0aCgpKSkpOwogCisgICAgICAgICAgICAg
ICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00NzAsNiArNTkyLDcgQEAgcHJpdmF0ZToKICAg
ICBQcm9jZWR1cmUmIG1fcHJvYzsKICAgICBCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0
aW9uU2V0OwogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKKyAgICBVc2VDb3VudHMg
bV91c2VDb3VudHM7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKICAgICB1bnNpZ25lZCBtX2lu
ZGV4OwogICAgIFZhbHVlKiBtX3ZhbHVlOwpAQCAtNDc3LDIxICs2MDAsMTIgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fY2hhbmdlZCB7IGZhbHNlIH07CiB9OwogCi1ib29sIGxvd2VyTWFjcm9zSW1w
bChQcm9jZWR1cmUmIHByb2MpCi17Ci0gICAgTG93ZXJNYWNyb3MgbG93ZXJNYWNyb3MocHJvYyk7
Ci0gICAgcmV0dXJuIGxvd2VyTWFjcm9zLnJ1bigpOwotfQotCiB9IC8vIGFub255bW91cyBuYW1l
c3BhY2UKIAogYm9vbCBsb3dlck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCiB7Ci0gICAgUGhhc2VT
Y29wZSBwaGFzZVNjb3BlKHByb2MsICJsb3dlck1hY3JvcyIpOwotICAgIGJvb2wgcmVzdWx0ID0g
bG93ZXJNYWNyb3NJbXBsKHByb2MpOwotICAgIGlmIChzaG91bGRWYWxpZGF0ZUlSKCkpCi0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFsb3dlck1hY3Jvc0ltcGwocHJvYykpOwotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgTG93ZXJNYWNyb3MgbG93ZXJNYWNyb3MocHJvYyk7CisgICAgcmV0dXJuIGxv
d2VyTWFjcm9zLnJ1bigpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0Fm
dGVyT3B0aW1pemF0aW9ucy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE1NiwxNSArMTU2LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFJv
dEw6IHsKICAgICAgICAgICAgICAgICAvLyBBUk02NCBkb2Vzbid0IGhhdmUgYSByb3RhdGUgbGVm
dC4KICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdTaGlm
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTmVnLCBtX3ZhbHVlLT5v
cmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90Uiwg
bV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLCBuZXdTaGlmdCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDEp
KTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxWYWx1ZT4obV9pbmRleCwgUm90UiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNo
aWxkKDApLCBuZXdTaGlmdCk7CisgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VX
aXRoSWRlbnRpdHkocm90YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTIgKzI4LDE0IEBACiAKICNpZiBF
TkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNs
dWRlICJBaXJDQ2FsbFNwZWNpYWwuaCIKICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAi
QWlySW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNsdWRl
ICJBaXJTdGFja1Nsb3QuaCIKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNs
dWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgog
I2luY2x1ZGUgIkIzQmxvY2tXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpA
QCAtNDEsNyArNDMsNyBAQAogI2luY2x1ZGUgIkIzQ29tbXV0YXRpdml0eS5oIgogI2luY2x1ZGUg
IkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzRmVuY2VWYWx1ZS5oIgotI2luY2x1ZGUgIkIz
TWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkIzUGF0Y2hwb2ludFNwZWNpYWwuaCIKICNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgpAQCAtNzIsNiArNzQsMTYgQEAgbmFtZXNwYWNl
IHsKIAogY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKKy8vIEZJWE1FOiBXZSB3b3VsZG4n
dCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRlZCBXaWR0aCBtb2RpZmllcnMgaW4gQWlyOjpLaW5k
LgorLy8gT09QUyEhISAobmVlZCBhIGJ1ZyBVUkwpCisjZGVmaW5lIE9QQ09ERV9GT1JfV0lEVEgo
b3Bjb2RlLCB3aWR0aCkgKCBcCisgICAgKHdpZHRoKSA9PSBXaWR0aDggPyBvcGNvZGUgIyMgOCA6
IFwKKyAgICAod2lkdGgpID09IFdpZHRoMTYgPyBvcGNvZGUgIyMgMTYgOiBcCisgICAgKHdpZHRo
KSA9PSBXaWR0aDMyID8gb3Bjb2RlICMjIDMyIDogXAorICAgIG9wY29kZSAjIyA2NCkKKyNkZWZp
bmUgT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgob3Bjb2RlLCB3aWR0aCkgKCBcCisgICAgKHdp
ZHRoKSA9PSBXaWR0aDY0ID8gb3Bjb2RlICMjIDY0IDogb3Bjb2RlICMjIDMyKQorCiBjbGFzcyBM
b3dlclRvQWlyIHsKIHB1YmxpYzoKICAgICBMb3dlclRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJl
KQpAQCAtODMsNiArOTUsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fZG9taW5hdG9ycyhwcm9j
ZWR1cmUuZG9taW5hdG9ycygpKQogICAgICAgICAsIG1fcHJvY2VkdXJlKHByb2NlZHVyZSkKICAg
ICAgICAgLCBtX2NvZGUocHJvY2VkdXJlLmNvZGUoKSkKKyAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0
aW9uU2V0KG1fY29kZSkKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgICAgICAsIG1f
ZWF4KFg4NlJlZ2lzdGVyczo6ZWF4KQorICAgICAgICAsIG1fZWN4KFg4NlJlZ2lzdGVyczo6ZWN4
KQorICAgICAgICAsIG1fZWR4KFg4NlJlZ2lzdGVyczo6ZWR4KQorI2VuZGlmCiAgICAgewogICAg
IH0KIApAQCAtMTI0LDE0ICsxNDIsMTggQEAgcHVibGljOgogICAgICAgICAvLyBob2lzdGVkIGFk
ZHJlc3MgZXhwcmVzc2lvbiBiZWZvcmUgd2UgZHVwbGljYXRlIGl0IGJhY2sgaW50byB0aGUgbG9v
cC4KICAgICAgICAgZm9yIChCMzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2NlZHVyZS5ibG9j
a3NJblByZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKLSAgICAgICAg
ICAgIC8vIFJlc2V0IHNvbWUgc3RhdGUuCi0gICAgICAgICAgICBtX2luc3RzLnJlc2l6ZSgwKTsK
IAogICAgICAgICAgICAgbV9pc1JhcmUgPSAhbV9mYXN0V29ya2xpc3Quc2F3KGJsb2NrKTsKIAog
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG93ZXJp
bmcgQmxvY2sgIiwgKmJsb2NrLCAiOlxuIik7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQgdXAgY29ycmVjdGx5LgorICAg
ICAgICAgICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNj
ZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPnN1Y2Nl
c3NvcnMoKS5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2Nr
KG1fYmxvY2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygpXSwgc3VjY2Vzc29yLmZyZXF1ZW5jeSgp
KSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIFByb2Nlc3MgYmxvY2tzIGluIHJl
dmVyc2Ugb3JkZXIgc28gd2Ugc2VlIHVzZXMgYmVmb3JlIGRlZnMuIFRoYXQncyB3aGF0IGFsbG93
cyB1cwogICAgICAgICAgICAgLy8gdG8gbWF0Y2ggcGF0dGVybnMgZWZmZWN0aXZlbHkuCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+c2l6ZSgpOyBpLS07KSB7CkBAIC0xNDks
MTkgKzE3MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAvLyBOb3cgYXBwZW5kIHRoZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMgY29u
dGFpbnMgdGhlbSBpbiByZXZlcnNlIG9yZGVyLCBzbyB3ZSBwcm9jZXNzCi0gICAgICAgICAgICAv
LyBpdCBpbiByZXZlcnNlLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbnN0cy5z
aXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX2luc3Rz
W2ldKQotICAgICAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPmFwcGVuZElu
c3QoV1RGTW92ZShpbnN0KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQgdXAgY29ycmVjdGx5LgotICAgICAgICAg
ICAgZm9yIChCMzo6RnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3Jz
KCkpIHsKLSAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10tPnN1Y2Nlc3NvcnMo
KS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrKG1fYmxv
Y2tUb0Jsb2NrW3N1Y2Nlc3Nvci5ibG9jaygpXSwgc3VjY2Vzc29yLmZyZXF1ZW5jeSgpKSk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMobV9i
bG9ja1RvQmxvY2tbYmxvY2tdKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9ibG9j
a0luc2VydGlvblNldC5leGVjdXRlKCk7CiAKICAgICAgICAgQWlyOjpJbnNlcnRpb25TZXQgaW5z
ZXJ0aW9uU2V0KG1fY29kZSk7CiAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1fcHJvbG9ndWUp
CkBAIC00NDgsMTIgKzQ2MSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHNjYWxlOwogICAgIH0KLQorICAgIAogICAgIC8vIFRo
aXMgdHVybnMgdGhlIGdpdmVuIG9wZXJhbmQgaW50byBhbiBhZGRyZXNzLgogICAgIEFyZyBlZmZl
Y3RpdmVBZGRyKFZhbHVlKiBhZGRyZXNzLCBpbnQzMl90IG9mZnNldCwgV2lkdGggd2lkdGgpCiAg
ICAgewogICAgICAgICBBU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0ob2Zmc2V0LCB3aWR0aCkp
OwotCisgICAgICAgIAogICAgICAgICBhdXRvIGZhbGxiYWNrID0gWyZdICgpIC0+IEFyZyB7CiAg
ICAgICAgICAgICByZXR1cm4gQXJnOjphZGRyKHRtcChhZGRyZXNzKSwgb2Zmc2V0KTsKICAgICAg
ICAgfTsKQEAgLTUzNSwxMiArNTQ4LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIE1lbW9yeVZhbHVl
KiB2YWx1ZSA9IG1lbW9yeVZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKICAgICAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKKyAgICAgICAgCisgICAgICAgIGlmICh2
YWx1ZS0+cmVxdWlyZXNTaW1wbGVBZGRyKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnOjpzaW1w
bGVBZGRyKHRtcCh2YWx1ZS0+bGFzdENoaWxkKCkpKTsKIAogICAgICAgICBpbnQzMl90IG9mZnNl
dCA9IHZhbHVlLT5vZmZzZXQoKTsKICAgICAgICAgV2lkdGggd2lkdGggPSB2YWx1ZS0+YWNjZXNz
V2lkdGgoKTsKIAogICAgICAgICBBcmcgcmVzdWx0ID0gZWZmZWN0aXZlQWRkcih2YWx1ZS0+bGFz
dENoaWxkKCksIG9mZnNldCwgd2lkdGgpOwotICAgICAgICBBU1NFUlQocmVzdWx0LmlzVmFsaWRG
b3JtKHdpZHRoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5pc1ZhbGlkRm9ybSh3
aWR0aCkpOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNTYxLDExICs1Nzcs
MTkgQEAgcHJpdmF0ZToKICAgICAKICAgICBBcmdQcm9taXNlIGxvYWRQcm9taXNlQW55T3Bjb2Rl
KFZhbHVlKiBsb2FkVmFsdWUpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChsb2FkVmFs
dWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKGxvYWRW
YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAgIGlmIChjcm9zc2VzSW50
ZXJmZXJlbmNlKGxvYWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAg
IEFyZ1Byb21pc2UgcmVzdWx0KGFkZHIobG9hZFZhbHVlKSwgbG9hZFZhbHVlKTsKKyAgICAgICAg
Ly8gT24geDg2LCBhbGwgbG9hZHMgaGF2ZSBmZW5jZXMuIERvaW5nIHRoaXMga2luZCBvZiBpbnN0
cnVjdGlvbiBzZWxlY3Rpb24gd2lsbCBtb3ZlIHRoZSBsb2FkLAorICAgICAgICAvLyBidXQgdGhh
dCdzIGZpbmUgYmVjYXVzZSBvdXIgaW50ZXJmZXJlbmNlIGFuYWx5c2lzIHN0b3BzIHRoZSBtb3Rp
b24gb2YgZmVuY2VzIGFyb3VuZCBvdGhlcgorICAgICAgICAvLyBmZW5jZXMuIFNvLCBhbnkgbG9h
ZCBtb3Rpb24gd2UgaW50cm9kdWNlIGhlcmUgd291bGQgbm90IGJlIG9ic2VydmFibGUuCisgICAg
ICAgIGlmICghaXNYODYoKSAmJiBsb2FkVmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5j
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIEFyZygpOworICAgICAgICBBcmcgbG9hZEFkZHIgPSBh
ZGRyKGxvYWRWYWx1ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxvYWRBZGRyKTsKKyAgICAg
ICAgQXJnUHJvbWlzZSByZXN1bHQobG9hZEFkZHIsIGxvYWRWYWx1ZSk7CiAgICAgICAgIGlmIChs
b2FkVmFsdWUtPnRyYXBzKCkpCiAgICAgICAgICAgICByZXN1bHQuc2V0VHJhcHModHJ1ZSk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03MzgsNyArNzYyLDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KKyAgICAKICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29k
ZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIEFpcjo6T3Bjb2RlIG9wY29kZURvdWJs
ZSwgQWlyOjpPcGNvZGUgb3Bjb2RlRmxvYXQsIENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9
IE5vdENvbW11dGF0aXZlPgogICAgIHZvaWQgYXBwZW5kQmluT3AoVmFsdWUqIGxlZnQsIFZhbHVl
KiByaWdodCkKICAgICB7CkBAIC04OTcsMTEgKzkyMSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAgICAg
ICAgIGFwcGVuZChNb3ZlLCB0bXAodmFsdWUpLCB0bXAobV92YWx1ZSkpOwotICAgICAgICBhcHBl
bmQoTW92ZSwgdG1wKGFtb3VudCksIFRtcChYODZSZWdpc3RlcnM6OmVjeCkpOwotICAgICAgICBh
cHBlbmQob3Bjb2RlLCBUbXAoWDg2UmVnaXN0ZXJzOjplY3gpLCB0bXAobV92YWx1ZSkpOwotI2Vu
ZGlmCisgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAoYW1vdW50KSwgbV9lY3gpOworICAgICAgICBh
cHBlbmQob3Bjb2RlLCBtX2VjeCwgdG1wKG1fdmFsdWUpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQ+CkBAIC05MzAsMTAg
Kzk1MiwxNiBAQCBwcml2YXRlOgogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpP
cGNvZGUgb3Bjb2RlNjQsIENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9IE5vdENvbW11dGF0
aXZlPgogICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVCaW5PcChWYWx1ZSogbGVmdCwgVmFsdWUqIHJp
Z2h0KQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV92YWx1ZS0+YXM8TWVtb3J5VmFs
dWU+KCkpOworICAgICAgICAKICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2Rl
Rm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIGxlZnQtPnR5cGUoKSk7CiAgICAgICAgIGlmIChv
cGNvZGUgPT0gQWlyOjpPb3BzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAK
KyAgICAgICAgLy8gT24geDg2LCBhbGwgc3RvcmVzIGhhdmUgZmVuY2VzLCBhbmQgdGhpcyBpc24n
dCByZW9yZGVyaW5nIHRoZSBzdG9yZSBpdHNlbGYuCisgICAgICAgIGlmICghaXNYODYoKSAmJiBt
X3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIEFyZyBzdG9yZUFkZHIgPSBhZGRyKG1fdmFsdWUp
OwogICAgICAgICBBU1NFUlQoc3RvcmVBZGRyKTsKIApAQCAtOTkzLDExICsxMDIxLDUwIEBAIHBy
aXZhdGU6CiAKICAgICAgICAgcmV0dXJuIEluc3QobW92ZSwgbV92YWx1ZSwgdG1wKHZhbHVlKSwg
ZGVzdCk7CiAgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFdpZHRoIHdp
ZHRoLCBCYW5rIGJhbmssIGJvb2wgcmVsZWFzZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAod2lk
dGgpIHsKKyAgICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChi
YW5rID09IEdQKTsKKyAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWw4IDogQWly
OjpTdG9yZTg7CisgICAgICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDE2
IDogQWlyOjpTdG9yZTE2OworICAgICAgICBjYXNlIFdpZHRoMzI6CisgICAgICAgICAgICBzd2l0
Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICAgICAgcmV0dXJu
IHJlbGVhc2UgPyBTdG9yZVJlbDMyIDogTW92ZTMyOworICAgICAgICAgICAgY2FzZSBGUDoKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIE1vdmVGbG9hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpczY0Qml0KCkp
OworICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAgICAgICBjYXNlIEdQOgorICAg
ICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWw2NCA6IE1vdmU7CisgICAgICAg
ICAgICBjYXNlIEZQOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gTW92ZURvdWJsZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFZhbHVlKiB2
YWx1ZSkKKyAgICB7CisgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVt
b3J5VmFsdWU+KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lbW9yeS0+aXNTdG9yZSgpKTsK
KyAgICAgICAgcmV0dXJuIHN0b3JlT3Bjb2RlKG1lbW9yeS0+YWNjZXNzV2lkdGgoKSwgbWVtb3J5
LT5hY2Nlc3NCYW5rKCksIG1lbW9yeS0+aGFzRmVuY2UoKSk7CisgICAgfQogCiAgICAgSW5zdCBj
cmVhdGVTdG9yZShWYWx1ZSogdmFsdWUsIGNvbnN0IEFyZyYgZGVzdCkKICAgICB7Ci0gICAgICAg
IEFpcjo6T3Bjb2RlIG1vdmVPcGNvZGUgPSBtb3ZlRm9yVHlwZSh2YWx1ZS0+dHlwZSgpKTsKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUsIHZhbHVlLCBkZXN0KTsKKyAgICAg
ICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IHN0b3JlT3Bjb2RlKHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUsIHZhbHVlLT5jaGlsZCgwKSwgZGVzdCk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KQEAgLTEwMDUsNyArMTA3Miw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUs
IGNyZWF0ZVN0b3JlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpKTsKICAgICB9Ci0KKyAg
ICAKICAgICBBaXI6Ok9wY29kZSBtb3ZlRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEwNzIsNyArMTEzOSw0MSBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKGluc3QpOwogICAgIH0KKyAgICAKKyAgICB2
b2lkIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyhBaXI6OkJhc2ljQmxvY2sqIHRhcmdldCkK
KyAgICB7CisgICAgICAgIC8vIE5vdyBhcHBlbmQgdGhlIGluc3RydWN0aW9ucy4gbV9pbnN0cyBj
b250YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIsIHNvIHdlIHByb2Nlc3MKKyAgICAgICAgLy8g
aXQgaW4gcmV2ZXJzZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbnN0cy5zaXplKCk7
IGktLTspIHsKKyAgICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1faW5zdHNbaV0pCisgICAg
ICAgICAgICAgICAgdGFyZ2V0LT5hcHBlbmRJbnN0KFdURk1vdmUoaW5zdCkpOworICAgICAgICB9
CisgICAgICAgIG1faW5zdHMucmVzaXplKDApOworICAgIH0KKyAgICAKKyAgICBBaXI6OkJhc2lj
QmxvY2sqIG5ld0Jsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Jsb2NrSW5zZXJ0aW9u
U2V0Lmluc2VydEFmdGVyKG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdKTsKKyAgICB9CiAKKyAgICAv
LyBOT1RFOiBUaGlzIHdpbGwgY3JlYXRlIGEgY29udGludWF0aW9uIGJsb2NrIChgbmV4dEJsb2Nr
YCkgKmFmdGVyKiBhbnkgYmxvY2tzIHlvdSd2ZSBjcmVhdGVkIHVzaW5nCisgICAgLy8gbmV3Qmxv
Y2soKS4gU28sIGl0J3MgcHJlZmVyYWJsZSB0byBjcmVhdGUgYWxsIG9mIHlvdXIgYmxvY2tzIHVw
ZnJvbnQgdXNpbmcgbmV3QmxvY2soKS4gQWxzbyBub3RlCisgICAgLy8gdGhhdCBhbnkgY29kZSB5
b3UgZW1pdCBiZWZvcmUgdGhpcyB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgY29udGludWF0aW9u
LCBhbmQgYW55IGNvZGUgeW91IGVtaXQKKyAgICAvLyBhZnRlciB0aGlzIHdpbGwgYmUgYXBwZW5k
ZWQgdG8gdGhlIHByZXZpb3VzIGJsb2NrLgorICAgIHZvaWQgc3BsaXRCbG9jayhBaXI6OkJhc2lj
QmxvY2sqJiBwcmV2aW91c0Jsb2NrLCBBaXI6OkJhc2ljQmxvY2sqJiBuZXh0QmxvY2spCisgICAg
eworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJsb2NrID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9j
a107CisgICAgICAgIAorICAgICAgICBwcmV2aW91c0Jsb2NrID0gYmxvY2s7CisgICAgICAgIG5l
eHRCbG9jayA9IG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QWZ0ZXIoYmxvY2spOworICAgICAg
ICAKKyAgICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG5leHRCbG9jayk7CisgICAg
ICAgIG5leHRCbG9jay0+c3VjY2Vzc29ycygpID0gYmxvY2stPnN1Y2Nlc3NvcnMoKTsKKyAgICAg
ICAgYmxvY2stPnN1Y2Nlc3NvcnMoKS5jbGVhcigpOworICAgICAgICAKKyAgICAgICAgbV9pbnN0
cy5hcHBlbmQoVmVjdG9yPEluc3Q+KCkpOworICAgIH0KKyAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgVCogZW5zdXJlU3BlY2lhbChUKiYg
ZmllbGQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CkBAIC0xMTIyLDcgKzEyMjMs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBW
YWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoKICAgICAgICAgICAgICAgICBhcmcgPSBBcmc6OmNhbGxB
cmcodmFsdWUucmVwKCkub2Zmc2V0RnJvbVNQKCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZFN0
b3JlKHZhbHVlLnZhbHVlKCksIGFyZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kU3RvcmUobW92
ZUZvclR5cGUodmFsdWUudmFsdWUoKS0+dHlwZSgpKSwgdmFsdWUudmFsdWUoKSwgYXJnKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE5NjAsNiArMjA2MSwzMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRY
ODZEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZlcnRU
b0RvdWJsZVdvcmQ7CisgICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKKyAgICAgICAgc3dpdGNoICht
X3ZhbHVlLT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAgICAgIGNvbnZl
cnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7CisgICAgICAgICAgICBk
aXYgPSBYODZEaXYzMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDY0Ogor
ICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRXb3JkNjQ7
CisgICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChvcCA9PSBEaXYg
fHwgb3AgPT0gTW9kKTsKKyAgICAgICAgVG1wIHJlc3VsdCA9IG9wID09IERpdiA/IG1fZWF4IDog
bV9lZHg7CisKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIG1f
ZWF4KTsKKyAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdvcmQsIG1fZWF4LCBtX2VkeCk7
CisgICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEp
KSk7CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQor
CisgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpPcGNvZGUgb3ApCisgICAgeworICAgICAgICBB
aXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBY
ODZVRGl2NjQ7CisKKyAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7Cisg
ICAgICAgIFRtcCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gbV9lYXggOiBtX2VkeDsKKworICAgICAg
ICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgbV9lYXgpOworICAgICAgICBh
cHBlbmQoWG9yNjQsIG1fZWR4LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBt
X2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1
bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIGxvYWRMaW5r
T3Bjb2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZl
bmNlID8gT1BDT0RFX0ZPUl9XSURUSChMb2FkTGlua0FjcSwgd2lkdGgpIDogT1BDT0RFX0ZPUl9X
SURUSChMb2FkTGluaywgd2lkdGgpOworICAgIH0KKyAgICAKKyAgICBBaXI6Ok9wY29kZSBzdG9y
ZUNvbmRPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVuY2UpCisgICAgeworICAgICAgICByZXR1
cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZFJlbCwgd2lkdGgpIDogT1BDT0RF
X0ZPUl9XSURUSChTdG9yZUNvbmQsIHdpZHRoKTsKKyAgICB9CisgICAgCisgICAgLy8gVGhpcyBj
YW4gZW1pdCBjb2RlIGZvciB0aGUgZm9sbG93aW5nIHBhdHRlcm5zOgorICAgIC8vIEF0b21pY1dl
YWtDQVMKKyAgICAvLyBCaXRYb3IoQXRvbWljV2Vha0NBUywgMSkKKyAgICAvLyBBdG9taWNTdHJv
bmdDQVMKKyAgICAvLyBFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKQorICAgIC8vIE5v
dEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gQnJhbmNoKEF0b21pY1dl
YWtDQVMpCisgICAgLy8gQnJhbmNoKEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQor
ICAgIC8vIEJyYW5jaChOb3RFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVjdGVkKSkKKyAgICAv
LworICAgIC8vIEl0IGFzc3VtZXMgdGhhdCBhdG9taWNWYWx1ZSBwb2ludHMgdG8gdGhlIENBUywg
YW5kIG1fdmFsdWUgcG9pbnRzIHRvIHRoZSBpbnN0cnVjdGlvbiBiZWluZworICAgIC8vIGdlbmVy
YXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBjb25zdW1lZCBldmVyeXRoaW5nIHRoYXQgbmVl
ZHMgdG8gYmUgY29uc3VtZWQuCisgICAgdm9pZCBhcHBlbmRDQVMoVmFsdWUqIGF0b21pY1ZhbHVl
LCBib29sIGludmVydCkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhdG9t
aWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGF0b21p
Yyk7CisgICAgICAgIAorICAgICAgICBib29sIGlzQnJhbmNoID0gbV92YWx1ZS0+b3Bjb2RlKCkg
PT0gQnJhbmNoOworICAgICAgICBib29sIGlzU3Ryb25nID0gYXRvbWljLT5vcGNvZGUoKSA9PSBB
dG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wgcmV0dXJuc09sZFZhbHVlID0gbV92YWx1ZS0+
b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTOworICAgICAgICBib29sIGhhc0ZlbmNlID0gYXRv
bWljLT5oYXNGZW5jZSgpOworICAgICAgICAKKyAgICAgICAgV2lkdGggd2lkdGggPSBhdG9taWMt
PmFjY2Vzc1dpZHRoKCk7CisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworCisg
ICAgICAgIFRtcCB2YWx1ZVJlc3VsdFRtcDsKKyAgICAgICAgVG1wIGJvb2xSZXN1bHRUbXA7Cisg
ICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFpbnZlcnQpOworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSB0bXAobV92YWx1ZSk7Cisg
ICAgICAgICAgICBib29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0g
ZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2Rl
Lm5ld1RtcChHUCk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChH
UCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IG1fY29k
ZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVG1wIHN1Y2Nlc3NCb29sUmVzdWx0VG1wOwor
ICAgICAgICBpZiAoaXNTdHJvbmcgJiYgIWlzQnJhbmNoKQorICAgICAgICAgICAgc3VjY2Vzc0Jv
b2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBib29sUmVzdWx0VG1wOworCisgICAgICAgIFRtcCBl
eHBlY3RlZFZhbHVlVG1wID0gdG1wKGF0b21pYy0+Y2hpbGQoMCkpOworICAgICAgICBUbXAgbmV3
VmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGlsZCgxKSk7CisgICAgICAgIAorICAgICAgICBBaXI6
OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBm
YWlsdXJlOworICAgICAgICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBt
X2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29yKGludmVydCk7CisgICAgICAgICAgICBm
YWlsdXJlID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9ja10tPnN1Y2Nlc3NvcighaW52ZXJ0KTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIGFw
cGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5hY2Nlc3NUeXBlKCkpLCBpbW1PclRtcChh
dG9taWMtPmNoaWxkKDApKSwgbV9lYXgpOworICAgICAgICAgICAgaWYgKHJldHVybnNPbGRWYWx1
ZSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEF0b21pY1N0cm9u
Z0NBUywgd2lkdGgpLCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAg
ICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5hY2Nlc3NUeXBlKCkpLCBtX2Vh
eCwgdmFsdWVSZXN1bHRUbXApOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc0JyYW5jaCkgewor
ICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9u
Z0NBUywgd2lkdGgpLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBt
X2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Js
b2NrW21fYmxvY2tdLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIGZhaWx1cmUpOworICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWlj
U3Ryb25nQ0FTLCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChpbnZlcnQgPyBNYWNyb0Fzc2VtYmxl
cjo6RmFpbHVyZSA6IE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgsIHRtcChhdG9taWMt
PmNoaWxkKDEpKSwgYWRkcmVzcywgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7
CisgICAgICAgIC8vIFdlIHdpc2ggdG8gZW1pdDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxv
Y2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIExvYWRMaW5rCisgICAgICAgIC8vICAgICBCcmFu
Y2ggTm90RXF1YWwKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVuOiNmYWlsLCBFbHNlOiAj
c3RvcmUKKyAgICAgICAgLy8gQmxvY2sgI3N0b3JlOgorICAgICAgICAvLyAgICAgU3RvcmVDb25k
CisgICAgICAgIC8vICAgICBYb3IgJDEsICVyZXN1bHQgICAgPC0tLSBvbmx5IGlmICFpbnZlcnQK
KyAgICAgICAgLy8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiAjZG9uZQorICAg
ICAgICAvLyBCbG9jayAjZmFpbDoKKyAgICAgICAgLy8gICAgIE1vdmUgJGludmVydCwgJXJlc3Vs
dAorICAgICAgICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisg
ICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2Nr
KiByZWxvb3BCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3Rv
cmVCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogc3VjY2Vzc0Js
b2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCAmJiBpc1N0cm9uZykKKyAgICAg
ICAgICAgIHN1Y2Nlc3NCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9j
ayogZmFpbEJsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCkgeworICAgICAg
ICAgICAgZmFpbEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgICAgIGZhaWx1cmUgPSBmYWls
QmxvY2s7CisgICAgICAgIH0KKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdHJvbmdGYWlsQmxv
Y2s7CisgICAgICAgIGlmIChpc1N0cm9uZyAmJiBoYXNGZW5jZSkKKyAgICAgICAgICAgIHN0cm9u
Z0ZhaWxCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIGNv
bXBhcmlzb25GYWlsID0gZmFpbHVyZTsKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sgd2Vh
a0ZhaWw7CisgICAgICAgIGlmIChpc1N0cm9uZykgeworICAgICAgICAgICAgaWYgKGhhc0ZlbmNl
KQorICAgICAgICAgICAgICAgIGNvbXBhcmlzb25GYWlsID0gc3Ryb25nRmFpbEJsb2NrOworICAg
ICAgICAgICAgd2Vha0ZhaWwgPSByZWxvb3BCbG9jazsKKyAgICAgICAgfSBlbHNlIAorICAgICAg
ICAgICAgd2Vha0ZhaWwgPSBmYWlsdXJlOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIGJlZ2lu
QmxvY2s7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogZG9uZUJsb2NrOworICAgICAgICBzcGxp
dEJsb2NrKGJlZ2luQmxvY2ssIGRvbmVCbG9jayk7CisgICAgICAgIAorICAgICAgICBhcHBlbmQo
QWlyOjpKdW1wKTsKKyAgICAgICAgYmVnaW5CbG9jay0+c2V0U3VjY2Vzc29ycyhyZWxvb3BCbG9j
ayk7CisgICAgICAgIAorICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKGxvYWRMaW5rT3Bjb2Rl
KHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCBhZGRyZXNzLCB2YWx1ZVJlc3Vs
dFRtcCk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoT1BDT0RFX0ZPUl9DQU5PTklDQUxf
V0lEVEgoQnJhbmNoLCB3aWR0aCksIG1fdmFsdWUsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwpLCB2YWx1ZVJlc3VsdFRtcCwgZXhwZWN0ZWRWYWx1ZVRtcCk7CisgICAgICAg
IHJlbG9vcEJsb2NrLT5zZXRTdWNjZXNzb3JzKGNvbXBhcmlzb25GYWlsLCBzdG9yZUJsb2NrKTsK
KyAgICAgICAgCisgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUod2lk
dGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIG5ld1ZhbHVlVG1wLCBhZGRyZXNzLCBz
dWNjZXNzQm9vbFJlc3VsdFRtcCk7CisgICAgICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAg
ICAgc3RvcmVCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwgQXJnOjpyZXNDb25k
KE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3VsdFRtcCwgYm9vbFJlc3VsdFRtcCk7Cisg
ICAgICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIHdlYWtGYWlsKTsK
KyAgICAgICAgICAgIGRvbmVCbG9jay0+c3VjY2Vzc29ycygpLmNsZWFyKCk7CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghZG9uZUJsb2NrLT5zaXplKCkpOworICAgICAgICAgICAgZG9uZUJs
b2NrLT5hcHBlbmQoQWlyOjpPb3BzLCBtX3ZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGlmIChpc1N0cm9uZykgeworICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVu
ZChCcmFuY2hUZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6WmVy
byksIHN1Y2Nlc3NCb29sUmVzdWx0VG1wLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCk7CisgICAgICAg
ICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhzdWNjZXNzQmxvY2ssIHJlbG9vcEJs
b2NrKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPmFw
cGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6OmltbSghaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7Cisg
ICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5hcHBlbmQoQWlyOjpKdW1wLCBtX3ZhbHVlKTsK
KyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFpbnZlcnQpCisgICAg
ICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChYb3IzMiwgbV92YWx1ZSwgQXJnOjpi
aXRJbW0oMSksIGJvb2xSZXN1bHRUbXAsIGJvb2xSZXN1bHRUbXApOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChBaXI6Okp1bXAsIG1fdmFsdWUp
OworICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmFpbEJsb2NrLT5hcHBl
bmQoTW92ZSwgbV92YWx1ZSwgQXJnOjppbW0oaW52ZXJ0KSwgYm9vbFJlc3VsdFRtcCk7CisgICAg
ICAgICAgICBmYWlsQmxvY2stPmFwcGVuZChBaXI6Okp1bXAsIG1fdmFsdWUpOworICAgICAgICAg
ICAgZmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGlmIChpc1N0cm9uZyAmJiBoYXNGZW5jZSkgeworICAgICAgICAgICAgVG1w
IHRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5h
cHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVl
LCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcywgdG1wKTsKKyAgICAgICAgICAgIHN0cm9uZ0ZhaWxC
bG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvKSwgdG1wLCB0bXApOworICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5z
ZXRTdWNjZXNzb3JzKGZhaWx1cmUsIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICBib29sIGFwcGVuZFZvaWRBdG9taWMoQWlyOjpPcGNvZGUgYXRvbWljT3Bjb2RlKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fdXNlQ291bnRzLm51bVVzZXMobV92YWx1ZSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIo
bV92YWx1ZSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNWYWxpZEZvcm0oYXRvbWljT3Bjb2Rl
LCBBcmc6OkltbSwgYWRkcmVzcy5raW5kKCkpICYmIGltbShtX3ZhbHVlLT5jaGlsZCgwKSkpIHsK
KyAgICAgICAgICAgIGFwcGVuZChhdG9taWNPcGNvZGUsIGltbShtX3ZhbHVlLT5jaGlsZCgwKSks
IGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGlmIChpc1ZhbGlkRm9ybShhdG9taWNPcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNz
LmtpbmQoKSkpIHsKKyAgICAgICAgICAgIGFwcGVuZChhdG9taWNPcGNvZGUsIHRtcChtX3ZhbHVl
LT5jaGlsZCgwKSksIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBhcHBlbmRHZW5lcmFsQXRvbWljKEFpcjo6T3Bjb2RlIG9wY29kZSwgQ29tbXV0YXRpdml0eSBj
b21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmUpCisgICAgeworICAgICAgICBBdG9taWNWYWx1
ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAg
ICBBcmcgYWRkcmVzcyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAgIFRtcCBvbGRWYWx1ZSA9IG1f
Y29kZS5uZXdUbXAoR1ApOworICAgICAgICBUbXAgbmV3VmFsdWUgPSBvcGNvZGUgPT0gQWlyOjpO
b3AgPyB0bXAoYXRvbWljLT5jaGlsZCgwKSkgOiBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAg
CisgICAgICAgIC8vIFdlIG5lZWQgYSBDQVMgbG9vcCBvciBhIExML1NDIGxvb3AuIFVzaW5nIHBy
ZXBhcmUvYXR0ZW1wdCBqYXJnb24sIHdlIHdhbnQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIEJs
b2NrICNyZWxvb3A6CisgICAgICAgIC8vICAgICBQcmVwYXJlCisgICAgICAgIC8vICAgICBvcGNv
ZGUKKyAgICAgICAgLy8gICAgIEF0dGVtcHQKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVu
OiNkb25lLCBFbHNlOiNyZWxvb3AKKyAgICAgICAgLy8gQmxvY2sgI2RvbmU6CisgICAgICAgIC8v
ICAgICBNb3ZlIG9sZFZhbHVlLCByZXN1bHQKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChyZWxh
eGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwgdG1wKGF0b21pYykpOwor
ICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2Nr
KCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAgICAgICAgQWlyOjpC
YXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVnaW5CbG9jaywgZG9u
ZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChBaXI6Okp1bXApOworICAgICAgICBi
ZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAgICAgCisgICAgICAg
IEFpcjo6T3Bjb2RlIHByZXBhcmVPcGNvZGU7CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKGF0b21pYy0+YWNjZXNzV2lkdGgoKSkgeworICAgICAgICAgICAgY2Fz
ZSBXaWR0aDg6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IExvYWQ4U2lnbmVkRXh0
ZW5kVG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgx
NjoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDE2U2lnbmVkRXh0ZW5kVG8z
MjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2lkdGgzMjoKKyAg
ICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTW92ZTMyOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAgICAgICAgIHByZXBhcmVP
cGNvZGUgPSBNb3ZlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAg
ICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBsb2FkTGlua09wY29kZShhdG9taWMtPmFjY2Vzc1dp
ZHRoKCksIGF0b21pYy0+aGFzRmVuY2UoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmVsb29wQmxv
Y2stPmFwcGVuZChwcmVwYXJlT3Bjb2RlLCBtX3ZhbHVlLCBhZGRyZXNzLCBvbGRWYWx1ZSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAob3Bjb2RlICE9IEFpcjo6Tm9wKSB7CisgICAgICAgICAgICAv
LyBGSVhNRTogSWYgd2UgZXZlciBoYXZlIHRvIHdyaXRlIHRoaXMgYWdhaW4sIHdlIG5lZWQgdG8g
ZmluZCBhIHdheSB0byBzaGFyZSB0aGUgY29kZSB3aXRoCisgICAgICAgICAgICAvLyBhcHBlbmRC
aW5PcC4KKyAgICAgICAgICAgIGlmIChjb21tdXRhdGl2aXR5ID09IENvbW11dGF0aXZlICYmIGlt
bShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6SW1tLCBBcmc6
OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bj
b2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7
CisgICAgICAgICAgICBlbHNlIGlmIChpbW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZv
cm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgb2xkVmFsdWUsIGltbShhdG9t
aWMtPmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAgZWxzZSBpZiAoY29tbXV0YXRp
dml0eSA9PSBDb21tdXRhdGl2ZSAmJiBiaXRJbW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxp
ZEZvcm0ob3Bjb2RlLCBBcmc6OkJpdEltbSwgQXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAgICAg
ICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgYml0SW1tKGF0b21p
Yy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgICAgICAgICAgZWxzZSBpZiAo
aXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkKKyAgICAg
ICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgb2xkVmFsdWUs
IHRtcChhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRv
bWljLT50eXBlKCkpLCBtX3ZhbHVlLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgICAgICAgICAg
ICAgIGlmIChpbW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6
OkltbSwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5k
KG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5k
KG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAg
ICAgQWlyOjpPcGNvZGUgY2FzT3Bjb2RlID0gT1BDT0RFX0ZPUl9XSURUSChCcmFuY2hBdG9taWNT
dHJvbmdDQVMsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSk7CisgICAgICAgICAgICByZWxvb3BCbG9j
ay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIG1fdmFsdWUsIG9s
ZFZhbHVlLCBtX2VheCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKGNhc09wY29k
ZSwgbV92YWx1ZSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9l
YXgsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBUbXAgYm9vbFJlc3VsdCA9IG1f
Y29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChzdG9yZUNv
bmRPcGNvZGUoYXRvbWljLT5hY2Nlc3NXaWR0aCgpLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3Zh
bHVlLCBuZXdWYWx1ZSwgYWRkcmVzcywgYm9vbFJlc3VsdCk7CisgICAgICAgICAgICByZWxvb3BC
bG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3VsdCwgYm9vbFJlc3VsdCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmVsb29wQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrLCByZWxvb3BCbG9jayk7Cisg
ICAgfQorICAgIAogICAgIHZvaWQgbG93ZXIoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX3Zh
bHVlLT5vcGNvZGUoKSkgewpAQCAtMTk3MCwzMCArMjM3OCw1MCBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOiB7Ci0gICAgICAgICAgICBhcHBl
bmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG1vdmVGb3JUeXBlKG1fdmFsdWUtPnR5cGUoKSksIG1f
dmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgTWVtb3J5
VmFsdWUqIG1lbW9yeSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICAgICAg
QWlyOjpPcGNvZGUgb3Bjb2RlID0gQWlyOjpPb3BzOworICAgICAgICAgICAgaWYgKG1lbW9yeS0+
aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAobWVtb3J5LT50eXBlKCkpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgICAgICAgICBvcGNvZGUg
PSBMb2FkQWNxMzI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgSW50NjQ6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3E2NDsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgb3Bjb2RlID0gbW92ZUZvclR5cGUobWVtb3J5LT50eXBlKCkpOworICAg
ICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOFM6IHsKLSAgICAgICAgICAgIGFw
cGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDhTaWduZWRFeHRlbmRUbzMyLCBtX3ZhbHVl
LCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2Rl
IG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpID8gTG9hZEFj
cThTaWduZWRFeHRlbmRUbzMyIDogTG9hZDhTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAg
YXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1
ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBMb2FkOFo6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92
YWx1ZSwgTG9hZDgsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAg
ICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkt
Pmhhc0ZlbmNlKCkgPyBMb2FkQWNxOCA6IExvYWQ4OworICAgICAgICAgICAgYXBwZW5kKHRyYXBw
aW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3Zh
bHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBM
b2FkMTZTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQx
NlNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkp
OworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFs
dWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIDogTG9hZDE2U2ln
bmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwg
b3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDE2WjogewotICAgICAg
ICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkMTYsIG1fdmFsdWUsIGFkZHIo
bV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2Rl
ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTYgOiBM
b2FkMTY7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwg
bV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAg
ICAgICAgICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjA5MSw3ICsyNTE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0No
aWxsKCkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKICAgICAg
ICAgICAgIGlmIChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAg
ICAgICAgICBsb3dlclg4NkRpdihEaXYpOworICAgICAgICAgICAgICAgIGFwcGVuZFg4NkRpdihE
aXYpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IEFTU0VSVCghaXNYODYoKSB8fCBpc0Zsb2F0KG1fdmFsdWUtPnR5cGUoKSkpOwpAQCAtMjEwMiw3
ICsyNTMwLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIFVEaXY6IHsKICAgICAgICAgICAg
IGlmIChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAg
ICBsb3dlclg4NlVEaXYoVURpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2VURpdihVRGl2
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTIxMTYsMTMg
KzI1NDQsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNb2Q6IHsKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGlzWDg2KCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdmFs
dWUtPmlzQ2hpbGwoKSk7Ci0gICAgICAgICAgICBsb3dlclg4NkRpdihNb2QpOworICAgICAgICAg
ICAgYXBwZW5kWDg2RGl2KE1vZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIFVNb2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzWDg2KCkp
OwotICAgICAgICAgICAgbG93ZXJYODZVRGl2KFVNb2QpOworICAgICAgICAgICAgYXBwZW5kWDg2
VURpdihVTW9kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMTYxLDEw
ICsyNTg5LDI4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxOb3QzMiwg
Tm90NjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoaXMgcGF0dGVybiBpcyBz
dXBlciB1c2VmdWwgb24gYm90aCB4ODYgYW5kIEFSTTY0LCBzaW5jZSB0aGUgaW52ZXJzaW9uIG9m
IHRoZSBDQVMgcmVzdWx0CisgICAgICAgICAgICAvLyBjYW4gYmUgZG9uZSB3aXRoIHplcm8gY29z
dCBvbiB4ODYgKGp1c3QgZmxpcCB0aGUgc2V0IGZyb20gRSB0byBORSkgYW5kIGl0J3MgYSBwcm9n
cmVzc2lvbgorICAgICAgICAgICAgLy8gb24gQVJNNjQgKHNpbmNlIFNUWCByZXR1cm5zIDAgb24g
c3VjY2Vzcywgc28gb3JkaW5hcmlseSB3ZSBoYXZlIHRvIGZsaXAgaXQpLgorICAgICAgICAgICAg
aWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludCgxKQorICAgICAgICAgICAgICAgICYmIGlzQXRv
bWljQ0FTKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkKKyAgICAgICAgICAgICAgICAmJiBj
YW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgICAgIGNvbW1p
dEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRDQVMo
bV92YWx1ZS0+Y2hpbGQoMCksIHRydWUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgYXBwZW5kQmluT3A8WG9yMzIsIFhv
cjY0LCBYb3JEb3VibGUsIFhvckZsb2F0LCBDb21tdXRhdGl2ZT4oCiAgICAgICAgICAgICAgICAg
bV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOworICAgICAgICAgICAgYXBwZW5kVW5P
cDxEZXBlbmQzMiwgRGVwZW5kNjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU2hsOiB7CiAgICAgICAgICAgICBpZiAo
bV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50MzIoMSkpIHsKQEAgLTIyNjUsNyArMjcxMSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBh
cHBlbmRTdG9yZSh2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBw
ZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMjI4Niw3ICsyNzMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGFwcGVuZFN0b3JlKEFpcjo6U3RvcmU4LCB2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1ZSkp
OworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjMwNyw3ICsyNzUzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFpcjo6U3RvcmUxNiwgdmFsdWVUb1N0
b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI0MTUs
NyArMjg2MSwyMiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBFcXVhbDoK
LSAgICAgICAgY2FzZSBOb3RFcXVhbDoKKyAgICAgICAgY2FzZSBOb3RFcXVhbDogeworICAgICAg
ICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMK
KyAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0gbV92YWx1
ZS0+Y2hpbGQoMSkKKyAgICAgICAgICAgICAgICAmJiBjYW5CZUludGVybmFsKG1fdmFsdWUtPmNo
aWxkKDApKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMobV92
YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2xv
Y2tlZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgxKSkpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAg
ICAgICAgICBhcHBlbmRDQVMobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPm9wY29kZSgpID09
IE5vdEVxdWFsKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoY3JlYXRlQ29t
cGFyZShtX3ZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIExlc3NUaGFuOgogICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuOgog
ICAgICAgICBjYXNlIExlc3NFcXVhbDoKQEAgLTI3MjYsNiArMzE4Nyw0MCBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAKICAgICAgICAgY2FzZSBCcmFuY2g6IHsKKyAgICAgICAgICAgIGlmIChjYW5C
ZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgICAgIFZhbHVlKiBi
cmFuY2hDaGlsZCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIHN3aXRjaCAo
YnJhbmNoQ2hpbGQtPm9wY29kZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFr
Q0FTOgorICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFuY2hDaGlsZCk7Cisg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZCwgZmFsc2UpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICAgICAgICAgICAgICAvLyBBIGJyYW5j
aCBpcyBhIGNvbXBhcmlzb24gdG8gemVyby4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJyYW5j
aENoaWxkLT5jaGlsZCgwKS0+aXNJbnQoMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZENBUyhicmFuY2hDaGlsZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2UgRXF1YWw6CisgICAgICAgICAg
ICAgICAgY2FzZSBOb3RFcXVhbDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJyYW5jaENoaWxk
LT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAgICAgICAgICAgICAg
ICAgICAgICAmJiBjYW5CZUludGVybmFsKGJyYW5jaENoaWxkLT5jaGlsZCgwKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICYmIGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0gYnJh
bmNoQ2hpbGQtPmNoaWxkKDEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRl
cm5hbChicmFuY2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5h
bChicmFuY2hDaGlsZC0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
Q0FTKGJyYW5jaENoaWxkLT5jaGlsZCgwKSwgYnJhbmNoQ2hpbGQtPm9wY29kZSgpID09IE5vdEVx
dWFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X2luc3RzLmxhc3QoKS5hcHBlbmQoY3JlYXRlQnJhbmNoKG1fdmFsdWUtPmNoaWxkKDApKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI3ODMsNyArMzI3OCw4MSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYXBwZW5kKEFpcjo6RW50cnlTd2l0Y2gpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBdG9taWNXZWFr
Q0FTOgorICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzogeworICAgICAgICAgICAgYXBwZW5k
Q0FTKG1fdmFsdWUsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDogeworICAgICAgICAgICAgQXRv
bWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAg
ICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNBZGQsIGF0b21p
Yy0+YWNjZXNzV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisgICAgICAgICAgICBB
aXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21pY1hjaGdBZGQsIGF0b21p
Yy0+YWNjZXNzV2lkdGgoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBB
cmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlbGF4
ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIHRtcChhdG9taWMtPmNoaWxkKDApKSwgdG1w
KGF0b21pYykpOworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChhdG9taWMpLCBh
ZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoQWRk
LCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpLCBDb21tdXRhdGl2ZSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6IHsKKyAgICAgICAg
ICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAg
ICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3Vi
LCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5P
TklDQUxfV0lEVEgoU3ViLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0Fu
ZDogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21p
Y1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9X
SURUSChBdG9taWNBbmQsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhP
UENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChBbmQsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSksIENv
bW11dGF0aXZlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSog
YXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBw
ZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY09yLCBhdG9taWMtPmFjY2Vzc1dp
ZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoT3IsIGF0
b21pYy0+YWNjZXNzV2lkdGgoKSksIENvbW11dGF0aXZlKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1hvcjogewor
ICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVl
PigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChB
dG9taWNYb3IsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhPUENPREVf
Rk9SX0NBTk9OSUNBTF9XSURUSChYb3IsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSksIENvbW11dGF0
aXZlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9
IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBB
cmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZywgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKTsK
KyAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBhZGRyZXNzLmtp
bmQoKSkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21p
Yy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0bXAoYXRvbWljKSk7CisgICAgICAg
ICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyksIGFkZHJlc3MpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
YXBwZW5kR2VuZXJhbEF0b21pYyhBaXI6Ok5vcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTI3OTEsNjQgKzMzNjAsNyBAQCBwcml2YXRlOgogICAgICAgICBkYXRh
TG9nKCJGQVRBTDogY291bGQgbm90IGxvd2VyICIsIGRlZXBEdW1wKG1fcHJvY2VkdXJlLCBtX3Zh
bHVlKSwgIlxuIik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQotCi0gICAgdm9pZCBsb3dlclg4NkRpdihCMzo6T3Bjb2RlIG9wKQotICAgIHsKLSNpZiBDUFUo
WDg2KSB8fCBDUFUoWDg2XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1wKFg4NlJlZ2lzdGVyczo6
ZWF4KTsKLSAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6OmVkeCk7Ci0KLSAgICAg
ICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKLSAgICAgICAgQWlyOjpPcGNvZGUg
ZGl2OwotICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgewotICAgICAgICBjYXNlIElu
dDMyOgotICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb0RvdWJs
ZVdvcmQzMjsKLSAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgSW50NjQ6Ci0gICAgICAgICAgICBjb252ZXJ0VG9Eb3VibGVXb3JkID0g
WDg2Q29udmVydFRvUXVhZFdvcmQ2NDsKLSAgICAgICAgICAgIGRpdiA9IFg4NkRpdjY0OwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOwotICAgICAgICBYODZSZWdpc3Rl
cnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBY
ODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNo
aWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdvcmQsIGVheCwg
ZWR4KTsKLSAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgx
KSkpOwotICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7Ci0K
LSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOwotI2VuZGlmCi0gICAgfQotCi0gICAgdm9pZCBsb3dlclg4NlVEaXYoQjM6
Ok9wY29kZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICAgICAg
VG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRtcCBlZHggPSBUbXAo
WDg2UmVnaXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGRpdiA9IG1fdmFsdWUt
PnR5cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsKLQotICAgICAgICBBU1NF
UlQob3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKLSAgICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdp
c3RlcklEIHJlc3VsdCA9IG9wID09IFVEaXYgPyBYODZSZWdpc3RlcnM6OmVheCA6IFg4NlJlZ2lz
dGVyczo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkp
LCBlYXgpOwotICAgICAgICBhcHBlbmQoWG9yNjQsIGVkeCwgZWR4KTsKLSAgICAgICAgYXBwZW5k
KGRpdiwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOwotICAgICAgICBhcHBlbmQo
TW92ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7Ci0jZWxzZQotICAgICAgICBVTlVTRURf
UEFSQU0ob3ApOwotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNlbmRpZgot
ICAgIH0KLQorICAgIAogICAgIEluZGV4U2V0PFZhbHVlPiBtX2xvY2tlZDsgLy8gVGhlc2UgYXJl
IHZhbHVlcyB0aGF0IHdpbGwgaGF2ZSBubyBUbXAgaW4gQWlyLgogICAgIEluZGV4TWFwPFZhbHVl
LCBUbXA+IG1fdmFsdWVUb1RtcDsgLy8gVGhlc2UgYXJlIHZhbHVlcyB0aGF0IG11c3QgaGF2ZSBh
IFRtcCBpbiBBaXIuIFdlIHNheSB0aGF0IGEgVmFsdWUqIHdpdGggYSBub24tbnVsbCBUbXAgaXMg
InBpbm5lZCIuCiAgICAgSW5kZXhNYXA8VmFsdWUsIFRtcD4gbV9waGlUb1RtcDsgLy8gRWFjaCBQ
aGkgZ2V0cyBpdHMgb3duIFRtcC4KQEAgLTI4NjMsNyArMzM3NSw3IEBAIHByaXZhdGU6CiAKICAg
ICBWZWN0b3I8VmVjdG9yPEluc3QsIDQ+PiBtX2luc3RzOwogICAgIFZlY3RvcjxJbnN0PiBtX3By
b2xvZ3VlOwotCisgICAgCiAgICAgQjM6OkJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgYm9vbCBt
X2lzUmFyZTsKICAgICB1bnNpZ25lZCBtX2luZGV4OwpAQCAtMjg3NCw2ICszMzg2LDEyIEBAIHBy
aXZhdGU6CiAKICAgICBQcm9jZWR1cmUmIG1fcHJvY2VkdXJlOwogICAgIENvZGUmIG1fY29kZTsK
KworICAgIEFpcjo6QmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsKKworICAg
IFRtcCBtX2VheDsKKyAgICBUbXAgbV9lY3g7CisgICAgVG1wIG1fZWR4OwogfTsKIAogfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw4IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgewogY2xhc3MgUHJvY2VkdXJlOwogbmFtZXNwYWNlIEFpciB7IGNs
YXNzIENvZGU7IH0KIAotLy8gVGhpcyBsb3dlcnMgdGhlIGN1cnJlbnQgQjMgcHJvY2VkdXJlIHRv
IGFuIEFpciBjb2RlLgorLy8gVGhpcyBsb3dlcnMgdGhlIGN1cnJlbnQgQjMgcHJvY2VkdXJlIHRv
IGFuIEFpciBjb2RlLiBOb3RlIHRoYXQgdGhpcyBhc3N1bWVzIHRoYXQgdGhlIHByb2NlZHVyZSBp
cyBpbgorLy8gcXVpcmtzIG1vZGUsIGJ1dCBpdCBkb2VzIG5vdCBhc3NlcnQgdGhpcywgdG8gc2lt
cGxpZnkgaG93IHdlIHdyaXRlIHRlc3RzLgogCiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGxvd2Vy
VG9BaXIoUHJvY2VkdXJlJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01l
bW9yeVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNN
ZW1vcnlWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMzYgKzI4LDM3IEBA
CiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMu
aCIKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIE1lbW9yeVZhbHVlOjp+TWVt
b3J5VmFsdWUoKQogewogfQogCi1zaXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkg
Y29uc3QKK2Jvb2wgTWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXQoaW50NjRfdCBvZmZzZXQpIGNv
bnN0CiB7Ci0gICAgc3dpdGNoIChvcGNvZGUoKSkgewotICAgIGNhc2UgTG9hZDhaOgotICAgIGNh
c2UgTG9hZDhTOgotICAgIGNhc2UgU3RvcmU4OgotICAgICAgICByZXR1cm4gMTsKLSAgICBjYXNl
IExvYWQxNlo6Ci0gICAgY2FzZSBMb2FkMTZTOgotICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAg
cmV0dXJuIDI7Ci0gICAgY2FzZSBMb2FkOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZSh0eXBl
KCkpOwotICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJldHVybiBzaXplb2ZUeXBlKGNoaWxkKDAp
LT50eXBlKCkpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICByZXR1cm4gQjM6OmlzUmVwcmVz
ZW50YWJsZUFzPGludDMyX3Q+KG9mZnNldCkgJiYgaXNMZWdhbE9mZnNldChzdGF0aWNfY2FzdDxp
bnQzMl90PihvZmZzZXQpKTsKK30KKworVHlwZSBNZW1vcnlWYWx1ZTo6YWNjZXNzVHlwZSgpIGNv
bnN0Cit7CisgICAgaWYgKGlzTG9hZCgpKQorICAgICAgICByZXR1cm4gdHlwZSgpOworICAgIC8v
IFRoaXMgaGFwcGVucyB0byB3b3JrIGZvciBhdG9taWNzLCB0b28uIFRoYXQncyB3aHkgQXRvbWlj
VmFsdWUgZG9lcyBub3QgbmVlZCB0byBvdmVycmlkZSB0aGlzLgorICAgIHJldHVybiBjaGlsZCgw
KS0+dHlwZSgpOwogfQogCi1XaWR0aCBNZW1vcnlWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAor
QmFuayBNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdpZHRo
Rm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJuIGJhbmtGb3JUeXBlKGFjY2Vz
c1R5cGUoKSk7Cit9CisKK3NpemVfdCBNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBieXRlcyhhY2Nlc3NXaWR0aCgpKTsKIH0KIAogdm9pZCBNZW1vcnlW
YWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKQEAgLTY1LDggKzY2LDExIEBAIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJp
bnRlciYKICAgICBpZiAobV9vZmZzZXQpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIm9mZnNl
dCA9ICIsIG1fb2Zmc2V0KTsKICAgICBpZiAoKGlzTG9hZCgpICYmIGVmZmVjdHMoKS5yZWFkcyAh
PSByYW5nZSgpKQotICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVmZmVjdHMoKS53cml0ZXMgIT0g
cmFuZ2UoKSkpCisgICAgICAgIHx8IChpc1N0b3JlKCkgJiYgZWZmZWN0cygpLndyaXRlcyAhPSBy
YW5nZSgpKQorICAgICAgICB8fCBpc0V4b3RpYygpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEs
ICJyYW5nZSA9ICIsIHJhbmdlKCkpOworICAgIGlmIChpc0V4b3RpYygpKQorICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJmZW5jZVJhbmdlID0gIiwgZmVuY2VSYW5nZSgpKTsKIH0KIAogVmFsdWUq
IE1lbW9yeVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdApAQCAtNzQsNiArNzgsNjIgQEAgVmFsdWUq
IE1lbW9yeVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAogICAgIHJldHVybiBuZXcgTWVtb3J5VmFs
dWUoKnRoaXMpOwogfQogCisvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4
WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0Cisv
LyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVl
KEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisgICAg
OiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCisgICAg
LCBtX29mZnNldChvZmZzZXQpCisgICAgLCBtX3JhbmdlKHJhbmdlKQorICAgICwgbV9mZW5jZVJh
bmdlKGZlbmNlUmFuZ2UpCit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAg
c3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2UgTG9hZDoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2FzZSBMb2FkOFM6CisgICAg
ICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgorICAgICAgICAgICAgQVNT
RVJUKHR5cGUgPT0gSW50MzIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3Rv
cmU4OgorICAgICAgICBjYXNlIFN0b3JlMTY6CisgICAgICAgIGNhc2UgU3RvcmU6CisgICAgICAg
ICAgICBBU1NFUlQodHlwZSA9PSBWb2lkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlw
ZSBpcyBpbXBsaWVkLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2lu
IG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2Us
IEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9y
aWdpbiwgcG9pbnRlciwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSkKK3sKKyAgICBpZiAoIUFT
U0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICAg
ICAgY2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQx
Nlo6CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KK01lbW9yeVZhbHVlOjpNZW1v
cnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJh
bmdlKQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1
ZSwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1fcmFuZ2UocmFuZ2Up
CisgICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKK3sKKyAgICBBU1NFUlQoQjM6OmlzU3Rv
cmUoa2luZC5vcGNvZGUoKSkpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2Vu
ZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNN
ZW1vcnlWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01l
bW9yeVZhbHVlLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM01lbW9yeVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyNyArMjcsODYgQEAKIAog
I2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJBaXJBcmcuaCIKKyNpbmNsdWRlICJCM0Jh
bmsuaCIKICNpbmNsdWRlICJCM0hlYXBSYW5nZS5oIgogI2luY2x1ZGUgIkIzVmFsdWUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLS8vIEZJWE1FOiBXZSB3YW50IHRvIGFs
bG93IGZlbmNlZCBtZW1vcnkgYWNjZXNzZXMgb24gQVJNLgotLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0OQotCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBN
ZW1vcnlWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgYWNj
ZXB0cyhLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsK
LSAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgIGNhc2UgTG9hZDhTOgotICAgICAgICBjYXNl
IExvYWQxNlo6Ci0gICAgICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAgY2FzZSBMb2FkOgotICAg
ICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICBjYXNlIFN0
b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBp
c1N0b3JlKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkg
ewotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICBj
YXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMg
Ym9vbCBpc0xvYWQoS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFjY2VwdHMoa2lu
ZCkgJiYgIWlzU3RvcmUoa2luZCk7CisgICAgICAgIHJldHVybiBpc01lbW9yeUFjY2VzcyhraW5k
Lm9wY29kZSgpKTsKICAgICB9CiAKICAgICB+TWVtb3J5VmFsdWUoKTsKIAogICAgIGludDMyX3Qg
b2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICB2b2lkIHNldE9mZnNldChp
bnQzMl90IG9mZnNldCkgeyBtX29mZnNldCA9IG9mZnNldDsgfQorICAgIAorICAgIC8vIFlvdSBk
b24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHVzaW5nIGxlZ2FsIG9mZnNldHMgdW5sZXNzIHlvdSd2
ZSBlbnRlcmVkIHF1aXJrcyBtb2RlLgorICAgIGJvb2wgaXNMZWdhbE9mZnNldChpbnQzMl90IG9m
ZnNldCkgY29uc3Q7CisgICAgYm9vbCBpc0xlZ2FsT2Zmc2V0KGludDY0X3Qgb2Zmc2V0KSBjb25z
dDsKKyAgICAKKyAgICAvLyBBIG5lY2Vzc2FyeSBjb25zZXF1ZW5jZSBvZiBNZW1vcnlWYWx1ZSBo
YXZpbmcgYW4gb2Zmc2V0IGlzIHRoYXQgaXQgcGFydGljaXBhdGVzIGluIGluc3RydWN0aW9uCisg
ICAgLy8gc2VsZWN0aW9uLiBUaGlzIHRlbGxzIHlvdSBpZiB0aGlzIHdpbGwgZ2V0IGxvd2VyZWQg
dG8gc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgYW4gb2Zmc2V0bGVzcworICAgIC8vIGFkZHJlc3Mu
CisgICAgYm9vbCByZXF1aXJlc1NpbXBsZUFkZHIoKSBjb25zdDsKIAogICAgIGNvbnN0IEhlYXBS
YW5nZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CiAgICAgdm9pZCBzZXRSYW5n
ZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fcmFuZ2UgPSByYW5nZTsgfQorICAgIAorICAg
IC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHJhbmdlLgorICAgIGNvbnN0IEhlYXBSYW5nZSYgYWNj
ZXNzUmFuZ2UoKSBjb25zdCB7IHJldHVybiByYW5nZSgpOyB9CisgICAgdm9pZCBzZXRBY2Nlc3NS
YW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IHNldFJhbmdlKHJhbmdlKTsgfQorICAgIAor
ICAgIGNvbnN0IEhlYXBSYW5nZSYgZmVuY2VSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmVuY2VS
YW5nZTsgfQorICAgIHZvaWQgc2V0RmVuY2VSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7
IG1fZmVuY2VSYW5nZSA9IHJhbmdlOyB9CisKKyAgICBib29sIGlzU3RvcmUoKSBjb25zdCB7IHJl
dHVybiBCMzo6aXNTdG9yZShvcGNvZGUoKSk7IH0KKyAgICBib29sIGlzTG9hZCgpIGNvbnN0IHsg
cmV0dXJuIEIzOjppc0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAgICBib29sIGlzU3RvcmUoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gVm9pZDsgfQotICAgIGJvb2wgaXNMb2FkKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpICE9IFZvaWQ7IH0KKyAgICBib29sIGhhc0ZlbmNlKCkgY29uc3QgeyByZXR1
cm4gISFmZW5jZVJhbmdlKCk7IH0KKyAgICBib29sIGlzRXhvdGljKCkgY29uc3QgeyByZXR1cm4g
aGFzRmVuY2UoKSB8fCBpc0F0b21pYyhvcGNvZGUoKSk7IH0KIAorICAgIFR5cGUgYWNjZXNzVHlw
ZSgpIGNvbnN0OworICAgIEJhbmsgYWNjZXNzQmFuaygpIGNvbnN0OwogICAgIHNpemVfdCBhY2Nl
c3NCeXRlU2l6ZSgpIGNvbnN0OworICAgIAogICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3Q7
CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFBy
aW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50
ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmFsdWUqIGNsb25lSW1w
bCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgorICAgIE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgVHlwZSB0eXBl
LCBPcmlnaW4gb3JpZ2luLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFu
Z2UgZmVuY2VSYW5nZSwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBWYWx1ZShD
aGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKKyAgICAgICAg
LCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICAgICAgLCBt
X2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKKyAgICB7CisgICAgfQorICAgIAogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOwotCisgICAgCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBm
b3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0
IGhhdmUgYSBzdWZmaXggdGhhdAogICAgIC8vIGRlc2NyaWJlcyB0aGUgcmV0dXJuZWQgdHlwZSku
Ci0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZh
bHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUoQ2hlY2tl
ZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQotICAgICAgICAsIG1fb2Zmc2V0
KG9mZnNldCkKLSAgICAgICAgLCBtX3JhbmdlKEhlYXBSYW5nZTo6dG9wKCkpCi0gICAgewotICAg
ICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9w
Y29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIExvYWQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIExvYWQ4WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDhTOgotICAg
ICAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAg
ICAgICAgICAgIEFTU0VSVCh0eXBlID09IEludDMyKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAg
ICAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBWb2lk
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9CisgICAgTWVtb3J5VmFsdWUoS2luZCwgVHlwZSwgT3JpZ2luLCBWYWx1ZSogcG9pbnRl
ciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgp
LCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKIAogICAgIC8vIFVzZSB0aGlz
IGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgotICAgIE1l
bW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMy
X3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2lu
LCBwb2ludGVyLCBvZmZzZXQpCi0gICAgewotICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBP
cmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5n
ZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkp
OwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgotICAgIE1lbW9yeVZhbHVlKEtp
bmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50
MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIFZv
aWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQot
ICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSkKLSAgICB7Ci0gICAgICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsK
LSAgICAgICAgICAgIGNhc2UgU3RvcmU4OgotICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAg
ICAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KKyAgICBN
ZW1vcnlWYWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGlu
dDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVh
cFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CisgICAgCiAgICAgaW50MzJfdCBtX29m
ZnNldCB7IDAgfTsKLSAgICBIZWFwUmFuZ2UgbV9yYW5nZTsKKyAgICBIZWFwUmFuZ2UgbV9yYW5n
ZSB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKyAgICBIZWFwUmFuZ2UgbV9mZW5jZVJhbmdlIHsgSGVh
cFJhbmdlKCkgfTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWVJbmxpbmVzLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWVJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkK
KworI2luY2x1ZGUgIkFpckFyZy5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2lubGluZSBib29sIE1lbW9yeVZhbHVlOjpp
c0xlZ2FsT2Zmc2V0KGludDMyX3Qgb2Zmc2V0KSBjb25zdAoreworICAgIC8vIE5PVEU6IFRoaXMg
aXMgaW5saW5lIGJlY2F1c2UgaXQgY29uc3RhbnQtZm9sZHMgdG8gdHJ1ZSBvbiB4ODYhCisgICAg
CisgICAgLy8gU28gZmFyIG9ubHkgWDg2IGFsbG93cyBleG90aWMgbG9hZHMgdG8gaGF2ZSBhbiBv
ZmZzZXQuCisgICAgaWYgKHJlcXVpcmVzU2ltcGxlQWRkcigpKQorICAgICAgICByZXR1cm4gIW9m
ZnNldDsKKyAgICAKKyAgICByZXR1cm4gQWlyOjpBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQs
IGFjY2Vzc1dpZHRoKCkpOworfQorCitpbmxpbmUgYm9vbCBNZW1vcnlWYWx1ZTo6cmVxdWlyZXNT
aW1wbGVBZGRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlzWDg2KCkgJiYgaXNFeG90aWMoKTsK
K30KKworaW5saW5lIFdpZHRoIE1lbW9yeVZhbHVlOjphY2Nlc3NXaWR0aCgpIGNvbnN0Cit7Cisg
ICAgc3dpdGNoIChvcGNvZGUoKSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9hZDhT
OgorICAgIGNhc2UgU3RvcmU4OgorICAgICAgICByZXR1cm4gV2lkdGg4OworICAgIGNhc2UgTG9h
ZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBTdG9yZTE2OgorICAgICAgICByZXR1
cm4gV2lkdGgxNjsKKyAgICBjYXNlIExvYWQ6CisgICAgICAgIHJldHVybiB3aWR0aEZvclR5cGUo
dHlwZSgpKTsKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gd2lkdGhGb3JUeXBlKGNo
aWxkKDApLT50eXBlKCkpOworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21p
Y1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hn
QW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAg
ICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1
cm4gYXM8QXRvbWljVmFsdWU+KCktPmFjY2Vzc1dpZHRoKCk7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFdpZHRoODsK
KyAgICB9Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxF
KEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0
YW50cy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M01vdmVDb25zdGFudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5j
bHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgog
I2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgotI2luY2x1ZGUgIkIzTWVtb3J5VmFs
dWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzUGhh
c2VTY29wZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIz
VmFsdWVJbmxpbmVzLmgiCkBAIC0yMDMsMTIgKzIwMyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUG9pbnRlci0+aGFzSW50UHRyKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnRwdHJfdCBvZmZzZXQgPSBkZXNpcmVkT2Zmc2V0KGNhbmRpZGF0ZVBvaW50ZXIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUIzOjppc1JlcHJlc2VudGFibGVB
czxpbnQzMl90PihzdGF0aWNfY2FzdDxpbnQ2NF90PihvZmZzZXQpKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEFpcjo6QXJnOjppc1ZhbGlkQWRkckZvcm0oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhGb3JCeXRlcyhtZW1vcnlW
YWx1ZS0+YWNjZXNzQnl0ZVNpemUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IG9mZnNldCA9IGRlc2lyZWRPZmZzZXQoY2FuZGlkYXRlUG9pbnRlcik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcnlWYWx1ZS0+aXNMZWdhbE9m
ZnNldChvZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmVzdFBvaW50ZXIp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM05hdGl2ZVRyYWl0cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM05hdGl2ZVRyYWl0cy5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM05hdGl2ZVRyYWl0cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIzX0pJVCkK
KworI2luY2x1ZGUgIkIzQmFuay5oIgorI2luY2x1ZGUgIkIzVHlwZS5oIgorI2luY2x1ZGUgIkIz
V2lkdGguaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK3RlbXBsYXRlPHR5
cGVuYW1lPiBzdHJ1Y3QgTmF0aXZlVHJhaXRzOworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVU
cmFpdHM8aW50OF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0
YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoODsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0
eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDhf
dD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3Qg
V2lkdGggd2lkdGggPSBXaWR0aDg7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMy
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGludDE2X3Q+IHsKKyAgICBz
dGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRo
ID0gV2lkdGgxNjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDE2X3Q+IHsKKyAgICBzdGF0aWMgY29u
c3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgx
NjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50MzJfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJh
bmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDMyOworICAgIHN0
YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5h
dGl2ZVRyYWl0czx1aW50MzJfdD4geworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsK
KyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDMyOworICAgIHN0YXRpYyBjb25z
dCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0
czxpbnQ2NF90PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRp
YyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoNjQ7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlw
ZSA9IEludDY0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQ2NF90
PiB7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBX
aWR0aCB3aWR0aCA9IFdpZHRoNjQ7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDY0
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGZsb2F0PiB7CisgICAgc3Rh
dGljIGNvbnN0IEJhbmsgYmFuayA9IEZQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9
IFdpZHRoMzI7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEZsb2F0OworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGRvdWJsZT4geworICAgIHN0YXRpYyBjb25zdCBC
YW5rIGJhbmsgPSBGUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDY0Owor
ICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBEb3VibGU7Cit9OworCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY4LDYgKzY4
LDIzIEBAIHN0ZDo6b3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRlZENvbXBhcmUoT3AKICAgICB9CiB9
CiAKK09wY29kZSBzdG9yZU9wY29kZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKQoreworICAgIHN3
aXRjaCAoYmFuaykgeworICAgIGNhc2UgR1A6CisgICAgICAgIHN3aXRjaCAod2lkdGgpIHsKKyAg
ICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICByZXR1cm4gU3RvcmU4OworICAgICAgICBj
YXNlIFdpZHRoMTY6CisgICAgICAgICAgICByZXR1cm4gU3RvcmUxNjsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBTdG9yZTsKKyAgICAgICAgfQorICAgIGNhc2UgRlA6Cisg
ICAgICAgIHJldHVybiBTdG9yZTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
MwogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTI2Myw2ICsyODAsMzMgQEAgdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIE9wYwogICAgIGNhc2UgU3RvcmU6CiAgICAgICAgIG91dC5w
cmludCgiU3RvcmUiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoK
KyAgICAgICAgb3V0LnByaW50KCJBdG9taWNXZWFrQ0FTIik7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNTdHJvbmdD
QVMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAg
b3V0LnByaW50KCJBdG9taWNYY2hnQWRkIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0
b21pY1hjaGdBbmQ6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ0FuZCIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgIG91dC5wcmludCgiQXRv
bWljWGNoZ09yIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6Cisg
ICAgICAgIG91dC5wcmludCgiQXRvbWljWGNoZ1N1YiIpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdYb3IiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgb3V0LnByaW50
KCJBdG9taWNYY2hnIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIERlcGVuZDoKKyAgICAg
ICAgb3V0LnByaW50KCJEZXBlbmQiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgV2FzbUFk
ZHJlc3M6CiAgICAgICAgIG91dC5wcmludCgiV2FzbUFkZHJlc3MiKTsKICAgICAgICAgcmV0dXJu
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHJldmlzaW9uIDIxMzQyNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJCM1R5cGUu
aCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC04Miw3ICs4Myw2IEBAIGVudW0gT3Bjb2Rl
IDogaW50MTZfdCB7CiAgICAgTW9kLCAvLyBBbGwgYmV0cyBhcmUgb2ZmIGFzIHRvIHdoYXQgd2ls
bCBoYXBwZW4gd2hlbiB5b3UgZXhlY3V0ZSB0aGlzIGZvciAtMl4zMSUtMSBhbmQgeCUwLgogICAg
IFVNb2QsCiAKLQogICAgIC8vIFBvbHltb3JwaGljIG5lZ2F0aW9uLiBOb3RlIHRoYXQgd2Ugb25s
eSBuZWVkIHRoaXMgZm9yIGZsb2F0aW5nIHBvaW50LCBzaW5jZSBpbnRlZ2VyIG5lZ2F0aW9uCiAg
ICAgLy8gaXMgZXhhY3RseSBsaWtlIFN1YigwLCB4KS4gQnV0IHRoYXQncyBub3QgdHJ1ZSBmb3Ig
ZmxvYXRpbmcgcG9pbnQuIFN1YigwLCAwKSBpcyAwLCB3aGlsZQogICAgIC8vIE5lZygwKSBpcyAt
MC4gQWxzbywgd2UgY2Fub25pY2FsaXplIFN1YigwLCB4KSBpbnRvIE5lZyh4KSBpbiBjYXNlIG9m
IGludGVnZXJzLgpAQCAtMTYyLDYgKzE2MiwxMDcgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsK
ICAgICBTdG9yZTE2LAogICAgIC8vIFRoaXMgaXMgYSBwb2x5bW9ycGhpYyBzdG9yZSBmb3IgSW50
MzIsIEludDY0LCBGbG9hdCwgYW5kIERvdWJsZS4KICAgICBTdG9yZSwKKyAgICAKKyAgICAvLyBB
dG9taWMgY29tcGFyZSBhbmQgc3dhcCB0aGF0IHJldHVybnMgYSBib29sZWFuLiBNYXkgY2hvb3Nl
IHRvIGRvIG5vdGhpbmcgYW5kIHJldHVybiBmYWxzZS4gWW91IGNhbgorICAgIC8vIHVzdWFsbHkg
YXNzdW1lIHRoYXQgdGhpcyBpcyBmYXN0ZXIgYW5kIHJlc3VsdHMgaW4gbGVzcyBjb2RlIHRoYW4g
QXRvbWljU3Ryb25nQ0FTLCB0aG91Z2ggdGhhdCdzCisgICAgLy8gbm90IG5lY2Vzc2FyaWx5IHRy
dWUgb24gSW50ZWwsIGlmIGluc3RydWN0aW9uIHNlbGVjdGlvbiBkb2VzIGl0cyBqb2IuIEltYWdp
bmUgdGhhdCB0aGlzIG9wY29kZSBpcworICAgIC8vIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNh
bGx5OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBib29sIEF0
b21pY1dlYWtDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVlLCBUKiBwdHIpCisgICAgLy8g
eworICAgIC8vICAgICBpZiAoIXJhbmQoKSkKKyAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsg
Ly8gUmVhbCB3b3JsZCBleGFtcGxlIG9mIHRoaXM6IGNvbnRleHQgc3dpdGNoIG9uIEFSTSB3aGls
ZSBkb2luZyBDQVMuCisgICAgLy8gICAgIGlmICgqcHRyICE9IGV4cGVjdGVkVmFsdWUpCisgICAg
Ly8gICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAg
ICAvLyAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gfQorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0
IGFsbCBhdG9taWNzIHB1dCB0aGUgcG9pbnRlciBsYXN0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBo
b3cgbG9hZHMgYW5kIHN0b3JlcyB3b3JrLiBUaGlzCisgICAgLy8gaXMgYSBnb29meSB0cmFkaXRp
b24sIGJ1dCBpdCdzIGhhcm1sZXNzLCBhbmQgYmV0dGVyIHRoYW4gYmVpbmcgaW5jb25zaXN0ZW50
LgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHdlYWsgQ0FTIGhhcyBubyBmZW5jaW5nIGd1YXJh
bnRlZXMgd2hlbiBpdCBmYWlscy4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcKKyAgICAv
LyB0cmFuc2Zvcm1hdGlvbiBpcyBhbHdheXMgdmFsaWQ6CisgICAgLy8KKyAgICAvLyBCZWZvcmU6
CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FTKGV4cGVjdGVkLCBu
ZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3VjY2VzcywgRWxzZToj
ZmFpbAorICAgIC8vCisgICAgLy8gQWZ0ZXI6CisgICAgLy8KKyAgICAvLyAgICAgICAgIEJyYW5j
aChFcXVhbChMb2FkKHB0ciksIGV4cGVjdGVkKSkKKyAgICAvLyAgICAgICBTdWNjZXNzb3JzOiBU
aGVuOiNhdHRlbXB0LCBFbHNlOiNmYWlsCisgICAgLy8gICAgIEJCI2F0dGVtcHQ6CisgICAgLy8g
ICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwgbmV3LCBwdHIpKQorICAgIC8v
ICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6I2ZhaWwKKyAgICAvLworICAg
IC8vIEJvdGgga2luZHMgb2YgQ0FTIGZvciBub24tY2Fub25pY2FsIHdpZHRocyAoV2lkdGg4IGFu
ZCBXaWR0aDE2KSBpZ25vcmUgdGhlIGlycmVsZXZhbnQgYml0cyBvZiB0aGUKKyAgICAvLyBpbnB1
dC4KKyAgICBBdG9taWNXZWFrQ0FTLAorICAgIAorICAgIC8vIEF0b21pYyBjb21wYXJlIGFuZCBz
d2FwIHRoYXQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBEb2VzIG5vdCBoYXZlIHRoZSBub25kZXRl
cm1pbmlzbSBvZiBXZWFrQ0FTLgorICAgIC8vIFRoaXMgaXMgYSBiaXQgbW9yZSBjb2RlIGFuZCBh
IGJpdCBzbG93ZXIgaW4gc29tZSBjYXNlcywgdGhvdWdoIG5vdCBieSBhIGxvdC4gSW1hZ2luZSB0
aGF0IHRoaXMKKyAgICAvLyBvcGNvZGUgaXMgYXMgaWYgeW91IGRpZCB0aGlzIGF0b21pY2FsbHk6
CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIC8vIFQgQXRvbWljU3Ry
b25nQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQorICAgIC8vIHsKKyAg
ICAvLyAgICAgVCBvbGRWYWx1ZSA9ICpwdHI7CisgICAgLy8gICAgIGlmIChvbGRWYWx1ZSA9PSBl
eHBlY3RlZFZhbHVlKQorICAgIC8vICAgICAgICAgKnB0ciA9IG5ld1ZhbHVlOworICAgIC8vICAg
ICByZXR1cm4gb2xkVmFsdWUKKyAgICAvLyB9CisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgQXRv
bWljV2Vha0NBUyBhbmQgQXRvbWljU3Ryb25nQ0FTIHNvcnQgb2YgaGF2ZSB0aGlzIGtpbmQgb2Yg
ZXF1aXZhbGVuY2U6CisgICAgLy8KKyAgICAvLyBBdG9taWNXZWFrQ0FTKEBleHAsIEBuZXcsIEBw
dHIpID09IEVxdWFsKEF0b21pY1N0cm9uZ0NBUyhAZXhwLCBAbmV3LCBAcHRyKSwgQGV4cCkKKyAg
ICAvLworICAgIC8vIEFzc3VtaW5nIHRoYXQgdGhlIFdlYWtDQVMgZG9lcyBub3Qgc3B1cmlvdXNs
eSBmYWlsLCBvZiBjb3Vyc2UuCisgICAgQXRvbWljU3Ryb25nQ0FTLAorICAgIAorICAgIC8vIEF0
b21pY2FsbHkgX19fIGEgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm4gdGhlIG9sZCB2YWx1ZS4g
U3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWljWGNoZ19fXyhAb3BlcmFu
ZCwgQHB0cikKKyAgICAvLworICAgIC8vIEZvciBub24tY2Fub25pY2FsIHdpZHRocyAoV2lkdGg4
IGFuZCBXaWR0aDE2KSwgdGhlc2UgcmV0dXJuIHNpZ24tZXh0ZW5kZWQgcmVzdWx0cyBhbmQgaWdu
b3JlIHRoZQorICAgIC8vIGlycmVsZXZhbnQgYml0cyBvZiB0aGVpciBpbnB1dHMuCisgICAgQXRv
bWljWGNoZ0FkZCwKKyAgICBBdG9taWNYY2hnQW5kLAorICAgIEF0b21pY1hjaGdPciwKKyAgICBB
dG9taWNYY2hnU3ViLAorICAgIEF0b21pY1hjaGdYb3IsCisgICAgCisgICAgLy8gRklYTUU6IE1h
eWJlIHdlIHNob3VsZCBoYXZlIEF0b21pY1hjaGdOZWcgYW5kIEF0b21pY1hjaGdOb3QuCisgICAg
CisgICAgLy8gQXRvbWljYWxseSBleGNoYW5nZSBhIHZhbHVlIHdpdGggYSBtZW1vcnkgbG9jYXRp
b24uIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1ZSA9IEF0b21pY1hjaGcoQG5ld1Zh
bHVlLCBAcHRyKQorICAgIEF0b21pY1hjaGcsCisgICAgCisgICAgLy8gSW50cm9kdWNlIGFuIGlu
dmlzaWJsZSBkZXBlbmRlbmN5IGZvciBibG9ja2luZyBtb3Rpb24gb2YgbG9hZHMgd2l0aCByZXNw
ZWN0IHRvIGVhY2ggb3RoZXIuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEByZXN1bHQgPSBEZXBl
bmQoQHBoYW50b20pCisgICAgLy8KKyAgICAvLyBUaGlzIGlzIGV2ZW50dWFsbHkgY29kZWdlbmVy
YXRlZCB0byBoYXZlIGxvY2FsIHNlbWFudGljcyBhcyBpZiB3ZSBkaWQ6CisgICAgLy8KKyAgICAv
LyBAcmVzdWx0ID0gJDAKKyAgICAvLworICAgIC8vIEJ1dCBpdCBlbnN1cmVzIHRoYXQgdGhlIHVz
ZXJzIG9mIEByZXN1bHQgY2Fubm90IGV4ZWN1dGUgdW50aWwgQHBoYW50b20gaXMgY29tcHV0ZWQu
CisgICAgLy8KKyAgICAvLyBUaGUgY29tcGlsZXIgaXMgbm90IGFsbG93ZWQgdG8gcmVhc29uIGFi
b3V0IHRoZSBmYWN0IHRoYXQgRGVwZW5kIGNvZGVnZW5lcmF0ZXMgdGhpcyB3YXkuIEFueSBraW5k
CisgICAgLy8gb2YgdHJhbnNmb3JtYXRpb24gb3IgYW5hbHlzaXMgdGhhdCByZWxpZXMgb24gdGhl
IGluc2lnaHQgdGhhdCBEZXBlbmQgaXMgcmVhbGx5IHplcm8gaXMgdW5zb3VuZCwKKyAgICAvLyBi
ZWNhdXNlIGl0IHVubG9ja3MgcmVvcmRlcmluZyBvZiB1c2VycyBvZiBAcmVzdWx0IGFuZCBAcGhh
bnRvbS4KKyAgICAvLworICAgIC8vIE9uIFg4NiwgdGhpcyBpcyBsb3dlcmVkIHRvIGEgbG9hZC1s
b2FkIGZlbmNlIGFuZCBAcmVzdWx0IHVzZXMgQHBoYW50b20gZGlyZWN0bHkuCisgICAgLy8KKyAg
ICAvLyBPbiBBUk0sIHRoaXMgaXMgbG93ZXJlZCBhcyBpZiBsaWtlOgorICAgIC8vCisgICAgLy8g
QHJlc3VsdCA9IEJpdFhvcihAcGhhbnRvbSwgQHBoYW50b20pCisgICAgLy8KKyAgICAvLyBFeGNl
cHQgdGhhdCB0aGUgY29tcGlsZXIgbmV2ZXIgZ2V0cyBhbiBvcHBvcnR1bml0eSB0byBzaW1wbGlm
eSBvdXQgdGhlIEJpdFhvci4KKyAgICBEZXBlbmQsCiAKICAgICAvLyBUaGlzIGlzIHVzZWQgdG8g
Y29tcHV0ZSB0aGUgYWN0dWFsIGFkZHJlc3Mgb2YgYSBXYXNtIG1lbW9yeSBvcGVyYXRpb24uIEl0
IHRha2VzIGFuIEludFB0cgogICAgIC8vIGFuZCBhIHBpbm5lZCByZWdpc3RlciB0aGVuIGNvbXB1
dGVzIHRoZSBhcHByb3ByaWF0ZSBJbnRQdHIgYWRkcmVzcy4gRm9yIHRoZSB1c2UtY2FzZSBvZgpA
QCAtMzAxLDYgKzQwMiwxMTIgQEAgaW5saW5lIGJvb2wgaXNEZWZpbml0ZWx5VGVybWluYWwoT3Bj
b2RlIAogICAgIH0KIH0KIAoraW5saW5lIGJvb2wgaXNMb2FkKE9wY29kZSBvcGNvZGUpCit7Cisg
ICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoK
KyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNTdG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3
aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBTdG9yZTg6CisgICAgY2FzZSBTdG9yZTE2OgorICAg
IGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzTG9hZFN0b3JlKE9wY29k
ZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAg
ICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2FzZSBMb2FkMTZTOgorICAg
IGNhc2UgTG9hZDoKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNlIFN0b3JlMTY6CisgICAgY2Fz
ZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNBdG9taWMoT3Bjb2RlIG9wY29k
ZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAg
ICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2Fz
ZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWlj
WGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY0NBUyhPcGNvZGUgb3Bjb2RlKQorewor
ICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2Ug
QXRvbWljU3Ryb25nQ0FTOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1hjaGco
T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWlj
WGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6
CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBj
YXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzTWVtb3J5QWNjZXNz
KE9wY29kZSBvcGNvZGUpCit7CisgICAgcmV0dXJuIGlzQXRvbWljKG9wY29kZSkgfHwgaXNMb2Fk
U3RvcmUob3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZSBzaWduRXh0ZW5kT3Bjb2RlKFdpZHRo
IHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICAg
ICAgcmV0dXJuIFNFeHQ4OworICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgcmV0dXJuIFNFeHQx
NjsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gT29wczsKKyAgICB9Cit9CisKK0pTX0VYUE9SVF9QUklWQVRFIE9wY29k
ZSBzdG9yZU9wY29kZShCYW5rIGJhbmssIFdpZHRoIHdpZHRoKTsKKwogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUHJvY2VkdXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDgg
QEAgdm9pZCBQcm9jZWR1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgYwogICAgICAgICB9CiAg
ICAgICAgIGRhdGFMb2coIiAgICAiLCBkZWVwRHVtcCgqdGhpcywgdmFsdWUpLCAiXG4iKTsKICAg
ICB9CisgICAgaWYgKGhhc1F1aXJrcygpKQorICAgICAgICBvdXQucHJpbnQoIkhhcyBRdWlya3M6
IFRydWVcbiIpOwogICAgIGlmICh2YXJpYWJsZXMoKS5zaXplKCkpIHsKICAgICAgICAgb3V0LnBy
aW50KCJWYXJpYWJsZXM6XG4iKTsKICAgICAgICAgZm9yIChWYXJpYWJsZSogdmFyaWFibGUgOiB2
YXJpYWJsZXMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCShy
ZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgVmFsdWUq
IGFkZEludENvbnN0YW50KE9yaWdpbiwgVHlwZSwgaW50NjRfdCB2YWx1ZSk7CiAgICAgVmFsdWUq
IGFkZEludENvbnN0YW50KFZhbHVlKiwgaW50NjRfdCB2YWx1ZSk7CiAKKyAgICAvLyBZb3UncmUg
Z3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIFZhbHVlKiBhZGRCb3R0b20oT3Jp
Z2luLCBUeXBlKTsKICAgICBWYWx1ZSogYWRkQm90dG9tKFZhbHVlKik7CiAKQEAgLTE5NSw2ICsx
OTYsMTcgQEAgcHVibGljOgogICAgIC8vIGFsaXZlLiBHcmVhdCBmb3IgY29tcGlsZXItZ2VuZXJh
dGVkIGRhdGEgc2VjdGlvbnMsIGxpa2Ugc3dpdGNoIGp1bXAgdGFibGVzIGFuZCBjb25zdGFudCBw
b29scy4KICAgICAvLyBUaGlzIHJldHVybnMgbWVtb3J5IHRoYXQgaGFzIGJlZW4gemVyby1pbml0
aWFsaXplZC4KICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhZGREYXRhU2VjdGlvbihzaXpl
X3QpOworICAgIAorICAgIC8vIFNvbWUgb3BlcmF0aW9ucyBhcmUgc3BlY2lmaWVkIGluIEIzIElS
IHRvIGJlaGF2ZSBvbmUgd2F5IGJ1dCBvbiB0aGlzIGdpdmVuIENQVSB0aGV5IGJlaGF2ZSBhCisg
ICAgLy8gZGlmZmVyZW50IHdheS4gV2hlbiB0cnVlLCB0aG9zZSBCMyBJUiBvcHMgc3dpdGNoIHRv
IGJlaGF2aW5nIHRoZSBDUFUgd2F5LCBhbmQgdGhlIG9wdGltaXplciBtYXkKKyAgICAvLyBzdGFy
dCB0YWtpbmcgYWR2YW50YWdlIG9mIGl0LgorICAgIC8vCisgICAgLy8gT25lIHdheSB0byB0aGlu
ayBvZiBpdCBpcyBsaWtlIHRoaXMuIEltYWdpbmUgdGhhdCB5b3UgZmluZCB0aGF0IHRoZSBjbGVh
bmVzdCB3YXkgb2YgbG93ZXJpbmcKKyAgICAvLyBzb21ldGhpbmcgaW4gbG93ZXJNYWNyb3MgaXMg
dG8gdW5jb25kaXRpb25hbGx5IHJlcGxhY2Ugb25lIG9wY29kZSB3aXRoIGFub3RoZXIuIFRoaXMg
aXMgYSBzaG9ydGN1dAorICAgIC8vIHdoZXJlIHlvdSBpbnN0ZWFkIGtlZXAgdGhlIHNhbWUgb3Bj
b2RlLCBidXQgcmVseSBvbiB0aGUgb3Bjb2RlJ3MgbWVhbmluZyBjaGFuZ2VzIG9uY2UgbG93ZXJN
YWNyb3MKKyAgICAvLyBzZXRzIGhhc1F1aXJrcy4KKyAgICBib29sIGhhc1F1aXJrcygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzUXVpcmtzOyB9CisgICAgdm9pZCBzZXRIYXNRdWlya3MoYm9vbCB2YWx1
ZSkgeyBtX2hhc1F1aXJrcyA9IHZhbHVlOyB9CiAKICAgICBPcGFxdWVCeXByb2R1Y3RzJiBieXBy
b2R1Y3RzKCkgeyByZXR1cm4gKm1fYnlwcm9kdWN0czsgfQogCkBAIC0yNTIsNiArMjY0LDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFByaW50U3RyZWFtJiwgT3JpZ2lu
KT4+IG1fb3JpZ2luUHJpbnRlcjsKICAgICBjb25zdCB2b2lkKiBtX2Zyb250ZW5kRGF0YTsKICAg
ICBQQ1RvT3JpZ2luTWFwIG1fcGNUb09yaWdpbk1hcDsKKyAgICBib29sIG1faGFzUXVpcmtzIHsg
ZmFsc2UgfTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCisjaW5j
bHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZS5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsKQEAgLTg5LDYgKzkwLDIzIEBAIGJvb2wgUHVyZUNTRTo6cHJv
Y2VzcyhWYWx1ZSogdmFsdWUsIERvbWkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgcHVy
ZUNTRShQcm9jZWR1cmUmIHByb2MpCit7CisgICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHByb2Ms
ICJwdXJlQ1NFIik7CisgICAgCisgICAgRG9taW5hdG9ycyYgZG9taW5hdG9ycyA9IHByb2MuZG9t
aW5hdG9ycygpOworICAgIFB1cmVDU0UgcHVyZUNTRTsKKyAgICBib29sIHJlc3VsdCA9IGZhbHNl
OworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBwcm9jLmJsb2Nrc0luUHJlT3JkZXIoKSkg
eworICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9jaykgeworICAgICAgICAgICAgcmVz
dWx0IHw9IHZhbHVlLT5wZXJmb3JtU3Vic3RpdHV0aW9uKCk7CisgICAgICAgICAgICByZXN1bHQg
fD0gcHVyZUNTRS5wcm9jZXNzKHZhbHVlLCBkb21pbmF0b3JzKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
IAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQdXJlQ1NFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHVyZUNTRS5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQdXJlQ1NFLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDggQEAgcHJpdmF0ZToKICAg
ICBIYXNoTWFwPFZhbHVlS2V5LCBNYXRjaGVzPiBtX21hcDsKIH07CiAKK2Jvb2wgcHVyZUNTRShQ
cm9jZWR1cmUmKTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFC
TEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5n
dGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0
cmVuZ3RoLmNwcAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUmVkdWNlU3RyZW5ndGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTIgKzI4LDEzIEBA
CiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9u
U2V0LmgiCiAjaW5jbHVkZSAiQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oIgogI2luY2x1ZGUgIkIz
RG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgotI2luY2x1
ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkIzUGhpQ2hpbGRyZW4uaCIKICNp
bmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBicmVhazsKLQorICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgTmVnOgogICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBOZWcoY29uc3RhbnQp
CiAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IC1jb25zdGFudApAQCAtMTI5NSw2ICsxMjk2LDE2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFtX3Byb2Mu
aGFzUXVpcmtzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNFeHQ4KEF0b21p
Y1hjaGdfX18pCisgICAgICAgICAgICAgICAgLy8gSW50byB0aGlzOiBBdG9taWNYY2hnX19fCisg
ICAgICAgICAgICAgICAgaWYgKGlzQXRvbWljWGNoZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2Rl
KCkpCisgICAgICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNW
YWx1ZT4oKS0+YWNjZXNzV2lkdGgoKSA9PSBXaWR0aDgpIHsKKyAgICAgICAgICAgICAgICAgICAg
cmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGNhc2UgU0V4dDE2OgpAQCAtMTM0Myw2ICsxMzU0LDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFtX3Byb2MuaGFzUXVpcmtzKCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNFeHQxNihBdG9taWNYY2hnX19fKQorICAgICAg
ICAgICAgICAgIC8vIEludG8gdGhpczogQXRvbWljWGNoZ19fXworICAgICAgICAgICAgICAgIGlm
IChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAg
ICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFsdWU+KCktPmFjY2Vzc1dp
ZHRoKCkgPT0gV2lkdGgxNikgeworICAgICAgICAgICAgICAgICAgICByZXBsYWNlV2l0aElkZW50
aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBTRXh0MzI6CkBAIC0yMTAxLDIyICsyMTIyLDI1IEBAIHByaXZhdGU6CiAgICAgICAg
IEFTU0VSVChtX3ZhbHVlLT5udW1DaGlsZHJlbigpID49IDIpOwogICAgICAgICAKICAgICAgICAg
Ly8gTGVhdmUgaXQgYWxvbmUgaWYgdGhlIHJpZ2h0IGNoaWxkIGlzIGEgY29uc3RhbnQuCi0gICAg
ICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNDb25zdGFudCgpKQorICAgICAgICBpZiAobV92
YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQoKQorICAgICAgICAgICAgfHwgbV92YWx1ZS0+Y2hp
bGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUykKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNDb25zdGFudCgpKSB7
CisgICAgICAgIGF1dG8gc3dhcCA9IFsmXSAoKSB7CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV92
YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQorICAgICAgICB9Owor
ICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pc0NvbnN0YW50KCkpCisg
ICAgICAgICAgICByZXR1cm4gc3dhcCgpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUt
PmNoaWxkKDEpLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMpCisgICAgICAgICAgICByZXR1
cm4gc3dhcCgpOworICAgICAgICAKICAgICAgICAgLy8gU29ydCB0aGUgb3BlcmFuZHMuIFRoaXMg
aXMgYW4gaW1wb3J0YW50IGNhbm9uaWNhbGl6YXRpb24uIFdlIHVzZSB0aGUgaW5kZXggaW5zdGVh
ZCBvZgogICAgICAgICAvLyB0aGUgYWRkcmVzcyB0byBtYWtlIHRoaXMgYXQgbGVhc3Qgc2xpZ2h0
bHkgZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pbmRleCgp
ID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4KCkpIHsKLSAgICAgICAgICAgIHN0ZDo6c3dhcCht
X3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAgICAgICAgbV9jaGFu
Z2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBpZiAo
bV92YWx1ZS0+Y2hpbGQoMCktPmluZGV4KCkgPiBtX3ZhbHVlLT5jaGlsZCgxKS0+aW5kZXgoKSkK
KyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIHJlYWxseSBiZSBhIGZvcndhcmQgYW5hbHlzaXMuIEluc3RlYWQsIHdlIHVzZXMgYSBi
b3VuZGVkLXNlYXJjaCBiYWNrd2FyZHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNs
dWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgog
I2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKQEAg
LTM0Niw2ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
Pm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50
MzIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1
ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIExvYWQ6CkBAIC0zNTMsNiArMzU1LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigp
ID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
PmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpICE9IFZvaWQsICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAg
ICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFN0b3JlODoKQEAgLTM2Miw2ICszNjUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gSW50MzIs
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxk
KDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAg
dmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFN0b3JlOgpAQCAtMzY5LDggKzM3Myw0OSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFs
dWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9
PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNr
QWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
QXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5p
c0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHZhbHVlLT5j
aGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKGlzSW50KHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMiktPnR5cGUoKSA9PSBwb2ludGVy
VHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWlj
KHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4o
KSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSkt
PnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShpc0lu
dCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+Y2hpbGQoMiktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAg
ICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICAgICAgICAgIGNhc2UgQXRv
bWljWGNoZ0FuZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAg
Y2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAg
ICAgICAgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1
ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50
eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQo
dmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIERlcGVuZDoKKyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFs
dWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxk
KDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
aXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdhc21BZGRyZXNzOgogICAgICAgICAgICAgICAgIFZB
TElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQg
IiwgKnZhbHVlKSk7CkBAIC01MzcsNiArNTgyLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRlRmVuY2UoVmFs
dWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5h
czxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkKKyAgICAg
ICAgICAgIFZBTElEQVRFKG1lbW9yeS0+YWNjZXNzQmFuaygpID09IEdQLCAoIkZlbmNlIGF0ICIs
ICptZW1vcnkpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB2YWxpZGF0ZUF0b21pYyhWYWx1ZSog
dmFsdWUpCisgICAgeworICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gdmFsdWUtPmFzPEF0
b21pY1ZhbHVlPigpOworICAgICAgICAKKyAgICAgICAgVkFMSURBVEUoYmVzdFR5cGUoR1AsIGF0
b21pYy0+YWNjZXNzV2lkdGgoKSkgPT0gYXRvbWljLT5hY2Nlc3NUeXBlKCksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgfQogCiAgICAgdm9pZCB2YWxpZGF0ZVN0YWNrQWNjZXNzKFZhbHVlKiB2YWx1
ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCShyZXZpc2lv
biAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1
ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNp
bmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCb3R0b21Qcm92aWRl
ci5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpAQCAtNTEwLDYgKzUxMSw3IEBAIGJvb2wg
VmFsdWU6OnJldHVybnNCb29sKCkgY29uc3QKICAgICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgY2Fz
ZSBCZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKKyAgICBjYXNlIEF0b21p
Y1dlYWtDQVM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgUGhpOgogICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBzdG9yeSBoZXJlLgpAQCAtNTg5LDYgKzU5MSw3IEBA
IEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAg
ICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAgICAgY2FzZSBTZWxlY3Q6CisgICAgY2FzZSBEZXBl
bmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTYw
MCwxNiArNjAzLDQ0IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2Ug
TG9hZDhTOgogICAgIGNhc2UgTG9hZDE2WjoKICAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBM
b2FkOgotICAgICAgICByZXN1bHQucmVhZHMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsK
KyAgICBjYXNlIExvYWQ6IHsKKyAgICAgICAgY29uc3QgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFz
PE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCk7
CisgICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC53
cml0ZXMgPSBtZW1vcnktPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9
IHRydWU7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVl
OwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBTdG9yZTg6CiAgICAgY2FzZSBTdG9y
ZTE2OgotICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJlc3VsdC53cml0ZXMgPSBhczxNZW1vcnlW
YWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIFN0b3JlOiB7CisgICAgICAgIGNvbnN0IE1lbW9y
eVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LndyaXRl
cyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgewor
ICAgICAgICAgICAgcmVzdWx0LnJlYWRzID0gbWVtb3J5LT5mZW5jZVJhbmdlKCk7CisgICAgICAg
ICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC5jb250
cm9sRGVwZW5kZW50ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQXRv
bWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hj
aGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgor
ICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2Fz
ZSBBdG9taWNYY2hnOiB7CisgICAgICAgIGNvbnN0IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhczxB
dG9taWNWYWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LnJlYWRzID0gYXRvbWljLT5yYW5nZSgpIHwg
YXRvbWljLT5mZW5jZVJhbmdlKCk7CisgICAgICAgIHJlc3VsdC53cml0ZXMgPSBhdG9taWMtPnJh
bmdlKCkgfCBhdG9taWMtPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgaWYgKGF0b21pYy0+aGFzRmVu
Y2UoKSkKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5j
b250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ug
V2FzbUFkZHJlc3M6CiAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAg
IGJyZWFrOwpAQCAtNjE3LDE4ICs2NDgsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29u
c3QKICAgICAgICAgY29uc3QgRmVuY2VWYWx1ZSogZmVuY2UgPSBhczxGZW5jZVZhbHVlPigpOwog
ICAgICAgICByZXN1bHQucmVhZHMgPSBmZW5jZS0+cmVhZDsKICAgICAgICAgcmVzdWx0LndyaXRl
cyA9IGZlbmNlLT53cml0ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIFByZXZlbnQga2lsbGluZyBv
ZiBmZW5jZXMgdGhhdCBjbGFpbSBub3QgdG8gd3JpdGUgYW55dGhpbmcuIEl0J3MgYSBiaXQgd2Vp
cmQgdGhhdCB3ZSB1c2UKLSAgICAgICAgLy8gbG9jYWwgc3RhdGUgYXMgdGhlIHdheSB0byBkbyB0
aGlzLCBidXQgaXQgaGFwcGVucyB0byB3b3JrOiB3ZSBtdXN0IGFzc3VtZSB0aGF0IHdlIGNhbm5v
dAotICAgICAgICAvLyBraWxsIHdyaXRlc0xvY2FsU3RhdGUgdW5sZXNzIHdlIHVuZGVyc3RhbmRz
IGV4YWN0bHkgd2hhdCB0aGUgaW5zdHJ1Y3Rpb24gaXMgZG9pbmcgKGxpa2UKLSAgICAgICAgLy8g
dGhlIHdheSB0aGF0IGZpeFNTQSB1bmRlcnN0YW5kcyBTZXQvR2V0IGFuZCB0aGUgd2F5IHRoYXQg
cmVkdWNlU3RyZW5ndGggYW5kIG90aGVycwotICAgICAgICAvLyB1bmRlcnN0YW5kIFVwc2lsb24p
LiBUaGlzIHdvdWxkIG9ubHkgYmVjb21lIGEgcHJvYmxlbSBpZiB3ZSBoYWQgc29tZSBhbmFseXNp
cyB0aGF0IHdhcwotICAgICAgICAvLyBsb29raW5nIHRvIHVzZSB0aGUgd3JpdGVzTG9jYWxTdGF0
ZSBiaXQgdG8gaW52YWxpZGF0ZSBhIENTRSBvdmVyIGxvY2FsIHN0YXRlIG9wZXJhdGlvbnMuCi0g
ICAgICAgIC8vIFRoZW4gYSBGZW5jZSB3b3VsZCBsb29rIGJsb2NrLCBzYXksIHRoZSBlbGltaW5h
dGlvbiBvZiBhIHJlZHVuZGFudCBHZXQuIEJ1dCBpdCBsaWtlCi0gICAgICAgIC8vIHRoYXQncyBu
b3QgYXQgYWxsIGhvdyBvdXIgb3B0aW1pemF0aW9ucyBmb3IgU2V0L0dldC9VcHNpbG9uL1BoaSB3
b3JrIC0gdGhleSBncm9rIHRoZWlyCi0gICAgICAgIC8vIG9wZXJhdGlvbnMgZGVlcGx5IGVub3Vn
aCB0aGF0IHRoZXkgaGF2ZSBubyBuZWVkIHRvIGNoZWNrIHRoaXMgYml0IC0gc28gdGhpcyBjaGVh
dCBpcwotICAgICAgICAvLyBmaW5lLgotICAgICAgICByZXN1bHQud3JpdGVzTG9jYWxTdGF0ZSA9
IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIENDYWxsOgpAQCAtNjk0LDYgKzcxNCw3IEBAIFZhbHVlS2V5IFZhbHVlOjpr
ZXkoKSBjb25zdAogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICBj
YXNlIE5lZzoKKyAgICBjYXNlIERlcGVuZDoKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KGtpbmQo
KSwgdHlwZSgpLCBjaGlsZCgwKSk7CiAgICAgY2FzZSBBZGQ6CiAgICAgY2FzZSBTdWI6CkBAIC03
NDYsMTIgKzc2NywxNiBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5KCkgY29uc3QKICAgICB9CiB9CiAK
LXZvaWQgVmFsdWU6OnBlcmZvcm1TdWJzdGl0dXRpb24oKQorYm9vbCBWYWx1ZTo6cGVyZm9ybVN1
YnN0aXR1dGlvbigpCiB7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBmb3IgKFZhbHVl
KiYgY2hpbGQgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgIHdoaWxlIChjaGlsZC0+b3Bjb2RlKCkg
PT0gSWRlbnRpdHkpCisgICAgICAgIHdoaWxlIChjaGlsZC0+b3Bjb2RlKCkgPT0gSWRlbnRpdHkp
IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAgICAgICBjaGlsZCA9IGNoaWxk
LT5jaGlsZCgwKTsKKyAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBi
b29sIFZhbHVlOjppc0ZyZWUoKSBjb25zdApAQCAtODAxLDYgKzgyNiw3IEBAIFR5cGUgVmFsdWU6
OnR5cGVGb3IoS2luZCBraW5kLCBWYWx1ZSogZmkKICAgICBjYXNlIENoZWNrQWRkOgogICAgIGNh
c2UgQ2hlY2tTdWI6CiAgICAgY2FzZSBDaGVja011bDoKKyAgICBjYXNlIERlcGVuZDoKICAgICAg
ICAgcmV0dXJuIGZpcnN0Q2hpbGQtPnR5cGUoKTsKICAgICBjYXNlIEZyYW1lUG9pbnRlcjoKICAg
ICAgICAgcmV0dXJuIHBvaW50ZXJUeXBlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDExIEBAIHB1YmxpYzoKICAgICAKICAg
ICBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLm9wY29kZSgpOyB9CiAgICAg
CisgICAgLy8gTm90ZSB0aGF0IHRoZSBraW5kIGlzIG1lYW50IHRvIGJlIGltbXV0YWJsZS4gRG8g
dGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgdGhpcyBpcyBzYWZlLiBJdCdzIG5vdAorICAgIC8vIHVz
dWFsbHkgc2FmZS4KKyAgICB2b2lkIHNldEtpbmRVbnNhZmVseShLaW5kIGtpbmQpIHsgbV9raW5k
ID0ga2luZDsgfQorICAgIHZvaWQgc2V0T3Bjb2RlVW5zYWZlbHkoT3Bjb2RlIG9wY29kZSkgeyBt
X2tpbmQuc2V0T3Bjb2RlKG9wY29kZSk7IH0KKyAgICAKICAgICAvLyBJdCdzIGdvb2QgcHJhY3Rp
Y2UgdG8gbWlycm9yIEtpbmQgbWV0aG9kcyBoZXJlLCBzbyB5b3UgY2FuIHNheSB2YWx1ZS0+aXNC
bGFoKCkKICAgICAvLyBpbnN0ZWFkIG9mIHZhbHVlLT5raW5kKCkuaXNCbGFoKCkuCiAgICAgYm9v
bCBpc0NoaWxsKCkgY29uc3QgeyByZXR1cm4ga2luZCgpLmlzQ2hpbGwoKTsgfQpAQCAtMTA3LDYg
KzExMiw4IEBAIHB1YmxpYzoKICAgICAvLyB2YWx1ZXMgd2l0aCBJZGVudGl0aWVzIG9uIGJvdHRv
bSBjb25zdGFudHMuIEZvciB0aGlzIHJlYXNvbiwgdGhpcyB0YWtlcyBhIGNhbGxiYWNrIHRoYXQg
aXMKICAgICAvLyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgYm90dG9tcy4gVGhlcmUncyBhIHV0
aWxpdHkgZm9yIHRoaXMsIHNlZSBCM0JvdHRvbVByb3ZpZGVyLmguIFlvdQogICAgIC8vIGNhbiBh
bHNvIGFjY2VzcyB0aGF0IHV0aWxpdHkgdXNpbmcgcmVwbGFjZVdpdGhCb3R0b20oSW5zZXJ0aW9u
U2V0Jiwgc2l6ZV90KS4KKyAgICAvLworICAgIC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90
dG9tIGlzIHplcm8uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQm90dG9tUHJvdmlkZXI+CiAgICAg
dm9pZCByZXBsYWNlV2l0aEJvdHRvbShjb25zdCBCb3R0b21Qcm92aWRlciYpOwogICAgIApAQCAt
MjU2LDcgKzI2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBNYWtlcyBzdXJlIHRoYXQgbm9uZSBvZiB0
aGUgY2hpbGRyZW4gYXJlIElkZW50aXR5J3MuIElmIGEgY2hpbGQgcG9pbnRzIHRvIElkZW50aXR5
LCB0aGlzIHdpbGwKICAgICAvLyByZXBvaW50IGl0IGF0IHRoZSBJZGVudGl0eSdzIGNoaWxkLiBG
b3Igc2ltcGxpY2l0eSwgdGhpcyB3aWxsIGZvbGxvdyBhcmJpdHJhcmlseSBsb25nIGNoYWlucwog
ICAgIC8vIG9mIElkZW50aXR5J3MuCi0gICAgdm9pZCBwZXJmb3JtU3Vic3RpdHV0aW9uKCk7Cisg
ICAgYm9vbCBwZXJmb3JtU3Vic3RpdHV0aW9uKCk7CiAgICAgCiAgICAgLy8gRnJlZSB2YWx1ZXMg
YXJlIHRob3NlIHdob3NlIHByZXNlbmNlIGlzIGd1YXJhbnRlZWQgbm90IHRvIGh1cnQgY29kZS4g
V2UgY29uc2lkZXIgY29uc3RhbnRzLAogICAgIC8vIElkZW50aXRpZXMsIGFuZCBOb3BzIHRvIGJl
IGZyZWUuIENvbnN0YW50cyBhcmUgZnJlZSBiZWNhdXNlIHdlIGhvaXN0IHRoZW0gdG8gYW4gb3B0
aW1hbCBwbGFjZS4KQEAgLTMyMSw2ICszMjgsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElU
b0Y6CiAgICAgICAgIGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAg
ICAgICBjYXNlIERlcGVuZDoKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9IDEp
KQogICAgICAgICAgICAgICAgIGJhZEtpbmQoa2luZCwgbnVtQXJncyk7CiAgICAgICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAJKHJldmlzaW9uIDIx
MzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsMzggQEAKIAogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgog
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworVHlwZSBiZXN0VHlwZShCYW5rIGJh
bmssIFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRo
ODoKKyAgICBjYXNlIFdpZHRoMTY6CisgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICBzd2l0Y2gg
KGJhbmspIHsKKyAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgIHJldHVybiBJbnQzMjsKKyAg
ICAgICAgY2FzZSBGUDoKKyAgICAgICAgICAgIHJldHVybiBGbG9hdDsKKyAgICAgICAgfQorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsK
KyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNl
IEdQOgorICAgICAgICAgICAgcmV0dXJuIEludDY0OworICAgICAgICBjYXNlIEZQOgorICAgICAg
ICAgICAgcmV0dXJuIERvdWJsZTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVm9pZDsKKyAgICB9CisgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVm9pZDsKK30KKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCisKIG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgSlNDOjpCMzo6V2lkdGggd2lkdGgpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNXaWR0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1dpZHRoLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1dpZHRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDggKzYwLDIxIEBAIGlubGluZSBX
aWR0aCB3aWR0aEZvclR5cGUoVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gV2lkdGg2NDsKICAg
ICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdpZHRoODsKIH0KIAor
aW5saW5lIFdpZHRoIGNhbm9uaWNhbFdpZHRoKFdpZHRoIHdpZHRoKQoreworICAgIHJldHVybiBz
dGQ6Om1heChXaWR0aDMyLCB3aWR0aCk7Cit9CisKK2lubGluZSBib29sIGlzQ2Fub25pY2FsV2lk
dGgoV2lkdGggd2lkdGgpCit7CisgICAgcmV0dXJuIHdpZHRoID49IFdpZHRoMzI7Cit9CisKK1R5
cGUgYmVzdFR5cGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCk7CisKIGlubGluZSBXaWR0aCBjb25z
ZXJ2YXRpdmVXaWR0aChCYW5rIGJhbmspCiB7CiAgICAgcmV0dXJuIGJhbmsgPT0gR1AgPyBwb2lu
dGVyV2lkdGgoKSA6IFdpZHRoNjQ7CkBAIC05Myw2ICsxMDYsMjAgQEAgaW5saW5lIFdpZHRoIHdp
ZHRoRm9yQnl0ZXModW5zaWduZWQgYnl0ZQogICAgIH0KIH0KIAoraW5saW5lIHVpbnQ2NF90IG1h
c2soV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4
OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDAwMGZmbGx1OworICAgIGNhc2UgV2lkdGgx
NjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAwZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRo
MzI6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwZmZmZmZmZmZsbHU7CisgICAgY2FzZSBXaWR0
aDY0OgorICAgICAgICByZXR1cm4gMHhmZmZmZmZmZmZmZmZmZmZmbGx1OworICAgIH0KK30KKwog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiQWlyVmFsaWRhdGUuaCIKICNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UuaCIKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRl
ICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQ29tcGlsYXRpb24uaCIKQEAgLTQ0
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJCM01hdGhFeHRyYXMuaCIKICNpbmNsdWRlICJCM01lbW9y
eVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNNb3ZlQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiQjNOYXRp
dmVUcmFpdHMuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgIkIzUmVkdWNl
U3RyZW5ndGguaCIKICNpbmNsdWRlICJCM1Nsb3RCYXNlVmFsdWUuaCIKQEAgLTI5Nyw2ICsyOTks
MjQgQEAgdm9pZCB0ZXN0TG9hZDQyKCkKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJv
YykgPT0gNDIpOwogfQogCit2b2lkIHRlc3RMb2FkQWNxNDIoKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHgg
PSA0MjsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ4KSwKKyAgICAgICAg
ICAgIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpKTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5z
dHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICBDSEVDSyhpbnZva2U8aW50PigqY29kZSkgPT0g
NDIpOworfQorCiB2b2lkIHRlc3RMb2FkV2l0aE9mZnNldEltcGwoaW50MzJfdCBvZmZzZXQ2NCwg
aW50MzJfdCBvZmZzZXQzMikKIHsKICAgICB7CkBAIC01NzQ4LDYgKzU3NjgsMzUgQEAgdm9pZCB0
ZXN0U3RvcmVBZGRMb2FkMzIoaW50IGFtb3VudCkKICAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1v
dW50KTsKIH0KIAordm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIoaW50IGFtb3VudCkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIGludCBzbG90ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgc2xvdFB0ciwg
MCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVh
cFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2Rl
ID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9u
KCpjb2RlLCAic3RsIik7CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1v
dW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKIHZvaWQgdGVzdFN0
b3JlQWRkTG9hZEltbTMyKGludCBhbW91bnQpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01
NzkyLDYgKzU4NDEsNzQgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkOChpbnQgYW1vdW50LCBCMzo6
TwogICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJl
bEFkZExvYWRBY3E4KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIGludDhfdCBzbG90ID0gMzc7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlOCwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBB
ZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwg
SGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJh
bmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0g
Y29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0lu
c3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpj
b2RlLCAic3RsIik7CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50
KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKK3ZvaWQgdGVzdFN0b3Jl
UmVsQWRkRmVuY2VMb2FkQWNxOChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBpbnQ4X3Qgc2xvdCA9IDM3OworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIg
PSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsK
KyAgICBWYWx1ZSogbG9hZGVkVmFsdWUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdl
KDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0g
cm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwor
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAg
ICAgICAgICAgIGppdC5zdG9yZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHhiZWVmKSwg
JnNsb3QpOworICAgICAgICB9KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6
bm9uZSgpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMuZmVuY2UgPSB0cnVlOworICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlOCwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQs
IE9yaWdpbigpLAorICAgICAgICAgICAgbG9hZGVkVmFsdWUsCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCwg
SGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBj
b2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAic3RsIik7CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwg
YW1vdW50KSk7CisgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKIHZvaWQgdGVz
dFN0b3JlQWRkTG9hZEltbTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQogewog
ICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTgzNiw2ICs1OTUzLDM1IEBAIHZvaWQgdGVzdFN0b3Jl
QWRkTG9hZDE2KGludCBhbW91bnQsIEIzOjoKICAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50
KTsKIH0KIAordm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYoaW50IGFtb3VudCwgQjM6Ok9w
Y29kZSBsb2FkT3Bjb2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50MTZfdCBzbG90ID0gMzc7CisgICAgQ29u
c3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFN0b3JlMTYsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgbG9hZE9w
Y29kZSwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0Mikp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSks
CisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJN
NjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOworICAgIH0KKyAgICBDSEVD
SyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBh
bW91bnQpOworfQorCiB2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW0xNihpbnQgYW1vdW50LCBCMzo6
T3Bjb2RlIGxvYWRPcGNvZGUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01ODc4LDYgKzYw
MjQsMzMgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkNjQoaW50IGFtb3VudCkKICAgICBDSEVDSyhz
bG90ID09IDM3MDAwMDAwMDAwbGwgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFk
ZExvYWRBY3E2NChpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50NjRfdCBzbG90ID0gMzcwMDAw
MDAwMDBsbDsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIp
LCBIZWFwUmFuZ2UoNDIpKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAg
IHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsK
KworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkgewor
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInN0bCIpOworICAgIH0KKyAgICBDSEVDSyghaW52b2tl
PGludD4oKmNvZGUsIGFtb3VudCkpOworICAgIENIRUNLKHNsb3QgPT0gMzcwMDAwMDAwMDBsbCAr
IGFtb3VudCk7Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTY0KGludDY0X3QgYW1vdW50
KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTM3OTEsNyArMTM5NjQsNyBAQCB2b2lkIHRl
c3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24oKQogICAgIGNvbXBpbGVBbmRSdW48aW50Pihwcm9j
KTsKICAgICB1bnNpZ25lZCBzdG9yZUNvdW50ID0gMDsKICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6
IHByb2MudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKE1lbW9yeVZhbHVlOjppc1N0b3JlKHZhbHVl
LT5vcGNvZGUoKSkpCisgICAgICAgIGlmIChpc1N0b3JlKHZhbHVlLT5vcGNvZGUoKSkpCiAgICAg
ICAgICAgICBzdG9yZUNvdW50Kys7CiAgICAgfQogICAgIENIRUNLX0VRKHN0b3JlQ291bnQsIDJ1
KTsKQEAgLTEzOTk3LDYgKzE0MTcwLDcgQEAgdm9pZCB0ZXN0WDg2TGVhQWRkQWRkKCkKICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CiAg
ICAgCiAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBDSEVDS19FUShpbnZva2U8
aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwgKDEgKyAyKSArIDEwMCk7CiAgICAgY2hlY2tEaXNhc3Nl
bWJseSgKICAgICAgICAgKmNvZGUsCiAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlzYXNzZW1i
bHkpIC0+IGJvb2wgewpAQCAtMTQwMDQsNyArMTQxNzgsNiBAQCB2b2lkIHRlc3RYODZMZWFBZGRB
ZGQoKQogICAgICAgICAgICAgICAgIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgImxlYSAweDY0KCVy
c2ksJXJkaSksICVyYXgiKTsKICAgICAgICAgfSwKICAgICAgICAgIkV4cGVjdGVkIHRvIGZpbmQg
c29tZXRoaW5nIGxpa2UgbGVhIDB4NjQoJXJkaSwlcnNpKSwgJXJheCBidXQgZGlkbid0ISIpOwot
ICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAoMSArIDIpICsgMTAw
KTsKIH0KIAogdm9pZCB0ZXN0WDg2TGVhQWRkU2hsUmlnaHQoKQpAQCAtMTQwNDEsNiArMTQyMTQs
NyBAQCB2b2lkIHRlc3RYODZMZWFBZGRTaGxMZWZ0U2NhbGUxKCkKICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CiAgICAgCiAgICAgYXV0
byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpj
b2RlLCAxLCAyKSwgMSArIDIpOwogICAgIGNoZWNrRGlzYXNzZW1ibHkoCiAgICAgICAgICpjb2Rl
LAogICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5KSAtPiBib29sIHsKQEAgLTE0
MDQ4LDcgKzE0MjIyLDYgQEAgdm9pZCB0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlMSgpCiAgICAg
ICAgICAgICAgICAgfHwgc3Ryc3RyKGRpc2Fzc2VtYmx5LCAibGVhICglcnNpLCVyZGkpLCAlcmF4
Iik7CiAgICAgICAgIH0sCiAgICAgICAgICJFeHBlY3RlZCB0byBmaW5kIHNvbWV0aGluZyBsaWtl
IGxlYSAoJXJkaSwlcnNpKSwgJXJheCBidXQgZGlkbid0ISIpOwotICAgIENIRUNLX0VRKGludm9r
ZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgMik7CiB9CiAKIHZvaWQgdGVzdFg4NkxlYUFk
ZFNobExlZnRTY2FsZTIoKQpAQCAtMTQyNzcsNiArMTQ0NTAsNjgwIEBAIHZvaWQgdGVzdE9wdGlt
aXplTWF0ZXJpYWxpemF0aW9uKCkKICAgICBDSEVDSyhmb3VuZCk7CiB9CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+Cit2b2lkIHRlc3RBdG9taWNXZWFrQ0FTKCkKK3sKKyAgICBUeXBlIHR5cGUgPSBO
YXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46
OndpZHRoOworICAgIAorICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChDb21waWxh
dGlvbiYgY29tcGlsYXRpb24sIGJvb2wgZmVuY2VkKSB7CisgICAgICAgIGlmIChpc1g4NigpKSB7
CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsK
KyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAiY21weGNoZyIp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGZlbmNlZCkgeworICAgICAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGRheCIpOworICAgICAg
ICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3RseCIpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihj
b21waWxhdGlvbiwgImxkeCIpOworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9u
KGNvbXBpbGF0aW9uLCAic3R4Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Owor
ICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlbG9vcCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgICAg
ICByb290LT5zZXRTdWNjZXNzb3JzKHJlbG9vcCk7CisgICAgICAgIAorICAgICAgICByZWxvb3At
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAor
ICAgICAgICAgICAgcmVsb29wLT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAg
ICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICByZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisg
ICAgICAgICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwg
dHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBwdHIpKTsKKyAgICAgICAgcmVsb29wLT5z
ZXRTdWNjZXNzb3JzKGRvbmUsIHJlbG9vcCk7CisgICAgICAgIAorICAgICAgICBkb25lLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAg
YXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAg
dmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZv
aWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2Fz
dDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAg
Y2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogcmVsb29wID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgICAgICBCYXNpY0Jsb2NrKiBkb25lID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAg
ICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nl
c3NvcnMocmVsb29wKTsKKyAgICAgICAgCisgICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByZWxv
b3AtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWlj
V2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5k
SW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICBy
ZWxvb3AtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAor
ICAgICAgICAgICAgICAgIHB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKCkpKTsKKyAg
ICAgICAgcmVsb29wLT5zZXRTdWNjZXNzb3JzKGRvbmUsIHJlbG9vcCk7CisgICAgICAgIAorICAg
ICAgICBkb25lLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAg
ICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1
ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAg
ICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVl
WzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0s
IDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCBmYWxzZSk7CisgICAgfQor
ICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAg
ICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0Miks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCks
IHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyKSk7CisgICAgICAgIHJvb3QtPnNl
dFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7CisgICAgICAgIAorICAgICAgICBzdWNjLT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdpZHRo
KSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1Y2MtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAg
ICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAg
ICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsy
XTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAg
ICAgd2hpbGUgKHZhbHVlWzBdID09IDQyKQorICAgICAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2Rl
LCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDAp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBz
dGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNv
ZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNp
Y0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWls
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBw
cm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICBwdHIpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwgMCkpKTsKKyAg
ICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhmYWlsLCBzdWNjKTsKKyAgICAgICAgCisgICAgICAg
IHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9w
Y29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAg
ICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAg
ICAgICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAg
ICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsx
XSA9IDEzOworICAgICAgICB3aGlsZSAodmFsdWVbMF0gPT0gNDIpCisgICAgICAgICAgICBpbnZv
a2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRp
Y19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAg
ICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigq
Y29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4o
MzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlE
aXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
KTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAg
IFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0g
MTM7CisgICAgICAgIHdoaWxlICghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpIHsgfQorICAg
ICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIAorICAgICAgICB2YWx1ZVswXSA9IHN0
YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKCFpbnZva2U8Ym9vbD4oKmNvZGUsIHZh
bHVlKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2Vt
Ymx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
ICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FT
LCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAg
ICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpOworICAgICAgICAK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsK
KyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAg
d2hpbGUgKGludm9rZTxib29sPigqY29kZSwgdmFsdWUpKSB7IH0KKyAgICAgICAgQ0hFQ0tfRVEo
dmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVsxXSwgMTMpOworICAgICAgICAKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigz
MDApOworICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVl
KTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgICAgICA0Mikp
OworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAg
VCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAx
MzsKKyAgICAgICAgd2hpbGUgKCFpbnZva2U8Ym9vbD4oKmNvZGUsIGJpdHdpc2VfY2FzdDxpbnRw
dHJfdD4odmFsdWUpIC0gNDIpKSB7IH0KKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRp
Y19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAg
ICAgICAKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBD
SEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSAt
IDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2Vt
Ymx5KCpjb2RlLCB0cnVlKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lk
IHRlc3RBdG9taWNTdHJvbmdDQVMoKQoreworICAgIFR5cGUgdHlwZSA9IE5hdGl2ZVRyYWl0czxU
Pjo6dHlwZTsKKyAgICBXaWR0aCB3aWR0aCA9IE5hdGl2ZVRyYWl0czxUPjo6d2lkdGg7CisgICAg
CisgICAgYXV0byBjaGVja015RGlzYXNzZW1ibHkgPSBbJl0gKENvbXBpbGF0aW9uJiBjb21waWxh
dGlvbiwgYm9vbCBmZW5jZWQpIHsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibG9jayIpOworICAgICAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJjbXB4Y2hnIik7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBpZiAoZmVuY2VkKSB7CisgICAgICAgICAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsZGF4Iik7CisgICAgICAgICAgICAgICAgY2hl
Y2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJzdGx4Iik7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAi
bGR4Iik7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24s
ICJzdHgiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisg
ICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVh
bCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVl
PigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZElu
dENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAg
ICAgICBwdHIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhzdWNj
LCBmYWlsKTsKKyAgICAgICAgCisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAx
MDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRv
IGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1
ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZva2U8dm9pZD4o
KmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+
KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVsw
XSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFs
dWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJs
eSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sq
IGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAg
ICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIp
LAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmln
aW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcHRyLCAwLCBIZWFwUmFu
Z2UoNDIpLCBIZWFwUmFuZ2UoKSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29u
c3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICByb290LT5zZXRTdWNj
ZXNzb3JzKHN1Y2MsIGZhaWwpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9y
aWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFp
bC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisg
ICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07Cisg
ICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGlu
dm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3Rh
dGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
ICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+
KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxU
PigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tN
eURpc2Fzc2VtYmx5KCpjb2RlLCBmYWxzZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBW
YWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9y
aWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmln
aW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAg
cHRyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmln
aW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoZmFpbCwgc3Vj
Yyk7CisgICAgICAgIAorICAgICAgICBzdWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAg
ICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwK
KyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0g
PSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2Rl
LCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDAp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBz
dGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNv
ZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAg
ICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAgICAg
CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07
CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFsdWUpLCA0Mik7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8VD4oKmNvZGUsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8VD4oMzAw
KSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAg
ICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5
KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMs
IE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29u
c3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICAK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsK
KyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAg
Q0hFQ0soaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFd
LCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAg
Q0hFQ0soIWludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwg
MTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAg
ICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
ICAgIHByb2MsIE5vdEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0
b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIHR5cGUsIDQyKSksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKSk7CisgICAgICAgICAgICAKKyAgICAgICAgYXV0
byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFs
dWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgQ0hFQ0soaW52b2tl
PGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGlj
X2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAg
ICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0soIWludm9r
ZTxib29sPigqY29kZSwgJnZhbHVlKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0
aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAg
ICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RBdG9taWNYY2hnKEIzOjpPcGNvZGUgb3Bjb2RlKQorewor
ICAgIFR5cGUgdHlwZSA9IE5hdGl2ZVRyYWl0czxUPjo6dHlwZTsKKyAgICBXaWR0aCB3aWR0aCA9
IE5hdGl2ZVRyYWl0czxUPjo6d2lkdGg7CisgICAgCisgICAgYXV0byBkb1RoZU1hdGggPSBbJl0g
KFQmIG1lbW9yeSwgVCBvcGVyYW5kKSAtPiBUIHsKKyAgICAgICAgVCBvbGRWYWx1ZSA9IG1lbW9y
eTsKKyAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRk
OgorICAgICAgICAgICAgbWVtb3J5ICs9IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgbWVtb3J5ICY9IG9wZXJhbmQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAg
ICAgICBtZW1vcnkgfD0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBtZW1vcnkgLT0gb3BlcmFuZDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgICAgICBtZW1v
cnkgXj0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hj
aGc6CisgICAgICAgICAgICBtZW1vcnkgPSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKKyAgICB9OworICAgIAorICAg
IGF1dG8gb2xkVmFsdWUgPSBbJl0gKFQgbWVtb3J5LCBUIG9wZXJhbmQpIC0+IFQgeworICAgICAg
ICByZXR1cm4gZG9UaGVNYXRoKG1lbW9yeSwgb3BlcmFuZCk7CisgICAgfTsKKyAgICAKKyAgICBh
dXRvIG5ld1ZhbHVlID0gWyZdIChUIG1lbW9yeSwgVCBvcGVyYW5kKSAtPiBUIHsKKyAgICAgICAg
ZG9UaGVNYXRoKG1lbW9yeSwgb3BlcmFuZCk7CisgICAgICAgIHJldHVybiBtZW1vcnk7CisgICAg
fTsKKyAgICAKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRpb24m
IGNvbXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAgICAgICBpZiAoaXNYODYoKSkKKyAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibG9jayIpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsKKyAgICAgICAgICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgiKTsKKyAgICAgICAgICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0bHgiKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24s
ICJsZHgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlv
biwgInN0eCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICB7
CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
dG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lk
dGgsCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDEpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIAor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOwor
ICAgICAgICB2YWx1ZVswXSA9IDU7CisgICAgICAgIHZhbHVlWzFdID0gMTAwOworICAgICAgICBD
SEVDS19FUShpbnZva2U8VD4oKmNvZGUsIHZhbHVlKSwgb2xkVmFsdWUoNSwgMSkpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFsdWUoNSwgMSkpOworICAgICAgICBDSEVDS19FUSh2
YWx1ZVsxXSwgMTAwKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsK
KyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIG9w
Y29kZSwgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7Cisg
ICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAgICAgICAgdmFsdWVb
MV0gPSAxMDA7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwgdmFsdWUpLCBvbGRW
YWx1ZSg1LCA0MikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFsdWUoNSwgNDIp
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAgICAgIGNoZWNrTXlEaXNh
c3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBv
cGNvZGUsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCkpOworICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBU
IHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDU7CisgICAgICAgIHZhbHVlWzFdID0gMTAw
OworICAgICAgICBpbnZva2U8VD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMF0sIG5ld1ZhbHVlKDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMDAp
OworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAK
KyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+
KAorICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAg
ICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgMCwgSGVhcFJhbmdlKDQyKSwg
SGVhcFJhbmdlKCkpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCkpOworICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOwor
ICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDU7CisgICAgICAgIHZhbHVl
WzFdID0gMTAwOworICAgICAgICBpbnZva2U8VD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMF0sIG5ld1ZhbHVlKDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVl
WzFdLCAxMDApOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIGZhbHNlKTsKKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdERlcGVuZDMyKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBwdHIgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGZpcnN0ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHB0ciwgMCk7CisgICAgVmFsdWUq
IHNlY29uZCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExv
YWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIHB0ciwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgWkV4dDMyLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERlcGVuZCwgT3Jp
Z2luKCksIGZpcnN0KSkpLAorICAgICAgICA0KTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGZpcnN0LCBzZWNvbmQpKTsKKyAgICAKKyAg
ICBpbnQzMl90IHZhbHVlc1syXTsKKyAgICB2YWx1ZXNbMF0gPSA0MjsKKyAgICB2YWx1ZXNbMV0g
PSAweGJlZWY7CisgICAgCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAo
aXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImVvciIpOwor
ICAgIGVsc2UgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rp
b24oKmNvZGUsICJtZmVuY2UiKTsKKyAgICAgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24o
KmNvZGUsICJsb2NrIik7CisgICAgfQorICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29k
ZSwgdmFsdWVzKSwgNDIgKyAweGJlZWYpOworfQorCit2b2lkIHRlc3REZXBlbmQ2NCgpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBmaXJzdCA9
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigp
LCBwdHIsIDApOworICAgIFZhbHVlKiBzZWNvbmQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAorICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBwdHIs
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERlcGVuZCwgT3JpZ2lu
KCksIGZpcnN0KSksCisgICAgICAgIDgpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmlyc3QsIHNlY29uZCkpOworICAgIAorICAgIGlu
dDY0X3QgdmFsdWVzWzJdOworICAgIHZhbHVlc1swXSA9IDQyOworICAgIHZhbHVlc1sxXSA9IDB4
YmVlZjsKKyAgICAKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FS
TTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiZW9yIik7CisgICAg
ZWxzZSBpZiAoaXNYODYoKSkgeworICAgICAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbigq
Y29kZSwgIm1mZW5jZSIpOworICAgICAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbigqY29k
ZSwgImxvY2siKTsKKyAgICB9CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2RlLCB2
YWx1ZXMpLCA0MiArIDB4YmVlZik7Cit9CisKIHZvaWQgdGVzdFdhc21Cb3VuZHNDaGVjayh1bnNp
Z25lZCBvZmZzZXQpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xNDM3MCw2ICsxNTIxNywx
MyBAQCBkb3VibGUgbmVnYXRpdmVaZXJvKCkKICAgICByZXR1cm4gLXplcm8oKTsKIH0KIAorI2Rl
ZmluZSBSVU5fTk9XKHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBp
ZiAoIXNob3VsZFJ1bigjdGVzdCkpICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYnJl
YWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkYXRhTG9nKCN0ZXN0
ICIuLi5cbiIpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICB0ZXN0OyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkYXRhTG9nKCN0ZXN0ICI6IE9LIVxuIik7
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQogI2RlZmluZSBSVU4odGVzdCkg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoIXNob3VsZFJ1bigj
dGVzdCkpICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXApAQCAtMTQ0MjEsMTIgKzE1Mjc1LDExIEBAIHZvaWQgcnVuKGNv
bnN0IGNoYXIqIGZpbHRlcikKICAgICAgICAgcmV0dXJuICFmaWx0ZXIgfHwgISFzdHJjYXNlc3Ry
KHRlc3ROYW1lLCBmaWx0ZXIpOwogICAgIH07CiAKLSAgICAvLyBXZSBydW4gdGhpcyB0ZXN0IGZp
cnN0IGJlY2F1c2UgaXQgZmlkZGxlcyB3aXRoIHNvbWUKLSAgICAvLyBKU0Mgb3B0aW9ucy4KLSAg
ICB0ZXN0VGVybWluYWxQYXRjaHBvaW50VGhhdE5lZWRzVG9CZVNwaWxsZWQyKCk7CisgICAgUlVO
X05PVyh0ZXN0VGVybWluYWxQYXRjaHBvaW50VGhhdE5lZWRzVG9CZVNwaWxsZWQyKCkpOwogCiAg
ICAgUlVOKHRlc3Q0MigpKTsKICAgICBSVU4odGVzdExvYWQ0MigpKTsKKyAgICBSVU4odGVzdExv
YWRBY3E0MigpKTsKICAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4KCkpOwogICAgIFJVTih0
ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzT25lKCkpOwogICAgIFJVTih0ZXN0TG9hZE9mZnNldElt
bTlNYXhQbHVzVHdvKCkpOwpAQCAtMTUwOTksMTYgKzE1OTUyLDIzIEBAIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdE5lZzMyKDUyKSk7CiAgICAgUlVOKHRlc3ROZWdQ
dHIoNTMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDMyKDQ2KSk7CisgICAgUlVOKHRlc3RT
dG9yZVJlbEFkZExvYWRBY3EzMig0NikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tMzIo
NDYpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDY0KDQ2MDApKTsKKyAgICBSVU4odGVzdFN0
b3JlUmVsQWRkTG9hZEFjcTY0KDQ2MDApKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTY0
KDQ2MDApKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDgoNCwgTG9hZDhaKSk7CisgICAgUlVO
KHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KDQsIExvYWQ4WikpOworICAgIFJVTih0ZXN0U3RvcmVS
ZWxBZGRGZW5jZUxvYWRBY3E4KDQsIExvYWQ4WikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2Fk
SW1tOCg0LCBMb2FkOFopKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDgoNCwgTG9hZDhTKSk7
CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3E4KDQsIExvYWQ4UykpOwogICAgIFJVTih0
ZXN0U3RvcmVBZGRMb2FkSW1tOCg0LCBMb2FkOFMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9h
ZDE2KDYsIExvYWQxNlopKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTE2KDYsIExv
YWQxNlopKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTE2KDYsIExvYWQxNlopKTsKICAg
ICBSVU4odGVzdFN0b3JlQWRkTG9hZDE2KDYsIExvYWQxNlMpKTsKKyAgICBSVU4odGVzdFN0b3Jl
UmVsQWRkTG9hZEFjcTE2KDYsIExvYWQxNlMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZElt
bTE2KDYsIExvYWQxNlMpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZDMySW5kZXgoNDYpKTsK
ICAgICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTMySW5kZXgoNDYpKTsKQEAgLTE1ODMxLDYgKzE2
NjkxLDQxIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdExvYWRC
YXNlSW5kZXhTaGlmdDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkQmFzZUluZGV4U2hpZnQzMigpKTsK
ICAgICBSVU4odGVzdE9wdGltaXplTWF0ZXJpYWxpemF0aW9uKCkpOworICAgIAorICAgIFJVTih0
ZXN0QXRvbWljV2Vha0NBUzxpbnQ4X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxp
bnQxNl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50MzJfdD4oKSk7CisgICAg
UlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDY0X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ry
b25nQ0FTPGludDhfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNTdHJvbmdDQVM8aW50MTZfdD4o
KSk7CisgICAgUlVOKHRlc3RBdG9taWNTdHJvbmdDQVM8aW50MzJfdD4oKSk7CisgICAgUlVOKHRl
c3RBdG9taWNTdHJvbmdDQVM8aW50NjRfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGlu
dDhfdD4oQXRvbWljWGNoZ0FkZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihB
dG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hj
aGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ0FkZCkp
OworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAgICBS
VU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0
QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNY
Y2hnPGludDY0X3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50
OF90PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRv
bWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGdP
cikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnT3IpKTsKKyAg
ICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnU3ViKSk7CisgICAgUlVOKHRl
c3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxp
bnQ2NF90PihBdG9taWNYY2hnU3ViKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4o
QXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNY
Y2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGdYb3Ip
KTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ1hvcikpOworICAg
IFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGcpKTsKKyAgICBSVU4odGVzdEF0
b21pY1hjaGc8aW50MTZfdD4oQXRvbWljWGNoZykpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxp
bnQzMl90PihBdG9taWNYY2hnKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0
b21pY1hjaGcpKTsKKyAgICBSVU4odGVzdERlcGVuZDMyKCkpOworICAgIFJVTih0ZXN0RGVwZW5k
NjQoKSk7CiAKICAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjaygwKSk7CiAgICAgUlVOKHRlc3RX
YXNtQm91bmRzQ2hlY2soMTAwKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBcmcuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFyZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCB1bnNpZ25l
ZCBBcmc6OmpzSGFzaCgpIGNvbnN0CiAgICAgY2FzZSBSZWxDb25kOgogICAgIGNhc2UgUmVzQ29u
ZDoKICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgY2FzZSBTdGF0dXNDb25kOgogICAgIGNhc2Ug
V2lkdGhBcmc6CiAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZz
ZXQpOwogICAgICAgICBicmVhazsKQEAgLTExMCw2ICsxMTEsOSBAQCB1bnNpZ25lZCBBcmc6Ompz
SGFzaCgpIGNvbnN0CiAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9v
ZmZzZXQpOwogICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0
ID4+IDMyKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1wbGVBZGRyOgorICAgICAgICBy
ZXN1bHQgKz0gbV9iYXNlLmludGVybmFsVmFsdWUoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBZGRyOgogICAgICAgICByZXN1bHQgKz0gbV9vZmZzZXQ7CiAgICAgICAgIHJlc3VsdCArPSBt
X2Jhc2UuaW50ZXJuYWxWYWx1ZSgpOwpAQCAtMTUwLDYgKzE1NCw5IEBAIHZvaWQgQXJnOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgY2FzZSBCaXRJbW02NDoKICAgICAgICAgb3V0
LnByaW50ZigiJDB4JWxseCIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZyB1bnNpZ25lZD4obV9vZmZz
ZXQpKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2ltcGxlQWRkcjoKKyAgICAgICAgb3V0
LnByaW50KCIoIiwgYmFzZSgpLCAiKSIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBZGRy
OgogICAgICAgICBpZiAob2Zmc2V0KCkpCiAgICAgICAgICAgICBvdXQucHJpbnQob2Zmc2V0KCkp
OwpAQCAtMTgyLDYgKzE4OSw5IEBAIHZvaWQgQXJnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiAgICAgY2FzZSBEb3VibGVDb25kOgogICAgICAgICBvdXQucHJpbnQoYXNEb3VibGVDb25k
aXRpb24oKSk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0YXR1c0NvbmQ6CisgICAgICAg
IG91dC5wcmludChhc1N0YXR1c0NvbmRpdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgU3BlY2lhbDoKICAgICAgICAgb3V0LnByaW50KHBvaW50ZXJEdW1wKHNwZWNpYWwoKSkpOwog
ICAgICAgICByZXR1cm47CkBAIC0yMjAsNiArMjMwLDkgQEAgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpCaXRJbW02NDoKICAgICAgICAgb3V0
LnByaW50KCJCaXRJbW02NCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcmc6OlNpbXBs
ZUFkZHI6CisgICAgICAgIG91dC5wcmludCgiU2ltcGxlQWRkciIpOworICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBBcmc6OkFkZHI6CiAgICAgICAgIG91dC5wcmludCgiQWRkciIpOwogICAgICAg
ICByZXR1cm47CkBAIC0yNDEsNiArMjU0LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEFyZwogICAgIGNhc2UgQXJnOjpEb3VibGVDb25kOgogICAgICAgICBvdXQucHJp
bnQoIkRvdWJsZUNvbmQiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJnOjpTdGF0dXND
b25kOgorICAgICAgICBvdXQucHJpbnQoIlN0YXR1c0NvbmQiKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgQXJnOjpTcGVjaWFsOgogICAgICAgICBvdXQucHJpbnQoIlNwZWNpYWwiKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjg1LDYgKzMwMSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6RWFybHlEZWY6CiAgICAgICAgIG91dC5w
cmludCgiRWFybHlEZWYiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJnOjpFYXJseVpE
ZWY6CisgICAgICAgIG91dC5wcmludCgiRWFybHlaRGVmIik7CisgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAgb3V0LnByaW50KCJTY3JhdGNoIik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAkocmV2
aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAko
d29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gVGhl
c2UgYXJlIHRoZSBhZGRyZXNzZXMuIEluc3RydWN0aW9ucyBtYXkgbG9hZCBmcm9tIChVc2UpLCBz
dG9yZSB0byAoRGVmKSwgb3IgZXZhbHVhdGUKICAgICAgICAgLy8gKFVzZUFkZHIpIGFkZHJlc3Nl
cy4KKyAgICAgICAgU2ltcGxlQWRkciwKICAgICAgICAgQWRkciwKICAgICAgICAgU3RhY2ssCiAg
ICAgICAgIENhbGxBcmcsCkBAIC04Miw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVsQ29u
ZCwKICAgICAgICAgUmVzQ29uZCwKICAgICAgICAgRG91YmxlQ29uZCwKKyAgICAgICAgU3RhdHVz
Q29uZCwKICAgICAgICAgU3BlY2lhbCwKICAgICAgICAgV2lkdGhBcmcKICAgICB9OwpAQCAtMTUx
LDYgKzE1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gYXMgVXNlIGhhcyB1bmRlZmluZWQgYmVo
YXZpb3I6IHRoZSB1c2UgbWF5IGhhcHBlbiBiZWZvcmUgdGhlIGRlZiwgb3IgaXQgbWF5IGhhcHBl
biBhZnRlcgogICAgICAgICAvLyBpdC4KICAgICAgICAgRWFybHlEZWYsCisgICAgICAgICAgICAK
KyAgICAgICAgRWFybHlaRGVmLAogCiAgICAgICAgIC8vIFNvbWUgaW5zdHJ1Y3Rpb25zIG5lZWQg
YSBzY3JhdGNoIHJlZ2lzdGVyLiBXZSBtb2RlbCB0aGlzIGJ5IHNheWluZyB0aGF0IHRoZSB0ZW1w
b3JhcnkgaXMKICAgICAgICAgLy8gZGVmaW5lZCBlYXJseSBhbmQgdXNlZCBsYXRlLiBUaGlzIHJv
bGUgaW1wbGllcyB0aGF0LgpAQCAtMTg2LDYgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2Fz
ZSBaRGVmOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6Cisg
ICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjA2LDYgKzIxMSw3IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAg
ICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMjI4LDYgKzIzNCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAg
ICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFy
bHlaRGVmOgogICAgICAgICAgICAgcmV0dXJuIHJvbGU7CiAgICAgICAgIGNhc2UgVXNlOgogICAg
ICAgICAgICAgcmV0dXJuIENvbGRVc2U7CkBAIC0yNTMsNiArMjYwLDcgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNh
c2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjc0
LDYgKzI4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVmOgogICAgICAgICBjYXNlIFVz
ZUFkZHI6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMjk0LDYgKzMwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBaRGVm
OgogICAgICAgICBjYXNlIFVzZVpEZWY6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAg
IGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzE1LDYgKzMyNSw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2Fz
ZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgIGNhc2UgU2NyYXRj
aDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0zMzAsNiArMzQxLDcg
QEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgTGF0ZVVzZToK
ICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAg
IGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTM1OCw2ICszNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgorICAg
ICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDE2LDYgKzQyOSwxNSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBiaWdJbW0oYml0d2lzZV9jYXN0PGludHB0cl90PihhZGRyZXNz
KSk7CiAgICAgfQogCisgICAgc3RhdGljIEFyZyBzaW1wbGVBZGRyKEFpcjo6VG1wIHB0cikKKyAg
ICB7CisgICAgICAgIEFTU0VSVChwdHIuaXNHUCgpKTsKKyAgICAgICAgQXJnIHJlc3VsdDsKKyAg
ICAgICAgcmVzdWx0Lm1fa2luZCA9IFNpbXBsZUFkZHI7CisgICAgICAgIHJlc3VsdC5tX2Jhc2Ug
PSBwdHI7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgc3RhdGljIEFyZyBh
ZGRyKEFpcjo6VG1wIGJhc2UsIGludDMyX3Qgb2Zmc2V0ID0gMCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChiYXNlLmlzR1AoKSk7CkBAIC01MzMsNiArNTU1LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0aWMgQXJnIHN0YXR1c0NvbmQoTWFjcm9B
c3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisgICAgeworICAgICAgICBBcmcg
cmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gU3RhdHVzQ29uZDsKKyAgICAgICAgcmVz
dWx0Lm1fb2Zmc2V0ID0gY29uZGl0aW9uOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KwogICAgIHN0YXRpYyBBcmcgc3BlY2lhbChBaXI6OlNwZWNpYWwqIHNwZWNpYWwpCiAgICAgewog
ICAgICAgICBBcmcgcmVzdWx0OwpAQCAtNjA4LDYgKzYzOCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBib29sIGlzU2ltcGxlQWRkcigpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4ga2luZCgpID09IFNpbXBsZUFkZHI7CisgICAgfQorCiAgICAgYm9vbCBpc0FkZHIo
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBBZGRyOwpAQCAtNjMxLDYg
KzY2Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTWVtb3J5KCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAg
Y2FzZSBBZGRyOgogICAgICAgICBjYXNlIFN0YWNrOgogICAgICAgICBjYXNlIENhbGxBcmc6CkBA
IC02NDEsNiArNjc3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGFuIGlkaW9tYXRpYyBzdGFjayByZWZlcmVuY2UuIEl0IG1h
eSByZXR1cm4gZmFsc2UgZm9yIHNvbWUga2luZHMgb2YKKyAgICAvLyBzdGFjayByZWZlcmVuY2Vz
LiBUaGUgZm9sbG93aW5nIGlkaW9tcyBhcmUgcmVjb2duaXplZDoKKyAgICAvLyAtIHRoZSBTdGFj
ayBraW5kCisgICAgLy8gLSB0aGUgQ2FsbEFyZyBraW5kCisgICAgLy8gLSB0aGUgQWRkciBraW5k
IHdpdGggdGhlIGJhc2UgYmVpbmcgZWl0aGVyIFNQIG9yIEZQCisgICAgLy8gQ2FsbGVycyBvZiB0
aGlzIGZ1bmN0aW9uIGFyZSBhbGxvd2VkIHRvIGV4cGVjdCB0aGF0IGlmIGl0IHJldHVybnMgdHJ1
ZSwgdGhlbiBpdCBtdXN0IGJlIG9uZSBvZgorICAgIC8vIHRoZXNlIGVhc3ktdG8tcmVjb2duaXpl
IGtpbmRzLiBTbywgbWFraW5nIHRoaXMgZnVuY3Rpb24gcmVjb2duaXplIG1vcmUga2luZHMgY291
bGQgYnJlYWsgdGhpbmdzLgogICAgIGJvb2wgaXNTdGFja01lbW9yeSgpIGNvbnN0OwogCiAgICAg
Ym9vbCBpc1JlbENvbmQoKSBjb25zdApAQCAtNjU4LDEyICs3MDEsMTggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4ga2luZCgpID09IERvdWJsZUNvbmQ7CiAgICAgfQogCisgICAgYm9vbCBpc1N0
YXR1c0NvbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBTdGF0dXND
b25kOworICAgIH0KKwogICAgIGJvb2wgaXNDb25kaXRpb24oKSBjb25zdAogICAgIHsKICAgICAg
ICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNl
IFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXND
b25kOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC03NzQsMTAgKzgyMywxNiBAQCBwdWJsaWM6CiAgICAgICAg
IEFTU0VSVChraW5kKCkgPT0gQmlnSW1tKTsKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2
b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG1fb2Zmc2V0KSk7CiAgICAgfQorICAgIAorICAg
IEFpcjo6VG1wIHB0cigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoa2luZCgpID09IFNp
bXBsZUFkZHIpOworICAgICAgICByZXR1cm4gbV9iYXNlOworICAgIH0KIAogICAgIEFpcjo6VG1w
IGJhc2UoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBBZGRyIHx8IGtp
bmQoKSA9PSBJbmRleCk7CisgICAgICAgIEFTU0VSVChraW5kKCkgPT0gU2ltcGxlQWRkciB8fCBr
aW5kKCkgPT0gQWRkciB8fCBraW5kKCkgPT0gSW5kZXgpOwogICAgICAgICByZXR1cm4gbV9iYXNl
OwogICAgIH0KIApAQCAtODQ0LDYgKzg5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBCaWdJ
bW06CiAgICAgICAgIGNhc2UgQml0SW1tOgogICAgICAgICBjYXNlIEJpdEltbTY0OgorICAgICAg
ICBjYXNlIFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgY2FzZSBJbmRl
eDoKICAgICAgICAgY2FzZSBTdGFjazoKQEAgLTg1MSw2ICs5MDcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERv
dWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFs
OgogICAgICAgICBjYXNlIFdpZHRoQXJnOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04
NzIsMTAgKzkyOSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAg
Y2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3Rh
dHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBjYXNlIFdpZHRoQXJnOgog
ICAgICAgICBjYXNlIEludmFsaWQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgogICAgICAgICBjYXNlIEluZGV4
OgogICAgICAgICBjYXNlIFN0YWNrOgpAQCAtMTA0OSw2ICsxMTA4LDggQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuIGlzVmFsaWRCaXRJbW1Gb3JtKHZhbHVlKCkpOwogICAgICAgICBjYXNl
IEJpdEltbTY0OgogICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRCaXRJbW02NEZvcm0odmFsdWUo
KSk7CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGNhc2UgU3RhY2s6CiAgICAgICAgIGNhc2UgQ2Fs
bEFyZzoKQEAgLTEwNTgsNiArMTExOSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25k
OgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAg
ICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2Ug
V2lkdGhBcmc6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNzAsNiArMTEzMiw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgICAgIGNhc2Ug
VG1wOgorICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAg
ICAgICAgIGZ1bmN0b3IobV9iYXNlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTExMCw2ICsx
MTczLDcgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUKGlzQW55VXNlKGFyZ1JvbGUpIHx8
IGlzQW55RGVmKGFyZ1JvbGUpKTsKICAgICAgICAgICAgIGZ1bmN0b3IobV9iYXNlLCBhcmdSb2xl
LCBhcmdCYW5rLCBhcmdXaWR0aCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBT
aW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmFz
ZSwgVXNlLCBHUCwgYXJnUm9sZSA9PSBVc2VBZGRyID8gYXJnV2lkdGggOiBwb2ludGVyV2lkdGgo
KSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNDQsOSArMTIwOCwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBBU1NFUlQoaXNJbW0oKSk7CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihwb2ludGVyVmFsdWUoKSk7CiAgICAgfQotCisgICAgCiAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MgYXNBZGRyZXNzKCkgY29uc3QKICAgICB7CisgICAgICAgIGlm
IChpc1NpbXBsZUFkZHIoKSkKKyAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhtX2Jhc2UuZ3ByKCkpOwogICAgICAgICBBU1NFUlQoaXNBZGRyKCkpOwogICAgICAgICBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLmdwcigpLCBzdGF0aWNfY2FzdDxp
bnQzMl90PihtX29mZnNldCkpOwogICAgIH0KQEAgLTExNzcsNiArMTI0MywxMiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0
aW9uPihtX29mZnNldCk7CiAgICAgfQogICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpTdGF0dXND
b25kaXRpb24gYXNTdGF0dXNDb25kaXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzU3RhdHVzQ29uZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1i
bGVyOjpTdGF0dXNDb25kaXRpb24+KG1fb2Zmc2V0KTsKKyAgICB9CisgICAgCiAgICAgLy8gVGVs
bHMgeW91IGlmIHRoZSBBcmcgaXMgaW52ZXJ0aWJsZS4gT25seSBjb25kaXRpb24gYXJndW1lbnRz
IGFyZSBpbnZlcnRpYmxlLCBhbmQgZXZlbiBmb3IgdGhvc2UsIHRoZXJlCiAgICAgLy8gYXJlIGEg
ZmV3IGV4Y2VwdGlvbnMgLSBub3RhYmx5IE92ZXJmbG93IGFuZCBTaWduZWQuCiAgICAgYm9vbCBp
c0ludmVydGlibGUoKSBjb25zdApAQCAtMTE4NCw2ICsxMjU2LDcgQEAgcHVibGljOgogICAgICAg
ICBzd2l0Y2ggKGtpbmQoKSkgewogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2Ug
RG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlcjo6aXNJbnZlcnRpYmxlKGFzUmVzdWx0Q29uZGl0aW9uKCkpOwpAQCAtMTIwNCw2ICsx
Mjc3LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHJlc0NvbmQoTWFjcm9Bc3NlbWJs
ZXI6OmludmVydChhc1Jlc3VsdENvbmRpdGlvbigpKSk7CiAgICAgICAgIGNhc2UgRG91YmxlQ29u
ZDoKICAgICAgICAgICAgIHJldHVybiBkb3VibGVDb25kKE1hY3JvQXNzZW1ibGVyOjppbnZlcnQo
YXNEb3VibGVDb25kaXRpb24oKSkpOworICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CisgICAgICAg
ICAgICByZXR1cm4gc3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzU3RhdHVzQ29u
ZGl0aW9uKCkpKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDIx
MzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzUsNiArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7IG5hbWVzcGFjZQogCiBjb25zdCBjaGFyKiBjb25zdCBCYXNpY0Jsb2NrOjpkdW1wUHJlZml4
ID0gIiMiOwogCit2b2lkIEJhc2ljQmxvY2s6OnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2Nr
IHRhcmdldCkKK3sKKyAgICBtX3N1Y2Nlc3NvcnMucmVzaXplKDEpOworICAgIG1fc3VjY2Vzc29y
c1swXSA9IHRhcmdldDsKK30KKwordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1
ZW50ZWRCbG9jayB0YWtlbiwgRnJlcXVlbnRlZEJsb2NrIG5vdFRha2VuKQoreworICAgIG1fc3Vj
Y2Vzc29ycy5yZXNpemUoMik7CisgICAgbV9zdWNjZXNzb3JzWzBdID0gdGFrZW47CisgICAgbV9z
dWNjZXNzb3JzWzFdID0gbm90VGFrZW47Cit9CisKIGJvb2wgQmFzaWNCbG9jazo6YWRkUHJlZGVj
ZXNzb3IoQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgcmV0dXJuIEIzOjphZGRQcmVkZWNlc3Nv
cih0aGlzLCBibG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJh
c2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckJhc2ljQmxvY2suaAkocmV2aXNpb24gMjEzNDI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMywxMSBA
QAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3Mg
R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OworCituYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQmxv
Y2tJbnNlcnRpb25TZXQ7CiBjbGFzcyBDb2RlOwpAQCAtOTksNiArMTAzLDkgQEAgcHVibGljOgog
ICAgIGNvbnN0IFN1Y2Nlc3Nvckxpc3QmIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1
Y2Nlc3NvcnM7IH0KICAgICBTdWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4gbV9z
dWNjZXNzb3JzOyB9CiAKKyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKTsK
KyAgICB2b2lkIHNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrLCBGcmVxdWVudGVkQmxvY2sp
OworCiAgICAgQmFzaWNCbG9jayogc3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIHN1Y2Nlc3NvcihpbmRleCkuYmxvY2soKTsgfQogICAgIEJhc2ljQmxvY2sqJiBz
dWNjZXNzb3JCbG9jayh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4KS5i
bG9jaygpOyB9CiAgICAgU3VjY2Vzc29yQ29sbGVjdGlvbjxCYXNpY0Jsb2NrLCBTdWNjZXNzb3JM
aXN0PiBzdWNjZXNzb3JCbG9ja3MoKQpAQCAtMTMzLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBDb2RlOwog
ICAgIGZyaWVuZCBjbGFzcyBJbnNlcnRpb25TZXQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZy
aWVuZCBjbGFzcyBCMzo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIAogICAgIEJhc2lj
QmxvY2sodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2Nr
SW5zZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJBaXJCbG9ja0luc2VydGlvblNldC5oIgorCisjaWYgRU5BQkxFKEIzX0pJ
VCkKKworI2luY2x1ZGUgIkFpckJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisj
aW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7IG5hbWVzcGFjZSBBaXIgeworCitCbG9ja0luc2VydGlvblNldDo6QmxvY2tJbnNlcnRpb25T
ZXQoQ29kZSAmY29kZSkKKyAgICA6IEdlbmVyaWNCbG9ja0luc2VydGlvblNldChjb2RlLm1fYmxv
Y2tzKQoreworfQorCitCbG9ja0luc2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KCkKK3sK
K30KKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxF
KEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0lu
c2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQmxvY2tJbnNlcnRpb25TZXQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM0dlbmVy
aWNCbG9ja0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3
dGYvSW5zZXJ0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK2NsYXNzIEluc2VydGlvblNldDsK
KwordHlwZWRlZiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz46OkJsb2NrSW5z
ZXJ0aW9uIEJsb2NrSW5zZXJ0aW9uOworCitjbGFzcyBCbG9ja0luc2VydGlvblNldCA6IHB1Ymxp
YyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9jaz4geworcHVibGljOgorICAgIEJs
b2NrSW5zZXJ0aW9uU2V0KENvZGUmKTsKKyAgICB+QmxvY2tJbnNlcnRpb25TZXQoKTsKKyAgICAK
KyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGV2ZW50dWFsbHkgaW1wbGVtZW50IEIzOjpCbG9ja0lu
c2VydGlvblNldCdzIHNwbGl0Rm9yd2FyZCgpLgorfTsKKworfSB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDI0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFpckR1bXBB
c0pTLmgiCi0KLSNpZiBFTkFCTEUoQjNfSklUKQotCi0jaW5jbHVkZSAiQWlyQ29kZS5oIgotI2lu
Y2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMg
eyBuYW1lc3BhY2UgQWlyIHsKLQotbmFtZXNwYWNlIHsKLQotQ1N0cmluZyB2YXJOYW1lRm9yQmxv
Y2tBdEluZGV4KHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoImJiIiwg
aW5kZXgpOwotfQotCi1DU3RyaW5nIHZhck5hbWUoQmFzaWNCbG9jayogYmxvY2spCi17Ci0gICAg
cmV0dXJuIHZhck5hbWVGb3JCbG9ja0F0SW5kZXgoYmxvY2stPmluZGV4KCkpOwotfQotCi1DU3Ry
aW5nIHZhck5hbWVGb3JTdGFja1Nsb3RBdEluZGV4KHVuc2lnbmVkIGluZGV4KQotewotICAgIHJl
dHVybiB0b0NTdHJpbmcoInNsb3QiLCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShTdGFj
a1Nsb3QqIHNsb3QpCi17Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JTdGFja1Nsb3RBdEluZGV4KHNs
b3QtPmluZGV4KCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWUoUmVnIHJlZykKLXsKLSAgICByZXR1
cm4gdG9DU3RyaW5nKCJSZWcuIiwgcmVnLmRlYnVnTmFtZSgpKTsKLX0KLQotQ1N0cmluZyB2YXJO
YW1lRm9yVG1wV2l0aEJhbmtBbmRJbmRleChCYW5rIGJhbmssIHVuc2lnbmVkIGluZGV4KQotewot
ICAgIHJldHVybiB0b0NTdHJpbmcoYmFuayA9PSBGUCA/ICJmIiA6ICIiLCAidG1wIiwgaW5kZXgp
OwotfQotCi1DU3RyaW5nIHZhck5hbWUoVG1wIHRtcCkKLXsKLSAgICBpZiAodG1wLmlzUmVnKCkp
Ci0gICAgICAgIHJldHVybiB2YXJOYW1lKHRtcC5yZWcoKSk7Ci0gICAgcmV0dXJuIHZhck5hbWVG
b3JUbXBXaXRoQmFua0FuZEluZGV4KEFyZyh0bXApLmJhbmsoKSwgdG1wLnRtcEluZGV4KCkpOwot
fQotCi19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotdm9pZCBkdW1wQXNKUyhDb2RlJiBjb2Rl
LCBQcmludFN0cmVhbSYgb3V0KQotewotICAgIG91dC5wcmludGxuKCJsZXQgY29kZSA9IG5ldyBD
b2RlKCk7Iik7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGUuc2l6ZSgp
OyArK2kpCi0gICAgICAgIG91dC5wcmludGxuKCJsZXQgIiwgdmFyTmFtZUZvckJsb2NrQXRJbmRl
eChpKSwgIiA9IGNvZGUuYWRkQmxvY2soKTsiKTsKLSAgICAKLSAgICBvdXQucHJpbnRsbigibGV0
IGhhc2g7Iik7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZS5zdGFja1Nsb3Rz
KCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgU3RhY2tTbG90KiBzbG90ID0gY29kZS5zdGFja1Ns
b3RzKClbaV07Ci0gICAgICAgIGlmIChzbG90KSB7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigi
bGV0ICIsIHZhck5hbWUoc2xvdCksICIgPSBjb2RlLmFkZFN0YWNrU2xvdCgiLCBzbG90LT5ieXRl
U2l6ZSgpLCAiLCAiLCBzbG90LT5raW5kKCksICIpOyIpOwotICAgICAgICAgICAgaWYgKHNsb3Qt
Pm9mZnNldEZyb21GUCgpKQotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoc2xv
dCksICIuc2V0T2Zmc2V0RnJvbUZQKCIsIHNsb3QtPm9mZnNldEZyb21GUCgpLCAiKTsiKTsKLSAg
ICAgICAgICAgIG91dC5wcmludGxuKCJoYXNoID0gIiwgdmFyTmFtZShzbG90KSwgIi5oYXNoKCk7
Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiaWYgKGhhc2ggIT0gIiwgc2xvdC0+anNIYXNo
KCksICIpIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiICAgIHRocm93IG5ldyBFcnJvcihc
IkJhZCBoYXNoOiBcIiArIGhhc2gpOyIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91
dC5wcmludGxuKCJjb2RlLmFkZFN0YWNrU2xvdCgxLCBTcGlsbCk7Iik7Ci0gICAgfQotICAgIAot
ICAgIGZvckVhY2hCYW5rKAotICAgICAgICBbJl0gKEJhbmsgYmFuaykgewotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gY29kZS5udW1UbXBzKGJhbmspOyBpLS07KSB7Ci0gICAgICAgICAg
ICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICJsZXQgIiwgdmFyTmFtZUZv
clRtcFdpdGhCYW5rQW5kSW5kZXgoYmFuaywgaSksICIgPSBjb2RlLm5ld1RtcCgiLCBiYW5rLCAi
KTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgCi0gICAgb3V0LnByaW50bG4o
ImxldCBpbnN0OyIpOwotICAgIG91dC5wcmludGxuKCJsZXQgYXJnOyIpOwotICAgIAotICAgIGZv
ciAoQmFzaWNCbG9jayogYmxvY2sgOiBjb2RlKSB7Ci0gICAgICAgIGZvciAoRnJlcXVlbnRlZEJs
b2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIG91dC5w
cmludGxuKAotICAgICAgICAgICAgICAgIHZhck5hbWUoYmxvY2spLCAiLnN1Y2Nlc3NvcnMucHVz
aChuZXcgRnJlcXVlbnRlZEJsb2NrKCIsCi0gICAgICAgICAgICAgICAgdmFyTmFtZShzdWNjZXNz
b3IuYmxvY2soKSksICIsICIsIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSwgIikpOyIpOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxv
Y2stPnByZWRlY2Vzc29ycygpKQotICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9j
ayksICIucHJlZGVjZXNzb3JzLnB1c2goIiwgdmFyTmFtZShwcmVkZWNlc3NvciksICIpOyIpOwot
ICAgICAgICAKLSAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZG8gc29tZXRoaW5nIGZvciBmbGFncy4KLSAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3NTEKLSAg
ICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0ID0gbmV3IEluc3QoIiwgaW5zdC5raW5kLm9wY29k
ZSwgIik7Iik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAg
ICAgICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUsIEJhbmssIFdpZHRoKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYXJnLmtpbmQoKSkgewotICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFyZzo6SW52YWxpZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VG1w
OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVU
bXAoIiwgdmFyTmFtZShhcmcudG1wKCkpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQXJnOjpJbW06Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0g
QXJnLmNyZWF0ZUltbSgiLCBhcmcudmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFyZzo6QmlnSW1tOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVCaWdJbW0oIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFs
dWUoKSksICIsICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
MzJfdD4oYXJnLnZhbHVlKCkgPj4gMzIpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQXJnOjpCaXRJbW06Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJn
ID0gQXJnLmNyZWF0ZUJpdEltbSgiLCBhcmcudmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFyZzo6Qml0SW1tNjQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUJp
dEltbTY0KCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJf
dD4oYXJnLnZhbHVlKCkpLCAiLCAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PGludDMyX3Q+KGFyZy52YWx1ZSgpID4+IDMyKSwgIik7Iik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFyZzo6QWRkcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmlu
dGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3JlYXRlQWRkcigi
LCB2YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OlN0YWNrOgotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVh
dGVTdGFjaygiLCB2YXJOYW1lKGFyZy5zdGFja1Nsb3QoKSksICIsICIsIGFyZy5vZmZzZXQoKSwg
Iik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6Q2FsbEFyZzoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlQ2FsbEFyZygiLCBh
cmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkluZGV4
OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVJbmRleCgiLCB2YXJOYW1lKGFyZy5iYXNlKCkp
LCAiLCAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhck5hbWUoYXJnLmluZGV4KCkp
LCAiLCAiLCBhcmcuc2NhbGUoKSwgIiwgIiwgYXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXJnOjpSZWxDb25kOgotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVSZWxDb25kKCIsIGFyZy5hc1JlbGF0aW9uYWxD
b25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6UmVzQ29u
ZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRl
UmVzQ29uZCgiLCBhcmcuYXNSZXN1bHRDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFyZzo6RG91YmxlQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlRG91YmxlQ29uZCgiLCBhcmcuYXNEb3VibGVDb25k
aXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U3BlY2lhbDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlU3Bl
Y2lhbCgpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OldpZHRoQXJnOgotICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVXaWR0aEFy
ZygiLCBhcmcud2lkdGgoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgb3V0LnByaW50bG4oImluc3QuYXJncy5wdXNoKGFyZyk7Iik7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2Rl
ID09IFBhdGNoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGluc3QuaGFzTm9uQXJnRWZmZWN0cygp
KQotICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5wYXRjaEhhc05vbkFyZ0Vm
ZmVjdHMgPSB0cnVlOyIpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKCJpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzID0gbmV3IFNldCgpOyIpOwotICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncyA9IG5ldyBT
ZXQoKTsiKTsKLSAgICAgICAgICAgICAgICBpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCku
Zm9yRWFjaCgKLSAgICAgICAgICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncy5h
ZGQoIiwgdmFyTmFtZShyZWcpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICAgICAgaW5zdC5leHRyYUNsb2JiZXJlZFJlZ3MoKS5mb3JFYWNoKAotICAgICAgICAg
ICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludGxuKCJpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAiKTsi
KTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgb3V0LnByaW50bG4oImluc3QucGF0Y2hBcmdEYXRhID0gW107Iik7Ci0gICAgICAgICAg
ICAgICAgaW5zdC5mb3JFYWNoQXJnKAotICAgICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFy
Zzo6Um9sZSByb2xlLCBCYW5rIGJhbmssIFdpZHRoIHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdC5w
YXRjaEFyZ0RhdGEucHVzaCh7cm9sZTogQXJnLiIsIHJvbGUsICIsIHR5cGU6ICIsIGJhbmssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgd2lkdGg6ICIsIHdpZHRoLCAifSk7Iik7Ci0g
ICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29kZSA9PSBDQ2FsbCB8fCBpbnN0LmtpbmQub3Bjb2Rl
ID09IENvbGRDQ2FsbCkgewotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxs
VHlwZSA9ICIsIGluc3Qub3JpZ2luLT50eXBlKCkpOwotICAgICAgICAgICAgICAgIG91dC5wcmlu
dGxuKCJpbnN0LmNDYWxsQXJnVHlwZXMgPSBbXTsiKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgaW5zdC5vcmlnaW4tPm51bUNoaWxkcmVuKCk7ICsraSkKLSAgICAg
ICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuY0NhbGxBcmdUeXBlcy5wdXNoKCIsIGlu
c3Qub3JpZ2luLT5jaGlsZChpKS0+dHlwZSgpLCAiKTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgb3V0LnByaW50bG4oImhhc2ggPSBpbnN0Lmhhc2goKTsiKTsK
LSAgICAgICAgICAgIG91dC5wcmludGxuKCJpZiAoaGFzaCAhPSAiLCBpbnN0LmpzSGFzaCgpLCAi
KSIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oIiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQg
aGFzaDogXCIgKyBoYXNoKTsiKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgb3V0LnByaW50
bG4odmFyTmFtZShibG9jayksICIuYXBwZW5kKGluc3QpOyIpOwotICAgICAgICB9Ci0gICAgfQot
fQotCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCi0KLSNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pT
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNK
Uy5oCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckR1bXBBc0pTLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKEIzX0pJVCkKLQotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Ci0KLWNsYXNzIENvZGU7Ci0KLS8v
IFRoaXMgaXMgdXNlZCBmb3IgYmVuY2htYXJraW5nLiBWYXJpb3VzIG9wZXJhdGlvbnMgb24gQWly
IGFyZSBpbnRlcmVzdGluZyBmcm9tIGEgYmVuY2htYXJraW5nCi0vLyBzdGFuZHBvaW50LiBXZSBj
YW4gd3JpdGUgc29tZSBBaXIgcGhhc2VzIGluIEpTIGFuZCB0aGVuIHVzZSB0aGF0IHRvIGJlbmNo
bWFyayBKUy4gVGhlIGJlbmNobWFyawotLy8gaXMgY2FsbGVkIEpTQWlyLCBhbmQgaXQncyBpbiBQ
ZXJmb3JtYW5jZVRlc3RzL0pTQWlyLgotdm9pZCBkdW1wQXNKUyhDb2RlJiwgUHJpbnRTdHJlYW0m
KTsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5BQkxF
KEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRl
RGVhZENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE4LDYgKzExOCw4IEBAIGJvb2wgZWxpbWluYXRlRGVhZENvZGUoQ29kZSYgY29kZSkK
ICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5k
ZXggPSBjb2RlLnNpemUoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSBjb2RlW2Jsb2NrSW5kZXhdOworICAgICAgICAgICAgaWYgKCFibG9jaykKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5zdElu
ZGV4ID0gYmxvY2stPnNpemUoKTsgaW5zdEluZGV4LS07KQogICAgICAgICAgICAgICAgIGhhbmRs
ZUluc3QoYmxvY2stPmF0KGluc3RJbmRleCkpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEzNDI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQWlyQWxsb2NhdGVSZWdpc3RlcnNC
eUdyYXBoQ29sb3JpbmcuaCIKICNpbmNsdWRlICJBaXJBbGxvY2F0ZVN0YWNrLmgiCiAjaW5jbHVk
ZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFpckR1bXBBc0pTLmgiCiAjaW5jbHVkZSAiQWlyRWxp
bWluYXRlRGVhZENvZGUuaCIKICNpbmNsdWRlICJBaXJGaXhPYnZpb3VzU3BpbGxzLmgiCiAjaW5j
bHVkZSAiQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmgiCkBAIC02MiwxNyArNjEsMTkgQEAg
dm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogewogICAgIFRpbWluZ1Njb3Bl
IHRpbWluZ1Njb3BlKCJBaXI6OnByZXBhcmVGb3JHZW5lcmF0aW9uIik7CiAgICAgCisgICAgLy8g
SWYgd2UncmUgZG9pbmcgc3VwZXIgdmVyYm9zZSBkdW1waW5nLCB0aGUgcGhhc2Ugc2NvcGUgb2Yg
YW55IHBoYXNlIHdpbGwgYWxyZWFkeSBkbyBhIGR1bXAuCisgICAgaWYgKHNob3VsZER1bXBJUihB
aXJNb2RlKSAmJiAhc2hvdWxkRHVtcElSQXRFYWNoUGhhc2UoQWlyTW9kZSkpIHsKKyAgICAgICAg
ZGF0YUxvZygiSW5pdGlhbCBhaXI6XG4iKTsKKyAgICAgICAgZGF0YUxvZyhjb2RlKTsKKyAgICB9
CisgICAgCiAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IHRoZSBpbmNvbWluZyBjb2RlIHRvIGhhdmUg
cHJlZGVjZXNzb3JzIGNvbXB1dGVkLgogICAgIGNvZGUucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAg
ICAKICAgICBpZiAoc2hvdWxkVmFsaWRhdGVJUigpKQogICAgICAgICB2YWxpZGF0ZShjb2RlKTsK
IAotICAgIC8vIElmIHdlJ3JlIGRvaW5nIHN1cGVyIHZlcmJvc2UgZHVtcGluZywgdGhlIHBoYXNl
IHNjb3BlIG9mIGFueSBwaGFzZSB3aWxsIGFscmVhZHkgZG8gYSBkdW1wLgotICAgIGlmIChzaG91
bGREdW1wSVIoQWlyTW9kZSkgJiYgIXNob3VsZER1bXBJUkF0RWFjaFBoYXNlKEFpck1vZGUpKSB7
Ci0gICAgICAgIGRhdGFMb2coIkluaXRpYWwgYWlyOlxuIik7Ci0gICAgICAgIGRhdGFMb2coY29k
ZSk7Ci0gICAgfQorICAgIHNpbXBsaWZ5Q0ZHKGNvZGUpOwogCiAgICAgbG93ZXJNYWNyb3MoY29k
ZSk7CiAKQEAgLTEwNywyMyArMTA4LDExIEBAIHZvaWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29k
ZSYgY29kZSkKICAgICAvLyBkb2VzIHRoaW5ncyBsaWtlIGlkZW50aWZ5IHdoaWNoIGNhbGxlZS1z
YXZlcyB3ZSdyZSB1c2luZyBhbmQgc2F2ZXMgdGhlbS4KICAgICBoYW5kbGVDYWxsZWVTYXZlcyhj
b2RlKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6ZHVtcEFpckFzSlNCZWZvcmVBbGxvY2F0ZVN0
YWNrKCkpIHsKLSAgICAgICAgZGF0YUxvZygiRHVtcGluZyBBaXIgYXMgSlMgYmVmb3JlIGFsbG9j
YXRlU3RhY2s6XG4iKTsKLSAgICAgICAgZHVtcEFzSlMoY29kZSwgV1RGOjpkYXRhRmlsZSgpKTsK
LSAgICAgICAgZGF0YUxvZygiQWlyIGhhc2g6ICIsIGNvZGUuanNIYXNoKCksICJcbiIpOwotICAg
IH0KLQogICAgIC8vIFRoaXMgdHVybnMgYWxsIFN0YWNrIGFuZCBDYWxsQXJnIEFyZ3MgaW50byBB
ZGRyIGFyZ3MgdGhhdCB1c2UgdGhlIGZyYW1lIHBvaW50ZXIuIEl0IGRvZXMKICAgICAvLyB0aGlz
IGJ5IGZpcnN0LWZpdCBhbGxvY2F0aW5nIHN0YWNrIHNsb3RzLiBJdCBzaG91bGQgYmUgcHJldHR5
IGRhcm4gY2xvc2UgdG8gb3B0aW1hbCwgc28gd2UKICAgICAvLyBzaG91bGRuJ3QgaGF2ZSB0byB3
b3JyeSBhYm91dCB0aGlzIHZlcnkgbXVjaC4KICAgICBhbGxvY2F0ZVN0YWNrKGNvZGUpOwogICAg
IAotICAgIGlmIChPcHRpb25zOjpkdW1wQWlyQWZ0ZXJBbGxvY2F0ZVN0YWNrKCkpIHsKLSAgICAg
ICAgZGF0YUxvZygiRHVtcGluZyBBaXIgYWZ0ZXIgYWxsb2NhdGVTdGFjazpcbiIpOwotICAgICAg
ICBkYXRhTG9nKGNvZGUpOwotICAgICAgICBkYXRhTG9nKCJBaXIgaGFzaDogIiwgY29kZS5qc0hh
c2goKSwgIlxuIik7Ci0gICAgfQotCiAgICAgLy8gSWYgd2UgY29hbGVzY2VkIG1vdmVzIHRoZW4g
d2UgY2FuIHVuYnJlYWsgY3JpdGljYWwgZWRnZXMuIFRoaXMgaXMgdGhlIG1haW4gcmVhc29uIGZv
ciB0aGlzCiAgICAgLy8gcGhhc2UuCiAgICAgc2ltcGxpZnlDRkcoY29kZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCShyZXZpc2lvbiAy
MTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNzMgQEAgaW5saW5lIGJvb2wgaXNYODZVRGl2
NjRWYWxpZChjb25zdCBJbnN0JgogICAgIHJldHVybiBpc1g4NkRpdkhlbHBlclZhbGlkKGluc3Qp
OwogfQogCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGNvbnN0IEluc3QmIGlu
c3QpCit7CisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICBzd2l0Y2ggKGluc3QuYXJn
cy5zaXplKCkpIHsKKyAgICBjYXNlIDM6CisgICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMF0gPT0g
VG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICBjYXNlIDU6CisgICAgICAgIHJldHVybiBpbnN0
LmFyZ3NbMV0gPT0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorI2Vsc2UgLy8gQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkK
KyAgICBVTlVTRURfUEFSQU0oaW5zdCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8vIENQ
VShYODYpIHx8IENQVShYODZfNjQpCit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ry
b25nQ0FTVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KQorICAgIHJldHVybiBpbnN0LmFyZ3NbMV0gPT0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsK
KyNlbHNlIC8vIENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgVU5VU0VEX1BBUkFNKGluc3Qp
OworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZiAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQor
fQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0
KQoreworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxp
bmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzE2VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAg
ICByZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wg
aXNBdG9taWNTdHJvbmdDQVMzMlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJu
IGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQXRvbWlj
U3Ryb25nQ0FTNjRWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21p
Y1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0
cm9uZ0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0
b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21p
Y1N0cm9uZ0NBUzE2VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNCcmFu
Y2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hB
dG9taWNTdHJvbmdDQVMzMlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlz
QnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJh
bmNoQXRvbWljU3Ryb25nQ0FTNjRWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVy
biBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCiB9IH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lv
biAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNv
ZGVzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTE3LDYgKzExNyw3IEBAIEFkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAg
ICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAg
eDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKICAgICB4ODY6IFRtcCwgSW5kZXgK
IApAQCAtMTM1LDkgKzEzNiwxMiBAQCB4ODY6IEFkZDE2IFU6RzoxNiwgVUQ6RzoxNgogNjQ6IEFk
ZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAg
ICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAg
eDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgK
IAogNjQ6IEFkZDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBJbW0sIFRtcCwgVG1wCkBA
IC0xNjYsOSArMTcwLDEyIEBAIHg4NjogQWRkRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiBTdWIzMiBV
Okc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4
NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6
IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogCiBh
cm02NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIsIEQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAg
LTE3Niw5ICsxODMsMTIgQEAgYXJtNjQ6IFN1YjMyIFU6RzozMiwgVTpHOjMyLCBEOkc6MzIKIDY0
OiBTdWI2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRy
CisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAor
ICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIElu
ZGV4CiAKIGFybTY0OiBTdWI2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAs
IFRtcApAQCAtMjA0LDkgKzIxNCwxMiBAQCB4ODY6IFN1YkZsb2F0IFU6RjozMiwgVUQ6RjozMgog
TmVnMzIgVVpEOkc6MzIKICAgICBUbXAKICAgICB4ODY6IEFkZHIKKyAgICB4ODY6IEluZGV4CiAK
IDY0OiBOZWc2NCBVRDpHOjY0CiAgICAgVG1wCisgICAgeDg2OiBBZGRyCisgICAgeDg2OiBJbmRl
eAogCiBhcm02NDogTmVnYXRlRG91YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAg
LTMzMCw4ICszNDMsMTEgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAg
ICAgeDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4
CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwg
QWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6
Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTMzOSw3ICszNTUsMTMgQEAgQW5kMzIgVTpHOjMy
LCBVWkQ6RzozMgogCiB4ODZfNjQ6IEFuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1w
Ci0gICAgeDg2OiBJbW0sIFRtcAorICAgIEltbSwgVG1wCisgICAgSW1tLCBBZGRyCisgICAgSW1t
LCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKyAgICBBZGRyLCBUbXAKKyAg
ICBJbmRleCwgVG1wCiAKIEFuZERvdWJsZSBVOkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1w
LCBUbXAsIFRtcApAQCAtNDU5LDggKzQ4MSwxMSBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKICAg
ICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4
NjogVG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAg
ICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IE9yNjQgVTpHOjY0
LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ2OSw2ICs0OTQsMTIgQEAg
T3IzMiBVOkc6MzIsIFVaRDpHOjMyCiA2NDogT3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAs
IFRtcAogICAgIHg4NjogSW1tLCBUbXAKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1t
LCBJbmRleAorICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2
OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKIAogWG9yMzIgVTpHOjMyLCBVOkc6MzIs
IFpEOkc6MzIKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00ODAsOCArNTExLDExIEBAIFhvcjMyIFU6
RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6
IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAg
eDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgK
IAogNjQ6IFhvcjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBA
IC00OTAsNiArNTI0LDExIEBAIFhvcjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBYb3I2NCBVOkc6
NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBU
bXAsIEluZGV4CisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICB4
ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBUbXAKIAog
YXJtNjQ6IE5vdDMyIFU6RzozMiwgWkQ6RzozMgpAQCAtNDk4LDEzICs1MzcsMTUgQEAgYXJtNjQ6
IE5vdDMyIFU6RzozMiwgWkQ6RzozMgogeDg2OiBOb3QzMiBVWkQ6RzozMgogICAgIFRtcAogICAg
IEFkZHIKKyAgICBJbmRleAogCiBhcm02NDogTm90NjQgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAs
IFRtcAogCi14ODY6IE5vdDY0IFVEOkc6NjQKK3g4Nl82NDogTm90NjQgVUQ6Rzo2NAogICAgIFRt
cAogICAgIEFkZHIKKyAgICBJbmRleAogCiBhcm02NDogQWJzRG91YmxlIFU6Rjo2NCwgRDpGOjY0
CiAgICAgVG1wLCBUbXAKQEAgLTY2OCwyNyArNzA5LDM3NyBAQCBMb2FkOCBVOkc6OCwgWkQ6Rzoz
MgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTggVTpHOjgsIFpEOkc6
MzIgL2VmZmVjdHMKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAg
IFNpbXBsZUFkZHIsIFRtcAorCiBTdG9yZTggVTpHOjgsIEQ6Rzo4CiAgICAgVG1wLCBJbmRleAog
ICAgIFRtcCwgQWRkcgogICAgIHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBBZGRyCiAK
K1N0b3JlUmVsOCBVOkc6OCwgRDpHOjggL2VmZmVjdHMKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAg
ICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRy
CisgICAgVG1wLCBTaW1wbGVBZGRyCisKIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6
RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcThTaWduZWRFeHRl
bmRUbzMyIFU6Rzo4LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4
ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwogTG9hZDE2IFU6RzoxNiwgWkQ6
RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAorTG9hZEFjcTE2IFU6RzoxNiwg
WkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1w
CisgICAgU2ltcGxlQWRkciwgVG1wCisKIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBa
RDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTZTaWduZWRF
eHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisg
ICAgeDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisKIFN0b3JlMTYgVTpHOjE2
LCBEOkc6MTYKICAgICBUbXAsIEluZGV4CiAgICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIElu
ZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKworU3RvcmVSZWwxNiBVOkc6MTYsIEQ6RzoxNiAvZWZm
ZWN0cworICAgIHg4NjogVG1wLCBJbmRleAorICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBJ
bW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICBUbXAsIFNpbXBsZUFkZHIKKworTG9h
ZEFjcTMyIFU6RzozMiwgWkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAg
eDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisKK1N0b3JlUmVsMzIgVTpHOjMy
LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5k
ZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIFRtcCwgU2lt
cGxlQWRkcgorCis2NDogTG9hZEFjcTY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIHg4
NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisK
KzY0OiBTdG9yZVJlbDY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIHg4NjogVG1wLCBB
ZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IElt
bSwgSW5kZXgKKyAgICBUbXAsIFNpbXBsZUFkZHIKKworIyBUaGUgZmlyc3Qgb3BlcmFuZCBpcyBy
YXguCisjIEZJWE1FOiBUaGlzIGZvcm11bGF0aW9uIG1lYW5zIHRoYXQgdGhlIGJvb2xlYW4gcmVz
dWx0IGNhbm5vdCBiZSBwdXQgaW4gZWF4LCBldmVuIHRob3VnaCBhbGwgdXNlcnMKKyMgb2YgdGhp
cyB3b3VsZCBiZSBPSyB3aXRoIHRoYXQuCit4ODY6IEF0b21pY1N0cm9uZ0NBUzggVTpHOjMyLCBV
RDpHOjgsIFU6Rzo4LCBVRDpHOjgsIFpEOkc6OCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRt
cCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1w
CisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMTYgVTpHOjMyLCBVRDpHOjE2LCBVOkc6MzIsIFVEOkc6
MTYsIFpEOkc6OCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1w
CisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4NjogQXRvbWljU3Ry
b25nQ0FTMzIgVTpHOjMyLCBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIsIFpEOkc6OCAvZWZmZWN0
cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwg
VG1wKiwgVG1wLCBJbmRleCwgVG1wCisKK3g4Nl82NDogQXRvbWljU3Ryb25nQ0FTNjQgVTpHOjMy
LCBVRDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQsIFpEOkc6OCAvZWZmZWN0cworICAgIFN0YXR1c0Nv
bmQsIFRtcCosIFRtcCwgQWRkciwgVG1wCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRl
eCwgVG1wCisKK3g4NjogQXRvbWljU3Ryb25nQ0FTOCBVRDpHOjgsIFU6Rzo4LCBVRDpHOjggL2Vm
ZmVjdHMKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4Njog
QXRvbWljU3Ryb25nQ0FTMTYgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2IC9lZmZlY3RzCisgICAg
VG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N0cm9u
Z0NBUzMyIFVEOkc6MzIsIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIFRtcCosIFRtcCwg
QWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNTdHJvbmdDQVM2NCBV
RDpHOjY0LCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAg
ICBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTOCBVOkc6MzIs
IFVEOkc6OCwgVTpHOjgsIFVEOkc6OCAvYnJhbmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwg
VG1wKiwgVG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6
IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2IFU6RzozMiwgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2
IC9icmFuY2ggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FT
MzIgVTpHOjMyLCBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIgL2JyYW5jaCAvZWZmZWN0cworICAg
IFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwg
SW5kZXgKKworeDg2XzY0OiBCcmFuY2hBdG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQs
IFU6Rzo2NCwgVUQ6Rzo2NCAvYnJhbmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwg
VG1wLCBBZGRyCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0b21p
Y0FkZDggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5k
ZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQWRkMTYgVTpH
OjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAg
IFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBZGQzMiBVOkc6MzIsIFVE
Okc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY0FkZDY0IFU6Rzo2NCwgVUQ6Rzo2
NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3Rz
CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNTdWIxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJ
bW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cit4ODY6IEF0b21pY1N1YjMyIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRk
cgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82
NDogQXRvbWljU3ViNjQgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNBbmQ4IFU6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIElu
ZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDE2IFU6
RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAg
ICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQW5kMzIgVTpHOjMyLCBV
RDpHOjMyIC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwg
QWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNBbmQ2NCBVOkc6NjQsIFVEOkc6
NjQgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRy
CisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3Rz
CisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNPcjE2IFU6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIElt
bSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisK
K3g4NjogQXRvbWljT3IzMiBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIK
KyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6
IEF0b21pY09yNjQgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAg
SW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNY
b3I4IFU6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjE2IFU6Rzox
NiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9yMzIgVTpHOjMyLCBVRDpH
OjMyIC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYb3I2NCBVOkc6NjQsIFVEOkc6NjQg
L2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY05lZzggVUQ6Rzo4IC9lZmZlY3RzCisgICAgQWRk
cgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTmVnMTYgVUQ6RzoxNiAvZWZmZWN0cworICAgIEFk
ZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05lZzMyIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBB
ZGRyCisgICAgSW5kZXgKKworeDg2XzY0OiBBdG9taWNOZWc2NCBVRDpHOjY0IC9lZmZlY3RzCisg
ICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTm90OCBVRDpHOjggL2VmZmVjdHMKKyAg
ICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOb3QxNiBVRDpHOjE2IC9lZmZlY3RzCisg
ICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTm90MzIgVUQ6RzozMiAvZWZmZWN0cwor
ICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0b21pY05vdDY0IFVEOkc6NjQgL2VmZmVj
dHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnQWRkOCBVRDpHOjgsIFVE
Okc6OCAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNYY2hnQWRkMTYgVUQ6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnQWRkMzIgVUQ6RzozMiwgVUQ6RzozMiAvZWZm
ZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYY2hn
QWRkNjQgVUQ6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBBdG9taWNYY2hnOCBVRDpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIFRt
cCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYY2hnMTYgVUQ6RzoxNiwgVUQ6
RzoxNiAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9t
aWNYY2hnMzIgVUQ6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRt
cCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNYY2hnNjQgVUQ6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0
cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworYXJtNjQ6IExvYWRMaW5rOCBVOkc6
OCwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGlu
a0FjcTggVTpHOjgsIFpEOkc6OCAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCisjIFN1
cGVyIGNvbmZ1c2luZyBmYWN0OiB0aGlzIHJldHVybnMgMCB0byBtZWFuIHN1Y2Nlc3MsIDEgdG8g
bWVhbiBmYWlsdXJlLgorYXJtNjQ6IFN0b3JlQ29uZDggVTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4IC9l
ZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDgg
VTpHOjgsIEQ6Rzo4LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAK
KworYXJtNjQ6IExvYWRMaW5rMTYgVTpHOjE2LCBaRDpHOjE2IC9lZmZlY3RzCisgICAgU2ltcGxl
QWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTE2IFU6RzoxNiwgWkQ6RzoxNiAvZWZmZWN0
cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kMTYgVTpHOjE2LCBEOkc6
MTYsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDog
U3RvcmVDb25kUmVsMTYgVTpHOjE2LCBEOkc6MTYsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAs
IFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmszMiBVOkc6MzIsIFpEOkc6MzIgL2Vm
ZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMzIgVTpHOjMy
LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNv
bmQzMiBVOkc6MzIsIEQ6RzozMiwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRk
ciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWwzMiBVOkc6MzIsIEQ6RzozMiwgRVpEOkc6OCAv
ZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGluazY0IFU6
Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9h
ZExpbmtBY3E2NCBVOkc6NjQsIFpEOkc6NjQgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAK
KworYXJtNjQ6IFN0b3JlQ29uZDY0IFU6Rzo2NCwgRDpHOjY0LCBFWkQ6Rzo4IC9lZmZlY3RzCisg
ICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDY0IFU6Rzo2NCwg
RDpHOjY0LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJt
NjQ6IERlcGVuZDMyIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgVG1wCisKK2FybTY0OiBEZXBl
bmQ2NCBVOkc6NjQsIFpEOkc6NjQKKyAgICBUbXAsIFRtcAogCiBDb21wYXJlMzIgVTpHOjMyLCBV
Okc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIFJlbENvbmQsIFRtcCwgVG1wLCBUbXAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxv
Y2tPcmRlci5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3Nyw2
ICsxNzcsMTAgQEAgdm9pZCBvcHRpbWl6ZUJsb2NrT3JkZXIoQ29kZSYgY29kZSkKICAgICAgICAg
Y2FzZSBCcmFuY2hTdWI2NDoKICAgICAgICAgY2FzZSBCcmFuY2hOZWczMjoKICAgICAgICAgY2Fz
ZSBCcmFuY2hOZWc2NDoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVM4OgorICAg
ICAgICBjYXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2OgorICAgICAgICBjYXNlIEJyYW5jaEF0
b21pY1N0cm9uZ0NBUzMyOgorICAgICAgICBjYXNlIEJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0Ogog
ICAgICAgICAgICAgaWYgKGNvZGUuZmluZE5leHRCbG9jayhibG9jaykgPT0gYmxvY2stPnN1Y2Nl
c3NvckJsb2NrKDApICYmIGJyYW5jaC5hcmdzWzBdLmlzSW52ZXJ0aWJsZSgpKSB7CiAgICAgICAg
ICAgICAgICAgc3RkOjpzd2FwKGJsb2NrLT5zdWNjZXNzb3IoMCksIGJsb2NrLT5zdWNjZXNzb3Io
MSkpOwogICAgICAgICAgICAgICAgIGJyYW5jaC5hcmdzWzBdID0gYnJhbmNoLmFyZ3NbMF0uaW52
ZXJ0ZWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJm
ZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
clBhZEludGVyZmVyZW5jZS5jcHAJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNiArNDgsNyBAQCB2b2lkIHBhZEludGVyZmVyZW5jZShDb2RlJiBjb2RlKQogICAgICAgICAg
ICAgICAgIFsmXSAoQXJnJiwgQXJnOjpSb2xlIHJvbGUsIEJhbmssIFdpZHRoKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAocm9sZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEFy
Zzo6RWFybHlEZWY6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBoYXNFYXJseURlZiA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVVc2U6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2
ZXJ5dGhpbmcuY3BwCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsx
NTUsNyBAQCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFyZzo6TGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpTY3JhdGNoOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlEZWY6CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseVpEZWY6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKFJlZyByZWcgOiBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoYmFuaykpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNldEJlZm9yZS5nZXQocmVnKSAmJiAhc2V0
QWZ0ZXIuZ2V0KHJlZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWZ0
ZXIuc2V0KHJlZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9n
ZW5lcmF0b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9v
cGNvZGVfZ2VuZXJhdG9yLnJiCShyZXZpc2lvbiAyMTM0MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE0
ICs1MSw0OSBAQCBjbGFzcyBBcmcKICAgICAgICAgQGJhbmsgPSBiYW5rCiAgICAgICAgIEB3aWR0
aCA9IHdpZHRoCiAgICAgZW5kCi0KLSAgICBkZWYgd2lkdGhDb2RlCisgICAgCisgICAgZGVmIHNl
bGYud2lkdGhDb2RlKHdpZHRoKQogICAgICAgICBpZiB3aWR0aCA9PSAiUHRyIgogICAgICAgICAg
ICAgInBvaW50ZXJXaWR0aCgpIgogICAgICAgICBlbHNlCiAgICAgICAgICAgICAiV2lkdGgje3dp
ZHRofSIKICAgICAgICAgZW5kCiAgICAgZW5kCisKKyAgICBkZWYgd2lkdGhDb2RlCisgICAgICAg
IEFyZy53aWR0aENvZGUod2lkdGgpCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYucm9sZUNv
ZGUocm9sZSkKKyAgICAgICAgY2FzZSByb2xlCisgICAgICAgIHdoZW4gIlUiCisgICAgICAgICAg
ICAiVXNlIgorICAgICAgICB3aGVuICJEIgorICAgICAgICAgICAgIkRlZiIKKyAgICAgICAgd2hl
biAiWkQiCisgICAgICAgICAgICAiWkRlZiIKKyAgICAgICAgd2hlbiAiVUQiCisgICAgICAgICAg
ICAiVXNlRGVmIgorICAgICAgICB3aGVuICJVWkQiCisgICAgICAgICAgICAiVXNlWkRlZiIKKyAg
ICAgICAgd2hlbiAiVUEiCisgICAgICAgICAgICAiVXNlQWRkciIKKyAgICAgICAgd2hlbiAiUyIK
KyAgICAgICAgICAgICJTY3JhdGNoIgorICAgICAgICB3aGVuICJFRCIKKyAgICAgICAgICAgICJF
YXJseURlZiIKKyAgICAgICAgd2hlbiAiRVpEIgorICAgICAgICAgICAgIkVhcmx5WkRlZiIKKyAg
ICAgICAgd2hlbiAiTFUiCisgICAgICAgICAgICAiTGF0ZVVzZSIKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmFpc2UKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIHJvbGVD
b2RlCisgICAgICAgIEFyZy5yb2xlQ29kZShyb2xlKQorICAgIGVuZAogZW5kCiAKIGNsYXNzIE92
ZXJsb2FkCkBAIC0xODIsNyArMjE3LDcgQEAgZGVmIGxleChzdHIsIGZpbGVOYW1lKQogZW5kCiAK
IGRlZiBpc1JvbGUodG9rZW4pCi0gICAgdG9rZW4gPX4gL1xBKChVKXwoRCl8KFVEKXwoWkQpfChV
WkQpfChVQSl8KFMpKVxaLworICAgIHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpE
KXwoVUEpfChTKXwoRUQpfChFWkQpfChMVSkpXFovCiBlbmQKIAogZGVmIGlzR0YodG9rZW4pCkBA
IC0xOTAsNyArMjI1LDcgQEAgZGVmIGlzR0YodG9rZW4pCiBlbmQKIAogZGVmIGlzS2luZCh0b2tl
bikKLSAgICB0b2tlbiA9fiAvXEEoKFRtcCl8KEltbSl8KEJpZ0ltbSl8KEJpdEltbSl8KEJpdElt
bTY0KXwoQWRkcil8KEluZGV4KXwoUmVsQ29uZCl8KFJlc0NvbmQpfChEb3VibGVDb25kKSlcWi8K
KyAgICB0b2tlbiA9fiAvXEEoKFRtcCl8KEltbSl8KEJpZ0ltbSl8KEJpdEltbSl8KEJpdEltbTY0
KXwoU2ltcGxlQWRkcil8KEFkZHIpfChJbmRleCl8KFJlbENvbmQpfChSZXNDb25kKXwoRG91Ymxl
Q29uZCl8KFN0YXR1c0NvbmQpKVxaLwogZW5kCiAKIGRlZiBpc0FyY2godG9rZW4pCkBAIC0yNjQs
NyArMjk5LDcgQEAgY2xhc3MgUGFyc2VyCiAKICAgICBkZWYgY29uc3VtZUtpbmQKICAgICAgICAg
cmVzdWx0ID0gdG9rZW4uc3RyaW5nCi0gICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGtpbmQg
KEltbSwgQmlnSW1tLCBCaXRJbW0sIEJpdEltbTY0LCBUbXAsIEFkZHIsIEluZGV4LCBSZWxDb25k
LCBSZXNDb25kLCBvciBEb3VibGVDb25kKSIpIHVubGVzcyBpc0tpbmQocmVzdWx0KQorICAgICAg
ICBwYXJzZUVycm9yKCJFeHBlY3RlZCBraW5kIChJbW0sIEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02
NCwgVG1wLCBTaW1wbGVBZGRyLCBBZGRyLCBJbmRleCwgUmVsQ29uZCwgUmVzQ29uZCwgRG91Ymxl
Q29uZCwgb3IgU3RhdHVzQ29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKICAgICAgICAgYWR2
YW5jZQogICAgICAgICByZXN1bHQKICAgICBlbmQKQEAgLTYzNCwyOCArNjY5LDcgQEAgd3JpdGVI
KCJPcGNvZGVVdGlscyIpIHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3ZlcmxvYWQuc2ln
bmF0dXJlLmVhY2hfd2l0aF9pbmRleCB7CiAgICAgICAgICAgICAgICAgfCBhcmcsIGluZGV4IHwK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByb2xlID0gbmlsCi0gICAgICAgICAg
ICAgICAgY2FzZSBhcmcucm9sZQotICAgICAgICAgICAgICAgIHdoZW4gIlUiCi0gICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSAiVXNlIgotICAgICAgICAgICAgICAgIHdoZW4gIkQiCi0gICAgICAg
ICAgICAgICAgICAgIHJvbGUgPSAiRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlpEIgotICAg
ICAgICAgICAgICAgICAgICByb2xlID0gIlpEZWYiCi0gICAgICAgICAgICAgICAgd2hlbiAiVUQi
Ci0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgotICAgICAgICAgICAgICAgIHdo
ZW4gIlVaRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VaRGVmIgotICAgICAgICAg
ICAgICAgIHdoZW4gIlVBIgotICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZUFkZHIiCi0g
ICAgICAgICAgICAgICAgd2hlbiAiUyIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3Jh
dGNoIgotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAg
ICAgICAgICAgICAgICBlbmQKLQotICAgICAgICAgICAgICAgIG91dHAucHV0cyAiZnVuY3Rvcihh
cmdzWyN7aW5kZXh9XSwgQXJnOjoje3JvbGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRoQ29k
ZX0pOyIKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0s
IEFyZzo6I3thcmcucm9sZUNvZGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRoQ29kZX0pOyIK
ICAgICAgICAgICAgIH0KICAgICAgICAgZW5kCiAgICAgfQpAQCAtODA0LDYgKzgxOCw5IEBAIHdy
aXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgIHdoZW4gIkJpdEltbTY0
IgogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlkQml0SW1t
NjRGb3JtKGFyZ3NbI3tpbmRleH1dLnZhbHVlKCkpKSIKICAgICAgICAgICAgICAgICAgICAgb3V0
cC5wdXRzICJPUEdFTl9SRVRVUk4oZmFsc2UpOyIKKyAgICAgICAgICAgICAgICB3aGVuICJTaW1w
bGVBZGRyIgorICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghYXJnc1sje2luZGV4
fV0udG1wKCkuaXNHUCgpKSIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJPUEdFTl9S
RVRVUk4oZmFsc2UpOyIKICAgICAgICAgICAgICAgICB3aGVuICJBZGRyIgogICAgICAgICAgICAg
ICAgICAgICBpZiBhcmcucm9sZSA9PSAiVUEiCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRw
LnB1dHMgImlmIChhcmdzWyN7aW5kZXh9XS5pc1N0YWNrKCkgJiYgYXJnc1sje2luZGV4fV0uc3Rh
Y2tTbG90KCktPmlzU3BpbGwoKSkiCkBAIC04MTksNiArODM2LDcgQEAgd3JpdGVIKCJPcGNvZGVH
ZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgd2hlbiAiUmVsQ29uZCIKICAgICAgICAgICAg
ICAgICB3aGVuICJSZXNDb25kIgogICAgICAgICAgICAgICAgIHdoZW4gIkRvdWJsZUNvbmQiCisg
ICAgICAgICAgICAgICAgd2hlbiAiU3RhdHVzQ29uZCIKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkIGtpbmQ6ICN7a2luZC5uYW1lfSIK
ICAgICAgICAgICAgICAgICBlbmQKQEAgLTEwOTUsNyArMTExMyw3IEBAIHdyaXRlSCgiT3Bjb2Rl
R2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5k
ZXh9XS5hc1RydXN0ZWRJbW0zMigpIgogICAgICAgICAgICAgICAgIHdoZW4gIkJpZ0ltbSIsICJC
aXRJbW02NCIKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0u
YXNUcnVzdGVkSW1tNjQoKSIKLSAgICAgICAgICAgICAgICB3aGVuICJBZGRyIgorICAgICAgICAg
ICAgICAgIHdoZW4gIlNpbXBsZUFkZHIiLCAiQWRkciIKICAgICAgICAgICAgICAgICAgICAgb3V0
cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNBZGRyZXNzKCkiCiAgICAgICAgICAgICAgICAgd2hl
biAiSW5kZXgiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1d
LmFzQmFzZUluZGV4KCkiCkBAIC0xMTA1LDYgKzExMjMsOCBAQCB3cml0ZUgoIk9wY29kZUdlbmVy
YXRlZCIpIHsKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0u
YXNSZXN1bHRDb25kaXRpb24oKSIKICAgICAgICAgICAgICAgICB3aGVuICJEb3VibGVDb25kIgog
ICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc0RvdWJsZUNv
bmRpdGlvbigpIgorICAgICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCisgICAgICAgICAg
ICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzU3RhdHVzQ29uZGl0aW9uKCki
CiAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICB9CiAKQEAgLTExNDgsMjcgKzExNjgs
NyBAQCBGaWxlLm9wZW4oIkpTQWlyX29wY29kZS5qcyIsICJ3IikgewogICAgICAgICAgICAgICAg
IG91dHAucHV0cyAiY2FzZSAje292ZXJsb2FkLnNpZ25hdHVyZS5sZW5ndGh9OiIgaWYgbmVlZE92
ZXJsb2FkU3dpdGNoCiAgICAgICAgICAgICAgICAgb3ZlcmxvYWQuc2lnbmF0dXJlLmVhY2hfd2l0
aF9pbmRleCB7CiAgICAgICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8Ci0gICAgICAgICAg
ICAgICAgICAgIHJvbGUgPSBuaWwKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBhcmcucm9sZQot
ICAgICAgICAgICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9s
ZSA9ICJVc2UiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIkQiCi0gICAgICAgICAgICAgICAg
ICAgICAgICByb2xlID0gIkRlZiIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiWkQiCi0gICAg
ICAgICAgICAgICAgICAgICAgICByb2xlID0gIlpEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdo
ZW4gIlVEIgotICAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VEZWYiCi0gICAgICAg
ICAgICAgICAgICAgIHdoZW4gIlVaRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAi
VXNlWkRlZiIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVUEiCi0gICAgICAgICAgICAgICAg
ICAgICAgICByb2xlID0gIlVzZUFkZHIiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlMiCi0g
ICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlNjcmF0Y2giCi0gICAgICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAg
ICAgIGVuZAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgb3V0cC5w
dXRzICJpbnN0LnZpc2l0QXJnKCN7aW5kZXh9LCBmdW5jLCBBcmcuI3tyb2xlfSwgI3thcmcuYmFu
a31QLCAje2FyZy53aWR0aH0pOyIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpbnN0
LnZpc2l0QXJnKCN7aW5kZXh9LCBmdW5jLCBBcmcuI3thcmcucm9sZUNvZGV9LCAje2FyZy5iYW5r
fVAsICN7YXJnLndpZHRofSk7IgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBv
dXRwLnB1dHMgImJyZWFrOyIKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDIxMzQyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDE3LDkgKzQxNyw2
IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYoYm9vbCwgZHVtcE1v
ZHVsZUxvYWRpbmdTdGF0ZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwg
ZXhwb3NlSW50ZXJuYWxNb2R1bGVMb2FkZXIsIGZhbHNlLCBOb3JtYWwsICJleHBvc2UgdGhlIGlu
dGVybmFsIG1vZHVsZSBsb2FkZXIgb2JqZWN0IHRvIHRoZSBnbG9iYWwgc3BhY2UgZm9yIGRlYnVn
Z2luZyIpIFwKICAgICBcCi0gICAgdihib29sLCBkdW1wQWlyQXNKU0JlZm9yZUFsbG9jYXRlU3Rh
Y2ssIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICB2KGJvb2wsIGR1bXBBaXJBZnRlckFs
bG9jYXRlU3RhY2ssIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICBcCiAgICAgdihib29s
LCB1c2VTdXBlclNhbXBsZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAg
dihib29sLCByZXBvcnRMTEludFN0YXRzLCBmYWxzZSwgQ29uZmlndXJhYmxlLCAiUmVwb3J0cyBM
TEludCBzdGF0aXN0aWNzIikgXApJbmRleDogV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIx
MzQyNSkKKysrIFdlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTctMDMtMDQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KKworICAgICAgICBCMyBzaG91bGQgaGF2ZSBjb21wcmVoZW5zaXZlIHN1cHBvcnQgZm9yIGF0
b21pYyBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjIzNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIERvY3VtZW50IHRoZSBuZXcgb3Bjb2RlcyEKKworICAgICAgICAqIGRv
Y3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWw6CisKIDIwMTctMDMtMDMgIE1h
bnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgbWlub3IgdXBkYXRlcyBvbiBDU1MgR3JpZCBMYXlvdXQgZXhhbXBsZXMuCkluZGV4OiBX
ZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0
ZS1yZXByZXNlbnRhdGlvbi5odG1sCShyZXZpc2lvbiAyMTM0MjUpCisrKyBXZWJzaXRlcy93ZWJr
aXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTE0OCw2ICsxNDgsMjggQEAKIAogICAgIDxwPkVhY2ggYmFzaWMgYmxvY2sgY29u
dGFpbnMgYSBWZWN0b3ImbHQ7VmFsdWUqJmd0OyBhcyB0aGUgY29udGVudHMgb2YgdGhlIGJsb2Nr
LiBDb250cm9sCiAgICAgICBmbG93IGluc2lkZSB0aGUgYmxvY2sgaXMgaW1wbGljaXQgYmFzZWQg
b24gdGhlIG9yZGVyIG9mIFZhbHVlcyBpbiB0aGUgdmVjdG9yLjwvcD4KKyAgICAKKyAgICA8aDI+
TWVtb3J5IG1vZGVsPC9oMj4KKyAgICAKKyAgICA8cD5CMyB1c2VzIGEgc2Vjb25kYXJ5IGFkZHJl
c3Mgc3BhY2Ugb2YgPGk+YWJzdHJhY3QgaGVhcHM8L2k+IHRvIHJlYXNvbiBhYm91dCBhbGlhc2lu
ZyBhbmQKKyAgICAgIGNvbmN1cnJlbmN5LiBUaGlzIGFkZHJlc3Mgc3BhY2UgaXMgMzItYml0IGFu
ZCB3ZSBwb2ludCBhdCBpdCB1c2luZyB0aGUgSGVhcFJhbmdlIHR5cGUuIElmIHlvdQorICAgICAg
bmV2ZXIgc3VwcGx5IEhlYXBSYW5nZXMgdG8geW91ciBtZW1vcnkgb3BlcmF0aW9ucyAodGhlIGRl
ZmF1bHQpLCB0aGV5IHdpbGwgaGF2ZSBbMCwgVUlOVF9NQVhdCisgICAgICBhcyB0aGVpciByYW5n
ZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYXRpb24gbWF5IGNvbnNlcnZhdGl2ZWx5IHdyaXRl
IHRvIGFsbCAyPHN1cD4zMjwvc3VwPgorICAgICAgYWJzdHJhY3QgaGVhcHMuIFR3byBtZW1vcnkg
b3BlcmF0aW9ucyBhcmUgc2FpZCB0byBhbGlhcyBpZiB0aGV5IGFjY2VzcyB0aGUgc2FtZSBhYnN0
cmFjdCBoZWFwcy4KKyAgICAgIEEgc2ltcGxlIGV4YW1wbGUgb2YgdXNpbmcgSGVhcFJhbmdlcyBp
cyB3aXRoIGxvYWRzIGFuZCBzdG9yZXMsIGJ1dCB5b3UgY2FuIGFsc28gc3VwcGx5CisgICAgICBI
ZWFwUmFuZ2VzIGFzIGJvdW5kcyBvbiB0aGUgZWZmZWN0cyBvZiBjYWxscyBhbmQgcGF0Y2hwb2lu
dHMuPC9wPgorICAgIAorICAgIDxwPkZlbmNlcyBhcmUgbW9kZWxlZCBhcyBwaGFudG9tIGVmZmVj
dHMgdGhhdCB3ZSBjYWxsIDxpPmZlbmNlIHJhbmdlczwvaT4uIEZvciBleGFtcGxlLCBhIGxvYWQK
KyAgICAgIGZlbmNlIGNvdWxkIGJlIHJlcHJlc2VudGVkIGFzIGEgcGF0Y2hwb2ludCB0aGF0IHdy
aXRlcyB0byBbMCwgVUlOVF9NQVhdLiBCMyBtb2RlbHMgbG9hZCBmZW5jZXMsCisgICAgICBzdG9y
ZSBmZW5jZXMsIHN0b3JlLWxvYWQgZmVuY2VzLCBhY3F1aXJlIGZlbmNlcywgYW5kIHJlbGVhc2Ug
ZmVuY2VzIHVzaW5nIGZlbmNlIHJhbmdlcy4gVGhlCisgICAgICBhYnNlbmNlIG9mIGEgZmVuY2Ug
cmFuZ2UgbWVhbnMgdGhhdCB0aGVyZSBpcyBubyBmZW5jZS48L3A+CisgICAgCisgICAgPHA+QWNx
dWlyZSBmZW5jZXMgYXJlIG1vZGVsZWQgYXMgcGhhbnRvbSB3cml0ZXMgdG8gbWVtb3J5LCB3aGls
ZSByZWxlYXNlIGZlbmNlcyBhcmUgbW9kZWxlZCBhcworICAgICAgcGhhbnRvbSByZWFkcyBmcm9t
IG1lbW9yeS4gQnkgaXRzZWxmIHRoaXMgZG9lcyBub3QgcGVybWl0IEIzIHRvIGRvIGFsbCBvZiB0
aGUgcmVvcmRlcmluZ3MgdGhhdAorICAgICAgYWNxdWlyZS9yZWxlYXNlIGFsbG93LiBCMyBpcyB0
aGVyZWZvcmUgYWxsb3dlZCB0byB0cmVhdCBsb2Fkcy9zdG9yZXMgd2l0aCBmZW5jZSByYW5nZXMg
bW9yZQorICAgICAgcHJlY2lzZWx5LiBUaGUgcGhhbnRvbSB3cml0ZSBlZmZlY3RzIG9mIGEgZmVu
Y2VkIGxvYWQgY2Fubm90IHdyaXRlIHRvIGFueXRoaW5nIHRoYXQgaXMgcmVhZCBvcgorICAgICAg
d3JpdHRlbiBhZnRlciB0aGUgZmVuY2UuIFRoZSBwaGFudG9tIHJlYWQgZWZmZWN0cyBvZiBhIGZl
bmNlZCBzdG9yZSBjYW5ub3QgcmVhZCBhbnl0aGluZyB0aGF0CisgICAgICBpcyB3cml0dGVuIGFm
dGVyIHRoZSBmZW5jZS48L3A+CiAKICAgICA8aDI+T3Bjb2RlczwvaDI+CiAKQEAgLTM5NSw1MSAr
NDE3LDExMyBAQAogICAgICAgPGR0PkludDMyIExvYWQ4WihJbnRQdHIsIG9mZnNldCk8L2R0Pgog
ICAgICAgPGRkPkxvYWRzIGEgYnl0ZSBmcm9tIHRoZSBhZGRyZXNzLCB3aGljaCBpcyBjb21wdXRl
ZCBieSBhZGRpbmcgdGhlIGNvbXBpbGUtdGltZSAzMi1iaXQKICAgICAgICAgc2lnbmVkIGludGVn
ZXIgb2Zmc2V0IHRvIHRoZSBjaGlsZCB2YWx1ZS4gIFplcm8gZXh0ZW5kcyB0aGUgbG9hZGVkIGJ5
dGUsIHNvIHRoZSBoaWdoIDI0Ci0gICAgICAgIGJpdHMgYXJlIGFsbCB6ZXJvLiAgTXVzdCB1c2Ug
dGhlIE1lbW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0LjwvZGQ+
CisgICAgICAgIGJpdHMgYXJlIGFsbCB6ZXJvLiAgTXVzdCB1c2UgdGhlIE1lbW9yeVZhbHVlIGNs
YXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0LiBNYXkgc2V0CisgICAgICAgIGEgZmVu
Y2UgcmFuZ2UgdG8gdHVybiB0aGlzIGludG8gYSBsb2FkIGFjcXVpcmUuPC9kZD4KIAogICAgICAg
PGR0PkludDMyIExvYWQ4UyhJbnRQdHIsIG9mZnNldCk8L2R0PgogICAgICAgPGRkPkxvYWRzIGEg
Ynl0ZSBmcm9tIHRoZSBhZGRyZXNzLCB3aGljaCBpcyBjb21wdXRlZCBieSBhZGRpbmcgdGhlIGNv
bXBpbGUtdGltZSAzMi1iaXQKICAgICAgICAgc2lnbmVkIGludGVnZXIgb2Zmc2V0IHRvIHRoZSBj
aGlsZCB2YWx1ZS4gIFNpZ24gZXh0ZW5kcyB0aGUgbG9hZGVkIGJ5dGUuICBNdXN0IHVzZSB0aGUK
LSAgICAgICAgTWVtb3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxhZyBzZXQu
PC9kZD4KKyAgICAgICAgTWVtb3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxh
ZyBzZXQuIE1heSBzZXQKKyAgICAgICAgYSBmZW5jZSByYW5nZSB0byB0dXJuIHRoaXMgaW50byBh
IGxvYWQgYWNxdWlyZS48L2RkPgogCiAgICAgICA8ZHQ+SW50MzIgTG9hZDE2WihJbnRQdHIsIG9m
ZnNldCk8L2R0PgogICAgICAgPGRkPkxvYWRzIGEgMTYtYml0IGludGVnZXIgZnJvbSB0aGUgYWRk
cmVzcywgd2hpY2ggaXMgY29tcHV0ZWQgYnkgYWRkaW5nIHRoZSBjb21waWxlLXRpbWUKICAgICAg
ICAgMzItYml0IHNpZ25lZCBpbnRlZ2VyIG9mZnNldCB0byB0aGUgY2hpbGQgdmFsdWUuICBaZXJv
IGV4dGVuZHMgdGhlIGxvYWRlZCAxNi1iaXQKICAgICAgICAgaW50ZWdlciwgc28gdGhlIGhpZ2gg
MTYgYml0cyBhcmUgYWxsIHplcm8uICBNaXNhbGlnbmVkIGxvYWRzIGFyZSBub3QgcGVuYWxpemVk
LiAgTXVzdAotICAgICAgICB1c2UgdGhlIE1lbW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUgdGhl
IFRyYXBzIGZsYWcgc2V0LjwvZGQ+CisgICAgICAgIHVzZSB0aGUgTWVtb3J5VmFsdWUgY2xhc3Mu
ICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxhZyBzZXQuIE1heSBzZXQKKyAgICAgICAgYSBmZW5jZSBy
YW5nZSB0byB0dXJuIHRoaXMgaW50byBhIGxvYWQgYWNxdWlyZS48L2RkPgogCiAgICAgICA8ZHQ+
SW50MzIgTG9hZDE2UyhJbnRQdHIsIG9mZnNldCk8L2R0PgogICAgICAgPGRkPkxvYWRzIGEgMTYt
Yml0IGludGVnZXIgZnJvbSB0aGUgYWRkcmVzcywgd2hpY2ggaXMgY29tcHV0ZWQgYnkgYWRkaW5n
IHRoZSBjb21waWxlLXRpbWUKICAgICAgICAgMzItYml0IHNpZ25lZCBpbnRlZ2VyIG9mZnNldCB0
byB0aGUgY2hpbGQgdmFsdWUuICBTaWduIGV4dGVuZHMgdGhlIGxvYWRlZCAxNi1iaXQKICAgICAg
ICAgaW50ZWdlci4gIE1pc2FsaWduZWQgbG9hZHMgYXJlIG5vdCBwZW5hbGl6ZWQuICBNdXN0IHVz
ZSB0aGUgTWVtb3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUKLSAgICAgICAgVHJhcHMgZmxh
ZyBzZXQuPC9kZD4KKyAgICAgICAgVHJhcHMgZmxhZyBzZXQuIE1heSBzZXQgYSBmZW5jZSByYW5n
ZSB0byB0dXJuIHRoaXMgaW50byBhIGxvYWQgYWNxdWlyZS48L2RkPgogCiAgICAgICA8ZHQ+VCBM
b2FkKEludFB0ciwgb2Zmc2V0KTwvZHQ+CiAgICAgICA8ZGQ+VmFsaWQgZm9yIGFueSB0eXBlIGV4
Y2VwdCBWb2lkLiAgTG9hZHMgYSB2YWx1ZSBvZiB0aGF0IHR5cGUgZnJvbSB0aGUgYWRkcmVzcywg
d2hpY2ggaXMKICAgICAgICAgY29tcHV0ZWQgYnkgYWRkaW5nIHRoZSBjb21waWxlLXRpbWUgMzIt
Yml0IHNpZ25lZCBpbnRlZ2VyIG9mZnNldCB0byB0aGUgY2hpbGQgdmFsdWUuCiAgICAgICAgIE1p
c2FsaWduZWQgbG9hZHMgYXJlIG5vdCBwZW5hbGl6ZWQuICBNdXN0IHVzZSB0aGUgTWVtb3J5VmFs
dWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMKLSAgICAgICAgZmxhZyBzZXQuPC9kZD4KKyAg
ICAgICAgZmxhZyBzZXQuIE1heSBzZXQgYSBmZW5jZSByYW5nZSB0byB0dXJuIHRoaXMgaW50byBh
IGxvYWQgYWNxdWlyZS48L2RkPgogCiAgICAgICA8ZHQ+Vm9pZCBTdG9yZTgoSW50MzIsIEludFB0
ciwgb2Zmc2V0KTwvZHQ+CiAgICAgICA8ZGQ+U3RvcmVzIGEgdGhlIGxvdyBieXRlIG9mIHRoZSBm
aXJzdCBjaGlsZCBpbnRvIHRoZSBhZGRyZXNzIGNvbXB1dGVkIGJ5IGFkZGluZyB0aGUKICAgICAg
ICAgY29tcGlsZS10aW1lIDMyLWJpdCBzaWduZWQgaW50ZWdlciBvZmZzZXQgdG8gdGhlIHNlY29u
ZCBjaGlsZC4gIE11c3QgdXNlIHRoZSBNZW1vcnlWYWx1ZQotICAgICAgICBjbGFzcy4gIE1heSBo
YXZlIHRoZSBUcmFwcyBmbGFnIHNldC48L2RkPgorICAgICAgICBjbGFzcy4gIE1heSBoYXZlIHRo
ZSBUcmFwcyBmbGFnIHNldC4gTWF5IHNldCBhIGZlbmNlIHJhbmdlIHRvIHR1cm4gdGhpcyBpbnRv
IGEgc3RvcmUgcmVsZWFzZS48L2RkPgogCiAgICAgICA8ZHQ+Vm9pZCBTdG9yZTE2KEludDMyLCBJ
bnRQdHIsIG9mZnNldCk8L2R0PgogICAgICAgPGRkPlN0b3JlcyBhIHRoZSBsb3cgMTYgYml0cyBv
ZiB0aGUgZmlyc3QgY2hpbGQgaW50byB0aGUgYWRkcmVzcyBjb21wdXRlZCBieSBhZGRpbmcgdGhl
CiAgICAgICAgIGNvbXBpbGUtdGltZSAzMi1iaXQgc2lnbmVkIGludGVnZXIgb2Zmc2V0IHRvIHRo
ZSBzZWNvbmQgY2hpbGQuICBNaXNhbGlnbmVkIHN0b3JlcyBhcmUKLSAgICAgICAgbm90IHBlbmFs
aXplZC4gIE11c3QgdXNlIHRoZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBUcmFw
cyBmbGFnIHNldC48L2RkPgorICAgICAgICBub3QgcGVuYWxpemVkLiAgTXVzdCB1c2UgdGhlIE1l
bW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0LiBNYXkgc2V0IGEK
KyAgICAgICAgZmVuY2UgcmFuZ2UgdG8gdHVybiB0aGlzIGludG8gYSBzdG9yZSByZWxlYXNlLjwv
ZGQ+CiAKICAgICAgIDxkdD5Wb2lkIFN0b3JlKFQsIEludFB0ciwgb2Zmc2V0KTwvZHQ+CiAgICAg
ICA8ZGQ+U3RvcmVzIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgY2hpbGQgaW50byB0aGUgYWRkcmVz
cyBjb21wdXRlZCBieSBhZGRpbmcgdGhlCiAgICAgICAgIGNvbXBpbGUtdGltZSAzMi1iaXQgc2ln
bmVkIGludGVnZXIgb2Zmc2V0IHRvIHRoZSBzZWNvbmQgY2hpbGQuICBNaXNhbGlnbmVkIHN0b3Jl
cyBhcmUKLSAgICAgICAgbm90IHBlbmFsaXplZC4gIE11c3QgdXNlIHRoZSBNZW1vcnlWYWx1ZSBj
bGFzcy4gIE1heSBoYXZlIHRoZSBUcmFwcyBmbGFnIHNldC48L2RkPgorICAgICAgICBub3QgcGVu
YWxpemVkLiAgTXVzdCB1c2UgdGhlIE1lbW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRy
YXBzIGZsYWcgc2V0LiBNYXkgc2V0IGEKKyAgICAgICAgZmVuY2UgcmFuZ2UgdG8gdHVybiB0aGlz
IGludG8gYSBzdG9yZSByZWxlYXNlLjwvZGQ+CisgICAgICAKKyAgICAgIDxkdD5JbnQzMiBBdG9t
aWNXZWFrQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgSW50UHRyIHB0cik8L2R0Pgor
ICAgICAgPGRkPlBlcmZvcm1zIGEgd2VhayA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5v
cmcvd2lraS9Db21wYXJlLWFuZC1zd2FwIj5DQVMKKyAgICAgICAgICAoY29tcGFyZS1hbmQtc3dh
cCk8L2E+LiBSZXR1cm5zIGEgYm9vbGVhbiAoMCBvciAxKSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0
IChmYWlsdXJlIG9yCisgICAgICAgIHN1Y2Nlc3MsIHJlc3BlY3RpdmVseSkuIE1heSBzcHVyaW91
c2x5IGZhaWwsIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBkbyBub3RoaW5nIGFuZCByZXR1cm4KKyAg
ICAgICAgMC4gWW91IGNhbiBzdXBwbHkgYSBmZW5jZSByYW5nZSB0byBpbmRpY2F0ZSB0aGF0IHRo
ZSBDQVMgaXMgZmVuY2VkLiBGZW5jZWQgQ0FTIGhhcyBib3RoCisgICAgICAgIGFjcXVpcmUgYW5k
IHJlbGVhc2UgZmVuY2VzLCBhbmQgY2xhaW1zIHRvIGJvdGggcmVhZCBhbmQgd3JpdGUgdGhlIGZ1
bGwgZmVuY2UgcmFuZ2UgaW4KKyAgICAgICAgYWRkaXRpb24gdG8gd2hhdGV2ZXIgcHJpbWFyeSBy
YW5nZSBpcyBzdXBwbGllZCBmb3IgdGhlIENBUyBpdHNlbGYuIEF0b21pY1dlYWtDQVMgb25seQor
ICAgICAgICBoYXMgZmVuY2luZyBiZWhhdmlvciBpbiB0aGUgY2FzZSB0aGF0IGl0IHN1Y2NlZWRz
LiBBdG9taWMgb3BlcmF0aW9ucyB0YWtlIGEgd2lkdGggcGFyYW1ldGVyLAorICAgICAgICBhbGxv
d2luZyB0aGVtIHRvIG9wZXJhdGUgb3ZlciA4LWJpdCwgMTYtYml0LCAzMi1iaXQsIG9yIDY0LWJp
dCBpbnRlZ2VyIG1lbW9yeSBsb2NhdGlvbnMuPC9kZD4KKworICAgICAgPGR0PlQgQXRvbWljU3Ry
b25nQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgSW50UHRyIHB0cik8L2R0PgorICAg
ICAgPGRkPlBlcmZvcm1zIGEgc3Ryb25nIDxhIGhyZWY9Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL0NvbXBhcmUtYW5kLXN3YXAiPkNBUworICAgICAgICAgIChjb21wYXJlLWFuZC1zd2Fw
KTwvYT4uIFJldHVybnMgdGhlIG9sZCB2YWx1ZSBiZWZvcmUgdGhlIENBUy4gVGhlIGluc3RydWN0
aW9uIHNlbGVjdG9yCisgICAgICAgIGlzIHNtYXJ0IGFib3V0IEVxdWFsKEF0b21pY1N0cm9uZ0NB
UyhleHBlY3RlZCwgLi4uKSwgZXhwZWN0ZWQpIHBhdHRlcm5zLCBzbyB0aGlzIG9wY29kZQorICAg
ICAgICBpcyBhbHNvIHRoZSBiZXN0IHdheSB0byBkbyBhIHN0cm9uZyBDQVMgdGhhdCByZXR1cm5z
IGEgYm9vbGVhbiAtIGp1c3QgdXNlIEVxdWFsIHRvIGNvbXBhcmUKKyAgICAgICAgdGhlIHJlc3Vs
dCB0byBleHBlY3RlZC4gWW91IGNhbiBzdXBwbHkgYSBmZW5jZSByYW5nZSB0byBpbmRpY2F0ZSB0
aGF0IHRoZSBDQVMgaXMgZmVuY2VkLgorICAgICAgICBGZW5jZWQgQ0FTIGhhcyBib3RoIGFjcXVp
cmUgYW5kIHJlbGVhc2UgZmVuY2VzLCBhbmQgY2xhaW1zIHRvIGJvdGggcmVhZCBhbmQgd3JpdGUg
dGhlIGZ1bGwKKyAgICAgICAgZmVuY2UgcmFuZ2UgaW4gYWRkaXRpb24gdG8gd2hhdGV2ZXIgcHJp
bWFyeSByYW5nZSBpcyBzdXBwbGllZCBmb3IgdGhlIENBUyBpdHNlbGYuCisgICAgICAgIEF0b21p
Y1N0cm9uZ0NBUyBoYXMgdGhlIHNhbWUgZmVuY2luZyBvbiBmYWlsdXJlIGFuZCBzdWNjZXNzLiBB
dG9taWMgb3BlcmF0aW9ucyB0YWtlIGEgd2lkdGgKKyAgICAgICAgcGFyYW1ldGVyLCBhbGxvd2lu
ZyB0aGVtIHRvIG9wZXJhdGUgb3ZlciA4LWJpdCwgMTYtYml0LCAzMi1iaXQsIG9yIDY0LWJpdCBp
bnRlZ2VyIG1lbW9yeQorICAgICAgICBsb2NhdGlvbnMuIFJldHVybnMgYSBzaWduLWV4dGVuZGVk
IHJlc3VsdCBmb3IgOC1iaXQgb3IgMTYtYml0IHdpZHRocy48L2RkPgorICAgICAgCisgICAgICA8
ZHQ+VCBBdG9taWNYY2hnQWRkKFQsIEludFB0cik8L2R0PgorICAgICAgPGRkPkF0b21pY2FsbHkg
YWRkcyBhIHZhbHVlIHRvIHRoZSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybnMgdGhlIG9sZCB2
YWx1ZS4gSXMgYWxsb3dlZCB0bworICAgICAgICBoYXZlIGEgZmVuY2UgcmFuZ2UsIHdoaWNoIGNh
dXNlcyBpdCB0byBoYXZlIGFjcXVpcmUvcmVsZWFzZSBmZW5jaW5nLiBBdG9taWMgb3BlcmF0aW9u
cyB0YWtlCisgICAgICAgIGEgd2lkdGggcGFyYW1ldGVyLCBhbGxvd2luZyB0aGVtIHRvIG9wZXJh
dGUgb3ZlciA4LWJpdCwgMTYtYml0LCAzMi1iaXQsIG9yIDY0LWJpdCBpbnRlZ2VyIG1lbW9yeQor
ICAgICAgICBsb2NhdGlvbnMuIFJldHVybnMgYSBzaWduLWV4dGVuZGVkIHJlc3VsdCBmb3IgOC1i
aXQgb3IgMTYtYml0IHdpZHRocy48L2RkPgorCisgICAgICA8ZHQ+VCBBdG9taWNYY2hnQW5kKFQs
IEludFB0cik8L2R0PgorICAgICAgPGRkPkF0b21pY2FsbHkgYml0d2lzZS1hbmRzIGEgdmFsdWUg
dG8gdGhlIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBJcyBhbGxv
d2VkIHRvCisgICAgICAgIGhhdmUgYSBmZW5jZSByYW5nZSwgd2hpY2ggY2F1c2VzIGl0IHRvIGhh
dmUgYWNxdWlyZS9yZWxlYXNlIGZlbmNpbmcuIEF0b21pYyBvcGVyYXRpb25zIHRha2UKKyAgICAg
ICAgYSB3aWR0aCBwYXJhbWV0ZXIsIGFsbG93aW5nIHRoZW0gdG8gb3BlcmF0ZSBvdmVyIDgtYml0
LCAxNi1iaXQsIDMyLWJpdCwgb3IgNjQtYml0IGludGVnZXIgbWVtb3J5CisgICAgICAgIGxvY2F0
aW9ucy4gUmV0dXJucyBhIHNpZ24tZXh0ZW5kZWQgcmVzdWx0IGZvciA4LWJpdCBvciAxNi1iaXQg
d2lkdGhzLjwvZGQ+CisKKyAgICAgIDxkdD5UIEF0b21pY1hjaGdPcihULCBJbnRQdHIpPC9kdD4K
KyAgICAgIDxkZD5BdG9taWNhbGx5IGJpdHdpc2Utb3JzIGEgdmFsdWUgdG8gdGhlIG1lbW9yeSBs
b2NhdGlvbiBhbmQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBJcyBhbGxvd2VkIHRvCisgICAgICAg
IGhhdmUgYSBmZW5jZSByYW5nZSwgd2hpY2ggY2F1c2VzIGl0IHRvIGhhdmUgYWNxdWlyZS9yZWxl
YXNlIGZlbmNpbmcuIEF0b21pYyBvcGVyYXRpb25zIHRha2UKKyAgICAgICAgYSB3aWR0aCBwYXJh
bWV0ZXIsIGFsbG93aW5nIHRoZW0gdG8gb3BlcmF0ZSBvdmVyIDgtYml0LCAxNi1iaXQsIDMyLWJp
dCwgb3IgNjQtYml0IGludGVnZXIgbWVtb3J5CisgICAgICAgIGxvY2F0aW9ucy4gUmV0dXJucyBh
IHNpZ24tZXh0ZW5kZWQgcmVzdWx0IGZvciA4LWJpdCBvciAxNi1iaXQgd2lkdGhzLjwvZGQ+CisK
KyAgICAgIDxkdD5UIEF0b21pY1hjaGdTdWIoVCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+QXRv
bWljYWxseSBzdWJ0cmFjdHMgYSB2YWx1ZSB0byB0aGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1
cm5zIHRoZSBvbGQgdmFsdWUuIElzIGFsbG93ZWQgdG8KKyAgICAgICAgaGF2ZSBhIGZlbmNlIHJh
bmdlLCB3aGljaCBjYXVzZXMgaXQgdG8gaGF2ZSBhY3F1aXJlL3JlbGVhc2UgZmVuY2luZy4gQXRv
bWljIG9wZXJhdGlvbnMgdGFrZQorICAgICAgICBhIHdpZHRoIHBhcmFtZXRlciwgYWxsb3dpbmcg
dGhlbSB0byBvcGVyYXRlIG92ZXIgOC1iaXQsIDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQgaW50
ZWdlciBtZW1vcnkKKyAgICAgICAgbG9jYXRpb25zLiBSZXR1cm5zIGEgc2lnbi1leHRlbmRlZCBy
ZXN1bHQgZm9yIDgtYml0IG9yIDE2LWJpdCB3aWR0aHMuPC9kZD4KKworICAgICAgPGR0PlQgQXRv
bWljWGNoZ1hvcihULCBJbnRQdHIpPC9kdD4KKyAgICAgIDxkZD5BdG9taWNhbGx5IGJpdHdpc2Ut
eG9ycyBhIHZhbHVlIHRvIHRoZSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybnMgdGhlIG9sZCB2
YWx1ZS4gSXMgYWxsb3dlZCB0bworICAgICAgICBoYXZlIGEgZmVuY2UgcmFuZ2UsIHdoaWNoIGNh
dXNlcyBpdCB0byBoYXZlIGFjcXVpcmUvcmVsZWFzZSBmZW5jaW5nLiBBdG9taWMgb3BlcmF0aW9u
cyB0YWtlCisgICAgICAgIGEgd2lkdGggcGFyYW1ldGVyLCBhbGxvd2luZyB0aGVtIHRvIG9wZXJh
dGUgb3ZlciA4LWJpdCwgMTYtYml0LCAzMi1iaXQsIG9yIDY0LWJpdCBpbnRlZ2VyIG1lbW9yeQor
ICAgICAgICBsb2NhdGlvbnMuIFJldHVybnMgYSBzaWduLWV4dGVuZGVkIHJlc3VsdCBmb3IgOC1i
aXQgb3IgMTYtYml0IHdpZHRocy48L2RkPgorCisgICAgICA8ZHQ+VCBBdG9taWNYY2hnKFQsIElu
dFB0cik8L2R0PgorICAgICAgPGRkPkF0b21pY2FsbHkgc3RvcmVzIGEgdmFsdWUgdG8gdGhlIG1l
bW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBJcyBhbGxvd2VkIHRvCisg
ICAgICAgIGhhdmUgYSBmZW5jZSByYW5nZSwgd2hpY2ggY2F1c2VzIGl0IHRvIGhhdmUgYWNxdWly
ZS9yZWxlYXNlIGZlbmNpbmcuIEF0b21pYyBvcGVyYXRpb25zIHRha2UKKyAgICAgICAgYSB3aWR0
aCBwYXJhbWV0ZXIsIGFsbG93aW5nIHRoZW0gdG8gb3BlcmF0ZSBvdmVyIDgtYml0LCAxNi1iaXQs
IDMyLWJpdCwgb3IgNjQtYml0IGludGVnZXIgbWVtb3J5CisgICAgICAgIGxvY2F0aW9ucy4gUmV0
dXJucyBhIHNpZ24tZXh0ZW5kZWQgcmVzdWx0IGZvciA4LWJpdCBvciAxNi1iaXQgd2lkdGhzLjwv
ZGQ+CiAKICAgICAgIDxkdD5JbnRQdHIgV2FzbUFkZHJlc3MoSW50UHRyLCBwaW5uZWRHUFIpPC9k
dD4KICAgICAgIDxkZD5UaGlzIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYWRkcmVzcyBvZiBhIHdh
c20gbWVtb3J5IGxvYWQgZnJvbSBhIHBpbm5lZCBiYXNlIEdQUi4KICAgICAgICAgTXVzdCB1c2Ug
dGhlIFdhc21BZGRyZXNzVmFsdWUgY2xhc3MuPC9kZD4KIAotCiAgICAgICA8ZHQ+Vm9pZCBGZW5j
ZSgpPC9kdD4KICAgICAgIDxkZD5BYnN0cmFjdHMgc3RhbmRhbG9uZSBkYXRhIGZlbmNlcyBvbiB4
ODYgYW5kIEFSTS4gTXVzdCB1c2UgdGhlIEZlbmNlVmFsdWUgY2xhc3MsIHdoaWNoIGhhcwogICAg
ICAgICB0d28gYWRkaXRpb25hbCBtZW1iZXJzIHRoYXQgY29uZmlndXJlIHRoZSBwcmVjaXNlIG1l
YW5pbmcgb2YgdGhlIGZlbmNlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303609</attachid>
            <date>2017-03-06 20:11:11 -0800</date>
            <delta_ts>2017-03-09 09:42:36 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>392862</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNDkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxMCBA
QAorMjAxNy0wMy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzIHNob3VsZCBoYXZlIGNvbXByZWhlbnNpdmUgc3VwcG9ydCBmb3IgYXRvbWljIG9wZXJhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBhZGRzIHRoZSBmb2xsb3dpbmcgY2FwYWJpbGl0aWVzIHRvIEIzOgorICAgICAgICAK
KyAgICAgICAgLSBBdG9taWMgd2Vhay9zdHJvbmcgdW5mZW5jZWQvZmVuY2VkIGNvbXBhcmUtYW5k
LXN3YXAKKyAgICAgICAgLSBBdG9taWMgYWRkcy9zdWIvb3IvYW5kL3hvci94aGcKKyAgICAgICAg
LSBBY3F1aXJlL3JlbGVhc2UgZmVuY2luZyBvbiBsb2Fkcy9zdG9yZXMKKyAgICAgICAgLSBGZW5j
ZWxlc3MgbG9hZC1sb2FkIGRlcGVuZGVuY2llcworICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRz
IGxvd2VyaW5nIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIG9uIHg4NjoKKyAgICAgICAg
CisgICAgICAgIC0gbG9jayBjbXB4Y2hnCisgICAgICAgIC0gbG9jayB4YWRkCisgICAgICAgIC0g
bG9jayBhZGQvc3ViL29yL2FuZC94b3IveGNoZworICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRz
IGxvd2VyaW5nIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIG9uIEFSTTY0OgorICAgICAg
ICAKKyAgICAgICAgLSBsZGFyIGFuZCBmcmllbmRzCisgICAgICAgIC0gc3RsciBhbmQgZnJpZW5k
cworICAgICAgICAtIGxkeHIgYW5kIGZyaWVuZHMgKHVuZmVuY2VkIExMKQorICAgICAgICAtIHN0
eHIgYW5kIGZyaWVuZHMgKHVuZmVuZGVkIFNDKQorICAgICAgICAtIGxkYXhyIGFuZCBmcmllbmRz
IChmZW5jZWQgTEwpCisgICAgICAgIC0gc3RseHIgYW5kIGZyaWVuZHMgKGZlbmNlZCBTQykKKyAg
ICAgICAgLSBlb3IgYXMgYSBmZW5jZWxlc3MgbG9hZC1sb2FkIGRlcGVuZGVuY3kKKyAgICAgICAg
CisgICAgICAgIFRoaXMgZG9lcyBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gcGF0dGVybiBtYXRjaGlu
ZyB0byBlbnN1cmUgdGhhdCB3ZWFrL3N0cm9uZyBDQVMgYW5kIGFsbCBvZiB0aGUKKyAgICAgICAg
dmFyaWFudHMgb2YgZmVuY2VzIGFuZCBhdG9taWMgbWF0aCBvcHMgZ2V0IGxvd2VyZWQgdG8gdGhl
IGJlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UuCisgICAgICAgIEZvciBleGFtcGxl
LCB3ZSBzdXBwb3J0IHRoZSBFcXVhbChBdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWQsIC4uLiksIGV4
cGVjdGVkKSBwYXR0ZXJuIGFuZCBhIGJ1bmNoCisgICAgICAgIG9mIGl0cyBmcmllbmRzLiBZb3Ug
Y2FuIHNheSBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkLCAuLi4pLCBleHBl
Y3RlZCkpIGFuZCBpdCB3aWxsCisgICAgICAgIGdlbmVyYXRlIHRoZSBiZXN0IHBvc3NpYmxlIGJy
YW5jaCBzZXF1ZW5jZSBvbiB4ODYgYW5kIEFSTTY0LgorICAgICAgICAKKyAgICAgICAgQjMgbm93
IGtub3dzIGhvdyB0byBtb2RlbCBhbGwgb2YgdGhlIGtpbmRzIG9mIGZlbmNpbmcuIEl0IGtub3dz
IHRoYXQgYWNxIGxvYWRzIGFyZSBvcmRlcmVkIHdpdGgKKyAgICAgICAgcmVzcGVjdCB0byBlYWNo
IG90aGVyIGFuZCB3aXRoIHJlc3BlY3QgdG8gcmVsIHN0b3JlcywgY3JlYXRpbmcgc2VxdWVudGlh
bCBjb25zaXN0ZW5jeSB0aGF0CisgICAgICAgIHRyYW5zY2VuZHMganVzdCB0aGUgYWNxL3JlbCBm
ZW5jZXMgdGhlbXNlbHZlcyAoc2VlIEVmZmVjdHM6OmZlbmNlKS4gSXQga25vd3MgdGhhdCB0aGUg
cGhhbnRvbQorICAgICAgICBmZW5jZSBlZmZlY3RzIG1heSBvbmx5IHRhcmdldCBzb21lIGFic3Ry
YWN0IGhlYXBzIGJ1dCBub3Qgb3RoZXJzLCBzbyB0aGF0IGxvYWQgZWxpbWluYXRpb24gYW5kCisg
ICAgICAgIHN0b3JlIHNpbmtpbmcgY2FuIHN0aWxsIG9wZXJhdGUgYWNyb3NzIGZlbmNlcyBpZiB5
b3UganVzdCB0ZWxsIEIzIHRoYXQgdGhlIGZlbmNlIGRvZXMgbm90IGFsaWFzCisgICAgICAgIHRo
b3NlIGFjY2Vzc2VzLiBUaGlzIG1ha2VzIGl0IHN1cGVyIGVhc3kgdG8gdGVhY2ggQjMgdGhhdCBz
b21lIG9mIHlvdXIgaGVhcCBpcyB0aHJlYWQtbG9jYWwuCisgICAgICAgIEV2ZW4gYmV0dGVyLCBp
dCBsZXRzIHlvdSBleHByZXNzIGZpbmUtZ3JhaW5lZCBkZXBlbmRlbmNpZXMgd2hlcmUgdGhlIGF0
b21pY3MgdGhhdCBhZmZlY3Qgb25lCisgICAgICAgIHByb3BlcnR5IGluIHNoYXJlZCBtZW1vcnkg
ZG8gbm90IGNsb2JiZXIgbm9uLWF0b21pY3MgdGhhdCBmZmVjdCBzb21lIG90aGVyIHByb3BlcnR5
IGluIHNoYXJlZAorICAgICAgICBtZW1vcnkuCisgICAgICAgIAorICAgICAgICBPbmUgb2YgbXkg
ZmF2b3JpdGUgZmVhdHVyZXMgaXMgRGVwZW5kLCB3aGljaCBhbGxvd3MgeW91IHRvIGV4cHJlc3Mg
bG9hZC1sb2FkIGRlcGVuZGVuY2llcy4gT24KKyAgICAgICAgeDg2IGl0IGxvd2VycyB0byBub3Ro
aW5nLCB3aGlsZSBvbiBBUk02NCBpdCBsb3dlcnMgdG8gZW9yLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBhbHNvIGV4cG9zZXMgYSBjb21tb24gYXRvbWljV2Vha0NBUyBBUEkgdG8gdGhlIHg4Nl82
NC9BUk02NCBNYWNyb0Fzc2VtYmxlcnMuIFNhbWUgZm9yCisgICAgICAgIGFjcS9yZWwuIEpTQydz
IDY0LWJpdCBKSVRzIGFyZSBub3cgYSBoYXBweSBjb25jdXJyZW5jeSBwbGF5Z3JvdW5kLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBkb2Vzbid0IHlldCBleHBvc2UgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gSlMgb3Igd2FzbS4gU0FCIHN0aWxsIHVzZXMgdGhlIG5vbi1pbnRyaW5zaWMKKyAgICAgICAg
aW1wbGVtZW50YXRpb25zIG9mIHRoZSBBdG9taWNzIG9iamVjdCwgZm9yIG5vdy4KKyAgICAgICAg
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmxkYXIpOgorICAgICAgICAoSlND
OjpBUk02NEFzc2VtYmxlcjo6bGR4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjps
ZGF4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdHhyKToKKyAgICAgICAgKEpT
Qzo6QVJNNjRBc3NlbWJsZXI6OnN0bHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6
c3RseHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZXhjZXBuR2VuZXJhdGlvbklt
bU1hc2spOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZXhvdGljTG9hZCk6CisgICAg
ICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdG9yZVJlbGVhc2UpOgorICAgICAgICAoSlNDOjpB
Uk02NEFzc2VtYmxlcjo6ZXhvdGljU3RvcmUpOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRBY3E4
U2lnbmVkRXh0ZW5kVG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omxv
YWRBY3E4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVSZWw4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZEFjcTE2U2lnbmVkRXh0ZW5k
VG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRBY3ExNik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlUmVsMTYpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZVJlbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
c3RvcmVSZWw2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5r
OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxOCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZDgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmRSZWw4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbmsxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZUNvbmQxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlQ29uZFJlbDE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZExpbmszMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNx
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbms2NCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YXRvbWljU3Ryb25nQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmF0b21pY1N0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YXRvbWljU3Ryb25nQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphdG9taWNTdHJvbmdDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmF0b21pY1JlbGF4ZWRTdHJvbmdDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoQXRvbWljV2Vha0NBUzgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTNjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNSZWxheGVkV2Vh
a0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNS
ZWxheGVkV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJh
bmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpkZXBlbmQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmRlcGVuZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZExpbmspOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkTGlua0FjcSk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZFJlbCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNpZ25FeHRlbmQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpicmFuY2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphdG9taWNTdHJvbmdDQVMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojph
dG9taWNSZWxheGVkU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoQXRvbWljV2Vha0NBUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6ZXh0cmFjdFNpbXBsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDg+KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6c2lnbkV4dGVuZDwxNj4pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0OjpicmFuY2g8NjQ+KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFkZDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bmVnMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bmVnOCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMTYpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6b3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN1YjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnN1YjgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMTYpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpub3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
Ojpub3QxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpub3Q4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Ryb25nQ0FTOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdHJvbmdDQVMxNik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdHJvbmdDQVMzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBdG9taWNTdHJv
bmdDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0
b21pY1N0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmF0b21pY1dlYWtDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmF0b21pY1dlYWtDQVMxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjphdG9taWNXZWFrQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YnJhbmNoQXRvbWljV2Vha0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoQXRvbWljV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1dlYWtDQVMzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNSZWxheGVkV2Vha0NBUzgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljUmVsYXhlZFdlYWtD
QVMxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNSZWxh
eGVkV2Vha0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJy
YW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljQWRkOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBZGQxNik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBZGQzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdWI4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N1YjE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmF0b21pY0FuZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6YXRvbWljQW5kMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YXRvbWljQW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6YXRvbWljT3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OmF0b21pY09yMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YXRvbWljT3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9t
aWNYb3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hv
cjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hvcjMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY05lZzgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTmVnMTYpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTmVnMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTm90OCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNOb3QxNik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNOb3QzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnQWRkOCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnQWRkMTYpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljWGNoZ0FkZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGc4KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGcxNik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6bG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3ExNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3EzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZVJlbDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6c3RvcmVSZWwxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzdG9yZVJlbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN0b3JlRmVuY2UpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6bG9hZEZlbmNlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnBhdGNoYWJsZUp1bXBTaXplKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OnN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1cHBvcnRzQVZYKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnVwZGF0ZUVheDFFY3hGbGFncyk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp4ODZDb25kaXRpb24pOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1N0cm9uZ0NBUyk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjphZGQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0OjphbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpuZWc2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpvcjY0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN1YjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZfNjQ6OnhvcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om5vdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0b3JlNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljU3Ryb25nQ0FTNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoQXRvbWljU3Ryb25n
Q0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljV2Vha0NB
UzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaEF0b21pY1dl
YWtDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNSZWxh
eGVkV2Vha0NBUzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5j
aEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6YXRvbWljQWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YXRvbWljU3ViNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWlj
QW5kNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljT3I2NCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNYb3I2NCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNOZWc2NCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNOb3Q2NCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNYY2hnQWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljWGNoZzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OmxvYWRBY3E2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpzdG9yZVJlbDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6YWRkcV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkcV9ybSk6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkcV9pbSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6YW5kbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kbF9y
bSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kd19ybSk6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6YW5kYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5k
bF9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kd19pbSk6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6YW5kYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
YW5kcV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcV9ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcV9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6aW5jcV9tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdxX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5lZ2xfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bmVnd19tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdiX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdGxfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bm90d19tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpub3RiX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdHFfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JsX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfcm0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yd19ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfaW0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yd19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JiX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcnFfbXIpOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9ycV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX21yKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpzdWJ3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJiX3JtKToKKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjpzdWJ3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJiX2ltKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJxX21yKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpzdWJxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJxX2lt
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JsX21yKToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjp4b3JsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3Js
X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3J3X3JtKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjp4b3J3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4
b3JiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JiX2ltKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp4b3JxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX21yKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4Y2hnYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6eGNoZ3dfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnhjaGdsX3JtKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4Y2hncV9ybSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6bW92d19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92cV9p
MzJtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hnYl9ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6Y21weGNoZ3dfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6OmNtcHhjaGdsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hn
cV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZGJfcm0pOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OnhhZGR3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp4YWRkbF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZHFfcm0pOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGIzL0IzQXRv
bWljVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjp+QXRv
bWljVmFsdWUpOgorICAgICAgICAoSlNDOjpCMzo6QXRvbWljVmFsdWU6OmR1bXBNZXRhKToKKyAg
ICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjpjbG9uZUltcGwpOgorICAgICAgICAoSlNDOjpC
Mzo6QXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKToKKyAgICAgICAgKiBiMy9CM0F0b21pY1ZhbHVl
Lmg6IEFkZGVkLgorICAgICAgICAqIGIzL0IzQmFzaWNCbG9jay5oOgorICAgICAgICAqIGIzL0Iz
QmxvY2tJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJbnNlcnRpb25T
ZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6QjM6OkJsb2NrSW5zZXJ0aW9u
U2V0OjppbnNlcnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJbnNlcnRpb25T
ZXQ6Omluc2VydEJlZm9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpCbG9ja0luc2Vy
dGlvblNldDo6aW5zZXJ0QWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJ
bnNlcnRpb25TZXQ6OmV4ZWN1dGUpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzQmxvY2tJbnNl
cnRpb25TZXQuaDoKKyAgICAgICAgKiBiMy9CM0VmZmVjdHMuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6RWZmZWN0czo6aW50ZXJmZXJlcyk6CisgICAgICAgIChKU0M6OkIzOjpFZmZlY3RzOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKEpTQzo6QjM6OkVmZmVjdHM6OmR1bXApOgorICAgICAgICAqIGIz
L0IzRWZmZWN0cy5oOgorICAgICAgICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2FsbCk6CisgICAg
ICAgIChKU0M6OkIzOjpFZmZlY3RzOjptdXN0RXhlY3V0ZSk6CisgICAgICAgICogYjMvQjNFbGlt
aW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNHZW5lcmF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpnZW5lcmF0ZVRvQWlyKToKKyAgICAgICAgKiBiMy9CM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkdlbmVy
aWNCbG9ja0luc2VydGlvblNldDo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAg
KEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAg
KEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIpOgorICAgICAg
ICAoSlNDOjpCMzo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAg
KiBiMy9CM0hlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpCMzo6SGVhcFJhbmdlOjpvcGVyYXRv
cnwpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
Okluc2VydGlvblNldDo6aW5zZXJ0Q2xvbmUpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0
Lmg6CisgICAgICAgICogYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwOgorICAgICAgICAq
IGIzL0IzTG93ZXJNYWNyb3MuY3BwOgorICAgICAgICAoSlNDOjpCMzo6bG93ZXJNYWNyb3MpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAg
ICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6Okxvd2VyVG9BaXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpydW4p
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YWRkcik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlQW55T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9wKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6c3RvcmVPcGNvZGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpjcmVhdGVTdG9yZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6Om5ld0Jsb2NrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
c3BsaXRCbG9jayk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFj
a21hcCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NkRpdik6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NlVEaXYpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojpsb3dlclg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6Omxvd2VyWDg2VURpdik6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmg6
CisgICAgICAgICogYjMvQjNNZW1vcnlWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpNZW1v
cnlWYWx1ZTo6aXNMZWdhbE9mZnNldCk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6
YWNjZXNzVHlwZSk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuayk6
CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUpOgorICAgICAg
ICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6OmR1bXBNZXRhKToKKyAgICAgICAgKEpTQzo6QjM6Ok1l
bW9yeVZhbHVlOjpNZW1vcnlWYWx1ZSk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6
YWNjZXNzV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTWVtb3J5VmFsdWUuaDoKKyAg
ICAgICAgKiBiMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
QjM6Ok1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6QjM6Ok1lbW9y
eVZhbHVlOjpyZXF1aXJlc1NpbXBsZUFkZHIpOgorICAgICAgICAoSlNDOjpCMzo6TWVtb3J5VmFs
dWU6OmFjY2Vzc1dpZHRoKToKKyAgICAgICAgKiBiMy9CM01vdmVDb25zdGFudHMuY3BwOgorICAg
ICAgICAqIGIzL0IzTmF0aXZlVHJhaXRzLmg6IEFkZGVkLgorICAgICAgICAqIGIzL0IzT3Bjb2Rl
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnN0b3JlT3Bjb2RlKToKKyAgICAgICAgKFdURjo6cHJp
bnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAgKEpTQzo6QjM6
OmlzTG9hZCk6CisgICAgICAgIChKU0M6OkIzOjppc1N0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6
OmlzTG9hZFN0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6OmlzQXRvbWljKToKKyAgICAgICAgKEpT
Qzo6QjM6OmlzQXRvbWljQ0FTKToKKyAgICAgICAgKEpTQzo6QjM6OmlzQXRvbWljWGNoZyk6Cisg
ICAgICAgIChKU0M6OkIzOjppc01lbW9yeUFjY2Vzcyk6CisgICAgICAgIChKU0M6OkIzOjpzaWdu
RXh0ZW5kT3Bjb2RlKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpQcm9jZWR1cmU6OmR1bXApOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6Cisg
ICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Omhhc1F1aXJrcyk6CisgICAgICAgIChKU0M6OkIz
OjpQcm9jZWR1cmU6OnNldEhhc1F1aXJrcyk6CisgICAgICAgICogYjMvQjNQdXJlQ1NFLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OnB1cmVDU0UpOgorICAgICAgICAqIGIzL0IzUHVyZUNTRS5oOgor
ICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsaWRh
dGUuY3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFs
dWU6OnJldHVybnNCb29sKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnBl
cmZvcm1TdWJzdGl0dXRpb24pOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnR5cGVGb3IpOgor
ICAgICAgICAqIGIzL0IzVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM1dpZHRoLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OmJlc3RUeXBlKToKKyAgICAgICAgKiBiMy9CM1dpZHRoLmg6CisgICAgICAg
IChKU0M6OkIzOjpjYW5vbmljYWxXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjppc0Nhbm9uaWNh
bFdpZHRoKToKKyAgICAgICAgKEpTQzo6QjM6Om1hc2spOgorICAgICAgICAqIGIzL2Fpci9BaXJB
cmcuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmpzSGFzaCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6OkFyZzo6ZHVtcCk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpp
c0FueVVzZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNDb2xkVXNlKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpjb29sZWQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzRWFybHlVc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzTGF0ZVVzZSk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNBbnlEZWYpOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpBcmc6OmlzRWFybHlEZWYpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6Omlz
TGF0ZURlZik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNaRGVmKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjpzaW1wbGVBZGRyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjpzdGF0dXNDb25kKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1NpbXBsZUFk
ZHIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzTWVtb3J5KToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc1N0YXR1c0NvbmQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpwdHIpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmJhc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzR1ApOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRlApOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpBcmc6OmlzVmFsaWRGb3JtKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjpmb3JFYWNoVG1wRmFzdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6Zm9yRWFj
aFRtcCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6YXNBZGRyZXNzKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjphc1N0YXR1c0NvbmRpdGlvbik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OkFyZzo6aXNJbnZlcnRpYmxlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpp
bnZlcnRlZCk6CisgICAgICAgICogYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKToKKyAgICAgICAgKiBiMy9h
aXIvQWlyQmFzaWNCbG9jay5oOgorICAgICAgICAqIGIzL2Fpci9BaXJCbG9ja0luc2VydGlvblNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCbG9ja0luc2VydGlvblNldDo6
QmxvY2tJbnNlcnRpb25TZXQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCbG9ja0luc2VydGlv
blNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKiBiMy9haXIvQWlyQmxvY2tJbnNl
cnRpb25TZXQuaDogQWRkZWQuCisgICAgICAgICogYjMvYWlyL0FpckR1bXBBc0pTLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBiMy9haXIvQWlyRHVtcEFzSlMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBiMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjplbGltaW5hdGVEZWFkQ29kZSk6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24pOgorICAgICAgICAq
IGIzL2Fpci9BaXJJbnN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjppc0F0b21p
Y1N0cm9uZ0NBU1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNT
dHJvbmdDQVNWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmlzQXRvbWljU3Ryb25nQ0FT
OFZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVMxNlZhbGlk
KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVMzMlZhbGlkKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVM2NFZhbGlkKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNTdHJvbmdDQVM4VmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzE2VmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzY0VmFsaWQpOgorICAgICAgICAq
IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy9haXIvQWlyT3B0aW1pemVC
bG9ja09yZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6b3B0aW1pemVCbG9ja09yZGVy
KToKKyAgICAgICAgKiBiMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6cGFkSW50ZXJmZXJlbmNlKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6c3BpbGxFdmVyeXRoaW5nKToK
KyAgICAgICAgKiBiMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYjoKKyAgICAgICAgKiBiMy90ZXN0
YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRBY3E0Mik6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0
b3JlUmVsQWRkTG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkRmVu
Y2VMb2FkQWNxOCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdFg4NkxlYUFkZEFkZCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0WDg2TGVhQWRkU2hs
TGVmdFNjYWxlMSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljV2Vha0NBUyk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RBdG9taWNYY2hnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3REZXBlbmQzMik6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0RGVwZW5kNjQpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAg
ICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxNy0wMy0wNiAgTWljaGFlbCBTYWJvZmYgIDxt
c2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBUYWtlIGFkdmFudGFnZSBvZiBmYXN0IHBlcm1p
c3Npb25zIHN3aXRjaGluZyBvZiBKSVQgbWVtb3J5IGZvciBkZXZpY2VzIHRoYXQgc3VwcG9ydCBp
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjEzNDky
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC02NCw2ICs2NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgQVBJL09w
YXF1ZUpTU3RyaW5nLmNwcAogCiAgICAgYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKKyAgICBh
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKICAgICBhc3NlbWJsZXIvTGlua0J1
ZmZlci5jcHAKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCiAgICAgYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNLmNwcApAQCAtNzYsMTIgKzc3LDEyIEBAIHNldChKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgYjMvYWlyL0FpckFsbG9jYXRlU3RhY2suY3BwCiAgICAgYjMvYWly
L0FpckFyZy5jcHAKICAgICBiMy9haXIvQWlyQmFzaWNCbG9jay5jcHAKKyAgICBiMy9haXIvQWly
QmxvY2tJbnNlcnRpb25TZXQuY3BwCiAgICAgYjMvYWlyL0FpckNDYWxsU3BlY2lhbC5jcHAKICAg
ICBiMy9haXIvQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcAogICAgIGIzL2Fpci9BaXJDb2RlLmNw
cAogICAgIGIzL2Fpci9BaXJDdXN0b20uY3BwCiAgICAgYjMvYWlyL0FpckRpc2Fzc2VtYmxlci5j
cHAKLSAgICBiMy9haXIvQWlyRHVtcEFzSlMuY3BwCiAgICAgYjMvYWlyL0FpckVsaW1pbmF0ZURl
YWRDb2RlLmNwcAogICAgIGIzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKICAgICBiMy9haXIvQWly
Rml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTExMCw2ICsxMTEsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIGIzL2Fpci9BaXJWYWxpZGF0ZS5jcHAKIAogICAgIGIzL0IzQXJndW1l
bnRSZWdWYWx1ZS5jcHAKKyAgICBiMy9CM0F0b21pY1ZhbHVlLmNwcAogICAgIGIzL0IzQmFuay5j
cHAKICAgICBiMy9CM0Jhc2ljQmxvY2suY3BwCiAgICAgYjMvQjNCbG9ja0luc2VydGlvblNldC5j
cHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTM0OTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxNCBAQAogCQkwRjJDNjNCMDFF
NjBBRTQzMDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmggKi87
IH07CiAJCTBGMkM2M0IxMUU2MEFFNDUwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0FEMUU2MEFFM0MwMEMx
MzgzOSAvKiBCM1dpZHRoLmNwcCAqLzsgfTsKIAkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8q
IEIzV2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi87IH07CisJCTBGMkM2M0I2
MUU2MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0IzMUU2MzQzRTgwMEMxMzgzOSAvKiBC
M0F0b21pY1ZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIz
QXRvbWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJ
CTBGMkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUx
RTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJ
CTBGMkM2M0JCMUU2MzQ0MEEwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCOTFFNjM0
NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQkwRjJDNjNC
QzFFNjM0NDBDMDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgz
OSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNDMDFFNjYwRUE3MDBD
MTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCRjFFNjYwRUE1MDBDMTM4MzkgLyogQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgz
OSAvKiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmgg
Ki87IH07CisJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYz
QzMxRTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggKi87IH07CiAJCTBG
MkQ0REREMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERCMTk4MzJEMzQwMDdENEIx
OSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5
IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERTgx
OTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9U
aGlzU3RhdHVzLmNwcCAqLzsgfTsKQEAgLTIyNDksOCArMjI1Nyw2IEBACiAJCURDMjE0MzA4MUNB
MzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmNw
cCAqLzsgfTsKIAkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIwOTFEMzQzMTYx
MDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVhcENlbGwuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREMzRDJCMEIx
RDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKLQkJREM0NTRCOEMxRDAwRTgy
MjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNK
Uy5jcHAgKi87IH07Ci0JCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM0NTRCOEIx
RDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1QjVEMUNFMjZF
QTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxl
ckV2ZW50LmNwcCAqLzsgfTsKIAkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8qIFByb2ZpbGVy
RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERD
NjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREM2MDVCNUYxQ0UyNkVBNTAwNTkz
NzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IERDNjA1QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAg
Ki87IH07CkBAIC0yNzc1LDYgKzI3ODEsMTQgQEAKIAkJMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5
IC8qIEIzQmFuay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0JhbmsuaDsg
cGF0aCA9IGIzL0IzQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNB
RDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBCM1dpZHRoLmNwcDsgcGF0aCA9IGIzL0IzV2lkdGguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1dpZHRoLmg7IHBhdGggPSBi
My9CM1dpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0IzMUU2MzQz
RTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEIzQXRvbWljVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgz
OSAvKiBCM0F0b21pY1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIz
QXRvbWljVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjUxRTYzNDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2Nr
SW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJp
Y0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4
MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJs
b2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYz
QkExRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9h
aXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYyQzYzQkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MxMUU2NjRBNUEwMEMx
MzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBCM05hdGl2ZVRyYWl0cy5oOyBwYXRoID0gYjMvQjNOYXRpdmVUcmFpdHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQzMxRTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5
VmFsdWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTWVtb3J5
VmFsdWVJbmxpbmVzLmg7IHBhdGggPSBiMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENEREQjE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdn
ZXJTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1Z2dl
clNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREMxOTgzMkQz
NDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGVidWdnZXJTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJE
NERERjE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFR5cGVQcm9maWxlckxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00Nzk1LDggKzQ4MDksNiBAQAogCQlEQzIxNDMwNjFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDM0QyQjA5MUQzNDMxNjEwMEJBOTE4QyAvKiBIZWFwQ2Vs
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwQ2VsbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwQjFEMzQzNzZFMDBCQTkxOEMgLyogSGVhcENl
bGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcENlbGwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEQzQ1NEI4QTFEMDBFODFGMDA0QzE4QUYg
LyogQWlyRHVtcEFzSlMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
QWlyRHVtcEFzSlMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBB
c0pTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckR1bXBBc0pTLmg7IHBh
dGggPSBiMy9haXIvQWlyRHVtcEFzSlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
REM2MDVCNTkxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJFdmVudC5jcHA7IHBhdGggPSBwcm9m
aWxlci9Qcm9maWxlckV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2
MDVCNUExQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJFdmVudC5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmls
ZXJFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYwNUI1QjFDRTI2RTk4
MDA1OTM3MTggLyogUHJvZmlsZXJVSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gUHJvZmlsZXJVSUQuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJVSUQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMxNCw2ICs1MzI2LDggQEAKIAkJCQkw
RkVDODRCMzFCREFDRDg4MDA4MEZGNzQgLyogYWlyICovLAogCQkJCTBGRUM4NEI0MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEI1MUJEQUNE
QUMwMDgwRkY3NCAvKiBCM0FyZ3VtZW50UmVnVmFsdWUuaCAqLywKKwkJCQkwRjJDNjNCMzFFNjM0
M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi8sCisJCQkJMEYyQzYzQjQxRTYzNDNF
ODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuaCAqLywKIAkJCQkwRjJDNjNBQjFFNjBBRTNDMDBD
MTM4MzkgLyogQjNCYW5rLmNwcCAqLywKIAkJCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyog
QjNCYW5rLmggKi8sCiAJCQkJMEZFQzg0QjYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9j
ay5jcHAgKi8sCkBAIC01Mzc2LDYgKzUzOTAsNyBAQAogCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQg
LyogQjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0Ew
MDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgw
RkY3NCAvKiBCM0hlYXBSYW5nZS5oICovLApAQCAtNTM5OCw4ICs1NDEzLDEwIEBACiAJCQkJNDNB
QjI2QzUxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5oICovLAogCQkJCTBGRUM4NEQ1
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRENjFC
REFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5oICovLAorCQkJCTBGMkM2M0MzMUU2OUVG
OTIwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oICovLAogCQkJCTBGMzM4RTAzMUJG
MDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuY3BwICovLAogCQkJCTBGMzM4RTA0MUJG
MDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuaCAqLywKKwkJCQkwRjJDNjNDMTFFNjY0
QTVBMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLywKIAkJCQkwRjMzOEUwNTFCRjAyNzZD
MDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3QuaCAqLywKIAkJCQkwRjMzOEUwNjFCRjAyNzZD
MDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmNwcCAqLywKIAkJCQkwRjMzOEUwNzFCRjAy
NzZDMDAxM0M4OEYgLyogQjNPcGFxdWVCeXByb2R1Y3RzLmggKi8sCkBAIC01NDkxLDYgKzU1MDgs
OCBAQAogCQkJCTBGNjRFQUYyMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggKi8s
CiAJCQkJMEZFQzg1NEMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suY3BwICovLAog
CQkJCTBGRUM4NTREMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmggKi8sCisJCQkJ
MEYyQzYzQjkxRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLywK
KwkJCQkwRjJDNjNCQTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAq
LywKIAkJCQkwRkIzODc4QjFCRkJDNDREMDBFM0FCMUUgLyogQWlyQmxvY2tXb3JrbGlzdC5oICov
LAogCQkJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24u
Y3BwICovLAogCQkJCTBGNjE4MzIxMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZl
bnRpb24uaCAqLywKQEAgLTU1MDIsOCArNTUyMSw2IEBACiAJCQkJMEYxMEYxQTIxQzQyMEJGMDAw
MUMwN0QyIC8qIEFpckN1c3RvbS5oICovLAogCQkJCTc5QUJCMTdCMUU1Q0NCNTcwMDQ1QjlBNiAv
KiBBaXJEaXNhc3NlbWJsZXIuY3BwICovLAogCQkJCTc5QUJCMTdDMUU1Q0NCNTcwMDQ1QjlBNiAv
KiBBaXJEaXNhc3NlbWJsZXIuaCAqLywKLQkJCQlEQzQ1NEI4QTFEMDBFODFGMDA0QzE4QUYgLyog
QWlyRHVtcEFzSlMuY3BwICovLAotCQkJCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oICovLAogCQkJCTBGNDU3MDM2MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5h
dGVEZWFkQ29kZS5jcHAgKi8sCiAJCQkJMEY0NTcwMzcxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVs
aW1pbmF0ZURlYWRDb2RlLmggKi8sCiAJCQkJMEY2MTgzMjMxQzQ1QkYwNzAwNzI0NTBCIC8qIEFp
ckVtaXRTaHVmZmxlLmNwcCAqLywKQEAgLTczNTUsNiArNzM3Miw3IEBACiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGMUZFNTFCMTkyMkEzQkMwMDY5ODdDNSAvKiBB
Ym9ydFJlYXNvbi5oICovLAorCQkJCTBGMkM2M0JGMUU2NjBFQTUwMEMxMzgzOSAvKiBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmNwcCAqLywKIAkJCQk4NjAxNjFERjBGM0E4M0MxMDBGODQ3MTAgLyog
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovLAogCQkJCTBGMzczMDkwMUMwQ0Q3MEMwMDA1MkJG
QSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAqLywKIAkJCQk4NjQwOTIzQjE1
NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLywKQEAgLTczODMsOCArNzQwMSw4
IEBACiAJCQkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5o
ICovLAogCQkJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50
ZXIuY3BwICovLAogCQkJCUZFNjhDNjM2MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxl
clByaW50ZXIuaCAqLywKLQkJCQk4NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3Nl
bWJsZXJYODYuaCAqLywKIAkJCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaCAqLywKKwkJCQk4NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9B
c3NlbWJsZXJYODYuaCAqLywKIAkJCQlBN0E0QUUwNzE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uY3BwICovLAogCQkJCTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAv
KiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovLAogCQkJCTY1ODYwMTc3MTg1QThGNUUwMDAz
MEVFRSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oICovLApAQCAtNzk3Nyw3ICs3
OTk1LDYgQEAKIAkJCQkwRkVDODU3NDFCREFDREM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU3NjFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1
c3RvbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREM0NTRCOEQxRDAwRTgyNDAwNEMxOEFGIC8qIEFp
ckR1bXBBc0pTLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2Mjkg
LyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4MzJEMUM0
NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0
REUxQ0YxQzRDMUI1NDAwNEQ2QzExIC8qIEFpckZpeE9idmlvdXNTcGlsbHMuaCBpbiBIZWFkZXJz
ICovLApAQCAtNzk5MCw2ICs4MDA3LDcgQEAKIAkJCQkwRkVDODU4MDFCREFDREM3MDA4MEZGNzQg
LyogQWlySW5zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1ODExQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckluc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRGNjdENzFEOURDNDQy
MDAxQjk4MjUgLyogQWlyS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQkMxRTYzNDQw
QzAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQky
Njg0RDQzODFDMDAxNjFDMDA4MUQ2NjMgLyogQWlyTGl2ZW5lc3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRTM0QzFBMUM0QjM5QUUwMDAzQTUxMiAvKiBBaXJMb2dSZWdpc3RlclByZXNzdXJlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyRjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyTG93ZXJB
ZnRlclJlZ0FsbG9jLmggaW4gSGVhZGVycyAqLywKQEAgLTgwODEsNiArODA5OSw3IEBACiAJCQkJ
NDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVDODVCMzFCREVEOTU3MDA4MEZGNzQgLyogQjNDb25zdFB0clZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOERGNjFCRTkzRDU1MDAxM0M4OEYgLyogQjNDb25zdHJh
aW5lZFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCODFFNjM0M0Y3MDBDMTM4Mzkg
LyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4
RTBFMUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjMzRkNGQzFDMTYyNUJFMDAzMjNGNjcgLyogQjNEb21pbmF0b3JzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjZCOEFEOTFDNEVEREEyMDA5NjkwNTIgLyogQjNEdXBsaWNhdGVUYWlscy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04MjcxLDYgKzgyOTAsNyBAQAogCQkJCUE3N0E0MjNFMTdBMEJCRkQw
MEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDREOTAz
MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzA0RDkwNDE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAv
KiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzcxNDNGQ0QzRjAw
NjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDNFNDAy
MUI2MThBQUYwMEM4MEUxRSAvKiBERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMThEM0QwMUI1NUE2RTAwMDJDNUM5RiAvKiBE
RkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLApAQCAtODQwMiw2
ICs4NDIyLDcgQEAKIAkJCQkwRjM5MkM4QTFCNDYxODg0MDA4NDQ3MjggLyogREZHT1NSRXhpdEZ1
enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEzQjYwMDU2N0Y1MyAvKiBERkdP
U1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFRTE3MTc4
RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjJDNjNCNzFFNjM0M0VEMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY2MjM3OTgxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50b21JbnNlcnRpb25Q
aGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUMxNEVGOTBBRjAwQzcyNTMyIC8qIERG
R1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFQjE5RDBCQTdEMDBCMUQxQjUgLyog
REZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLApAQCAtODgyMCw2ICs4ODQxLDcgQEAKIAkJ
CQk3OUI4MTk5MzFERDI1Q0Y1MDBEREM3MTQgLyogSlNHbG9iYWxPYmplY3RJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTEwMDdDMTE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2NDE4ODA5
REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFs
T2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1
QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUxM0U1QzIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTk4MzEsNiArOTg1Myw3IEBACiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMEZGQTU0OTcxNkI4ODM1MDAw
QjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQzAxRTY2
MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFj
dFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNzBCNEY1MUJGMjYyMDIwMDVDNDBGQyAvKiBB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtOTg0MSw3ICs5ODY0LDYgQEAKIAkJCQkwRkVDODU3MzFCREFDREM3MDA4MEZGNzQg
LyogQWlyQ0NhbGxTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTc1MUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjE4MzJCMUM0
NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJREM0NTRC
OEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNDU3MDM4MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjYxODMyQzFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZm
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0REUxQ0UxQzRDMUI1NDAwNEQ2QzExIC8qIEFp
ckZpeE9idmlvdXNTcGlsbHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI4OSw2ICsxMDMxMSw3
IEBACiAJCQkJOUU3Mjk0MDcxOTBGMDFBNTAwMUE5MUI1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1QjcxODVCOEJEMzAwN0U5NUFEIC8qIEluamVj
dGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTRCMkMyMTg1QTY4NDQwMEYzQzdD
QiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQjYx
RTYzNDNFQTAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNTEzRTVDQTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1ODQwRTIwMTg3QjdCODYwMDg0M0IxMCAv
KiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMzA3LDYgKzEw
MzMwLDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0MzhCMTg1NjgzMzUw
MDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjJDNjNCQjFFNjM0NDBBMDBDMTM4MzkgLyogQWlyQmxvY2tJ
bnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1MTY1RDIxQkRGMEI5ODAwM0I3
NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyogSW50ZXJuYWxGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNjk0LDYgKzY5NCwyMSBAQCBwcml2YXRlOgogICAgICAgICBMZHJMaXRlcmFsT3BfTERSU1cg
PSAyLAogICAgICAgICBMZHJMaXRlcmFsT3BfMTI4QklUID0gMgogICAgIH07CisgICAgCisgICAg
ZW51bSBFeG90aWNMb2FkRmVuY2UgeworICAgICAgICBFeG90aWNMb2FkRmVuY2VfTm9uZSwKKyAg
ICAgICAgRXhvdGljTG9hZEZlbmNlX0FjcXVpcmUKKyAgICB9OworICAgIAorICAgIGVudW0gRXhv
dGljTG9hZEF0b21pYyB7CisgICAgICAgIEV4b3RpY0xvYWRBdG9taWNfTGluaywKKyAgICAgICAg
RXhvdGljTG9hZEF0b21pY19Ob25lCisgICAgfTsKKworICAgIGVudW0gRXhvdGljU3RvcmVGZW5j
ZSB7CisgICAgICAgIEV4b3RpY1N0b3JlRmVuY2VfTm9uZSwKKyAgICAgICAgRXhvdGljU3RvcmVG
ZW5jZV9SZWxlYXNlLAorICAgIH07CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbWVtUGFpck9mZnNl
dFNoaWZ0KGJvb2wgViwgTWVtUGFpck9wU2l6ZSBzaXplKQogICAgIHsKQEAgLTE1MzEsNiArMTU0
Niw0OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbnNuKDB4ZDUwMzNhYmYpOwogICAgIH0K
KyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBsZGFyKFJlZ2lzdGVy
SUQgZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7
CisgICAgICAgIGluc24oZXhvdGljTG9hZChNRU1PUFNJWkUsIEV4b3RpY0xvYWRGZW5jZV9BY3F1
aXJlLCBFeG90aWNMb2FkQXRvbWljX05vbmUsIGRzdCwgc3JjKSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgbGR4cihSZWdpc3RlcklEIGRzdCwgUmVnaXN0
ZXJJRCBzcmMpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNu
KGV4b3RpY0xvYWQoTUVNT1BTSVpFLCBFeG90aWNMb2FkRmVuY2VfTm9uZSwgRXhvdGljTG9hZEF0
b21pY19MaW5rLCBkc3QsIHNyYykpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6
ZT4KKyAgICB2b2lkIGxkYXhyKFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7
CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZXhvdGljTG9hZChNRU1P
UFNJWkUsIEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlLCBFeG90aWNMb2FkQXRvbWljX0xpbmssIGRz
dCwgc3JjKSk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2
b2lkIHN0eHIoUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRz
dCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZXhvdGlj
U3RvcmUoTUVNT1BTSVpFLCBFeG90aWNTdG9yZUZlbmNlX05vbmUsIHJlc3VsdCwgc3JjLCBkc3Qp
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdGxyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFT
SVpFKCk7CisgICAgICAgIGluc24oc3RvcmVSZWxlYXNlKE1FTU9QU0laRSwgc3JjLCBkc3QpKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdGx4cihSZWdp
c3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAg
ICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihleG90aWNTdG9yZShNRU1PUFNJ
WkUsIEV4b3RpY1N0b3JlRmVuY2VfUmVsZWFzZSwgcmVzdWx0LCBzcmMsIGRzdCkpOworICAgIH0K
IAogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3Ju
KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCkBAIC0zNjAxLDcg
KzM2NTgsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgaW50IG9wNCA9IDA7CiAgICAgICAg
IHJldHVybiAoMHhkNjAwMDAwMCB8IG9wYyA8PCAyMSB8IG9wMiA8PCAxNiB8IG9wMyA8PCAxMCB8
IHhPclpyKHJuKSA8PCA1IHwgb3A0KTsKICAgICB9Ci0KKyAgICAKKyAgICBzdGF0aWMgaW50IGV4
b3RpY0xvYWQoTWVtT3BTaXplIHNpemUsIEV4b3RpY0xvYWRGZW5jZSBmZW5jZSwgRXhvdGljTG9h
ZEF0b21pYyBhdG9taWMsIFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNyYykKKyAgICB7Cisg
ICAgICAgIHJldHVybiAweDA4NWY3YzAwIHwgc2l6ZSA8PCAzMCB8IGZlbmNlIDw8IDE1IHwgYXRv
bWljIDw8IDIzIHwgc3JjIDw8IDUgfCBkc3Q7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBpbnQg
c3RvcmVSZWxlYXNlKE1lbU9wU2l6ZSBzaXplLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICByZXR1cm4gMHgwODlmZmMwMCB8IHNpemUgPDwgMzAgfCBkc3Qg
PDwgNSB8IHNyYzsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGludCBleG90aWNTdG9yZShNZW1P
cFNpemUgc2l6ZSwgRXhvdGljU3RvcmVGZW5jZSBmZW5jZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIHJldHVybiAweDA4
MDA3YzAwIHwgc2l6ZSA8PCAzMCB8IHJlc3VsdCA8PCAxNiB8IGZlbmNlIDw8IDE1IHwgZHN0IDw8
IDUgfCBzcmM7CisgICAgfQorICAgIAogICAgIC8vIFdvcmthcm91bmQgZm9yIENvcnRleC1BNTMg
ZXJyYXR1bSAoODM1NzY5KS4gRW1pdCBhbiBleHRyYSBub3AgaWYgdGhlCiAgICAgLy8gbGFzdCBp
bnN0cnVjdGlvbiBpbiB0aGUgYnVmZmVyIGlzIGEgbG9hZCwgc3RvcmUgb3IgcHJlZmV0Y2guIE5l
ZWRlZAogICAgIC8vIGJlZm9yZSA2NC1iaXQgbXVsdGlwbHktYWNjdW11bGF0ZSBpbnN0cnVjdGlv
bnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2Vt
Ymxlci5oIiAvLyBIYXZlIHRvIGJyZWFrIHdpdGggc3R5bGUgYmVjYXVzZSBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmggaXMgYSBzaGFkeSBoZWFkZXIuCisKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQor
CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OlN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCit7
CisgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICBjYXNlIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXJCYXNlOjpTdWNjZXNzOgorICAgICAgICBvdXQucHJpbnQoIlN1Y2Nlc3MiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2U6OkZhaWx1cmU6Cisg
ICAgICAgIG91dC5wcmludCgiRmFpbHVyZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgor
CisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZp
c2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1JhbmRvbS5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTUwLDggKzUxLDI4IEBAIG5hbWVzcGFjZSBERkcgewogc3RydWN0
IE9TUkV4aXQ7CiB9CiAKK2NsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlIHsKK3B1Ymxp
YzoKKyAgICBlbnVtIFN0YXR1c0NvbmRpdGlvbiB7CisgICAgICAgIFN1Y2Nlc3MsCisgICAgICAg
IEZhaWx1cmUKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBTdGF0dXNDb25kaXRpb24gaW52ZXJ0
KFN0YXR1c0NvbmRpdGlvbiBjb25kaXRpb24pCisgICAgeworICAgICAgICBzd2l0Y2ggKGNvbmRp
dGlvbikgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAgICAgICByZXR1cm4gRmFpbHVy
ZTsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7Cisg
ICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIFN1Y2Nlc3M7CisgICAgfQorfTsKKwogdGVtcGxhdGUgPGNsYXNzIEFzc2VtYmxlclR5
cGUsIGNsYXNzIE1hY3JvQXNzZW1ibGVyVHlwZT4KLWNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIgeworY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyQmFzZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1ibGVyVHlwZT4gQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlclR5cGU7CiAgICAgdHlwZWRlZiBBc3NlbWJsZXJUeXBlIEFzc2VtYmxlclR5cGVfVDsKQEAg
LTExMDgsMyArMTEyOSwxNiBAQCBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUs
IE1hCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKIAogfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRT
dHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdGF0dXNDb25kaXRpb24pOworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIx
MzQ5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMyOyAvLyBUaGlzIGlzIHN1cGVyIHVzZWZ1bCBm
b3Igc29tZSBkb3VibGUgY29kZS4KIAogICAgIC8vIFV0aWxpdGllcyB1c2VkIGJ5IHRoZSBERkcg
SklULgorICAgIHVzaW5nIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQ7CiAgICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQ7CiAgICAgCiAgICAgc3RhdGljIERvdWJs
ZUNvbmRpdGlvbiBpbnZlcnQoRG91YmxlQ29uZGl0aW9uIGNvbmQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAko
cmV2aXNpb24gMjEzNDkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNzUsNyArMzM3NSwyMjkgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuZG1iSVNIKCk7CiAgICAgfQotCisg
ICAgCisgICAgdm9pZCBsb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoSW1wbGljaXRBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXI8
OD4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGxvYWRBY3E4KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBsb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoYWRkcmVzcywgZGVzdCk7
CisgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMigweGZmKSwgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHI8OD4oc3JjLCBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2lnbmVk
RXh0ZW5kVG8zMihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRhcjwxNj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJl
c3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNihJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZEFjcTE2
U2lnbmVkRXh0ZW5kVG8zMihhZGRyZXNzLCBkZXN0KTsKKyAgICAgICAgYW5kMzIoVHJ1c3RlZElt
bTMyKDB4ZmZmZiksIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoUmVn
aXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuc3RscjwxNj4oc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGFyPDMyPihkZXN0
LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
bG9hZEFjcTY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sZGFyPDY0PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVz
cyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdpc3RlcklE
IGRlc3QsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuc3RscjwzMj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJRCBkZXN0LCBJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHI8NjQ+KGRlc3QsIGV4
dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2Fk
TGluazgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8OD4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRk
cmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rQWNxOChJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bGRheHI8OD4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHN0b3JlQ29uZDgoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0
eHI8OD4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmRSZWw4KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdGx4cjw4PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rMTYoSW1wbGljaXRBZGRyZXNzIGFkZHJl
c3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8MTY+
KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBsb2FkTGlua0FjcTE2KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGF4cjwxNj4oZGVzdCwgZXh0cmFjdFNp
bXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZDE2
KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1
bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdHhyPDE2PihyZXN1bHQsIHNyYywgZXh0
cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3Jl
Q29uZFJlbDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjwxNj4ocmVzdWx0
LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBsb2FkTGluazMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhyPDMyPihkZXN0LCBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmtBY3EzMihJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubGRheHI8MzI+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmQzMihSZWdpc3RlcklEIHNyYywgSW1w
bGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3R4cjwzMj4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFk
ZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmRSZWwzMihSZWdpc3RlcklE
IHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuc3RseHI8MzI+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbms2NChJbXBs
aWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubGR4cjw2ND4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRMaW5rQWNxNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJl
c3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXhyPDY0
PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgc3RvcmVDb25kNjQoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0eHI8NjQ+
KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgc3RvcmVDb25kUmVsNjQoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN0bHhyPDY0PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNT
dHJvbmdDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCBy
ZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgYXRvbWljU3Ryb25nQ0FTPDE2Pihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUs
IGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
MzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM8MzI+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0
LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzw2ND4oY29uZCwgZXhwZWN0
ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljUmVsYXhlZFN0
cm9uZ0NBUzw4Pihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJl
c3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzE2KFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsK
KyAgICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzwxNj4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1JlbGF4ZWRTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM8
MzI+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVkU3Ryb25nQ0FTNjQoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAg
ICBhdG9taWNSZWxheGVkU3Ryb25nQ0FTPDY0Pihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3
VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIEp1bXBMaXN0IGJyYW5j
aEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljV2Vha0NBUzw4Pihjb25kLCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlz
dCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNXZWFrQ0FTPDE2Pihjb25kLCBl
eHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNXZWFrQ0FTPDMy
Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNX
ZWFrQ0FTPDY0Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVy
biBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzw4Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hB
dG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM8MTY+KGNv
bmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNSZWxheGVkV2Vha0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVl
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljUmVsYXhl
ZFdlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTPDY0Pihjb25kLCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGRlcGVuZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5lb3I8MzI+KGRlc3QsIHNyYywgc3JjKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBkZXBlbmQ2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuZW9yPDY0PihkZXN0LCBzcmMsIHNyYyk7CisgICAgfQorICAgIAog
ICAgIC8vIE1pc2MgaGVscGVyIGZ1bmN0aW9ucy4KIAogICAgIC8vIEludmVydCBhIHJlbGF0aW9u
YWwgY29uZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwgYmVjb21lcyA+PSwgZXRjLgpAQCAt
Mzg3Nyw2ICs0MDk5LDE1OCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQg
bG9hZExpbmsoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxkeHI8ZGF0YXNpemU+KGRlc3QsIHNyYyk7CisgICAgfQorICAgIAorICAg
IHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxvYWRMaW5rQWNxKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZGF4cjxk
YXRhc2l6ZT4oZGVzdCwgc3JjKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFz
aXplPgorICAgIHZvaWQgc3RvcmVDb25kKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qs
IFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3R4cjxkYXRh
c2l6ZT4oc3JjLCBkZXN0LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQg
ZGF0YXNpemU+CisgICAgdm9pZCBzdG9yZUNvbmRSZWwoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCwgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dGx4cjxkYXRhc2l6ZT4oc3JjLCBkZXN0LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB0ZW1w
bGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzaWduRXh0ZW5kKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKHNyYywgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBKdW1wIGJyYW5jaChSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodCk7CisgICAgfQor
ICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NB
UyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVn
aXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4cGVjdGVkQW5kUmVzdWx0LCBleHBl
Y3RlZEFuZFJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIHNpbXBsZUFkZHJl
c3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0ZXJJRCB0
bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAg
IAorICAgICAgICBMYWJlbCByZWxvb3AgPSBsYWJlbCgpOworICAgICAgICBsb2FkTGlua0FjcTxk
YXRhc2l6ZT4oc2ltcGxlQWRkcmVzcywgdG1wKTsKKyAgICAgICAgSnVtcCBmYWlsdXJlID0gYnJh
bmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHRtcCk7CisgICAgICAg
IAorICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNpemU+KG5ld1ZhbHVlLCBzaW1wbGVBZGRyZXNz
LCByZXN1bHQpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9uWmVybywgcmVzdWx0KS5saW5rVG8o
cmVsb29wLCB0aGlzKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoY29uZCA9PSBTdWNjZXNz
KSwgcmVzdWx0KTsKKyAgICAgICAgSnVtcCBkb25lID0ganVtcCgpOworICAgICAgICAKKyAgICAg
ICAgZmFpbHVyZS5saW5rKHRoaXMpOworICAgICAgICBtb3ZlKHRtcCwgZXhwZWN0ZWRBbmRSZXN1
bHQpOworICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNpemU+KHRtcCwgc2ltcGxlQWRkcmVzcywg
cmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlc3VsdCkubGlua1RvKHJl
bG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGNvbmQgPT0gRmFpbHVyZSks
IHJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfQorICAg
IAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRTdHJv
bmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQp
CisgICAgeworICAgICAgICBzaWduRXh0ZW5kPGRhdGFzaXplPihleHBlY3RlZEFuZFJlc3VsdCwg
ZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICAKKyAgICAgICAgUmVnaXN0ZXJJRCBzaW1wbGVB
ZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcyk7CisgICAgICAgIFJlZ2lzdGVy
SUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAg
ICAgICAKKyAgICAgICAgTGFiZWwgcmVsb29wID0gbGFiZWwoKTsKKyAgICAgICAgbG9hZExpbms8
ZGF0YXNpemU+KHNpbXBsZUFkZHJlc3MsIHRtcCk7CisgICAgICAgIEp1bXAgZmFpbHVyZSA9IGJy
YW5jaDxkYXRhc2l6ZT4oTm90RXF1YWwsIGV4cGVjdGVkQW5kUmVzdWx0LCB0bXApOworICAgICAg
ICAKKyAgICAgICAgc3RvcmVDb25kPGRhdGFzaXplPihuZXdWYWx1ZSwgc2ltcGxlQWRkcmVzcywg
cmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlc3VsdCkubGlua1RvKHJl
bG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGNvbmQgPT0gU3VjY2Vzcyks
IHJlc3VsdCk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAgICAgCisgICAgICAg
IGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgbW92ZSh0bXAsIGV4cGVjdGVkQW5kUmVzdWx0
KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoY29uZCA9PSBGYWlsdXJlKSwgcmVzdWx0KTsK
KyAgICAgICAgCisgICAgICAgIGRvbmUubGluayh0aGlzKTsKKyAgICB9CisgICAgCisgICAgdGVt
cGxhdGU8aW50IGRhdGFzaXplPgorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1dlYWtDQVMoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHNpZ25FeHRl
bmQ8ZGF0YXNpemU+KGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBleHBlY3RlZEFuZENsb2JiZXJlZCk7
CisgICAgICAgIAorICAgICAgICBSZWdpc3RlcklEIHNpbXBsZUFkZHJlc3MgPSBleHRyYWN0U2lt
cGxlQWRkcmVzcyhhZGRyZXNzKTsKKyAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWRE
YXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIAorICAgICAgICBKdW1w
TGlzdCBzdWNjZXNzOworICAgICAgICBKdW1wTGlzdCBmYWlsdXJlOworCisgICAgICAgIGxvYWRM
aW5rQWNxPGRhdGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXApOworICAgICAgICBmYWlsdXJlLmFw
cGVuZChicmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgdG1w
KSk7CisgICAgICAgIHN0b3JlQ29uZFJlbDxkYXRhc2l6ZT4obmV3VmFsdWUsIHNpbXBsZUFkZHJl
c3MsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKTsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoY29u
ZCkgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6CisgICAgICAgICAgICBzdWNjZXNzLmFwcGVuZChi
cmFuY2hUZXN0MzIoWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAgICAgICAgIGZh
aWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBzdWNjZXNzOworICAgICAgICBj
YXNlIEZhaWx1cmU6CisgICAgICAgICAgICBmYWlsdXJlLmFwcGVuZChicmFuY2hUZXN0MzIoTm9u
WmVybywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWlsdXJl
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgSnVtcExp
c3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIHNpZ25FeHRlbmQ8ZGF0YXNpemU+KGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBleHBlY3RlZEFuZENsb2JiZXJlZCk7CisgICAgICAgIAorICAgICAgICBSZWdp
c3RlcklEIHNpbXBsZUFkZHJlc3MgPSBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCk7CisgICAgICAgIAorICAgICAgICBKdW1wTGlzdCBzdWNjZXNzOworICAgICAgICBK
dW1wTGlzdCBmYWlsdXJlOworCisgICAgICAgIGxvYWRMaW5rPGRhdGFzaXplPihzaW1wbGVBZGRy
ZXNzLCB0bXApOworICAgICAgICBmYWlsdXJlLmFwcGVuZChicmFuY2g8ZGF0YXNpemU+KE5vdEVx
dWFsLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgdG1wKSk7CisgICAgICAgIHN0b3JlQ29uZDxkYXRh
c2l6ZT4obmV3VmFsdWUsIHNpbXBsZUFkZHJlc3MsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKTsKKyAg
ICAgICAgCisgICAgICAgIHN3aXRjaCAoY29uZCkgeworICAgICAgICBjYXNlIFN1Y2Nlc3M6Cisg
ICAgICAgICAgICBzdWNjZXNzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQpKTsKKyAgICAgICAgICAgIGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgICAg
IHJldHVybiBzdWNjZXNzOworICAgICAgICBjYXNlIEZhaWx1cmU6CisgICAgICAgICAgICBmYWls
dXJlLmFwcGVuZChicmFuY2hUZXN0MzIoTm9uWmVybywgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWlsdXJlOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBSZWdpc3Rl
cklEIGV4dHJhY3RTaW1wbGVBZGRyZXNzKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBhZGRyZXNz
LmJhc2U7CisgICAgICAgIAorICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIo
YWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKSk7CisgICAgICAgIGFkZDY0KGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgcmV0dXJuIG1lbW9yeVRlbXBSZWdpc3RlcjsKKyAgICB9CiAKICAgICBKdW1wIGp1
bXBBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKERvdWJsZUNvbmRpdGlvbiBjb25kKQogICAgIHsK
QEAgLTM5ODksNiArNDM2MywyNCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTWFjcm9Bc3NlbWJsZXJB
Uk02NDo6CiAgICAgbV9hc3NlbWJsZXIuc3R1cmgocnQsIHJuLCBzaW1tKTsKIH0KIAordGVtcGxh
dGU8PgoraW5saW5lIHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk02NDo6c2lnbkV4dGVuZDw4PihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQoreworICAgIHNpZ25FeHRlbmQ4VG8zMihzcmMs
IGRlc3QpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0
OjpzaWduRXh0ZW5kPDE2PihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQoreworICAg
IHNpZ25FeHRlbmQxNlRvMzIoc3JjLCBkZXN0KTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIE1h
Y3JvQXNzZW1ibGVyQVJNNjQ6Okp1bXAgTWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoPDY0PihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdo
dCkKK3sKKyAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCShyZXZpc2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3
MSw2ICsxNzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX21yKHNyYy5v
ZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKEJhc2VJbmRl
eCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxf
bXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAg
ICB9CisKICAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSk7CkBAIC0yNTEsMTYgKzI1Niw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFu
ZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFu
ZDMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZGxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNyYywgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQxNihSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZGJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMy
KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lk
IGFuZDMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmFuZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNj
YWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGxfaW0oaW1tLm1f
dmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQg
YW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDE2KFRy
dXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kd19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgYW5kOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1t
Lm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5hbmRiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUp
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklE
IG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBA
IC00NTYsNiArNTE2LDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVnbF9tKHNy
Y0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgbmVnMzIoQmFz
ZUluZGV4IHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdsX20oc3JjRGVz
dC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7Cisg
ICAgfQorCisgICAgdm9pZCBuZWcxNihBZGRyZXNzIHNyY0Rlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSk7CisgICAgfQor
CisgICAgdm9pZCBuZWcxNihCYXNlSW5kZXggc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5lZ3dfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlLCBzcmNEZXN0LmluZGV4
LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZzgoQWRkcmVzcyBzcmNEZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnYl9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNE
ZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnOChCYXNlSW5kZXggc3JjRGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2JfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5i
YXNlLCBzcmNEZXN0LmluZGV4LCBzcmNEZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9y
MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNDcxLDE2ICs1NTYsNzEgQEAgcHVibGljOgog
ICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsK
ICAgICB9CiAKKyAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFJl
Z2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5v
cndfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9y
MTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3Mg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgb3I4KFJlZ2lzdGVySUQgc3JjLCBCYXNl
SW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9ybShzcmMsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAg
IHZvaWQgb3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAK
KyAgICB2b2lkIG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIub3JsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgs
IHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbShp
bW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAg
dm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFRy
dXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3J3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1f
dmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IG9yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm9yYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC02NTQs
MTYgKzc5NCw3MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfaW0oaW1tLm1f
dmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQg
c3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3Vid19pbShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKworICAgIHZvaWQgc3ViOChUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zdWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9p
bShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBzdWIxNihUcnVzdGVkSW1tMzIg
aW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yndf
aW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUp
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX21yKHNyYy5vZmZzZXQsIHNyYy5i
YXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfbXIoc3JjLm9mZnNl
dCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2
b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5zdWJsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQog
CisgICAgdm9pZCBzdWIxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwor
ICAgIH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQg
c3ViMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgc3ViOChSZWdpc3RlcklEIHNyYywgQmFz
ZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX3JtKHNyYywgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAg
ICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIueG9ybF9ycihzcmMsIGRlc3QpOwpAQCAtNjc3LDYgKzg3Miw1MCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVl
ID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0
LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
LCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFRydXN0
ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIGltbS5tX3ZhbHVlID0g
c3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoaW1tLm1fdmFs
dWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRl
c3QuYmFzZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfaW0o
aW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQg
eG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBp
bW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAg
aWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3J3X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2
b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAg
aW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAg
aWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUp
OworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ub3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmJfaW0oaW1tLm1fdmFs
dWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAg
IH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQpAQCAtNjkwLDExICs5MjksNDEg
QEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgQmFz
ZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JsX3JtKHNyYywgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisg
ICAgdm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAg
IH0KKworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yOChSZWdp
c3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9y
Yl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9y
OChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBz
cmMuYmFzZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgeG9yMzIoQmFzZUluZGV4IHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9tcihz
cmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0K
KyAgICAKICAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKG9wMSA9PSBvcDIpCkBAIC03NDEsNiAr
MTAxMCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vdGxfbShkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIG5vdDMyKEJhc2VJbmRleCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbm90MTYoQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90MTYoQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVz
dC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBub3Q4KEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdDgoQmFzZUluZGV4IGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzcXJ0RG91YmxlKEZQUmVnaXN0ZXJJ
RCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcXJ0
c2RfcnIoc3JjLCBkc3QpOwpAQCAtMTA3MSw0MiArMTM2NSwyMyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSNp
ZiBDUFUoWDg2KQotICAgICAgICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNhbiBvbmx5IHN0b3JlIGZy
b20gdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOwotICAgICAgICAvLyBlc3AuLmVkaSBhcmUgbWFwcGVk
IHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQotICAgICAgICBpZiAoc3JjID49IDQpIHsKLSAgICAgICAg
ICAgIC8vIFBpY2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCi0gICAgICAgICAgICBSZWdpc3RlcklE
IHRlbXAgPSBnZXRVbnVzZWRSZWdpc3RlcihhZGRyZXNzKTsKLQotICAgICAgICAgICAgLy8gU3dh
cCB0byB0aGUgdGVtcG9yYXJ5IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhlIHN0b3JlLgotICAgICAg
ICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92d19ybSh0
ZW1wLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsKLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdndfcm0oc3JjLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRk
cmVzcykKICAgICB7Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAgLy8gT24gMzItYml0IHg4NiB3ZSBj
YW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKLSAgICAgICAgLy8gZXNw
Li5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEKLSAgICAgICAgaWYgKHNyYyA+
PSA0KSB7Ci0gICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLgotICAgICAg
ICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRkcmVzcyk7Ci0KLSAg
ICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0byBwZXJmb3JtIHRo
ZSBzdG9yZS4KLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdndfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7Ci0gICAg
ICAgICAgICBzd2FwKHNyYywgdGVtcCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSNlbmRpZgogICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3JtKHNyYywgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTE2KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92d19p
bShzdGF0aWNfY2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZv
aWQgc3RvcmUxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5tb3Z3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVl
KSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQogCiAgICAgLy8gRmxvYXRp
bmctcG9pbnQgb3BlcmF0aW9uOgogICAgIC8vCkBAIC0yNzQ1LDc0ICszMDIwLDkwMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKICAgICAgICAgbV9hc3NlbWJsZXIub3Js
X2ltKDAsIDAsIFg4NlJlZ2lzdGVyczo6ZXNwKTsKICAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5k
UmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQogCi0gICAgLy8gV2UgdGFr
ZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIHN0b3Jlcy4g
U28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCi0gICAgdm9pZCBzdG9yZUZlbmNlKCkKKyAgICB2b2lk
IGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdp
c3RlcklEIHJlc3VsdCkKICAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBl
Y3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7IH0pOwogICAgIH0KIAotICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQg
aXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBsb2Fkcy4gU28sIGl0J3MgYSBuby1vcCBvbiB4
ODYuCi0gICAgdm9pZCBsb2FkRmVuY2UoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMTYoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewor
ICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwg
WyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1
bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwg
ZGVzdGluYXRpb24pCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgWDg2
QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRk
cmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgYXRvbWlj
U3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1i
bGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAgICAgfQotICAgIAotICAgIHN0YXRp
YyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisKKyAgICB2b2lkIGF0b21pY1N0
cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVz
dWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVz
dWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpOworICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgcHRyZGlm
Zl90IHBhdGNoYWJsZUp1bXBTaXplKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewot
ICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOworICAgICAg
ICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpCisgICAgdm9pZCBhdG9t
aWNTdHJvbmdDQVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIGlmIChzX3NzZTRfMUNoZWNr
U3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQotICAgICAgICAgICAgdXBkYXRl
RWF4MUVjeEZsYWdzKCk7Ci0gICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BV
SURDaGVja1N0YXRlOjpTZXQ7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJl
c3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0FWWCgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKLSAg
ICAgICAgLy8gQVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3VzIHJlZ3Jlc3Npb25zIGFuZCB0aG9z
ZSByZWdyZXNzaW9ucyBjYW4gYmUgbWFzc2l2ZS4KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVy
LmNtcHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
dXBkYXRlRWF4MUVjeEZsYWdzKCkKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cykKICAgICB7Ci0gICAgICAgIGludCBmbGFncyA9IDA7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAg
ICAgICAgaW50IGNwdUluZm9bNF07Ci0gICAgICAgIF9fY3B1aWQoY3B1SW5mbywgMHgxKTsKLSAg
ICAgICAgZmxhZ3MgPSBjcHVJbmZvWzJdOwotI2VsaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQot
I2lmIENQVShYODZfNjQpCi0gICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAkMHgxLCAl
JWVheDsiCi0gICAgICAgICAgICAiY3B1aWQ7IgotICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUw
OyIKLSAgICAgICAgICAgIDogIj1nIiAoZmxhZ3MpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAg
ICA6ICIlZWF4IiwgIiVlYngiLCAiJWVjeCIsICIlZWR4IgotICAgICAgICAgICAgKTsKLSNlbHNl
Ci0gICAgICAgIGFzbSAoCi0gICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCi0gICAgICAg
ICAgICAicHVzaGwgJSVlYng7IgotICAgICAgICAgICAgImNwdWlkOyIKLSAgICAgICAgICAgICJw
b3BsICUlZWJ4OyIKLSAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICA6
ICI9ZyIgKGZsYWdzKQotICAgICAgICAgICAgOgotICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4
IiwgIiVlZHgiCi0gICAgICAgICAgICApOwotI2VuZGlmCisgICAgICAgIGF0b21pY1N0cm9uZ0NB
UyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1N0cm9uZ0NBUzE2KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIoUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0
LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTMzIo
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRS
ZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7Cisg
ICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25n
Q0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9y
bShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKwor
ICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNT
dHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0
LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0K
KworICAgIC8vIElmIHlvdSB1c2Ugd2VhayBDQVMsIHlvdSBjYW5ub3QgcmVseSBvbiBleHBlY3Rl
ZEFuZENsb2JiZXJlZCB0byBoYXZlIGFueSBwYXJ0aWN1bGFyIHZhbHVlIGFmdGVyCisgICAgLy8g
dGhpcyBjb21wbGV0ZXMuIE9uIHg4NiwgaXQgd2lsbCBjb250YWluIHRoZSByZXN1bHQgb2YgdGhl
IHN0cm9uZyBDQVMuIE9uIEFSTSwgaXQgd2lsbCBzdGlsbCBoYXZlCisgICAgLy8gdGhlIGV4cGVj
dGVkIHZhbHVlLgorICAgIHZvaWQgYXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNT
dHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywg
cmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAg
ICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVMxNihTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBu
ZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtD
QVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVz
dWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQg
YXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKwor
ICAgIHZvaWQgYXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMz
Mihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0
cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNT
dHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNT
dHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3Mp
OworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJl
c3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzMyKFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRv
bWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRy
ZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dlYWtDQVMzMihTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzgoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAg
eworICAgICAgICBhdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBu
ZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4
ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAg
dm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FT
MTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQp
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAg
ICAgYXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVl
LCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtD
QVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0
b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNz
LCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzMyKGNv
bmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAg
ICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTOChTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNz
KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTOChTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJh
bmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUs
IGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMx
NihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBu
ZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVk
V2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25kLCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRv
bWljUmVsYXhlZFdlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBi
cmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMzMihj
b25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ4KGltbSwg
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkOChUcnVzdGVkSW1tMzIg
aW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY0FkZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkOChyZWcsIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ4KHJl
ZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMTYoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhZGQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGFkZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMTYo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY0FkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMzIoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihUcnVzdGVkSW1tMzIg
aW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQzMihyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRk
MzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4KFRydXN0
ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgc3ViOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjgoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4KFJlZ2lzdGVySUQgcmVnLCBBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IHN1YjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4KFJl
Z2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgc3ViOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1N1YjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMTYoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihUcnVzdGVkSW1tMzIgaW1t
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgc3ViMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9t
aWNTdWIxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIxNihyZWcsIGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3ViMTYo
cmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIzMihUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIHN1YjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKGltbSwgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoUmVnaXN0ZXJJRCByZWcsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgc3ViMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIz
MihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDgoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ4KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljQW5kOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljQW5kOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDgocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQxNihUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFuZDE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YW5kMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQxNihS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljQW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQzMihpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhbmQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDMyKHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQz
MihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yOChUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7CisgICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I4KGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3I4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yOChy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yOChSZWdpc3RlcklE
IHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2KGltbSwgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljT3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3Ix
NihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY09yMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjE2KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9y
MzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljT3IzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljT3IzMihSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I4KFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hvcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I4KFJlZ2lzdGVySUQgcmVnLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIHhvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I4
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yMTYoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihUcnVzdGVkSW1tMzIg
aW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgeG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNYb3IxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IxNihyZWcsIGFkZHJlc3MpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9y
MTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IzMihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIHhvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgeG9yMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNY
b3IzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljTmVnOChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzgoYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljTmVnOChCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVnOChhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNOZWcxNihBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzE2KGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY05lZzE2KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWcxNihhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNOZWczMihBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzMyKGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY05lZzMyKEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWczMihhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNOb3Q4KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90OChhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNOb3Q4KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q4KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05vdDE2KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MTYoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTm90MTYoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDE2KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY05vdDMyKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90MzIoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljTm90MzIoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDMyKGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hjaGdBZGQ4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhh
ZGRiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWGNoZ0FkZDgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxl
ci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQx
NihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkd19ybShyZWcsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdB
ZGQxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGR3X3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDMyKFJlZ2lzdGVySUQgcmVnLCBB
ZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhhZGRsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZ0FkZDMyKFJlZ2lzdGVySUQgcmVn
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGxfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNYY2hnOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnYl9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1hjaGc4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2Jf
cm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMTYoUmVnaXN0ZXJJ
RCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3dfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMTYoUmVnaXN0ZXJJ
RCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54
Y2hnbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1hjaGczMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhjaGdsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTgoQWRkcmVz
cyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4KHNyYywgZGVzdCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTgoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDgoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBsb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihCYXNlSW5kZXgg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkOFNpZ25lZEV4dGVuZFRv
MzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTYoQWRkcmVzcyBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQxNihzcmMsIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3ExNihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihCYXNlSW5k
ZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTZTaWduZWRFeHRl
bmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTMyKEFkZHJl
c3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMzIoc3JjLCBkZXN0
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDMyKHNyYywgZGVzdCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAg
eworICAgICAgICBzdG9yZTgoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZVJlbDgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3Rv
cmU4KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChpbW0sIGRlc3Qp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNl
SW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChpbW0sIGRlc3QpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBz
dG9yZVJlbDE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAg
IHN0b3JlMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2KFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMTYoaW1t
LCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUxNihpbW0sIGRlc3QpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsMzIoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3Mg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBzdG9yZVJlbDMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIHN0b3JlMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9y
ZVJlbDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHN0
b3JlMzIoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMyKFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihpbW0s
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICAvLyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0
IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwgc3RvcmVzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4
Ni4KKyAgICB2b2lkIHN0b3JlRmVuY2UoKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBXZSB0YWtl
IHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwgbG9hZHMuIFNv
LCBpdCdzIGEgbm8tb3Agb24geDg2LgorICAgIHZvaWQgbG9hZEZlbmNlKCkKKyAgICB7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGlu
c3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAg
ICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5leGVj
dXRhYmxlQWRkcmVzcygpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICB9
CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUo
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IHBhdGNoYWJsZUp1bXBTaXplKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OnBhdGNoYWJsZUp1bXBTaXplKCk7Cisg
ICAgfQorCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKQor
ICAgIHsKKyAgICAgICAgaWYgKHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6
Ok5vdENoZWNrZWQpCisgICAgICAgICAgICB1cGRhdGVFYXgxRWN4RmxhZ3MoKTsKKyAgICAgICAg
cmV0dXJuIHNfc3NlNF8xQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6OlNldDsKKyAgICB9
CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FWWCgpCisgICAgeworICAgICAgICAvLyBBVlgg
c3RpbGwgY2F1c2VzIG15c3RlcmlvdXMgcmVncmVzc2lvbnMgYW5kIHRob3NlIHJlZ3Jlc3Npb25z
IGNhbiBiZSBtYXNzaXZlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgdXBkYXRlRWF4MUVjeEZsYWdzKCkKKyAgICB7CisgICAgICAgIGludCBmbGFncyA9
IDA7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICAgICAgaW50IGNwdUluZm9bNF07CisgICAgICAg
IF9fY3B1aWQoY3B1SW5mbywgMHgxKTsKKyAgICAgICAgZmxhZ3MgPSBjcHVJbmZvWzJdOworI2Vs
aWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorI2lmIENQVShYODZfNjQpCisgICAgICAgIGFzbSAo
CisgICAgICAgICAgICAibW92bCAkMHgxLCAlJWVheDsiCisgICAgICAgICAgICAiY3B1aWQ7Igor
ICAgICAgICAgICAgIm1vdmwgJSVlY3gsICUwOyIKKyAgICAgICAgICAgIDogIj1nIiAoZmxhZ3Mp
CisgICAgICAgICAgICA6CisgICAgICAgICAgICA6ICIlZWF4IiwgIiVlYngiLCAiJWVjeCIsICIl
ZWR4IgorICAgICAgICAgICAgKTsKKyNlbHNlCisgICAgICAgIGFzbSAoCisgICAgICAgICAgICAi
bW92bCAkMHgxLCAlJWVheDsiCisgICAgICAgICAgICAicHVzaGwgJSVlYng7IgorICAgICAgICAg
ICAgImNwdWlkOyIKKyAgICAgICAgICAgICJwb3BsICUlZWJ4OyIKKyAgICAgICAgICAgICJtb3Zs
ICUlZWN4LCAlMDsiCisgICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQorICAgICAgICAgICAgOgor
ICAgICAgICAgICAgOiAiJWVheCIsICIlZWN4IiwgIiVlZHgiCisgICAgICAgICAgICApOworI2Vu
ZGlmCiAjZW5kaWYgLy8gQ09NUElMRVIoR0NDX09SX0NMQU5HKQogICAgICAgICBzX3NzZTRfMUNo
ZWNrU3RhdGUgPSAoZmxhZ3MgJiAoMSA8PCAxOSkpID8gQ1BVSURDaGVja1N0YXRlOjpTZXQgOiBD
UFVJRENoZWNrU3RhdGU6OkNsZWFyOwogICAgICAgICBzX2F2eENoZWNrU3RhdGUgPSAoZmxhZ3Mg
JiAoMSA8PCAyOCkpID8gQ1BVSURDaGVja1N0YXRlOjpTZXQgOiBDUFVJRENoZWNrU3RhdGU6OkNs
ZWFyOwpAQCAtMjgzMyw2ICszOTM1LDE4IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKTsKICAgICB9CiAKKyAgICBY
ODZBc3NlbWJsZXI6OkNvbmRpdGlvbiB4ODZDb25kaXRpb24oU3RhdHVzQ29uZGl0aW9uIGNvbmQp
CisgICAgeworICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICAgICAgY2FzZSBTdWNjZXNzOgor
ICAgICAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uRTsKKyAgICAgICAgY2Fz
ZSBGYWlsdXJlOgorICAgICAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uTkU7
CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uRTsKKyAgICB9CisKICAgICB2b2lkIHNl
dDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAjaWYgQ1BVKFg4NikKQEAgLTI5MjcsNiArNDA0MSwzNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbTMyKHNpemVPZlJlZ2lzdGVyKSwgZHN0KTsKICAgICAgICAgc3JjSXNO
b25aZXJvLmxpbmsodGhpcyk7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgcmVzdWx0LCBjb25zdCBGdW5jJiBm
dW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJz
OjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGZ1bmMoKTsKKyAg
ICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAg
ICBzZXQzMih4ODZDb25kaXRpb24oY29uZCksIHJlc3VsdCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUyhSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChl
eHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3Vs
dCwgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgewor
ICAgICAgICBzd2FwKGV4cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgZnVuYygpOworICAgICAgICBzd2FwKGV4
cGVjdGVkQW5kUmVzdWx0LCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgICAgIHJldHVybiBKdW1w
KG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKKyAgICB9CiAKIHByaXZhdGU6
CiAgICAgLy8gT25seSBNYWNyb0Fzc2VtYmxlclg4NiBzaG91bGQgYmUgdXNpbmcgdGhlIGZvbGxv
d2luZyBtZXRob2Q7IFNTRTIgaXMgYWx3YXlzIGF2YWlsYWJsZSBvbgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAkocmV2aXNpb24gMjEzNDkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjY0
LDExICsyNjQsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX21yKHNyYy5v
ZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDY0KEJhc2VJbmRl
eCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFf
bXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAg
ICB9CisKICAgICB2b2lkIGFkZDY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBh
ZGQ2NChBYnNvbHV0ZUFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpAQCAt
MzA2LDYgKzMxNiwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX2lt
KGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAg
ICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IDEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5p
bmNxX20oYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfaW0o
aW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYWRkNjQoVHJ1c3RlZEltbTMyIGlt
bSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKQEAgLTM0MiwxMSArMzYw
LDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ycihzcmMsIGRlc3QpOwog
ICAgIH0KIAorICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfcm0oc3JjLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFuZDY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5hbmRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAg
ICB2b2lkIGFuZDY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFf
aXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kNjQoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5k
cV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAg
dm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgYW5kNjQoVHJ1
c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIGludHB0
cl90IGludFZhbHVlID0gaW1tLmFzSW50cHRyKCk7CkBAIC01NTIsMTEgKzYwMCw1MSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfcihkZXN0KTsKICAgICB9CiAKKyAgICB2b2lk
IG5lZzY0KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfbShk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZzY0KEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVncV9tKGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3I2
NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIub3JxX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBvcjY0KFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfcm0o
c3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQoUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2Fs
ZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2Us
IGRlc3QpOworICAgIH0KKworICAgIHZvaWQgb3I2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfbXIoc3JjLm9mZnNldCwgc3Jj
LmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG9y
NjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9
CisKKyAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5vcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3I2
NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBp
ZiAoaW1tLm1fdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkKQEAg
LTYxOSwxNiArNzA3LDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9pbShp
bW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAg
dm9pZCBzdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAg
IHZvaWQgc3ViNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLnN1YnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0K
IAorICAgIHZvaWQgc3ViNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmlu
ZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc3ViNjQoUmVnaXN0ZXJJ
RCBzcmMsIEFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfcm0o
c3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KFJl
Z2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN1YnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54b3JxX3JyKHNyYywgZGVzdCk7CkBA
IC02NTEsNiArNzU0LDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgeG9yNjQoUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
eG9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2Nh
bGUpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJh
c2UsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9tcihzcmMub2Zmc2V0
LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKworICAgIHZv
aWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIueG9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7
CisgICAgfQorCisgICAgdm9pZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAg
IHZvaWQgeG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIueG9ycV9pcihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7CkBAIC02
NjYsNiArNzk0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubm90cV9tKGRlc3Qu
b2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgbm90NjQoQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3RxX20oZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBsb2FkNjQo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7
CkBAIC03MjUsNiArODU4LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9p
MzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAK
KyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2kzMm0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAg
IH0KKwogICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tNjQgaW1tLCBJbXBsaWNpdEFkZHJlc3Mg
YWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfMzJfNjQoaW1tLm1f
dmFsdWUpKSB7CkBAIC0xMjk0LDcgKzE0MzIsMjc1IEBAIHB1YmxpYzoKICAgICAgICAgTWFjcm9B
c3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2Ny
YXRjaFJlZ2lzdGVyKCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmJyYW5jaFRlc3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBtYXNrOCk7CiAg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNT
dHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3NlbWJs
ZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9
KTsKKyAgICB9CiAKKyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9t
aWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NB
UyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21pY1N0cm9uZ0NBUzY0KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ry
b25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShu
ZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FT
NjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVy
biBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1f
YXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsgfSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJh
bmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIHZvaWQgYXRv
bWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAg
IHZvaWQgYXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM2NChj
b25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7Cisg
ICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJv
bmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOwor
ICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNT
dHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3Mp
OworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVM2NChTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwg
YWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FT
NjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICBKdW1wIGJy
YW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25k
LCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25n
Q0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAg
ICB9CisKKyAgICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkNjQo
aW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ2NChUcnVzdGVk
SW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQ2NChyZWcsIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI2
NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KGlt
bSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoUmVnaXN0ZXJJ
RCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgc3ViNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KHJlZywgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
bmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0KFRy
dXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBhbmQ2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDY0KHJlZywgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQW5kNjQoUmVnaXN0ZXJJRCByZWcs
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y09yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KGltbSwgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2NChp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoUmVnaXN0ZXJJ
RCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgb3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY09yNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjY0KHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I2
NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICB4b3I2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGF0b21pY1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjY0KHJlZywgYWRkcmVz
cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yNjQoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05l
ZzY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbmVnNjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVn
NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05v
dDY0KEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbm90NjQoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90
NjQoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hj
aGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkcV9ybShyZWcsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1hjaGdBZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRxX3JtKHJl
ZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzY0KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzY0KFJlZ2lzdGVySUQgcmVn
LCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBsb2FkQWNxNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGxvYWQ2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E2NChC
YXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkNjQoc3Jj
LCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0KFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNyYywgZGVzdCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBzdG9yZTY0KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVS
ZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIHN0
b3JlNjQoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRv
VWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMjEzNDky
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTkwLDE2ICsxOTAsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfQURE
X0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MDEsCiAgICAgICAgIE9QX0FERF9HdkV2ICAg
ICAgICAgICAgICAgICAgICAgPSAweDAzLAogICAgICAgICBPUF9BRERfRUFYSXYgICAgICAgICAg
ICAgICAgICAgID0gMHgwNSwKKyAgICAgICAgT1BfT1JfRXZHYiAgICAgICAgICAgICAgICAgICAg
ICA9IDB4MDgsCiAgICAgICAgIE9QX09SX0V2R3YgICAgICAgICAgICAgICAgICAgICAgPSAweDA5
LAogICAgICAgICBPUF9PUl9HdkV2ICAgICAgICAgICAgICAgICAgICAgID0gMHgwQiwKICAgICAg
ICAgT1BfT1JfRUFYSXYgICAgICAgICAgICAgICAgICAgICA9IDB4MEQsCiAgICAgICAgIE9QXzJC
WVRFX0VTQ0FQRSAgICAgICAgICAgICAgICAgPSAweDBGLAorICAgICAgICBPUF9BTkRfRXZHYiAg
ICAgICAgICAgICAgICAgICAgID0gMHgyMCwKICAgICAgICAgT1BfQU5EX0V2R3YgICAgICAgICAg
ICAgICAgICAgICA9IDB4MjEsCiAgICAgICAgIE9QX0FORF9HdkV2ICAgICAgICAgICAgICAgICAg
ICAgPSAweDIzLAorICAgICAgICBPUF9TVUJfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgy
OCwKICAgICAgICAgT1BfU1VCX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MjksCiAgICAg
ICAgIE9QX1NVQl9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDJCLAogICAgICAgICBPUF9T
VUJfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgyRCwKICAgICAgICAgUFJFX1BSRURJQ1Rf
QlJBTkNIX05PVF9UQUtFTiAgICA9IDB4MkUsCisgICAgICAgIE9QX1hPUl9FdkdiICAgICAgICAg
ICAgICAgICAgICAgPSAweDMwLAogICAgICAgICBPUF9YT1JfRXZHdiAgICAgICAgICAgICAgICAg
ICAgID0gMHgzMSwKICAgICAgICAgT1BfWE9SX0d2RXYgICAgICAgICAgICAgICAgICAgICA9IDB4
MzMsCiAgICAgICAgIE9QX1hPUl9FQVhJdiAgICAgICAgICAgICAgICAgICAgPSAweDM1LApAQCAt
MjIzLDYgKzIyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QX0dST1VQMV9FdkliICAgICAgICAg
ICAgICAgICAgPSAweDgzLAogICAgICAgICBPUF9URVNUX0ViR2IgICAgICAgICAgICAgICAgICAg
ID0gMHg4NCwKICAgICAgICAgT1BfVEVTVF9Fdkd2ICAgICAgICAgICAgICAgICAgICA9IDB4ODUs
CisgICAgICAgIE9QX1hDSEdfRXZHYiAgICAgICAgICAgICAgICAgICAgPSAweDg2LAogICAgICAg
ICBPUF9YQ0hHX0V2R3YgICAgICAgICAgICAgICAgICAgID0gMHg4NywKICAgICAgICAgT1BfTU9W
X0ViR2IgICAgICAgICAgICAgICAgICAgICA9IDB4ODgsCiAgICAgICAgIE9QX01PVl9Fdkd2ICAg
ICAgICAgICAgICAgICAgICAgPSAweDg5LApAQCAtMjUyLDYgKzI1Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIFBSRV9TU0VfRjIgICAgICAgICAgICAgICAgICAgICAgPSAweEYyLAogICAgICAgICBQ
UkVfU1NFX0YzICAgICAgICAgICAgICAgICAgICAgID0gMHhGMywKICAgICAgICAgT1BfSExUICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDB4RjQsCisgICAgICAgIE9QX0dST1VQM19FYiAgICAg
ICAgICAgICAgICAgICAgPSAweEY2LAogICAgICAgICBPUF9HUk9VUDNfRWJJYiAgICAgICAgICAg
ICAgICAgID0gMHhGNiwKICAgICAgICAgT1BfR1JPVVAzX0V2ICAgICAgICAgICAgICAgICAgICA9
IDB4RjcsCiAgICAgICAgIE9QX0dST1VQM19Fdkl6ICAgICAgICAgICAgICAgICAgPSAweEY3LCAv
LyBPUF9HUk9VUDNfRXYgaGFzIGFuIGltbWVkaWF0ZSwgd2hlbiBpbnN0cnVjdGlvbiBpcyBhIHRl
c3QuIApAQCAtMjkwLDYgKzI5Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIE9QX1NFVENDICAgICAg
ICAgICAgPSAweDkwLAogICAgICAgICBPUDJfM0JZVEVfRVNDQVBFX0FFID0gMHhBRSwKICAgICAg
ICAgT1AyX0lNVUxfR3ZFdiAgICAgICA9IDB4QUYsCisgICAgICAgIE9QMl9DTVBYQ0hHYiAgICAg
ICAgPSAweEIwLAorICAgICAgICBPUDJfQ01QWENIRyAgICAgICAgID0gMHhCMSwKICAgICAgICAg
T1AyX01PVlpYX0d2RWIgICAgICA9IDB4QjYsCiAgICAgICAgIE9QMl9CU0YgICAgICAgICAgICAg
PSAweEJDLAogICAgICAgICBPUDJfVFpDTlQgICAgICAgICAgID0gMHhCQywKQEAgLTI5OCw2ICsz
MDYsOCBAQCBwcml2YXRlOgogICAgICAgICBPUDJfTU9WU1hfR3ZFYiAgICAgID0gMHhCRSwKICAg
ICAgICAgT1AyX01PVlpYX0d2RXcgICAgICA9IDB4QjcsCiAgICAgICAgIE9QMl9NT1ZTWF9HdkV3
ICAgICAgPSAweEJGLAorICAgICAgICBPUDJfWEFERGIgICAgICAgICAgID0gMHhDMCwKKyAgICAg
ICAgT1AyX1hBREQgICAgICAgICAgICA9IDB4QzEsCiAgICAgICAgIE9QMl9QRVhUUldfR2RVZEli
ICAgPSAweEM1LAogICAgICAgICBPUDJfUFNMTFFfVWRxSWIgICAgID0gMHg3MywKICAgICAgICAg
T1AyX1BTUkxRX1VkcUliICAgICA9IDB4NzMsCkBAIC00NDAsNiArNDUwLDExIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIG9m
ZnNldCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgYWRkbF9tcihpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQUREX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKICNpZiAhQ1BVKFg4Nl82NCkK
ICAgICB2b2lkIGFkZGxfbXIoY29uc3Qgdm9pZCogYWRkciwgUmVnaXN0ZXJJRCBkc3QpCiAgICAg
ewpAQCAtNTYyLDExICs1NzcsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZv
aWQgYWRkcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCiAgICAgdm9pZCBhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9BRERfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgYWRkcV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CiAgICAgdm9pZCBhZGRxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTU5MSw2ICs2MTYsMTcgQEAg
cHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAg
ICAgfQogICAgIH0KKworICAgIHZvaWQgYWRkcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0p
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0K
KyAgICB9CiAjZWxzZQogICAgIHZvaWQgYWRkbF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRy
KQogICAgIHsKQEAgLTYxNCwxMSArNjUwLDQzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisg
ICAgdm9pZCBhbmRsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgfQorCiAgICAgdm9pZCBhbmRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZGxf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
KyAgICB2b2lkIGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpF
KTsKKyAgICAgICAgYW5kbF9ybShzcmMsIG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9p
ZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnBy
ZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgYW5kbF9ybShzcmMsIG9mZnNldCwgYmFz
ZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgYW5kYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC02NDEs
NiArNzA5LDUzIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgYW5kbF9p
bShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0p
KSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdS
T1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kd19pbShpbnQgaW1t
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBhbmR3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJ
R05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXos
IEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2
b2lkIGFuZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1Bf
QU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7
CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgYW5kcV9ycihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtNjU3LDYgKzc3Miw0OCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAgICAgICB9CiAg
ICAgfQorCisgICAgdm9pZCBhbmRxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9B
TkRfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9tcihp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwg
UmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBhbmRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfRXZHdiwg
c3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BTkRfRXZH
diwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBh
bmRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAg
ICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kcV9p
bShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0p
KSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwg
R1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CiAjZWxzZQogICAgIHZvaWQgYW5kbF9p
bShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKQEAgLTcwMyw2ICs4NjAsMTEgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVA1
X0V2LCBHUk9VUDFfT1BfQURELCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgaW5j
cV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVA1X0V2
LCBHUk9VUDFfT1BfQURELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2Vu
ZGlmIC8vIENQVShYODZfNjQpCiAKICAgICB2b2lkIG5lZ2xfcihSZWdpc3RlcklEIGRzdCkKQEAg
LTcxNSw2ICs4NzcsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBkc3QpOwogICAgIH0KKworICAg
IHZvaWQgbmVncV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05FRywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ3FfbShpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05FRywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBuZWdsX20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQpAQCAtNzIyLDYgKzg5NCwzMyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9O
RUcsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBuZWdsX20oaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBuZWd3X20oaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBuZWdsX20ob2Zmc2V0LCBiYXNlKTsKKyAg
ICB9CisKKyAgICB2b2lkIG5lZ3dfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZp
eChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbmVnbF9tKG9mZnNldCwgYmFzZSwgaW5kZXgs
IHNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2JfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0Vi
LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgbmVnYl9t
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JP
VVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZv
aWQgbm90bF9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgZHN0KTsKQEAgLTczMiw2ICs5MzEs
MzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2
LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgbm90bF9t
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JP
VVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgbm90d19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbm90bF9tKG9mZnNl
dCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3R3X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5vdGxfbShvZmZzZXQs
IGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBub3RiX20oaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAg
ICB2b2lkIG5vdGJfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgbm90cV9yKFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKQEAgLTc0Miw2ICs5NjgsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBvZmZz
ZXQpOwogICAgIH0KKworICAgIHZvaWQgbm90cV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG9ybF9ycihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCkBAIC03NTQsMTEgKzk4NSw0MyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNl
dCk7CiAgICAgfQogCisgICAgdm9pZCBvcmxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgb3JsX3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAg
IHZvaWQgb3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOworICAgICAgICBvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UpOworICAgIH0KKwor
ICAgIHZvaWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgb3JsX3JtKHNyYywgb2Zmc2V0
LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3JiX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKKyAgICB9CisKICAgICB2b2lkIG9ybF9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC03ODQs
MTIgKzEwNDcsMTAxIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgb3Js
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGlt
bSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwg
R1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb3J3X2ltKGludCBpbW0s
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJYiwgR1JPVVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNl
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9
CisgICAgfQorCisgICAgdm9pZCBvcndfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9F
WFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9V
UDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIG9y
Yl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9PUiwgYmFz
ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0K
KworICAgIHZvaWQgb3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0K
KwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBvcnFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1Jf
RXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgb3JxX21yKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9PUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisg
ICAgdm9pZCBvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX09SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9ycV9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
KyAgICB2b2lkIG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwg
YmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9p
ZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9P
UF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgb3JxX2ly
KGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VY
VEVORF84XzMyKGltbSkpIHsKQEAgLTgzMSwxMSArMTE4Myw0MyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwog
ICAgIH0KIAorICAgIHZvaWQgc3VibF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAg
dm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09Q
RVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwg
c3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vid19ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIHN1YmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YmxfaXIoaW50IGltbSwgUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpA
QCAtODYxLDYgKzEyNDUsNTMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9p
ZCBzdWJsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFf
RXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1Bf
U1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzdWJ3X2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwg
YmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1YndfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGlm
IChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZvaWQgc3ViYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdS
T1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9TVUIs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlOChpbW0pOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBzdWJxX3JyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC04NzIsMTEgKzEzMDMsMjEg
QEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfR3ZFdiwg
ZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfR3ZF
diwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBz
dWJxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAg
ewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZHdiwgc3JjLCBiYXNl
LCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZHdiwgc3JjLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJxX2lyKGlu
dCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVO
RF84XzMyKGltbSkpIHsKQEAgLTkwMSw2ICsxMzQyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2
b2lkIHN1YnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5E
XzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JP
VVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9V
UDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2
b2lkIHN1YmxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC05MjQsMTEg
KzEzNzYsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9S
X0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcmxfbXIoaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJl
Z2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hP
Ul9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2
b2lkIHhvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHdiwgc3JjLCBi
YXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgeG9ybF9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWE9SX0V2R3YsIHNyYywg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgeG9ybF9pbShp
bnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBpZiAo
Q0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewpAQCAtOTQwLDYgKzE0MDIsNzUgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB4b3JsX2ltKGludCBpbW0sIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsK
KyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCB4b3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJF
X09QRVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UpOworICAg
IH0KKworICAgIHZvaWQgeG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIHhvcmxfcm0oc3Jj
LCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3J3X2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwg
YmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcndfaW0oaW50IGltbSwgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGlm
IChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9Fdkdi
LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4b3JiX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZH
Yiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4
b3JiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1hPUiwg
YmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAg
IH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7Cisg
ICAgfQorCiAgICAgdm9pZCB4b3JsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTk3NCwxMSArMTUw
NSw0NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCB4b3JxX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIGlm
IChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBH
Uk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHhvcnFfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkg
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdS
T1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQorICAgIAogICAgIHZvaWQgeG9ycV9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0
KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2LCBkZXN0LCBiYXNlLCBvZmZzZXQpOworICAg
IH0KKworICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYsIGRlc3QsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHZvaWQgbHpjbnRfcnIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTU4NiwxMSArMjE1MywzOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMsIGRz
dCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNo
Z2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
fQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5E
X1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBzcmMs
IGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCB4Y2hnd19ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgeGNoZ2xfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCB4Y2hncV9y
cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMTYwNiw2ICsyMjAw
LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKworICAgIHZvaWQgeGNoZ3Ff
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CiAjZW5kaWYKIAogICAgIHZvaWQgbW92bF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
c3QpCkBAIC0xNzMxLDYgKzIzMzAsMjAgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A4KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
ICAgICB9CiAKKyAgICB2b2lkIG1vdndfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJ
WkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxMV9Fdkl6LCBHUk9V
UDExX01PViwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMTYo
aW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG1vdndfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SXosIEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7Cisg
ICAgfQorCiAgICAgdm9pZCBtb3ZsX0VBWG0oY29uc3Qgdm9pZCogYWRkcikKICAgICB7CiAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfT3ZFQVgpOwpAQCAtMTgwMCw2ICsyNDEz
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAg
ICB9CiAKKyAgICB2b2lkIG1vdnFfaTMybShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1t
KTsKKyAgICB9CisKICAgICB2b2lkIG1vdnFfaTY0cihpbnQ2NF90IGltbSwgUmVnaXN0ZXJJRCBk
c3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9NT1ZfRUFYSXYs
IGRzdCk7CkBAIC0yNzgxLDYgKzM0MDAsOTQgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX0xPQ0spOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3JtKFJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBvZmZzZXQp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX0NNUFhDSEdiLCBzcmMsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hn
d19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ2xfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGNtcHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgfQorCisjaWYgQ1BVKFg4Nl82NCkgICAgCisgICAgdm9pZCBjbXB4
Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0NNUFhDSEcsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hncV9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENI
Rywgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorI2VuZGlmIC8vIENQ
VShYODZfNjQpCisgICAgCisgICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0
ZU9wOChPUDJfWEFERGIsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3A4KE9QMl9YQUREYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVf
T1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBz
cmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5E
X1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGRsX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCB4YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworI2lmIENQVShYODZfNjQpICAgIAorICAgIHZvaWQg
eGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9YQURELCBzcmMsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1hBREQsIHNyYywg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0
KQorICAgIAogICAgIHZvaWQgbWZlbmNlKCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnRo
cmVlQnl0ZU9wKE9QMl8zQllURV9FU0NBUEVfQUUsIE9QM19NRkVOQ0UpOwpAQCAtMzc1Nyw2ICs0
NDY0LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShncm91
cE9wLCBybSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9w
Y29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQorICAg
ICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIo
bV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNS
ZXgocmVnLCBiYXNlKSwgcmVnLCAwLCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRl
VW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVu
Y2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRl
T3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xl
SW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdy
aXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJlZykgfHwgcmVnUmVxdWlyZXNSZXgo
aW5kZXgsIGJhc2UpLCByZWcsIGluZGV4LCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRC
eXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0
ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICB9CisKICAgICAgICAgLy8gSW1t
ZWRpYXRlczoKICAgICAgICAgLy8KICAgICAgICAgLy8gQW4gaW1tZWRhaXRlIHNob3VsZCBiZSBh
cHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBoYXMgYmVlbiBlbWl0dGVkLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0F0b21p
Y1ZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsKKworQXRvbWljVmFsdWU6On5BdG9taWNWYWx1ZSgpCit7Cit9CisKK3ZvaWQgQXRv
bWljVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisgICAgb3V0LnByaW50KGNvbW1hLCAid2lkdGggPSAiLCBtX3dpZHRoKTsKKyAg
ICAKKyAgICBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoY29tbWEsIG91dCk7Cit9CisKK1ZhbHVlKiBB
dG9taWNWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbmV3IEF0b21pY1Zh
bHVlKCp0aGlzKTsKK30KKworQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3Jp
Z2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwg
aW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCisg
ICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBvcGVyYW5kLT50eXBlKCksIG9y
aWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSwgb3BlcmFuZCwgcG9pbnRlcikKKyAgICAs
IG1fd2lkdGgod2lkdGgpCit7CisgICAgQVNTRVJUKGJlc3RUeXBlKEdQLCBhY2Nlc3NXaWR0aCgp
KSA9PSBhY2Nlc3NUeXBlKCkpOworICAgIAorICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewor
ICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2Fz
ZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWlj
WGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworQXRvbWljVmFs
dWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZh
bHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQz
Ml90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKKyAgICA6
IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIGtpbmQub3Bjb2RlKCkgPT0gQXRvbWlj
V2Vha0NBUyA/IEludDMyIDogZXhwZWN0ZWRWYWx1ZS0+dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwg
cmFuZ2UsIGZlbmNlUmFuZ2UsIGV4cGVjdGVkVmFsdWUsIG5ld1ZhbHVlLCBwb2ludGVyKQorICAg
ICwgbV93aWR0aCh3aWR0aCkKK3sKKyAgICBBU1NFUlQoYmVzdFR5cGUoR1AsIGFjY2Vzc1dpZHRo
KCkpID09IGFjY2Vzc1R5cGUoKSk7CisKKyAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAg
ICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNf
SklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQor
CisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEF0
b21pY1ZhbHVlIDogcHVibGljIE1lbW9yeVZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9v
bCBhY2NlcHRzKEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0F0b21pYyhraW5k
Lm9wY29kZSgpKTsKKyAgICB9CisgICAgCisgICAgfkF0b21pY1ZhbHVlKCk7CisgICAgCisgICAg
VHlwZSBhY2Nlc3NUeXBlKCkgY29uc3QgeyByZXR1cm4gY2hpbGQoMCktPnR5cGUoKTsgfQorICAg
IAorICAgIFdpZHRoIGFjY2Vzc1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAg
IAorcHJvdGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJl
YW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICAKKyAgICBWYWx1ZSogY2xvbmVJbXBsKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Cisg
ICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIG9wZXJhbmQs
IFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhl
YXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSk7
CisgICAgCisgICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIGV4cGVj
dGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0
ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNl
UmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKTsKKyAgICAKKyAgICBXaWR0aCBtX3dpZHRoOworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9jay5oCShyZXZpc2lvbiAy
MTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogY2xh
c3MgSW5zZXJ0aW9uU2V0OwogY2xhc3MgUHJvY2VkdXJlOwogY2xhc3MgVmFsdWU7Cit0ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OwogCiBjbGFzcyBCYXNp
Y0Jsb2NrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYXNpY0Jsb2NrKTsKQEAgLTE1OCw2
ICsxNTksNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsK
ICAgICBmcmllbmQgY2xhc3MgSW5zZXJ0aW9uU2V0OwogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1
cmU7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQ7CiAgICAgCiAgICAgLy8gSW5zdGFudGlhdGUgdmlhIFByb2NlZHVyZS4KICAgICBC
YXNpY0Jsb2NrKHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAJKHJldmlz
aW9uIDIxMzQ5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwzNSArMzYsMTMgQEAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgewogCiBCbG9ja0luc2VydGlvblNldDo6QmxvY2tJbnNlcnRpb25TZXQoUHJv
Y2VkdXJlICZwcm9jKQotICAgIDogbV9wcm9jKHByb2MpCisgICAgOiBHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQocHJvYy5tX2Jsb2NrcykKKyAgICAsIG1fcHJvYyhwcm9jKQogewogfQogCiBCbG9j
a0luc2VydGlvblNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KCkgeyB9CiAKLXZvaWQgQmxvY2tJbnNl
cnRpb25TZXQ6Omluc2VydChCbG9ja0luc2VydGlvbiYmIGluc2VydGlvbikKLXsKLSAgICBtX2lu
c2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7Ci19Ci0KLUJhc2ljQmxvY2sqIEJs
b2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kp
Ci17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+IGJsb2NrKG5ldyBCYXNpY0Jsb2Nr
KFVJTlRfTUFYLCBmcmVxdWVuY3kpKTsKLSAgICBCYXNpY0Jsb2NrKiByZXN1bHQgPSBibG9jay5n
ZXQoKTsKLSAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2spKSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6
Omluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kpCi17Ci0g
ICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kg
PyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsKLX0KLQotQmFzaWNCbG9jayogQmxv
Y2tJbnNlcnRpb25TZXQ6Omluc2VydEFmdGVyKEJhc2ljQmxvY2sqIGFmdGVyLCBkb3VibGUgZnJl
cXVlbmN5KQotewotICAgIHJldHVybiBpbnNlcnQoYWZ0ZXItPmluZGV4KCkgKyAxLCBmcmVxdWVu
Y3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYWZ0ZXItPmZyZXF1ZW5jeSgpKTsKLX0KLQog
QmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6OnNwbGl0Rm9yd2FyZCgKICAgICBCYXNpY0Js
b2NrKiBibG9jaywgdW5zaWduZWQmIHZhbHVlSW5kZXgsIEluc2VydGlvblNldCogaW5zZXJ0aW9u
U2V0LCBkb3VibGUgZnJlcXVlbmN5KQogewpAQCAtMTAyLDMyICs4MCw2IEBAIEJhc2ljQmxvY2sq
IEJsb2NrSW5zZXJ0aW9uU2V0OjpzcGxpdEZvcncKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1i
b29sIEJsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKCkKLXsKLSAgICBpZiAobV9pbnNlcnRpb25z
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIC8vIFdlIGFsbG93
IGluc2VydGlvbnMgdG8gYmUgZ2l2ZW4gdG8gdXMgaW4gYW55IG9yZGVyLiBTbywgd2UgbmVlZCB0
byBzb3J0IHRoZW0gYmVmb3JlCi0gICAgLy8gcnVubmluZyBXVEY6OmV4ZWN1dGVJbnNlcnRpb25z
LiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBhbmQgd2Ugd2FudCBpdCB0byBiZQot
ICAgIC8vIGZhc3QsIHNvIHdlIHVzZSBidWJibGUgc29ydC4KLSAgICBidWJibGVTb3J0KG1faW5z
ZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOwotCi0gICAgZXhlY3V0ZUluc2Vy
dGlvbnMobV9wcm9jLm1fYmxvY2tzLCBtX2luc2VydGlvbnMpOwotICAgIAotICAgIC8vIFBydW5l
IG91dCBlbXB0eSBlbnRyaWVzLiBUaGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQn
cwotICAgIC8vIGhlYWx0aHkgdG8ga2VlcCB0aGUgYmxvY2sgbGlzdCBmcm9tIGdyb3dpbmcuCi0g
ICAgbV9wcm9jLm1fYmxvY2tzLnJlbW92ZUFsbE1hdGNoaW5nKAotICAgICAgICBbJl0gKHN0ZDo6
dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+IGJvb2wgewotICAgICAgICAgICAg
cmV0dXJuICFibG9ja1B0cjsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2VzLgotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3Byb2MubV9ibG9ja3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcHJvYy5t
X2Jsb2Nrc1tpXS0+bV9pbmRleCA9IGk7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuaAkocmV2
aXNpb24gMjEzNDkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRp
b25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShC
M19KSVQpCiAKKyNpbmNsdWRlICJCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIgogI2luY2x1
ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTM1LDI2ICszNiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsKIAogY2xhc3MgSW5zZXJ0aW9uU2V0OwogCi10eXBlZGVmIFdURjo6SW5zZXJ0aW9u
PHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4gQmxvY2tJbnNlcnRpb247Cit0eXBlZGVmIEdl
bmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJ
bnNlcnRpb247CiAKLWNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IHsKK2NsYXNzIEJsb2NrSW5zZXJ0
aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDxCYXNpY0Jsb2NrPiB7CiBw
dWJsaWM6CiAgICAgQmxvY2tJbnNlcnRpb25TZXQoUHJvY2VkdXJlJik7CiAgICAgfkJsb2NrSW5z
ZXJ0aW9uU2V0KCk7CiAgICAgCi0gICAgdm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJik7Ci0K
LSAgICAvLyBJbnNlcnQgYSBuZXcgYmxvY2sgYXQgYSBnaXZlbiBpbmRleC4KLSAgICBCYXNpY0Js
b2NrKiBpbnNlcnQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQot
ICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4gVXN1YWxs
eSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5Ci0gICAgLy8gYXJndW1lbnQuIFBhc3Np
bmcgUE5hTiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgJ2JlZm9y
ZScgYmxvY2suIFRoYXQncwotICAgIC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KLSAgICBCYXNp
Y0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJlcXVlbmN5
ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBi
bG9jay4KLSAgICBCYXNpY0Jsb2NrKiBpbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91
YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCiAgICAgLy8gQSBoZWxwZXIgdG8gc3BsaXQgYSBibG9j
ayB3aGVuIGZvcndhcmQgaXRlcmF0aW5nIG92ZXIgaXQuIEl0IGNyZWF0ZXMgYSBuZXcgYmxvY2sg
dG8gaG9sZAogICAgIC8vIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBpbnN0cnVjdGlvbiBhdCB2YWx1
ZUluZGV4LiBUaGUgY3VycmVudCBibG9jayBpcyBsZWZ0IHdpdGgKICAgICAvLyBldmVyeXRoaW5n
IGF0IGFuZCBhZnRlciB2YWx1ZUluZGV4LiBJZiB0aGUgb3B0aW9uYWwgSW5zZXJ0aW9uU2V0IGlz
IHByb3ZpZGVkLCBpdCB3aWxsIGdldApAQCAtODAsMTIgKzY4LDkgQEAgcHVibGljOgogICAgIEJh
c2ljQmxvY2sqIHNwbGl0Rm9yd2FyZCgKICAgICAgICAgQmFzaWNCbG9jayosIHVuc2lnbmVkJiB2
YWx1ZUluZGV4LCBJbnNlcnRpb25TZXQqID0gbnVsbHB0ciwKICAgICAgICAgZG91YmxlIGZyZXF1
ZW5jeSA9IFBOYU4pOwotICAgIAotICAgIGJvb2wgZXhlY3V0ZSgpOwogCiBwcml2YXRlOgogICAg
IFByb2NlZHVyZSYgbV9wcm9jOwotICAgIFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNl
cnRpb25zOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcAkocmV2aXNpb24gMjEzNDkyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Miw3ICs4
Miw4IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJmZXJlcyhjb25zdCBFZmZlY3RzJiAKICAgICAgICAg
fHwgaW50ZXJmZXJlc1dpdGhXcml0ZXNQaW5uZWQob3RoZXIsICp0aGlzKQogICAgICAgICB8fCB3
cml0ZXMub3ZlcmxhcHMob3RoZXIud3JpdGVzKQogICAgICAgICB8fCB3cml0ZXMub3ZlcmxhcHMo
b3RoZXIucmVhZHMpCi0gICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcyk7Cisg
ICAgICAgIHx8IHJlYWRzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKKyAgICAgICAgfHwgKGZlbmNl
ICYmIG90aGVyLmZlbmNlKTsKIH0KIAogYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVm
ZmVjdHMmIG90aGVyKSBjb25zdApAQCAtOTUsNyArOTYsOCBAQCBib29sIEVmZmVjdHM6Om9wZXJh
dG9yPT0oY29uc3QgRWZmZWN0cyYgCiAgICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBvdGhlci53
cml0ZXNQaW5uZWQKICAgICAgICAgJiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQaW5uZWQK
ICAgICAgICAgJiYgd3JpdGVzID09IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFkcyA9PSBv
dGhlci5yZWFkczsKKyAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKKyAgICAgICAgJiYg
ZmVuY2UgPT0gb3RoZXIuZmVuY2U7CiB9CiAKIGJvb2wgRWZmZWN0czo6b3BlcmF0b3IhPShjb25z
dCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTEyMCw2ICsxMjIsOCBAQCB2b2lkIEVmZmVjdHM6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldy
aXRlc1Bpbm5lZCIpOwogICAgIGlmIChyZWFkc1Bpbm5lZCkKICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiUmVhZHNQaW5uZWQiKTsKKyAgICBpZiAoZmVuY2UpCisgICAgICAgIG91dC5wcmludChj
b21tYSwgIkZlbmNlIik7CiAgICAgaWYgKHdyaXRlcykKICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAiV3JpdGVzOiIsIHdyaXRlcyk7CiAgICAgaWYgKHJlYWRzKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNpb24gMjEzNDkyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsNiArNzEsMTAgQEAg
c3RydWN0IEVmZmVjdHMgewogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjMxNzMKICAgICBib29sIHJlYWRzUGlubmVkIHsgZmFsc2UgfTsKICAgICBib29s
IHdyaXRlc1Bpbm5lZCB7IGZhbHNlIH07CisgICAgCisgICAgLy8gTWVtb3J5IGZlbmNlcyBjYW5u
b3QgYmUgcmVvcmRlcmVkIGFyb3VuZCBlYWNoIG90aGVyIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZWZm
ZWN0cy4gVGhpcyBpcyBmbGFnZ2VkCisgICAgLy8gaWYgdGhlIG9wZXJhdGlvbiBpcyBhIG1lbW9y
eSBmZW5jZS4KKyAgICBib29sIGZlbmNlIHsgZmFsc2UgfTsKIAogICAgIEhlYXBSYW5nZSB3cml0
ZXM7CiAgICAgSGVhcFJhbmdlIHJlYWRzOwpAQCAtODksNiArOTMsNyBAQCBzdHJ1Y3QgRWZmZWN0
cyB7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CiAgICAgICAgIHJl
c3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIHJlc3VsdC53cml0ZXNQaW5uZWQgPSB0
cnVlOworICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIApAQCAtMTAzLDcgKzEwOCw3IEBAIHN0cnVjdCBFZmZlY3RzIHsKIAogICAgIGJv
b2wgbXVzdEV4ZWN1dGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHRlcm1pbmFsIHx8
IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8fCB3cml0ZXMgfHwgd3JpdGVzUGlu
bmVkOworICAgICAgICByZXR1cm4gdGVybWluYWwgfHwgZXhpdHNTaWRld2F5cyB8fCB3cml0ZXNM
b2NhbFN0YXRlIHx8IHdyaXRlcyB8fCB3cml0ZXNQaW5uZWQgfHwgZmVuY2U7CiAgICAgfQogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHJlb3JkZXJpbmcgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlc2Ug
cmVzcGVjdGl2ZSBlZmZlY3RzIHdvdWxkIGNoYW5nZSBwcm9ncmFtCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhw
cmVzc2lvbnMuY3BwCShyZXZpc2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQy
LDYgKzE0Miw3IEBAIHN0cnVjdCBJbXB1cmVCbG9ja0RhdGEgewogCiAgICAgUmFuZ2VTZXQ8SGVh
cFJhbmdlPiByZWFkczsgLy8gVGhpcyBvbmx5IGdldHMgdXNlZCBmb3IgZm9yd2FyZCBzdG9yZSBl
bGltaW5hdGlvbi4KICAgICBSYW5nZVNldDxIZWFwUmFuZ2U+IHdyaXRlczsgLy8gVGhpcyBnZXRz
IHVzZWQgZm9yIGJvdGggbG9hZCBhbmQgc3RvcmUgZWxpbWluYXRpb24uCisgICAgYm9vbCBmZW5j
ZTsKIAogICAgIE1lbW9yeVZhbHVlTWFwIHN0b3Jlc0F0SGVhZDsKICAgICBNZW1vcnlWYWx1ZU1h
cCBtZW1vcnlWYWx1ZXNBdFRhaWw7CkBAIC0xNzQsMTIgKzE3NSwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeSAmJiBtZW1vcnktPmlzU3Rv
cmUoKQogICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS5yZWFkcy5vdmVybGFwcyhtZW1vcnkt
PnJhbmdlKCkpCi0gICAgICAgICAgICAgICAgICAgICYmICFkYXRhLndyaXRlcy5vdmVybGFwcyht
ZW1vcnktPnJhbmdlKCkpKQorICAgICAgICAgICAgICAgICAgICAmJiAhZGF0YS53cml0ZXMub3Zl
cmxhcHMobWVtb3J5LT5yYW5nZSgpKQorICAgICAgICAgICAgICAgICAgICAmJiAoIWRhdGEuZmVu
Y2UgfHwgIW1lbW9yeS0+aGFzRmVuY2UoKSkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3Rv
cmVzQXRIZWFkLmFkZChtZW1vcnkpOwogICAgICAgICAgICAgICAgIGRhdGEucmVhZHMuYWRkKGVm
ZmVjdHMucmVhZHMpOwogCiAgICAgICAgICAgICAgICAgaWYgKEhlYXBSYW5nZSB3cml0ZXMgPSBl
ZmZlY3RzLndyaXRlcykKICAgICAgICAgICAgICAgICAgICAgY2xvYmJlcihkYXRhLCB3cml0ZXMp
OworICAgICAgICAgICAgICAgIGRhdGEuZmVuY2UgfD0gZWZmZWN0cy5mZW5jZTsKIAogICAgICAg
ICAgICAgICAgIGlmIChtZW1vcnkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVtb3J5VmFs
dWVzQXRUYWlsLmFkZChtZW1vcnkpOwpAQCAtNDQ1LDggKzQ0OCw2IEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZGF0YUxvZygiQmFkIG1lbW9y
eSB2YWx1ZTogIiwgZGVlcER1bXAobV9wcm9jLCBtX3ZhbHVlKSwgIlxuIik7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9CkBAIC00NzgsNiArNDc5LDkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGaWx0ZXI+CiAgICAgYm9vbCBmaW5kU3RvcmVBZnRlckNsb2JiZXIoVmFsdWUqIHB0
ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0ZXImIGZpbHRlcikKICAgICB7CisgICAgICAg
IGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBlbGltaW5hdGUgYSBz
dG9yZSBpZiBldmVyeSBmb3J3YXJkIHBhdGggaGl0cyBhIHN0b3JlIHRvIHRoZSBzYW1lIGxvY2F0
aW9uIGJlZm9yZQogICAgICAgICAvLyBoaXR0aW5nIGFueSBvcGVyYXRpb24gdGhhdCBvYnNlcnZl
cyB0aGUgc3RvcmUuIFRoaXMgc2VhcmNoIHNlZW1zIGxpa2UgaXQgc2hvdWxkIGJlCiAgICAgICAg
IC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMg
aXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIApAQCAtNjE0LDYgKzYxOCwxMiBAQCBw
cml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFs
dWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIpOwogICAgICAgICAK
KyAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKSB7Cisg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2
aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoTWVtb3J5VmFsdWUqIG1hdGNoID0gbV9kYXRh
Lm1lbW9yeVZhbHVlc0F0VGFpbC5maW5kKHB0ciwgZmlsdGVyKSkgewogICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZvdW5kICIsICptYXRjaCwg
IiBsb2NhbGx5LlxuIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUu
Y3BwCShyZXZpc2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5l
cmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiQjNM
b3dlclRvQWlyLmgiCiAjaW5jbHVkZSAiQjNNb3ZlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiQjNQ
cm9jZWR1cmUuaCIKKyNpbmNsdWRlICJCM1B1cmVDU0UuaCIKICNpbmNsdWRlICJCM1JlZHVjZURv
dWJsZVRvRmxvYXQuaCIKICNpbmNsdWRlICJCM1JlZHVjZVN0cmVuZ3RoLmgiCiAjaW5jbHVkZSAi
QjNUaW1pbmdTY29wZS5oIgpAQCAtOTIsNiArOTMsNyBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJv
Y2VkdXJlJiBwcm9jZWR1cmUsCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTA1MDcKICAgICB9CiAKKyAgICAvLyBUaGlzIHB1dHMgdGhlIElSIGlu
IHF1aXJrcyBtb2RlLgogICAgIGxvd2VyTWFjcm9zKHByb2NlZHVyZSk7CiAKICAgICBpZiAob3B0
TGV2ZWwgPj0gMSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVk
ZSAiUHVyZU5hTi5oIgorI2luY2x1ZGUgPGNsaW1pdHM+CisjaW5jbHVkZSA8d3RmL0J1YmJsZVNv
cnQuaD4KKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworY2xhc3MgSW5zZXJ0aW9uU2V0
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNpY0Jsb2NrPgorY2xhc3MgR2VuZXJpY0Jsb2NrSW5z
ZXJ0aW9uU2V0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFdURjo6SW5zZXJ0aW9uPHN0ZDo6dW5p
cXVlX3B0cjxCYXNpY0Jsb2NrPj4gQmxvY2tJbnNlcnRpb247CisgICAgCisgICAgR2VuZXJpY0Js
b2NrSW5zZXJ0aW9uU2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBibG9j
a3MpCisgICAgICAgIDogbV9ibG9ja3MoYmxvY2tzKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
dm9pZCBpbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCisgICAgeworICAgICAgICBt
X2luc2VydGlvbnMuYXBwZW5kKFdURk1vdmUoaW5zZXJ0aW9uKSk7CisgICAgfQorCisgICAgLy8g
SW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEgZ2l2ZW4gaW5kZXguCisgICAgQmFzaWNCbG9jayogaW5z
ZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5U
X01BWCwgZnJlcXVlbmN5KSk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlc3VsdCA9IGJsb2NrLmdl
dCgpOworICAgICAgICBpbnNlcnQoQmxvY2tJbnNlcnRpb24oaW5kZXgsIFdURk1vdmUoYmxvY2sp
KSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5l
dyBibG9jayBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLiBVc3VhbGx5IHlvdSB3aWxsIG5vdCBwYXNz
IHRoZSBmcmVxdWVuY3kKKyAgICAvLyBhcmd1bWVudC4gUGFzc2luZyBQTmFOIGNhdXNlcyB1cyB0
byBqdXN0IHVzZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSAnYmVmb3JlJyBibG9jay4gVGhhdCdzCisg
ICAgLy8gdXN1YWxseSB3aGF0IHlvdSB3YW50LgorICAgIEJhc2ljQmxvY2sqIGluc2VydEJlZm9y
ZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KCksIGZyZXF1ZW5jeSA9PSBmcmVxdWVu
Y3kgPyBmcmVxdWVuY3kgOiBiZWZvcmUtPmZyZXF1ZW5jeSgpKTsKKyAgICB9CisKKyAgICAvLyBJ
bnNlcnRzIGEgbmV3IGJsb2NrIGFmdGVyIHRoZSBnaXZlbiBibG9jay4KKyAgICBCYXNpY0Jsb2Nr
KiBpbnNlcnRBZnRlcihCYXNpY0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4p
CisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KGFmdGVyLT5pbmRleCgpICsgMSwgZnJlcXVl
bmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFmdGVyLT5mcmVxdWVuY3koKSk7CisgICAg
fQorCisgICAgYm9vbCBleGVjdXRlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2luc2VydGlvbnMu
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAg
Ly8gV2UgYWxsb3cgaW5zZXJ0aW9ucyB0byBiZSBnaXZlbiB0byB1cyBpbiBhbnkgb3JkZXIuIFNv
LCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBiZWZvcmUKKyAgICAgICAgLy8gcnVubmluZyBXVEY6OmV4
ZWN1dGVJbnNlcnRpb25zLiBXZSBzdHJvbmdseSBwcmVmZXIgYSBzdGFibGUgc29ydCBhbmQgd2Ug
d2FudCBpdCB0byBiZQorICAgICAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNvcnQuCisg
ICAgICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQo
KSk7CisgICAgICAgIAorICAgICAgICBleGVjdXRlSW5zZXJ0aW9ucyhtX2Jsb2NrcywgbV9pbnNl
cnRpb25zKTsKKyAgICAgICAgCisgICAgICAgIC8vIFBydW5lIG91dCBlbXB0eSBlbnRyaWVzLiBU
aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncworICAgICAgICAvLyBoZWFsdGh5
IHRvIGtlZXAgdGhlIGJsb2NrIGxpc3QgZnJvbSBncm93aW5nLgorICAgICAgICBtX2Jsb2Nrcy5y
ZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJhc2lj
QmxvY2s+JiBibG9ja1B0cikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFibG9j
a1B0cjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlIGJsb2NrcyBrbm93IHRoZWlyIG5ldyBpbmRpY2VzLgorICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9ibG9ja3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX2Jsb2Nr
c1tpXS0+bV9pbmRleCA9IGk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPj4mIG1f
YmxvY2tzOworICAgIFZlY3RvcjxCbG9ja0luc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgJKHJldmlzaW9uIDIxMzQ5
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5nZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTg4LDYgKzg4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOwogICAgIH0KICAgICAKKyAgICBIZWFwUmFuZ2Ugb3BlcmF0b3J8KGNvbnN0IEhlYXBSYW5n
ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSGVhcFJhbmdlKAorICAgICAg
ICAgICAgc3RkOjptaW4obV9iZWdpbiwgb3RoZXIubV9iZWdpbiksCisgICAgICAgICAgICBzdGQ6
Om1heChtX2VuZCwgb3RoZXIubV9lbmQpKTsKKyAgICB9CisgICAgCiAgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW4gIT0gbV9lbmQ7IH0KIAogICAgIHVu
c2lnbmVkIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCShyZXZpc2lvbiAyMTM0OTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTgsNiArNTgsMTEgQEAgVmFsdWUqIEluc2VydGlvblNldDo6aW5zZXJ0Qm90dG9t
KHNpemVfdAogICAgIHJldHVybiBpbnNlcnRCb3R0b20oaW5kZXgsIGxpa2VWYWx1ZS0+b3JpZ2lu
KCksIGxpa2VWYWx1ZS0+dHlwZSgpKTsKIH0KIAorVmFsdWUqIEluc2VydGlvblNldDo6aW5zZXJ0
Q2xvbmUoc2l6ZV90IGluZGV4LCBWYWx1ZSogdmFsdWUpCit7CisgICAgcmV0dXJuIGluc2VydFZh
bHVlKGluZGV4LCBtX3Byb2NlZHVyZS5jbG9uZSh2YWx1ZSkpOworfQorCiB2b2lkIEluc2VydGlv
blNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBidWJibGVTb3J0KG1faW5z
ZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVfdCBp
bmRleCwgT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogaW5zZXJ0Qm90dG9tKHNpemVfdCBpbmRl
eCwgVmFsdWUqKTsKKyAgICAKKyAgICBWYWx1ZSogaW5zZXJ0Q2xvbmUoc2l6ZV90IGluZGV4LCBW
YWx1ZSopOwogCiAgICAgdm9pZCBleGVjdXRlKEJhc2ljQmxvY2sqKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3Bw
CShyZXZpc2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMZWdhbGl6
ZU1lbW9yeU9mZnNldHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw4IEBACiAKICNp
ZiBFTkFCTEUoQjNfSklUKQogCi0jaW5jbHVkZSAiQWlyQXJnLmgiCiAjaW5jbHVkZSAiQjNJbnNl
cnRpb25TZXRJbmxpbmVzLmgiCi0jaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUg
IkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5j
bHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIK
QEAgLTQ5LDIwICs0OCwyMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJ1bigpCiAgICAgewotICAg
ICAgICBpZiAoIWlzQVJNNjQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQorICAgICAgICAvLyBG
SVhNRTogUGVyaGFwcyB0aGlzIHNob3VsZCBiZSBtb3ZlZCB0byBsb3dlck1hY3JvcywgYW5kIHF1
aXJrcyBtb2RlIGNhbiBpbXBvc2UgdGhlIHJlcXVpcmVtZW50CisgICAgICAgIC8vIHRoYXQgdGhl
IG9mZnNldCBpcyBsZWdhbC4gQnV0IGZvciBub3cgdGhpcyBpcyBzb3J0IG9mIE9LIGJlY2F1c2Ug
d2UgcnVuIHB1cmVDU0UgYWZ0ZXIuIEFsc28sCisgICAgICAgIC8vIHdlIHNob3VsZCBwcm9iYWJs
eSBoYXZlIHNvbWV0aGluZyBiZXR0ZXIgdGhhbiBqdXN0IHB1cmVDU0UgdG8gY2xlYW4gdXAgdGhl
IGNvZGUgdGhhdCB0aGlzCisgICAgICAgIC8vIGludHJvZHVjZXMuCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkyNDYKKyAgICAgICAgCiAgICAg
ICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXgpIHsKICAg
ICAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5VmFsdWUgPSBibG9jay0+YXQoaW5kZXgp
LT5hczxNZW1vcnlWYWx1ZT4oKTsKICAgICAgICAgICAgICAgICBpZiAoIW1lbW9yeVZhbHVlKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIGludDMyX3Qg
b2Zmc2V0ID0gbWVtb3J5VmFsdWUtPm9mZnNldCgpOwotICAgICAgICAgICAgICAgIFdpZHRoIHdp
ZHRoID0gbWVtb3J5VmFsdWUtPmFjY2Vzc1dpZHRoKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFB
aXI6OkFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgd2lkdGgpKSB7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgaWYgKCFtZW1vcnlWYWx1ZS0+aXNMZWdhbE9mZnNldChtZW1v
cnlWYWx1ZS0+b2Zmc2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBiYXNlID0g
bWVtb3J5VmFsdWUtPmxhc3RDaGlsZCgpOwotICAgICAgICAgICAgICAgICAgICBWYWx1ZSogb2Zm
c2V0VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChpbmRleCwgbWVtb3J5
VmFsdWUtPm9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBvZmZzZXQpOworICAgICAgICAgICAgICAg
ICAgICBWYWx1ZSogb2Zmc2V0VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFu
dChpbmRleCwgbWVtb3J5VmFsdWUtPm9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBtZW1vcnlWYWx1
ZS0+b2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcmVzb2x2ZWRBZGRyZXNz
ID0gbV9wcm9jLmFkZDxWYWx1ZT4oQWRkLCBtZW1vcnlWYWx1ZS0+b3JpZ2luKCksIGJhc2UsIG9m
ZnNldFZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0VmFs
dWUoaW5kZXgsIHJlc29sdmVkQWRkcmVzcyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDE5
ICsyOSwyMiBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQu
aCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0Nhc2VDb2xsZWN0aW9u
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgorI2luY2x1ZGUgIkIzRmVu
Y2VWYWx1ZS5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgotI2luY2x1ZGUg
IkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkIzUGF0Y2hwb2ludFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAj
aW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMuaCIKICNpbmNsdWRlICJCM1N3aXRjaFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNV
cHNpbG9uVmFsdWUuaCIKKyNpbmNsdWRlICJCM1VzZUNvdW50cy5oIgogI2luY2x1ZGUgIkIzVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiTGlua0J1
ZmZlci5oIgpAQCAtNTgsMTEgKzYxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3Byb2MocHJv
YykKICAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MpCiAgICAgICAgICwgbV9pbnNl
cnRpb25TZXQocHJvYykKKyAgICAgICAgLCBtX3VzZUNvdW50cyhwcm9jKQogICAgIHsKICAgICB9
CiAKICAgICBib29sIHJ1bigpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wcm9j
Lmhhc1F1aXJrcygpKTsKKyAgICAgICAgCiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sg
OiBtX3Byb2MpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAgICAgICAgIHBy
b2Nlc3NDdXJyZW50QmxvY2soKTsKQEAgLTcyLDYgKzc4LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG1fcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICAgICAgbV9wcm9jLmludmFs
aWRhdGVDRkcoKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBpbmRpY2F0
ZXMgdGhhdCB3ZSd2ZSAKKyAgICAgICAgbV9wcm9jLnNldEhhc1F1aXJrcyh0cnVlKTsKKyAgICAg
ICAgCiAgICAgICAgIHJldHVybiBtX2NoYW5nZWQ7CiAgICAgfQogICAgIApAQCAtMTg1LDcgKzE5
NSwxMjcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBsb2FkLWxvYWQgZmVuY2UuIFRoaXMgY29k
ZWdlbnMgdG8gbm90aGluZyBvbiBYODYuIFdlIHVzZSBpdCB0byB0ZWxsIHRoZQorICAgICAgICAg
ICAgICAgICAgICAvLyBjb21waWxlciBub3QgdG8gYmxvY2sgbG9hZCBtb3Rpb24uCisgICAgICAg
ICAgICAgICAgICAgIEZlbmNlVmFsdWUqIGZlbmNlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PEZl
bmNlVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgZmVuY2Ut
PnJlYWQgPSBIZWFwUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgZmVuY2UtPndyaXRlID0g
SGVhcFJhbmdlOjp0b3AoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgIC8vIEtpbGwgdGhlIERlcGVuZCwgd2hpY2ggc2hvdWxkIHVubG9jayBhIGJ1bmNoIG9mIGNv
ZGUgc2ltcGxpZmljYXRpb24uCisgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VX
aXRoQm90dG9tKG1faW5zZXJ0aW9uU2V0LCBtX2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogCisgICAgICAgICAgICBj
YXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzogewor
ICAgICAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNW
YWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+YWNjZXNzV2lk
dGgoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNDYW5vbmljYWxX
aWR0aCh3aWR0aCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIFZhbHVlKiBleHBlY3RlZFZhbHVlID0gYXRvbWljLT5jaGlsZCgw
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIWlzWDg2KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gT24gQVJNLCB0aGUgbG9hZCBwYXJ0IG9mIHRoZSBDQVMgZG9l
cyBhIGxvYWQgd2l0aCB6ZXJvIGV4dGVuc2lvbi4gVGhlcmVmb3JlLCB3ZSBuZWVkCisgICAgICAg
ICAgICAgICAgICAgIC8vIHRvIHplcm8tZXh0ZW5kIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAg
ICAgICAgVmFsdWUqIG1hc2tlZEV4cGVjdGVkVmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8
VmFsdWU+KAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgQml0QW5kLCBtX29yaWdp
biwgZXhwZWN0ZWRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydEludENvbnN0YW50KG1faW5kZXgsIGV4cGVjdGVkVmFsdWUsIG1hc2sod2lkdGgpKSk7
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBhdG9taWMtPmNoaWxk
KDApID0gbWFza2VkRXhwZWN0ZWRWYWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGF0b21pYy0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ry
b25nQ0FTKSB7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4LCBz
aWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwgbV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnRDbG9uZShtX2luZGV4LCBhdG9taWMpKTsKKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGF0b21pYy0+cmVwbGFjZVdpdGhJZGVu
dGl0eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIEF0b21pY1hj
aGdBZGQ6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAg
ICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZzogewor
ICAgICAgICAgICAgICAgIC8vIE9uIFg4NiwgdGhlc2UgbWF5IGFjdHVhbGx5IHJldHVybiBnYXJi
YWdlIGluIHRoZSBoaWdoIGJpdHMuIE9uIEFSTTY0LCB0aGVzZSBzb3J0YQorICAgICAgICAgICAg
ICAgIC8vIHplcm8tZXh0ZW5kIHRoZWlyIGhpZ2ggYml0cywgZXhjZXB0IHRoYXQgdGhlIGhpZ2gg
Yml0cyBtaWdodCBnZXQgcG9sbHV0ZWQgYnkgaGlnaAorICAgICAgICAgICAgICAgIC8vIGJpdHMg
aW4gdGhlIG9wZXJhbmQuIC4gU28sIGVpdGhlciB3YXksIHdlIG5lZWQgdG8gdGhyb3cgYSBzaWdu
LWV4dGVuZCBvbiB0aGVzZQorICAgICAgICAgICAgICAgIC8vIHRoaW5ncy4KKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAobV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljWGNoZ1N1YiAmJiBtX3VzZUNvdW50cy5u
dW1Vc2VzKG1fdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbiB4ODYsIHhj
aGdhZGQgaXMgYmV0dGVyIHRoYW4geGNoZ3N1YiBpZiBpdCBoYXMgYW55IHVzZXJzLgorICAgICAg
ICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+c2V0T3Bjb2RlVW5zYWZlbHkoQXRvbWljWGNoZ0Fk
ZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydDxWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRl
eCwgTmVnLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBib29sIGV4ZW1w
dCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRv
bWljWGNoZ1N1YjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAg
ICAgICAgICAgICAgICAgICAgICAgZXhlbXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGV4ZW1wdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSog
YXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lk
dGggd2lkdGggPSBhdG9taWMtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3
VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICBtX2luZGV4LCBzaWduRXh0ZW5kT3Bjb2RlKHdpZHRoKSwgbV9vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydENsb25lKG1faW5kZXgsIGF0b21pYykpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF0b21pYy0+cmVwbGFjZVdpdGhJZGVu
dGl0eShuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGNhc2UgTG9hZDhaOgorICAgICAgICAgICAgY2FzZSBMb2FkMTZaOiB7CisgICAgICAg
ICAgICAgICAgaWYgKGlzWDg2KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBtX3ZhbHVl
LT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1lbW9yeS0+aGFzRmVu
Y2UoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgLy8gU3ViLXdpZHRoIGxvYWQtYWNxIG9uIEFSTTY0IGFsd2F5cyBzaWduIGV4
dGVuZHMuCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld0xvYWQgPSBtX2luc2VydGlvblNldC5p
bnNlcnRDbG9uZShtX2luZGV4LCBtZW1vcnkpOworICAgICAgICAgICAgICAgIG5ld0xvYWQtPnNl
dE9wY29kZVVuc2FmZWx5KG1lbW9yeS0+b3Bjb2RlKCkgPT0gTG9hZDhaID8gTG9hZDhTIDogTG9h
ZDE2Uyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1ZhbHVl
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgbV9p
bmRleCwgQml0QW5kLCBtX29yaWdpbiwgbmV3TG9hZCwKKyAgICAgICAgICAgICAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2luZGV4LCBtX29yaWdpbiwgSW50MzIsIG1hc2sobWVtb3J5LT5hY2Nlc3NXaWR0aCgpKSkpOwor
CisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShuZXdWYWx1ZSk7
CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00NzAsNiArNjAwLDcg
QEAgcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKICAgICBCbG9ja0luc2VydGlvblNl
dCBtX2Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsK
KyAgICBVc2VDb3VudHMgbV91c2VDb3VudHM7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKICAg
ICB1bnNpZ25lZCBtX2luZGV4OwogICAgIFZhbHVlKiBtX3ZhbHVlOwpAQCAtNDc3LDIxICs2MDgs
MTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hhbmdlZCB7IGZhbHNlIH07CiB9OwogCi1ib29s
IGxvd2VyTWFjcm9zSW1wbChQcm9jZWR1cmUmIHByb2MpCi17Ci0gICAgTG93ZXJNYWNyb3MgbG93
ZXJNYWNyb3MocHJvYyk7Ci0gICAgcmV0dXJuIGxvd2VyTWFjcm9zLnJ1bigpOwotfQotCiB9IC8v
IGFub255bW91cyBuYW1lc3BhY2UKIAogYm9vbCBsb3dlck1hY3JvcyhQcm9jZWR1cmUmIHByb2Mp
CiB7Ci0gICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHByb2MsICJsb3dlck1hY3JvcyIpOwotICAg
IGJvb2wgcmVzdWx0ID0gbG93ZXJNYWNyb3NJbXBsKHByb2MpOwotICAgIGlmIChzaG91bGRWYWxp
ZGF0ZUlSKCkpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsb3dlck1hY3Jvc0ltcGwocHJvYykp
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgTG93ZXJNYWNyb3MgbG93ZXJNYWNyb3MocHJvYyk7
CisgICAgcmV0dXJuIGxvd2VyTWFjcm9zLnJ1bigpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJP
cHRpbWl6YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHJldmlzaW9uIDIxMzQ5MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1NiwxNSArMTU2LDE0IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBjYXNlIFJvdEw6IHsKICAgICAgICAgICAgICAgICAvLyBBUk02NCBkb2Vzbid0IGhh
dmUgYSByb3RhdGUgbGVmdC4KICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlKiBuZXdTaGlmdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwg
TmVnLCBtX3ZhbHVlLT5vcmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsdWUqIHJvdGF0ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4o
bV9pbmRleCwgUm90UiwgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUtPmNoaWxkKDApLCBuZXdT
aGlmdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50
aXR5KHJvdGF0ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1f
dmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJvdGF0ZSA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90UiwgbV92YWx1ZS0+b3JpZ2lu
KCksIG1fdmFsdWUtPmNoaWxkKDApLCBuZXdTaGlmdCk7CisgICAgICAgICAgICAgICAgICAgIG1f
dmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocm90YXRlKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCShyZXZpc2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTIgKzI4
LDE0IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRp
b25TZXQuaCIKICNpbmNsdWRlICJBaXJDQ2FsbFNwZWNpYWwuaCIKICNpbmNsdWRlICJBaXJDb2Rl
LmgiCiAjaW5jbHVkZSAiQWlySW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWlySW5zdElubGlu
ZXMuaCIKICNpbmNsdWRlICJBaXJTdGFja1Nsb3QuaCIKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVn
VmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Js
b2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkIz
Q0NhbGxWYWx1ZS5oIgpAQCAtNDEsNyArNDMsNyBAQAogI2luY2x1ZGUgIkIzQ29tbXV0YXRpdml0
eS5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzRmVuY2VWYWx1ZS5o
IgotI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFNwZWNpYWwuaCIKICNpbmNsdWRlICJCM1Bh
dGNocG9pbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgpAQCAtNzIsNiArNzQs
MTYgQEAgbmFtZXNwYWNlIHsKIAogY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKKy8vIEZJ
WE1FOiBXZSB3b3VsZG4ndCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRlZCBXaWR0aCBtb2RpZmll
cnMgaW4gQWlyOjpLaW5kLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTI0NworI2RlZmluZSBPUENPREVfRk9SX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAor
ICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDggOiBcCisgICAgKHdpZHRoKSA9PSBX
aWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgzMiA/IG9wY29k
ZSAjIyAzMiA6IFwKKyAgICBvcGNvZGUgIyMgNjQpCisjZGVmaW5lIE9QQ09ERV9GT1JfQ0FOT05J
Q0FMX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAorICAgICh3aWR0aCkgPT0gV2lkdGg2NCA/IG9w
Y29kZSAjIyA2NCA6IG9wY29kZSAjIyAzMikKKwogY2xhc3MgTG93ZXJUb0FpciB7CiBwdWJsaWM6
CiAgICAgTG93ZXJUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSkKQEAgLTgzLDYgKzk1LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgLCBtX2RvbWluYXRvcnMocHJvY2VkdXJlLmRvbWluYXRvcnMoKSkK
ICAgICAgICAgLCBtX3Byb2NlZHVyZShwcm9jZWR1cmUpCiAgICAgICAgICwgbV9jb2RlKHByb2Nl
ZHVyZS5jb2RlKCkpCisgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChtX2NvZGUpCisjaWYg
Q1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICAgICAgLCBtX2VheChYODZSZWdpc3RlcnM6OmVh
eCkKKyAgICAgICAgLCBtX2VjeChYODZSZWdpc3RlcnM6OmVjeCkKKyAgICAgICAgLCBtX2VkeChY
ODZSZWdpc3RlcnM6OmVkeCkKKyNlbmRpZgogICAgIHsKICAgICB9CiAKQEAgLTEyNCwxNCArMTQy
LDE4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaG9pc3RlZCBhZGRyZXNzIGV4cHJlc3Npb24gYmVm
b3JlIHdlIGR1cGxpY2F0ZSBpdCBiYWNrIGludG8gdGhlIGxvb3AuCiAgICAgICAgIGZvciAoQjM6
OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUuYmxvY2tzSW5QcmVPcmRlcigpKSB7CiAg
ICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7Ci0gICAgICAgICAgICAvLyBSZXNldCBzb21lIHN0
YXRlLgotICAgICAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CiAKICAgICAgICAgICAgIG1faXNS
YXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAKICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nIEJsb2NrICIsICpibG9jaywg
IjpcbiIpOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUg
c3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KKyAgICAgICAgICAgIGZvciAoQjM6OkZy
ZXF1ZW50ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CisgICAgICAg
ICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCkuYXBwZW5kKAorICAg
ICAgICAgICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrVG9CbG9ja1tzdWNj
ZXNzb3IuYmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOworICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2NrcyBpbiByZXZlcnNlIG9yZGVyIHNvIHdlIHNl
ZSB1c2VzIGJlZm9yZSBkZWZzLiBUaGF0J3Mgd2hhdCBhbGxvd3MgdXMKICAgICAgICAgICAgIC8v
IHRvIG1hdGNoIHBhdHRlcm5zIGVmZmVjdGl2ZWx5LgogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgewpAQCAtMTQ5LDE5ICsxNzEsMTAgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gTm93
IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2luc3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJz
ZSBvcmRlciwgc28gd2UgcHJvY2VzcwotICAgICAgICAgICAgLy8gaXQgaW4gcmV2ZXJzZS4KLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAg
ICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0c1tpXSkKLSAgICAgICAgICAgICAg
ICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5hcHBlbmRJbnN0KFdURk1vdmUoaW5zdCkpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vz
c29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KLSAgICAgICAgICAgIGZvciAoQjM6OkZyZXF1ZW50
ZWRCbG9jayBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICAg
ICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdLT5zdWNjZXNzb3JzKCkuYXBwZW5kKAotICAgICAgICAg
ICAgICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayhtX2Jsb2NrVG9CbG9ja1tzdWNjZXNzb3Iu
YmxvY2soKV0sIHN1Y2Nlc3Nvci5mcmVxdWVuY3koKSkpOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXSk7
CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fYmxvY2tJbnNlcnRpb25TZXQuZXhlY3V0
ZSgpOwogCiAgICAgICAgIEFpcjo6SW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2NvZGUpOwog
ICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX3Byb2xvZ3VlKQpAQCAtNDQ4LDEyICs0NjEsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJl
dHVybiBzY2FsZTsKICAgICB9Ci0KKyAgICAKICAgICAvLyBUaGlzIHR1cm5zIHRoZSBnaXZlbiBv
cGVyYW5kIGludG8gYW4gYWRkcmVzcy4KICAgICBBcmcgZWZmZWN0aXZlQWRkcihWYWx1ZSogYWRk
cmVzcywgaW50MzJfdCBvZmZzZXQsIFdpZHRoIHdpZHRoKQogICAgIHsKICAgICAgICAgQVNTRVJU
KEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgd2lkdGgpKTsKLQorICAgICAgICAKICAgICAg
ICAgYXV0byBmYWxsYmFjayA9IFsmXSAoKSAtPiBBcmcgewogICAgICAgICAgICAgcmV0dXJuIEFy
Zzo6YWRkcih0bXAoYWRkcmVzcyksIG9mZnNldCk7CiAgICAgICAgIH07CkBAIC01MzUsMTIgKzU0
OCwxNSBAQCBwcml2YXRlOgogICAgICAgICBNZW1vcnlWYWx1ZSogdmFsdWUgPSBtZW1vcnlWYWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CiAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICBy
ZXR1cm4gQXJnKCk7CisgICAgICAgIAorICAgICAgICBpZiAodmFsdWUtPnJlcXVpcmVzU2ltcGxl
QWRkcigpKQorICAgICAgICAgICAgcmV0dXJuIEFyZzo6c2ltcGxlQWRkcih0bXAodmFsdWUtPmxh
c3RDaGlsZCgpKSk7CiAKICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSB2YWx1ZS0+b2Zmc2V0KCk7
CiAgICAgICAgIFdpZHRoIHdpZHRoID0gdmFsdWUtPmFjY2Vzc1dpZHRoKCk7CiAKICAgICAgICAg
QXJnIHJlc3VsdCA9IGVmZmVjdGl2ZUFkZHIodmFsdWUtPmxhc3RDaGlsZCgpLCBvZmZzZXQsIHdp
ZHRoKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5pc1ZhbGlkRm9ybSh3aWR0aCkpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuaXNWYWxpZEZvcm0od2lkdGgpKTsKIAogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTU2MSwxMSArNTc3LDE5IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgQXJnUHJvbWlzZSBsb2FkUHJvbWlzZUFueU9wY29kZShWYWx1ZSogbG9hZFZhbHVlKQog
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4o
KSk7CiAgICAgICAgIGlmICghY2FuQmVJbnRlcm5hbChsb2FkVmFsdWUpKQogICAgICAgICAgICAg
cmV0dXJuIEFyZygpOwogICAgICAgICBpZiAoY3Jvc3Nlc0ludGVyZmVyZW5jZShsb2FkVmFsdWUp
KQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwotICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChh
ZGRyKGxvYWRWYWx1ZSksIGxvYWRWYWx1ZSk7CisgICAgICAgIC8vIE9uIHg4NiwgYWxsIGxvYWRz
IGhhdmUgZmVuY2VzLiBEb2luZyB0aGlzIGtpbmQgb2YgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uIHdp
bGwgbW92ZSB0aGUgbG9hZCwKKyAgICAgICAgLy8gYnV0IHRoYXQncyBmaW5lIGJlY2F1c2Ugb3Vy
IGludGVyZmVyZW5jZSBhbmFseXNpcyBzdG9wcyB0aGUgbW90aW9uIG9mIGZlbmNlcyBhcm91bmQg
b3RoZXIKKyAgICAgICAgLy8gZmVuY2VzLiBTbywgYW55IGxvYWQgbW90aW9uIHdlIGludHJvZHVj
ZSBoZXJlIHdvdWxkIG5vdCBiZSBvYnNlcnZhYmxlLgorICAgICAgICBpZiAoIWlzWDg2KCkgJiYg
bG9hZFZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJl
dHVybiBBcmcoKTsKKyAgICAgICAgQXJnIGxvYWRBZGRyID0gYWRkcihsb2FkVmFsdWUpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChsb2FkQWRkcik7CisgICAgICAgIEFyZ1Byb21pc2UgcmVzdWx0
KGxvYWRBZGRyLCBsb2FkVmFsdWUpOwogICAgICAgICBpZiAobG9hZFZhbHVlLT50cmFwcygpKQog
ICAgICAgICAgICAgcmVzdWx0LnNldFRyYXBzKHRydWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtNzM4LDcgKzc2Miw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQotCisgICAgCiAgICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bj
b2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBvcGNvZGVEb3VibGUsIEFpcjo6T3Bjb2RlIG9wY29k
ZUZsb2F0LCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZT4KICAg
ICB2b2lkIGFwcGVuZEJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCiAgICAgewpAQCAt
ODk3LDExICs5MjEsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAgICAgICBhcHBlbmQoTW92ZSwgdG1w
KHZhbHVlKSwgdG1wKG1fdmFsdWUpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChhbW91bnQp
LCBUbXAoWDg2UmVnaXN0ZXJzOjplY3gpKTsKLSAgICAgICAgYXBwZW5kKG9wY29kZSwgVG1wKFg4
NlJlZ2lzdGVyczo6ZWN4KSwgdG1wKG1fdmFsdWUpKTsKLSNlbmRpZgorICAgICAgICBhcHBlbmQo
TW92ZSwgdG1wKGFtb3VudCksIG1fZWN4KTsKKyAgICAgICAgYXBwZW5kKG9wY29kZSwgbV9lY3gs
IHRtcChtX3ZhbHVlKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2Rl
MzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0PgpAQCAtOTMwLDEwICs5NTIsMTYgQEAgcHJpdmF0ZToK
ICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBDb21t
dXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZT4KICAgICBib29sIHRyeUFw
cGVuZFN0b3JlQmluT3AoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkKICAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpKTsKKyAgICAgICAgCiAg
ICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9w
Y29kZTY0LCBsZWZ0LT50eXBlKCkpOwogICAgICAgICBpZiAob3Bjb2RlID09IEFpcjo6T29wcykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCisgICAgICAgIC8vIE9uIHg4Niwg
YWxsIHN0b3JlcyBoYXZlIGZlbmNlcywgYW5kIHRoaXMgaXNuJ3QgcmVvcmRlcmluZyB0aGUgc3Rv
cmUgaXRzZWxmLgorICAgICAgICBpZiAoIWlzWDg2KCkgJiYgbV92YWx1ZS0+YXM8TWVtb3J5VmFs
dWU+KCktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAog
ICAgICAgICBBcmcgc3RvcmVBZGRyID0gYWRkcihtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUKHN0
b3JlQWRkcik7CiAKQEAgLTk5MywxMSArMTAyMSw1MCBAQCBwcml2YXRlOgogCiAgICAgICAgIHJl
dHVybiBJbnN0KG1vdmUsIG1fdmFsdWUsIHRtcCh2YWx1ZSksIGRlc3QpOwogICAgIH0KKyAgICAK
KyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShXaWR0aCB3aWR0aCwgQmFuayBiYW5rLCBib29s
IHJlbGVhc2UpCisgICAgeworICAgICAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgICAgIGNhc2Ug
V2lkdGg4OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAg
ICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsOCA6IEFpcjo6U3RvcmU4OworICAgICAgICBj
YXNlIFdpZHRoMTY6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKKyAg
ICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwxNiA6IEFpcjo6U3RvcmUxNjsKKyAg
ICAgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CisgICAgICAg
ICAgICBjYXNlIEdQOgorICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwz
MiA6IE1vdmUzMjsKKyAgICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIXJlbGVhc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRmxvYXQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXaWR0aDY0Ogor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXM2NEJpdCgpKTsKKyAgICAgICAgICAgIHN3aXRj
aCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVsZWFzZSA/IFN0b3JlUmVsNjQgOiBNb3ZlOworICAgICAgICAgICAgY2FzZSBGUDoKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIE1vdmVEb3VibGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAK
KyAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAg
ICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtZW1vcnktPmlzU3RvcmUoKSk7CisgICAgICAgIHJldHVybiBzdG9y
ZU9wY29kZShtZW1vcnktPmFjY2Vzc1dpZHRoKCksIG1lbW9yeS0+YWNjZXNzQmFuaygpLCBtZW1v
cnktPmhhc0ZlbmNlKCkpOworICAgIH0KIAogICAgIEluc3QgY3JlYXRlU3RvcmUoVmFsdWUqIHZh
bHVlLCBjb25zdCBBcmcmIGRlc3QpCiAgICAgewotICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bj
b2RlID0gbW92ZUZvclR5cGUodmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVT
dG9yZShtb3ZlT3Bjb2RlLCB2YWx1ZSwgZGVzdCk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVP
cGNvZGUgPSBzdG9yZU9wY29kZSh2YWx1ZSk7CisgICAgICAgIHJldHVybiBjcmVhdGVTdG9yZSht
b3ZlT3Bjb2RlLCB2YWx1ZS0+Y2hpbGQoMCksIGRlc3QpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3M+CkBAIC0xMDA1LDcgKzEwNzIsNyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVTdG9yZShzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKSk7CiAgICAgfQotCisgICAgCiAgICAgQWlyOjpPcGNvZGUg
bW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CkBA
IC0xMDcyLDcgKzExMzksNDEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1faW5zdHMubGFz
dCgpLmFwcGVuZChpbnN0KTsKICAgICB9CisgICAgCisgICAgdm9pZCBmaW5pc2hBcHBlbmRpbmdJ
bnN0cnVjdGlvbnMoQWlyOjpCYXNpY0Jsb2NrKiB0YXJnZXQpCisgICAgeworICAgICAgICAvLyBO
b3cgYXBwZW5kIHRoZSBpbnN0cnVjdGlvbnMuIG1faW5zdHMgY29udGFpbnMgdGhlbSBpbiByZXZl
cnNlIG9yZGVyLCBzbyB3ZSBwcm9jZXNzCisgICAgICAgIC8vIGl0IGluIHJldmVyc2UuCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5zdHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAg
ICBmb3IgKEluc3QmIGluc3QgOiBtX2luc3RzW2ldKQorICAgICAgICAgICAgICAgIHRhcmdldC0+
YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKKyAgICAgICAgfQorICAgICAgICBtX2luc3RzLnJl
c2l6ZSgwKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpCYXNpY0Jsb2NrKiBuZXdCbG9jaygpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlcihtX2Js
b2NrVG9CbG9ja1ttX2Jsb2NrXSk7CisgICAgfQogCisgICAgLy8gTk9URTogVGhpcyB3aWxsIGNy
ZWF0ZSBhIGNvbnRpbnVhdGlvbiBibG9jayAoYG5leHRCbG9ja2ApICphZnRlciogYW55IGJsb2Nr
cyB5b3UndmUgY3JlYXRlZCB1c2luZworICAgIC8vIG5ld0Jsb2NrKCkuIFNvLCBpdCdzIHByZWZl
cmFibGUgdG8gY3JlYXRlIGFsbCBvZiB5b3VyIGJsb2NrcyB1cGZyb250IHVzaW5nIG5ld0Jsb2Nr
KCkuIEFsc28gbm90ZQorICAgIC8vIHRoYXQgYW55IGNvZGUgeW91IGVtaXQgYmVmb3JlIHRoaXMg
d2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIGNvbnRpbnVhdGlvbiwgYW5kIGFueSBjb2RlIHlvdSBl
bWl0CisgICAgLy8gYWZ0ZXIgdGhpcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBwcmV2aW91cyBi
bG9jay4KKyAgICB2b2lkIHNwbGl0QmxvY2soQWlyOjpCYXNpY0Jsb2NrKiYgcHJldmlvdXNCbG9j
aywgQWlyOjpCYXNpY0Jsb2NrKiYgbmV4dEJsb2NrKQorICAgIHsKKyAgICAgICAgQWlyOjpCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdOworICAgICAgICAKKyAgICAg
ICAgcHJldmlvdXNCbG9jayA9IGJsb2NrOworICAgICAgICBuZXh0QmxvY2sgPSBtX2Jsb2NrSW5z
ZXJ0aW9uU2V0Lmluc2VydEFmdGVyKGJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGZpbmlzaEFw
cGVuZGluZ0luc3RydWN0aW9ucyhuZXh0QmxvY2spOworICAgICAgICBuZXh0QmxvY2stPnN1Y2Nl
c3NvcnMoKSA9IGJsb2NrLT5zdWNjZXNzb3JzKCk7CisgICAgICAgIGJsb2NrLT5zdWNjZXNzb3Jz
KCkuY2xlYXIoKTsKKyAgICAgICAgCisgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJbnN0
PigpKTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4g
QXJndW1lbnRzPgogICAgIFQqIGVuc3VyZVNwZWNpYWwoVComIGZpZWxkLCBBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCiAgICAgewpAQCAtMTEyMiw3ICsxMjIzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlN0YWNrQXJndW1l
bnQ6CiAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjpjYWxsQXJnKHZhbHVlLnJlcCgpLm9mZnNl
dEZyb21TUCgpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZS52YWx1ZSgpLCBh
cmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1vdmVGb3JUeXBlKHZhbHVlLnZhbHVl
KCktPnR5cGUoKSksIHZhbHVlLnZhbHVlKCksIGFyZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0xMjUzLDcgKzEzNTQsOSBAQCBwcml2YXRlOgogCiAgICAgICAgICAg
ICAvLyBJdCdzIHNhZmUgdG8gc2hhcmUgdmFsdWUsIGJ1dCBzaW5jZSB3ZSdyZSBzaGFyaW5nLCBp
dCBtZWFucyB0aGF0IHdlIGFyZW4ndCBsb2NraW5nIGl0LgogICAgICAgICAgICAgLy8gSWYgd2Ug
ZG9uJ3QgbG9jayBpdCwgdGhlbiBmdXNpbmcgbG9hZHMgaXMgb2ZmIGxpbWl0cyBhbmQgYWxsIG9m
IHZhbHVlJ3MgY2hpbGRyZW4gd2lsbAotICAgICAgICAgICAgLy8gaGF2ZSB0byBnbyB0aHJvdWdo
IHRoZSBzaGFyaW5nIHBhdGggYXMgd2VsbC4KKyAgICAgICAgICAgIC8vIGhhdmUgdG8gZ28gdGhy
b3VnaCB0aGUgc2hhcmluZyBwYXRoIGFzIHdlbGwuIEZ1c2luZyBsb2FkcyBpcyBvZmYgbGltaXRz
IGJlY2F1c2UgdGhlIGxvYWQKKyAgICAgICAgICAgIC8vIGNvdWxkIGFscmVhZHkgaGF2ZSBiZWVu
IGVtaXR0ZWQgZWxzZWh3ZXJlIC0gc28gZnVzaW5nIGl0IGhlcmUgd291bGQgZHVwbGljYXRlIHRo
ZSBsb2FkLgorICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY29uc2lkZXIgdGhhdCB0byBiZSBhIGxl
Z2FsIG9wdGltaXphdGlvbi4KICAgICAgICAgICAgIGNhbkNvbW1pdEludGVybmFsID0gZmFsc2U7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBGdXNlOwpAQCAtMTQ3MSw2ICsxNTc0
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMg
dW5zaWduZWQgdGhlbiB3ZSBjYW4gY2hvcCB0aGluZ3Mgb2ZmIG9mIHRoZSBpbW1lZGlhdGUuCiAg
ICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbWlnaHQgbWFrZSB0aGUgaW1tZWRpYXRlIG1vcmUg
bGVnYWwuIFBlcmhhcHMgdGhhdCdzIGEgam9iIGZvcgogICAgICAgICAgICAgICAgICAgICAvLyBz
dHJlbmd0aCByZWR1Y3Rpb24/CisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkyNDgKICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChyaWdodEltbSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKEluc3QgcmVzdWx0ID0gdHJ5VGVzdCh3aWR0aCwgbG9hZFByb21pc2UobGVmdCwgbG9h
ZE9wY29kZSksIHJpZ2h0SW1tKSkgewpAQCAtMTk2MCw2ICsyMDY0LDMxNCBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZFg4NkRpdihCMzo6
T3Bjb2RlIG9wKQorICAgIHsKKyAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29y
ZDsKKyAgICAgICAgQWlyOjpPcGNvZGUgZGl2OworICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5
cGUoKSkgeworICAgICAgICBjYXNlIEludDMyOgorICAgICAgICAgICAgY29udmVydFRvRG91Ymxl
V29yZCA9IFg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMjsKKyAgICAgICAgICAgIGRpdiA9IFg4NkRp
djMyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NjQ6CisgICAgICAgICAg
ICBjb252ZXJ0VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvUXVhZFdvcmQ2NDsKKyAgICAgICAg
ICAgIGRpdiA9IFg4NkRpdjY0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBN
b2QpOworICAgICAgICBUbXAgcmVzdWx0ID0gb3AgPT0gRGl2ID8gbV9lYXggOiBtX2VkeDsKKwor
ICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgbV9lYXgpOworICAg
ICAgICBhcHBlbmQoY29udmVydFRvRG91YmxlV29yZCwgbV9lYXgsIG1fZWR4KTsKKyAgICAgICAg
YXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAg
ICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwgdG1wKG1fdmFsdWUpKTsKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZFg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFpcjo6T3Bjb2Rl
IGRpdiA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsK
KworICAgICAgICBBU1NFUlQob3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKKyAgICAgICAgVG1w
IHJlc3VsdCA9IG9wID09IFVEaXYgPyBtX2VheCA6IG1fZWR4OworCisgICAgICAgIGFwcGVuZChN
b3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQoMCkpLCBtX2VheCk7CisgICAgICAgIGFwcGVuZChYb3I2
NCwgbV9lZHgsIG1fZWR4KTsKKyAgICAgICAgYXBwZW5kKGRpdiwgbV9lYXgsIG1fZWR4LCB0bXAo
bV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAgICAgYXBwZW5kKE1vdmUsIHJlc3VsdCwgdG1wKG1f
dmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgbG9hZExpbmtPcGNvZGUoV2lk
dGggd2lkdGgsIGJvb2wgZmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENP
REVfRk9SX1dJRFRIKExvYWRMaW5rQWNxLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRIKExvYWRM
aW5rLCB3aWR0aCk7CisgICAgfQorICAgIAorICAgIEFpcjo6T3Bjb2RlIHN0b3JlQ29uZE9wY29k
ZShXaWR0aCB3aWR0aCwgYm9vbCBmZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmZW5jZSA/
IE9QQ09ERV9GT1JfV0lEVEgoU3RvcmVDb25kUmVsLCB3aWR0aCkgOiBPUENPREVfRk9SX1dJRFRI
KFN0b3JlQ29uZCwgd2lkdGgpOworICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIGNhbiBlbWl0IGNv
ZGUgZm9yIHRoZSBmb2xsb3dpbmcgcGF0dGVybnM6CisgICAgLy8gQXRvbWljV2Vha0NBUworICAg
IC8vIEJpdFhvcihBdG9taWNXZWFrQ0FTLCAxKQorICAgIC8vIEF0b21pY1N0cm9uZ0NBUworICAg
IC8vIEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8gTm90RXF1YWwoQXRv
bWljU3Ryb25nQ0FTLCBleHBlY3RlZCkKKyAgICAvLyBCcmFuY2goQXRvbWljV2Vha0NBUykKKyAg
ICAvLyBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FTLCBleHBlY3RlZCkpCisgICAgLy8gQnJh
bmNoKE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpKQorICAgIC8vCisgICAgLy8g
SXQgYXNzdW1lcyB0aGF0IGF0b21pY1ZhbHVlIHBvaW50cyB0byB0aGUgQ0FTLCBhbmQgbV92YWx1
ZSBwb2ludHMgdG8gdGhlIGluc3RydWN0aW9uIGJlaW5nCisgICAgLy8gZ2VuZXJhdGVkLiBJdCBh
c3N1bWVzIHRoYXQgeW91J3ZlIGNvbnN1bWVkIGV2ZXJ5dGhpbmcgdGhhdCBuZWVkcyB0byBiZSBj
b25zdW1lZC4KKyAgICB2b2lkIGFwcGVuZENBUyhWYWx1ZSogYXRvbWljVmFsdWUsIGJvb2wgaW52
ZXJ0KQorICAgIHsKKyAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IGF0b21pY1ZhbHVlLT5h
czxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXRvbWljKTsKKyAgICAg
ICAgCisgICAgICAgIGJvb2wgaXNCcmFuY2ggPSBtX3ZhbHVlLT5vcGNvZGUoKSA9PSBCcmFuY2g7
CisgICAgICAgIGJvb2wgaXNTdHJvbmcgPSBhdG9taWMtPm9wY29kZSgpID09IEF0b21pY1N0cm9u
Z0NBUzsKKyAgICAgICAgYm9vbCByZXR1cm5zT2xkVmFsdWUgPSBtX3ZhbHVlLT5vcGNvZGUoKSA9
PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wgaGFzRmVuY2UgPSBhdG9taWMtPmhhc0Zl
bmNlKCk7CisgICAgICAgIAorICAgICAgICBXaWR0aCB3aWR0aCA9IGF0b21pYy0+YWNjZXNzV2lk
dGgoKTsKKyAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7CisKKyAgICAgICAgVG1w
IHZhbHVlUmVzdWx0VG1wOworICAgICAgICBUbXAgYm9vbFJlc3VsdFRtcDsKKyAgICAgICAgaWYg
KHJldHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWludmVydCk7
CisgICAgICAgICAgICB2YWx1ZVJlc3VsdFRtcCA9IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgICAg
IGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAgfSBlbHNlIGlmIChp
c0JyYW5jaCkgeworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQ
KTsKKyAgICAgICAgICAgIGJvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChH
UCk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gdG1wKG1fdmFsdWUpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBUbXAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXA7CisgICAgICAgIGlm
IChpc1N0cm9uZyAmJiAhaXNCcmFuY2gpCisgICAgICAgICAgICBzdWNjZXNzQm9vbFJlc3VsdFRt
cCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWNjZXNz
Qm9vbFJlc3VsdFRtcCA9IGJvb2xSZXN1bHRUbXA7CisKKyAgICAgICAgVG1wIGV4cGVjdGVkVmFs
dWVUbXAgPSB0bXAoYXRvbWljLT5jaGlsZCgwKSk7CisgICAgICAgIFRtcCBuZXdWYWx1ZVRtcCA9
IHRtcChhdG9taWMtPmNoaWxkKDEpKTsKKyAgICAgICAgCisgICAgICAgIEFpcjo6RnJlcXVlbnRl
ZEJsb2NrIHN1Y2Nlc3M7CisgICAgICAgIEFpcjo6RnJlcXVlbnRlZEJsb2NrIGZhaWx1cmU7Cisg
ICAgICAgIGlmIChpc0JyYW5jaCkgeworICAgICAgICAgICAgc3VjY2VzcyA9IG1fYmxvY2tUb0Js
b2NrW21fYmxvY2tdLT5zdWNjZXNzb3IoaW52ZXJ0KTsKKyAgICAgICAgICAgIGZhaWx1cmUgPSBt
X2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29yKCFpbnZlcnQpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBpZiAoaXNYODYoKSkgeworICAgICAgICAgICAgYXBwZW5kKHJlbGF4
ZWRNb3ZlRm9yVHlwZShhdG9taWMtPmFjY2Vzc1R5cGUoKSksIGltbU9yVG1wKGF0b21pYy0+Y2hp
bGQoMCkpLCBtX2VheCk7CisgICAgICAgICAgICBpZiAocmV0dXJuc09sZFZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FTLCB3aWR0
aCksIG1fZWF4LCBuZXdWYWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgYXBwZW5k
KHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPmFjY2Vzc1R5cGUoKSksIG1fZWF4LCB2YWx1ZVJl
c3VsdFRtcCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAg
ICAgICAgYXBwZW5kKE9QQ09ERV9GT1JfV0lEVEgoQnJhbmNoQXRvbWljU3Ryb25nQ0FTLCB3aWR0
aCksIEFyZzo6c3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3VjY2VzcyksIG1fZWF4LCBuZXdW
YWx1ZVRtcCwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgbV9ibG9ja1RvQmxvY2tbbV9ibG9j
a10tPnNldFN1Y2Nlc3NvcnMoc3VjY2VzcywgZmFpbHVyZSk7CisgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICBhcHBlbmQoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNTdHJvbmdDQVMs
IHdpZHRoKSwgQXJnOjpzdGF0dXNDb25kKGludmVydCA/IE1hY3JvQXNzZW1ibGVyOjpGYWlsdXJl
IDogTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwgdG1wKGF0b21pYy0+Y2hpbGQoMSkp
LCBhZGRyZXNzLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAgICAg
Ly8gV2Ugd2lzaCB0byBlbWl0OgorICAgICAgICAvLworICAgICAgICAvLyBCbG9jayAjcmVsb29w
OgorICAgICAgICAvLyAgICAgTG9hZExpbmsKKyAgICAgICAgLy8gICAgIEJyYW5jaCBOb3RFcXVh
bAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRoZW46I2ZhaWwsIEVsc2U6ICNzdG9yZQorICAg
ICAgICAvLyBCbG9jayAjc3RvcmU6CisgICAgICAgIC8vICAgICBTdG9yZUNvbmQKKyAgICAgICAg
Ly8gICAgIFhvciAkMSwgJXJlc3VsdCAgICA8LS0tIG9ubHkgaWYgIWludmVydAorICAgICAgICAv
LyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6ICNkb25lCisgICAgICAgIC8vIEJs
b2NrICNmYWlsOgorICAgICAgICAvLyAgICAgTW92ZSAkaW52ZXJ0LCAlcmVzdWx0CisgICAgICAg
IC8vICAgICBKdW1wCisgICAgICAgIC8vICAgU3VjY2Vzc29yczogI2RvbmUKKyAgICAgICAgLy8g
QmxvY2sgI2RvbmU6CisgICAgICAgIAorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9vcEJs
b2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdG9yZUJsb2NrID0g
bmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBzdWNjZXNzQmxvY2sgPSBudWxs
cHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoICYmIGlzU3Ryb25nKQorICAgICAgICAgICAgc3Vj
Y2Vzc0Jsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBmYWlsQmxv
Y2sgPSBudWxscHRyOworICAgICAgICBpZiAoIWlzQnJhbmNoKSB7CisgICAgICAgICAgICBmYWls
QmxvY2sgPSBuZXdCbG9jaygpOworICAgICAgICAgICAgZmFpbHVyZSA9IGZhaWxCbG9jazsKKyAg
ICAgICAgfQorICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHN0cm9uZ0ZhaWxCbG9jazsKKyAgICAg
ICAgaWYgKGlzU3Ryb25nICYmIGhhc0ZlbmNlKQorICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2Nr
ID0gbmV3QmxvY2soKTsKKyAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2sgY29tcGFyaXNvbkZh
aWwgPSBmYWlsdXJlOworICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayB3ZWFrRmFpbDsKKyAg
ICAgICAgaWYgKGlzU3Ryb25nKSB7CisgICAgICAgICAgICBpZiAoaGFzRmVuY2UpCisgICAgICAg
ICAgICAgICAgY29tcGFyaXNvbkZhaWwgPSBzdHJvbmdGYWlsQmxvY2s7CisgICAgICAgICAgICB3
ZWFrRmFpbCA9IHJlbG9vcEJsb2NrOworICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICB3ZWFr
RmFpbCA9IGZhaWx1cmU7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsKKyAg
ICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2soYmVn
aW5CbG9jaywgZG9uZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChBaXI6Okp1bXAp
OworICAgICAgICBiZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAgICAg
ICAgCisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQobG9hZExpbmtPcGNvZGUod2lkdGgsIGF0
b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIGFkZHJlc3MsIHZhbHVlUmVzdWx0VG1wKTsKKyAg
ICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChCcmFu
Y2gsIHdpZHRoKSwgbV92YWx1ZSwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCksIHZhbHVlUmVzdWx0VG1wLCBleHBlY3RlZFZhbHVlVG1wKTsKKyAgICAgICAgcmVsb29wQmxv
Y2stPnNldFN1Y2Nlc3NvcnMoY29tcGFyaXNvbkZhaWwsIHN0b3JlQmxvY2spOworICAgICAgICAK
KyAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9wY29kZSh3aWR0aCwgYXRvbWlj
LT5oYXNGZW5jZSgpKSwgbV92YWx1ZSwgbmV3VmFsdWVUbXAsIGFkZHJlc3MsIHN1Y2Nlc3NCb29s
UmVzdWx0VG1wKTsKKyAgICAgICAgaWYgKGlzQnJhbmNoKSB7CisgICAgICAgICAgICBzdG9yZUJs
b2NrLT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8pLCBib29sUmVzdWx0VG1wLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAg
IHN0b3JlQmxvY2stPnNldFN1Y2Nlc3NvcnMoc3VjY2Vzcywgd2Vha0ZhaWwpOworICAgICAgICAg
ICAgZG9uZUJsb2NrLT5zdWNjZXNzb3JzKCkuY2xlYXIoKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFkb25lQmxvY2stPnNpemUoKSk7CisgICAgICAgICAgICBkb25lQmxvY2stPmFwcGVu
ZChBaXI6Ok9vcHMsIG1fdmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYg
KGlzU3Ryb25nKSB7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEJyYW5jaFRl
c3QzMiwgbV92YWx1ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgc3VjY2Vz
c0Jvb2xSZXN1bHRUbXAsIHN1Y2Nlc3NCb29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgICAgICBz
dG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3NCbG9jaywgcmVsb29wQmxvY2spOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN1Y2Nlc3NCbG9jay0+YXBwZW5kKE1vdmUs
IG1fdmFsdWUsIEFyZzo6aW1tKCFpbnZlcnQpLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAg
ICAgICBzdWNjZXNzQmxvY2stPmFwcGVuZChBaXI6Okp1bXAsIG1fdmFsdWUpOworICAgICAgICAg
ICAgICAgIHN1Y2Nlc3NCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIWludmVydCkKKyAgICAgICAgICAgICAg
ICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKFhvcjMyLCBtX3ZhbHVlLCBBcmc6OmJpdEltbSgxKSwg
Ym9vbFJlc3VsdFRtcCwgYm9vbFJlc3VsdFRtcCk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEFpcjo6SnVtcCwgbV92YWx1ZSk7CisgICAgICAg
ICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2spOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmYWlsQmxvY2stPmFwcGVuZChNb3ZlLCBt
X3ZhbHVlLCBBcmc6OmltbShpbnZlcnQpLCBib29sUmVzdWx0VG1wKTsKKyAgICAgICAgICAgIGZh
aWxCbG9jay0+YXBwZW5kKEFpcjo6SnVtcCwgbV92YWx1ZSk7CisgICAgICAgICAgICBmYWlsQmxv
Y2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJsb2NrKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKGlzU3Ryb25nICYmIGhhc0ZlbmNlKSB7CisgICAgICAgICAgICBUbXAgdG1wID0gbV9j
b2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPmFwcGVuZChzdG9y
ZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIHZhbHVlUmVz
dWx0VG1wLCBhZGRyZXNzLCB0bXApOworICAgICAgICAgICAgc3Ryb25nRmFpbEJsb2NrLT5hcHBl
bmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8pLCB0bXAsIHRtcCk7CisgICAgICAgICAgICBzdHJvbmdGYWlsQmxvY2stPnNldFN1Y2Nlc3Nv
cnMoZmFpbHVyZSwgcmVsb29wQmxvY2spOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGJv
b2wgYXBwZW5kVm9pZEF0b21pYyhBaXI6Ok9wY29kZSBhdG9taWNPcGNvZGUpCisgICAgeworICAg
ICAgICBpZiAobV91c2VDb3VudHMubnVtVXNlcyhtX3ZhbHVlKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsK
KyAgICAgICAgCisgICAgICAgIGlmIChpc1ZhbGlkRm9ybShhdG9taWNPcGNvZGUsIEFyZzo6SW1t
LCBhZGRyZXNzLmtpbmQoKSkgJiYgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAg
ICAgYXBwZW5kKGF0b21pY09wY29kZSwgaW1tKG1fdmFsdWUtPmNoaWxkKDApKSwgYWRkcmVzcyk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
aWYgKGlzVmFsaWRGb3JtKGF0b21pY09wY29kZSwgQXJnOjpUbXAsIGFkZHJlc3Mua2luZCgpKSkg
eworICAgICAgICAgICAgYXBwZW5kKGF0b21pY09wY29kZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDAp
KSwgYWRkcmVzcyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZEdl
bmVyYWxBdG9taWMoQWlyOjpPcGNvZGUgb3Bjb2RlLCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZp
dHkgPSBOb3RDb21tdXRhdGl2ZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgCisgICAgICAgIEFyZyBhZGRy
ZXNzID0gYWRkcihtX3ZhbHVlKTsKKyAgICAgICAgVG1wIG9sZFZhbHVlID0gbV9jb2RlLm5ld1Rt
cChHUCk7CisgICAgICAgIFRtcCBuZXdWYWx1ZSA9IG9wY29kZSA9PSBBaXI6Ok5vcCA/IHRtcChh
dG9taWMtPmNoaWxkKDApKSA6IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAKKyAgICAgICAg
Ly8gV2UgbmVlZCBhIENBUyBsb29wIG9yIGEgTEwvU0MgbG9vcC4gVXNpbmcgcHJlcGFyZS9hdHRl
bXB0IGphcmdvbiwgd2Ugd2FudDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQmxvY2sgI3JlbG9v
cDoKKyAgICAgICAgLy8gICAgIFByZXBhcmUKKyAgICAgICAgLy8gICAgIG9wY29kZQorICAgICAg
ICAvLyAgICAgQXR0ZW1wdAorICAgICAgICAvLyAgIFN1Y2Nlc3NvcnM6IFRoZW46I2RvbmUsIEVs
c2U6I3JlbG9vcAorICAgICAgICAvLyBCbG9jayAjZG9uZToKKyAgICAgICAgLy8gICAgIE1vdmUg
b2xkVmFsdWUsIHJlc3VsdAorICAgICAgICAKKyAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9y
VHlwZShhdG9taWMtPnR5cGUoKSksIG9sZFZhbHVlLCB0bXAoYXRvbWljKSk7CisgICAgICAgIAor
ICAgICAgICBBaXI6OkJhc2ljQmxvY2sqIHJlbG9vcEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAg
ICAgQWlyOjpCYXNpY0Jsb2NrKiBiZWdpbkJsb2NrOworICAgICAgICBBaXI6OkJhc2ljQmxvY2sq
IGRvbmVCbG9jazsKKyAgICAgICAgc3BsaXRCbG9jayhiZWdpbkJsb2NrLCBkb25lQmxvY2spOwor
ICAgICAgICAKKyAgICAgICAgYXBwZW5kKEFpcjo6SnVtcCk7CisgICAgICAgIGJlZ2luQmxvY2st
PnNldFN1Y2Nlc3NvcnMocmVsb29wQmxvY2spOworICAgICAgICAKKyAgICAgICAgQWlyOjpPcGNv
ZGUgcHJlcGFyZU9wY29kZTsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIHN3
aXRjaCAoYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSB7CisgICAgICAgICAgICBjYXNlIFdpZHRoODoK
KyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDhTaWduZWRFeHRlbmRUbzMyOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAg
ICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDMyOgorICAgICAgICAgICAg
ICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlMzI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9IE1v
dmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOworICAgICAgICAgICAg
cHJlcGFyZU9wY29kZSA9IGxvYWRMaW5rT3Bjb2RlKGF0b21pYy0+YWNjZXNzV2lkdGgoKSwgYXRv
bWljLT5oYXNGZW5jZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5k
KHByZXBhcmVPcGNvZGUsIG1fdmFsdWUsIGFkZHJlc3MsIG9sZFZhbHVlKTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChvcGNvZGUgIT0gQWlyOjpOb3ApIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJ
ZiB3ZSBldmVyIGhhdmUgdG8gd3JpdGUgdGhpcyBhZ2Fpbiwgd2UgbmVlZCB0byBmaW5kIGEgd2F5
IHRvIHNoYXJlIHRoZSBjb2RlIHdpdGgKKyAgICAgICAgICAgIC8vIGFwcGVuZEJpbk9wLgorICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTI0
OQorICAgICAgICAgICAgaWYgKGNvbW11dGF0aXZpdHkgPT0gQ29tbXV0YXRpdmUgJiYgaW1tKGF0
b21pYy0+Y2hpbGQoMCkpICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpJbW0sIEFyZzo6VG1w
LCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChvcGNvZGUs
IG1fdmFsdWUsIGltbShhdG9taWMtPmNoaWxkKDApKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShv
cGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJl
bG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBvbGRWYWx1ZSwgaW1tKGF0b21pYy0+
Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChjb21tdXRhdGl2aXR5
ID09IENvbW11dGF0aXZlICYmIGJpdEltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9y
bShvcGNvZGUsIEFyZzo6Qml0SW1tLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAg
ICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBiaXRJbW0oYXRvbWljLT5j
aGlsZCgwKSksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChpc1Zh
bGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAg
ICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBvbGRWYWx1ZSwgdG1w
KGF0b21pYy0+Y2hpbGQoMCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMt
PnR5cGUoKSksIG1fdmFsdWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAg
aWYgKGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6SW1t
LCBBcmc6OlRtcCkpCisgICAgICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bj
b2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQob3Bj
b2RlLCBtX3ZhbHVlLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIG5ld1ZhbHVlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBB
aXI6Ok9wY29kZSBjYXNPcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEJyYW5jaEF0b21pY1N0cm9u
Z0NBUywgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5h
cHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgbV92YWx1ZSwgb2xkVmFs
dWUsIG1fZWF4KTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoY2FzT3Bjb2RlLCBt
X3ZhbHVlLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OlN1Y2Nlc3MpLCBtX2VheCwg
bmV3VmFsdWUsIGFkZHJlc3MpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaXNBUk02NCgpKTsKKyAgICAgICAgICAgIFRtcCBib29sUmVzdWx0ID0gbV9jb2Rl
Lm5ld1RtcChHUCk7CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHN0b3JlQ29uZE9w
Y29kZShhdG9taWMtPmFjY2Vzc1dpZHRoKCksIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUs
IG5ld1ZhbHVlLCBhZGRyZXNzLCBib29sUmVzdWx0KTsKKyAgICAgICAgICAgIHJlbG9vcEJsb2Nr
LT5hcHBlbmQoQnJhbmNoVGVzdDMyLCBtX3ZhbHVlLCBBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8pLCBib29sUmVzdWx0LCBib29sUmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBy
ZWxvb3BCbG9jay0+c2V0U3VjY2Vzc29ycyhkb25lQmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICB9
CisgICAgCiAgICAgdm9pZCBsb3dlcigpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUt
Pm9wY29kZSgpKSB7CkBAIC0xOTcwLDMwICsyMzgyLDUwIEBAIHByaXZhdGU6CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0
cmFwcGluZ0luc3QobV92YWx1ZSwgbW92ZUZvclR5cGUobV92YWx1ZS0+dHlwZSgpKSwgbV92YWx1
ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBNZW1vcnlWYWx1
ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUgPSBBaXI6Ok9vcHM7CisgICAgICAgICAgICBpZiAobWVtb3J5LT5oYXNG
ZW5jZSgpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChtZW1vcnktPnR5cGUoKSkgeworICAg
ICAgICAgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IExv
YWRBY3EzMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBJbnQ2NDoKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTY0OworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBvcGNvZGUgPSBtb3ZlRm9yVHlwZShtZW1vcnktPnR5cGUoKSk7CisgICAgICAg
ICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkciht
X3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ4UzogewotICAgICAgICAgICAgYXBwZW5k
KHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBMb2FkOFNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOFNp
Z25lZEV4dGVuZFRvMzIgOiBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7CisgICAgICAgICAgICBhcHBl
bmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwg
dG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIExvYWQ4WjogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVl
LCBMb2FkOCwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAg
ICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFz
RmVuY2UoKSA/IExvYWRBY3E4IDogTG9hZDg7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJ
bnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUp
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIExvYWQx
NlM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDE2U2ln
bmVkRXh0ZW5kVG8zMiwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7Cisg
ICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4o
KS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkMTZTaWduZWRF
eHRlbmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNv
ZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZaOiB7Ci0gICAgICAgICAg
ICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIExvYWQxNiwgbV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBt
X3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNiA6IExvYWQx
NjsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3Zh
bHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotCisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBZGQ6IHsKICAgICAgICAg
ICAgIGlmICh0cnlBcHBlbmRMZWEoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDkx
LDcgKzI1MjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmlzQ2hpbGwo
KSkKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwogICAgICAgICAg
ICAgaWYgKGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAg
ICAgIGxvd2VyWDg2RGl2KERpdik7CisgICAgICAgICAgICAgICAgYXBwZW5kWDg2RGl2KERpdik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNT
RVJUKCFpc1g4NigpIHx8IGlzRmxvYXQobV92YWx1ZS0+dHlwZSgpKSk7CkBAIC0yMTAyLDcgKzI1
MzQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgVURpdjogewogICAgICAgICAgICAgaWYg
KGlzSW50KG1fdmFsdWUtPnR5cGUoKSkgJiYgaXNYODYoKSkgewotICAgICAgICAgICAgICAgIGxv
d2VyWDg2VURpdihVRGl2KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRYODZVRGl2KFVEaXYpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMjExNiwxMyArMjU0
OCwxMyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE1vZDogewogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaXNYODYoKSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV92YWx1ZS0+
aXNDaGlsbCgpKTsKLSAgICAgICAgICAgIGxvd2VyWDg2RGl2KE1vZCk7CisgICAgICAgICAgICBh
cHBlbmRYODZEaXYoTW9kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAg
ICAgIGNhc2UgVU1vZDogewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7Ci0g
ICAgICAgICAgICBsb3dlclg4NlVEaXYoVU1vZCk7CisgICAgICAgICAgICBhcHBlbmRYODZVRGl2
KFVNb2QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxNjEsMTAgKzI1
OTMsMjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPE5vdDMyLCBOb3Q2
ND4obV92YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVGhpcyBwYXR0ZXJuIGlzIHN1cGVy
IHVzZWZ1bCBvbiBib3RoIHg4NiBhbmQgQVJNNjQsIHNpbmNlIHRoZSBpbnZlcnNpb24gb2YgdGhl
IENBUyByZXN1bHQKKyAgICAgICAgICAgIC8vIGNhbiBiZSBkb25lIHdpdGggemVybyBjb3N0IG9u
IHg4NiAoanVzdCBmbGlwIHRoZSBzZXQgZnJvbSBFIHRvIE5FKSBhbmQgaXQncyBhIHByb2dyZXNz
aW9uCisgICAgICAgICAgICAvLyBvbiBBUk02NCAoc2luY2UgU1RYIHJldHVybnMgMCBvbiBzdWNj
ZXNzLCBzbyBvcmRpbmFyaWx5IHdlIGhhdmUgdG8gZmxpcCBpdCkuCisgICAgICAgICAgICBpZiAo
bV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDEpCisgICAgICAgICAgICAgICAgJiYgaXNBdG9taWND
QVMobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAgICYmIGNhbkJl
SW50ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgY29tbWl0SW50
ZXJuYWwobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVuZENBUyhtX3Zh
bHVlLT5jaGlsZCgwKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxYb3IzMiwgWG9yNjQs
IFhvckRvdWJsZSwgWG9yRmxvYXQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3Zh
bHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEZXBlbmQ6IHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAgICBhcHBlbmRVbk9wPERl
cGVuZDMyLCBEZXBlbmQ2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTaGw6IHsKICAgICAgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgxKS0+aXNJbnQzMigxKSkgewpAQCAtMjI2NSw3ICsyNzE1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVu
ZFN0b3JlKHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmRT
dG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC0yMjg2LDcgKzI3MzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAg
YXBwZW5kU3RvcmUoQWlyOjpTdG9yZTgsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3ZhbHVlKSk7Cisg
ICAgICAgICAgICBhcHBlbmRTdG9yZShtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMzA3LDcgKzI3NTcsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYXBwZW5kU3RvcmUoQWlyOjpTdG9yZTE2LCB2YWx1ZVRvU3RvcmUs
IGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkciht
X3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjQxNSw3ICsy
ODY1LDI3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEVxdWFsOgotICAg
ICAgICBjYXNlIE5vdEVxdWFsOgorICAgICAgICBjYXNlIE5vdEVxdWFsOiB7CisgICAgICAgICAg
ICAvLyBGSVhNRTogVGVhY2ggdGhpcyB0byBtYXRjaCBwYXR0ZXJucyB0aGF0IGFyaXNlIGZyb20g
c3Vid2lkdGggQ0FTLiBUaGUgQ0FTJ3MgcmVzdWx0IGhhcyB0bworICAgICAgICAgICAgLy8gYmUg
ZWl0aGVyIHplcm8tIG9yIHNpZ24tZXh0ZW5kZWQsIGFuZCB0aGUgdmFsdWUgaXQncyBjb21wYXJl
ZCB0byBzaG91bGQgYWxzbyBiZSB6ZXJvLSBvcgorICAgICAgICAgICAgLy8gc2lnbi1leHRlbmRl
ZCBpbiBhIG1hdGNoaW5nIHdheS4gSXQncyBub3Qgc3VwZXIgY2xlYXIgdGhhdCB0aGlzIGlzIHZl
cnkgcHJvZml0YWJsZS4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjkyNTAKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+
b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTCisgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+
Y2hpbGQoMCktPmFzPEF0b21pY1ZhbHVlPigpLT5pc0Nhbm9uaWNhbFdpZHRoKCkKKyAgICAgICAg
ICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCkgPT0gbV92YWx1ZS0+Y2hpbGQo
MSkKKyAgICAgICAgICAgICAgICAmJiBjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkg
eworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMobV92YWx1ZS0+Y2hp
bGQoMCktPmNoaWxkKDEpKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250
YWlucyhtX3ZhbHVlLT5jaGlsZCgxKSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBh
cHBlbmRDQVMobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPm9wY29kZSgpID09IE5vdEVxdWFs
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoY3JlYXRlQ29tcGFyZShtX3Zh
bHVlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIExlc3NUaGFuOgogICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuOgogICAgICAgICBj
YXNlIExlc3NFcXVhbDoKQEAgLTI0NDAsNiArMjkxMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgY29uZmlnLm1vdmVDb25kaXRpb25hbGx5RmxvYXQgPSBNb3ZlQ29uZGl0aW9uYWxseUZs
b2F0OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogaXQn
cyBub3Qgb2J2aW91cyB0aGF0IHRoZXNlIGFyZSBwYXJ0aWN1bGFybHkgZWZmaWNpZW50LgorICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjkyNTEKICAgICAgICAgICAgICAgICBjb25maWcubW92ZUNvbmRpdGlvbmFsbHkzMiA9IE1vdmVE
b3VibGVDb25kaXRpb25hbGx5MzI7CiAgICAgICAgICAgICAgICAgY29uZmlnLm1vdmVDb25kaXRp
b25hbGx5NjQgPSBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTY0OwogICAgICAgICAgICAgICAgIGNv
bmZpZy5tb3ZlQ29uZGl0aW9uYWxseVRlc3QzMiA9IE1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVz
dDMyOwpAQCAtMjcyNiw2ICszMTk3LDQ2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIEJyYW5jaDogeworICAgICAgICAgICAgaWYgKGNhbkJlSW50ZXJuYWwobV92YWx1ZS0+
Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIGJyYW5jaENoaWxkID0gbV92YWx1
ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChicmFuY2hDaGlsZC0+b3Bjb2Rl
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAg
YXBwZW5kQ0FTKGJyYW5jaENoaWxkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJv
bmdDQVM6CisgICAgICAgICAgICAgICAgICAgIC8vIEEgYnJhbmNoIGlzIGEgY29tcGFyaXNvbiB0
byB6ZXJvLgorICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGVhY2ggdGhpcyB0byBtYXRj
aCBwYXR0ZXJucyB0aGF0IGFyaXNlIGZyb20gc3Vid2lkdGggQ0FTLgorICAgICAgICAgICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MjUwCisg
ICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPmlzSW50KDApCisg
ICAgICAgICAgICAgICAgICAgICAgICAmJiBicmFuY2hDaGlsZC0+YXM8QXRvbWljVmFsdWU+KCkt
PmlzQ2Fub25pY2FsV2lkdGgoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50
ZXJuYWwoYnJhbmNoQ2hpbGQpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKGJy
YW5jaENoaWxkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBFcXVhbDoKKyAgICAgICAgICAgICAgICBj
YXNlIE5vdEVxdWFsOgorICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGVhY2ggdGhpcyB0
byBtYXRjaCBwYXR0ZXJucyB0aGF0IGFyaXNlIGZyb20gc3Vid2lkdGggQ0FTLgorICAgICAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MjUwCisgICAgICAgICAgICAgICAgICAgIGlmIChicmFuY2hDaGlsZC0+Y2hpbGQoMCktPm9wY29k
ZSgpID09IEF0b21pY1N0cm9uZ0NBUworICAgICAgICAgICAgICAgICAgICAgICAgJiYgYnJhbmNo
Q2hpbGQtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+aXNDYW5vbmljYWxXaWR0aCgpCisg
ICAgICAgICAgICAgICAgICAgICAgICAmJiBjYW5CZUludGVybmFsKGJyYW5jaENoaWxkLT5jaGls
ZCgwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+
Y2hpbGQoMCkgPT0gYnJhbmNoQ2hpbGQtPmNoaWxkKDEpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb21taXRJbnRlcm5hbChicmFuY2hDaGlsZCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb21taXRJbnRlcm5hbChicmFuY2hDaGlsZC0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kQ0FTKGJyYW5jaENoaWxkLT5jaGlsZCgwKSwgYnJhbmNoQ2hpbGQtPm9w
Y29kZSgpID09IE5vdEVxdWFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoY3JlYXRlQnJhbmNoKG1fdmFsdWUt
PmNoaWxkKDApKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI3ODMsNyAr
MzI5NCw4MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYXBwZW5kKEFpcjo6RW50cnlTd2l0Y2gp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzogeworICAg
ICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FkZDogewor
ICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVl
PigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BDT0RFX0ZPUl9XSURUSChB
dG9taWNBZGQsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKGF0b21pYyk7
CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVfRk9SX1dJRFRIKEF0b21p
Y1hjaGdBZGQsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxp
ZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAgICAgICAg
ICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIHRtcChhdG9taWMt
PmNoaWxkKDApKSwgdG1wKGF0b21pYykpOworICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUs
IHRtcChhdG9taWMpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5P
TklDQUxfV0lEVEgoQWRkLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpLCBDb21tdXRhdGl2ZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdT
dWI6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9t
aWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1Jf
V0lEVEgoQXRvbWljU3ViLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMo
T1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgoU3ViLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNh
c2UgQXRvbWljWGNoZ0FuZDogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1f
dmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9t
aWMoT1BDT0RFX0ZPUl9XSURUSChBdG9taWNBbmQsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5k
R2VuZXJhbEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChBbmQsIGF0b21pYy0+YWNj
ZXNzV2lkdGgoKSksIENvbW11dGF0aXZlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOiB7CisgICAgICAgICAg
ICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAg
ICAgICAgICBpZiAoYXBwZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY09yLCBh
dG9taWMtPmFjY2Vzc1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklD
QUxfV0lEVEgoT3IsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSksIENvbW11dGF0aXZlKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRv
bWljWGNoZ1hvcjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUt
PmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BD
T0RFX0ZPUl9XSURUSChBdG9taWNYb3IsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXBwZW5kR2VuZXJh
bEF0b21pYyhPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChYb3IsIGF0b21pYy0+YWNjZXNzV2lk
dGgoKSksIENvbW11dGF0aXZlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljWGNoZzogeworICAgICAgICAgICAgQXRvbWlj
VmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIoYXRvbWljKTsKKyAgICAgICAgICAgIEFp
cjo6T3Bjb2RlIG9wY29kZSA9IE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWGNoZywgYXRvbWljLT5h
Y2Nlc3NXaWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6
VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1v
dmVGb3JUeXBlKGF0b21pYy0+dHlwZSgpKSwgdG1wKGF0b21pYy0+Y2hpbGQoMCkpLCB0bXAoYXRv
bWljKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKGF0b21pYyksIGFkZHJl
c3MpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgYXBwZW5kR2VuZXJhbEF0b21pYyhBaXI6Ok5vcCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI3OTEsNjQgKzMzNzYsNyBAQCBwcml2YXRl
OgogICAgICAgICBkYXRhTG9nKCJGQVRBTDogY291bGQgbm90IGxvd2VyICIsIGRlZXBEdW1wKG1f
cHJvY2VkdXJlLCBtX3ZhbHVlKSwgIlxuIik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQotCi0gICAgdm9pZCBsb3dlclg4NkRpdihCMzo6T3Bjb2RlIG9wKQot
ICAgIHsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAgICAgICBUbXAgZWF4ID0gVG1w
KFg4NlJlZ2lzdGVyczo6ZWF4KTsKLSAgICAgICAgVG1wIGVkeCA9IFRtcChYODZSZWdpc3RlcnM6
OmVkeCk7Ci0KLSAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29yZDsKLSAgICAg
ICAgQWlyOjpPcGNvZGUgZGl2OwotICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5cGUoKSkgewot
ICAgICAgICBjYXNlIEludDMyOgotICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4
NkNvbnZlcnRUb0RvdWJsZVdvcmQzMjsKLSAgICAgICAgICAgIGRpdiA9IFg4NkRpdjMyOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50NjQ6Ci0gICAgICAgICAgICBjb252ZXJ0
VG9Eb3VibGVXb3JkID0gWDg2Q29udmVydFRvUXVhZFdvcmQ2NDsKLSAgICAgICAgICAgIGRpdiA9
IFg4NkRpdjY0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IERpdiB8fCBvcCA9PSBNb2QpOwotICAg
ICAgICBYODZSZWdpc3RlcnM6OlJlZ2lzdGVySUQgcmVzdWx0ID0gb3AgPT0gRGl2ID8gWDg2UmVn
aXN0ZXJzOjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAgICAgICBhcHBlbmQoTW92ZSwg
dG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0Rv
dWJsZVdvcmQsIGVheCwgZWR4KTsKLSAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcCht
X3ZhbHVlLT5jaGlsZCgxKSkpOwotICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRt
cChtX3ZhbHVlKSk7Ci0KLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgICAg
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlmCi0gICAgfQotCi0gICAgdm9pZCBs
b3dlclg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4
Nl82NCkKLSAgICAgICAgVG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAg
IFRtcCBlZHggPSBUbXAoWDg2UmVnaXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2Rl
IGRpdiA9IG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsK
LQotICAgICAgICBBU1NFUlQob3AgPT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKLSAgICAgICAgWDg2
UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJlc3VsdCA9IG9wID09IFVEaXYgPyBYODZSZWdpc3RlcnM6
OmVheCA6IFg4NlJlZ2lzdGVyczo6ZWR4OwotCi0gICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92
YWx1ZS0+Y2hpbGQoMCkpLCBlYXgpOwotICAgICAgICBhcHBlbmQoWG9yNjQsIGVkeCwgZWR4KTsK
LSAgICAgICAgYXBwZW5kKGRpdiwgZWF4LCBlZHgsIHRtcChtX3ZhbHVlLT5jaGlsZCgxKSkpOwot
ICAgICAgICBhcHBlbmQoTW92ZSwgVG1wKHJlc3VsdCksIHRtcChtX3ZhbHVlKSk7Ci0jZWxzZQot
ICAgICAgICBVTlVTRURfUEFSQU0ob3ApOwotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKLSNlbmRpZgotICAgIH0KLQorICAgIAogICAgIEluZGV4U2V0PFZhbHVlPiBtX2xvY2tl
ZDsgLy8gVGhlc2UgYXJlIHZhbHVlcyB0aGF0IHdpbGwgaGF2ZSBubyBUbXAgaW4gQWlyLgogICAg
IEluZGV4TWFwPFZhbHVlLCBUbXA+IG1fdmFsdWVUb1RtcDsgLy8gVGhlc2UgYXJlIHZhbHVlcyB0
aGF0IG11c3QgaGF2ZSBhIFRtcCBpbiBBaXIuIFdlIHNheSB0aGF0IGEgVmFsdWUqIHdpdGggYSBu
b24tbnVsbCBUbXAgaXMgInBpbm5lZCIuCiAgICAgSW5kZXhNYXA8VmFsdWUsIFRtcD4gbV9waGlU
b1RtcDsgLy8gRWFjaCBQaGkgZ2V0cyBpdHMgb3duIFRtcC4KQEAgLTI4NjMsNyArMzM5MSw3IEBA
IHByaXZhdGU6CiAKICAgICBWZWN0b3I8VmVjdG9yPEluc3QsIDQ+PiBtX2luc3RzOwogICAgIFZl
Y3RvcjxJbnN0PiBtX3Byb2xvZ3VlOwotCisgICAgCiAgICAgQjM6OkJhc2ljQmxvY2sqIG1fYmxv
Y2s7CiAgICAgYm9vbCBtX2lzUmFyZTsKICAgICB1bnNpZ25lZCBtX2luZGV4OwpAQCAtMjg3NCw2
ICszNDAyLDEyIEBAIHByaXZhdGU6CiAKICAgICBQcm9jZWR1cmUmIG1fcHJvY2VkdXJlOwogICAg
IENvZGUmIG1fY29kZTsKKworICAgIEFpcjo6QmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2Vy
dGlvblNldDsKKworICAgIFRtcCBtX2VheDsKKyAgICBUbXAgbV9lY3g7CisgICAgVG1wIG1fZWR4
OwogfTsKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5oCShyZXZpc2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3ICszMiw4
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogY2xhc3MgUHJvY2VkdXJlOwogbmFt
ZXNwYWNlIEFpciB7IGNsYXNzIENvZGU7IH0KIAotLy8gVGhpcyBsb3dlcnMgdGhlIGN1cnJlbnQg
QjMgcHJvY2VkdXJlIHRvIGFuIEFpciBjb2RlLgorLy8gVGhpcyBsb3dlcnMgdGhlIGN1cnJlbnQg
QjMgcHJvY2VkdXJlIHRvIGFuIEFpciBjb2RlLiBOb3RlIHRoYXQgdGhpcyBhc3N1bWVzIHRoYXQg
dGhlIHByb2NlZHVyZSBpcyBpbgorLy8gcXVpcmtzIG1vZGUsIGJ1dCBpdCBkb2VzIG5vdCBhc3Nl
cnQgdGhpcywgdG8gc2ltcGxpZnkgaG93IHdlIHdyaXRlIHRlc3RzLgogCiBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGxvd2VyVG9BaXIoUHJvY2VkdXJlJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgsMzYgKzI4LDM3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNBdG9t
aWNWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
QjNWYWx1ZUlubGluZXMuaCIKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIE1l
bW9yeVZhbHVlOjp+TWVtb3J5VmFsdWUoKQogewogfQogCi1zaXplX3QgTWVtb3J5VmFsdWU6OmFj
Y2Vzc0J5dGVTaXplKCkgY29uc3QKK2Jvb2wgTWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXQoaW50
NjRfdCBvZmZzZXQpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChvcGNvZGUoKSkgewotICAgIGNhc2Ug
TG9hZDhaOgotICAgIGNhc2UgTG9hZDhTOgotICAgIGNhc2UgU3RvcmU4OgotICAgICAgICByZXR1
cm4gMTsKLSAgICBjYXNlIExvYWQxNlo6Ci0gICAgY2FzZSBMb2FkMTZTOgotICAgIGNhc2UgU3Rv
cmUxNjoKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAgY2FzZSBMb2FkOgotICAgICAgICByZXR1cm4g
c2l6ZW9mVHlwZSh0eXBlKCkpOwotICAgIGNhc2UgU3RvcmU6Ci0gICAgICAgIHJldHVybiBzaXpl
b2ZUeXBlKGNoaWxkKDApLT50eXBlKCkpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICByZXR1
cm4gQjM6OmlzUmVwcmVzZW50YWJsZUFzPGludDMyX3Q+KG9mZnNldCkgJiYgaXNMZWdhbE9mZnNl
dChzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpKTsKK30KKworVHlwZSBNZW1vcnlWYWx1ZTo6
YWNjZXNzVHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzTG9hZCgpKQorICAgICAgICByZXR1cm4g
dHlwZSgpOworICAgIC8vIFRoaXMgaGFwcGVucyB0byB3b3JrIGZvciBhdG9taWNzLCB0b28uIFRo
YXQncyB3aHkgQXRvbWljVmFsdWUgZG9lcyBub3QgbmVlZCB0byBvdmVycmlkZSB0aGlzLgorICAg
IHJldHVybiBjaGlsZCgwKS0+dHlwZSgpOwogfQogCi1XaWR0aCBNZW1vcnlWYWx1ZTo6YWNjZXNz
V2lkdGgoKSBjb25zdAorQmFuayBNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuaygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHdpZHRoRm9yQnl0ZXMoYWNjZXNzQnl0ZVNpemUoKSk7CisgICAgcmV0dXJuIGJh
bmtGb3JUeXBlKGFjY2Vzc1R5cGUoKSk7Cit9CisKK3NpemVfdCBNZW1vcnlWYWx1ZTo6YWNjZXNz
Qnl0ZVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBieXRlcyhhY2Nlc3NXaWR0aCgpKTsKIH0K
IAogdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKQEAgLTY1LDggKzY2LDExIEBAIHZvaWQgTWVtb3J5VmFsdWU6OmR1
bXBNZXRhKENvbW1hUHJpbnRlciYKICAgICBpZiAobV9vZmZzZXQpCiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIm9mZnNldCA9ICIsIG1fb2Zmc2V0KTsKICAgICBpZiAoKGlzTG9hZCgpICYmIGVm
ZmVjdHMoKS5yZWFkcyAhPSByYW5nZSgpKQotICAgICAgICB8fCAoaXNTdG9yZSgpICYmIGVmZmVj
dHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkpCisgICAgICAgIHx8IChpc1N0b3JlKCkgJiYgZWZmZWN0
cygpLndyaXRlcyAhPSByYW5nZSgpKQorICAgICAgICB8fCBpc0V4b3RpYygpKQogICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJyYW5nZSA9ICIsIHJhbmdlKCkpOworICAgIGlmIChpc0V4b3RpYygp
KQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJmZW5jZVJhbmdlID0gIiwgZmVuY2VSYW5nZSgp
KTsKIH0KIAogVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdApAQCAtNzQsNiAr
NzgsNjIgQEAgVmFsdWUqIE1lbW9yeVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAogICAgIHJldHVy
biBuZXcgTWVtb3J5VmFsdWUoKnRoaXMpOwogfQogCisvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2Fk
IChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBh
IHN1ZmZpeCB0aGF0CisvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgorTWVtb3J5VmFs
dWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1
ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZl
bmNlUmFuZ2UpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4s
IHBvaW50ZXIpCisgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgLCBtX3JhbmdlKHJhbmdlKQor
ICAgICwgbV9mZW5jZVJhbmdlKGZlbmNlUmFuZ2UpCit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJM
RUQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2UgTG9h
ZDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgY2Fz
ZSBMb2FkOFM6CisgICAgICAgIGNhc2UgTG9hZDE2WjoKKyAgICAgICAgY2FzZSBMb2FkMTZTOgor
ICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU3RvcmU4OgorICAgICAgICBjYXNlIFN0b3JlMTY6CisgICAgICAgIGNhc2Ug
U3RvcmU6CisgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBWb2lkKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJl
IHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtp
bmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBI
ZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIDogTWVtb3J5VmFsdWUo
a2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSkK
K3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQub3Bj
b2RlKCkpIHsKKyAgICAgICAgY2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhTOgorICAg
ICAgICBjYXNlIExvYWQxNlo6CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KK01l
bW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2
YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhl
YXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9p
ZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAs
IG1fcmFuZ2UocmFuZ2UpCisgICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKK3sKKyAgICBB
U1NFUlQoQjM6OmlzU3RvcmUoa2luZC5vcGNvZGUoKSkpOworfQorCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEy
NyArMjcsODggQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJBaXJBcmcuaCIK
KyNpbmNsdWRlICJCM0JhbmsuaCIKICNpbmNsdWRlICJCM0hlYXBSYW5nZS5oIgogI2luY2x1ZGUg
IkIzVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLS8vIEZJWE1F
OiBXZSB3YW50IHRvIGFsbG93IGZlbmNlZCBtZW1vcnkgYWNjZXNzZXMgb24gQVJNLgotLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0OQotCiBjbGFzcyBKU19F
WFBPUlRfUFJJVkFURSBNZW1vcnlWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKGtp
bmQub3Bjb2RlKCkpIHsKLSAgICAgICAgY2FzZSBMb2FkOFo6Ci0gICAgICAgIGNhc2UgTG9hZDhT
OgotICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAg
Y2FzZSBMb2FkOgotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9yZTE2Ogot
ICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBzdGF0aWMgYm9vbCBpc1N0b3JlKEtpbmQga2luZCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAo
a2luZC5vcGNvZGUoKSkgewotICAgICAgICBjYXNlIFN0b3JlODoKLSAgICAgICAgY2FzZSBTdG9y
ZTE2OgotICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBzdGF0aWMgYm9vbCBpc0xvYWQoS2luZCBraW5kKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFjY2VwdHMoa2luZCkgJiYgIWlzU3RvcmUoa2luZCk7CisgICAgICAgIHJldHVybiBpc01l
bW9yeUFjY2VzcyhraW5kLm9wY29kZSgpKTsKICAgICB9CiAKICAgICB+TWVtb3J5VmFsdWUoKTsK
IAogICAgIGludDMyX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICB2
b2lkIHNldE9mZnNldChpbnQzMl90IG9mZnNldCkgeyBtX29mZnNldCA9IG9mZnNldDsgfQorICAg
IAorICAgIC8vIFlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHVzaW5nIGxlZ2FsIG9mZnNl
dHMgdW5sZXNzIHlvdSd2ZSBlbnRlcmVkIHF1aXJrcyBtb2RlLgorICAgIGJvb2wgaXNMZWdhbE9m
ZnNldChpbnQzMl90IG9mZnNldCkgY29uc3Q7CisgICAgYm9vbCBpc0xlZ2FsT2Zmc2V0KGludDY0
X3Qgb2Zmc2V0KSBjb25zdDsKKyAgICAKKyAgICAvLyBBIG5lY2Vzc2FyeSBjb25zZXF1ZW5jZSBv
ZiBNZW1vcnlWYWx1ZSBoYXZpbmcgYW4gb2Zmc2V0IGlzIHRoYXQgaXQgcGFydGljaXBhdGVzIGlu
IGluc3RydWN0aW9uCisgICAgLy8gc2VsZWN0aW9uLiBUaGlzIHRlbGxzIHlvdSBpZiB0aGlzIHdp
bGwgZ2V0IGxvd2VyZWQgdG8gc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgYW4gb2Zmc2V0bGVzcwor
ICAgIC8vIGFkZHJlc3MuCisgICAgYm9vbCByZXF1aXJlc1NpbXBsZUFkZHIoKSBjb25zdDsKIAog
ICAgIGNvbnN0IEhlYXBSYW5nZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CiAg
ICAgdm9pZCBzZXRSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IG1fcmFuZ2UgPSByYW5n
ZTsgfQorICAgIAorICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHJhbmdlLgorICAgIGNvbnN0
IEhlYXBSYW5nZSYgYWNjZXNzUmFuZ2UoKSBjb25zdCB7IHJldHVybiByYW5nZSgpOyB9CisgICAg
dm9pZCBzZXRBY2Nlc3NSYW5nZShjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKSB7IHNldFJhbmdlKHJh
bmdlKTsgfQorICAgIAorICAgIGNvbnN0IEhlYXBSYW5nZSYgZmVuY2VSYW5nZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZmVuY2VSYW5nZTsgfQorICAgIHZvaWQgc2V0RmVuY2VSYW5nZShjb25zdCBIZWFw
UmFuZ2UmIHJhbmdlKSB7IG1fZmVuY2VSYW5nZSA9IHJhbmdlOyB9CisKKyAgICBib29sIGlzU3Rv
cmUoKSBjb25zdCB7IHJldHVybiBCMzo6aXNTdG9yZShvcGNvZGUoKSk7IH0KKyAgICBib29sIGlz
TG9hZCgpIGNvbnN0IHsgcmV0dXJuIEIzOjppc0xvYWQob3Bjb2RlKCkpOyB9CiAKLSAgICBib29s
IGlzU3RvcmUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVm9pZDsgfQotICAgIGJvb2wgaXNM
b2FkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpICE9IFZvaWQ7IH0KKyAgICBib29sIGhhc0ZlbmNl
KCkgY29uc3QgeyByZXR1cm4gISFmZW5jZVJhbmdlKCk7IH0KKyAgICBib29sIGlzRXhvdGljKCkg
Y29uc3QgeyByZXR1cm4gaGFzRmVuY2UoKSB8fCBpc0F0b21pYyhvcGNvZGUoKSk7IH0KIAorICAg
IFR5cGUgYWNjZXNzVHlwZSgpIGNvbnN0OworICAgIEJhbmsgYWNjZXNzQmFuaygpIGNvbnN0Owog
ICAgIHNpemVfdCBhY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0OworICAgIAogICAgIFdpZHRoIGFjY2Vz
c1dpZHRoKCkgY29uc3Q7CiAKKyAgICBib29sIGlzQ2Fub25pY2FsV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBCMzo6aXNDYW5vbmljYWxXaWR0aChhY2Nlc3NXaWR0aCgpKTsgfQorCiBwcm90ZWN0ZWQ6
Ci0gICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJl
YW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZhbHVlKiBjbG9uZUltcGwoKSBjb25zdCBvdmVy
cmlkZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBNZW1vcnlW
YWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdp
biwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2Us
IEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwg
a2luZCwgdHlwZSwgb3JpZ2luLCBhcmd1bWVudHMuLi4pCisgICAgICAgICwgbV9vZmZzZXQob2Zm
c2V0KQorICAgICAgICAsIG1fcmFuZ2UocmFuZ2UpCisgICAgICAgICwgbV9mZW5jZVJhbmdlKGZl
bmNlUmFuZ2UpCisgICAgeworICAgIH0KKyAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFByb2NlZHVyZTsKLQorICAgIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExvYWQgKGJ1dCBu
b3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZlIGEgc3VmZml4
IHRoYXQKICAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgotICAgIE1lbW9yeVZh
bHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwg
aW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQs
IHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKLSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAg
ICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQotICAgIHsKLSAgICAgICAgaWYgKCFBU1NF
UlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewotICAg
ICAgICAgICAgY2FzZSBMb2FkOgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBMb2FkOFo6Ci0gICAgICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgICAgIGNhc2Ug
TG9hZDE2WjoKLSAgICAgICAgICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAgICAgICAgICBBU1NF
UlQodHlwZSA9PSBJbnQzMik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2Ug
U3RvcmU6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gVm9pZCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorICAgIE1l
bW9yeVZhbHVlKEtpbmQsIFR5cGUsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zm
c2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZl
bmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2Fk
cyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KLSAgICBNZW1vcnlWYWx1ZShLaW5k
IGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAp
Ci0gICAgICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zm
c2V0KQotICAgIHsKLSAgICB9CisgICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSog
cG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6
OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKIAogICAgIC8vIFVz
ZSB0aGlzIGZvcm0gZm9yIHN0b3Jlcy4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdp
biBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0g
MCkKLSAgICAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCBWb2lkLCBvcmlnaW4sIHZh
bHVlLCBwb2ludGVyKQotICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAgICAgLCBtX3Jh
bmdlKEhlYXBSYW5nZTo6dG9wKCkpCi0gICAgewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCkgewotICAgICAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgICAgICBj
YXNlIFN0b3JlODoKLSAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2Ug
U3RvcmU6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCisgICAgTWVtb3J5VmFsdWUoS2lu
ZCwgT3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9
IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJh
bmdlID0gSGVhcFJhbmdlKCkpOworICAgIAogICAgIGludDMyX3QgbV9vZmZzZXQgeyAwIH07Ci0g
ICAgSGVhcFJhbmdlIG1fcmFuZ2U7CisgICAgSGVhcFJhbmdlIG1fcmFuZ2UgeyBIZWFwUmFuZ2U6
OnRvcCgpIH07CisgICAgSGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhlYXBSYW5nZSgpIH07CiB9
OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJB
aXJBcmcuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgeworCitpbmxpbmUgYm9vbCBNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldChp
bnQzMl90IG9mZnNldCkgY29uc3QKK3sKKyAgICAvLyBOT1RFOiBUaGlzIGlzIGlubGluZSBiZWNh
dXNlIGl0IGNvbnN0YW50LWZvbGRzIHRvIHRydWUgb24geDg2IQorICAgIAorICAgIC8vIFNvIGZh
ciBvbmx5IFg4NiBhbGxvd3MgZXhvdGljIGxvYWRzIHRvIGhhdmUgYW4gb2Zmc2V0LgorICAgIGlm
IChyZXF1aXJlc1NpbXBsZUFkZHIoKSkKKyAgICAgICAgcmV0dXJuICFvZmZzZXQ7CisgICAgCisg
ICAgcmV0dXJuIEFpcjo6QXJnOjppc1ZhbGlkQWRkckZvcm0ob2Zmc2V0LCBhY2Nlc3NXaWR0aCgp
KTsKK30KKworaW5saW5lIGJvb2wgTWVtb3J5VmFsdWU6OnJlcXVpcmVzU2ltcGxlQWRkcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuICFpc1g4NigpICYmIGlzRXhvdGljKCk7Cit9CisKK2lubGluZSBX
aWR0aCBNZW1vcnlWYWx1ZTo6YWNjZXNzV2lkdGgoKSBjb25zdAoreworICAgIHN3aXRjaCAob3Bj
b2RlKCkpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIFN0
b3JlODoKKyAgICAgICAgcmV0dXJuIFdpZHRoODsKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2Fz
ZSBMb2FkMTZTOgorICAgIGNhc2UgU3RvcmUxNjoKKyAgICAgICAgcmV0dXJuIFdpZHRoMTY7Cisg
ICAgY2FzZSBMb2FkOgorICAgICAgICByZXR1cm4gd2lkdGhGb3JUeXBlKHR5cGUoKSk7CisgICAg
Y2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHdpZHRoRm9yVHlwZShjaGlsZCgwKS0+dHlwZSgp
KTsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6Cisg
ICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNl
IEF0b21pY1hjaGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNY
Y2hnWG9yOgorICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIGFzPEF0b21pY1Zh
bHVlPigpLT5hY2Nlc3NXaWR0aCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXaWR0aDg7CisgICAgfQorfQorCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3BwCShyZXZp
c2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNb3ZlQ29uc3RhbnRz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkIzQmFzaWNC
bG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJCM0lu
c2VydGlvblNldElubGluZXMuaCIKLSNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5jbHVk
ZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNp
bmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5o
IgpAQCAtMjAzLDEyICsyMDMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNhbmRpZGF0ZVBvaW50ZXItPmhhc0ludFB0cigpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cHRyX3Qg
b2Zmc2V0ID0gZGVzaXJlZE9mZnNldChjYW5kaWRhdGVQb2ludGVyKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFCMzo6aXNSZXByZXNlbnRhYmxlQXM8aW50MzJfdD4oc3Rh
dGljX2Nhc3Q8aW50NjRfdD4ob2Zmc2V0KSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBBaXI6OkFyZzo6aXNWYWxpZEFkZHJGb3JtKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoRm9yQnl0ZXMobWVtb3J5VmFsdWUtPmFjY2Vzc0J5
dGVTaXplKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBvZmZz
ZXQgPSBkZXNpcmVkT2Zmc2V0KGNhbmRpZGF0ZVBvaW50ZXIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWVtb3J5VmFsdWUtPmlzTGVnYWxPZmZzZXQob2Zmc2V0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJlc3RQb2ludGVyKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFpdHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFpdHMuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNOYXRpdmVUcmFpdHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJC
M0JhbmsuaCIKKyNpbmNsdWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1dpZHRoLmgiCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0
IE5hdGl2ZVRyYWl0czsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGludDhfdD4g
eworICAgIHR5cGVkZWYgaW50MzJfdCBDYW5vbmljYWxUeXBlOworICAgIHN0YXRpYyBjb25zdCBC
YW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDg7Cisg
ICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgTmF0aXZlVHJhaXRzPHVpbnQ4X3Q+IHsKKyAgICB0eXBlZGVmIGludDMyX3QgQ2Fub25pY2Fs
VHlwZTsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0
IFdpZHRoIHdpZHRoID0gV2lkdGg4OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQz
MjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxpbnQxNl90PiB7CisgICAg
dHlwZWRlZiBpbnQzMl90IENhbm9uaWNhbFR5cGU7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFu
ayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoMTY7CisgICAgc3Rh
dGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0
aXZlVHJhaXRzPHVpbnQxNl90PiB7CisgICAgdHlwZWRlZiBpbnQzMl90IENhbm9uaWNhbFR5cGU7
CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0
aCB3aWR0aCA9IFdpZHRoMTY7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOwor
fTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPGludDMyX3Q+IHsKKyAgICB0eXBl
ZGVmIGludDMyX3QgQ2Fub25pY2FsVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0g
R1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAgICBzdGF0aWMg
Y29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVU
cmFpdHM8dWludDMyX3Q+IHsKKyAgICB0eXBlZGVmIGludDMyX3QgQ2Fub25pY2FsVHlwZTsKKyAg
ICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdp
ZHRoID0gV2lkdGgzMjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8aW50NjRfdD4geworICAgIHR5cGVkZWYg
aW50NjRfdCBDYW5vbmljYWxUeXBlOworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsK
KyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25z
dCBUeXBlIHR5cGUgPSBJbnQ2NDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0
czx1aW50NjRfdD4geworICAgIHR5cGVkZWYgaW50NjRfdCBDYW5vbmljYWxUeXBlOworICAgIHN0
YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGgg
PSBXaWR0aDY0OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQ2NDsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czxmbG9hdD4geworICAgIHR5cGVkZWYgZmxvYXQg
Q2Fub25pY2FsVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gRlA7CisgICAgc3Rh
dGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGgzMjsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0
eXBlID0gRmxvYXQ7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8ZG91Ymxl
PiB7CisgICAgdHlwZWRlZiBkb3VibGUgQ2Fub25pY2FsVHlwZTsKKyAgICBzdGF0aWMgY29uc3Qg
QmFuayBiYW5rID0gRlA7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg2NDsK
KyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gRG91YmxlOworfTsKKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw2ICs2
OCwyMyBAQCBzdGQ6Om9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJlKE9wCiAgICAgfQog
fQogCitPcGNvZGUgc3RvcmVPcGNvZGUoQmFuayBiYW5rLCBXaWR0aCB3aWR0aCkKK3sKKyAgICBz
d2l0Y2ggKGJhbmspIHsKKyAgICBjYXNlIEdQOgorICAgICAgICBzd2l0Y2ggKHdpZHRoKSB7Cisg
ICAgICAgIGNhc2UgV2lkdGg4OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlODsKKyAgICAgICAg
Y2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlMTY7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgICAgIH0KKyAgICBjYXNlIEZQOgor
ICAgICAgICByZXR1cm4gU3RvcmU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0yNjMsNiArMjgwLDMzIEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGMKICAgICBjYXNlIFN0b3JlOgogICAgICAgICBvdXQu
cHJpbnQoIlN0b3JlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6
CisgICAgICAgIG91dC5wcmludCgiQXRvbWljV2Vha0NBUyIpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIG91dC5wcmludCgiQXRvbWljU3Ryb25n
Q0FTIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAg
IG91dC5wcmludCgiQXRvbWljWGNoZ0FkZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
dG9taWNYY2hnQW5kOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdBbmQiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgICAgICBvdXQucHJpbnQoIkF0
b21pY1hjaGdPciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgor
ICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdTdWIiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnWG9yIik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIG91dC5wcmlu
dCgiQXRvbWljWGNoZyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEZXBlbmQ6CisgICAg
ICAgIG91dC5wcmludCgiRGVwZW5kIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFdhc21B
ZGRyZXNzOgogICAgICAgICBvdXQucHJpbnQoIldhc21BZGRyZXNzIik7CiAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAyMTM0OTIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNUeXBl
LmgiCisjaW5jbHVkZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtODIsNyArODMsNiBAQCBlbnVtIE9wY29k
ZSA6IGludDE2X3QgewogICAgIE1vZCwgLy8gQWxsIGJldHMgYXJlIG9mZiBhcyB0byB3aGF0IHdp
bGwgaGFwcGVuIHdoZW4geW91IGV4ZWN1dGUgdGhpcyBmb3IgLTJeMzElLTEgYW5kIHglMC4KICAg
ICBVTW9kLAogCi0KICAgICAvLyBQb2x5bW9ycGhpYyBuZWdhdGlvbi4gTm90ZSB0aGF0IHdlIG9u
bHkgbmVlZCB0aGlzIGZvciBmbG9hdGluZyBwb2ludCwgc2luY2UgaW50ZWdlciBuZWdhdGlvbgog
ICAgIC8vIGlzIGV4YWN0bHkgbGlrZSBTdWIoMCwgeCkuIEJ1dCB0aGF0J3Mgbm90IHRydWUgZm9y
IGZsb2F0aW5nIHBvaW50LiBTdWIoMCwgMCkgaXMgMCwgd2hpbGUKICAgICAvLyBOZWcoMCkgaXMg
LTAuIEFsc28sIHdlIGNhbm9uaWNhbGl6ZSBTdWIoMCwgeCkgaW50byBOZWcoeCkgaW4gY2FzZSBv
ZiBpbnRlZ2Vycy4KQEAgLTE2Miw2ICsxNjIsMTEwIEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7
CiAgICAgU3RvcmUxNiwKICAgICAvLyBUaGlzIGlzIGEgcG9seW1vcnBoaWMgc3RvcmUgZm9yIElu
dDMyLCBJbnQ2NCwgRmxvYXQsIGFuZCBEb3VibGUuCiAgICAgU3RvcmUsCisgICAgCisgICAgLy8g
QXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIGEgYm9vbGVhbi4gTWF5IGNob29z
ZSB0byBkbyBub3RoaW5nIGFuZCByZXR1cm4gZmFsc2UuIFlvdSBjYW4KKyAgICAvLyB1c3VhbGx5
IGFzc3VtZSB0aGF0IHRoaXMgaXMgZmFzdGVyIGFuZCByZXN1bHRzIGluIGxlc3MgY29kZSB0aGFu
IEF0b21pY1N0cm9uZ0NBUywgdGhvdWdoIHRoYXQncworICAgIC8vIG5vdCBuZWNlc3NhcmlseSB0
cnVlIG9uIEludGVsLCBpZiBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gZG9lcyBpdHMgam9iLiBJbWFn
aW5lIHRoYXQgdGhpcyBvcGNvZGUgaXMKKyAgICAvLyBhcyBpZiB5b3UgZGlkIHRoaXMgYXRvbWlj
YWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgLy8gYm9vbCBB
dG9taWNXZWFrQ0FTKFQgZXhwZWN0ZWRWYWx1ZSwgVCBuZXdWYWx1ZSwgVCogcHRyKQorICAgIC8v
IHsKKyAgICAvLyAgICAgaWYgKCFyYW5kKCkpCisgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7
IC8vIFJlYWwgd29ybGQgZXhhbXBsZSBvZiB0aGlzOiBjb250ZXh0IHN3aXRjaCBvbiBBUk0gd2hp
bGUgZG9pbmcgQ0FTLgorICAgIC8vICAgICBpZiAoKnB0ciAhPSBleHBlY3RlZFZhbHVlKQorICAg
IC8vICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vICAgICAqcHRyID0gbmV3VmFsdWU7Cisg
ICAgLy8gICAgIHJldHVybiB0cnVlOworICAgIC8vIH0KKyAgICAvLworICAgIC8vIE5vdGUgdGhh
dCBhbGwgYXRvbWljcyBwdXQgdGhlIHBvaW50ZXIgbGFzdCB0byBiZSBjb25zaXN0ZW50IHdpdGgg
aG93IGxvYWRzIGFuZCBzdG9yZXMgd29yay4gVGhpcworICAgIC8vIGlzIGEgZ29vZnkgdHJhZGl0
aW9uLCBidXQgaXQncyBoYXJtbGVzcywgYW5kIGJldHRlciB0aGFuIGJlaW5nIGluY29uc2lzdGVu
dC4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCB3ZWFrIENBUyBoYXMgbm8gZmVuY2luZyBndWFy
YW50ZWVzIHdoZW4gaXQgZmFpbHMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nCisgICAg
Ly8gdHJhbnNmb3JtYXRpb24gaXMgYWx3YXlzIHZhbGlkOgorICAgIC8vCisgICAgLy8gQmVmb3Jl
OgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFuY2goQXRvbWljV2Vha0NBUyhleHBlY3RlZCwg
bmV3LCBwdHIpKQorICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I3N1Y2Nlc3MsIEVsc2U6
I2ZhaWwKKyAgICAvLworICAgIC8vIEFmdGVyOgorICAgIC8vCisgICAgLy8gICAgICAgICBCcmFu
Y2goRXF1YWwoTG9hZChwdHIpLCBleHBlY3RlZCkpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczog
VGhlbjojYXR0ZW1wdCwgRWxzZTojZmFpbAorICAgIC8vICAgICBCQiNhdHRlbXB0OgorICAgIC8v
ICAgICAgICAgQnJhbmNoKEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAv
LyAgICAgICBTdWNjZXNzb3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAg
ICAvLyBCb3RoIGtpbmRzIG9mIENBUyBmb3Igbm9uLWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBh
bmQgV2lkdGgxNikgaWdub3JlIHRoZSBpcnJlbGV2YW50IGJpdHMgb2YgdGhlCisgICAgLy8gaW5w
dXQuCisgICAgQXRvbWljV2Vha0NBUywKKyAgICAKKyAgICAvLyBBdG9taWMgY29tcGFyZSBhbmQg
c3dhcCB0aGF0IHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gRG9lcyBub3QgaGF2ZSB0aGUgbm9uZGV0
ZXJtaW5pc20gb2YgV2Vha0NBUy4KKyAgICAvLyBUaGlzIGlzIGEgYml0IG1vcmUgY29kZSBhbmQg
YSBiaXQgc2xvd2VyIGluIHNvbWUgY2FzZXMsIHRob3VnaCBub3QgYnkgYSBsb3QuIEltYWdpbmUg
dGhhdCB0aGlzCisgICAgLy8gb3Bjb2RlIGlzIGFzIGlmIHlvdSBkaWQgdGhpcyBhdG9taWNhbGx5
OgorICAgIC8vCisgICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICAvLyBUIEF0b21pY1N0
cm9uZ0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7Cisg
ICAgLy8gICAgIFQgb2xkVmFsdWUgPSAqcHRyOworICAgIC8vICAgICBpZiAob2xkVmFsdWUgPT0g
ZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgICpwdHIgPSBuZXdWYWx1ZTsKKyAgICAvLyAg
ICAgcmV0dXJuIG9sZFZhbHVlCisgICAgLy8gfQorICAgIC8vCisgICAgLy8gQXRvbWljU3Ryb25n
Q0FTIHNpZ24tZXh0ZW5kcyBpdHMgcmVzdWx0IGZvciBzdWJ3aWR0aCBvcGVyYXRpb25zLgorICAg
IC8vCisgICAgLy8gTm90ZSB0aGF0IEF0b21pY1dlYWtDQVMgYW5kIEF0b21pY1N0cm9uZ0NBUyBz
b3J0IG9mIGhhdmUgdGhpcyBraW5kIG9mIGVxdWl2YWxlbmNlOgorICAgIC8vCisgICAgLy8gQXRv
bWljV2Vha0NBUyhAZXhwLCBAbmV3LCBAcHRyKSA9PSBFcXVhbChBdG9taWNTdHJvbmdDQVMoQGV4
cCwgQG5ldywgQHB0ciksIEBleHApCisgICAgLy8KKyAgICAvLyBBc3N1bWluZyB0aGF0IHRoZSBX
ZWFrQ0FTIGRvZXMgbm90IHNwdXJpb3VzbHkgZmFpbCwgb2YgY291cnNlLgorICAgIEF0b21pY1N0
cm9uZ0NBUywKKyAgICAKKyAgICAvLyBBdG9taWNhbGx5IF9fXyBhIG1lbW9yeSBsb2NhdGlvbiBh
bmQgcmV0dXJuIHRoZSBvbGQgdmFsdWUuIFN5bnRheDoKKyAgICAvLworICAgIC8vIEBvbGRWYWx1
ZSA9IEF0b21pY1hjaGdfX18oQG9wZXJhbmQsIEBwdHIpCisgICAgLy8KKyAgICAvLyBGb3Igbm9u
LWNhbm9uaWNhbCB3aWR0aHMgKFdpZHRoOCBhbmQgV2lkdGgxNiksIHRoZXNlIHJldHVybiBzaWdu
LWV4dGVuZGVkIHJlc3VsdHMgYW5kIGlnbm9yZSB0aGUKKyAgICAvLyBpcnJlbGV2YW50IGJpdHMg
b2YgdGhlaXIgaW5wdXRzLgorICAgIEF0b21pY1hjaGdBZGQsCisgICAgQXRvbWljWGNoZ0FuZCwK
KyAgICBBdG9taWNYY2hnT3IsCisgICAgQXRvbWljWGNoZ1N1YiwKKyAgICBBdG9taWNYY2hnWG9y
LAorICAgIAorICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBBdG9taWNYY2hnTmVn
LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkyNTIK
KyAgICAKKyAgICAvLyBBdG9taWNhbGx5IGV4Y2hhbmdlIGEgdmFsdWUgd2l0aCBhIG1lbW9yeSBs
b2NhdGlvbi4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQG9sZFZhbHVlID0gQXRvbWljWGNoZyhA
bmV3VmFsdWUsIEBwdHIpCisgICAgQXRvbWljWGNoZywKKyAgICAKKyAgICAvLyBJbnRyb2R1Y2Ug
YW4gaW52aXNpYmxlIGRlcGVuZGVuY3kgZm9yIGJsb2NraW5nIG1vdGlvbiBvZiBsb2FkcyB3aXRo
IHJlc3BlY3QgdG8gZWFjaCBvdGhlci4gU3ludGF4OgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9
IERlcGVuZChAcGhhbnRvbSkKKyAgICAvLworICAgIC8vIFRoaXMgaXMgZXZlbnR1YWxseSBjb2Rl
Z2VuZXJhdGVkIHRvIGhhdmUgbG9jYWwgc2VtYW50aWNzIGFzIGlmIHdlIGRpZDoKKyAgICAvLwor
ICAgIC8vIEByZXN1bHQgPSAkMAorICAgIC8vCisgICAgLy8gQnV0IGl0IGVuc3VyZXMgdGhhdCB0
aGUgdXNlcnMgb2YgQHJlc3VsdCBjYW5ub3QgZXhlY3V0ZSB1bnRpbCBAcGhhbnRvbSBpcyBjb21w
dXRlZC4KKyAgICAvLworICAgIC8vIFRoZSBjb21waWxlciBpcyBub3QgYWxsb3dlZCB0byByZWFz
b24gYWJvdXQgdGhlIGZhY3QgdGhhdCBEZXBlbmQgY29kZWdlbmVyYXRlcyB0aGlzIHdheS4gQW55
IGtpbmQKKyAgICAvLyBvZiB0cmFuc2Zvcm1hdGlvbiBvciBhbmFseXNpcyB0aGF0IHJlbGllcyBv
biB0aGUgaW5zaWdodCB0aGF0IERlcGVuZCBpcyByZWFsbHkgemVybyBpcyB1bnNvdW5kLAorICAg
IC8vIGJlY2F1c2UgaXQgdW5sb2NrcyByZW9yZGVyaW5nIG9mIHVzZXJzIG9mIEByZXN1bHQgYW5k
IEBwaGFudG9tLgorICAgIC8vCisgICAgLy8gT24gWDg2LCB0aGlzIGlzIGxvd2VyZWQgdG8gYSBs
b2FkLWxvYWQgZmVuY2UgYW5kIEByZXN1bHQgdXNlcyBAcGhhbnRvbSBkaXJlY3RseS4KKyAgICAv
LworICAgIC8vIE9uIEFSTSwgdGhpcyBpcyBsb3dlcmVkIGFzIGlmIGxpa2U6CisgICAgLy8KKyAg
ICAvLyBAcmVzdWx0ID0gQml0WG9yKEBwaGFudG9tLCBAcGhhbnRvbSkKKyAgICAvLworICAgIC8v
IEV4Y2VwdCB0aGF0IHRoZSBjb21waWxlciBuZXZlciBnZXRzIGFuIG9wcG9ydHVuaXR5IHRvIHNp
bXBsaWZ5IG91dCB0aGUgQml0WG9yLgorICAgIERlcGVuZCwKIAogICAgIC8vIFRoaXMgaXMgdXNl
ZCB0byBjb21wdXRlIHRoZSBhY3R1YWwgYWRkcmVzcyBvZiBhIFdhc20gbWVtb3J5IG9wZXJhdGlv
bi4gSXQgdGFrZXMgYW4gSW50UHRyCiAgICAgLy8gYW5kIGEgcGlubmVkIHJlZ2lzdGVyIHRoZW4g
Y29tcHV0ZXMgdGhlIGFwcHJvcHJpYXRlIEludFB0ciBhZGRyZXNzLiBGb3IgdGhlIHVzZS1jYXNl
IG9mCkBAIC0zMDEsNiArNDA1LDExMiBAQCBpbmxpbmUgYm9vbCBpc0RlZmluaXRlbHlUZXJtaW5h
bChPcGNvZGUgCiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBpc0xvYWQoT3Bjb2RlIG9wY29kZSkK
K3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgTG9hZDhaOgorICAgIGNhc2UgTG9h
ZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6CisgICAgY2FzZSBMb2Fk
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1N0b3JlKE9wY29kZSBvcGNvZGUpCit7Cisg
ICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIFN0b3JlODoKKyAgICBjYXNlIFN0b3JlMTY6
CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNMb2FkU3RvcmUo
T3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgTG9hZDha
OgorICAgIGNhc2UgTG9hZDhTOgorICAgIGNhc2UgTG9hZDE2WjoKKyAgICBjYXNlIExvYWQxNlM6
CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgU3RvcmU4OgorICAgIGNhc2UgU3RvcmUxNjoKKyAg
ICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pYyhPcGNvZGUg
b3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FT
OgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAg
ICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBB
dG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hj
aGc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljQ0FTKE9wY29kZSBvcGNvZGUp
Cit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CisgICAg
Y2FzZSBBdG9taWNTdHJvbmdDQVM6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzQXRvbWlj
WGNoZyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBB
dG9taWNYY2hnQWRkOgorICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICBjYXNlIEF0b21pY1hj
aGdPcjoKKyAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgY2FzZSBBdG9taWNYY2hnWG9yOgor
ICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNNZW1vcnlB
Y2Nlc3MoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICByZXR1cm4gaXNBdG9taWMob3Bjb2RlKSB8fCBp
c0xvYWRTdG9yZShvcGNvZGUpOworfQorCitpbmxpbmUgT3Bjb2RlIHNpZ25FeHRlbmRPcGNvZGUo
V2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3aWR0aCkgeworICAgIGNhc2UgV2lkdGg4Ogor
ICAgICAgICByZXR1cm4gU0V4dDg7CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4g
U0V4dDE2OworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBPb3BzOworICAgIH0KK30KKworSlNfRVhQT1JUX1BSSVZBVEUg
T3Bjb2RlIHN0b3JlT3Bjb2RlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpOworCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsy
MDIsOCBAQCB2b2lkIFByb2NlZHVyZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjCiAgICAgICAg
IH0KICAgICAgICAgZGF0YUxvZygiICAgICIsIGRlZXBEdW1wKCp0aGlzLCB2YWx1ZSksICJcbiIp
OwogICAgIH0KKyAgICBpZiAoaGFzUXVpcmtzKCkpCisgICAgICAgIG91dC5wcmludCgiSGFzIFF1
aXJrczogVHJ1ZVxuIik7CiAgICAgaWYgKHZhcmlhYmxlcygpLnNpemUoKSkgewogICAgICAgICBv
dXQucHJpbnQoIlZhcmlhYmxlczpcbiIpOwogICAgICAgICBmb3IgKFZhcmlhYmxlKiB2YXJpYWJs
ZSA6IHZhcmlhYmxlcygpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2Vk
dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmgJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE3LDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICBW
YWx1ZSogYWRkSW50Q29uc3RhbnQoT3JpZ2luLCBUeXBlLCBpbnQ2NF90IHZhbHVlKTsKICAgICBW
YWx1ZSogYWRkSW50Q29uc3RhbnQoVmFsdWUqLCBpbnQ2NF90IHZhbHVlKTsKIAorICAgIC8vIFlv
dSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgVmFsdWUqIGFkZEJvdHRv
bShPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBhZGRCb3R0b20oVmFsdWUqKTsKIApAQCAtMTk1
LDYgKzE5NiwxNyBAQCBwdWJsaWM6CiAgICAgLy8gYWxpdmUuIEdyZWF0IGZvciBjb21waWxlci1n
ZW5lcmF0ZWQgZGF0YSBzZWN0aW9ucywgbGlrZSBzd2l0Y2gganVtcCB0YWJsZXMgYW5kIGNvbnN0
YW50IHBvb2xzLgogICAgIC8vIFRoaXMgcmV0dXJucyBtZW1vcnkgdGhhdCBoYXMgYmVlbiB6ZXJv
LWluaXRpYWxpemVkLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFkZERhdGFTZWN0aW9u
KHNpemVfdCk7CisgICAgCisgICAgLy8gU29tZSBvcGVyYXRpb25zIGFyZSBzcGVjaWZpZWQgaW4g
QjMgSVIgdG8gYmVoYXZlIG9uZSB3YXkgYnV0IG9uIHRoaXMgZ2l2ZW4gQ1BVIHRoZXkgYmVoYXZl
IGEKKyAgICAvLyBkaWZmZXJlbnQgd2F5LiBXaGVuIHRydWUsIHRob3NlIEIzIElSIG9wcyBzd2l0
Y2ggdG8gYmVoYXZpbmcgdGhlIENQVSB3YXksIGFuZCB0aGUgb3B0aW1pemVyIG1heQorICAgIC8v
IHN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2YgaXQuCisgICAgLy8KKyAgICAvLyBPbmUgd2F5IHRv
IHRoaW5rIG9mIGl0IGlzIGxpa2UgdGhpcy4gSW1hZ2luZSB0aGF0IHlvdSBmaW5kIHRoYXQgdGhl
IGNsZWFuZXN0IHdheSBvZiBsb3dlcmluZworICAgIC8vIHNvbWV0aGluZyBpbiBsb3dlck1hY3Jv
cyBpcyB0byB1bmNvbmRpdGlvbmFsbHkgcmVwbGFjZSBvbmUgb3Bjb2RlIHdpdGggYW5vdGhlci4g
VGhpcyBpcyBhIHNob3J0Y3V0CisgICAgLy8gd2hlcmUgeW91IGluc3RlYWQga2VlcCB0aGUgc2Ft
ZSBvcGNvZGUsIGJ1dCByZWx5IG9uIHRoZSBvcGNvZGUncyBtZWFuaW5nIGNoYW5nZXMgb25jZSBs
b3dlck1hY3JvcworICAgIC8vIHNldHMgaGFzUXVpcmtzLgorICAgIGJvb2wgaGFzUXVpcmtzKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNRdWlya3M7IH0KKyAgICB2b2lkIHNldEhhc1F1aXJrcyhib29s
IHZhbHVlKSB7IG1faGFzUXVpcmtzID0gdmFsdWU7IH0KIAogICAgIE9wYXF1ZUJ5cHJvZHVjdHMm
IGJ5cHJvZHVjdHMoKSB7IHJldHVybiAqbV9ieXByb2R1Y3RzOyB9CiAKQEAgLTI1Miw2ICsyNjQs
NyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoUHJpbnRTdHJlYW0mLCBP
cmlnaW4pPj4gbV9vcmlnaW5QcmludGVyOwogICAgIGNvbnN0IHZvaWQqIG1fZnJvbnRlbmREYXRh
OwogICAgIFBDVG9PcmlnaW5NYXAgbV9wY1RvT3JpZ2luTWFwOworICAgIGJvb2wgbV9oYXNRdWly
a3MgeyBmYWxzZSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmNwcAkocmV2aXNpb24gMjEzNDkyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIK
KyNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewpAQCAtODksNiArOTAsMjMgQEAgYm9vbCBQdXJlQ1NF
Ojpwcm9jZXNzKFZhbHVlKiB2YWx1ZSwgRG9taQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9v
bCBwdXJlQ1NFKFByb2NlZHVyZSYgcHJvYykKK3sKKyAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUo
cHJvYywgInB1cmVDU0UiKTsKKyAgICAKKyAgICBEb21pbmF0b3JzJiBkb21pbmF0b3JzID0gcHJv
Yy5kb21pbmF0b3JzKCk7CisgICAgUHVyZUNTRSBwdXJlQ1NFOworICAgIGJvb2wgcmVzdWx0ID0g
ZmFsc2U7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuYmxvY2tzSW5QcmVPcmRl
cigpKSB7CisgICAgICAgIGZvciAoVmFsdWUqIHZhbHVlIDogKmJsb2NrKSB7CisgICAgICAgICAg
ICByZXN1bHQgfD0gdmFsdWUtPnBlcmZvcm1TdWJzdGl0dXRpb24oKTsKKyAgICAgICAgICAgIHJl
c3VsdCB8PSBwdXJlQ1NFLnByb2Nlc3ModmFsdWUsIGRvbWluYXRvcnMpOworICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMwogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1B1cmVDU0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQdXJlQ1NFLmgJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1B1cmVDU0UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBAQCBwcml2YXRl
OgogICAgIEhhc2hNYXA8VmFsdWVLZXksIE1hdGNoZXM+IG1fbWFwOwogfTsKIAorYm9vbCBwdXJl
Q1NFKFByb2NlZHVyZSYpOworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8v
IEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VT
dHJlbmd0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlU3RyZW5ndGguY3BwCShyZXZpc2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxMiArMjgs
MTMgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgi
CiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNl
cnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgiCiAjaW5jbHVk
ZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCi0j
aW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNQaGlDaGlsZHJlbi5o
IgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgpAQCAtNjAyLDcgKzYwMyw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGJyZWFrOwotCisgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBOZWc6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IE5lZyhjb25z
dGFudCkKICAgICAgICAgICAgIC8vIEludG8gdGhpczogLWNvbnN0YW50CkBAIC0xMjk1LDYgKzEy
OTYsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW1f
cHJvYy5oYXNRdWlya3MoKSkgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDgo
QXRvbWljWGNoZ19fXykKKyAgICAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEF0b21pY1hjaGdf
X18KKyAgICAgICAgICAgICAgICBpZiAoaXNBdG9taWNYY2hnKG1fdmFsdWUtPmNoaWxkKDApLT5v
cGNvZGUoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmFzPEF0
b21pY1ZhbHVlPigpLT5hY2Nlc3NXaWR0aCgpID09IFdpZHRoOCkgeworICAgICAgICAgICAgICAg
ICAgICByZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTRXh0MTY6CkBAIC0xMzQzLDYgKzEzNTQsMTYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW1fcHJvYy5oYXNRdWlya3MoKSkg
eworICAgICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU0V4dDE2KEF0b21pY1hjaGdfX18pCisg
ICAgICAgICAgICAgICAgLy8gSW50byB0aGlzOiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAg
ICAgaWYgKGlzQXRvbWljWGNoZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAg
ICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+YWNj
ZXNzV2lkdGgoKSA9PSBXaWR0aDE2KSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRo
SWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBjYXNlIFNFeHQzMjoKQEAgLTIxMDEsMjIgKzIxMjIsMjUgQEAgcHJpdmF0ZToKICAg
ICAgICAgQVNTRVJUKG1fdmFsdWUtPm51bUNoaWxkcmVuKCkgPj0gMik7CiAgICAgICAgIAogICAg
ICAgICAvLyBMZWF2ZSBpdCBhbG9uZSBpZiB0aGUgcmlnaHQgY2hpbGQgaXMgYSBjb25zdGFudC4K
LSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0NvbnN0YW50KCkpCisgICAgICAgIGlm
IChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNDb25zdGFudCgpCisgICAgICAgICAgICB8fCBtX3ZhbHVl
LT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKLSAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pc0NvbnN0YW50
KCkpIHsKKyAgICAgICAgYXV0byBzd2FwID0gWyZdICgpIHsKICAgICAgICAgICAgIHN0ZDo6c3dh
cChtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgbV9j
aGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCisgICAgICAg
IH07CisgICAgICAgIAorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzQ29uc3RhbnQo
KSkKKyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7CisgICAgICAgIAorICAgICAgICBpZiAobV92
YWx1ZS0+Y2hpbGQoMSktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUykKKyAgICAgICAgICAg
IHJldHVybiBzd2FwKCk7CisgICAgICAgIAogICAgICAgICAvLyBTb3J0IHRoZSBvcGVyYW5kcy4g
VGhpcyBpcyBhbiBpbXBvcnRhbnQgY2Fub25pY2FsaXphdGlvbi4gV2UgdXNlIHRoZSBpbmRleCBp
bnN0ZWFkIG9mCiAgICAgICAgIC8vIHRoZSBhZGRyZXNzIHRvIG1ha2UgdGhpcyBhdCBsZWFzdCBz
bGlnaHRseSBkZXRlcm1pbmlzdGljLgotICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlu
ZGV4KCkgPiBtX3ZhbHVlLT5jaGlsZCgxKS0+aW5kZXgoKSkgewotICAgICAgICAgICAgc3RkOjpz
d2FwKG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7Ci0gICAgICAgICAgICBt
X2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAg
IGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aW5kZXgoKSA+IG1fdmFsdWUtPmNoaWxkKDEpLT5pbmRl
eCgpKQorICAgICAgICAgICAgcmV0dXJuIHN3YXAoKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgcmVhbGx5IGJlIGEgZm9yd2FyZCBhbmFseXNpcy4gSW5zdGVhZCwgd2UgdXNl
cyBhIGJvdW5kZWQtc2VhcmNoIGJhY2t3YXJkcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjEzNDkyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgor
I2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5o
IgpAQCAtMzQ2LDYgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgi
QXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9
PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNl
KHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTG9hZDoKQEAgLTM1Myw2ICsz
NTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxk
cmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgIT0gVm9pZCwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAg
ICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU4OgpAQCAtMzYyLDYgKzM2NSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJ
bnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+
Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsKICAgICAgICAgICAg
ICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgU3RvcmU6CkBAIC0zNjksOCArMzczLDQ5IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlw
ZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIHZhbGlkYXRlRmVuY2UodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRl
U3RhY2tBY2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2lu
ZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gdmFs
dWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUoaXNJbnQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkp
OworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBv
aW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVB
dG9taWModmFsdWUpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNTdHJvbmdD
QVM6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAo
IkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGls
ZHJlbigpID09IDMsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGls
ZCgxKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KGlzSW50KHZhbHVlLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5jaGlsZCgyKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBdG9taWModmFsdWUpOworICAg
ICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAgICAgY2Fz
ZSBBdG9taWNYY2hnQW5kOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAg
ICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6
CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgICAgICAgICAgVkFMSURBVEUo
IXZhbHVlLT5raW5kKCkuaXNDaGlsbCgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQo
MCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURShp
c0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIs
ICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOgorICAgICAgICAgICAgICAgIFZBTElEQVRF
KCF2YWx1ZS0+a2luZCgpLmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+
Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJ
REFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwg
KCJBdCAiLCAqdmFsdWUpKTsKQEAgLTUzNyw2ICs1ODIsMjAgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHZvaWQgdmFsaWRhdGVGZW5j
ZShWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFs
dWUtPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKQor
ICAgICAgICAgICAgVkFMSURBVEUobWVtb3J5LT5hY2Nlc3NCYW5rKCkgPT0gR1AsICgiRmVuY2Ug
YXQgIiwgKm1lbW9yeSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRlQXRvbWljKFZh
bHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSB2YWx1ZS0+
YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIAorICAgICAgICBWQUxJREFURShiZXN0VHlwZShH
UCwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSA9PSBhdG9taWMtPmFjY2Vzc1R5cGUoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICB9CiAKICAgICB2b2lkIHZhbGlkYXRlU3RhY2tBY2Nlc3MoVmFsdWUq
IHZhbHVlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHJl
dmlzaW9uIDIxMzQ5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAj
aW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0JvdHRvbVBy
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCkBAIC01MTAsNiArNTExLDcgQEAg
Ym9vbCBWYWx1ZTo6cmV0dXJuc0Jvb2woKSBjb25zdAogICAgIGNhc2UgQWJvdmVFcXVhbDoKICAg
ICBjYXNlIEJlbG93RXF1YWw6CiAgICAgY2FzZSBFcXVhbE9yVW5vcmRlcmVkOgorICAgIGNhc2Ug
QXRvbWljV2Vha0NBUzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQaGk6CiAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGhlcmUuCkBAIC01ODksNiArNTkx
LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBCZWxvd0VxdWFs
OgogICAgIGNhc2UgRXF1YWxPclVub3JkZXJlZDoKICAgICBjYXNlIFNlbGVjdDoKKyAgICBjYXNl
IERlcGVuZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXY6CiAgICAgY2FzZSBVRGl2OgpA
QCAtNjAwLDE2ICs2MDMsNDQgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAg
Y2FzZSBMb2FkOFM6CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKLSAgICBj
YXNlIExvYWQ6Ci0gICAgICAgIHJlc3VsdC5yZWFkcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5n
ZSgpOworICAgIGNhc2UgTG9hZDogeworICAgICAgICBjb25zdCBNZW1vcnlWYWx1ZSogbWVtb3J5
ID0gYXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5yZWFkcyA9IG1lbW9yeS0+cmFu
Z2UoKTsKKyAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgcmVz
dWx0LndyaXRlcyA9IG1lbW9yeS0+ZmVuY2VSYW5nZSgpOworICAgICAgICAgICAgcmVzdWx0LmZl
bmNlID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9
IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFN0b3JlODoKICAgICBjYXNl
IFN0b3JlMTY6Ci0gICAgY2FzZSBTdG9yZToKLSAgICAgICAgcmVzdWx0LndyaXRlcyA9IGFzPE1l
bW9yeVZhbHVlPigpLT5yYW5nZSgpOworICAgIGNhc2UgU3RvcmU6IHsKKyAgICAgICAgY29uc3Qg
TWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICByZXN1bHQu
d3JpdGVzID0gbWVtb3J5LT5yYW5nZSgpOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgp
KSB7CisgICAgICAgICAgICByZXN1bHQucmVhZHMgPSBtZW1vcnktPmZlbmNlUmFuZ2UoKTsKKyAg
ICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0
LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRv
bWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hn
T3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAg
ICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgY29uc3QgQXRvbWljVmFsdWUqIGF0b21pYyA9
IGFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICByZXN1bHQucmVhZHMgPSBhdG9taWMtPnJhbmdl
KCkgfCBhdG9taWMtPmZlbmNlUmFuZ2UoKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IGF0b21p
Yy0+cmFuZ2UoKSB8IGF0b21pYy0+ZmVuY2VSYW5nZSgpOworICAgICAgICBpZiAoYXRvbWljLT5o
YXNGZW5jZSgpKQorICAgICAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgcmVz
dWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
Y2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgcmVzdWx0LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CkBAIC02MTcsMTggKzY0OCw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMo
KSBjb25zdAogICAgICAgICBjb25zdCBGZW5jZVZhbHVlKiBmZW5jZSA9IGFzPEZlbmNlVmFsdWU+
KCk7CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IGZlbmNlLT5yZWFkOwogICAgICAgICByZXN1bHQu
d3JpdGVzID0gZmVuY2UtPndyaXRlOwotICAgICAgICAKLSAgICAgICAgLy8gUHJldmVudCBraWxs
aW5nIG9mIGZlbmNlcyB0aGF0IGNsYWltIG5vdCB0byB3cml0ZSBhbnl0aGluZy4gSXQncyBhIGJp
dCB3ZWlyZCB0aGF0IHdlIHVzZQotICAgICAgICAvLyBsb2NhbCBzdGF0ZSBhcyB0aGUgd2F5IHRv
IGRvIHRoaXMsIGJ1dCBpdCBoYXBwZW5zIHRvIHdvcms6IHdlIG11c3QgYXNzdW1lIHRoYXQgd2Ug
Y2Fubm90Ci0gICAgICAgIC8vIGtpbGwgd3JpdGVzTG9jYWxTdGF0ZSB1bmxlc3Mgd2UgdW5kZXJz
dGFuZHMgZXhhY3RseSB3aGF0IHRoZSBpbnN0cnVjdGlvbiBpcyBkb2luZyAobGlrZQotICAgICAg
ICAvLyB0aGUgd2F5IHRoYXQgZml4U1NBIHVuZGVyc3RhbmRzIFNldC9HZXQgYW5kIHRoZSB3YXkg
dGhhdCByZWR1Y2VTdHJlbmd0aCBhbmQgb3RoZXJzCi0gICAgICAgIC8vIHVuZGVyc3RhbmQgVXBz
aWxvbikuIFRoaXMgd291bGQgb25seSBiZWNvbWUgYSBwcm9ibGVtIGlmIHdlIGhhZCBzb21lIGFu
YWx5c2lzIHRoYXQgd2FzCi0gICAgICAgIC8vIGxvb2tpbmcgdG8gdXNlIHRoZSB3cml0ZXNMb2Nh
bFN0YXRlIGJpdCB0byBpbnZhbGlkYXRlIGEgQ1NFIG92ZXIgbG9jYWwgc3RhdGUgb3BlcmF0aW9u
cy4KLSAgICAgICAgLy8gVGhlbiBhIEZlbmNlIHdvdWxkIGxvb2sgYmxvY2ssIHNheSwgdGhlIGVs
aW1pbmF0aW9uIG9mIGEgcmVkdW5kYW50IEdldC4gQnV0IGl0IGxpa2UKLSAgICAgICAgLy8gdGhh
dCdzIG5vdCBhdCBhbGwgaG93IG91ciBvcHRpbWl6YXRpb25zIGZvciBTZXQvR2V0L1Vwc2lsb24v
UGhpIHdvcmsgLSB0aGV5IGdyb2sgdGhlaXIKLSAgICAgICAgLy8gb3BlcmF0aW9ucyBkZWVwbHkg
ZW5vdWdoIHRoYXQgdGhleSBoYXZlIG5vIG5lZWQgdG8gY2hlY2sgdGhpcyBiaXQgLSBzbyB0aGlz
IGNoZWF0IGlzCi0gICAgICAgIC8vIGZpbmUuCi0gICAgICAgIHJlc3VsdC53cml0ZXNMb2NhbFN0
YXRlID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgQ0NhbGw6CkBAIC02OTQsNiArNzE0LDcgQEAgVmFsdWVLZXkgVmFs
dWU6OmtleSgpIGNvbnN0CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEJpdHdpc2VDYXN0Ogog
ICAgIGNhc2UgTmVnOgorICAgIGNhc2UgRGVwZW5kOgogICAgICAgICByZXR1cm4gVmFsdWVLZXko
a2luZCgpLCB0eXBlKCksIGNoaWxkKDApKTsKICAgICBjYXNlIEFkZDoKICAgICBjYXNlIFN1YjoK
QEAgLTc0NiwxMiArNzY3LDE2IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIH0K
IH0KIAotdm9pZCBWYWx1ZTo6cGVyZm9ybVN1YnN0aXR1dGlvbigpCitib29sIFZhbHVlOjpwZXJm
b3JtU3Vic3RpdHV0aW9uKCkKIHsKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGZvciAo
VmFsdWUqJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgd2hpbGUgKGNoaWxkLT5vcGNv
ZGUoKSA9PSBJZGVudGl0eSkKKyAgICAgICAgd2hpbGUgKGNoaWxkLT5vcGNvZGUoKSA9PSBJZGVu
dGl0eSkgeworICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgICAgIGNoaWxkID0g
Y2hpbGQtPmNoaWxkKDApOworICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIGJvb2wgVmFsdWU6OmlzRnJlZSgpIGNvbnN0CkBAIC04MDEsNiArODI2LDcgQEAgVHlwZSBW
YWx1ZTo6dHlwZUZvcihLaW5kIGtpbmQsIFZhbHVlKiBmaQogICAgIGNhc2UgQ2hlY2tBZGQ6CiAg
ICAgY2FzZSBDaGVja1N1YjoKICAgICBjYXNlIENoZWNrTXVsOgorICAgIGNhc2UgRGVwZW5kOgog
ICAgICAgICByZXR1cm4gZmlyc3RDaGlsZC0+dHlwZSgpOwogICAgIGNhc2UgRnJhbWVQb2ludGVy
OgogICAgICAgICByZXR1cm4gcG9pbnRlclR5cGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsdWUuaAkocmV2aXNpb24gMjEzNDkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTEgQEAgcHVibGljOgogICAg
IAogICAgIE9wY29kZSBvcGNvZGUoKSBjb25zdCB7IHJldHVybiBraW5kKCkub3Bjb2RlKCk7IH0K
ICAgICAKKyAgICAvLyBOb3RlIHRoYXQgdGhlIGtpbmQgaXMgbWVhbnQgdG8gYmUgaW1tdXRhYmxl
LiBEbyB0aGlzIHdoZW4geW91IGtub3cgdGhhdCB0aGlzIGlzIHNhZmUuIEl0J3Mgbm90CisgICAg
Ly8gdXN1YWxseSBzYWZlLgorICAgIHZvaWQgc2V0S2luZFVuc2FmZWx5KEtpbmQga2luZCkgeyBt
X2tpbmQgPSBraW5kOyB9CisgICAgdm9pZCBzZXRPcGNvZGVVbnNhZmVseShPcGNvZGUgb3Bjb2Rl
KSB7IG1fa2luZC5zZXRPcGNvZGUob3Bjb2RlKTsgfQorICAgIAogICAgIC8vIEl0J3MgZ29vZCBw
cmFjdGljZSB0byBtaXJyb3IgS2luZCBtZXRob2RzIGhlcmUsIHNvIHlvdSBjYW4gc2F5IHZhbHVl
LT5pc0JsYWgoKQogICAgIC8vIGluc3RlYWQgb2YgdmFsdWUtPmtpbmQoKS5pc0JsYWgoKS4KICAg
ICBib29sIGlzQ2hpbGwoKSBjb25zdCB7IHJldHVybiBraW5kKCkuaXNDaGlsbCgpOyB9CkBAIC0x
MDcsNiArMTEyLDggQEAgcHVibGljOgogICAgIC8vIHZhbHVlcyB3aXRoIElkZW50aXRpZXMgb24g
Ym90dG9tIGNvbnN0YW50cy4gRm9yIHRoaXMgcmVhc29uLCB0aGlzIHRha2VzIGEgY2FsbGJhY2sg
dGhhdCBpcwogICAgIC8vIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBib3R0b21zLiBUaGVyZSdz
IGEgdXRpbGl0eSBmb3IgdGhpcywgc2VlIEIzQm90dG9tUHJvdmlkZXIuaC4gWW91CiAgICAgLy8g
Y2FuIGFsc28gYWNjZXNzIHRoYXQgdXRpbGl0eSB1c2luZyByZXBsYWNlV2l0aEJvdHRvbShJbnNl
cnRpb25TZXQmLCBzaXplX3QpLgorICAgIC8vCisgICAgLy8gWW91J3JlIGd1YXJhbnRlZWQgdGhh
dCBib3R0b20gaXMgemVyby4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCb3R0b21Qcm92aWRlcj4K
ICAgICB2b2lkIHJlcGxhY2VXaXRoQm90dG9tKGNvbnN0IEJvdHRvbVByb3ZpZGVyJik7CiAgICAg
CkBAIC0yNTYsNyArMjYzLDcgQEAgcHVibGljOgogICAgIC8vIE1ha2VzIHN1cmUgdGhhdCBub25l
IG9mIHRoZSBjaGlsZHJlbiBhcmUgSWRlbnRpdHkncy4gSWYgYSBjaGlsZCBwb2ludHMgdG8gSWRl
bnRpdHksIHRoaXMgd2lsbAogICAgIC8vIHJlcG9pbnQgaXQgYXQgdGhlIElkZW50aXR5J3MgY2hp
bGQuIEZvciBzaW1wbGljaXR5LCB0aGlzIHdpbGwgZm9sbG93IGFyYml0cmFyaWx5IGxvbmcgY2hh
aW5zCiAgICAgLy8gb2YgSWRlbnRpdHkncy4KLSAgICB2b2lkIHBlcmZvcm1TdWJzdGl0dXRpb24o
KTsKKyAgICBib29sIHBlcmZvcm1TdWJzdGl0dXRpb24oKTsKICAgICAKICAgICAvLyBGcmVlIHZh
bHVlcyBhcmUgdGhvc2Ugd2hvc2UgcHJlc2VuY2UgaXMgZ3VhcmFudGVlZCBub3QgdG8gaHVydCBj
b2RlLiBXZSBjb25zaWRlciBjb25zdGFudHMsCiAgICAgLy8gSWRlbnRpdGllcywgYW5kIE5vcHMg
dG8gYmUgZnJlZS4gQ29uc3RhbnRzIGFyZSBmcmVlIGJlY2F1c2Ugd2UgaG9pc3QgdGhlbSB0byBh
biBvcHRpbWFsIHBsYWNlLgpAQCAtMzIxLDYgKzMyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgSVRvRjoKICAgICAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgY2FzZSBCcmFuY2g6
CisgICAgICAgIGNhc2UgRGVwZW5kOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG51bUFyZ3Mg
IT0gMSkpCiAgICAgICAgICAgICAgICAgYmFkS2luZChraW5kLCBudW1BcmdzKTsKICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oCShyZXZp
c2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdGhhdCB0
aGUgZGVmIGhhcHBlbnMgYmVmb3JlIGFueSBvZiB0aGUgZWZmZWN0cyBvZiB0aGUgc3RhY2ttYXAu
IFRoaXMgaXMgb25seSB2YWxpZCBmb3IKICAgICAgICAgLy8gdGhlIHJlc3VsdCBjb25zdHJhaW50
IG9mIGEgUGF0Y2hwb2ludC4KICAgICAgICAgU29tZUVhcmx5UmVnaXN0ZXIsCi0KKyAgICAgICAg
CiAgICAgICAgIC8vIEFzIGFuIGlucHV0IHJlcHJlc2VudGF0aW9uLCB0aGlzIGZvcmNlcyBhIHBh
cnRpY3VsYXIgcmVnaXN0ZXIuIEFzIGFuIG91dHB1dAogICAgICAgICAvLyByZXByZXNlbnRhdGlv
biwgdGhpcyB0ZWxscyB1cyB3aGF0IHJlZ2lzdGVyIEIzIHBpY2tlZC4KICAgICAgICAgUmVnaXN0
ZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguY3BwCShyZXZpc2lvbiAyMTM0
OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDM4IEBACiAKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK1R5cGUgYmVzdFR5cGUoQmFuayBiYW5r
LCBXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdpZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6
CisgICAgY2FzZSBXaWR0aDE2OgorICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgc3dpdGNoIChi
YW5rKSB7CisgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICByZXR1cm4gSW50MzI7CisgICAg
ICAgIGNhc2UgRlA6CisgICAgICAgICAgICByZXR1cm4gRmxvYXQ7CisgICAgICAgIH0KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFZvaWQ7Cisg
ICAgY2FzZSBXaWR0aDY0OgorICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgY2FzZSBH
UDoKKyAgICAgICAgICAgIHJldHVybiBJbnQ2NDsKKyAgICAgICAgY2FzZSBGUDoKKyAgICAgICAg
ICAgIHJldHVybiBEb3VibGU7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFZvaWQ7CisgICAgfQorICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFZvaWQ7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMworCiBuYW1lc3BhY2UgV1RGIHsKIAogdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIEpTQzo6QjM6OldpZHRoIHdpZHRoKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzV2lkdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNXaWR0aC5oCShyZXZpc2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNXaWR0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw4ICs2NSwyMSBAQCBpbmxpbmUgV2lk
dGggd2lkdGhGb3JUeXBlKFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIFdpZHRoNjQ7CiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXaWR0aDg7CiB9CiAKK2lu
bGluZSBXaWR0aCBjYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gc3Rk
OjptYXgoV2lkdGgzMiwgd2lkdGgpOworfQorCitpbmxpbmUgYm9vbCBpc0Nhbm9uaWNhbFdpZHRo
KFdpZHRoIHdpZHRoKQoreworICAgIHJldHVybiB3aWR0aCA+PSBXaWR0aDMyOworfQorCitUeXBl
IGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpOworCiBpbmxpbmUgV2lkdGggY29uc2Vy
dmF0aXZlV2lkdGgoQmFuayBiYW5rKQogewogICAgIHJldHVybiBiYW5rID09IEdQID8gcG9pbnRl
cldpZHRoKCkgOiBXaWR0aDY0OwpAQCAtOTgsNiArMTExLDIwIEBAIGlubGluZSBXaWR0aCB3aWR0
aEZvckJ5dGVzKHVuc2lnbmVkIGJ5dGUKICAgICB9CiB9CiAKK2lubGluZSB1aW50NjRfdCBtYXNr
KFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lkdGgpIHsKKyAgICBjYXNlIFdpZHRoODoK
KyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDAwMDAwMDBmZmxsdTsKKyAgICBjYXNlIFdpZHRoMTY6
CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMGZmZmZsbHU7CisgICAgY2FzZSBXaWR0aDMy
OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMGZmZmZmZmZmbGx1OworICAgIGNhc2UgV2lkdGg2
NDoKKyAgICAgICAgcmV0dXJuIDB4ZmZmZmZmZmZmZmZmZmZmZmxsdTsKKyAgICB9Cit9CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkFpclZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlLmgiCiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAi
QjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNs
dWRlICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCkBAIC00NCw2
ICs0NSw3IEBACiAjaW5jbHVkZSAiQjNNYXRoRXh0cmFzLmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlW
YWx1ZS5oIgogI2luY2x1ZGUgIkIzTW92ZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgIkIzTmF0aXZl
VHJhaXRzLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlICJCM1JlZHVjZVN0
cmVuZ3RoLmgiCiAjaW5jbHVkZSAiQjNTbG90QmFzZVZhbHVlLmgiCkBAIC0yOTcsNiArMjk5LDI0
IEBAIHZvaWQgdGVzdExvYWQ0MigpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Mp
ID09IDQyKTsKIH0KIAordm9pZCB0ZXN0TG9hZEFjcTQyKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludCB4ID0g
NDI7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmeCksCisgICAgICAgICAg
ICAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSk7CisKKyAgICBhdXRvIGNvZGUgPSBj
b21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3Ry
dWN0aW9uKCpjb2RlLCAibGRhIik7CisgICAgQ0hFQ0soaW52b2tlPGludD4oKmNvZGUpID09IDQy
KTsKK30KKwogdm9pZCB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKGludDMyX3Qgb2Zmc2V0NjQsIGlu
dDMyX3Qgb2Zmc2V0MzIpCiB7CiAgICAgewpAQCAtNTc0OCw2ICs1NzY4LDM1IEBAIHZvaWQgdGVz
dFN0b3JlQWRkTG9hZDMyKGludCBhbW91bnQpCiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3Vu
dCk7CiB9CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTMyKGludCBhbW91bnQpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBpbnQgc2xvdCA9IDM3OworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBB
ZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
KyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHNsb3RQdHIsIDAs
IEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBS
YW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1VzZXNJ
bnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigq
Y29kZSwgInN0bCIpOworICAgIH0KKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3Vu
dCkpOworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCiB2b2lkIHRlc3RTdG9y
ZUFkZExvYWRJbW0zMihpbnQgYW1vdW50KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTc5
Miw2ICs1ODQxLDc0IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZDgoaW50IGFtb3VudCwgQjM6Ok8K
ICAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKIH0KIAordm9pZCB0ZXN0U3RvcmVSZWxB
ZGRMb2FkQWNxOChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBpbnQ4X3Qgc2xvdCA9IDM3OworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KTsKKyAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTgsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRk
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhl
YXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhlYXBSYW5n
ZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29kZSA9IGNv
bXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29k
ZSwgInN0bCIpOworICAgIH0KKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFtb3VudCkp
OworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCit2b2lkIHRlc3RTdG9yZVJl
bEFkZEZlbmNlTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgaW50OF90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7Cisg
ICAgVmFsdWUqIGxvYWRlZFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAg
ICAgICAgcHJvYywgbG9hZE9wY29kZSwgT3JpZ2luKCksIHNsb3RQdHIsIDAsIEhlYXBSYW5nZSg0
MiksIEhlYXBSYW5nZSg0MikpOworICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJv
b3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAg
ICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAg
ICAgICAgICBqaXQuc3RvcmU4KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4YmVlZiksICZz
bG90KTsKKyAgICAgICAgfSk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5v
bmUoKTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3RzLmZlbmNlID0gdHJ1ZTsKKyAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZTgsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIGxvYWRlZFZhbHVlLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCisgICAgICAgIHNsb3RQdHIsIDAsIEhl
YXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bigqY29kZSwgInN0bCIpOworICAgIH0KKyAgICBDSEVDSyghaW52b2tlPGludD4oKmNvZGUsIGFt
b3VudCkpOworICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOworfQorCiB2b2lkIHRlc3RT
dG9yZUFkZExvYWRJbW04KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKIHsKICAg
ICBQcm9jZWR1cmUgcHJvYzsKQEAgLTU4MzYsNiArNTk1MywzNSBAQCB2b2lkIHRlc3RTdG9yZUFk
ZExvYWQxNihpbnQgYW1vdW50LCBCMzo6CiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7
CiB9CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTE2KGludCBhbW91bnQsIEIzOjpPcGNv
ZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDE2X3Qgc2xvdCA9IDM3OworICAgIENvbnN0
UHRyVmFsdWUqIHNsb3RQdHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZzbG90KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAg
ICAgICBwcm9jLCBTdG9yZTE2LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNv
ZGUsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAor
ICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0
KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0so
IWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1v
dW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tMTYoaW50IGFtb3VudCwgQjM6Ok9w
Y29kZSBsb2FkT3Bjb2RlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTg3OCw2ICs2MDI0
LDMzIEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZDY0KGludCBhbW91bnQpCiAgICAgQ0hFQ0soc2xv
dCA9PSAzNzAwMDAwMDAwMGxsICsgYW1vdW50KTsKIH0KIAordm9pZCB0ZXN0U3RvcmVSZWxBZGRM
b2FkQWNxNjQoaW50IGFtb3VudCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDY0X3Qgc2xvdCA9IDM3MDAwMDAw
MDAwbGw7CisgICAgQ29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwg
SGVhcFJhbmdlKDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICBz
bG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisK
KyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpIHsKKyAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWludm9rZTxp
bnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3MDAwMDAwMDAwbGwgKyBh
bW91bnQpOworfQorCiB2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW02NChpbnQ2NF90IGFtb3VudCkK
IHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTEzNzkxLDcgKzEzOTY0LDcgQEAgdm9pZCB0ZXN0
VHJhcHBpbmdTdG9yZUVsaW1pbmF0aW9uKCkKICAgICBjb21waWxlQW5kUnVuPGludD4ocHJvYyk7
CiAgICAgdW5zaWduZWQgc3RvcmVDb3VudCA9IDA7CiAgICAgZm9yIChWYWx1ZSogdmFsdWUgOiBw
cm9jLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChNZW1vcnlWYWx1ZTo6aXNTdG9yZSh2YWx1ZS0+
b3Bjb2RlKCkpKQorICAgICAgICBpZiAoaXNTdG9yZSh2YWx1ZS0+b3Bjb2RlKCkpKQogICAgICAg
ICAgICAgc3RvcmVDb3VudCsrOwogICAgIH0KICAgICBDSEVDS19FUShzdG9yZUNvdW50LCAydSk7
CkBAIC0xMzk5Nyw2ICsxNDE3MCw3IEBAIHZvaWQgdGVzdFg4NkxlYUFkZEFkZCgpCiAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwogICAg
IAogICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGlu
dHB0cl90PigqY29kZSwgMSwgMiksICgxICsgMikgKyAxMDApOwogICAgIGNoZWNrRGlzYXNzZW1i
bHkoCiAgICAgICAgICpjb2RlLAogICAgICAgICBbJl0gKGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5
KSAtPiBib29sIHsKQEAgLTE0MDA0LDcgKzE0MTc4LDYgQEAgdm9pZCB0ZXN0WDg2TGVhQWRkQWRk
KCkKICAgICAgICAgICAgICAgICB8fCBzdHJzdHIoZGlzYXNzZW1ibHksICJsZWEgMHg2NCglcnNp
LCVyZGkpLCAlcmF4Iik7CiAgICAgICAgIH0sCiAgICAgICAgICJFeHBlY3RlZCB0byBmaW5kIHNv
bWV0aGluZyBsaWtlIGxlYSAweDY0KCVyZGksJXJzaSksICVyYXggYnV0IGRpZG4ndCEiKTsKLSAg
ICBDSEVDS19FUShpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwgKDEgKyAyKSArIDEwMCk7
CiB9CiAKIHZvaWQgdGVzdFg4NkxlYUFkZFNobFJpZ2h0KCkKQEAgLTE0MDQxLDYgKzE0MjE0LDcg
QEAgdm9pZCB0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlMSgpCiAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOwogICAgIAogICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90PigqY29k
ZSwgMSwgMiksIDEgKyAyKTsKICAgICBjaGVja0Rpc2Fzc2VtYmx5KAogICAgICAgICAqY29kZSwK
ICAgICAgICAgWyZdIChjb25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CkBAIC0xNDA0
OCw3ICsxNDIyMiw2IEBAIHZvaWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2FsZTEoKQogICAgICAg
ICAgICAgICAgIHx8IHN0cnN0cihkaXNhc3NlbWJseSwgImxlYSAoJXJzaSwlcmRpKSwgJXJheCIp
OwogICAgICAgICB9LAogICAgICAgICAiRXhwZWN0ZWQgdG8gZmluZCBzb21ldGhpbmcgbGlrZSBs
ZWEgKCVyZGksJXJzaSksICVyYXggYnV0IGRpZG4ndCEiKTsKLSAgICBDSEVDS19FUShpbnZva2U8
aW50cHRyX3Q+KCpjb2RlLCAxLCAyKSwgMSArIDIpOwogfQogCiB2b2lkIHRlc3RYODZMZWFBZGRT
aGxMZWZ0U2NhbGUyKCkKQEAgLTE0Mjc3LDYgKzE0NDUwLDY4NCBAQCB2b2lkIHRlc3RPcHRpbWl6
ZU1hdGVyaWFsaXphdGlvbigpCiAgICAgQ0hFQ0soZm91bmQpOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgordm9pZCB0ZXN0QXRvbWljV2Vha0NBUygpCit7CisgICAgVHlwZSB0eXBlID0gTmF0
aXZlVHJhaXRzPFQ+Ojp0eXBlOworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3
aWR0aDsKKyAgICAKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsmXSAoQ29tcGlsYXRp
b24mIGNvbXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAgICAgICBpZiAoaXNYODYoKSkgewor
ICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsb2NrIik7Cisg
ICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImNtcHhjaGciKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsKKyAgICAgICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgiKTsKKyAgICAgICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0bHgiKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29t
cGlsYXRpb24sICJsZHgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihj
b21waWxhdGlvbiwgInN0eCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKyAg
ICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiByZWxvb3AgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9yaWdpbigpKTsKKyAgICAgICAg
cm9vdC0+c2V0U3VjY2Vzc29ycyhyZWxvb3ApOworICAgICAgICAKKyAgICAgICAgcmVsb29wLT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAg
ICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAg
cmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAg
ICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyKSk7CisgICAgICAgIHJlbG9vcC0+c2V0
U3VjY2Vzc29ycyhkb25lLCByZWxvb3ApOworICAgICAgICAKKyAgICAgICAgZG9uZS0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1
dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZh
bHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lk
PigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8
VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNo
ZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHJlbG9vcCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICAgICAgQmFzaWNCbG9jayogZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAg
ICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgSnVtcCwgT3JpZ2luKCkpOworICAgICAgICByb290LT5zZXRTdWNjZXNz
b3JzKHJlbG9vcCk7CisgICAgICAgIAorICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcmVsb29w
LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dl
YWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZElu
dENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcmVs
b29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAg
ICAgICAgICAgICAgICBwdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKSk7CisgICAg
ICAgIHJlbG9vcC0+c2V0U3VjY2Vzc29ycyhkb25lLCByZWxvb3ApOworICAgICAgICAKKyAgICAg
ICAgZG9uZS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAg
ICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVb
Ml07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAg
ICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsw
XSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAx
Myk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgZmFsc2UpOworICAgIH0KKyAg
ICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5h
ZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0cikpOworICAgICAgICByb290LT5zZXRT
dWNjZXNzb3JzKHN1Y2MsIGZhaWwpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCks
IE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAg
ZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAg
CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07
CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAg
IHdoaWxlICh2YWx1ZVswXSA9PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwg
dmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7
CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3Rh
dGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2Rl
LCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNC
bG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJv
YywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcHRyKSwKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgSW50MzIsIDApKSk7CisgICAg
ICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoZmFpbCwgc3VjYyk7CisgICAgICAgIAorICAgICAgICBz
dWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNv
ZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7CisgICAg
ICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAg
ICAgIAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAg
ICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0g
PSAxMzsKKyAgICAgICAgd2hpbGUgKHZhbHVlWzBdID09IDQyKQorICAgICAgICAgICAgaW52b2tl
PHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNf
Y2FzdDxUPigxMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAg
dmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBpbnZva2U8dm9pZD4oKmNv
ZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMw
MCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlz
YXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBl
LCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7
CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBU
IHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEz
OworICAgICAgICB3aGlsZSAoIWludm9rZTxib29sPigqY29kZSwgdmFsdWUpKSB7IH0KKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICAKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0
aWNfY2FzdDxUPigzMDApOworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1
ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJs
eSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAg
ICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywg
T3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpKTsKKyAgICAgICAgCisg
ICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07Cisg
ICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdo
aWxlIChpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MV0sIDEzKTsKKyAgICAgICAgCisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAw
KTsKKyAgICAgICAgQ0hFQ0soaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7
CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBB
dG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwK
KyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICAgICAgNDIpKTsK
KyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQg
dmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7
CisgICAgICAgIHdoaWxlICghaW52b2tlPGJvb2w+KCpjb2RlLCBiaXR3aXNlX2Nhc3Q8aW50cHRy
X3Q+KHZhbHVlKSAtIDQyKSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNf
Y2FzdDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAg
ICAgCisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hF
Q0soIWludm9rZTxib29sPigqY29kZSwgYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZSkgLSA0
MikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJs
eSgqY29kZSwgdHJ1ZSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0
ZXN0QXRvbWljU3Ryb25nQ0FTKCkKK3sKKyAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46
OnR5cGU7CisgICAgV2lkdGggd2lkdGggPSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOworICAgIAor
ICAgIGF1dG8gY2hlY2tNeURpc2Fzc2VtYmx5ID0gWyZdIChDb21waWxhdGlvbiYgY29tcGlsYXRp
b24sIGJvb2wgZmVuY2VkKSB7CisgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsKKyAgICAgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAiY21weGNoZyIpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaWYgKGZlbmNlZCkgeworICAgICAgICAgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGRheCIpOworICAgICAgICAgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3RseCIpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxk
eCIpOworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAi
c3R4Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAg
ICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWws
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4o
CisgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRD
b25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAg
ICAgcHRyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywg
ZmFpbCk7CisgICAgICAgIAorICAgICAgICBzdWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgc3RvcmVPcGNvZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAg
ICAgICAgICBzdWNjLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAw
KSwKKyAgICAgICAgICAgIHB0cik7CisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBj
b2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVb
MF0gPSA0MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpj
b2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigx
MDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0g
PSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVl
KTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHko
KmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBC
YXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBm
YWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwK
KyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciwgMCwgSGVhcFJhbmdl
KDQyKSwgSGVhcFJhbmdlKCkpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vz
c29ycyhzdWNjLCBmYWlsKTsKKyAgICAgICAgCisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigp
LCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGZhaWwt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAg
ICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAg
ICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZv
a2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRp
Y19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAg
ICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9rZTx2b2lkPigq
Y29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4o
MzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlE
aXNhc3NlbWJseSgqY29kZSwgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgICAgICBCYXNpY0Jsb2NrKiBzdWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBC
YXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFs
dWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIE5vdEVxdWFsLCBPcmln
aW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAg
ICAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3Rh
bnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0
ciksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDQyKSkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1Y2Mp
OworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAg
ICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisg
ICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9
IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0g
NDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwg
dmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7
CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3Rh
dGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAg
Q0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2Rl
LCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAg
IHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDB4YmVlZiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgICAgIAor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOwor
ICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBD
SEVDS19FUShpbnZva2U8dHlwZW5hbWUgTmF0aXZlVHJhaXRzPFQ+OjpDYW5vbmljYWxUeXBlPigq
Y29kZSwgdmFsdWUpLCA0Mik7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2Fz
dDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAg
dmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8
dHlwZW5hbWUgTmF0aXZlVHJhaXRzPFQ+OjpDYW5vbmljYWxUeXBlPigqY29kZSwgdmFsdWUpLCBz
dGF0aWNfY2FzdDx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8VD46OkNhbm9uaWNhbFR5cGU+KHN0YXRp
Y19jYXN0PFQ+KDMwMCkpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0
PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1
ZVswXSA9IHN0YXRpY19jYXN0PFQ+KC0xKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVu
YW1lIE5hdGl2ZVRyYWl0czxUPjo6Q2Fub25pY2FsVHlwZT4oKmNvZGUsIHZhbHVlKSwgc3RhdGlj
X2Nhc3Q8dHlwZW5hbWUgTmF0aXZlVHJhaXRzPFQ+OjpDYW5vbmljYWxUeXBlPihzdGF0aWNfY2Fz
dDxUPigtMSkpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KC0x
KSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNh
c3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ry
b25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYp
LAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAg
ICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFs
dWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7Cisg
ICAgICAgIENIRUNLKGludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2
YWx1ZVsxXSwgMTMpOworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7Cisg
ICAgICAgIENIRUNLKCFpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMV0sIDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAg
ICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmln
aW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgICAgICAgICBw
cm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0Miks
CisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHBy
b2MsIE9yaWdpbigpLCB0eXBlLCA0MikpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSkpOworICAgICAgICAgICAgCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAg
ICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIENIRUNL
KGludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0s
IHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNL
KCFpbnZva2U8Ym9vbD4oKmNvZGUsICZ2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsw
XSwgc3RhdGljX2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7
CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0QXRvbWljWGNoZyhCMzo6T3Bjb2RlIG9wY29k
ZSkKK3sKKyAgICBUeXBlIHR5cGUgPSBOYXRpdmVUcmFpdHM8VD46OnR5cGU7CisgICAgV2lkdGgg
d2lkdGggPSBOYXRpdmVUcmFpdHM8VD46OndpZHRoOworICAgIAorICAgIGF1dG8gZG9UaGVNYXRo
ID0gWyZdIChUJiBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7CisgICAgICAgIFQgb2xkVmFsdWUg
PSBtZW1vcnk7CisgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAgIGNhc2UgQXRvbWlj
WGNoZ0FkZDoKKyAgICAgICAgICAgIG1lbW9yeSArPSBvcGVyYW5kOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIG1lbW9yeSAmPSBv
cGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgor
ICAgICAgICAgICAgbWVtb3J5IHw9IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAgICAgICAgbWVtb3J5IC09IG9wZXJhbmQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAg
ICAgbWVtb3J5IF49IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBB
dG9taWNYY2hnOgorICAgICAgICAgICAgbWVtb3J5ID0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb2xkVmFsdWU7CisgICAgfTsKKyAg
ICAKKyAgICBhdXRvIG9sZFZhbHVlID0gWyZdIChUIG1lbW9yeSwgVCBvcGVyYW5kKSAtPiBUIHsK
KyAgICAgICAgcmV0dXJuIGRvVGhlTWF0aChtZW1vcnksIG9wZXJhbmQpOworICAgIH07CisgICAg
CisgICAgYXV0byBuZXdWYWx1ZSA9IFsmXSAoVCBtZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7Cisg
ICAgICAgIGRvVGhlTWF0aChtZW1vcnksIG9wZXJhbmQpOworICAgICAgICByZXR1cm4gbWVtb3J5
OworICAgIH07CisgICAgCisgICAgYXV0byBjaGVja015RGlzYXNzZW1ibHkgPSBbJl0gKENvbXBp
bGF0aW9uJiBjb21waWxhdGlvbiwgYm9vbCBmZW5jZWQpIHsKKyAgICAgICAgaWYgKGlzWDg2KCkp
CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxvY2siKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoZmVuY2VkKSB7CisgICAgICAgICAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsZGF4Iik7CisgICAgICAgICAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJzdGx4Iik7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBp
bGF0aW9uLCAibGR4Iik7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29t
cGlsYXRpb24sICJzdHgiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisgICAg
CisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2lu
KCksIHdpZHRoLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCAxKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsK
KyAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1
ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIG9sZFZhbHVlKDUsIDEpKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIG5ld1ZhbHVlKDUsIDEpKTsKKyAgICAgICAgQ0hF
Q0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAgICAgIGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwg
dHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBw
cm9jLCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBl
bmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSkpOworICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHBy
b2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDU7CisgICAgICAg
IHZhbHVlWzFdID0gMTAwOworICAgICAgICBDSEVDS19FUShpbnZva2U8VD4oKmNvZGUsIHZhbHVl
KSwgb2xkVmFsdWUoNSwgNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIG5ld1ZhbHVl
KDUsIDQyKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMDApOworICAgICAgICBjaGVj
a015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICByb290LT5hcHBlbmRJ
bnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAg
ICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsx
XSA9IDEwMDsKKyAgICAgICAgaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0MikpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsx
XSwgMTAwKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9
CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21p
Y1ZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRoLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQy
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIDAsIEhlYXBSYW5n
ZSg0MiksIEhlYXBSYW5nZSgpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShw
cm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA1OworICAgICAg
ICB2YWx1ZVsxXSA9IDEwMDsKKyAgICAgICAgaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSk7CisgICAg
ICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0MikpOworICAgICAgICBDSEVDS19F
USh2YWx1ZVsxXSwgMTAwKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCBmYWxz
ZSk7CisgICAgfQorfQorCit2b2lkIHRlc3REZXBlbmQzMigpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
cHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBmaXJzdCA9IHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBwdHIsIDApOworICAg
IFZhbHVlKiBzZWNvbmQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBw
cm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBwdHIsCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFpFeHQzMiwgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEZXBl
bmQsIE9yaWdpbigpLCBmaXJzdCkpKSwKKyAgICAgICAgNCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBmaXJzdCwgc2Vjb25kKSk7Cisg
ICAgCisgICAgaW50MzJfdCB2YWx1ZXNbMl07CisgICAgdmFsdWVzWzBdID0gNDI7CisgICAgdmFs
dWVzWzFdID0gMHhiZWVmOworICAgIAorICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7Cisg
ICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJl
b3IiKTsKKyAgICBlbHNlIGlmIChpc1g4NigpKSB7CisgICAgICAgIGNoZWNrRG9lc05vdFVzZUlu
c3RydWN0aW9uKCpjb2RlLCAibWZlbmNlIik7CisgICAgICAgIGNoZWNrRG9lc05vdFVzZUluc3Ry
dWN0aW9uKCpjb2RlLCAibG9jayIpOworICAgIH0KKyAgICBDSEVDS19FUShpbnZva2U8aW50MzJf
dD4oKmNvZGUsIHZhbHVlcyksIDQyICsgMHhiZWVmKTsKK30KKwordm9pZCB0ZXN0RGVwZW5kNjQo
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSog
Zmlyc3QgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBP
cmlnaW4oKSwgcHRyLCAwKTsKKyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4o
KSwgcHRyLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEZXBlbmQs
IE9yaWdpbigpLCBmaXJzdCkpLAorICAgICAgICA4KTsKKyAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGZpcnN0LCBzZWNvbmQpKTsKKyAgICAK
KyAgICBpbnQ2NF90IHZhbHVlc1syXTsKKyAgICB2YWx1ZXNbMF0gPSA0MjsKKyAgICB2YWx1ZXNb
MV0gPSAweGJlZWY7CisgICAgCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBp
ZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImVvciIp
OworICAgIGVsc2UgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1
Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKKyAgICAgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rp
b24oKmNvZGUsICJsb2NrIik7CisgICAgfQorICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90Pigq
Y29kZSwgdmFsdWVzKSwgNDIgKyAweGJlZWYpOworfQorCiB2b2lkIHRlc3RXYXNtQm91bmRzQ2hl
Y2sodW5zaWduZWQgb2Zmc2V0KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTQzNzAsNiAr
MTUyMjEsMTMgQEAgZG91YmxlIG5lZ2F0aXZlWmVybygpCiAgICAgcmV0dXJuIC16ZXJvKCk7CiB9
CiAKKyNkZWZpbmUgUlVOX05PVyh0ZXN0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxv
ZygjdGVzdCAiLi4uXG4iKTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGVzdDsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiOiBP
SyFcbiIpOyAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKICNkZWZpbmUgUlVO
KHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCFzaG91
bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGJyZWFrOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE0NDIxLDEyICsxNTI3OSwxMSBAQCB2b2lk
IHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgICAgIHJldHVybiAhZmlsdGVyIHx8ICEhc3Ry
Y2FzZXN0cih0ZXN0TmFtZSwgZmlsdGVyKTsKICAgICB9OwogCi0gICAgLy8gV2UgcnVuIHRoaXMg
dGVzdCBmaXJzdCBiZWNhdXNlIGl0IGZpZGRsZXMgd2l0aCBzb21lCi0gICAgLy8gSlNDIG9wdGlv
bnMuCi0gICAgdGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigpOwor
ICAgIFJVTl9OT1codGVzdFRlcm1pbmFsUGF0Y2hwb2ludFRoYXROZWVkc1RvQmVTcGlsbGVkMigp
KTsKIAogICAgIFJVTih0ZXN0NDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkNDIoKSk7CisgICAgUlVO
KHRlc3RMb2FkQWNxNDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1heCgpKTsKICAg
ICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c09uZSgpKTsKICAgICBSVU4odGVzdExvYWRP
ZmZzZXRJbW05TWF4UGx1c1R3bygpKTsKQEAgLTE1MDk5LDE2ICsxNTk1NiwyMyBAQCB2b2lkIHJ1
bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3ROZWczMig1MikpOwogICAgIFJVTih0
ZXN0TmVnUHRyKDUzKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQzMig0NikpOworICAgIFJV
Tih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIoNDYpKTsKICAgICBSVU4odGVzdFN0b3JlQWRkTG9h
ZEltbTMyKDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ2NCg0NjAwKSk7CisgICAgUlVO
KHRlc3RTdG9yZVJlbEFkZExvYWRBY3E2NCg0NjAwKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExv
YWRJbW02NCg0NjAwKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4KDQsIExvYWQ4WikpOwor
ICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxOCg0LCBMb2FkOFopKTsKKyAgICBSVU4odGVz
dFN0b3JlUmVsQWRkRmVuY2VMb2FkQWNxOCg0LCBMb2FkOFopKTsKICAgICBSVU4odGVzdFN0b3Jl
QWRkTG9hZEltbTgoNCwgTG9hZDhaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQ4KDQsIExv
YWQ4UykpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxOCg0LCBMb2FkOFMpKTsKICAg
ICBSVU4odGVzdFN0b3JlQWRkTG9hZEltbTgoNCwgTG9hZDhTKSk7CiAgICAgUlVOKHRlc3RTdG9y
ZUFkZExvYWQxNig2LCBMb2FkMTZaKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZExvYWRBY3Ex
Nig2LCBMb2FkMTZaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0xNig2LCBMb2FkMTZa
KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQxNig2LCBMb2FkMTZTKSk7CisgICAgUlVOKHRl
c3RTdG9yZVJlbEFkZExvYWRBY3ExNig2LCBMb2FkMTZTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFk
ZExvYWRJbW0xNig2LCBMb2FkMTZTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWQzMkluZGV4
KDQ2KSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0zMkluZGV4KDQ2KSk7CkBAIC0xNTgz
MSw2ICsxNjY5NSw0MSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRl
c3RMb2FkQmFzZUluZGV4U2hpZnQyKCkpOwogICAgIFJVTih0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0
MzIoKSk7CiAgICAgUlVOKHRlc3RPcHRpbWl6ZU1hdGVyaWFsaXphdGlvbigpKTsKKyAgICAKKyAg
ICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50OF90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dl
YWtDQVM8aW50MTZfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDMyX3Q+KCkp
OworICAgIFJVTih0ZXN0QXRvbWljV2Vha0NBUzxpbnQ2NF90PigpKTsKKyAgICBSVU4odGVzdEF0
b21pY1N0cm9uZ0NBUzxpbnQ4X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGlu
dDE2X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDMyX3Q+KCkpOworICAg
IFJVTih0ZXN0QXRvbWljU3Ryb25nQ0FTPGludDY0X3Q+KCkpOworICAgIFJVTih0ZXN0QXRvbWlj
WGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50
MTZfdD4oQXRvbWljWGNoZ0FkZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihB
dG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hj
aGdBZGQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnQW5kKSk7
CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdBbmQpKTsKKyAgICBS
VU4odGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0
QXRvbWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNY
Y2hnPGludDhfdD4oQXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2
X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9t
aWNYY2hnT3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ09y
KSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhfdD4oQXRvbWljWGNoZ1N1YikpOworICAg
IFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hnU3ViKSk7CisgICAgUlVOKHRl
c3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxp
bnQ4X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4o
QXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNY
Y2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdYb3Ip
KTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnKSk7CisgICAgUlVO
KHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGcpKTsKKyAgICBSVU4odGVzdEF0b21p
Y1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZykpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ2
NF90PihBdG9taWNYY2hnKSk7CisgICAgUlVOKHRlc3REZXBlbmQzMigpKTsKKyAgICBSVU4odGVz
dERlcGVuZDY0KCkpOwogCiAgICAgUlVOKHRlc3RXYXNtQm91bmRzQ2hlY2soMCkpOwogICAgIFJV
Tih0ZXN0V2FzbUJvdW5kc0NoZWNrKDEwMCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJBcmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQXJnLmNwcAkocmV2aXNpb24gMjEzNDkyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBcmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAg
dW5zaWduZWQgQXJnOjpqc0hhc2goKSBjb25zdAogICAgIGNhc2UgUmVsQ29uZDoKICAgICBjYXNl
IFJlc0NvbmQ6CiAgICAgY2FzZSBEb3VibGVDb25kOgorICAgIGNhc2UgU3RhdHVzQ29uZDoKICAg
ICBjYXNlIFdpZHRoQXJnOgogICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fb2Zmc2V0KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTAsNiArMTExLDkgQEAgdW5zaWduZWQg
QXJnOjpqc0hhc2goKSBjb25zdAogICAgICAgICByZXN1bHQgKz0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fb2Zmc2V0KTsKICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X29mZnNldCA+PiAzMik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltcGxlQWRkcjoKKyAg
ICAgICAgcmVzdWx0ICs9IG1fYmFzZS5pbnRlcm5hbFZhbHVlKCk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQWRkcjoKICAgICAgICAgcmVzdWx0ICs9IG1fb2Zmc2V0OwogICAgICAgICByZXN1
bHQgKz0gbV9iYXNlLmludGVybmFsVmFsdWUoKTsKQEAgLTE1MCw2ICsxNTQsOSBAQCB2b2lkIEFy
Zzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIGNhc2UgQml0SW1tNjQ6CiAgICAg
ICAgIG91dC5wcmludGYoIiQweCVsbHgiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmcgdW5zaWduZWQ+
KG1fb2Zmc2V0KSk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFNpbXBsZUFkZHI6CisgICAg
ICAgIG91dC5wcmludCgiKCIsIGJhc2UoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgQWRkcjoKICAgICAgICAgaWYgKG9mZnNldCgpKQogICAgICAgICAgICAgb3V0LnByaW50KG9m
ZnNldCgpKTsKQEAgLTE4Miw2ICsxODksOSBAQCB2b2lkIEFyZzo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogICAgIGNhc2UgRG91YmxlQ29uZDoKICAgICAgICAgb3V0LnByaW50KGFzRG91
YmxlQ29uZGl0aW9uKCkpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0dXNDb25kOgor
ICAgICAgICBvdXQucHJpbnQoYXNTdGF0dXNDb25kaXRpb24oKSk7CisgICAgICAgIHJldHVybjsK
ICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIG91dC5wcmludChwb2ludGVyRHVtcChzcGVjaWFs
KCkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjIwLDYgKzIzMCw5IEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6Qml0SW1tNjQ6CiAgICAg
ICAgIG91dC5wcmludCgiQml0SW1tNjQiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJn
OjpTaW1wbGVBZGRyOgorICAgICAgICBvdXQucHJpbnQoIlNpbXBsZUFkZHIiKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQXJnOjpBZGRyOgogICAgICAgICBvdXQucHJpbnQoIkFkZHIiKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjQxLDYgKzI1NCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6RG91YmxlQ29uZDoKICAgICAgICAg
b3V0LnByaW50KCJEb3VibGVDb25kIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6
U3RhdHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KCJTdGF0dXNDb25kIik7CisgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIEFyZzo6U3BlY2lhbDoKICAgICAgICAgb3V0LnByaW50KCJTcGVjaWFs
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NSw2ICszMDEsOSBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgogICAgICAg
ICBvdXQucHJpbnQoIkVhcmx5RGVmIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6
RWFybHlaRGVmOgorICAgICAgICBvdXQucHJpbnQoIkVhcmx5WkRlZiIpOworICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgIG91dC5wcmludCgiU2NyYXRjaCIp
OwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckFyZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJn
LmgJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QXJnLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogCiAgICAgICAg
IC8vIFRoZXNlIGFyZSB0aGUgYWRkcmVzc2VzLiBJbnN0cnVjdGlvbnMgbWF5IGxvYWQgZnJvbSAo
VXNlKSwgc3RvcmUgdG8gKERlZiksIG9yIGV2YWx1YXRlCiAgICAgICAgIC8vIChVc2VBZGRyKSBh
ZGRyZXNzZXMuCisgICAgICAgIFNpbXBsZUFkZHIsCiAgICAgICAgIEFkZHIsCiAgICAgICAgIFN0
YWNrLAogICAgICAgICBDYWxsQXJnLApAQCAtODIsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFJlbENvbmQsCiAgICAgICAgIFJlc0NvbmQsCiAgICAgICAgIERvdWJsZUNvbmQsCisgICAgICAg
IFN0YXR1c0NvbmQsCiAgICAgICAgIFNwZWNpYWwsCiAgICAgICAgIFdpZHRoQXJnCiAgICAgfTsK
QEAgLTE1MSw2ICsxNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGFzIFVzZSBoYXMgdW5kZWZp
bmVkIGJlaGF2aW9yOiB0aGUgdXNlIG1heSBoYXBwZW4gYmVmb3JlIHRoZSBkZWYsIG9yIGl0IG1h
eSBoYXBwZW4gYWZ0ZXIKICAgICAgICAgLy8gaXQuCiAgICAgICAgIEVhcmx5RGVmLAorICAgICAg
ICAgICAgCisgICAgICAgIEVhcmx5WkRlZiwKIAogICAgICAgICAvLyBTb21lIGluc3RydWN0aW9u
cyBuZWVkIGEgc2NyYXRjaCByZWdpc3Rlci4gV2UgbW9kZWwgdGhpcyBieSBzYXlpbmcgdGhhdCB0
aGUgdGVtcG9yYXJ5IGlzCiAgICAgICAgIC8vIGRlZmluZWQgZWFybHkgYW5kIHVzZWQgbGF0ZS4g
VGhpcyByb2xlIGltcGxpZXMgdGhhdC4KQEAgLTE4Niw2ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhc2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIEVhcmx5
RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIwNiw2ICsyMTEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBTY3JhdGNo
OgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTIyOCw2ICsyMzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoK
ICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBj
YXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAgIHJldHVybiByb2xlOwogICAgICAgICBjYXNlIFVz
ZToKICAgICAgICAgICAgIHJldHVybiBDb2xkVXNlOwpAQCAtMjUzLDYgKzI2MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBMYXRlQ29sZFVzZToKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAg
ICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTI3NCw2ICsyODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgWkRlZjoKICAgICAgICAg
Y2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNlIEVhcmx5
WkRlZjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5NCw2ICszMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNh
c2UgWkRlZjoKICAgICAgICAgY2FzZSBVc2VaRGVmOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgor
ICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMxNSw2ICszMjUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAgICAgICBjYXNl
IFNjcmF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzMwLDYg
KzM0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VBZGRyOgogICAgICAgICBjYXNlIExh
dGVVc2U6CiAgICAgICAgIGNhc2UgRWFybHlEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgog
ICAgICAgICBjYXNlIFNjcmF0Y2g6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTgsNiArMzcwLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlWkRl
ZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQxNiw2ICs0MjksMTUg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYmlnSW1tKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4o
YWRkcmVzcykpOwogICAgIH0KIAorICAgIHN0YXRpYyBBcmcgc2ltcGxlQWRkcihBaXI6OlRtcCBw
dHIpCisgICAgeworICAgICAgICBBU1NFUlQocHRyLmlzR1AoKSk7CisgICAgICAgIEFyZyByZXN1
bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBTaW1wbGVBZGRyOworICAgICAgICByZXN1bHQu
bV9iYXNlID0gcHRyOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIHN0YXRp
YyBBcmcgYWRkcihBaXI6OlRtcCBiYXNlLCBpbnQzMl90IG9mZnNldCA9IDApCiAgICAgewogICAg
ICAgICBBU1NFUlQoYmFzZS5pc0dQKCkpOwpAQCAtNTMzLDYgKzU1NSwxNCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgc3RhdGljIEFyZyBzdGF0dXNDb25k
KE1hY3JvQXNzZW1ibGVyOjpTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQorICAgIHsKKyAgICAg
ICAgQXJnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFN0YXR1c0NvbmQ7CisgICAg
ICAgIHJlc3VsdC5tX29mZnNldCA9IGNvbmRpdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKICAgICBzdGF0aWMgQXJnIHNwZWNpYWwoQWlyOjpTcGVjaWFsKiBzcGVjaWFsKQog
ICAgIHsKICAgICAgICAgQXJnIHJlc3VsdDsKQEAgLTYwOCw2ICs2MzgsMTEgQEAgcHVibGljOgog
ICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBpc1NpbXBsZUFkZHIoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBTaW1wbGVBZGRyOworICAgIH0KKwogICAgIGJvb2wg
aXNBZGRyKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBraW5kKCkgPT0gQWRkcjsKQEAg
LTYzMSw2ICs2NjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01lbW9yeSgpIGNvbnN0CiAgICAg
ewogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CiAg
ICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgY2FzZSBTdGFjazoKICAgICAgICAgY2FzZSBDYWxs
QXJnOgpAQCAtNjQxLDYgKzY3NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBpcyBhbiBpZGlvbWF0aWMgc3RhY2sgcmVmZXJlbmNl
LiBJdCBtYXkgcmV0dXJuIGZhbHNlIGZvciBzb21lIGtpbmRzIG9mCisgICAgLy8gc3RhY2sgcmVm
ZXJlbmNlcy4gVGhlIGZvbGxvd2luZyBpZGlvbXMgYXJlIHJlY29nbml6ZWQ6CisgICAgLy8gLSB0
aGUgU3RhY2sga2luZAorICAgIC8vIC0gdGhlIENhbGxBcmcga2luZAorICAgIC8vIC0gdGhlIEFk
ZHIga2luZCB3aXRoIHRoZSBiYXNlIGJlaW5nIGVpdGhlciBTUCBvciBGUAorICAgIC8vIENhbGxl
cnMgb2YgdGhpcyBmdW5jdGlvbiBhcmUgYWxsb3dlZCB0byBleHBlY3QgdGhhdCBpZiBpdCByZXR1
cm5zIHRydWUsIHRoZW4gaXQgbXVzdCBiZSBvbmUgb2YKKyAgICAvLyB0aGVzZSBlYXN5LXRvLXJl
Y29nbml6ZSBraW5kcy4gU28sIG1ha2luZyB0aGlzIGZ1bmN0aW9uIHJlY29nbml6ZSBtb3JlIGtp
bmRzIGNvdWxkIGJyZWFrIHRoaW5ncy4KICAgICBib29sIGlzU3RhY2tNZW1vcnkoKSBjb25zdDsK
IAogICAgIGJvb2wgaXNSZWxDb25kKCkgY29uc3QKQEAgLTY1OCwxMiArNzAxLDE4IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGtpbmQoKSA9PSBEb3VibGVDb25kOwogICAgIH0KIAorICAgIGJv
b2wgaXNTdGF0dXNDb25kKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0g
U3RhdHVzQ29uZDsKKyAgICB9CisKICAgICBib29sIGlzQ29uZGl0aW9uKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAg
ICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2Ug
U3RhdHVzQ29uZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzc0LDEwICs4MjMsMTYgQEAgcHVibGljOgog
ICAgICAgICBBU1NFUlQoa2luZCgpID09IEJpZ0ltbSk7CiAgICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihtX29mZnNldCkpOwogICAgIH0KKyAg
ICAKKyAgICBBaXI6OlRtcCBwdHIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGtpbmQo
KSA9PSBTaW1wbGVBZGRyKTsKKyAgICAgICAgcmV0dXJuIG1fYmFzZTsKKyAgICB9CiAKICAgICBB
aXI6OlRtcCBiYXNlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChraW5kKCkgPT0gQWRk
ciB8fCBraW5kKCkgPT0gSW5kZXgpOworICAgICAgICBBU1NFUlQoa2luZCgpID09IFNpbXBsZUFk
ZHIgfHwga2luZCgpID09IEFkZHIgfHwga2luZCgpID09IEluZGV4KTsKICAgICAgICAgcmV0dXJu
IG1fYmFzZTsKICAgICB9CiAKQEAgLTg0NCw2ICs4OTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNh
c2UgQmlnSW1tOgogICAgICAgICBjYXNlIEJpdEltbToKICAgICAgICAgY2FzZSBCaXRJbW02NDoK
KyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGNh
c2UgSW5kZXg6CiAgICAgICAgIGNhc2UgU3RhY2s6CkBAIC04NTEsNiArOTA3LDcgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAg
Y2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2Ug
U3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtODcyLDEwICs5MjksMTIgQEAgcHVibGljOgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAg
ICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBj
YXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0
aEFyZzoKICAgICAgICAgY2FzZSBJbnZhbGlkOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAgICAgY2Fz
ZSBJbmRleDoKICAgICAgICAgY2FzZSBTdGFjazoKQEAgLTEwNDksNiArMTEwOCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkQml0SW1tRm9ybSh2YWx1ZSgpKTsKICAgICAg
ICAgY2FzZSBCaXRJbW02NDoKICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkQml0SW1tNjRGb3Jt
KHZhbHVlKCkpOworICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgY2FzZSBBZGRyOgogICAgICAgICBjYXNlIFN0YWNrOgogICAgICAgICBj
YXNlIENhbGxBcmc6CkBAIC0xMDU4LDYgKzExMTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
UmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERvdWJsZUNvbmQ6
CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgY2FzZSBTcGVjaWFsOgogICAgICAg
ICBjYXNlIFdpZHRoQXJnOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDcwLDYgKzEx
MzIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgICAg
ICBjYXNlIFRtcDoKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6
CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEx
MTAsNiArMTE3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVChpc0FueVVzZShhcmdS
b2xlKSB8fCBpc0FueURlZihhcmdSb2xlKSk7CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmFzZSwg
YXJnUm9sZSwgYXJnQmFuaywgYXJnV2lkdGgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU2ltcGxlQWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgogICAgICAgICAgICAgZnVuY3Rv
cihtX2Jhc2UsIFVzZSwgR1AsIGFyZ1JvbGUgPT0gVXNlQWRkciA/IGFyZ1dpZHRoIDogcG9pbnRl
cldpZHRoKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTQ0LDkgKzEyMDgsMTEgQEAgcHVi
bGljOgogICAgICAgICAgICAgQVNTRVJUKGlzSW1tKCkpOwogICAgICAgICByZXR1cm4gTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocG9pbnRlclZhbHVlKCkpOwogICAgIH0KLQorICAgIAog
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFzQWRkcmVzcygpIGNvbnN0CiAgICAgeworICAg
ICAgICBpZiAoaXNTaW1wbGVBZGRyKCkpCisgICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MobV9iYXNlLmdwcigpKTsKICAgICAgICAgQVNTRVJUKGlzQWRkcigpKTsKICAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5ncHIoKSwgc3RhdGlj
X2Nhc3Q8aW50MzJfdD4obV9vZmZzZXQpKTsKICAgICB9CkBAIC0xMTc3LDYgKzEyNDMsMTIgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZUNvbmRpdGlvbj4obV9vZmZzZXQpOwogICAgIH0KICAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
U3RhdHVzQ29uZGl0aW9uIGFzU3RhdHVzQ29uZGl0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChpc1N0YXR1c0NvbmQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNy
b0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9uPihtX29mZnNldCk7CisgICAgfQorICAgIAogICAg
IC8vIFRlbGxzIHlvdSBpZiB0aGUgQXJnIGlzIGludmVydGlibGUuIE9ubHkgY29uZGl0aW9uIGFy
Z3VtZW50cyBhcmUgaW52ZXJ0aWJsZSwgYW5kIGV2ZW4gZm9yIHRob3NlLCB0aGVyZQogICAgIC8v
IGFyZSBhIGZldyBleGNlcHRpb25zIC0gbm90YWJseSBPdmVyZmxvdyBhbmQgU2lnbmVkLgogICAg
IGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3QKQEAgLTExODQsNiArMTI1Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAg
ICBjYXNlIERvdWJsZUNvbmQ6CisgICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXI6OmlzSW52ZXJ0aWJsZShhc1Jlc3VsdENvbmRpdGlvbigpKTsKQEAgLTEy
MDQsNiArMTI3Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiByZXNDb25kKE1hY3Jv
QXNzZW1ibGVyOjppbnZlcnQoYXNSZXN1bHRDb25kaXRpb24oKSkpOwogICAgICAgICBjYXNlIERv
dWJsZUNvbmQ6CiAgICAgICAgICAgICByZXR1cm4gZG91YmxlQ29uZChNYWNyb0Fzc2VtYmxlcjo6
aW52ZXJ0KGFzRG91YmxlQ29uZGl0aW9uKCkpKTsKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgor
ICAgICAgICAgICAgcmV0dXJuIHN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc1N0
YXR1c0NvbmRpdGlvbigpKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIEFyZygpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCShyZXZp
c2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDYgKzM1LDE5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeyBuYW1lc3BhY2UKIAogY29uc3QgY2hhciogY29uc3QgQmFzaWNCbG9jazo6ZHVt
cFByZWZpeCA9ICIjIjsKIAordm9pZCBCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKEZyZXF1ZW50
ZWRCbG9jayB0YXJnZXQpCit7CisgICAgbV9zdWNjZXNzb3JzLnJlc2l6ZSgxKTsKKyAgICBtX3N1
Y2Nlc3NvcnNbMF0gPSB0YXJnZXQ7Cit9CisKK3ZvaWQgQmFzaWNCbG9jazo6c2V0U3VjY2Vzc29y
cyhGcmVxdWVudGVkQmxvY2sgdGFrZW4sIEZyZXF1ZW50ZWRCbG9jayBub3RUYWtlbikKK3sKKyAg
ICBtX3N1Y2Nlc3NvcnMucmVzaXplKDIpOworICAgIG1fc3VjY2Vzc29yc1swXSA9IHRha2VuOwor
ICAgIG1fc3VjY2Vzc29yc1sxXSA9IG5vdFRha2VuOworfQorCiBib29sIEJhc2ljQmxvY2s6OmFk
ZFByZWRlY2Vzc29yKEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIHJldHVybiBCMzo6YWRkUHJl
ZGVjZXNzb3IodGhpcywgYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyAr
MzMsMTEgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFp
ciB7CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+
IGNsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlvblNldDsKKworbmFtZXNwYWNlIEFpciB7CiAKIGNs
YXNzIEJsb2NrSW5zZXJ0aW9uU2V0OwogY2xhc3MgQ29kZTsKQEAgLTk5LDYgKzEwMyw5IEBAIHB1
YmxpYzoKICAgICBjb25zdCBTdWNjZXNzb3JMaXN0JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1
cm4gbV9zdWNjZXNzb3JzOyB9CiAgICAgU3VjY2Vzc29yTGlzdCYgc3VjY2Vzc29ycygpIHsgcmV0
dXJuIG1fc3VjY2Vzc29yczsgfQogCisgICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRC
bG9jayk7CisgICAgdm9pZCBzZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jaywgRnJlcXVlbnRl
ZEJsb2NrKTsKKwogICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGluZGV4
KSBjb25zdCB7IHJldHVybiBzdWNjZXNzb3IoaW5kZXgpLmJsb2NrKCk7IH0KICAgICBCYXNpY0Js
b2NrKiYgc3VjY2Vzc29yQmxvY2sodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIHN1Y2Nlc3Nvcihp
bmRleCkuYmxvY2soKTsgfQogICAgIFN1Y2Nlc3NvckNvbGxlY3Rpb248QmFzaWNCbG9jaywgU3Vj
Y2Vzc29yTGlzdD4gc3VjY2Vzc29yQmxvY2tzKCkKQEAgLTEzMyw2ICsxNDAsNyBAQCBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKICAgICBmcmllbmQgY2xhc3Mg
Q29kZTsKICAgICBmcmllbmQgY2xhc3MgSW5zZXJ0aW9uU2V0OworICAgIHRlbXBsYXRlPHR5cGVu
YW1lPiBmcmllbmQgY2xhc3MgQjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDsKICAgICAKICAg
ICBCYXNpY0Jsb2NrKHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5KTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlv
blNldC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJCbG9ja0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRpb25TZXQuaCIKKworI2lmIEVOQUJM
RShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQWlyQ29k
ZS5oIgorI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworQmxvY2tJbnNlcnRpb25TZXQ6OkJsb2NrSW5z
ZXJ0aW9uU2V0KENvZGUgJmNvZGUpCisgICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQoY29k
ZS5tX2Jsb2NrcykKK3sKK30KKworQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNl
dCgpCit7Cit9CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8v
IEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QmxvY2tJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAi
QjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJBaXJDb2RlLmgiCisjaW5j
bHVkZSA8d3RmL0luc2VydGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCitjbGFzcyBJbnNlcnRp
b25TZXQ7CisKK3R5cGVkZWYgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+OjpC
bG9ja0luc2VydGlvbiBCbG9ja0luc2VydGlvbjsKKworY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQg
OiBwdWJsaWMgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0PEJhc2ljQmxvY2s+IHsKK3B1YmxpYzoK
KyAgICBCbG9ja0luc2VydGlvblNldChDb2RlJik7CisgICAgfkJsb2NrSW5zZXJ0aW9uU2V0KCk7
CisgICAgCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBldmVudHVhbGx5IGltcGxlbWVudCBCMzo6
QmxvY2tJbnNlcnRpb25TZXQncyBzcGxpdEZvcndhcmQoKS4KKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MjUzCit9OworCit9IH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5jcHAJKHJldmlzaW9uIDIxMzQ5
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFzSlMuY3BwCShub25l
eGlzdGVudCkKQEAgLTEsMjQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQWly
RHVtcEFzSlMuaCIKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRlICJBaXJDb2RlLmgi
Ci0jaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7IG5hbWVzcGFjZSBBaXIgewotCi1uYW1lc3BhY2UgewotCi1DU3RyaW5nIHZhck5hbWVG
b3JCbG9ja0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgcmV0dXJuIHRvQ1N0cmluZygi
YmIiLCBpbmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShCYXNpY0Jsb2NrKiBibG9jaykKLXsK
LSAgICByZXR1cm4gdmFyTmFtZUZvckJsb2NrQXRJbmRleChibG9jay0+aW5kZXgoKSk7Ci19Ci0K
LUNTdHJpbmcgdmFyTmFtZUZvclN0YWNrU2xvdEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0g
ICAgcmV0dXJuIHRvQ1N0cmluZygic2xvdCIsIGluZGV4KTsKLX0KLQotQ1N0cmluZyB2YXJOYW1l
KFN0YWNrU2xvdCogc2xvdCkKLXsKLSAgICByZXR1cm4gdmFyTmFtZUZvclN0YWNrU2xvdEF0SW5k
ZXgoc2xvdC0+aW5kZXgoKSk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShSZWcgcmVnKQotewotICAg
IHJldHVybiB0b0NTdHJpbmcoIlJlZy4iLCByZWcuZGVidWdOYW1lKCkpOwotfQotCi1DU3RyaW5n
IHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZEluZGV4KEJhbmsgYmFuaywgdW5zaWduZWQgaW5kZXgp
Ci17Ci0gICAgcmV0dXJuIHRvQ1N0cmluZyhiYW5rID09IEZQID8gImYiIDogIiIsICJ0bXAiLCBp
bmRleCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShUbXAgdG1wKQotewotICAgIGlmICh0bXAuaXNS
ZWcoKSkKLSAgICAgICAgcmV0dXJuIHZhck5hbWUodG1wLnJlZygpKTsKLSAgICByZXR1cm4gdmFy
TmFtZUZvclRtcFdpdGhCYW5rQW5kSW5kZXgoQXJnKHRtcCkuYmFuaygpLCB0bXAudG1wSW5kZXgo
KSk7Ci19Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi12b2lkIGR1bXBBc0pTKENvZGUm
IGNvZGUsIFByaW50U3RyZWFtJiBvdXQpCi17Ci0gICAgb3V0LnByaW50bG4oImxldCBjb2RlID0g
bmV3IENvZGUoKTsiKTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZS5z
aXplKCk7ICsraSkKLSAgICAgICAgb3V0LnByaW50bG4oImxldCAiLCB2YXJOYW1lRm9yQmxvY2tB
dEluZGV4KGkpLCAiID0gY29kZS5hZGRCbG9jaygpOyIpOwotICAgIAotICAgIG91dC5wcmludGxu
KCJsZXQgaGFzaDsiKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlLnN0YWNr
U2xvdHMoKS5zaXplKCk7ICsraSkgewotICAgICAgICBTdGFja1Nsb3QqIHNsb3QgPSBjb2RlLnN0
YWNrU2xvdHMoKVtpXTsKLSAgICAgICAgaWYgKHNsb3QpIHsKLSAgICAgICAgICAgIG91dC5wcmlu
dGxuKCJsZXQgIiwgdmFyTmFtZShzbG90KSwgIiA9IGNvZGUuYWRkU3RhY2tTbG90KCIsIHNsb3Qt
PmJ5dGVTaXplKCksICIsICIsIHNsb3QtPmtpbmQoKSwgIik7Iik7Ci0gICAgICAgICAgICBpZiAo
c2xvdC0+b2Zmc2V0RnJvbUZQKCkpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFt
ZShzbG90KSwgIi5zZXRPZmZzZXRGcm9tRlAoIiwgc2xvdC0+b2Zmc2V0RnJvbUZQKCksICIpOyIp
OwotICAgICAgICAgICAgb3V0LnByaW50bG4oImhhc2ggPSAiLCB2YXJOYW1lKHNsb3QpLCAiLmhh
c2goKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJpZiAoaGFzaCAhPSAiLCBzbG90LT5q
c0hhc2goKSwgIikiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCIgICAgdGhyb3cgbmV3IEVy
cm9yKFwiQmFkIGhhc2g6IFwiICsgaGFzaCk7Iik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgb3V0LnByaW50bG4oImNvZGUuYWRkU3RhY2tTbG90KDEsIFNwaWxsKTsiKTsKLSAgICB9Ci0g
ICAgCi0gICAgZm9yRWFjaEJhbmsoCi0gICAgICAgIFsmXSAoQmFuayBiYW5rKSB7Ci0gICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlLm51bVRtcHMoYmFuayk7IGktLTspIHsKLSAgICAg
ICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgImxldCAiLCB2YXJO
YW1lRm9yVG1wV2l0aEJhbmtBbmRJbmRleChiYW5rLCBpKSwgIiA9IGNvZGUubmV3VG1wKCIsIGJh
bmssICIpOyIpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAKLSAgICBvdXQucHJp
bnRsbigibGV0IGluc3Q7Iik7Ci0gICAgb3V0LnByaW50bG4oImxldCBhcmc7Iik7Ci0gICAgCi0g
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKLSAgICAgICAgZm9yIChGcmVxdWVu
dGVkQmxvY2sgc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAg
b3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgdmFyTmFtZShibG9jayksICIuc3VjY2Vzc29y
cy5wdXNoKG5ldyBGcmVxdWVudGVkQmxvY2soIiwKLSAgICAgICAgICAgICAgICB2YXJOYW1lKHN1
Y2Nlc3Nvci5ibG9jaygpKSwgIiwgIiwgc3VjY2Vzc29yLmZyZXF1ZW5jeSgpLCAiKSk7Iik7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNzb3Ig
OiBibG9jay0+cHJlZGVjZXNzb3JzKCkpCi0gICAgICAgICAgICBvdXQucHJpbnRsbih2YXJOYW1l
KGJsb2NrKSwgIi5wcmVkZWNlc3NvcnMucHVzaCgiLCB2YXJOYW1lKHByZWRlY2Vzc29yKSwgIik7
Iik7Ci0gICAgICAgIAotICAgICAgICBmb3IgKEluc3QmIGluc3QgOiAqYmxvY2spIHsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBkbyBzb21ldGhpbmcgZm9yIGZsYWdzLgotICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjc1
MQotICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QgPSBuZXcgSW5zdCgiLCBpbnN0LmtpbmQu
b3Bjb2RlLCAiKTsiKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW5zdC5mb3JFYWNoQXJn
KAotICAgICAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSwgQmFuaywgV2lkdGgp
IHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhcmcua2luZCgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJnOjpJbnZhbGlkOgotICAgICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpUbXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNy
ZWF0ZVRtcCgiLCB2YXJOYW1lKGFyZy50bXAoKSksICIpOyIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkltbToKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJh
cmcgPSBBcmcuY3JlYXRlSW1tKCIsIGFyZy52YWx1ZSgpLCAiKTsiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgQXJnOjpCaWdJbW06Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUJpZ0lt
bSgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFy
Zy52YWx1ZSgpKSwgIiwgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQzMl90PihhcmcudmFsdWUoKSA+PiAzMiksICIpOyIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkJpdEltbToKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxu
KCJhcmcgPSBBcmcuY3JlYXRlQml0SW1tKCIsIGFyZy52YWx1ZSgpLCAiKTsiKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXJnOjpCaXRJbW02NDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmcgPSBBcmcuY3Jl
YXRlQml0SW1tNjQoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnQzMl90PihhcmcudmFsdWUoKSksICIsICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkgPj4gMzIpLCAiKTsiKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXJnOjpBZGRyOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0
LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVB
ZGRyKCIsIHZhck5hbWUoYXJnLmJhc2UoKSksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U3RhY2s6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJnID0gQXJn
LmNyZWF0ZVN0YWNrKCIsIHZhck5hbWUoYXJnLnN0YWNrU2xvdCgpKSwgIiwgIiwgYXJnLm9mZnNl
dCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpDYWxsQXJnOgotICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVDYWxsQXJn
KCIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
SW5kZXg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUluZGV4KCIsIHZhck5hbWUoYXJnLmJh
c2UoKSksICIsICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyTmFtZShhcmcuaW5k
ZXgoKSksICIsICIsIGFyZy5zY2FsZSgpLCAiLCAiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlJlbENvbmQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVJlbENvbmQoIiwgYXJnLmFzUmVsYXRp
b25hbENvbmRpdGlvbigpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpS
ZXNDb25kOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5j
cmVhdGVSZXNDb25kKCIsIGFyZy5hc1Jlc3VsdENvbmRpdGlvbigpLCAiKTsiKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXJnOjpEb3VibGVDb25kOgotICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVEb3VibGVDb25kKCIsIGFyZy5hc0RvdWJs
ZUNvbmRpdGlvbigpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpTcGVj
aWFsOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVh
dGVTcGVjaWFsKCk7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6V2lkdGhBcmc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZVdp
ZHRoQXJnKCIsIGFyZy53aWR0aCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5hcmdzLnB1c2goYXJnKTsiKTsKLSAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGluc3Qua2luZC5v
cGNvZGUgPT0gUGF0Y2gpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5zdC5oYXNOb25BcmdFZmZl
Y3RzKCkpCi0gICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LnBhdGNoSGFzTm9u
QXJnRWZmZWN0cyA9IHRydWU7Iik7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
b3V0LnByaW50bG4oImluc3QuZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MgPSBuZXcgU2V0KCk7Iik7
Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QuZXh0cmFDbG9iYmVyZWRSZWdzID0g
bmV3IFNldCgpOyIpOwotICAgICAgICAgICAgICAgIGluc3QuZXh0cmFFYXJseUNsb2JiZXJlZFJl
Z3MoKS5mb3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhRWFybHlDbG9iYmVyZWRS
ZWdzLmFkZCgiLCB2YXJOYW1lKHJlZyksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgICAgICBpbnN0LmV4dHJhQ2xvYmJlcmVkUmVncygpLmZvckVhY2goCi0gICAg
ICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykgewotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50bG4oImluc3QuZXh0cmFDbG9iYmVyZWRSZWdzLmFkZCgiLCB2YXJOYW1lKHJlZyks
ICIpOyIpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5wYXRjaEFyZ0RhdGEgPSBbXTsiKTsKLSAgICAg
ICAgICAgICAgICBpbnN0LmZvckVhY2hBcmcoCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoQXJn
JiwgQXJnOjpSb2xlIHJvbGUsIEJhbmsgYmFuaywgV2lkdGggd2lkdGgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJp
bnN0LnBhdGNoQXJnRGF0YS5wdXNoKHtyb2xlOiBBcmcuIiwgcm9sZSwgIiwgdHlwZTogIiwgYmFu
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCB3aWR0aDogIiwgd2lkdGgsICJ9KTsi
KTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IENDYWxsIHx8IGluc3Qua2luZC5v
cGNvZGUgPT0gQ29sZENDYWxsKSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3Qu
Y0NhbGxUeXBlID0gIiwgaW5zdC5vcmlnaW4tPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgb3V0
LnByaW50bG4oImluc3QuY0NhbGxBcmdUeXBlcyA9IFtdOyIpOwotICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDE7IGkgPCBpbnN0Lm9yaWdpbi0+bnVtQ2hpbGRyZW4oKTsgKytpKQot
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiaW5zdC5jQ2FsbEFyZ1R5cGVzLnB1c2go
IiwgaW5zdC5vcmlnaW4tPmNoaWxkKGkpLT50eXBlKCksICIpOyIpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBvdXQucHJpbnRsbigiaGFzaCA9IGluc3QuaGFzaCgp
OyIpOwotICAgICAgICAgICAgb3V0LnByaW50bG4oImlmIChoYXNoICE9ICIsIGluc3QuanNIYXNo
KCksICIpIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigiICAgIHRocm93IG5ldyBFcnJvcihc
IkJhZCBoYXNoOiBcIiArIGhhc2gpOyIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBvdXQu
cHJpbnRsbih2YXJOYW1lKGJsb2NrKSwgIi5hcHBlbmQoaW5zdCk7Iik7Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKLQotI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVt
cEFzSlMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1
bXBBc0pTLmgJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRHVtcEFzSlMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoQjNfSklUKQotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKLQotY2xhc3MgQ29kZTsK
LQotLy8gVGhpcyBpcyB1c2VkIGZvciBiZW5jaG1hcmtpbmcuIFZhcmlvdXMgb3BlcmF0aW9ucyBv
biBBaXIgYXJlIGludGVyZXN0aW5nIGZyb20gYSBiZW5jaG1hcmtpbmcKLS8vIHN0YW5kcG9pbnQu
IFdlIGNhbiB3cml0ZSBzb21lIEFpciBwaGFzZXMgaW4gSlMgYW5kIHRoZW4gdXNlIHRoYXQgdG8g
YmVuY2htYXJrIEpTLiBUaGUgYmVuY2htYXJrCi0vLyBpcyBjYWxsZWQgSlNBaXIsIGFuZCBpdCdz
IGluIFBlcmZvcm1hbmNlVGVzdHMvSlNBaXIuCi12b2lkIGR1bXBBc0pTKENvZGUmLCBQcmludFN0
cmVhbSYpOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCi0KLSNlbmRpZiAvLyBF
TkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbGlt
aW5hdGVEZWFkQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAJKHJldmlzaW9uIDIxMzQ5MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTgsNiArMTE4LDggQEAgYm9vbCBlbGltaW5hdGVEZWFkQ29kZShDb2RlJiBj
b2RlKQogICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAodW5zaWduZWQgYmxv
Y2tJbmRleCA9IGNvZGUuc2l6ZSgpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBibG9jayA9IGNvZGVbYmxvY2tJbmRleF07CisgICAgICAgICAgICBpZiAoIWJsb2Nr
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnN0SW5kZXggPSBibG9jay0+c2l6ZSgpOyBpbnN0SW5kZXgtLTspCiAgICAgICAgICAgICAgICAg
aGFuZGxlSW5zdChibG9jay0+YXQoaW5zdEluZGV4KSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyMTM0
OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBaXJBbGxvY2F0ZVJlZ2lz
dGVyc0J5R3JhcGhDb2xvcmluZy5oIgogI2luY2x1ZGUgIkFpckFsbG9jYXRlU3RhY2suaCIKICNp
bmNsdWRlICJBaXJDb2RlLmgiCi0jaW5jbHVkZSAiQWlyRHVtcEFzSlMuaCIKICNpbmNsdWRlICJB
aXJFbGltaW5hdGVEZWFkQ29kZS5oIgogI2luY2x1ZGUgIkFpckZpeE9idmlvdXNTcGlsbHMuaCIK
ICNpbmNsdWRlICJBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKQEAgLTYyLDE3ICs2MSwx
OSBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiB7CiAgICAgVGltaW5n
U2NvcGUgdGltaW5nU2NvcGUoIkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24iKTsKICAgICAKKyAg
ICAvLyBJZiB3ZSdyZSBkb2luZyBzdXBlciB2ZXJib3NlIGR1bXBpbmcsIHRoZSBwaGFzZSBzY29w
ZSBvZiBhbnkgcGhhc2Ugd2lsbCBhbHJlYWR5IGRvIGEgZHVtcC4KKyAgICBpZiAoc2hvdWxkRHVt
cElSKEFpck1vZGUpICYmICFzaG91bGREdW1wSVJBdEVhY2hQaGFzZShBaXJNb2RlKSkgeworICAg
ICAgICBkYXRhTG9nKCJJbml0aWFsIGFpcjpcbiIpOworICAgICAgICBkYXRhTG9nKGNvZGUpOwor
ICAgIH0KKyAgICAKICAgICAvLyBXZSBkb24ndCBleHBlY3QgdGhlIGluY29taW5nIGNvZGUgdG8g
aGF2ZSBwcmVkZWNlc3NvcnMgY29tcHV0ZWQuCiAgICAgY29kZS5yZXNldFJlYWNoYWJpbGl0eSgp
OwogICAgIAogICAgIGlmIChzaG91bGRWYWxpZGF0ZUlSKCkpCiAgICAgICAgIHZhbGlkYXRlKGNv
ZGUpOwogCi0gICAgLy8gSWYgd2UncmUgZG9pbmcgc3VwZXIgdmVyYm9zZSBkdW1waW5nLCB0aGUg
cGhhc2Ugc2NvcGUgb2YgYW55IHBoYXNlIHdpbGwgYWxyZWFkeSBkbyBhIGR1bXAuCi0gICAgaWYg
KHNob3VsZER1bXBJUihBaXJNb2RlKSAmJiAhc2hvdWxkRHVtcElSQXRFYWNoUGhhc2UoQWlyTW9k
ZSkpIHsKLSAgICAgICAgZGF0YUxvZygiSW5pdGlhbCBhaXI6XG4iKTsKLSAgICAgICAgZGF0YUxv
Zyhjb2RlKTsKLSAgICB9CisgICAgc2ltcGxpZnlDRkcoY29kZSk7CiAKICAgICBsb3dlck1hY3Jv
cyhjb2RlKTsKIApAQCAtMTA3LDIzICsxMDgsMTEgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlv
bihDb2RlJiBjb2RlKQogICAgIC8vIGRvZXMgdGhpbmdzIGxpa2UgaWRlbnRpZnkgd2hpY2ggY2Fs
bGVlLXNhdmVzIHdlJ3JlIHVzaW5nIGFuZCBzYXZlcyB0aGVtLgogICAgIGhhbmRsZUNhbGxlZVNh
dmVzKGNvZGUpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpkdW1wQWlyQXNKU0JlZm9yZUFsbG9j
YXRlU3RhY2soKSkgewotICAgICAgICBkYXRhTG9nKCJEdW1waW5nIEFpciBhcyBKUyBiZWZvcmUg
YWxsb2NhdGVTdGFjazpcbiIpOwotICAgICAgICBkdW1wQXNKUyhjb2RlLCBXVEY6OmRhdGFGaWxl
KCkpOwotICAgICAgICBkYXRhTG9nKCJBaXIgaGFzaDogIiwgY29kZS5qc0hhc2goKSwgIlxuIik7
Ci0gICAgfQotCiAgICAgLy8gVGhpcyB0dXJucyBhbGwgU3RhY2sgYW5kIENhbGxBcmcgQXJncyBp
bnRvIEFkZHIgYXJncyB0aGF0IHVzZSB0aGUgZnJhbWUgcG9pbnRlci4gSXQgZG9lcwogICAgIC8v
IHRoaXMgYnkgZmlyc3QtZml0IGFsbG9jYXRpbmcgc3RhY2sgc2xvdHMuIEl0IHNob3VsZCBiZSBw
cmV0dHkgZGFybiBjbG9zZSB0byBvcHRpbWFsLCBzbyB3ZQogICAgIC8vIHNob3VsZG4ndCBoYXZl
IHRvIHdvcnJ5IGFib3V0IHRoaXMgdmVyeSBtdWNoLgogICAgIGFsbG9jYXRlU3RhY2soY29kZSk7
CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OmR1bXBBaXJBZnRlckFsbG9jYXRlU3RhY2soKSkgewot
ICAgICAgICBkYXRhTG9nKCJEdW1waW5nIEFpciBhZnRlciBhbGxvY2F0ZVN0YWNrOlxuIik7Ci0g
ICAgICAgIGRhdGFMb2coY29kZSk7Ci0gICAgICAgIGRhdGFMb2coIkFpciBoYXNoOiAiLCBjb2Rl
LmpzSGFzaCgpLCAiXG4iKTsKLSAgICB9Ci0KICAgICAvLyBJZiB3ZSBjb2FsZXNjZWQgbW92ZXMg
dGhlbiB3ZSBjYW4gdW5icmVhayBjcml0aWNhbCBlZGdlcy4gVGhpcyBpcyB0aGUgbWFpbiByZWFz
b24gZm9yIHRoaXMKICAgICAvLyBwaGFzZS4KICAgICBzaW1wbGlmeUNGRyhjb2RlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHJldmlz
aW9uIDIxMzQ5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3Nyw3MyBAQCBpbmxpbmUgYm9vbCBpc1g4
NlVEaXY2NFZhbGlkKGNvbnN0IEluc3QmCiAgICAgcmV0dXJuIGlzWDg2RGl2SGVscGVyVmFsaWQo
aW5zdCk7CiB9CiAKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoY29uc3QgSW5z
dCYgaW5zdCkKK3sKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgIHN3aXRjaCAoaW5z
dC5hcmdzLnNpemUoKSkgeworICAgIGNhc2UgMzoKKyAgICAgICAgcmV0dXJuIGluc3QuYXJnc1sw
XSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIGNhc2UgNToKKyAgICAgICAgcmV0dXJu
IGluc3QuYXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjplYXgpOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZWxzZSAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KQorICAgIFVOVVNFRF9QQVJBTShpbnN0KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYg
Ly8gQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9t
aWNTdHJvbmdDQVNWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworI2lmIENQVShYODYpIHx8IENQ
VShYODZfNjQpCisgICAgcmV0dXJuIGluc3QuYXJnc1sxXSA9PSBUbXAoWDg2UmVnaXN0ZXJzOjpl
YXgpOworI2Vsc2UgLy8gQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICBVTlVTRURfUEFSQU0o
aW5zdCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8vIENQVShYODYpIHx8IENQVShYODZf
NjQpCit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTOFZhbGlkKGNvbnN0IEluc3Qm
IGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisK
K2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTMTZWYWxpZChjb25zdCBJbnN0JiBpbnN0KQor
eworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUg
Ym9vbCBpc0F0b21pY1N0cm9uZ0NBUzMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICBy
ZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNB
dG9taWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlz
QXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRv
bWljU3Ryb25nQ0FTOFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJh
bmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNo
QXRvbWljU3Ryb25nQ0FTMTZWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBp
c0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0Jy
YW5jaEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1
cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wg
aXNCcmFuY2hBdG9taWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAg
cmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7Cit9CisKIH0gfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMJKHJl
dmlzaW9uIDIxMzQ5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2Rl
Lm9wY29kZXMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMTcsNiArMTE3LDcgQEAgQWRkMzIgVTpHOjMyLCBVWkQ6Rzoz
MgogICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAK
KyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgogICAgIHg4NjogVG1wLCBJ
bmRleAogCkBAIC0xMzUsOSArMTM2LDEyIEBAIHg4NjogQWRkMTYgVTpHOjE2LCBVRDpHOjE2CiA2
NDogQWRkNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRk
cgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1wCiAgICAgeDg2OiBBZGRyLCBUbXAK
KyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJ
bmRleAogCiA2NDogQWRkNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIEltbSwgVG1wLCBU
bXAKQEAgLTE2Niw5ICsxNzAsMTIgQEAgeDg2OiBBZGRGbG9hdCBVOkY6MzIsIFVEOkY6MzIKIFN1
YjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisg
ICAgeDg2OiBJbW0sIEluZGV4CiAgICAgSW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAg
IHg4NjogSW5kZXgsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4
CiAKIGFybTY0OiBTdWIzMiBVOkc6MzIsIFU6RzozMiwgRDpHOjMyCiAgICAgVG1wLCBUbXAsIFRt
cApAQCAtMTc2LDkgKzE4MywxMiBAQCBhcm02NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIsIEQ6Rzoz
MgogNjQ6IFN1YjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0s
IEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0sIFRtcAogICAgIHg4NjogQWRkciwg
VG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRt
cCwgSW5kZXgKIAogYXJtNjQ6IFN1YjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAs
IFRtcCwgVG1wCkBAIC0yMDQsOSArMjE0LDEyIEBAIHg4NjogU3ViRmxvYXQgVTpGOjMyLCBVRDpG
OjMyCiBOZWczMiBVWkQ6RzozMgogICAgIFRtcAogICAgIHg4NjogQWRkcgorICAgIHg4NjogSW5k
ZXgKIAogNjQ6IE5lZzY0IFVEOkc6NjQKICAgICBUbXAKKyAgICB4ODY6IEFkZHIKKyAgICB4ODY6
IEluZGV4CiAKIGFybTY0OiBOZWdhdGVEb3VibGUgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRt
cApAQCAtMzMwLDggKzM0MywxMSBAQCBBbmQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBU
bXAKICAgICB4ODY6IEltbSwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwg
SW5kZXgKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4Njog
SW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAKIDY0OiBBbmQ2NCBVOkc6NjQsIFU6Rzo2
NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMzM5LDcgKzM1NSwxMyBAQCBBbmQzMiBV
Okc6MzIsIFVaRDpHOjMyCiAKIHg4Nl82NDogQW5kNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1w
LCBUbXAKLSAgICB4ODY6IEltbSwgVG1wCisgICAgSW1tLCBUbXAKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorICAgIEFkZHIsIFRt
cAorICAgIEluZGV4LCBUbXAKIAogQW5kRG91YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6NjQKICAg
ICBUbXAsIFRtcCwgVG1wCkBAIC00NTksOCArNDgxLDExIEBAIE9yMzIgVTpHOjMyLCBVWkQ6Rzoz
MgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCisg
ICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBU
bXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogCiA2NDogT3I2NCBV
Okc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDY5LDYgKzQ5NCwx
MiBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKIDY0OiBPcjY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAg
IFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2
OiBJbW0sIEluZGV4CisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAg
ICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogCiBYb3IzMiBVOkc6MzIsIFU6
RzozMiwgWkQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTQ4MCw4ICs1MTEsMTEgQEAgWG9y
MzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAg
IHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAK
KyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJ
bmRleAogCiA2NDogWG9yNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBU
bXAKQEAgLTQ5MCw2ICs1MjQsMTEgQEAgWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogNjQ6IFhvcjY0
IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4
ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAor
ICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJbW0sIFRt
cAogCiBhcm02NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCkBAIC00OTgsMTMgKzUzNywxNSBAQCBh
cm02NDogTm90MzIgVTpHOjMyLCBaRDpHOjMyCiB4ODY6IE5vdDMyIFVaRDpHOjMyCiAgICAgVG1w
CiAgICAgQWRkcgorICAgIEluZGV4CiAKIGFybTY0OiBOb3Q2NCBVOkc6NjQsIEQ6Rzo2NAogICAg
IFRtcCwgVG1wCiAKLXg4NjogTm90NjQgVUQ6Rzo2NAoreDg2XzY0OiBOb3Q2NCBVRDpHOjY0CiAg
ICAgVG1wCiAgICAgQWRkcgorICAgIEluZGV4CiAKIGFybTY0OiBBYnNEb3VibGUgVTpGOjY0LCBE
OkY6NjQKICAgICBUbXAsIFRtcApAQCAtNjY4LDI3ICs3MDksMzc4IEBAIExvYWQ4IFU6Rzo4LCBa
RDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOCBVOkc6OCwg
WkQ6RzozMiAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1w
CisgICAgU2ltcGxlQWRkciwgVG1wCisKIFN0b3JlOCBVOkc6OCwgRDpHOjgKICAgICBUbXAsIElu
ZGV4CiAgICAgVG1wLCBBZGRyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAgICAgeDg2OiBJbW0sIEFk
ZHIKIAorU3RvcmVSZWw4IFU6Rzo4LCBEOkc6OCAvZWZmZWN0cworICAgIHg4NjogVG1wLCBJbmRl
eAorICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0s
IEFkZHIKKyAgICBUbXAsIFNpbXBsZUFkZHIKKwogTG9hZDhTaWduZWRFeHRlbmRUbzMyIFU6Rzo4
LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxOFNpZ25l
ZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6IEFkZHIsIFRtcAor
ICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAorCiBMb2FkMTYgVTpHOjE2
LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCitMb2FkQWNxMTYgVTpH
OjE2LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4
LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwogTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6
MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKK0xvYWRBY3ExNlNp
Z25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBU
bXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKwogU3RvcmUxNiBV
Okc6MTYsIEQ6RzoxNgogICAgIFRtcCwgSW5kZXgKICAgICBUbXAsIEFkZHIKKyAgICB4ODY6IElt
bSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorCitTdG9yZVJlbDE2IFU6RzoxNiwgRDpHOjE2
IC9lZmZlY3RzCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBUbXAsIEFkZHIKKyAgICB4
ODY6IEltbSwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIFRtcCwgU2ltcGxlQWRkcgor
CitMb2FkQWNxMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2OiBBZGRyLCBUbXAK
KyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworU3RvcmVSZWwzMiBV
Okc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1w
LCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgVG1w
LCBTaW1wbGVBZGRyCisKKzY0OiBMb2FkQWNxNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCisg
ICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVBZGRyLCBU
bXAKKworNjQ6IFN0b3JlUmVsNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCisgICAgeDg2OiBU
bXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4
NjogSW1tLCBJbmRleAorICAgIFRtcCwgU2ltcGxlQWRkcgorCisjIFRoZSBmaXJzdCBvcGVyYW5k
IGlzIHJheC4KKyMgRklYTUU6IFRoaXMgZm9ybXVsYXRpb24gbWVhbnMgdGhhdCB0aGUgYm9vbGVh
biByZXN1bHQgY2Fubm90IGJlIHB1dCBpbiBlYXgsIGV2ZW4gdGhvdWdoIGFsbCB1c2VycworIyBv
ZiB0aGlzIHdvdWxkIGJlIE9LIHdpdGggdGhhdC4KKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2OTI1NAoreDg2OiBBdG9taWNTdHJvbmdDQVM4IFU6RzozMiwgVUQ6
Rzo4LCBVOkc6OCwgVUQ6Rzo4LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAq
LCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAor
Cit4ODY6IEF0b21pY1N0cm9uZ0NBUzE2IFU6RzozMiwgVUQ6RzoxNiwgVTpHOjMyLCBVRDpHOjE2
LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAor
ICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODY6IEF0b21pY1N0cm9u
Z0NBUzMyIFU6RzozMiwgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyLCBaRDpHOjggL2VmZmVjdHMK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRt
cCosIFRtcCwgSW5kZXgsIFRtcAorCit4ODZfNjQ6IEF0b21pY1N0cm9uZ0NBUzY0IFU6RzozMiwg
VUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEFkZHIsIFRtcAorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgs
IFRtcAorCit4ODY6IEF0b21pY1N0cm9uZ0NBUzggVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4IC9lZmZl
Y3RzCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEF0
b21pY1N0cm9uZ0NBUzE2IFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIFRt
cCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdHJvbmdD
QVMzMiBVRDpHOjMyLCBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBUbXAqLCBUbXAsIEFk
ZHIKKyAgICBUbXAqLCBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljU3Ryb25nQ0FTNjQgVUQ6
Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAg
VG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzggVTpHOjMyLCBV
RDpHOjgsIFU6Rzo4LCBVRDpHOjggL2JyYW5jaCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRt
cCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBC
cmFuY2hBdG9taWNTdHJvbmdDQVMxNiBVOkc6MzIsIFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiAv
YnJhbmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAgU3Rh
dHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODY6IEJyYW5jaEF0b21pY1N0cm9uZ0NBUzMy
IFU6RzozMiwgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyIC9icmFuY2ggL2VmZmVjdHMKKyAgICBT
dGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIElu
ZGV4CisKK3g4Nl82NDogQnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQgVTpHOjMyLCBVRDpHOjY0LCBV
Okc6NjQsIFVEOkc6NjQgL2JyYW5jaCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQsIFRtcCosIFRt
cCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNB
ZGQ4IFU6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FkZDE2IFU6Rzox
NiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBU
bXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljQWRkMzIgVTpHOjMyLCBVRDpH
OjMyIC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRk
cgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNBZGQ2NCBVOkc6NjQsIFVEOkc6NjQg
L2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisg
ICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cwor
ICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisKK3g4NjogQXRvbWljU3ViMTYgVTpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgSW1t
LCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwor
eDg2OiBBdG9taWNTdWIzMiBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIK
KyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6
IEF0b21pY1N1YjY0IFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAg
IEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
QW5kOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRl
eAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNBbmQxNiBVOkc6
MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAg
VG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDMyIFU6RzozMiwgVUQ6
RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFk
ZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljQW5kNjQgVTpHOjY0LCBVRDpHOjY0
IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgor
ICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNPcjggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cwor
ICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisKK3g4NjogQXRvbWljT3IxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0s
IEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4
ODY6IEF0b21pY09yMzIgVTpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisg
ICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBB
dG9taWNPcjY0IFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIElt
bSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWG9y
OCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAor
ICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNYb3IxNiBVOkc6MTYs
IFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hvcjMyIFU6RzozMiwgVUQ6Rzoz
MiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIK
KyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljWG9yNjQgVTpHOjY0LCBVRDpHOjY0IC9l
ZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNOZWc4IFVEOkc6OCAvZWZmZWN0cworICAgIEFkZHIK
KyAgICBJbmRleAorCit4ODY6IEF0b21pY05lZzE2IFVEOkc6MTYgL2VmZmVjdHMKKyAgICBBZGRy
CisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOZWczMiBVRDpHOjMyIC9lZmZlY3RzCisgICAgQWRk
cgorICAgIEluZGV4CisKK3g4Nl82NDogQXRvbWljTmVnNjQgVUQ6Rzo2NCAvZWZmZWN0cworICAg
IEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDggVUQ6Rzo4IC9lZmZlY3RzCisgICAg
QWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTm90MTYgVUQ6RzoxNiAvZWZmZWN0cworICAg
IEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05vdDMyIFVEOkc6MzIgL2VmZmVjdHMKKyAg
ICBBZGRyCisgICAgSW5kZXgKKworeDg2XzY0OiBBdG9taWNOb3Q2NCBVRDpHOjY0IC9lZmZlY3Rz
CisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljWGNoZ0FkZDggVUQ6Rzo4LCBVRDpH
OjggL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
WGNoZ0FkZDE2IFVEOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBU
bXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZ0FkZDMyIFVEOkc6MzIsIFVEOkc6MzIgL2VmZmVj
dHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljWGNoZ0Fk
ZDY0IFVEOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIElu
ZGV4CisKK3g4NjogQXRvbWljWGNoZzggVUQ6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBUbXAs
IEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljWGNoZzE2IFVEOkc6MTYsIFVEOkc6
MTYgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWlj
WGNoZzMyIFVEOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAs
IEluZGV4CisKK3g4Nl82NDogQXRvbWljWGNoZzY0IFVEOkc6NjQsIFVEOkc6NjQgL2VmZmVjdHMK
KyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK2FybTY0OiBMb2FkTGluazggVTpHOjgs
IFpEOkc6OCAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmtB
Y3E4IFU6Rzo4LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworIyBTdXBl
ciBjb25mdXNpbmcgZmFjdDogdGhpcyByZXR1cm5zIDAgdG8gbWVhbiBzdWNjZXNzLCAxIHRvIG1l
YW4gZmFpbHVyZS4KK2FybTY0OiBTdG9yZUNvbmQ4IFU6Rzo4LCBEOkc6OCwgRVpEOkc6OCAvZWZm
ZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw4IFU6
Rzo4LCBEOkc6OCwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisK
K2FybTY0OiBMb2FkTGluazE2IFU6RzoxNiwgWkQ6RzoxNiAvZWZmZWN0cworICAgIFNpbXBsZUFk
ZHIsIFRtcAorCithcm02NDogTG9hZExpbmtBY3ExNiBVOkc6MTYsIFpEOkc6MTYgL2VmZmVjdHMK
KyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDE2IFU6RzoxNiwgRDpHOjE2
LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0
b3JlQ29uZFJlbDE2IFU6RzoxNiwgRDpHOjE2LCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBT
aW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZl
Y3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTMyIFU6RzozMiwg
WkQ6RzozMiAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25k
MzIgVTpHOjMyLCBEOkc6MzIsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIs
IFRtcAorCithcm02NDogU3RvcmVDb25kUmVsMzIgVTpHOjMyLCBEOkc6MzIsIEVaRDpHOjggL2Vm
ZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbms2NCBVOkc6
NjQsIFpEOkc6NjQgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRM
aW5rQWNxNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisK
K2FybTY0OiBTdG9yZUNvbmQ2NCBVOkc6NjQsIEQ6Rzo2NCwgRVpEOkc6OCAvZWZmZWN0cworICAg
IFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWw2NCBVOkc6NjQsIEQ6
Rzo2NCwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0
OiBEZXBlbmQzMiBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcAorCithcm02NDogRGVwZW5k
NjQgVTpHOjY0LCBaRDpHOjY0CisgICAgVG1wLCBUbXAKIAogQ29tcGFyZTMyIFU6RzozMiwgVTpH
OjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2Nr
T3JkZXIuY3BwCShyZXZpc2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzcsNiAr
MTc3LDEwIEBAIHZvaWQgb3B0aW1pemVCbG9ja09yZGVyKENvZGUmIGNvZGUpCiAgICAgICAgIGNh
c2UgQnJhbmNoU3ViNjQ6CiAgICAgICAgIGNhc2UgQnJhbmNoTmVnMzI6CiAgICAgICAgIGNhc2Ug
QnJhbmNoTmVnNjQ6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTODoKKyAgICAg
ICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVMxNjoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9t
aWNTdHJvbmdDQVMzMjoKKyAgICAgICAgY2FzZSBCcmFuY2hBdG9taWNTdHJvbmdDQVM2NDoKICAg
ICAgICAgICAgIGlmIChjb2RlLmZpbmROZXh0QmxvY2soYmxvY2spID09IGJsb2NrLT5zdWNjZXNz
b3JCbG9jaygwKSAmJiBicmFuY2guYXJnc1swXS5pc0ludmVydGlibGUoKSkgewogICAgICAgICAg
ICAgICAgIHN0ZDo6c3dhcChibG9jay0+c3VjY2Vzc29yKDApLCBibG9jay0+c3VjY2Vzc29yKDEp
KTsKICAgICAgICAgICAgICAgICBicmFuY2guYXJnc1swXSA9IGJyYW5jaC5hcmdzWzBdLmludmVy
dGVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVy
ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQ
YWRJbnRlcmZlcmVuY2UuY3BwCShyZXZpc2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAgdm9pZCBwYWRJbnRlcmZlcmVuY2UoQ29kZSYgY29kZSkKICAgICAgICAgICAg
ICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewogICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHJvbGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6
OkVhcmx5RGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAg
ICAgICAgICAgICAgICAgICAgICAgaGFzRWFybHlEZWYgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlVXNlOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVy
eXRoaW5nLmNwcAkocmV2aXNpb24gMjEzNDkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1
LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkxhdGVDb2xkVXNlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
U2NyYXRjaDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlaRGVmOgogICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIChSZWcgcmVnIDogY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKGJhbmspKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXRCZWZvcmUuZ2V0KHJlZykgJiYgIXNldEFm
dGVyLmdldChyZWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVy
LnNldChyZWcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2Vu
ZXJhdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bj
b2RlX2dlbmVyYXRvci5yYgkocmV2aXNpb24gMjEzNDkyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNCAr
NTEsNDkgQEAgY2xhc3MgQXJnCiAgICAgICAgIEBiYW5rID0gYmFuawogICAgICAgICBAd2lkdGgg
PSB3aWR0aAogICAgIGVuZAotCi0gICAgZGVmIHdpZHRoQ29kZQorICAgIAorICAgIGRlZiBzZWxm
LndpZHRoQ29kZSh3aWR0aCkKICAgICAgICAgaWYgd2lkdGggPT0gIlB0ciIKICAgICAgICAgICAg
ICJwb2ludGVyV2lkdGgoKSIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgIldpZHRoI3t3aWR0
aH0iCiAgICAgICAgIGVuZAogICAgIGVuZAorCisgICAgZGVmIHdpZHRoQ29kZQorICAgICAgICBB
cmcud2lkdGhDb2RlKHdpZHRoKQorICAgIGVuZAorICAgIAorICAgIGRlZiBzZWxmLnJvbGVDb2Rl
KHJvbGUpCisgICAgICAgIGNhc2Ugcm9sZQorICAgICAgICB3aGVuICJVIgorICAgICAgICAgICAg
IlVzZSIKKyAgICAgICAgd2hlbiAiRCIKKyAgICAgICAgICAgICJEZWYiCisgICAgICAgIHdoZW4g
IlpEIgorICAgICAgICAgICAgIlpEZWYiCisgICAgICAgIHdoZW4gIlVEIgorICAgICAgICAgICAg
IlVzZURlZiIKKyAgICAgICAgd2hlbiAiVVpEIgorICAgICAgICAgICAgIlVzZVpEZWYiCisgICAg
ICAgIHdoZW4gIlVBIgorICAgICAgICAgICAgIlVzZUFkZHIiCisgICAgICAgIHdoZW4gIlMiCisg
ICAgICAgICAgICAiU2NyYXRjaCIKKyAgICAgICAgd2hlbiAiRUQiCisgICAgICAgICAgICAiRWFy
bHlEZWYiCisgICAgICAgIHdoZW4gIkVaRCIKKyAgICAgICAgICAgICJFYXJseVpEZWYiCisgICAg
ICAgIHdoZW4gIkxVIgorICAgICAgICAgICAgIkxhdGVVc2UiCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJhaXNlCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiByb2xlQ29k
ZQorICAgICAgICBBcmcucm9sZUNvZGUocm9sZSkKKyAgICBlbmQKIGVuZAogCiBjbGFzcyBPdmVy
bG9hZApAQCAtMTgyLDcgKzIxNyw3IEBAIGRlZiBsZXgoc3RyLCBmaWxlTmFtZSkKIGVuZAogCiBk
ZWYgaXNSb2xlKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoVSl8KEQpfChVRCl8KFpEKXwoVVpE
KXwoVUEpfChTKSlcWi8KKyAgICB0b2tlbiA9fiAvXEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8
KFVBKXwoUyl8KEVEKXwoRVpEKXwoTFUpKVxaLwogZW5kCiAKIGRlZiBpc0dGKHRva2VuKQpAQCAt
MTkwLDcgKzIyNSw3IEBAIGRlZiBpc0dGKHRva2VuKQogZW5kCiAKIGRlZiBpc0tpbmQodG9rZW4p
Ci0gICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02
NCl8KEFkZHIpfChJbmRleCl8KFJlbENvbmQpfChSZXNDb25kKXwoRG91YmxlQ29uZCkpXFovCisg
ICAgdG9rZW4gPX4gL1xBKChUbXApfChJbW0pfChCaWdJbW0pfChCaXRJbW0pfChCaXRJbW02NCl8
KFNpbXBsZUFkZHIpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVzQ29uZCl8KERvdWJsZUNv
bmQpfChTdGF0dXNDb25kKSlcWi8KIGVuZAogCiBkZWYgaXNBcmNoKHRva2VuKQpAQCAtMjY0LDcg
KzI5OSw3IEBAIGNsYXNzIFBhcnNlcgogCiAgICAgZGVmIGNvbnN1bWVLaW5kCiAgICAgICAgIHJl
c3VsdCA9IHRva2VuLnN0cmluZwotICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBraW5kIChJ
bW0sIEJpZ0ltbSwgQml0SW1tLCBCaXRJbW02NCwgVG1wLCBBZGRyLCBJbmRleCwgUmVsQ29uZCwg
UmVzQ29uZCwgb3IgRG91YmxlQ29uZCkiKSB1bmxlc3MgaXNLaW5kKHJlc3VsdCkKKyAgICAgICAg
cGFyc2VFcnJvcigiRXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQs
IFRtcCwgU2ltcGxlQWRkciwgQWRkciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIERvdWJsZUNv
bmQsIG9yIFN0YXR1c0NvbmQpIikgdW5sZXNzIGlzS2luZChyZXN1bHQpCiAgICAgICAgIGFkdmFu
Y2UKICAgICAgICAgcmVzdWx0CiAgICAgZW5kCkBAIC02MzQsMjggKzY2OSw3IEBAIHdyaXRlSCgi
T3Bjb2RlVXRpbHMiKSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25h
dHVyZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAgICAgIHwgYXJnLCBpbmRleCB8Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAg
ICAgIGNhc2UgYXJnLnJvbGUKLSAgICAgICAgICAgICAgICB3aGVuICJVIgotICAgICAgICAgICAg
ICAgICAgICByb2xlID0gIlVzZSIKLSAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAg
ICAgICAgICAgICByb2xlID0gIkRlZiIKLSAgICAgICAgICAgICAgICB3aGVuICJaRCIKLSAgICAg
ICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgIHdoZW4gIlVEIgot
ICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZURlZiIKLSAgICAgICAgICAgICAgICB3aGVu
ICJVWkQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlWkRlZiIKLSAgICAgICAgICAg
ICAgICB3aGVuICJVQSIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAg
ICAgICAgICAgICAgIHdoZW4gIlMiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2NyYXRj
aCIKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAg
ICAgICAgICAgICAgZW5kCi0KLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJn
c1sje2luZGV4fV0sIEFyZzo6I3tyb2xlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9
KTsiCisgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBB
cmc6OiN7YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31QLCAje2FyZy53aWR0aENvZGV9KTsiCiAg
ICAgICAgICAgICB9CiAgICAgICAgIGVuZAogICAgIH0KQEAgLTgwNCw2ICs4MTgsOSBAQCB3cml0
ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVuICJCaXRJbW02NCIK
ICAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZEJpdEltbTY0
Rm9ybShhcmdzWyN7aW5kZXh9XS52YWx1ZSgpKSkiCiAgICAgICAgICAgICAgICAgICAgIG91dHAu
cHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCisgICAgICAgICAgICAgICAgd2hlbiAiU2ltcGxl
QWRkciIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIWFyZ3NbI3tpbmRleH1d
LnRtcCgpLmlzR1AoKSkiCisgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVU
VVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hlbiAiQWRkciIKICAgICAgICAgICAgICAg
ICAgICAgaWYgYXJnLnJvbGUgPT0gIlVBIgogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cC5w
dXRzICJpZiAoYXJnc1sje2luZGV4fV0uaXNTdGFjaygpICYmIGFyZ3NbI3tpbmRleH1dLnN0YWNr
U2xvdCgpLT5pc1NwaWxsKCkpIgpAQCAtODE5LDYgKzgzNiw3IEBAIHdyaXRlSCgiT3Bjb2RlR2Vu
ZXJhdGVkIikgewogICAgICAgICAgICAgICAgIHdoZW4gIlJlbENvbmQiCiAgICAgICAgICAgICAg
ICAgd2hlbiAiUmVzQ29uZCIKICAgICAgICAgICAgICAgICB3aGVuICJEb3VibGVDb25kIgorICAg
ICAgICAgICAgICAgIHdoZW4gIlN0YXR1c0NvbmQiCiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICByYWlzZSAiVW5leHBlY3RlZCBraW5kOiAje2tpbmQubmFtZX0iCiAg
ICAgICAgICAgICAgICAgZW5kCkBAIC0xMDk1LDcgKzExMTMsNyBAQCB3cml0ZUgoIk9wY29kZUdl
bmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4
fV0uYXNUcnVzdGVkSW1tMzIoKSIKICAgICAgICAgICAgICAgICB3aGVuICJCaWdJbW0iLCAiQml0
SW1tNjQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFz
VHJ1c3RlZEltbTY0KCkiCi0gICAgICAgICAgICAgICAgd2hlbiAiQWRkciIKKyAgICAgICAgICAg
ICAgICB3aGVuICJTaW1wbGVBZGRyIiwgIkFkZHIiCiAgICAgICAgICAgICAgICAgICAgIG91dHAu
cHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzQWRkcmVzcygpIgogICAgICAgICAgICAgICAgIHdoZW4g
IkluZGV4IgogICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5h
c0Jhc2VJbmRleCgpIgpAQCAtMTEwNSw2ICsxMTIzLDggQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0
ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFz
UmVzdWx0Q29uZGl0aW9uKCkiCiAgICAgICAgICAgICAgICAgd2hlbiAiRG91YmxlQ29uZCIKICAg
ICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNEb3VibGVDb25k
aXRpb24oKSIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgorICAgICAgICAgICAg
ICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc1N0YXR1c0NvbmRpdGlvbigpIgog
ICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQogCkBAIC0xMTQ4LDI3ICsxMTY4LDcg
QEAgRmlsZS5vcGVuKCJKU0Fpcl9vcGNvZGUuanMiLCAidyIpIHsKICAgICAgICAgICAgICAgICBv
dXRwLnB1dHMgImNhc2UgI3tvdmVybG9hZC5zaWduYXR1cmUubGVuZ3RofToiIGlmIG5lZWRPdmVy
bG9hZFN3aXRjaAogICAgICAgICAgICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhf
aW5kZXggewogICAgICAgICAgICAgICAgICAgICB8IGFyZywgaW5kZXggfAotICAgICAgICAgICAg
ICAgICAgICByb2xlID0gbmlsCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgYXJnLnJvbGUKLSAg
ICAgICAgICAgICAgICAgICAgd2hlbiAiVSIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUg
PSAiVXNlIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJEIgotICAgICAgICAgICAgICAgICAg
ICAgICAgcm9sZSA9ICJEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlpEIgotICAgICAg
ICAgICAgICAgICAgICAgICAgcm9sZSA9ICJaRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVu
ICJVRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlRGVmIgotICAgICAgICAg
ICAgICAgICAgICB3aGVuICJVWkQiCi0gICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVz
ZVpEZWYiCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlVBIgotICAgICAgICAgICAgICAgICAg
ICAgICAgcm9sZSA9ICJVc2VBZGRyIgotICAgICAgICAgICAgICAgICAgICB3aGVuICJTIgotICAg
ICAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJTY3JhdGNoIgotICAgICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgICAg
ICBlbmQKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG91dHAucHV0
cyAiaW5zdC52aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7cm9sZX0sICN7YXJnLmJhbmt9
UCwgI3thcmcud2lkdGh9KTsiCisgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaW5zdC52
aXNpdEFyZygje2luZGV4fSwgZnVuYywgQXJnLiN7YXJnLnJvbGVDb2RlfSwgI3thcmcuYmFua31Q
LCAje2FyZy53aWR0aH0pOyIKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3V0
cC5wdXRzICJicmVhazsiCiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyMTM0OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNyw5ICs0MTcsNiBA
QCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGR1bXBNb2R1
bGVMb2FkaW5nU3RhdGUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGV4
cG9zZUludGVybmFsTW9kdWxlTG9hZGVyLCBmYWxzZSwgTm9ybWFsLCAiZXhwb3NlIHRoZSBpbnRl
cm5hbCBtb2R1bGUgbG9hZGVyIG9iamVjdCB0byB0aGUgZ2xvYmFsIHNwYWNlIGZvciBkZWJ1Z2dp
bmciKSBcCiAgICAgXAotICAgIHYoYm9vbCwgZHVtcEFpckFzSlNCZWZvcmVBbGxvY2F0ZVN0YWNr
LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgdihib29sLCBkdW1wQWlyQWZ0ZXJBbGxv
Y2F0ZVN0YWNrLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgXAogICAgIHYoYm9vbCwg
dXNlU3VwZXJTYW1wbGVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYo
Ym9vbCwgcmVwb3J0TExJbnRTdGF0cywgZmFsc2UsIENvbmZpZ3VyYWJsZSwgIlJlcG9ydHMgTExJ
bnQgc3RhdGlzdGljcyIpIFwKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTM0
OTIpCisrKyBXZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE0IEBACisyMDE3LTAzLTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CisKKyAgICAgICAgQjMgc2hvdWxkIGhhdmUgY29tcHJlaGVuc2l2ZSBzdXBwb3J0IGZvciBhdG9t
aWMgb3BlcmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyMzQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICBEb2N1bWVudCB0aGUgbmV3IG9wY29kZXMhCisKKyAgICAgICAgKiBkb2Nz
L2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sOgorCiAyMDE3LTAzLTAzICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIG1pbm9yIHVwZGF0ZXMgb24gQ1NTIEdyaWQgTGF5b3V0IGV4YW1wbGVzLgpJbmRleDogV2Vi
c2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUt
cmVwcmVzZW50YXRpb24uaHRtbAkocmV2aXNpb24gMjEzNDkyKQorKysgV2Vic2l0ZXMvd2Via2l0
Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDgsNiArMTQ4LDI4IEBACiAKICAgICA8cD5FYWNoIGJhc2ljIGJsb2NrIGNvbnRh
aW5zIGEgVmVjdG9yJmx0O1ZhbHVlKiZndDsgYXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBibG9jay4g
Q29udHJvbAogICAgICAgZmxvdyBpbnNpZGUgdGhlIGJsb2NrIGlzIGltcGxpY2l0IGJhc2VkIG9u
IHRoZSBvcmRlciBvZiBWYWx1ZXMgaW4gdGhlIHZlY3Rvci48L3A+CisgICAgCisgICAgPGgyPk1l
bW9yeSBtb2RlbDwvaDI+CisgICAgCisgICAgPHA+QjMgdXNlcyBhIHNlY29uZGFyeSBhZGRyZXNz
IHNwYWNlIG9mIDxpPmFic3RyYWN0IGhlYXBzPC9pPiB0byByZWFzb24gYWJvdXQgYWxpYXNpbmcg
YW5kCisgICAgICBjb25jdXJyZW5jeS4gVGhpcyBhZGRyZXNzIHNwYWNlIGlzIDMyLWJpdCBhbmQg
d2UgcG9pbnQgYXQgaXQgdXNpbmcgdGhlIEhlYXBSYW5nZSB0eXBlLiBJZiB5b3UKKyAgICAgIG5l
dmVyIHN1cHBseSBIZWFwUmFuZ2VzIHRvIHlvdXIgbWVtb3J5IG9wZXJhdGlvbnMgKHRoZSBkZWZh
dWx0KSwgdGhleSB3aWxsIGhhdmUgWzAsIFVJTlRfTUFYXQorICAgICAgYXMgdGhlaXIgcmFuZ2Us
IGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmF0aW9uIG1heSBjb25zZXJ2YXRpdmVseSB3cml0ZSB0
byBhbGwgMjxzdXA+MzI8L3N1cD4KKyAgICAgIGFic3RyYWN0IGhlYXBzLiBUd28gbWVtb3J5IG9w
ZXJhdGlvbnMgYXJlIHNhaWQgdG8gYWxpYXMgaWYgdGhleSBhY2Nlc3MgdGhlIHNhbWUgYWJzdHJh
Y3QgaGVhcHMuCisgICAgICBBIHNpbXBsZSBleGFtcGxlIG9mIHVzaW5nIEhlYXBSYW5nZXMgaXMg
d2l0aCBsb2FkcyBhbmQgc3RvcmVzLCBidXQgeW91IGNhbiBhbHNvIHN1cHBseQorICAgICAgSGVh
cFJhbmdlcyBhcyBib3VuZHMgb24gdGhlIGVmZmVjdHMgb2YgY2FsbHMgYW5kIHBhdGNocG9pbnRz
LjwvcD4KKyAgICAKKyAgICA8cD5GZW5jZXMgYXJlIG1vZGVsZWQgYXMgcGhhbnRvbSBlZmZlY3Rz
IHRoYXQgd2UgY2FsbCA8aT5mZW5jZSByYW5nZXM8L2k+LiBGb3IgZXhhbXBsZSwgYSBsb2FkCisg
ICAgICBmZW5jZSBjb3VsZCBiZSByZXByZXNlbnRlZCBhcyBhIHBhdGNocG9pbnQgdGhhdCB3cml0
ZXMgdG8gWzAsIFVJTlRfTUFYXS4gQjMgbW9kZWxzIGxvYWQgZmVuY2VzLAorICAgICAgc3RvcmUg
ZmVuY2VzLCBzdG9yZS1sb2FkIGZlbmNlcywgYWNxdWlyZSBmZW5jZXMsIGFuZCByZWxlYXNlIGZl
bmNlcyB1c2luZyBmZW5jZSByYW5nZXMuIFRoZQorICAgICAgYWJzZW5jZSBvZiBhIGZlbmNlIHJh
bmdlIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gZmVuY2UuPC9wPgorICAgIAorICAgIDxwPkFjcXVp
cmUgZmVuY2VzIGFyZSBtb2RlbGVkIGFzIHBoYW50b20gd3JpdGVzIHRvIG1lbW9yeSwgd2hpbGUg
cmVsZWFzZSBmZW5jZXMgYXJlIG1vZGVsZWQgYXMKKyAgICAgIHBoYW50b20gcmVhZHMgZnJvbSBt
ZW1vcnkuIEJ5IGl0c2VsZiB0aGlzIGRvZXMgbm90IHBlcm1pdCBCMyB0byBkbyBhbGwgb2YgdGhl
IHJlb3JkZXJpbmdzIHRoYXQKKyAgICAgIGFjcXVpcmUvcmVsZWFzZSBhbGxvdy4gQjMgaXMgdGhl
cmVmb3JlIGFsbG93ZWQgdG8gdHJlYXQgbG9hZHMvc3RvcmVzIHdpdGggZmVuY2UgcmFuZ2VzIG1v
cmUKKyAgICAgIHByZWNpc2VseS4gVGhlIHBoYW50b20gd3JpdGUgZWZmZWN0cyBvZiBhIGZlbmNl
ZCBsb2FkIGNhbm5vdCB3cml0ZSB0byBhbnl0aGluZyB0aGF0IGlzIHJlYWQgb3IKKyAgICAgIHdy
aXR0ZW4gYWZ0ZXIgdGhlIGZlbmNlLiBUaGUgcGhhbnRvbSByZWFkIGVmZmVjdHMgb2YgYSBmZW5j
ZWQgc3RvcmUgY2Fubm90IHJlYWQgYW55dGhpbmcgdGhhdAorICAgICAgaXMgd3JpdHRlbiBhZnRl
ciB0aGUgZmVuY2UuPC9wPgogCiAgICAgPGgyPk9wY29kZXM8L2gyPgogCkBAIC0zOTUsNTEgKzQx
NywxMTMgQEAKICAgICAgIDxkdD5JbnQzMiBMb2FkOFooSW50UHRyLCBvZmZzZXQpPC9kdD4KICAg
ICAgIDxkZD5Mb2FkcyBhIGJ5dGUgZnJvbSB0aGUgYWRkcmVzcywgd2hpY2ggaXMgY29tcHV0ZWQg
YnkgYWRkaW5nIHRoZSBjb21waWxlLXRpbWUgMzItYml0CiAgICAgICAgIHNpZ25lZCBpbnRlZ2Vy
IG9mZnNldCB0byB0aGUgY2hpbGQgdmFsdWUuICBaZXJvIGV4dGVuZHMgdGhlIGxvYWRlZCBieXRl
LCBzbyB0aGUgaGlnaCAyNAotICAgICAgICBiaXRzIGFyZSBhbGwgemVyby4gIE11c3QgdXNlIHRo
ZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBUcmFwcyBmbGFnIHNldC48L2RkPgor
ICAgICAgICBiaXRzIGFyZSBhbGwgemVyby4gIE11c3QgdXNlIHRoZSBNZW1vcnlWYWx1ZSBjbGFz
cy4gIE1heSBoYXZlIHRoZSBUcmFwcyBmbGFnIHNldC4gTWF5IHNldAorICAgICAgICBhIGZlbmNl
IHJhbmdlIHRvIHR1cm4gdGhpcyBpbnRvIGEgbG9hZCBhY3F1aXJlLjwvZGQ+CiAKICAgICAgIDxk
dD5JbnQzMiBMb2FkOFMoSW50UHRyLCBvZmZzZXQpPC9kdD4KICAgICAgIDxkZD5Mb2FkcyBhIGJ5
dGUgZnJvbSB0aGUgYWRkcmVzcywgd2hpY2ggaXMgY29tcHV0ZWQgYnkgYWRkaW5nIHRoZSBjb21w
aWxlLXRpbWUgMzItYml0CiAgICAgICAgIHNpZ25lZCBpbnRlZ2VyIG9mZnNldCB0byB0aGUgY2hp
bGQgdmFsdWUuICBTaWduIGV4dGVuZHMgdGhlIGxvYWRlZCBieXRlLiAgTXVzdCB1c2UgdGhlCi0g
ICAgICAgIE1lbW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0Ljwv
ZGQ+CisgICAgICAgIE1lbW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcg
c2V0LiBNYXkgc2V0CisgICAgICAgIGEgZmVuY2UgcmFuZ2UgdG8gdHVybiB0aGlzIGludG8gYSBs
b2FkIGFjcXVpcmUuPC9kZD4KIAogICAgICAgPGR0PkludDMyIExvYWQxNlooSW50UHRyLCBvZmZz
ZXQpPC9kdD4KICAgICAgIDxkZD5Mb2FkcyBhIDE2LWJpdCBpbnRlZ2VyIGZyb20gdGhlIGFkZHJl
c3MsIHdoaWNoIGlzIGNvbXB1dGVkIGJ5IGFkZGluZyB0aGUgY29tcGlsZS10aW1lCiAgICAgICAg
IDMyLWJpdCBzaWduZWQgaW50ZWdlciBvZmZzZXQgdG8gdGhlIGNoaWxkIHZhbHVlLiAgWmVybyBl
eHRlbmRzIHRoZSBsb2FkZWQgMTYtYml0CiAgICAgICAgIGludGVnZXIsIHNvIHRoZSBoaWdoIDE2
IGJpdHMgYXJlIGFsbCB6ZXJvLiAgTWlzYWxpZ25lZCBsb2FkcyBhcmUgbm90IHBlbmFsaXplZC4g
IE11c3QKLSAgICAgICAgdXNlIHRoZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBU
cmFwcyBmbGFnIHNldC48L2RkPgorICAgICAgICB1c2UgdGhlIE1lbW9yeVZhbHVlIGNsYXNzLiAg
TWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0LiBNYXkgc2V0CisgICAgICAgIGEgZmVuY2UgcmFu
Z2UgdG8gdHVybiB0aGlzIGludG8gYSBsb2FkIGFjcXVpcmUuPC9kZD4KIAogICAgICAgPGR0Pklu
dDMyIExvYWQxNlMoSW50UHRyLCBvZmZzZXQpPC9kdD4KICAgICAgIDxkZD5Mb2FkcyBhIDE2LWJp
dCBpbnRlZ2VyIGZyb20gdGhlIGFkZHJlc3MsIHdoaWNoIGlzIGNvbXB1dGVkIGJ5IGFkZGluZyB0
aGUgY29tcGlsZS10aW1lCiAgICAgICAgIDMyLWJpdCBzaWduZWQgaW50ZWdlciBvZmZzZXQgdG8g
dGhlIGNoaWxkIHZhbHVlLiAgU2lnbiBleHRlbmRzIHRoZSBsb2FkZWQgMTYtYml0CiAgICAgICAg
IGludGVnZXIuICBNaXNhbGlnbmVkIGxvYWRzIGFyZSBub3QgcGVuYWxpemVkLiAgTXVzdCB1c2Ug
dGhlIE1lbW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUgdGhlCi0gICAgICAgIFRyYXBzIGZsYWcg
c2V0LjwvZGQ+CisgICAgICAgIFRyYXBzIGZsYWcgc2V0LiBNYXkgc2V0IGEgZmVuY2UgcmFuZ2Ug
dG8gdHVybiB0aGlzIGludG8gYSBsb2FkIGFjcXVpcmUuPC9kZD4KIAogICAgICAgPGR0PlQgTG9h
ZChJbnRQdHIsIG9mZnNldCk8L2R0PgogICAgICAgPGRkPlZhbGlkIGZvciBhbnkgdHlwZSBleGNl
cHQgVm9pZC4gIExvYWRzIGEgdmFsdWUgb2YgdGhhdCB0eXBlIGZyb20gdGhlIGFkZHJlc3MsIHdo
aWNoIGlzCiAgICAgICAgIGNvbXB1dGVkIGJ5IGFkZGluZyB0aGUgY29tcGlsZS10aW1lIDMyLWJp
dCBzaWduZWQgaW50ZWdlciBvZmZzZXQgdG8gdGhlIGNoaWxkIHZhbHVlLgogICAgICAgICBNaXNh
bGlnbmVkIGxvYWRzIGFyZSBub3QgcGVuYWxpemVkLiAgTXVzdCB1c2UgdGhlIE1lbW9yeVZhbHVl
IGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzCi0gICAgICAgIGZsYWcgc2V0LjwvZGQ+CisgICAg
ICAgIGZsYWcgc2V0LiBNYXkgc2V0IGEgZmVuY2UgcmFuZ2UgdG8gdHVybiB0aGlzIGludG8gYSBs
b2FkIGFjcXVpcmUuPC9kZD4KIAogICAgICAgPGR0PlZvaWQgU3RvcmU4KEludDMyLCBJbnRQdHIs
IG9mZnNldCk8L2R0PgogICAgICAgPGRkPlN0b3JlcyBhIHRoZSBsb3cgYnl0ZSBvZiB0aGUgZmly
c3QgY2hpbGQgaW50byB0aGUgYWRkcmVzcyBjb21wdXRlZCBieSBhZGRpbmcgdGhlCiAgICAgICAg
IGNvbXBpbGUtdGltZSAzMi1iaXQgc2lnbmVkIGludGVnZXIgb2Zmc2V0IHRvIHRoZSBzZWNvbmQg
Y2hpbGQuICBNdXN0IHVzZSB0aGUgTWVtb3J5VmFsdWUKLSAgICAgICAgY2xhc3MuICBNYXkgaGF2
ZSB0aGUgVHJhcHMgZmxhZyBzZXQuPC9kZD4KKyAgICAgICAgY2xhc3MuICBNYXkgaGF2ZSB0aGUg
VHJhcHMgZmxhZyBzZXQuIE1heSBzZXQgYSBmZW5jZSByYW5nZSB0byB0dXJuIHRoaXMgaW50byBh
IHN0b3JlIHJlbGVhc2UuPC9kZD4KIAogICAgICAgPGR0PlZvaWQgU3RvcmUxNihJbnQzMiwgSW50
UHRyLCBvZmZzZXQpPC9kdD4KICAgICAgIDxkZD5TdG9yZXMgYSB0aGUgbG93IDE2IGJpdHMgb2Yg
dGhlIGZpcnN0IGNoaWxkIGludG8gdGhlIGFkZHJlc3MgY29tcHV0ZWQgYnkgYWRkaW5nIHRoZQog
ICAgICAgICBjb21waWxlLXRpbWUgMzItYml0IHNpZ25lZCBpbnRlZ2VyIG9mZnNldCB0byB0aGUg
c2Vjb25kIGNoaWxkLiAgTWlzYWxpZ25lZCBzdG9yZXMgYXJlCi0gICAgICAgIG5vdCBwZW5hbGl6
ZWQuICBNdXN0IHVzZSB0aGUgTWVtb3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMg
ZmxhZyBzZXQuPC9kZD4KKyAgICAgICAgbm90IHBlbmFsaXplZC4gIE11c3QgdXNlIHRoZSBNZW1v
cnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBUcmFwcyBmbGFnIHNldC4gTWF5IHNldCBhCisg
ICAgICAgIGZlbmNlIHJhbmdlIHRvIHR1cm4gdGhpcyBpbnRvIGEgc3RvcmUgcmVsZWFzZS48L2Rk
PgogCiAgICAgICA8ZHQ+Vm9pZCBTdG9yZShULCBJbnRQdHIsIG9mZnNldCk8L2R0PgogICAgICAg
PGRkPlN0b3JlcyB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IGNoaWxkIGludG8gdGhlIGFkZHJlc3Mg
Y29tcHV0ZWQgYnkgYWRkaW5nIHRoZQogICAgICAgICBjb21waWxlLXRpbWUgMzItYml0IHNpZ25l
ZCBpbnRlZ2VyIG9mZnNldCB0byB0aGUgc2Vjb25kIGNoaWxkLiAgTWlzYWxpZ25lZCBzdG9yZXMg
YXJlCi0gICAgICAgIG5vdCBwZW5hbGl6ZWQuICBNdXN0IHVzZSB0aGUgTWVtb3J5VmFsdWUgY2xh
c3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxhZyBzZXQuPC9kZD4KKyAgICAgICAgbm90IHBlbmFs
aXplZC4gIE11c3QgdXNlIHRoZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBUcmFw
cyBmbGFnIHNldC4gTWF5IHNldCBhCisgICAgICAgIGZlbmNlIHJhbmdlIHRvIHR1cm4gdGhpcyBp
bnRvIGEgc3RvcmUgcmVsZWFzZS48L2RkPgorICAgICAgCisgICAgICA8ZHQ+SW50MzIgQXRvbWlj
V2Vha0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIEludFB0ciBwdHIpPC9kdD4KKyAg
ICAgIDxkZD5QZXJmb3JtcyBhIHdlYWsgPGEgaHJlZj0iaHR0cHM6Ly9lbi53aWtpcGVkaWEub3Jn
L3dpa2kvQ29tcGFyZS1hbmQtc3dhcCI+Q0FTCisgICAgICAgICAgKGNvbXBhcmUtYW5kLXN3YXAp
PC9hPi4gUmV0dXJucyBhIGJvb2xlYW4gKDAgb3IgMSkgdG8gaW5kaWNhdGUgdGhlIHJlc3VsdCAo
ZmFpbHVyZSBvcgorICAgICAgICBzdWNjZXNzLCByZXNwZWN0aXZlbHkpLiBNYXkgc3B1cmlvdXNs
eSBmYWlsLCBpbiB3aGljaCBjYXNlIGl0IHdpbGwgZG8gbm90aGluZyBhbmQgcmV0dXJuCisgICAg
ICAgIDAuIFlvdSBjYW4gc3VwcGx5IGEgZmVuY2UgcmFuZ2UgdG8gaW5kaWNhdGUgdGhhdCB0aGUg
Q0FTIGlzIGZlbmNlZC4gRmVuY2VkIENBUyBoYXMgYm90aAorICAgICAgICBhY3F1aXJlIGFuZCBy
ZWxlYXNlIGZlbmNlcywgYW5kIGNsYWltcyB0byBib3RoIHJlYWQgYW5kIHdyaXRlIHRoZSBmdWxs
IGZlbmNlIHJhbmdlIGluCisgICAgICAgIGFkZGl0aW9uIHRvIHdoYXRldmVyIHByaW1hcnkgcmFu
Z2UgaXMgc3VwcGxpZWQgZm9yIHRoZSBDQVMgaXRzZWxmLiBBdG9taWNXZWFrQ0FTIG9ubHkKKyAg
ICAgICAgaGFzIGZlbmNpbmcgYmVoYXZpb3IgaW4gdGhlIGNhc2UgdGhhdCBpdCBzdWNjZWVkcy4g
QXRvbWljIG9wZXJhdGlvbnMgdGFrZSBhIHdpZHRoIHBhcmFtZXRlciwKKyAgICAgICAgYWxsb3dp
bmcgdGhlbSB0byBvcGVyYXRlIG92ZXIgOC1iaXQsIDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQg
aW50ZWdlciBtZW1vcnkgbG9jYXRpb25zLjwvZGQ+CisKKyAgICAgIDxkdD5UIEF0b21pY1N0cm9u
Z0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQgbmV3VmFsdWUsIEludFB0ciBwdHIpPC9kdD4KKyAgICAg
IDxkZD5QZXJmb3JtcyBhIHN0cm9uZyA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcv
d2lraS9Db21wYXJlLWFuZC1zd2FwIj5DQVMKKyAgICAgICAgICAoY29tcGFyZS1hbmQtc3dhcCk8
L2E+LiBSZXR1cm5zIHRoZSBvbGQgdmFsdWUgYmVmb3JlIHRoZSBDQVMuIFRoZSBpbnN0cnVjdGlv
biBzZWxlY3RvcgorICAgICAgICBpcyBzbWFydCBhYm91dCBFcXVhbChBdG9taWNTdHJvbmdDQVMo
ZXhwZWN0ZWQsIC4uLiksIGV4cGVjdGVkKSBwYXR0ZXJucywgc28gdGhpcyBvcGNvZGUKKyAgICAg
ICAgaXMgYWxzbyB0aGUgYmVzdCB3YXkgdG8gZG8gYSBzdHJvbmcgQ0FTIHRoYXQgcmV0dXJucyBh
IGJvb2xlYW4gLSBqdXN0IHVzZSBFcXVhbCB0byBjb21wYXJlCisgICAgICAgIHRoZSByZXN1bHQg
dG8gZXhwZWN0ZWQuIFlvdSBjYW4gc3VwcGx5IGEgZmVuY2UgcmFuZ2UgdG8gaW5kaWNhdGUgdGhh
dCB0aGUgQ0FTIGlzIGZlbmNlZC4KKyAgICAgICAgRmVuY2VkIENBUyBoYXMgYm90aCBhY3F1aXJl
IGFuZCByZWxlYXNlIGZlbmNlcywgYW5kIGNsYWltcyB0byBib3RoIHJlYWQgYW5kIHdyaXRlIHRo
ZSBmdWxsCisgICAgICAgIGZlbmNlIHJhbmdlIGluIGFkZGl0aW9uIHRvIHdoYXRldmVyIHByaW1h
cnkgcmFuZ2UgaXMgc3VwcGxpZWQgZm9yIHRoZSBDQVMgaXRzZWxmLgorICAgICAgICBBdG9taWNT
dHJvbmdDQVMgaGFzIHRoZSBzYW1lIGZlbmNpbmcgb24gZmFpbHVyZSBhbmQgc3VjY2Vzcy4gQXRv
bWljIG9wZXJhdGlvbnMgdGFrZSBhIHdpZHRoCisgICAgICAgIHBhcmFtZXRlciwgYWxsb3dpbmcg
dGhlbSB0byBvcGVyYXRlIG92ZXIgOC1iaXQsIDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQgaW50
ZWdlciBtZW1vcnkKKyAgICAgICAgbG9jYXRpb25zLiBSZXR1cm5zIGEgc2lnbi1leHRlbmRlZCBy
ZXN1bHQgZm9yIDgtYml0IG9yIDE2LWJpdCB3aWR0aHMuPC9kZD4KKyAgICAgIAorICAgICAgPGR0
PlQgQXRvbWljWGNoZ0FkZChULCBJbnRQdHIpPC9kdD4KKyAgICAgIDxkZD5BdG9taWNhbGx5IGFk
ZHMgYSB2YWx1ZSB0byB0aGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5zIHRoZSBvbGQgdmFs
dWUuIElzIGFsbG93ZWQgdG8KKyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdlLCB3aGljaCBjYXVz
ZXMgaXQgdG8gaGF2ZSBhY3F1aXJlL3JlbGVhc2UgZmVuY2luZy4gQXRvbWljIG9wZXJhdGlvbnMg
dGFrZQorICAgICAgICBhIHdpZHRoIHBhcmFtZXRlciwgYWxsb3dpbmcgdGhlbSB0byBvcGVyYXRl
IG92ZXIgOC1iaXQsIDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQgaW50ZWdlciBtZW1vcnkKKyAg
ICAgICAgbG9jYXRpb25zLiBSZXR1cm5zIGEgc2lnbi1leHRlbmRlZCByZXN1bHQgZm9yIDgtYml0
IG9yIDE2LWJpdCB3aWR0aHMuPC9kZD4KKworICAgICAgPGR0PlQgQXRvbWljWGNoZ0FuZChULCBJ
bnRQdHIpPC9kdD4KKyAgICAgIDxkZD5BdG9taWNhbGx5IGJpdHdpc2UtYW5kcyBhIHZhbHVlIHRv
IHRoZSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gSXMgYWxsb3dl
ZCB0bworICAgICAgICBoYXZlIGEgZmVuY2UgcmFuZ2UsIHdoaWNoIGNhdXNlcyBpdCB0byBoYXZl
IGFjcXVpcmUvcmVsZWFzZSBmZW5jaW5nLiBBdG9taWMgb3BlcmF0aW9ucyB0YWtlCisgICAgICAg
IGEgd2lkdGggcGFyYW1ldGVyLCBhbGxvd2luZyB0aGVtIHRvIG9wZXJhdGUgb3ZlciA4LWJpdCwg
MTYtYml0LCAzMi1iaXQsIG9yIDY0LWJpdCBpbnRlZ2VyIG1lbW9yeQorICAgICAgICBsb2NhdGlv
bnMuIFJldHVybnMgYSBzaWduLWV4dGVuZGVkIHJlc3VsdCBmb3IgOC1iaXQgb3IgMTYtYml0IHdp
ZHRocy48L2RkPgorCisgICAgICA8ZHQ+VCBBdG9taWNYY2hnT3IoVCwgSW50UHRyKTwvZHQ+Cisg
ICAgICA8ZGQ+QXRvbWljYWxseSBiaXR3aXNlLW9ycyBhIHZhbHVlIHRvIHRoZSBtZW1vcnkgbG9j
YXRpb24gYW5kIHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gSXMgYWxsb3dlZCB0bworICAgICAgICBo
YXZlIGEgZmVuY2UgcmFuZ2UsIHdoaWNoIGNhdXNlcyBpdCB0byBoYXZlIGFjcXVpcmUvcmVsZWFz
ZSBmZW5jaW5nLiBBdG9taWMgb3BlcmF0aW9ucyB0YWtlCisgICAgICAgIGEgd2lkdGggcGFyYW1l
dGVyLCBhbGxvd2luZyB0aGVtIHRvIG9wZXJhdGUgb3ZlciA4LWJpdCwgMTYtYml0LCAzMi1iaXQs
IG9yIDY0LWJpdCBpbnRlZ2VyIG1lbW9yeQorICAgICAgICBsb2NhdGlvbnMuIFJldHVybnMgYSBz
aWduLWV4dGVuZGVkIHJlc3VsdCBmb3IgOC1iaXQgb3IgMTYtYml0IHdpZHRocy48L2RkPgorCisg
ICAgICA8ZHQ+VCBBdG9taWNYY2hnU3ViKFQsIEludFB0cik8L2R0PgorICAgICAgPGRkPkF0b21p
Y2FsbHkgc3VidHJhY3RzIGEgdmFsdWUgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmV0dXJu
cyB0aGUgb2xkIHZhbHVlLiBJcyBhbGxvd2VkIHRvCisgICAgICAgIGhhdmUgYSBmZW5jZSByYW5n
ZSwgd2hpY2ggY2F1c2VzIGl0IHRvIGhhdmUgYWNxdWlyZS9yZWxlYXNlIGZlbmNpbmcuIEF0b21p
YyBvcGVyYXRpb25zIHRha2UKKyAgICAgICAgYSB3aWR0aCBwYXJhbWV0ZXIsIGFsbG93aW5nIHRo
ZW0gdG8gb3BlcmF0ZSBvdmVyIDgtYml0LCAxNi1iaXQsIDMyLWJpdCwgb3IgNjQtYml0IGludGVn
ZXIgbWVtb3J5CisgICAgICAgIGxvY2F0aW9ucy4gUmV0dXJucyBhIHNpZ24tZXh0ZW5kZWQgcmVz
dWx0IGZvciA4LWJpdCBvciAxNi1iaXQgd2lkdGhzLjwvZGQ+CisKKyAgICAgIDxkdD5UIEF0b21p
Y1hjaGdYb3IoVCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+QXRvbWljYWxseSBiaXR3aXNlLXhv
cnMgYSB2YWx1ZSB0byB0aGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5zIHRoZSBvbGQgdmFs
dWUuIElzIGFsbG93ZWQgdG8KKyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdlLCB3aGljaCBjYXVz
ZXMgaXQgdG8gaGF2ZSBhY3F1aXJlL3JlbGVhc2UgZmVuY2luZy4gQXRvbWljIG9wZXJhdGlvbnMg
dGFrZQorICAgICAgICBhIHdpZHRoIHBhcmFtZXRlciwgYWxsb3dpbmcgdGhlbSB0byBvcGVyYXRl
IG92ZXIgOC1iaXQsIDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQgaW50ZWdlciBtZW1vcnkKKyAg
ICAgICAgbG9jYXRpb25zLiBSZXR1cm5zIGEgc2lnbi1leHRlbmRlZCByZXN1bHQgZm9yIDgtYml0
IG9yIDE2LWJpdCB3aWR0aHMuPC9kZD4KKworICAgICAgPGR0PlQgQXRvbWljWGNoZyhULCBJbnRQ
dHIpPC9kdD4KKyAgICAgIDxkZD5BdG9taWNhbGx5IHN0b3JlcyBhIHZhbHVlIHRvIHRoZSBtZW1v
cnkgbG9jYXRpb24gYW5kIHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gSXMgYWxsb3dlZCB0bworICAg
ICAgICBoYXZlIGEgZmVuY2UgcmFuZ2UsIHdoaWNoIGNhdXNlcyBpdCB0byBoYXZlIGFjcXVpcmUv
cmVsZWFzZSBmZW5jaW5nLiBBdG9taWMgb3BlcmF0aW9ucyB0YWtlCisgICAgICAgIGEgd2lkdGgg
cGFyYW1ldGVyLCBhbGxvd2luZyB0aGVtIHRvIG9wZXJhdGUgb3ZlciA4LWJpdCwgMTYtYml0LCAz
Mi1iaXQsIG9yIDY0LWJpdCBpbnRlZ2VyIG1lbW9yeQorICAgICAgICBsb2NhdGlvbnMuIFJldHVy
bnMgYSBzaWduLWV4dGVuZGVkIHJlc3VsdCBmb3IgOC1iaXQgb3IgMTYtYml0IHdpZHRocy48L2Rk
PgogCiAgICAgICA8ZHQ+SW50UHRyIFdhc21BZGRyZXNzKEludFB0ciwgcGlubmVkR1BSKTwvZHQ+
CiAgICAgICA8ZGQ+VGhpcyBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIGFkZHJlc3Mgb2YgYSB3YXNt
IG1lbW9yeSBsb2FkIGZyb20gYSBwaW5uZWQgYmFzZSBHUFIuCiAgICAgICAgIE11c3QgdXNlIHRo
ZSBXYXNtQWRkcmVzc1ZhbHVlIGNsYXNzLjwvZGQ+CiAKLQogICAgICAgPGR0PlZvaWQgRmVuY2Uo
KTwvZHQ+CiAgICAgICA8ZGQ+QWJzdHJhY3RzIHN0YW5kYWxvbmUgZGF0YSBmZW5jZXMgb24geDg2
IGFuZCBBUk0uIE11c3QgdXNlIHRoZSBGZW5jZVZhbHVlIGNsYXNzLCB3aGljaCBoYXMKICAgICAg
ICAgdHdvIGFkZGl0aW9uYWwgbWVtYmVycyB0aGF0IGNvbmZpZ3VyZSB0aGUgcHJlY2lzZSBtZWFu
aW5nIG9mIHRoZSBmZW5jZToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303928</attachid>
            <date>2017-03-09 09:42:36 -0800</date>
            <delta_ts>2017-03-09 17:56:20 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>392830</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxMCBA
QAorMjAxNy0wMy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzIHNob3VsZCBoYXZlIGNvbXByZWhlbnNpdmUgc3VwcG9ydCBmb3IgYXRvbWljIG9wZXJhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBhZGRzIHRoZSBmb2xsb3dpbmcgY2FwYWJpbGl0aWVzIHRvIEIzOgorICAgICAgICAK
KyAgICAgICAgLSBBdG9taWMgd2Vhay9zdHJvbmcgdW5mZW5jZWQvZmVuY2VkIGNvbXBhcmUtYW5k
LXN3YXAKKyAgICAgICAgLSBBdG9taWMgYWRkcy9zdWIvb3IvYW5kL3hvci94aGcKKyAgICAgICAg
LSBBY3F1aXJlL3JlbGVhc2UgZmVuY2luZyBvbiBsb2Fkcy9zdG9yZXMKKyAgICAgICAgLSBGZW5j
ZWxlc3MgbG9hZC1sb2FkIGRlcGVuZGVuY2llcworICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRz
IGxvd2VyaW5nIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIG9uIHg4NjoKKyAgICAgICAg
CisgICAgICAgIC0gbG9jayBjbXB4Y2hnCisgICAgICAgIC0gbG9jayB4YWRkCisgICAgICAgIC0g
bG9jayBhZGQvc3ViL29yL2FuZC94b3IveGNoZworICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRz
IGxvd2VyaW5nIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb25zIG9uIEFSTTY0OgorICAgICAg
ICAKKyAgICAgICAgLSBsZGFyIGFuZCBmcmllbmRzCisgICAgICAgIC0gc3RsciBhbmQgZnJpZW5k
cworICAgICAgICAtIGxkeHIgYW5kIGZyaWVuZHMgKHVuZmVuY2VkIExMKQorICAgICAgICAtIHN0
eHIgYW5kIGZyaWVuZHMgKHVuZmVuZGVkIFNDKQorICAgICAgICAtIGxkYXhyIGFuZCBmcmllbmRz
IChmZW5jZWQgTEwpCisgICAgICAgIC0gc3RseHIgYW5kIGZyaWVuZHMgKGZlbmNlZCBTQykKKyAg
ICAgICAgLSBlb3IgYXMgYSBmZW5jZWxlc3MgbG9hZC1sb2FkIGRlcGVuZGVuY3kKKyAgICAgICAg
CisgICAgICAgIFRoaXMgZG9lcyBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gcGF0dGVybiBtYXRjaGlu
ZyB0byBlbnN1cmUgdGhhdCB3ZWFrL3N0cm9uZyBDQVMgYW5kIGFsbCBvZiB0aGUKKyAgICAgICAg
dmFyaWFudHMgb2YgZmVuY2VzIGFuZCBhdG9taWMgbWF0aCBvcHMgZ2V0IGxvd2VyZWQgdG8gdGhl
IGJlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UuCisgICAgICAgIEZvciBleGFtcGxl
LCB3ZSBzdXBwb3J0IHRoZSBFcXVhbChBdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWQsIC4uLiksIGV4
cGVjdGVkKSBwYXR0ZXJuIGFuZCBhIGJ1bmNoCisgICAgICAgIG9mIGl0cyBmcmllbmRzLiBZb3Ug
Y2FuIHNheSBCcmFuY2goRXF1YWwoQXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkLCAuLi4pLCBleHBl
Y3RlZCkpIGFuZCBpdCB3aWxsCisgICAgICAgIGdlbmVyYXRlIHRoZSBiZXN0IHBvc3NpYmxlIGJy
YW5jaCBzZXF1ZW5jZSBvbiB4ODYgYW5kIEFSTTY0LgorICAgICAgICAKKyAgICAgICAgQjMgbm93
IGtub3dzIGhvdyB0byBtb2RlbCBhbGwgb2YgdGhlIGtpbmRzIG9mIGZlbmNpbmcuIEl0IGtub3dz
IHRoYXQgYWNxIGxvYWRzIGFyZSBvcmRlcmVkIHdpdGgKKyAgICAgICAgcmVzcGVjdCB0byBlYWNo
IG90aGVyIGFuZCB3aXRoIHJlc3BlY3QgdG8gcmVsIHN0b3JlcywgY3JlYXRpbmcgc2VxdWVudGlh
bCBjb25zaXN0ZW5jeSB0aGF0CisgICAgICAgIHRyYW5zY2VuZHMganVzdCB0aGUgYWNxL3JlbCBm
ZW5jZXMgdGhlbXNlbHZlcyAoc2VlIEVmZmVjdHM6OmZlbmNlKS4gSXQga25vd3MgdGhhdCB0aGUg
cGhhbnRvbQorICAgICAgICBmZW5jZSBlZmZlY3RzIG1heSBvbmx5IHRhcmdldCBzb21lIGFic3Ry
YWN0IGhlYXBzIGJ1dCBub3Qgb3RoZXJzLCBzbyB0aGF0IGxvYWQgZWxpbWluYXRpb24gYW5kCisg
ICAgICAgIHN0b3JlIHNpbmtpbmcgY2FuIHN0aWxsIG9wZXJhdGUgYWNyb3NzIGZlbmNlcyBpZiB5
b3UganVzdCB0ZWxsIEIzIHRoYXQgdGhlIGZlbmNlIGRvZXMgbm90IGFsaWFzCisgICAgICAgIHRo
b3NlIGFjY2Vzc2VzLiBUaGlzIG1ha2VzIGl0IHN1cGVyIGVhc3kgdG8gdGVhY2ggQjMgdGhhdCBz
b21lIG9mIHlvdXIgaGVhcCBpcyB0aHJlYWQtbG9jYWwuCisgICAgICAgIEV2ZW4gYmV0dGVyLCBp
dCBsZXRzIHlvdSBleHByZXNzIGZpbmUtZ3JhaW5lZCBkZXBlbmRlbmNpZXMgd2hlcmUgdGhlIGF0
b21pY3MgdGhhdCBhZmZlY3Qgb25lCisgICAgICAgIHByb3BlcnR5IGluIHNoYXJlZCBtZW1vcnkg
ZG8gbm90IGNsb2JiZXIgbm9uLWF0b21pY3MgdGhhdCBmZmVjdCBzb21lIG90aGVyIHByb3BlcnR5
IGluIHNoYXJlZAorICAgICAgICBtZW1vcnkuCisgICAgICAgIAorICAgICAgICBPbmUgb2YgbXkg
ZmF2b3JpdGUgZmVhdHVyZXMgaXMgRGVwZW5kLCB3aGljaCBhbGxvd3MgeW91IHRvIGV4cHJlc3Mg
bG9hZC1sb2FkIGRlcGVuZGVuY2llcy4gT24KKyAgICAgICAgeDg2IGl0IGxvd2VycyB0byBub3Ro
aW5nLCB3aGlsZSBvbiBBUk02NCBpdCBsb3dlcnMgdG8gZW9yLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBhbHNvIGV4cG9zZXMgYSBjb21tb24gYXRvbWljV2Vha0NBUyBBUEkgdG8gdGhlIHg4Nl82
NC9BUk02NCBNYWNyb0Fzc2VtYmxlcnMuIFNhbWUgZm9yCisgICAgICAgIGFjcS9yZWwuIEpTQydz
IDY0LWJpdCBKSVRzIGFyZSBub3cgYSBoYXBweSBjb25jdXJyZW5jeSBwbGF5Z3JvdW5kLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBkb2Vzbid0IHlldCBleHBvc2UgdGhlIGZ1bmN0aW9uYWxpdHkg
dG8gSlMgb3Igd2FzbS4gU0FCIHN0aWxsIHVzZXMgdGhlIG5vbi1pbnRyaW5zaWMKKyAgICAgICAg
aW1wbGVtZW50YXRpb25zIG9mIHRoZSBBdG9taWNzIG9iamVjdCwgZm9yIG5vdy4KKyAgICAgICAg
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmxkYXIpOgorICAgICAgICAoSlND
OjpBUk02NEFzc2VtYmxlcjo6bGR4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjps
ZGF4cik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdHhyKToKKyAgICAgICAgKEpT
Qzo6QVJNNjRBc3NlbWJsZXI6OnN0bHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6
c3RseHIpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZXhjZXBuR2VuZXJhdGlvbklt
bU1hc2spOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6ZXhvdGljTG9hZCk6CisgICAg
ICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpzdG9yZVJlbGVhc2UpOgorICAgICAgICAoSlNDOjpB
Uk02NEFzc2VtYmxlcjo6ZXhvdGljU3RvcmUpOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjppbnZlcnQpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRBY3E4
U2lnbmVkRXh0ZW5kVG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omxv
YWRBY3E4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVSZWw4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZEFjcTE2U2lnbmVkRXh0ZW5k
VG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRBY3ExNik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlUmVsMTYpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0Ojpsb2FkQWNxNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZVJlbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
c3RvcmVSZWw2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5r
OCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxOCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZDgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmRSZWw4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbmsxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZUNvbmQxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlQ29uZFJlbDE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZExpbmszMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNx
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZExpbms2NCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRMaW5rQWNxNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzdG9yZUNvbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnN0b3JlQ29uZFJlbDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YXRvbWljU3Ryb25nQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmF0b21pY1N0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YXRvbWljU3Ryb25nQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphdG9taWNTdHJvbmdDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmF0b21pY1JlbGF4ZWRTdHJvbmdDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6YXRvbWljUmVsYXhlZFN0cm9uZ0NBUzY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoQXRvbWljV2Vha0NBUzgpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNXZWFrQ0FTNjQpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNSZWxheGVkV2Vh
a0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hBdG9taWNS
ZWxheGVkV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJh
bmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpkZXBlbmQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmRlcGVuZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZExpbmspOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkTGlua0FjcSk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlQ29uZFJlbCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnNpZ25FeHRlbmQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpicmFuY2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjphdG9taWNTdHJvbmdDQVMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojph
dG9taWNSZWxheGVkU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6YnJhbmNoQXRvbWljV2Vha0NBUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6ZXh0cmFjdFNpbXBsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpzaWduRXh0ZW5kPDg+KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6c2lnbkV4dGVuZDwxNj4pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0OjpicmFuY2g8NjQ+KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFkZDMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmFuZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bmVnMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bmVnOCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMTYpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6b3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN1YjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnN1YjgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMTYpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpub3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
Ojpub3QxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpub3Q4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlMTYpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Ryb25nQ0FTOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdHJvbmdDQVMxNik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdHJvbmdDQVMzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBdG9taWNTdHJv
bmdDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0
b21pY1N0cm9uZ0NBUzE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OmJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmF0b21pY1dlYWtDQVM4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmF0b21pY1dlYWtDQVMxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjphdG9taWNXZWFrQ0FTMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YnJhbmNoQXRvbWljV2Vha0NBUzgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoQXRvbWljV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1dlYWtDQVMzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNSZWxheGVkV2Vha0NBUzgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljUmVsYXhlZFdlYWtD
QVMxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNSZWxh
eGVkV2Vha0NBUzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJy
YW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzE2KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljQWRkOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBZGQxNik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNBZGQzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNTdWI4KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N1YjE2KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1N1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmF0b21pY0FuZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6YXRvbWljQW5kMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YXRvbWljQW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6YXRvbWljT3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OmF0b21pY09yMTYpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YXRvbWljT3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9t
aWNYb3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hv
cjE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hvcjMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY05lZzgpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTmVnMTYpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTmVnMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljTm90OCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNOb3QxNik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNOb3QzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnQWRkOCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnQWRkMTYpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljWGNoZ0FkZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGc4KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmF0b21pY1hjaGcxNik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjphdG9taWNYY2hnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6bG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6bG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3ExNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3EzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZVJlbDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6c3RvcmVSZWwxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzdG9yZVJlbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN0b3JlRmVuY2UpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6bG9hZEZlbmNlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246
OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnBhdGNoYWJsZUp1bXBTaXplKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OnN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1cHBvcnRzQVZYKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnVwZGF0ZUVheDFFY3hGbGFncyk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp4ODZDb25kaXRpb24pOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEF0b21pY1N0cm9uZ0NBUyk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjphZGQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0OjphbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpuZWc2
NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpvcjY0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN1YjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZfNjQ6OnhvcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om5vdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0b3JlNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljU3Ryb25nQ0FTNjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoQXRvbWljU3Ryb25n
Q0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljV2Vha0NB
UzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaEF0b21pY1dl
YWtDQVM2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNSZWxh
eGVkV2Vha0NBUzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5j
aEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6YXRvbWljQWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YXRvbWljU3ViNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWlj
QW5kNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljT3I2NCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNYb3I2NCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNOZWc2NCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNOb3Q2NCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjphdG9taWNYY2hnQWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Nl82NDo6YXRvbWljWGNoZzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OmxvYWRBY3E2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpzdG9yZVJlbDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6YWRkcV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkcV9ybSk6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkcV9pbSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6YW5kbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kbF9y
bSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kd19ybSk6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6YW5kYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5k
bF9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kd19pbSk6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6YW5kYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
YW5kcV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcV9ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcV9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6aW5jcV9tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdxX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5lZ2xfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bmVnd19tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpuZWdiX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdGxfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6bm90d19tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpub3RiX20pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om5vdHFfbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JsX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfcm0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yd19ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfaW0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9yd19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JiX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpvcnFfbXIpOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Om9ycV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6b3JxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX21yKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpzdWJ3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJiX3JtKToKKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNz
ZW1ibGVyOjpzdWJ3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJiX2ltKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJxX21yKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpzdWJxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJxX2lt
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JsX21yKToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjp4b3JsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3Js
X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3J3X3JtKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjp4b3J3X2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4
b3JiX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JiX2ltKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp4b3JxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX21yKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4Y2hnYl9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6eGNoZ3dfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnhjaGdsX3JtKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4Y2hncV9ybSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6bW92d19pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92cV9p
MzJtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hnYl9ybSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6Y21weGNoZ3dfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6OmNtcHhjaGdsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXB4Y2hn
cV9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZGJfcm0pOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OnhhZGR3X3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojp4YWRkbF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eGFkZHFfcm0pOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGIzL0IzQXRv
bWljVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjp+QXRv
bWljVmFsdWUpOgorICAgICAgICAoSlNDOjpCMzo6QXRvbWljVmFsdWU6OmR1bXBNZXRhKToKKyAg
ICAgICAgKEpTQzo6QjM6OkF0b21pY1ZhbHVlOjpjbG9uZUltcGwpOgorICAgICAgICAoSlNDOjpC
Mzo6QXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKToKKyAgICAgICAgKiBiMy9CM0F0b21pY1ZhbHVl
Lmg6IEFkZGVkLgorICAgICAgICAqIGIzL0IzQmFzaWNCbG9jay5oOgorICAgICAgICAqIGIzL0Iz
QmxvY2tJbnNlcnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJbnNlcnRpb25T
ZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6QjM6OkJsb2NrSW5zZXJ0aW9u
U2V0OjppbnNlcnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJbnNlcnRpb25T
ZXQ6Omluc2VydEJlZm9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpCbG9ja0luc2Vy
dGlvblNldDo6aW5zZXJ0QWZ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QmxvY2tJ
bnNlcnRpb25TZXQ6OmV4ZWN1dGUpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzQmxvY2tJbnNl
cnRpb25TZXQuaDoKKyAgICAgICAgKiBiMy9CM0VmZmVjdHMuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6RWZmZWN0czo6aW50ZXJmZXJlcyk6CisgICAgICAgIChKU0M6OkIzOjpFZmZlY3RzOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKEpTQzo6QjM6OkVmZmVjdHM6OmR1bXApOgorICAgICAgICAqIGIz
L0IzRWZmZWN0cy5oOgorICAgICAgICAoSlNDOjpCMzo6RWZmZWN0czo6Zm9yQ2FsbCk6CisgICAg
ICAgIChKU0M6OkIzOjpFZmZlY3RzOjptdXN0RXhlY3V0ZSk6CisgICAgICAgICogYjMvQjNFbGlt
aW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNHZW5lcmF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpnZW5lcmF0ZVRvQWlyKToKKyAgICAgICAgKiBiMy9CM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkdlbmVy
aWNCbG9ja0luc2VydGlvblNldDo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAg
KEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAg
KEpTQzo6QjM6OkdlbmVyaWNCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QWZ0ZXIpOgorICAgICAg
ICAoSlNDOjpCMzo6R2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAg
KiBiMy9CM0hlYXBSYW5nZS5oOgorICAgICAgICAoSlNDOjpCMzo6SGVhcFJhbmdlOjpvcGVyYXRv
cnwpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
Okluc2VydGlvblNldDo6aW5zZXJ0Q2xvbmUpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0
Lmg6CisgICAgICAgICogYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwOgorICAgICAgICAq
IGIzL0IzTG93ZXJNYWNyb3MuY3BwOgorICAgICAgICAoSlNDOjpCMzo6bG93ZXJNYWNyb3MpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAg
ICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6Okxvd2VyVG9BaXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpydW4p
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YWRkcik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlQW55T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9wKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6c3RvcmVPcGNvZGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpjcmVhdGVTdG9yZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6Om5ld0Jsb2NrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
c3BsaXRCbG9jayk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFj
a21hcCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NkRpdik6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NlVEaXYpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojpsb3dlclg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6Omxvd2VyWDg2VURpdik6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmg6
CisgICAgICAgICogYjMvQjNNZW1vcnlWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpNZW1v
cnlWYWx1ZTo6aXNMZWdhbE9mZnNldCk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6
YWNjZXNzVHlwZSk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6YWNjZXNzQmFuayk6
CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUpOgorICAgICAg
ICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6OmR1bXBNZXRhKToKKyAgICAgICAgKEpTQzo6QjM6Ok1l
bW9yeVZhbHVlOjpNZW1vcnlWYWx1ZSk6CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6
YWNjZXNzV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTWVtb3J5VmFsdWUuaDoKKyAg
ICAgICAgKiBiMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
QjM6Ok1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6QjM6Ok1lbW9y
eVZhbHVlOjpyZXF1aXJlc1NpbXBsZUFkZHIpOgorICAgICAgICAoSlNDOjpCMzo6TWVtb3J5VmFs
dWU6OmFjY2Vzc1dpZHRoKToKKyAgICAgICAgKiBiMy9CM01vdmVDb25zdGFudHMuY3BwOgorICAg
ICAgICAqIGIzL0IzTmF0aXZlVHJhaXRzLmg6IEFkZGVkLgorICAgICAgICAqIGIzL0IzT3Bjb2Rl
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnN0b3JlT3Bjb2RlKToKKyAgICAgICAgKFdURjo6cHJp
bnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAgKEpTQzo6QjM6
OmlzTG9hZCk6CisgICAgICAgIChKU0M6OkIzOjppc1N0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6
OmlzTG9hZFN0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6OmlzQXRvbWljKToKKyAgICAgICAgKEpT
Qzo6QjM6OmlzQXRvbWljQ0FTKToKKyAgICAgICAgKEpTQzo6QjM6OmlzQXRvbWljWGNoZyk6Cisg
ICAgICAgIChKU0M6OkIzOjppc01lbW9yeUFjY2Vzcyk6CisgICAgICAgIChKU0M6OkIzOjpzaWdu
RXh0ZW5kT3Bjb2RlKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpQcm9jZWR1cmU6OmR1bXApOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6Cisg
ICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Omhhc1F1aXJrcyk6CisgICAgICAgIChKU0M6OkIz
OjpQcm9jZWR1cmU6OnNldEhhc1F1aXJrcyk6CisgICAgICAgICogYjMvQjNQdXJlQ1NFLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OnB1cmVDU0UpOgorICAgICAgICAqIGIzL0IzUHVyZUNTRS5oOgor
ICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsaWRh
dGUuY3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFs
dWU6OnJldHVybnNCb29sKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnBl
cmZvcm1TdWJzdGl0dXRpb24pOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnR5cGVGb3IpOgor
ICAgICAgICAqIGIzL0IzVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM1dpZHRoLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OmJlc3RUeXBlKToKKyAgICAgICAgKiBiMy9CM1dpZHRoLmg6CisgICAgICAg
IChKU0M6OkIzOjpjYW5vbmljYWxXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjppc0Nhbm9uaWNh
bFdpZHRoKToKKyAgICAgICAgKEpTQzo6QjM6Om1hc2spOgorICAgICAgICAqIGIzL2Fpci9BaXJB
cmcuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmpzSGFzaCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6OkFyZzo6ZHVtcCk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpp
c0FueVVzZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNDb2xkVXNlKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpjb29sZWQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzRWFybHlVc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzTGF0ZVVzZSk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNBbnlEZWYpOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpBcmc6OmlzRWFybHlEZWYpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6Omlz
TGF0ZURlZik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNaRGVmKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjpzaW1wbGVBZGRyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjpzdGF0dXNDb25kKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1NpbXBsZUFk
ZHIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzTWVtb3J5KToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc1N0YXR1c0NvbmQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpwdHIpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmJhc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmlzR1ApOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRlApOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpBcmc6OmlzVmFsaWRGb3JtKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjpmb3JFYWNoVG1wRmFzdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6Zm9yRWFj
aFRtcCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6YXNBZGRyZXNzKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjphc1N0YXR1c0NvbmRpdGlvbik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OkFyZzo6aXNJbnZlcnRpYmxlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpp
bnZlcnRlZCk6CisgICAgICAgICogYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpCYXNpY0Jsb2NrOjpzZXRTdWNjZXNzb3JzKToKKyAgICAgICAgKiBiMy9h
aXIvQWlyQmFzaWNCbG9jay5oOgorICAgICAgICAqIGIzL2Fpci9BaXJCbG9ja0luc2VydGlvblNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCbG9ja0luc2VydGlvblNldDo6
QmxvY2tJbnNlcnRpb25TZXQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCbG9ja0luc2VydGlv
blNldDo6fkJsb2NrSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKiBiMy9haXIvQWlyQmxvY2tJbnNl
cnRpb25TZXQuaDogQWRkZWQuCisgICAgICAgICogYjMvYWlyL0FpckR1bXBBc0pTLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBiMy9haXIvQWlyRHVtcEFzSlMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBiMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjplbGltaW5hdGVEZWFkQ29kZSk6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24pOgorICAgICAgICAq
IGIzL2Fpci9BaXJJbnN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjppc0F0b21p
Y1N0cm9uZ0NBU1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNT
dHJvbmdDQVNWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmlzQXRvbWljU3Ryb25nQ0FT
OFZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVMxNlZhbGlk
KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVMzMlZhbGlkKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6aXNBdG9taWNTdHJvbmdDQVM2NFZhbGlkKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6aXNCcmFuY2hBdG9taWNTdHJvbmdDQVM4VmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzE2VmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzMyVmFsaWQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjppc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzY0VmFsaWQpOgorICAgICAgICAq
IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy9haXIvQWlyT3B0aW1pemVC
bG9ja09yZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6b3B0aW1pemVCbG9ja09yZGVy
KToKKyAgICAgICAgKiBiMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6cGFkSW50ZXJmZXJlbmNlKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6c3BpbGxFdmVyeXRoaW5nKToK
KyAgICAgICAgKiBiMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYjoKKyAgICAgICAgKiBiMy90ZXN0
YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRBY3E0Mik6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0
b3JlUmVsQWRkTG9hZEFjcTgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkRmVu
Y2VMb2FkQWNxOCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdFg4NkxlYUFkZEFkZCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0WDg2TGVhQWRkU2hs
TGVmdFNjYWxlMSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljV2Vha0NBUyk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0QXRvbWljU3Ryb25nQ0FTKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RBdG9taWNYY2hnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3REZXBlbmQzMik6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0RGVwZW5kNjQpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAg
ICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxNy0wMy0wNyAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFdURiBzaG91bGQgbWFrZSBpdCBzdXBlciBlYXN5IHRv
IGRvIEFSTSBjb25jdXJyZW5jeSB0cmlja3MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDIxMzY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgIEFQSS9PcGFxdWVKU1N0cmluZy5jcHAKIAogICAgIGFzc2VtYmxl
ci9BUk1Bc3NlbWJsZXIuY3BwCisgICAgYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
Y3BwCiAgICAgYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCiAgICAgYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmNwcAogICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKQEAgLTc2LDEy
ICs3NywxMiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGIzL2Fpci9BaXJBbGxv
Y2F0ZVN0YWNrLmNwcAogICAgIGIzL2Fpci9BaXJBcmcuY3BwCiAgICAgYjMvYWlyL0FpckJhc2lj
QmxvY2suY3BwCisgICAgYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcAogICAgIGIzL2Fp
ci9BaXJDQ2FsbFNwZWNpYWwuY3BwCiAgICAgYjMvYWlyL0FpckNDYWxsaW5nQ29udmVudGlvbi5j
cHAKICAgICBiMy9haXIvQWlyQ29kZS5jcHAKICAgICBiMy9haXIvQWlyQ3VzdG9tLmNwcAogICAg
IGIzL2Fpci9BaXJEaXNhc3NlbWJsZXIuY3BwCi0gICAgYjMvYWlyL0FpckR1bXBBc0pTLmNwcAog
ICAgIGIzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAKICAgICBiMy9haXIvQWlyRW1pdFNo
dWZmbGUuY3BwCiAgICAgYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCkBAIC0xMTAsNiAr
MTExLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiMy9haXIvQWlyVmFsaWRh
dGUuY3BwCiAKICAgICBiMy9CM0FyZ3VtZW50UmVnVmFsdWUuY3BwCisgICAgYjMvQjNBdG9taWNW
YWx1ZS5jcHAKICAgICBiMy9CM0JhbmsuY3BwCiAgICAgYjMvQjNCYXNpY0Jsb2NrLmNwcAogICAg
IGIzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3NCw2
ICsyNzQsMTQgQEAKIAkJMEYyQzYzQjAxRTYwQUU0MzAwQzEzODM5IC8qIEIzQmFuay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQUMxRTYwQUUz
QzAwQzEzODM5IC8qIEIzQmFuay5oICovOyB9OwogCQkwRjJDNjNCMTFFNjBBRTQ1MDBDMTM4Mzkg
LyogQjNXaWR0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJDNjNBRDFFNjBBRTNDMDBDMTM4MzkgLyogQjNXaWR0aC5jcHAgKi87IH07CiAJCTBG
MkM2M0IyMUU2MEFFNDcwMEMxMzgzOSAvKiBCM1dpZHRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNBRTFFNjBBRTNEMDBDMTM4MzkgLyogQjNX
aWR0aC5oICovOyB9OworCQkwRjJDNjNCNjFFNjM0M0VBMDBDMTM4MzkgLyogQjNBdG9taWNWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJD
NjNCMzFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAgKi87IH07CisJCTBGMkM2
M0I3MUU2MzQzRUQwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNCNDFFNjM0M0U4MDBDMTM4MzkgLyog
QjNBdG9taWNWYWx1ZS5oICovOyB9OworCQkwRjJDNjNCODFFNjM0M0Y3MDBDMTM4MzkgLyogQjNH
ZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9j
a0luc2VydGlvblNldC5oICovOyB9OworCQkwRjJDNjNCQjFFNjM0NDBBMDBDMTM4MzkgLyogQWly
QmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQzYzQjkxRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9u
U2V0LmNwcCAqLzsgfTsKKwkJMEYyQzYzQkMxRTYzNDQwQzAwQzEzODM5IC8qIEFpckJsb2NrSW5z
ZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJDNjNCQTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLzsg
fTsKKwkJMEYyQzYzQzAxRTY2MEVBNzAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYz
QkYxRTY2MEVBNTAwQzEzODM5IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwICovOyB9Owor
CQkwRjJDNjNDMjFFNjY0QTVDMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0MxMUU2NjRBNUEwMEMx
MzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovOyB9OworCQkwRjJDNjNDNDFFNjlFRjk0MDBDMTM4
MzkgLyogQjNNZW1vcnlWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0MzMUU2OUVGOTIwMEMxMzgzOSAvKiBCM01lbW9yeVZh
bHVlSW5saW5lcy5oICovOyB9OwogCQkwRjJENERERDE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdn
ZXJTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJENEREQjE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5jcHAgKi87IH07CiAJ
CTBGMkQ0RERFMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENEREQzE5ODMyRDM0MDA3RDRC
MTkgLyogRGVidWdnZXJTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRE
RTUxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi87IH07CkBAIC0yMjQ5LDgg
KzIyNTcsNiBAQAogCQlEQzIxNDMwODFDQTMyRTU4MDAwQTg4NjkgLyogSUNTdGF0cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzIxNDMwNTFDQTMy
RTUyMDAwQTg4NjkgLyogSUNTdGF0cy5jcHAgKi87IH07CiAJCURDM0QyQjBBMUQzNDMxNjIwMEJB
OTE4QyAvKiBIZWFwQ2VsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gREMzRDJCMDkxRDM0MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREMzRDJCMEMxRDM0Mzc3
MDAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERDM0QyQjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5jcHAg
Ki87IH07Ci0JCURDNDU0QjhDMUQwMEU4MjIwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzQ1NEI4QTFEMDBF
ODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwICovOyB9OwotCQlEQzQ1NEI4RDFEMDBFODI0
MDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5o
ICovOyB9OwogCQlEQzYwNUI1RDFDRTI2RUEwMDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzYwNUI1OTFD
RTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAgKi87IH07CiAJCURDNjA1QjVFMUNF
MjZFQTIwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzYwNUI1QTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmls
ZXJFdmVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCURDNjA1QjVGMUNFMjZFQTUwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzYwNUI1QjFDRTI2RTk4MDA1
OTM3MTggLyogUHJvZmlsZXJVSUQuY3BwICovOyB9OwpAQCAtMjc3NSw2ICsyNzgxLDE0IEBACiAJ
CTBGMkM2M0FDMUU2MEFFM0MwMEMxMzgzOSAvKiBCM0JhbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQjNCYW5rLmg7IHBhdGggPSBiMy9CM0JhbmsuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzYzQUQxRTYwQUUzQzAwQzEzODM5IC8qIEIzV2lkdGguY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNXaWR0aC5jcHA7IHBhdGgg
PSBiMy9CM1dpZHRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzYzQUUx
RTYwQUUzRDAwQzEzODM5IC8qIEIzV2lkdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQjNXaWR0aC5oOyBwYXRoID0gYjMvQjNXaWR0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjJDNjNCMzFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0F0b21pY1ZhbHVlLmNwcDsg
cGF0aCA9IGIzL0IzQXRvbWljVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjJDNjNCNDFFNjM0M0U4MDBDMTM4MzkgLyogQjNBdG9taWNWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0F0b21pY1ZhbHVlLmg7IHBhdGggPSBiMy9CM0F0b21p
Y1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I1MUU2MzQzRTgw
MEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oOyBwYXRoID0gYjMv
QjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyQzYzQjkxRTYzNDQwODAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckJsb2NrSW5zZXJ0aW9uU2V0
LmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0lu
c2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJCbG9ja0lu
c2VydGlvblNldC5oOyBwYXRoID0gYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0JGMUU2NjBFQTUwMEMxMzgzOSAvKiBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjJDNjNDMTFFNjY0QTVBMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNOYXRpdmVUcmFpdHMuaDsgcGF0aCA9IGIzL0Iz
TmF0aXZlVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0MzMUU2
OUVGOTIwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM01lbW9yeVZhbHVlSW5saW5lcy5oOyBwYXRoID0gYjMvQjNNZW1v
cnlWYWx1ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREIx
OTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGVidWdnZXJTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDREREYxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9m
aWxlckxvZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDc5NSw4ICs0ODA5LDYgQEAKIAkJREMyMTQzMDYx
Q0EzMkU1MjAwMEE4ODY5IC8qIElDU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSUNTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzNEMkIwOTFE
MzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSGVhcENlbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMzRDJCMEIx
RDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhlYXBDZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
REM0NTRCOEExRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckR1bXBBc0pTLmNwcDsgcGF0aCA9IGIzL2Fpci9B
aXJEdW1wQXNKUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURDNDU0QjhCMUQw
MEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBBaXJEdW1wQXNKUy5oOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9m
aWxlckV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2Zp
bGVyRXZlbnQuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNjA1QjVBMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxl
ckV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQu
aDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJREM2MDVCNUIxQ0UyNkU5ODAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyVUlELmNwcDsgcGF0aCA9
IHByb2ZpbGVyL1Byb2ZpbGVyVUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTUzMTQsNiArNTMyNiw4IEBACiAJCQkJMEZFQzg0QjMxQkRBQ0Q4ODAwODBGRjc0IC8qIGFpciAq
LywKIAkJCQkwRkVDODRCNDFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmNw
cCAqLywKIAkJCQkwRkVDODRCNTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVl
LmggKi8sCisJCQkJMEYyQzYzQjMxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFsdWUuY3Bw
ICovLAorCQkJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi8s
CiAJCQkJMEYyQzYzQUIxRTYwQUUzQzAwQzEzODM5IC8qIEIzQmFuay5jcHAgKi8sCiAJCQkJMEYy
QzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIzQmFuay5oICovLAogCQkJCTBGRUM4NEI2MUJEQUNE
QUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxvY2suY3BwICovLApAQCAtNTM3Niw2ICs1MzkwLDcgQEAK
IAkJCQkwRkVDODRDRDFCREFDREFDMDA4MEZGNzQgLyogQjNGcmVxdWVudGVkQmxvY2suaCAqLywK
IAkJCQkwRkVDODRDRTFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5jcHAgKi8sCiAJCQkJ
MEZFQzg0Q0YxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJhdGUuaCAqLywKKwkJCQkwRjJDNjNC
NTFFNjM0M0U4MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKIAkJ
CQkwRkVDODREMDFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmgg
Ki8sCiAJCQkJMEZFQzg1QkYxQkUxNjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmNwcCAqLywK
IAkJCQkwRkVDODVDMDFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLywKQEAgLTUz
OTgsOCArNTQxMywxMCBAQAogCQkJCTQzQUIyNkM1MUMxQTUyRjcwMEQ4MkFFNiAvKiBCM01hdGhF
eHRyYXMuaCAqLywKIAkJCQkwRkVDODRENTFCREFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1
ZS5jcHAgKi8sCiAJCQkJMEZFQzg0RDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUu
aCAqLywKKwkJCQkwRjJDNjNDMzFFNjlFRjkyMDBDMTM4MzkgLyogQjNNZW1vcnlWYWx1ZUlubGlu
ZXMuaCAqLywKIAkJCQkwRjMzOEUwMzFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRz
LmNwcCAqLywKIAkJCQkwRjMzOEUwNDFCRjAyNzZDMDAxM0M4OEYgLyogQjNNb3ZlQ29uc3RhbnRz
LmggKi8sCisJCQkJMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmgg
Ki8sCiAJCQkJMEYzMzhFMDUxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0Lmgg
Ki8sCiAJCQkJMEYzMzhFMDYxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0cy5j
cHAgKi8sCiAJCQkJMEYzMzhFMDcxQkYwMjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0
cy5oICovLApAQCAtNTQ5MSw2ICs1NTA4LDggQEAKIAkJCQkwRjY0RUFGMjFDNEVDRDA2MDA2MjFF
OUIgLyogQWlyQXJnSW5saW5lcy5oICovLAogCQkJCTBGRUM4NTRDMUJEQUNEQzcwMDgwRkY3NCAv
KiBBaXJCYXNpY0Jsb2NrLmNwcCAqLywKIAkJCQkwRkVDODU0RDFCREFDREM3MDA4MEZGNzQgLyog
QWlyQmFzaWNCbG9jay5oICovLAorCQkJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJC
bG9ja0luc2VydGlvblNldC5jcHAgKi8sCisJCQkJMEYyQzYzQkExRTYzNDQwODAwQzEzODM5IC8q
IEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFF
IC8qIEFpckJsb2NrV29ya2xpc3QuaCAqLywKIAkJCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1MEIg
LyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQkwRjYxODMyMTFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi8sCkBAIC01NTAyLDggKzU1MjEsNiBA
QAogCQkJCTBGMTBGMUEyMUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAqLywKIAkJCQk3
OUFCQjE3QjFFNUNDQjU3MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQk3
OUFCQjE3QzFFNUNDQjU3MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmggKi8sCi0JCQkJREM0
NTRCOEExRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLywKLQkJCQlEQzQ1NEI4
QjFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuaCAqLywKIAkJCQkwRjQ1NzAzNjFCRTQ0
QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICovLAogCQkJCTBGNDU3MDM3
MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovLAogCQkJCTBGNjE4
MzIzMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5jcHAgKi8sCkBAIC03MzU1LDYg
KzczNzIsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFG
RTUxQjE5MjJBM0JDMDA2OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLywKKwkJCQkwRjJDNjNCRjFF
NjYwRUE1MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8sCiAJCQkJODYw
MTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKIAkJ
CQkwRjM3MzA5MDFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlLmggKi8sCiAJCQkJODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVy
LmggKi8sCkBAIC03MzgzLDggKzc0MDEsOCBAQAogCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdG
MCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLywKIAkJCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJD
QjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCAqLywKIAkJCQlGRTY4QzYzNjFCOTBEREQ5
MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggKi8sCi0JCQkJODYwMTYxRTAwRjNB
ODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJODYwMTYxRTEwRjNB
ODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8sCisJCQkJODYwMTYxRTAw
RjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJCQkJQTdBNEFFMDcx
Nzk3M0IyNjAwNTYxMkIxIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCAqLywKIAkJCQk4
NjAxNjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLywK
IAkJCQk2NTg2MDE3NzE4NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0
aENhbGwuaCAqLywKQEAgLTc5NzcsNyArNzk5NSw2IEBACiAJCQkJMEZFQzg1NzQxQkRBQ0RDNzAw
ODBGRjc0IC8qIEFpckNDYWxsU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzYx
QkRBQ0RDNzAwODBGRjc0IC8qIEFpckNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTBGMUEz
MUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAotCQkJCURDNDU0
QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY0NTcwMzkxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjYxODMyRDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNERFMUNGMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhP
YnZpb3VzU3BpbGxzLmggaW4gSGVhZGVycyAqLywKQEAgLTc5OTAsNiArODAwNyw3IEBACiAJCQkJ
MEZFQzg1ODAxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUM4NTgxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZERjY3RDcxRDlEQzQ0MjAwMUI5ODI1IC8qIEFpcktpbmQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMkM2M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NEQ0MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxp
dmVuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUzNEMxQTFDNEIzOUFFMDAwM0E1MTIgLyog
QWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkYxQzQ1
QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBA
IC04MDgxLDYgKzgwOTksNyBAQAogCQkJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0Nv
bnN0RmxvYXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QjMxQkRFRDk1NzAwODBG
Rjc0IC8qIEIzQ29uc3RQdHJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhERjYxQkU5
M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEYyQzYzQjgxRTYzNDNGNzAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOEUwRTFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2Vj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRkMxQzE2MjVCRTAwMzIzRjY3IC8qIEIz
RG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjhBRDkxQzRFRERBMjAwOTY5MDUy
IC8qIEIzRHVwbGljYXRlVGFpbHMuaCBpbiBIZWFkZXJzICovLApAQCAtODI3MSw2ICs4MjkwLDcg
QEAKIAkJCQlBNzdBNDIzRTE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJ
bnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0
IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjJDNjNDMjFFNjY0QTVDMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNjIwMTc3MTQzRkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQzRTQwMjFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE4
RDNEMDFCNTVBNkUwMDAyQzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTg0MDIsNiArODQyMiw3IEBACiAJCQkJMEYzOTJDOEExQjQ2MTg4
NDAwODQ0NzI4IC8qIERGR09TUkV4aXRGdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlB
QjE2ODFBM0I2MDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyMzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIz
QXRvbWljVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJF
QSAvKiBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZD
OTVDMTRFRjkwQUYwMEM3MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QjlDRUIxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywK
QEAgLTg4MjAsNiArODg0MSw3IEBACiAJCQkJNzlCODE5OTMxREQyNUNGNTAwRERDNzE0IC8qIEpT
R2xvYmFsT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxMDA3QzExODdDQzND
NjAwQjM4ODc5IC8qIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTUwRTRCNjQxODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNDNDFFNjlFRjk0MDBDMTM4Mzkg
LyogQjNNZW1vcnlWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTJBMTg4
RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlw
dEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMyMTg1QkZBQ0MwMDdFOTVBRCAvKiBK
U0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODMxLDYg
Kzk4NTMsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAogCQkJCTBGRkE1NDk3MTZCODgzNTAwMEIzQTk4MiAvKiBBNjRET3Bjb2RlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGMkM2M0MwMUU2NjBFQTcwMEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFENDkzN0MzMUREQkU2MTQwMDc3QzgwNyAv
KiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU1RjBGNDE0
RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Mzcw
QjRGNTFCRjI2MjAyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRj
aHBvaW50QmFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk4NDEsNyArOTg2NCw2IEBACiAJCQkJ
MEZFQzg1NzMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckNDYWxsU3BlY2lhbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkVDODU3NTFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjYxODMyQjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCURDNDU0QjhDMUQwMEU4MjIwMDRDMThBRiAvKiBBaXJEdW1wQXNK
Uy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ1NzAzODFCRTQ0QzkxMDA2MkE2MjkgLyogQWly
RWxpbWluYXRlRGVhZENvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MTgzMkMxQzQ1QkYw
NzAwNzI0NTBCIC8qIEFpckVtaXRTaHVmZmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNERF
MUNFMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTAyODksNiArMTAzMTEsNyBAQAogCQkJCTlFNzI5NDA3MTkwRjAxQTUwMDFBOTFC
NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTNFNUI3
MTg1QjhCRDMwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNTE0QjJDMjE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGMkM2M0I2MUU2MzQzRUEwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OEUzNTkxMTg2MERFQ0YwMDFGMjRGRSAvKiBJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1Q0ExODVGOTYyNDAw
N0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NTg0MEUyMDE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0xMDMwNyw2ICsxMDMzMCw3IEBACiAJCQkJRTM1RTAzNUYxQjdBQjQzRTAw
NzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNTMyNDM4QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmpl
Y3RzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MEU0QjYxMTg4MDlERDUwMDY4QTQ2RCAvKiBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQzYzQkIxRTYz
NDQwQTAwQzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1NTE2NUQyMUJERjBCOTgwMDNCNzVDMSAvKiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0YxMDdFQzM3NjAw
NDI3QTQ4IC8qIEludGVybmFsRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCShyZXZp
c2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNz
ZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5NCw2ICs2OTQsMjEgQEAgcHJpdmF0ZToKICAg
ICAgICAgTGRyTGl0ZXJhbE9wX0xEUlNXID0gMiwKICAgICAgICAgTGRyTGl0ZXJhbE9wXzEyOEJJ
VCA9IDIKICAgICB9OworICAgIAorICAgIGVudW0gRXhvdGljTG9hZEZlbmNlIHsKKyAgICAgICAg
RXhvdGljTG9hZEZlbmNlX05vbmUsCisgICAgICAgIEV4b3RpY0xvYWRGZW5jZV9BY3F1aXJlCisg
ICAgfTsKKyAgICAKKyAgICBlbnVtIEV4b3RpY0xvYWRBdG9taWMgeworICAgICAgICBFeG90aWNM
b2FkQXRvbWljX0xpbmssCisgICAgICAgIEV4b3RpY0xvYWRBdG9taWNfTm9uZQorICAgIH07CisK
KyAgICBlbnVtIEV4b3RpY1N0b3JlRmVuY2UgeworICAgICAgICBFeG90aWNTdG9yZUZlbmNlX05v
bmUsCisgICAgICAgIEV4b3RpY1N0b3JlRmVuY2VfUmVsZWFzZSwKKyAgICB9OwogCiAgICAgc3Rh
dGljIHVuc2lnbmVkIG1lbVBhaXJPZmZzZXRTaGlmdChib29sIFYsIE1lbVBhaXJPcFNpemUgc2l6
ZSkKICAgICB7CkBAIC0xNTMxLDYgKzE1NDYsNDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
aW5zbigweGQ1MDMzYWJmKTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXpl
PgorICAgIHZvaWQgbGRhcihSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzcmMpCisgICAgewor
ICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGV4b3RpY0xvYWQoTUVNT1BT
SVpFLCBFeG90aWNMb2FkRmVuY2VfQWNxdWlyZSwgRXhvdGljTG9hZEF0b21pY19Ob25lLCBkc3Qs
IHNyYykpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxk
eHIoUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc3JjKQorICAgIHsKKyAgICAgICAgQ0hFQ0tf
REFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihleG90aWNMb2FkKE1FTU9QU0laRSwgRXhvdGljTG9h
ZEZlbmNlX05vbmUsIEV4b3RpY0xvYWRBdG9taWNfTGluaywgZHN0LCBzcmMpKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBsZGF4cihSZWdpc3RlcklEIGRz
dCwgUmVnaXN0ZXJJRCBzcmMpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAg
ICAgICBpbnNuKGV4b3RpY0xvYWQoTUVNT1BTSVpFLCBFeG90aWNMb2FkRmVuY2VfQWNxdWlyZSwg
RXhvdGljTG9hZEF0b21pY19MaW5rLCBkc3QsIHNyYykpOworICAgIH0KKyAgICAKKyAgICB0ZW1w
bGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9pZCBzdHhyKFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0la
RSgpOworICAgICAgICBpbnNuKGV4b3RpY1N0b3JlKE1FTU9QU0laRSwgRXhvdGljU3RvcmVGZW5j
ZV9Ob25lLCByZXN1bHQsIHNyYywgZHN0KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRh
dGFzaXplPgorICAgIHZvaWQgc3RscihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisg
ICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKHN0b3JlUmVsZWFz
ZShNRU1PUFNJWkUsIHNyYywgZHN0KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFz
aXplPgorICAgIHZvaWQgc3RseHIoUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAg
IGluc24oZXhvdGljU3RvcmUoTUVNT1BTSVpFLCBFeG90aWNTdG9yZUZlbmNlX1JlbGVhc2UsIHJl
c3VsdCwgc3JjLCBkc3QpKTsKKyAgICB9CiAKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIG9ybihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBS
ZWdpc3RlcklEIHJtKQpAQCAtMzYwMSw3ICszNjU4LDIyIEBAIHByaXZhdGU6CiAgICAgICAgIGNv
bnN0IGludCBvcDQgPSAwOwogICAgICAgICByZXR1cm4gKDB4ZDYwMDAwMDAgfCBvcGMgPDwgMjEg
fCBvcDIgPDwgMTYgfCBvcDMgPDwgMTAgfCB4T3JacihybikgPDwgNSB8IG9wNCk7CiAgICAgfQot
CisgICAgCisgICAgc3RhdGljIGludCBleG90aWNMb2FkKE1lbU9wU2l6ZSBzaXplLCBFeG90aWNM
b2FkRmVuY2UgZmVuY2UsIEV4b3RpY0xvYWRBdG9taWMgYXRvbWljLCBSZWdpc3RlcklEIGRzdCwg
UmVnaXN0ZXJJRCBzcmMpCisgICAgeworICAgICAgICByZXR1cm4gMHgwODVmN2MwMCB8IHNpemUg
PDwgMzAgfCBmZW5jZSA8PCAxNSB8IGF0b21pYyA8PCAyMyB8IHNyYyA8PCA1IHwgZHN0OworICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgaW50IHN0b3JlUmVsZWFzZShNZW1PcFNpemUgc2l6ZSwgUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIDB4MDg5
ZmZjMDAgfCBzaXplIDw8IDMwIHwgZHN0IDw8IDUgfCBzcmM7CisgICAgfQorICAgIAorICAgIHN0
YXRpYyBpbnQgZXhvdGljU3RvcmUoTWVtT3BTaXplIHNpemUsIEV4b3RpY1N0b3JlRmVuY2UgZmVu
Y2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisg
ICAgeworICAgICAgICByZXR1cm4gMHgwODAwN2MwMCB8IHNpemUgPDwgMzAgfCByZXN1bHQgPDwg
MTYgfCBmZW5jZSA8PCAxNSB8IGRzdCA8PCA1IHwgc3JjOworICAgIH0KKyAgICAKICAgICAvLyBX
b3JrYXJvdW5kIGZvciBDb3J0ZXgtQTUzIGVycmF0dW0gKDgzNTc2OSkuIEVtaXQgYW4gZXh0cmEg
bm9wIGlmIHRoZQogICAgIC8vIGxhc3QgaW5zdHJ1Y3Rpb24gaW4gdGhlIGJ1ZmZlciBpcyBhIGxv
YWQsIHN0b3JlIG9yIHByZWZldGNoLiBOZWVkZWQKICAgICAvLyBiZWZvcmUgNjQtYml0IG11bHRp
cGx5LWFjY3VtdWxhdGUgaW5zdHJ1Y3Rpb25zLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIgLy8gSGF2ZSB0byBicmVhayB3aXRoIHN0
eWxlIGJlY2F1c2UgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGlzIGEgc2hhZHkgaGVhZGVyLgor
CisjaWYgRU5BQkxFKEFTU0VNQkxFUikKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgor
Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJCYXNlOjpTdGF0
dXNDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7CisgICAg
Y2FzZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6U3VjY2VzczoKKyAgICAgICAgb3V0LnBy
aW50KCJTdWNjZXNzIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXJCYXNlOjpGYWlsdXJlOgorICAgICAgICBvdXQucHJpbnQoIkZhaWx1cmUiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDE0LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtSYW5kb20uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MCw4ICs1MSwyOCBA
QCBuYW1lc3BhY2UgREZHIHsKIHN0cnVjdCBPU1JFeGl0OwogfQogCitjbGFzcyBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyQmFzZSB7CitwdWJsaWM6CisgICAgZW51bSBTdGF0dXNDb25kaXRpb24gewor
ICAgICAgICBTdWNjZXNzLAorICAgICAgICBGYWlsdXJlCisgICAgfTsKKyAgICAKKyAgICBzdGF0
aWMgU3RhdHVzQ29uZGl0aW9uIGludmVydChTdGF0dXNDb25kaXRpb24gY29uZGl0aW9uKQorICAg
IHsKKyAgICAgICAgc3dpdGNoIChjb25kaXRpb24pIHsKKyAgICAgICAgY2FzZSBTdWNjZXNzOgor
ICAgICAgICAgICAgcmV0dXJuIEZhaWx1cmU7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAg
ICAgICAgIHJldHVybiBTdWNjZXNzOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTdWNjZXNzOworICAgIH0KK307CisKIHRl
bXBsYXRlIDxjbGFzcyBBc3NlbWJsZXJUeXBlLCBjbGFzcyBNYWNyb0Fzc2VtYmxlclR5cGU+Ci1j
bGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyIHsKK2NsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJhc2UgewogcHVibGljOgogICAgIHR5
cGVkZWYgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlLCBNYWNyb0Fzc2VtYmxl
clR5cGU+IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJUeXBlOwogICAgIHR5cGVkZWYgQXNzZW1ibGVy
VHlwZSBBc3NlbWJsZXJUeXBlX1Q7CkBAIC0xMTA4LDMgKzExMjksMTYgQEAgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlLCBNYQogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIp
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQworCisjaWYgRU5BQkxFKEFTU0VNQkxFUikKKworbmFtZXNw
YWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZTo6U3RhdHVzQ29u
ZGl0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNTRU1C
TEVSKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzYs
NiArMTM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgdHdvVG9UaGUzMjsg
Ly8gVGhpcyBpcyBzdXBlciB1c2VmdWwgZm9yIHNvbWUgZG91YmxlIGNvZGUuCiAKICAgICAvLyBV
dGlsaXRpZXMgdXNlZCBieSB0aGUgREZHIEpJVC4KKyAgICB1c2luZyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyQmFzZTo6aW52ZXJ0OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6aW52ZXJ0
OwogICAgIAogICAgIHN0YXRpYyBEb3VibGVDb25kaXRpb24gaW52ZXJ0KERvdWJsZUNvbmRpdGlv
biBjb25kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDIxMzY0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzc1LDcgKzMzNzUsMjI5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1i
bGVyLmRtYklTSCgpOwogICAgIH0KLQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRFeHRl
bmRUbzMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sZGFyPDg+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFk
ZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOChJbXBsaWNpdEFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZEFjcThTaWduZWRF
eHRlbmRUbzMyKGFkZHJlc3MsIGRlc3QpOworICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoMHhm
ZiksIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChSZWdpc3RlcklEIHNy
YywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dGxyPDg+KHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJl
c3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXI8MTY+
KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBsb2FkQWNxMTYoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoYWRkcmVzcywgZGVzdCk7
CisgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMigweGZmZmYpLCBkZXN0KTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHI8MTY+KHNyYywgZXh0cmFjdFNp
bXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3EzMihJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubGRhcjwzMj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRhcjw2ND4o
ZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIHN0b3JlUmVsMzIoUmVnaXN0ZXJJRCBkZXN0LCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHI8MzI+KGRlc3QsIGV4dHJhY3RTaW1wbGVB
ZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDY0KFJlZ2lz
dGVySUQgZGVzdCwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdGxyPDY0PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbms4KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhyPDg+KGRlc3Qs
IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBs
b2FkTGlua0FjcTgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXhyPDg+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRy
ZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmQ4KFJlZ2lzdGVy
SUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zdHhyPDg+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxl
QWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVDb25kUmVsOChS
ZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RseHI8OD4ocmVzdWx0LCBzcmMsIGV4dHJh
Y3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGlu
azE2KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sZHhyPDE2PihkZXN0LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRy
ZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmtBY3ExNihJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bGRheHI8MTY+KGRlc3QsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBzdG9yZUNvbmQxNihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3R4cjwxNj4ocmVzdWx0LCBzcmMsIGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBzdG9yZUNvbmRSZWwxNihSZWdpc3RlcklEIHNyYywgSW1wbGlj
aXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuc3RseHI8MTY+KHJlc3VsdCwgc3JjLCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRy
ZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZExpbmszMihJbXBsaWNpdEFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGR4
cjwzMj4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGxvYWRMaW5rQWNxMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkYXhyPDMyPihkZXN0LCBleHRy
YWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVD
b25kMzIoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0eHI8MzI+KHJlc3VsdCwgc3Jj
LCBleHRyYWN0U2ltcGxlQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
c3RvcmVDb25kUmVsMzIoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0bHhyPDMyPihy
ZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGxvYWRMaW5rNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkeHI8NjQ+KGRlc3QsIGV4dHJhY3RT
aW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkTGlua0Fj
cTY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sZGF4cjw2ND4oZGVzdCwgZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRk
cmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZDY0KFJlZ2lzdGVySUQgc3Jj
LCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5zdHhyPDY0PihyZXN1bHQsIHNyYywgZXh0cmFjdFNpbXBsZUFkZHJl
c3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlQ29uZFJlbDY0KFJlZ2lz
dGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdGx4cjw2ND4ocmVzdWx0LCBzcmMsIGV4dHJhY3RT
aW1wbGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdHJv
bmdDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTPDg+KGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzwxNj4oY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTPDMy
Pihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNT
dHJvbmdDQVM8NjQ+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywg
cmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVkU3Ryb25nQ0FTOChT
dGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1JlbGF4ZWRTdHJvbmdDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1JlbGF4ZWRTdHJvbmdDQVM8
MTY+KGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNSZWxheGVkU3Ryb25nQ0FTMzIoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAg
ICBhdG9taWNSZWxheGVkU3Ryb25nQ0FTPDMyPihjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgbmV3
VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljUmVs
YXhlZFN0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljUmVsYXhlZFN0cm9uZ0NBUzw2ND4oY29u
ZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0K
KyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1dl
YWtDQVM8OD4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljV2Vha0NBUzE2KFN0YXR1c0Nv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
QXRvbWljV2Vha0NBUzwxNj4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljV2Vha0NBUzMy
KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBS
ZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoQXRvbWljV2Vha0NBUzwzMj4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWlj
V2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljV2Vha0NBUzw2ND4oY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgSnVtcExpc3QgYnJh
bmNoQXRvbWljUmVsYXhlZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM8OD4o
Y29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9Cisg
ICAgCisgICAgSnVtcExpc3QgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0
b21pY1JlbGF4ZWRXZWFrQ0FTPDE2Pihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBKdW1wTGlzdCBicmFuY2hBdG9taWNSZWxh
eGVkV2Vha0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM8MzI+KGNvbmQsIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIEp1
bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNSZWxheGVk
V2Vha0NBUzw2ND4oY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkZXBlbmQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZW9yPDMyPihkZXN0LCBzcmMs
IHNyYyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZGVwZW5kNjQoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmVvcjw2ND4oZGVzdCwg
c3JjLCBzcmMpOworICAgIH0KKyAgICAKICAgICAvLyBNaXNjIGhlbHBlciBmdW5jdGlvbnMuCiAK
ICAgICAvLyBJbnZlcnQgYSByZWxhdGlvbmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9
LCA8IGJlY29tZXMgPj0sIGV0Yy4KQEAgLTM4NzcsNiArNDA5OSwxNTggQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIGxvYWRMaW5rKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHhyPGRhdGFzaXplPihkZXN0
LCBzcmMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgdm9p
ZCBsb2FkTGlua0FjcShSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubGRheHI8ZGF0YXNpemU+KGRlc3QsIHNyYyk7CisgICAgfQorICAg
IAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICB2b2lkIHN0b3JlQ29uZChSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN0eHI8ZGF0YXNpemU+KHNyYywgZGVzdCwgcmVzdWx0KTsKKyAgICB9
CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgc3RvcmVDb25kUmVs
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RseHI8ZGF0YXNpemU+KHNyYywgZGVzdCwgcmVzdWx0
KTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIHZvaWQgc2ln
bkV4dGVuZChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bW92ZShzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+
CisgICAgSnVtcCBicmFuY2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIFJlZ2lzdGVySUQgcmlnaHQpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29u
ZCwgbGVmdCwgcmlnaHQpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+
CisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBzaWduRXh0ZW5kPGRhdGFzaXpl
PihleHBlY3RlZEFuZFJlc3VsdCwgZXhwZWN0ZWRBbmRSZXN1bHQpOworICAgICAgICAKKyAgICAg
ICAgUmVnaXN0ZXJJRCBzaW1wbGVBZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVz
cyk7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpOworICAgICAgICAKKyAgICAgICAgTGFiZWwgcmVsb29wID0gbGFiZWwo
KTsKKyAgICAgICAgbG9hZExpbmtBY3E8ZGF0YXNpemU+KHNpbXBsZUFkZHJlc3MsIHRtcCk7Cisg
ICAgICAgIEp1bXAgZmFpbHVyZSA9IGJyYW5jaDxkYXRhc2l6ZT4oTm90RXF1YWwsIGV4cGVjdGVk
QW5kUmVzdWx0LCB0bXApOworICAgICAgICAKKyAgICAgICAgc3RvcmVDb25kUmVsPGRhdGFzaXpl
PihuZXdWYWx1ZSwgc2ltcGxlQWRkcmVzcywgcmVzdWx0KTsKKyAgICAgICAgYnJhbmNoVGVzdDMy
KE5vblplcm8sIHJlc3VsdCkubGlua1RvKHJlbG9vcCwgdGhpcyk7CisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGNvbmQgPT0gU3VjY2VzcyksIHJlc3VsdCk7CisgICAgICAgIEp1bXAgZG9uZSA9
IGp1bXAoKTsKKyAgICAgICAgCisgICAgICAgIGZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAg
bW92ZSh0bXAsIGV4cGVjdGVkQW5kUmVzdWx0KTsKKyAgICAgICAgc3RvcmVDb25kUmVsPGRhdGFz
aXplPih0bXAsIHNpbXBsZUFkZHJlc3MsIHJlc3VsdCk7CisgICAgICAgIGJyYW5jaFRlc3QzMihO
b25aZXJvLCByZXN1bHQpLmxpbmtUbyhyZWxvb3AsIHRoaXMpOworICAgICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihjb25kID09IEZhaWx1cmUpLCByZXN1bHQpOworICAgICAgICAKKyAgICAgICAgZG9u
ZS5saW5rKHRoaXMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+Cisg
ICAgdm9pZCBhdG9taWNSZWxheGVkU3Ryb25nQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgc2lnbkV4dGVuZDxkYXRh
c2l6ZT4oZXhwZWN0ZWRBbmRSZXN1bHQsIGV4cGVjdGVkQW5kUmVzdWx0KTsKKyAgICAgICAgCisg
ICAgICAgIFJlZ2lzdGVySUQgc2ltcGxlQWRkcmVzcyA9IGV4dHJhY3RTaW1wbGVBZGRyZXNzKGFk
ZHJlc3MpOworICAgICAgICBSZWdpc3RlcklEIHRtcCA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgCisgICAgICAgIExhYmVsIHJlbG9vcCA9IGxh
YmVsKCk7CisgICAgICAgIGxvYWRMaW5rPGRhdGFzaXplPihzaW1wbGVBZGRyZXNzLCB0bXApOwor
ICAgICAgICBKdW1wIGZhaWx1cmUgPSBicmFuY2g8ZGF0YXNpemU+KE5vdEVxdWFsLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgdG1wKTsKKyAgICAgICAgCisgICAgICAgIHN0b3JlQ29uZDxkYXRhc2l6ZT4o
bmV3VmFsdWUsIHNpbXBsZUFkZHJlc3MsIHJlc3VsdCk7CisgICAgICAgIGJyYW5jaFRlc3QzMihO
b25aZXJvLCByZXN1bHQpLmxpbmtUbyhyZWxvb3AsIHRoaXMpOworICAgICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihjb25kID09IFN1Y2Nlc3MpLCByZXN1bHQpOworICAgICAgICBKdW1wIGRvbmUgPSBq
dW1wKCk7CisgICAgICAgIAorICAgICAgICBmYWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAgIG1v
dmUodG1wLCBleHBlY3RlZEFuZFJlc3VsdCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGNv
bmQgPT0gRmFpbHVyZSksIHJlc3VsdCk7CisgICAgICAgIAorICAgICAgICBkb25lLmxpbmsodGhp
cyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBKdW1wTGlz
dCBicmFuY2hBdG9taWNXZWFrQ0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBzaWduRXh0ZW5kPGRhdGFzaXplPihleHBlY3RlZEFuZENsb2JiZXJl
ZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQpOworICAgICAgICAKKyAgICAgICAgUmVnaXN0ZXJJRCBz
aW1wbGVBZGRyZXNzID0gZXh0cmFjdFNpbXBsZUFkZHJlc3MoYWRkcmVzcyk7CisgICAgICAgIFJl
Z2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
OworICAgICAgICAKKyAgICAgICAgSnVtcExpc3Qgc3VjY2VzczsKKyAgICAgICAgSnVtcExpc3Qg
ZmFpbHVyZTsKKworICAgICAgICBsb2FkTGlua0FjcTxkYXRhc2l6ZT4oc2ltcGxlQWRkcmVzcywg
dG1wKTsKKyAgICAgICAgZmFpbHVyZS5hcHBlbmQoYnJhbmNoPGRhdGFzaXplPihOb3RFcXVhbCwg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIHRtcCkpOworICAgICAgICBzdG9yZUNvbmRSZWw8ZGF0YXNp
emU+KG5ld1ZhbHVlLCBzaW1wbGVBZGRyZXNzLCBleHBlY3RlZEFuZENsb2JiZXJlZCk7CisgICAg
ICAgIAorICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICAgICAgY2FzZSBTdWNjZXNzOgorICAg
ICAgICAgICAgc3VjY2Vzcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkKSk7CisgICAgICAgICAgICBmYWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAgICAgICBy
ZXR1cm4gc3VjY2VzczsKKyAgICAgICAgY2FzZSBGYWlsdXJlOgorICAgICAgICAgICAgZmFpbHVy
ZS5hcHBlbmQoYnJhbmNoVGVzdDMyKE5vblplcm8sIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKSk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFpbHVyZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8
aW50IGRhdGFzaXplPgorICAgIEp1bXBMaXN0IGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTKFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBzaWduRXh0
ZW5kPGRhdGFzaXplPihleHBlY3RlZEFuZENsb2JiZXJlZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQp
OworICAgICAgICAKKyAgICAgICAgUmVnaXN0ZXJJRCBzaW1wbGVBZGRyZXNzID0gZXh0cmFjdFNp
bXBsZUFkZHJlc3MoYWRkcmVzcyk7CisgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAgICAgICAKKyAgICAgICAgSnVt
cExpc3Qgc3VjY2VzczsKKyAgICAgICAgSnVtcExpc3QgZmFpbHVyZTsKKworICAgICAgICBsb2Fk
TGluazxkYXRhc2l6ZT4oc2ltcGxlQWRkcmVzcywgdG1wKTsKKyAgICAgICAgZmFpbHVyZS5hcHBl
bmQoYnJhbmNoPGRhdGFzaXplPihOb3RFcXVhbCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIHRtcCkp
OworICAgICAgICBzdG9yZUNvbmQ8ZGF0YXNpemU+KG5ld1ZhbHVlLCBzaW1wbGVBZGRyZXNzLCBl
eHBlY3RlZEFuZENsb2JiZXJlZCk7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGNvbmQpIHsK
KyAgICAgICAgY2FzZSBTdWNjZXNzOgorICAgICAgICAgICAgc3VjY2Vzcy5hcHBlbmQoYnJhbmNo
VGVzdDMyKFplcm8sIGV4cGVjdGVkQW5kQ2xvYmJlcmVkKSk7CisgICAgICAgICAgICBmYWlsdXJl
LmxpbmsodGhpcyk7CisgICAgICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICAgICAgY2FzZSBG
YWlsdXJlOgorICAgICAgICAgICAgZmFpbHVyZS5hcHBlbmQoYnJhbmNoVGVzdDMyKE5vblplcm8s
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkKSk7CisgICAgICAgICAgICByZXR1cm4gZmFpbHVyZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisgICAgCisgICAgUmVnaXN0ZXJJRCBleHRyYWN0U2ltcGxlQWRkcmVzcyhJbXBsaWNp
dEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQpCisg
ICAgICAgICAgICByZXR1cm4gYWRkcmVzcy5iYXNlOworICAgICAgICAKKyAgICAgICAgc2lnbkV4
dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBhZGQ2NChhZGRyZXNzLmJh
c2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBtZW1vcnlUZW1wUmVnaXN0
ZXI7CisgICAgfQogCiAgICAgSnVtcCBqdW1wQWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFyZShEb3Vi
bGVDb25kaXRpb24gY29uZCkKICAgICB7CkBAIC0zOTg5LDYgKzQzNjMsMjQgQEAgQUxXQVlTX0lO
TElORSB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OgogICAgIG1fYXNzZW1ibGVyLnN0dXJoKHJ0
LCBybiwgc2ltbSk7CiB9CiAKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkIE1hY3JvQXNzZW1ibGVy
QVJNNjQ6OnNpZ25FeHRlbmQ8OD4oUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKK3sK
KyAgICBzaWduRXh0ZW5kOFRvMzIoc3JjLCBkZXN0KTsKK30KKwordGVtcGxhdGU8PgoraW5saW5l
IHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk02NDo6c2lnbkV4dGVuZDwxNj4oUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKK3sKKyAgICBzaWduRXh0ZW5kMTZUbzMyKHNyYywgZGVzdCk7Cit9
CisKK3RlbXBsYXRlPD4KK2lubGluZSBNYWNyb0Fzc2VtYmxlckFSTTY0OjpKdW1wIE1hY3JvQXNz
ZW1ibGVyQVJNNjQ6OmJyYW5jaDw2ND4oUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCit7CisgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQs
IGxlZnQsIHJpZ2h0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFC
TEUoQVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMjEzNjQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNiArMTcxLDExIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIuYWRkbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCBhZGQzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hZGRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5k
ZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhZGQzMihSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbF9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwpAQCAtMjUxLDE2ICsyNTYsNzEgQEAgcHVibGlj
OgogICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSk7CiAgICAgfQogCisgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX3JtKHNyYywgZGVzdC5vZmZzZXQs
IGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBh
bmQxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAg
IHZvaWQgYW5kMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3Qu
aW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgYW5kOChSZWdpc3RlcklEIHNy
YywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kOChSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRi
X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7
CisgICAgfQorCiAgICAgdm9pZCBhbmQzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwg
ZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmQzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX21yKHNyYy5vZmZzZXQsIHNy
Yy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBh
bmQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9pbShpbW0ubV92YWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X2ltKHN0YXRpY19jYXN0
PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7Cisg
ICAgfQorCisgICAgdm9pZCBhbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8aW50MTZf
dD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDgoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9p
bShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9pbShzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBhbmQzMihS
ZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIGlmIChvcDEgPT0gb3AyKQpAQCAtNDU2LDYgKzUxNiwzMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fYXNzZW1ibGVyLm5lZ2xfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIG5lZzMyKEJhc2VJbmRleCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UsIHNyY0Rlc3Qu
aW5kZXgsIHNyY0Rlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgbmVnMTYoQWRkcmVzcyBz
cmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnd19tKHNyY0Rlc3Qub2Zmc2V0
LCBzcmNEZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgbmVnMTYoQmFzZUluZGV4IHNyY0Rl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQsIHNy
Y0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBuZWc4KEFkZHJlc3Mgc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5l
Z2JfbShzcmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5l
ZzgoQmFzZUluZGV4IHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdiX20o
c3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2Fs
ZSk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcnIoc3JjLCBkZXN0KTsKQEAgLTQ3
MSwxNiArNTU2LDcxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHNyYywg
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFJlZ2lzdGVy
SUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9y
bShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKworICAgIHZvaWQgb3IxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3I4
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5vcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lk
IG9yOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5vcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9tcihzcmMub2Zmc2V0LCBz
cmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKEJhc2VJbmRleCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOworICAgIH0KKwogICAg
IHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5vcmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbShpbW0ubV92
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19pbShzdGF0aWNfY2Fz
dDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwor
ICAgIH0KKworICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19pbShzdGF0aWNfY2FzdDxpbnQxNl90
PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yYl9pbShz
dGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcmJfaW0oc3RhdGljX2Nhc3Q8
aW50OF90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihSZWdpc3Rl
cklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGlmIChvcDEgPT0gb3AyKQpAQCAtNjU0LDE2ICs3OTQsNzEgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5zdWJsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8
aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAg
ICB9CisKKyAgICB2b2lkIHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGlt
bS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCisgICAg
dm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKworICAg
IHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJ3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3Zh
bHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBzdWI4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9pbShzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihB
ZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
c3VibF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBz
dWIzMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdWJsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2Fs
ZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBzcmMs
IEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yndfcm0oc3JjLCBk
ZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjgoUmVnaXN0ZXJJ
RCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmJfcm0o
c3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFJl
Z2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN1Ymxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1Yndfcm0oc3JjLCBkZXN0Lm9mZnNl
dCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lk
IHN1YjgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuc3ViYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfcnIoc3JjLCBk
ZXN0KTsKQEAgLTY3Nyw2ICs4NzIsNTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJs
ZXIueG9ybF9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQog
CisgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7
CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
Lm5vdGxfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9pbShpbW0ubV92YWx1
ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAg
fQorCisgICAgdm9pZCB4b3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAg
eworICAgICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVl
KTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci54b3J3X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRl
eCBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQxNl90
PihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4
LCBkZXN0LnNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9y
d19pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVz
dC5zY2FsZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50OF90
PihpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm5vdGJfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9pbShpbW0ubV92YWx1ZSwgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCB4b3I4KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgaW1tLm1fdmFsdWUgPSBzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0x
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fz
c2VtYmxlci54b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0
LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9
PSAtMSkKQEAgLTY5MCwxMSArOTI5LDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ybF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQg
eG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIueG9ybF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgs
IGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfcm0oc3JjLCBkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjE2KFJlZ2lzdGVySUQg
c3JjLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfcm0o
c3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAg
ICB9CisKKyAgICB2b2lkIHhvcjgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcmJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZvaWQgeG9y
MzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1i
bGVyLnhvcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KICAgICAKKyAg
ICB2b2lkIHhvcjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnhvcmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwg
c3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCB4b3IzMihSZWdpc3RlcklE
IG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlm
IChvcDEgPT0gb3AyKQpAQCAtNzQxLDYgKzEwMTAsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5ub3RsX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAgICAgfQogCisgICAgdm9p
ZCBub3QzMihCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vdGxf
bShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9
CisKKyAgICB2b2lkIG5vdDE2KEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLm5vdHdfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG5v
dDE2KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwor
ICAgIHZvaWQgbm90OChBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5u
b3RiX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBub3Q4KEJh
c2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKwogICAgIHZv
aWQgc3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIuc3FydHNkX3JyKHNyYywgZHN0KTsKQEAgLTEwNzEsNDIgKzEz
NjUsMjMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBCYXNl
SW5kZXggYWRkcmVzcykKICAgICB7Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAgLy8gT24gMzItYml0
IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKLSAgICAg
ICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEKLSAgICAgICAg
aWYgKHNyYyA+PSA0KSB7Ci0gICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lzdGVy
LgotICAgICAgICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRkcmVz
cyk7Ci0KLSAgICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0byBw
ZXJmb3JtIHRoZSBzdG9yZS4KLSAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdndfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7Ci0gICAgICAgICAgICBzd2FwKHNyYywg
dGVtcCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBt
X2Fzc2VtYmxlci5tb3Z3X3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTE2KFJl
Z2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotI2lmIENQVShYODYpCi0gICAg
ICAgIC8vIE9uIDMyLWJpdCB4ODYgd2UgY2FuIG9ubHkgc3RvcmUgZnJvbSB0aGUgZmlyc3QgNCBy
ZWdpc3RlcnM7Ci0gICAgICAgIC8vIGVzcC4uZWRpIGFyZSBtYXBwZWQgdG8gdGhlICdoJyByZWdp
c3RlcnMhCi0gICAgICAgIGlmIChzcmMgPj0gNCkgewotICAgICAgICAgICAgLy8gUGljayBhIHRl
bXBvcmFyeSByZWdpc3Rlci4KLSAgICAgICAgICAgIFJlZ2lzdGVySUQgdGVtcCA9IGdldFVudXNl
ZFJlZ2lzdGVyKGFkZHJlc3MpOwotCi0gICAgICAgICAgICAvLyBTd2FwIHRvIHRoZSB0ZW1wb3Jh
cnkgcmVnaXN0ZXIgdG8gcGVyZm9ybSB0aGUgc3RvcmUuCi0gICAgICAgICAgICBzd2FwKHNyYywg
dGVtcCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3X3JtKHRlbXAsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwotICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgbV9hc3NlbWJsZXIubW92
d19ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZv
aWQgc3RvcmUxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFs
dWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNz
LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92d19pbShzdGF0aWNf
Y2FzdDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OworICAgIH0KIAogICAgIC8vIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbjoKICAgICAvLwpAQCAt
Mjc0NSw3NCArMzAyMCw5MDEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9pbSgwLCAwLCBYODZSZWdpc3RlcnM6OmVzcCk7CiAg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxl
ci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0p
OworICAgIH0KIAotICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFuIHRoYXQgaXQgcHJldmVudHMg
bW90aW9uIG9mIG5vcm1hbCBzdG9yZXMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgotICAgIHZv
aWQgc3RvcmVGZW5jZSgpCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM4KFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgeworICAgICAgICBh
dG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgWyZdIHsgbV9h
c3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKICAgICB9CiAKLSAgICAvLyBX
ZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBvZiBub3JtYWwgbG9h
ZHMuIFNvLCBpdCdzIGEgbm8tb3Agb24geDg2LgotICAgIHZvaWQgbG9hZEZlbmNlKCkKKyAgICB2
b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQogICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4
cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5l
d1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9u
U3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHZvaWQgYXRvbWljU3Ry
b25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1
bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkKICAgICB7Ci0gICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3Ry
dWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3Vs
dCwgcmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0p
OwogICAgIH0KLSAgICAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNp
emUoKQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBYODZB
c3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgYXRvbWljU3Ryb25n
Q0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNt
cHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCisgICAgdm9p
ZCBhdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJl
Z2lzdGVySUQgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6cGF0
Y2hhYmxlSnVtcFNpemUoKTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3JtKG5ld1ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50
Um91bmRpbmcoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTOChSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewot
ICAgICAgICBpZiAoc19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6Tm90Q2hl
Y2tlZCkKLSAgICAgICAgICAgIHVwZGF0ZUVheDFFY3hGbGFncygpOwotICAgICAgICByZXR1cm4g
c19zc2U0XzFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0OworICAgICAgICBhdG9t
aWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdi
X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNBVlgoKQorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FT
OChSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNl
SW5kZXggYWRkcmVzcykKICAgICB7Ci0gICAgICAgIC8vIEFWWCBzdGlsbCBjYXVzZXMgbXlzdGVy
aW91cyByZWdyZXNzaW9ucyBhbmQgdGhvc2UgcmVncmVzc2lvbnMgY2FuIGJlIG1hc3NpdmUuCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5k
UmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOwog
ICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hGbGFncygpCisgICAgdm9pZCBh
dG9taWNTdHJvbmdDQVMxNihSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAgICBpbnQgZmxhZ3MgPSAw
OwotI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgICAgIGludCBjcHVJbmZvWzRdOwotICAgICAgICBf
X2NwdWlkKGNwdUluZm8sIDB4MSk7Ci0gICAgICAgIGZsYWdzID0gY3B1SW5mb1syXTsKLSNlbGlm
IENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICBhc20gKAot
ICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgotICAgICAgICAgICAgImNwdWlkOyIKLSAg
ICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCi0gICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQot
ICAgICAgICAgICAgOgotICAgICAgICAgICAgOiAiJWVheCIsICIlZWJ4IiwgIiVlY3giLCAiJWVk
eCIKLSAgICAgICAgICAgICk7Ci0jZWxzZQotICAgICAgICBhc20gKAotICAgICAgICAgICAgIm1v
dmwgJDB4MSwgJSVlYXg7IgotICAgICAgICAgICAgInB1c2hsICUlZWJ4OyIKLSAgICAgICAgICAg
ICJjcHVpZDsiCi0gICAgICAgICAgICAicG9wbCAlJWVieDsiCi0gICAgICAgICAgICAibW92bCAl
JWVjeCwgJTA7IgotICAgICAgICAgICAgOiAiPWciIChmbGFncykKLSAgICAgICAgICAgIDoKLSAg
ICAgICAgICAgIDogIiVlYXgiLCAiJWVjeCIsICIlZWR4IgotICAgICAgICAgICAgKTsKLSNlbmRp
ZgorICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVMxNihSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICB2
b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF0b21pY1N0
cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0o
bmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAg
ICB2b2lkIGF0b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJl
Z2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXRv
bWljU3Ryb25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hn
bF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ry
b25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3Vs
dCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZd
IHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOyB9KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgo
U3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9h
c3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICBKdW1w
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFu
ZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ry
b25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hn
bF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NB
Uyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0o
bmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFk
ZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICAvLyBJZiB5b3UgdXNlIHdlYWsgQ0FTLCB5
b3UgY2Fubm90IHJlbHkgb24gZXhwZWN0ZWRBbmRDbG9iYmVyZWQgdG8gaGF2ZSBhbnkgcGFydGlj
dWxhciB2YWx1ZSBhZnRlcgorICAgIC8vIHRoaXMgY29tcGxldGVzLiBPbiB4ODYsIGl0IHdpbGwg
Y29udGFpbiB0aGUgcmVzdWx0IG9mIHRoZSBzdHJvbmcgQ0FTLiBPbiBBUk0sIGl0IHdpbGwgc3Rp
bGwgaGF2ZQorICAgIC8vIHRoZSBleHBlY3RlZCB2YWx1ZS4KKyAgICB2b2lkIGF0b21pY1dlYWtD
QVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhdG9t
aWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAg
dm9pZCBhdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVMxNihjb25k
LCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAg
fQorCisgICAgdm9pZCBhdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRl
eCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9u
Z0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVz
dWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1
ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0
b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRk
cmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVMzMihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsK
KyAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5l
d1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
V2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNX
ZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWlj
V2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21p
Y1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENs
b2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0
b21pY1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hB
dG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRB
bmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljUmVsYXhlZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25k
LCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAg
fQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNz
LCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7
CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBu
ZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4
ZWRXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3Rl
cklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsKKyAgICB9CisKKyAg
ICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdD
QVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3Vs
dCk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5l
d1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAg
ICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxh
eGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9t
aWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJy
YW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMxNihjb25k
LCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25n
Q0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAg
ICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBdG9t
aWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJl
c3MpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMzMihTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4g
YnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1Zh
bHVlLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGF0b21pY0FkZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDgoaW1tLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFk
ZDgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQ4KFJlZ2lz
dGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsKKyAgICAgICAgYWRkOChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQxNihUcnVzdGVkSW1tMzIgaW1tLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgYWRkMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNB
ZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBhZGQxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGF0b21pY0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYWRkMTYocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIGFkZDMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
YWRkMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBZGQzMihS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIGFkZDMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjgoaW1tLCBhZGRy
ZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJbW0zMiBpbW0s
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBzdWI4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWlj
U3ViOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjgocmVnLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihUcnVzdGVkSW1tMzIg
aW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7
CisgICAgICAgIHN1YjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljU3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjE2KGltbSwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgc3Vi
MTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNTdWIxNihSZWdp
c3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIHN1YjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihpbW0sIGFkZHJl
c3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJbW0zMiBpbW0s
IEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICBzdWIzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1N1YjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3ViMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWIzMihy
ZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoVHJ1c3RlZElt
bTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljQW5kOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kOChpbW0sIGFkZHJlc3MpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5k
OChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDgoUmVnaXN0
ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBhbmQ4KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihpbW0sIGFkZHJlc3Mp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAg
ICAgICBhbmQxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0Fu
ZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFuZDE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljQW5kMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBhbmQxNihyZWcs
IGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgYW5kMzIoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
dG9taWNBbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIoaW1tLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBh
bmQzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDMyKFJl
Z2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgYW5kMzIocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgoaW1tLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAg
ICAgIG9yOChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yOChS
ZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjgocmVnLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
b3IxNihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMTYoVHJ1
c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIG9yMTYoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yMTYocmVnLCBhZGRyZXNz
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAg
ICAgb3IxNihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOworICAgICAgICBvcjMyKGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljT3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3IzMihpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yMzIoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgb3IzMihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09y
MzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOworICAgICAgICBvcjMyKHJlZywgYWRkcmVzcyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I4KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3I4KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRv
bWljWG9yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjgocmVn
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7CisgICAgICAgIHhvcjE2KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXRvbWljWG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KGltbSwgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
eG9yMTYocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3IxNihS
ZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7CisgICAgICAgIHhvcjE2KHJlZywgYWRkcmVzcyk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3IzMihpbW0sIGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjMyKFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICB4b3IzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hvcjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHhvcjMyKHJlZywgYWRkcmVzcyk7CisgICAg
fQorICAgIAorICAgIHZvaWQgYXRvbWljWG9yMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICB4b3Iz
MihyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzgoQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBu
ZWc4KGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05lZzgoQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5l
ZzgoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMTYoQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWcx
NihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWcxNihCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVn
MTYoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTmVnMzIoQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWcz
MihhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOZWczMihCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbmVn
MzIoYWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDgo
YWRkcmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljTm90OChCYXNlSW5kZXggYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbm90OChh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QxNihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDE2KGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDE2KEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QxNihh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNOb3QzMihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDMyKGFk
ZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY05vdDMyKEJhc2VJbmRleCBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3QzMihh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkOChSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hjaGdBZGQ4KFJlZ2lzdGVy
SUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIueGFkZHdfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fz
c2VtYmxlci54YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hj
aGdBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9ybShyZWcsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhhZGRsX3JtKHJl
ZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3RlcklEIHJlZywg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGd3X3Jt
KHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3df
cm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIoUmVnaXN0ZXJJ
RCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnMzIoUmVnaXN0ZXJJ
RCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGxvYWRBY3E4KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBsb2FkOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3E4
KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4KHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcThTaWduZWRFeHRlbmRUbzMy
KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkOFNpZ25l
ZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxOFNp
Z25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbG9hZDhTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbG9hZEFjcTE2KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkMTYoc3JjLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkQWNxMTYo
QmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDE2KHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8z
MihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDE2U2ln
bmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRBY3Ex
NlNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIGxvYWRBY3EzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbG9hZDMyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFj
cTMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQz
MihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsOChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWw4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHN0b3JlUmVsOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBzdG9yZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJl
bDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9y
ZTgoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNyYywgZGVzdCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNyYywgQmFzZUlu
ZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTE2KHNyYywgZGVzdCk7CisgICAgfQorICAg
IAorICAgIHZvaWQgc3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBzdG9yZTE2KGltbSwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
c3RvcmVSZWwxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAg
ICAgIHN0b3JlMTYoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZVJlbDMy
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKHNy
YywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYywgZGVzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTMyKGltbSwgZGVzdCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc3RvcmVSZWwzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgLy8gV2Ug
dGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBtb3Rpb24gb2Ygbm9ybWFsIHN0b3Jl
cy4gU28sIGl0J3MgYSBuby1vcCBvbiB4ODYuCisgICAgdm9pZCBzdG9yZUZlbmNlKCkKKyAgICB7
CisgICAgfQorCisgICAgLy8gV2UgdGFrZSB0aGlzIHRvIG1lYW4gdGhhdCBpdCBwcmV2ZW50cyBt
b3Rpb24gb2Ygbm9ybWFsIGxvYWRzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KKyAgICB2b2lk
IGxvYWRGZW5jZSgpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRo
SnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJl
bCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhl
Y3V0YWJsZUFkZHJlc3MoKSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4
SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVy
OjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZf
dCBwYXRjaGFibGVKdW1wU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVy
OjpwYXRjaGFibGVKdW1wU2l6ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
RmxvYXRpbmdQb2ludFJvdW5kaW5nKCkKKyAgICB7CisgICAgICAgIGlmIChzX3NzZTRfMUNoZWNr
U3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQorICAgICAgICAgICAgdXBkYXRl
RWF4MUVjeEZsYWdzKCk7CisgICAgICAgIHJldHVybiBzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BV
SURDaGVja1N0YXRlOjpTZXQ7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNBVlgo
KQorICAgIHsKKyAgICAgICAgLy8gQVZYIHN0aWxsIGNhdXNlcyBteXN0ZXJpb3VzIHJlZ3Jlc3Np
b25zIGFuZCB0aG9zZSByZWdyZXNzaW9ucyBjYW4gYmUgbWFzc2l2ZS4KKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUVheDFFY3hGbGFncygpCisg
ICAgeworICAgICAgICBpbnQgZmxhZ3MgPSAwOworI2lmIENPTVBJTEVSKE1TVkMpCisgICAgICAg
IGludCBjcHVJbmZvWzRdOworICAgICAgICBfX2NwdWlkKGNwdUluZm8sIDB4MSk7CisgICAgICAg
IGZsYWdzID0gY3B1SW5mb1syXTsKKyNlbGlmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKyNpZiBD
UFUoWDg2XzY0KQorICAgICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7
IgorICAgICAgICAgICAgImNwdWlkOyIKKyAgICAgICAgICAgICJtb3ZsICUlZWN4LCAlMDsiCisg
ICAgICAgICAgICA6ICI9ZyIgKGZsYWdzKQorICAgICAgICAgICAgOgorICAgICAgICAgICAgOiAi
JWVheCIsICIlZWJ4IiwgIiVlY3giLCAiJWVkeCIKKyAgICAgICAgICAgICk7CisjZWxzZQorICAg
ICAgICBhc20gKAorICAgICAgICAgICAgIm1vdmwgJDB4MSwgJSVlYXg7IgorICAgICAgICAgICAg
InB1c2hsICUlZWJ4OyIKKyAgICAgICAgICAgICJjcHVpZDsiCisgICAgICAgICAgICAicG9wbCAl
JWVieDsiCisgICAgICAgICAgICAibW92bCAlJWVjeCwgJTA7IgorICAgICAgICAgICAgOiAiPWci
IChmbGFncykKKyAgICAgICAgICAgIDoKKyAgICAgICAgICAgIDogIiVlYXgiLCAiJWVjeCIsICIl
ZWR4IgorICAgICAgICAgICAgKTsKKyNlbmRpZgogI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19PUl9D
TEFORykKICAgICAgICAgc19zc2U0XzFDaGVja1N0YXRlID0gKGZsYWdzICYgKDEgPDwgMTkpKSA/
IENQVUlEQ2hlY2tTdGF0ZTo6U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKICAgICAgICAg
c19hdnhDaGVja1N0YXRlID0gKGZsYWdzICYgKDEgPDwgMjgpKSA/IENQVUlEQ2hlY2tTdGF0ZTo6
U2V0IDogQ1BVSURDaGVja1N0YXRlOjpDbGVhcjsKQEAgLTI4MzMsNiArMzkzNSwxOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlv
bj4oY29uZCk7CiAgICAgfQogCisgICAgWDg2QXNzZW1ibGVyOjpDb25kaXRpb24geDg2Q29uZGl0
aW9uKFN0YXR1c0NvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjb25kKSB7
CisgICAgICAgIGNhc2UgU3VjY2VzczoKKyAgICAgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6
OkNvbmRpdGlvbkU7CisgICAgICAgIGNhc2UgRmFpbHVyZToKKyAgICAgICAgICAgIHJldHVybiBY
ODZBc3NlbWJsZXI6OkNvbmRpdGlvbk5FOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRpdGlv
bkU7CisgICAgfQorCiAgICAgdm9pZCBzZXQzMihYODZBc3NlbWJsZXI6OkNvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogI2lmIENQVShYODYpCkBAIC0yOTI3LDYgKzQwNDEs
MzUgQEAgcHJvdGVjdGVkOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihzaXplT2ZSZWdpc3Rl
ciksIGRzdCk7CiAgICAgICAgIHNyY0lzTm9uWmVyby5saW5rKHRoaXMpOwogICAgIH0KKyAgICAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWljU3Ryb25nQ0FTKFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3Rl
cklEIHJlc3VsdCwgY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0
ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOworICAgICAgICBmdW5jKCk7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4
NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNvbmQpLCByZXN1
bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBhdG9t
aWNTdHJvbmdDQVMoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgY29uc3QgRnVuYyYgZnVu
YykKKyAgICB7CisgICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6
ZWF4KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBmdW5jKCk7CisgICAg
ICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25n
Q0FTKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBj
b25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwg
WDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAg
IGZ1bmMoKTsKKyAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjpl
YXgpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNv
bmQpKSk7CisgICAgfQogCiBwcml2YXRlOgogICAgIC8vIE9ubHkgTWFjcm9Bc3NlbWJsZXJYODYg
c2hvdWxkIGJlIHVzaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kOyBTU0UyIGlzIGFsd2F5cyBhdmFp
bGFibGUgb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIxMzY0NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIw
MTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2NCwxMSArMjY0LDIxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIuYWRkcV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCBhZGQ2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5k
ZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhZGQ2NChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgYWRkNjQoUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YWRkcV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2Nh
bGUpOworICAgIH0KKwogICAgIHZvaWQgYWRkNjQoQWJzb2x1dGVBZGRyZXNzIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNyYy5tX3B0ciks
IHNjcmF0Y2hSZWdpc3RlcigpKTsKQEAgLTMwNiw2ICszMTYsMTQgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkcV9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuaW5jcV9tKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5hZGRxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2
b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAg
IHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVn
aXN0ZXIoKSk7CkBAIC0zNDIsMTEgKzM2MCw0MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLmFuZHFfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0KFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX3Jt
KHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChS
ZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5z
Y2FsZSk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zmc2V0LCBzcmMu
YmFzZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChCYXNlSW5kZXggc3JjLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX21yKHNyYy5vZmZz
ZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7CisgICAgfQorCiAgICAg
dm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0KTsKICAgICB9
CiAKKyAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfaW0oaW1tLm1fdmFsdWUsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRxX2ltKGltbS5tX3Zh
bHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAg
ICB9CisKICAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIHNyY0Rl
c3QpCiAgICAgewogICAgICAgICBpbnRwdHJfdCBpbnRWYWx1ZSA9IGltbS5hc0ludHB0cigpOwpA
QCAtNTUyLDExICs2MDAsNTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX3Io
ZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBuZWc2NChBZGRyZXNzIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5uZWdxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQor
CisgICAgdm9pZCBuZWc2NChCYXNlSW5kZXggZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLm5lZ3FfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKICAgICB2b2lkIG9yNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ycihzcmMsIGRlc3QpOwogICAgIH0K
IAorICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIub3JxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7Cisg
ICAgfQorCisgICAgdm9pZCBvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJh
c2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOworICAgIH0KKworICAgIHZvaWQgb3I2NChBZGRy
ZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3Jx
X21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yNjQo
QmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVz
dCk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBvcjY0KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JxX2ltKGlt
bS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxl
KTsKKyAgICB9CisKICAgICB2b2lkIG9yNjQoVHJ1c3RlZEltbTY0IGltbSwgUmVnaXN0ZXJJRCBz
cmNEZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlIDw9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpCkBAIC02MTksMTYgKzcwNywzMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnN1YnFfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOwogICAgIH0KIAorICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ltKGltbS5t
X3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjY0KEFkZHJlc3Mgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21yKHNyYy5vZmZzZXQs
IHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjY0KEJhc2VJbmRleCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfbXIoc3Jj
Lm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsKKyAgICB9CisK
ICAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7CiAg
ICAgfQogCisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3Qu
YmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7CisgICAgfQorCiAgICAgdm9pZCB4b3I2NChS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIueG9ycV9ycihzcmMsIGRlc3QpOwpAQCAtNjUxLDYgKzc1NCwzMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAg
ICB9CiAKKyAgICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KEFk
ZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54
b3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHhv
cjY0KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnhvcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxl
LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1tLm1fdmFsdWUs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgIH0KKworICAgIHZvaWQgeG9yNjQoVHJ1c3Rl
ZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54
b3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBk
ZXN0LnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaXIoaW1t
Lm1fdmFsdWUsIHNyY0Rlc3QpOwpAQCAtNjY2LDYgKzc5NCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLm5vdHFfbShkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKKyAg
ICB2b2lkIG5vdDY0KEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bm90cV9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOwor
ICAgIH0KKwogICAgIHZvaWQgbG9hZDY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX21yKGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwpAQCAtNzI1LDYgKzg1OCwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92cV9p
MzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZElt
bTY0IGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzMyXzY0KGltbS5tX3ZhbHVlKSkgewpAQCAtMTI5NCw3ICsxNDMyLDI3NSBA
QCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0
Y2hSZWdpc3RlcigpKSwgbWFzazgpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N0cm9u
Z0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0
LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CisgICAgfQogCisgICAgdm9pZCBhdG9taWNTdHJv
bmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3Vs
dCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVz
dWx0KQorICAgIHsKKyAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVz
dWx0LCByZXN1bHQsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsg
fSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3RlcklEIGV4cGVj
dGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIFsmXSB7IG1fYXNz
ZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsgfSk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChSZWdpc3RlcklEIGV4
cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgWyZdIHsg
bV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsKKyAgICB9CisKKyAgICBK
dW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4
cGVjdGVkQW5kUmVzdWx0LCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1ZSwg
YWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoQXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3Rl
ZEFuZFJlc3VsdCwgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9
KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGF0b21p
Y1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVz
cywgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1dlYWtDQVM2NChTdGF0dXNDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBu
ZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1Zh
bHVlLCBhZGRyZXNzLCByZXN1bHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQXRvbWljV2Vh
a0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1dl
YWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21pY1JlbGF4
ZWRXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRD
bG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7CisgICAgfQorCisgICAg
dm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpCisgICAgeworICAgICAgICBhdG9taWNTdHJvbmdD
QVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3Vs
dCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzY0KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYnJh
bmNoQXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVl
LCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FT
NjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQs
IFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBuZXdWYWx1ZSwgYWRkcmVzcyk7CisgICAgfQorCisgICAgdm9pZCBhdG9taWNBZGQ2NChUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIGFkZDY0KGltbSwgYWRkcmVzcyk7CisgICAgfQorICAgIAorICAg
IHZvaWQgYXRvbWljQWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KGltbSwgYWRk
cmVzcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljQWRkNjQoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAg
ICAgICAgYWRkNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNB
ZGQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIGFkZDY0KHJlZywgYWRkcmVzcyk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBzdWI2NChp
bW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1N1YjY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOworICAgICAgICBzdWI2NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGF0b21pY1N1YjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIHN1YjY0KHJlZywgYWRkcmVzcyk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYXRvbWljU3ViNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBzdWI2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY0FuZDY0
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhdG9taWNBbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQoaW1t
LCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNBbmQ2NChSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygp
OworICAgICAgICBhbmQ2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY0FuZDY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgYW5kNjQocmVnLCBhZGRyZXNzKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgb3I2
NChpbW0sIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY09yNjQoVHJ1c3Rl
ZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7CisgICAgICAgIG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBhdG9taWNPcjY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG9yNjQocmVnLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNPcjY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAg
b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21pY1hvcjY0KFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQoaW1tLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBhdG9taWNYb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQoaW1tLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYb3I2NChSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOwor
ICAgICAgICB4b3I2NChyZWcsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0b21p
Y1hvcjY0KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgeG9yNjQocmVnLCBhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNOZWc2NChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5lZzY0KGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY05lZzY0KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBuZWc2NChhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNOb3Q2NChBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG5vdDY0KGFkZHJlc3MpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGF0b21pY05vdDY0KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBub3Q2NChhZGRyZXNzKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIueGFkZHFfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBhdG9taWNYY2hnQWRkNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAg
ICBtX2Fzc2VtYmxlci54YWRkcV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hjaGc2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOworICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcs
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGF0
b21pY1hjaGc2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JtKHJl
ZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZEFjcTY0KEFkZHJlc3Mgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBsb2FkQWNxNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbG9hZDY0KHNyYywgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQg
c3RvcmVSZWw2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAg
c3RvcmU2NChzcmMsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoUmVn
aXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU2NChzcmMs
IGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmU2NChpbW0sIGRlc3QpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHN0b3JlUmVsNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGRlc3QpCisgICAgeworICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7CisgICAgfQorICAgIAog
ICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5jdnR0c2Qyc2lxX3JyKHNyYywg
ZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDIxMzY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MCwxNiArMTkwLDIwIEBA
IHByaXZhdGU6CiAgICAgICAgIE9QX0FERF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDAx
LAogICAgICAgICBPUF9BRERfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgwMywKICAgICAg
ICAgT1BfQUREX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MDUsCisgICAgICAgIE9QX09S
X0V2R2IgICAgICAgICAgICAgICAgICAgICAgPSAweDA4LAogICAgICAgICBPUF9PUl9Fdkd2ICAg
ICAgICAgICAgICAgICAgICAgID0gMHgwOSwKICAgICAgICAgT1BfT1JfR3ZFdiAgICAgICAgICAg
ICAgICAgICAgICA9IDB4MEIsCiAgICAgICAgIE9QX09SX0VBWEl2ICAgICAgICAgICAgICAgICAg
ICAgPSAweDBELAogICAgICAgICBPUF8yQllURV9FU0NBUEUgICAgICAgICAgICAgICAgID0gMHgw
RiwKKyAgICAgICAgT1BfQU5EX0V2R2IgICAgICAgICAgICAgICAgICAgICA9IDB4MjAsCiAgICAg
ICAgIE9QX0FORF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDIxLAogICAgICAgICBPUF9B
TkRfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgyMywKKyAgICAgICAgT1BfU1VCX0V2R2Ig
ICAgICAgICAgICAgICAgICAgICA9IDB4MjgsCiAgICAgICAgIE9QX1NVQl9Fdkd2ICAgICAgICAg
ICAgICAgICAgICAgPSAweDI5LAogICAgICAgICBPUF9TVUJfR3ZFdiAgICAgICAgICAgICAgICAg
ICAgID0gMHgyQiwKICAgICAgICAgT1BfU1VCX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4
MkQsCiAgICAgICAgIFBSRV9QUkVESUNUX0JSQU5DSF9OT1RfVEFLRU4gICAgPSAweDJFLAorICAg
ICAgICBPUF9YT1JfRXZHYiAgICAgICAgICAgICAgICAgICAgID0gMHgzMCwKICAgICAgICAgT1Bf
WE9SX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MzEsCiAgICAgICAgIE9QX1hPUl9HdkV2
ICAgICAgICAgICAgICAgICAgICAgPSAweDMzLAogICAgICAgICBPUF9YT1JfRUFYSXYgICAgICAg
ICAgICAgICAgICAgID0gMHgzNSwKQEAgLTIyMyw2ICsyMjcsNyBAQCBwcml2YXRlOgogICAgICAg
ICBPUF9HUk9VUDFfRXZJYiAgICAgICAgICAgICAgICAgID0gMHg4MywKICAgICAgICAgT1BfVEVT
VF9FYkdiICAgICAgICAgICAgICAgICAgICA9IDB4ODQsCiAgICAgICAgIE9QX1RFU1RfRXZHdiAg
ICAgICAgICAgICAgICAgICAgPSAweDg1LAorICAgICAgICBPUF9YQ0hHX0V2R2IgICAgICAgICAg
ICAgICAgICAgID0gMHg4NiwKICAgICAgICAgT1BfWENIR19Fdkd2ICAgICAgICAgICAgICAgICAg
ICA9IDB4ODcsCiAgICAgICAgIE9QX01PVl9FYkdiICAgICAgICAgICAgICAgICAgICAgPSAweDg4
LAogICAgICAgICBPUF9NT1ZfRXZHdiAgICAgICAgICAgICAgICAgICAgID0gMHg4OSwKQEAgLTI1
Miw2ICsyNTcsNyBAQCBwcml2YXRlOgogICAgICAgICBQUkVfU1NFX0YyICAgICAgICAgICAgICAg
ICAgICAgID0gMHhGMiwKICAgICAgICAgUFJFX1NTRV9GMyAgICAgICAgICAgICAgICAgICAgICA9
IDB4RjMsCiAgICAgICAgIE9QX0hMVCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweEY0LAor
ICAgICAgICBPUF9HUk9VUDNfRWIgICAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAg
T1BfR1JPVVAzX0ViSWIgICAgICAgICAgICAgICAgICA9IDB4RjYsCiAgICAgICAgIE9QX0dST1VQ
M19FdiAgICAgICAgICAgICAgICAgICAgPSAweEY3LAogICAgICAgICBPUF9HUk9VUDNfRXZJeiAg
ICAgICAgICAgICAgICAgID0gMHhGNywgLy8gT1BfR1JPVVAzX0V2IGhhcyBhbiBpbW1lZGlhdGUs
IHdoZW4gaW5zdHJ1Y3Rpb24gaXMgYSB0ZXN0LiAKQEAgLTI5MCw2ICsyOTYsOCBAQCBwcml2YXRl
OgogICAgICAgICBPUF9TRVRDQyAgICAgICAgICAgID0gMHg5MCwKICAgICAgICAgT1AyXzNCWVRF
X0VTQ0FQRV9BRSA9IDB4QUUsCiAgICAgICAgIE9QMl9JTVVMX0d2RXYgICAgICAgPSAweEFGLAor
ICAgICAgICBPUDJfQ01QWENIR2IgICAgICAgID0gMHhCMCwKKyAgICAgICAgT1AyX0NNUFhDSEcg
ICAgICAgICA9IDB4QjEsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkViICAgICAgPSAweEI2LAogICAg
ICAgICBPUDJfQlNGICAgICAgICAgICAgID0gMHhCQywKICAgICAgICAgT1AyX1RaQ05UICAgICAg
ICAgICA9IDB4QkMsCkBAIC0yOTgsNiArMzA2LDggQEAgcHJpdmF0ZToKICAgICAgICAgT1AyX01P
VlNYX0d2RWIgICAgICA9IDB4QkUsCiAgICAgICAgIE9QMl9NT1ZaWF9HdkV3ICAgICAgPSAweEI3
LAogICAgICAgICBPUDJfTU9WU1hfR3ZFdyAgICAgID0gMHhCRiwKKyAgICAgICAgT1AyX1hBRERi
ICAgICAgICAgICA9IDB4QzAsCisgICAgICAgIE9QMl9YQUREICAgICAgICAgICAgPSAweEMxLAog
ICAgICAgICBPUDJfUEVYVFJXX0dkVWRJYiAgID0gMHhDNSwKICAgICAgICAgT1AyX1BTTExRX1Vk
cUliICAgICA9IDB4NzMsCiAgICAgICAgIE9QMl9QU1JMUV9VZHFJYiAgICAgPSAweDczLApAQCAt
NDQwLDYgKzQ1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGFk
ZGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0FERF9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisgICAgCiAjaWYgIUNQVShYODZfNjQpCiAgICAgdm9pZCBhZGRsX21yKGNvbnN0IHZvaWQqIGFk
ZHIsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAgLTU2MiwxMSArNTc3LDIxIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFzZSwg
b2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0d2RXYsIGRzdCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CiAKKyAgICB2b2lkIGFkZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYWRkcV9pcihpbnQgaW1tLCBSZWdp
c3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0p
KSB7CkBAIC01OTEsNiArNjE2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGFkZHFfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkg
eworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdS
T1VQMV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQURELCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAgfQogI2Vsc2UKICAgICB2b2lkIGFkZGxfaW0o
aW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CkBAIC02MTQsMTEgKzY1MCw0MyBAQCBw
dWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0LCBi
YXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgYW5kbF9tcihpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0d2RXYsIGRzdCwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgYW5kbF9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7
CiAgICAgfQogCisgICAgdm9pZCBhbmRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBhbmR3X3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIGFuZGxfcm0oc3JjLCBvZmZzZXQs
IGJhc2UpOworICAgIH0KKworICAgIHZvaWQgYW5kd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAg
IGFuZGxfcm0oc3JjLCBvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAg
dm9pZCBhbmRiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9FdkdiLCBzcmMs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZGxfaXIo
aW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhU
RU5EXzhfMzIoaW1tKSkgewpAQCAtNjQxLDYgKzcwOSw1MyBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAo
Q0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAx
X0V2SXosIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB2b2lkIGFuZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAg
ICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZz
ZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6
LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYW5kd19pbShp
bnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9T
SVpFKTsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlOChpbW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOwor
ICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBhbmRiX2ltKGludCBpbW0sIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKworICAgIHZvaWQgYW5kYl9pbShpbnQg
aW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJ
YiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAg
ICB2b2lkIGFuZHFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKQEAg
LTY1Nyw2ICs3NzIsNDggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgYW5kcV9tcihpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB2b2lkIGFuZHFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAg
ICB2b2lkIGFuZHFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfQU5EX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKworICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1t
KSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIs
IEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2b2lkIGFuZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBpZiAo
Q0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dS
T1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOworICAgICAgICB9CisgICAg
fQogI2Vsc2UKICAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAg
ICB7CkBAIC03MDMsNiArODYwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgb2Zmc2V0
KTsKICAgICB9CisKKyAgICB2b2lkIGluY3FfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZiAvLyBDUFUoWDg2XzY0KQogCiAgICAgdm9pZCBu
ZWdsX3IoUmVnaXN0ZXJJRCBkc3QpCkBAIC03MTUsNiArODc3LDE2IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09Q
X05FRywgZHN0KTsKICAgICB9CisKKyAgICB2b2lkIG5lZ3FfbShpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9V
UDNfRXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBu
ZWdxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNf
RXYsIEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CiAj
ZW5kaWYKIAogICAgIHZvaWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKQEAg
LTcyMiw2ICs4OTQsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAg
IHZvaWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQM19FdiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
IH0KKworICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAg
bmVnbF9tKG9mZnNldCwgYmFzZSk7CisgICAgfQorCisgICAgdm9pZCBuZWd3X20oaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgewor
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG5l
Z2xfbShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBuZWdi
X20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwgb2Zmc2V0KTsK
KyAgICB9CisKKyAgICB2b2lkIG5lZ2JfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIG5vdGxfcihSZWdpc3RlcklEIGRzdCkKICAgICB7
CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9O
T1QsIGRzdCk7CkBAIC03MzIsNiArOTMxLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CiAKKyAgICB2b2lkIG5vdGxfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIG5vdGxfbShvZmZzZXQsIGJhc2UpOworICAgIH0KKworICAgIHZvaWQgbm90
d19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICBub3RsX20ob2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAgIH0KKwor
ICAgIHZvaWQgbm90Yl9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJh
c2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAjaWYgQ1BVKFg4Nl82NCkKICAgICB2b2lk
IG5vdHFfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC03NDIsNiArOTY4LDExIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19Fdiwg
R1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CisKKyAgICB2b2lkIG5vdHFfbShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JP
VVAzX09QX05PVCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KICNlbmRpZgog
CiAgICAgdm9pZCBvcmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtNzU0
LDExICs5ODUsNDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
T1JfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgb3JsX21yKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBS
ZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9P
Ul9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2
b2lkIG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYmFz
ZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIG9ybF9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcndfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgb3JsX3JtKHNyYywg
b2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIG9yd19ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7Cisg
ICAgICAgIG9ybF9ybShzcmMsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICB9CisK
KyAgICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R2IsIHNy
YywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9ybShSZWdpc3RlcklEIHNy
YywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3Jj
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBvcmxfaXIo
aW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhU
RU5EXzhfMzIoaW1tKSkgewpAQCAtNzg0LDEyICsxMDQ3LDEwMSBAQCBwdWJsaWM6CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICB2b2lkIG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlm
IChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
MV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB2b2lkIG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAg
ICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwg
R1JPVVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMTYoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb3J3X2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
OworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgeworICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBvcmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQ
MV9FYkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAx
X09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgb3Jx
X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2
b2lkIG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX21yKGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0d2RXYsIGRzdCwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgb3JxX3JtKFJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7
CisgICAgfQorCisgICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVO
RF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dS
T1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNl
LCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0K
KyAgICB9CisKICAgICB2b2lkIG9ycV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7
CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC04MzEsMTEgKzEx
ODMsNDMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2
RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YmxfbXIoaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9H
dkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lk
IHN1Ymxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAg
ICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNl
LCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisg
ICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgc3Vid19ybShSZWdp
c3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHN1Yndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KworICAgIHZvaWQgc3ViYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9Fdkdi
LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzdWJiX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZH
Yiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBz
dWJsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAgLTg2MSw2ICsxMjQ1LDUzIEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgc3VibF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZvaWQgc3Vid19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9TVUIsIGJh
c2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAxX0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBz
dWJ3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9P
UEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFf
T1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2
KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN1YmJfaW0oaW50IGltbSwgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOworICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorCisgICAgdm9pZCBzdWJi
X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKICNpZiBDUFUoWDg2
XzY0KQogICAgIHZvaWQgc3VicV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewpAQCAtODcyLDExICsxMzAzLDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAg
ICB2b2lkIHN1YnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKwogICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1
YnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
IH0KKwogICAgIHZvaWQgc3VicV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CkBAIC05MDEsNiArMTM0Miwx
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwog
ICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBzdWJxX2ltKGludCBpbW0sIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAg
ICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAg
ICAgfQorICAgIH0KICNlbHNlCiAgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQq
IGFkZHIpCiAgICAgewpAQCAtOTI0LDExICsxMzc2LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAg
fQogCisgICAgdm9pZCB4b3JsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YT1JfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lk
IHhvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX1hPUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICB9CisKICAgICB2b2lkIHhvcmxfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKQEAg
LTk0MCw2ICsxNDAyLDc1IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQg
eG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbW0pKSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hP
UiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgeG9yd19ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICB4b3JsX3Jt
KHNyYywgb2Zmc2V0LCBiYXNlKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcndfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJ
WkUpOworICAgICAgICB4b3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOwor
ICAgIH0KKworICAgIHZvaWQgeG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7CisgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJh
c2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4
b3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9P
UEVSQU5EX1NJWkUpOworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFf
T1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2
KGltbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHhvcmJfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKwor
ICAgIHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfWE9SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKworICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAxX0ViSWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcmJfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdS
T1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOworICAgIH0KKwogICAgIHZvaWQgeG9ybF9pcihpbnQgaW1t
LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbW0pKSB7CkBAIC05NzQsMTEgKzE1MDUsNDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
fQogICAgIAorICAgIHZvaWQgeG9ycV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCisgICAgeworICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQ
MV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGU4KGltbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgdm9pZCB4b3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgaWYgKENB
Tl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9V
UDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKICAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hP
Ul9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4b3JxX3JtKFJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X1hPUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHhvcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfR3ZFdiwg
ZGVzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcnFfbXIoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9H
dkV2LCBkZXN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAK
ICAgICB2b2lkIGx6Y250X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKQEAgLTE1
ODYsMTEgKzIxNTMsMzggQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgeGNoZ2Jfcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0
KTsKKyAgICB9CisKKyAgICB2b2lkIHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZvaWQgeGNoZ3dfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKworICAgIHZv
aWQgeGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfWENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisK
ICAgICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2
LCBzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4Y2hnbF9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19F
dkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUo
WDg2XzY0KQogICAgIHZvaWQgeGNoZ3FfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0
KQogICAgIHsKQEAgLTE2MDYsNiArMjIwMCwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YQ0hHX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CisKKyAgICB2b2lkIHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgfQogI2VuZGlmCiAKICAgICB2b2lkIG1vdmxfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQpAQCAtMTczMSw2ICsyMzMwLDIwIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRXZHdiwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBtb3Z3X2ltKGludCBp
bW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIG9mZnNldCk7CisgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7CisgICAgfQorCisgICAgdm9pZCBtb3Z3X2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5E
X1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxMV9Fdkl6LCBH
Uk9VUDExX01PViwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUxNihpbW0pOworICAgIH0KKwogICAgIHZvaWQgbW92bF9FQVhtKGNvbnN0
IHZvaWQqIGFkZHIpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9W
X092RUFYKTsKQEAgLTE4MDAsNiArMjQxMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX2kzMm0oaW50IGlt
bSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDExX0V2
SXosIEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZxX2k2NHIo
aW50NjRfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfTU9WX0VBWEl2LCBkc3QpOwpAQCAtMjc4MSw2ICszNDAwLDk0IEBAIHB1
YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9MT0NLKTsKICAgICB9CiAgICAg
CisgICAgdm9pZCBjbXB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfQ01Q
WENIR2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hn
Yl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3A4KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAg
fQorICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVf
T1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DTVBYQ0hH
LCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY21weGNoZ3dfcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9P
UEVSQU5EX1NJWkUpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcs
IHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IGNtcHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjbXB4Y2hnbF9ybShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhD
SEcsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKworI2lmIENQVShY
ODZfNjQpICAgIAorICAgIHZvaWQgY21weGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVP
cDY0KE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZv
aWQgY21weGNoZ3Ffcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIudHdvQnl0ZU9wNjQoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgIH0KKyNlbmRpZiAvLyBDUFUoWDg2XzY0KQorICAgIAorICAgIHZvaWQgeGFkZGJf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX1hBRERiLCBzcmMsIGJhc2UsIG9mZnNl
dCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChPUDJfWEFERGIsIHNyYywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhhZGR3X3JtKFJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CisgICAgICAgIG1fZm9ybWF0
dGVyLnR3b0J5dGVPcChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHhhZGR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdv
Qnl0ZU9wKE9QMl9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisgICAgCisgICAgdm9pZCB4YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9Y
QURELCBzcmMsIGJhc2UsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGFkZGxfcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9Q
Ml9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisKKyNpZiBD
UFUoWDg2XzY0KSAgICAKKyAgICB2b2lkIHhhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3A2NChPUDJfWEFERCwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IHhhZGRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3
b0J5dGVPcDY0KE9QMl9YQURELCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICB9CisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKyAgICAKICAgICB2b2lkIG1mZW5jZSgpCiAgICAg
ewogICAgICAgICBtX2Zvcm1hdHRlci50aHJlZUJ5dGVPcChPUDJfM0JZVEVfRVNDQVBFX0FFLCBP
UDNfTUZFTkNFKTsKQEAgLTM3NTcsNiArNDQ2NCwyNCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
d3JpdGVyLnJlZ2lzdGVyTW9kUk0oZ3JvdXBPcCwgcm0pOwogICAgICAgICB9CiAKKyAgICAgICAg
dm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVy
SUQgYmFzZSwgaW50IG9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1
Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5l
bWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJlZywgYmFzZSksIHJlZywgMCwgYmFzZSk7Cisg
ICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAg
ICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdy
aXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludCBvZmZzZXQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlciht
X2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1Jl
eChyZWcpIHx8IHJlZ1JlcXVpcmVzUmV4KGluZGV4LCBiYXNlKSwgcmVnLCBpbmRleCwgYmFzZSk7
CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwor
ICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAg
IHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICAgICAgfQorCiAgICAgICAgIC8vIEltbWVkaWF0ZXM6CiAgICAgICAgIC8vCiAgICAgICAgIC8v
IEFuIGltbWVkYWl0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlhdGUgYWZ0ZXIg
YW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0F0b21pY1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNBdG9taWNWYWx1ZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQXRvbWljVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK0F0b21pY1ZhbHVlOjp+QXRvbWlj
VmFsdWUoKQoreworfQorCit2b2lkIEF0b21pY1ZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXIm
IGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChjb21tYSwg
IndpZHRoID0gIiwgbV93aWR0aCk7CisgICAgCisgICAgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKGNv
bW1hLCBvdXQpOworfQorCitWYWx1ZSogQXRvbWljVmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG5ldyBBdG9taWNWYWx1ZSgqdGhpcyk7Cit9CisKK0F0b21pY1ZhbHVlOjpB
dG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSog
b3BlcmFuZCwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2Us
IEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIDogTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZSwg
a2luZCwgb3BlcmFuZC0+dHlwZSgpLCBvcmlnaW4sIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2Us
IG9wZXJhbmQsIHBvaW50ZXIpCisgICAgLCBtX3dpZHRoKHdpZHRoKQoreworICAgIEFTU0VSVChi
ZXN0VHlwZShHUCwgYWNjZXNzV2lkdGgoKSkgPT0gYWNjZXNzVHlwZSgpKTsKKyAgICAKKyAgICBz
d2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2Fz
ZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWlj
WGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9Cit9CisKK0F0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdp
biBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1Zh
bHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVh
cFJhbmdlIGZlbmNlUmFuZ2UpCisgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5k
LCBraW5kLm9wY29kZSgpID09IEF0b21pY1dlYWtDQVMgPyBJbnQzMiA6IGV4cGVjdGVkVmFsdWUt
PnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlLCBleHBlY3RlZFZhbHVl
LCBuZXdWYWx1ZSwgcG9pbnRlcikKKyAgICAsIG1fd2lkdGgod2lkdGgpCit7CisgICAgQVNTRVJU
KGJlc3RUeXBlKEdQLCBhY2Nlc3NXaWR0aCgpKSA9PSBhY2Nlc3NUeXBlKCkpOworCisgICAgc3dp
dGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2Ug
QXRvbWljU3Ryb25nQ0FTOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
MworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQXRvbWljVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNBdG9taWNWYWx1ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNp
bmNsdWRlICJCM1dpZHRoLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBBdG9taWNWYWx1ZSA6IHB1YmxpYyBNZW1vcnlWYWx1ZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpCisgICAgeworICAg
ICAgICByZXR1cm4gaXNBdG9taWMoa2luZC5vcGNvZGUoKSk7CisgICAgfQorICAgIAorICAgIH5B
dG9taWNWYWx1ZSgpOworICAgIAorICAgIFR5cGUgYWNjZXNzVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IGNoaWxkKDApLT50eXBlKCk7IH0KKyAgICAKKyAgICBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1bXBNZXRh
KENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgCisgICAg
VmFsdWUqIGNsb25lSW1wbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtpbmQsIE9yaWdp
biwgV2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQg
PSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VS
YW5nZSA9IEhlYXBSYW5nZTo6dG9wKCkpOworICAgIAorICAgIEF0b21pY1ZhbHVlKEtpbmQsIE9y
aWdpbiwgV2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5n
ZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSk7CisgICAg
CisgICAgV2lkdGggbV93aWR0aDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisj
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiArNDAsNyBAQCBjbGFz
cyBCbG9ja0luc2VydGlvblNldDsKIGNsYXNzIEluc2VydGlvblNldDsKIGNsYXNzIFByb2NlZHVy
ZTsKIGNsYXNzIFZhbHVlOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEdlbmVyaWNCbG9ja0lu
c2VydGlvblNldDsKIAogY2xhc3MgQmFzaWNCbG9jayB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQmFzaWNCbG9jayk7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAgICAgZnJpZW5kIGNsYXNzIEluc2VydGlvblNldDsK
ICAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmll
bmQgY2xhc3MgR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0OwogICAgIAogICAgIC8vIEluc3RhbnRp
YXRlIHZpYSBQcm9jZWR1cmUuCiAgICAgQmFzaWNCbG9jayh1bnNpZ25lZCBpbmRleCwgZG91Ymxl
IGZyZXF1ZW5jeSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2Vy
dGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxv
Y2tJbnNlcnRpb25TZXQuY3BwCShyZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMzUgKzM2
LDEzIEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogQmxvY2tJbnNlcnRpb25T
ZXQ6OkJsb2NrSW5zZXJ0aW9uU2V0KFByb2NlZHVyZSAmcHJvYykKLSAgICA6IG1fcHJvYyhwcm9j
KQorICAgIDogR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MubV9ibG9ja3MpCisgICAgLCBt
X3Byb2MocHJvYykKIHsKIH0KIAogQmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNl
dCgpIHsgfQogCi12b2lkIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxvY2tJbnNlcnRpb24m
JiBpbnNlcnRpb24pCi17Ci0gICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlv
bikpOwotfQotCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHVuc2lnbmVk
IGluZGV4LCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Js
b2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgZnJlcXVlbmN5KSk7Ci0gICAgQmFz
aWNCbG9jayogcmVzdWx0ID0gYmxvY2suZ2V0KCk7Ci0gICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9u
KGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUJhc2lj
QmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3Jl
LCBkb3VibGUgZnJlcXVlbmN5KQotewotICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRleCgp
LCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVuY3ko
KSk7Ci19Ci0KLUJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnRBZnRlcihCYXNp
Y0Jsb2NrKiBhZnRlciwgZG91YmxlIGZyZXF1ZW5jeSkKLXsKLSAgICByZXR1cm4gaW5zZXJ0KGFm
dGVyLT5pbmRleCgpICsgMSwgZnJlcXVlbmN5ID09IGZyZXF1ZW5jeSA/IGZyZXF1ZW5jeSA6IGFm
dGVyLT5mcmVxdWVuY3koKSk7Ci19Ci0KIEJhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0Ojpz
cGxpdEZvcndhcmQoCiAgICAgQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkJiB2YWx1ZUluZGV4
LCBJbnNlcnRpb25TZXQqIGluc2VydGlvblNldCwgZG91YmxlIGZyZXF1ZW5jeSkKIHsKQEAgLTEw
MiwzMiArODAsNiBAQCBCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6c3BsaXRGb3J3CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBCbG9ja0luc2VydGlvblNldDo6ZXhlY3V0ZSgp
Ci17Ci0gICAgaWYgKG1faW5zZXJ0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKLSAgICAvLyBXZSBhbGxvdyBpbnNlcnRpb25zIHRvIGJlIGdpdmVuIHRvIHVzIGlu
IGFueSBvcmRlci4gU28sIHdlIG5lZWQgdG8gc29ydCB0aGVtIGJlZm9yZQotICAgIC8vIHJ1bm5p
bmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJlZmVyIGEgc3RhYmxlIHNv
cnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKLSAgICAvLyBmYXN0LCBzbyB3ZSB1c2UgYnViYmxlIHNv
cnQuCi0gICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVu
ZCgpKTsKLQotICAgIGV4ZWN1dGVJbnNlcnRpb25zKG1fcHJvYy5tX2Jsb2NrcywgbV9pbnNlcnRp
b25zKTsKLSAgICAKLSAgICAvLyBQcnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBz
dHJpY3RseSBuZWNlc3NhcnkgYnV0IGl0J3MKLSAgICAvLyBoZWFsdGh5IHRvIGtlZXAgdGhlIGJs
b2NrIGxpc3QgZnJvbSBncm93aW5nLgotICAgIG1fcHJvYy5tX2Jsb2Nrcy5yZW1vdmVBbGxNYXRj
aGluZygKLSAgICAgICAgWyZdIChzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4mIGJsb2NrUHRy
KSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiAhYmxvY2tQdHI7Ci0gICAgICAgIH0pOwot
ICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5k
aWNlcy4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9jLm1fYmxvY2tzLnNpemUo
KTsgKytpKQotICAgICAgICBtX3Byb2MubV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOwotICAgIAot
ICAgIHJldHVybiB0cnVlOwotfQotCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlm
IC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9j
a0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDIxMzY0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQjNHZW5lcmljQmxv
Y2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgPHd0
Zi9JbnNlcnRpb24uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwyNiArMzYsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIEluc2VydGlvblNldDsK
IAotdHlwZWRlZiBXVEY6Okluc2VydGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJs
b2NrSW5zZXJ0aW9uOwordHlwZWRlZiBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ8QmFzaWNCbG9j
az46OkJsb2NrSW5zZXJ0aW9uIEJsb2NrSW5zZXJ0aW9uOwogCi1jbGFzcyBCbG9ja0luc2VydGlv
blNldCB7CitjbGFzcyBCbG9ja0luc2VydGlvblNldCA6IHB1YmxpYyBHZW5lcmljQmxvY2tJbnNl
cnRpb25TZXQ8QmFzaWNCbG9jaz4gewogcHVibGljOgogICAgIEJsb2NrSW5zZXJ0aW9uU2V0KFBy
b2NlZHVyZSYpOwogICAgIH5CbG9ja0luc2VydGlvblNldCgpOwogICAgIAotICAgIHZvaWQgaW5z
ZXJ0KEJsb2NrSW5zZXJ0aW9uJiYpOwotCi0gICAgLy8gSW5zZXJ0IGEgbmV3IGJsb2NrIGF0IGEg
Z2l2ZW4gaW5kZXguCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3Vi
bGUgZnJlcXVlbmN5ID0gUE5hTik7Ci0KLSAgICAvLyBJbnNlcnRzIGEgbmV3IGJsb2NrIGJlZm9y
ZSB0aGUgZ2l2ZW4gYmxvY2suIFVzdWFsbHkgeW91IHdpbGwgbm90IHBhc3MgdGhlIGZyZXF1ZW5j
eQotICAgIC8vIGFyZ3VtZW50LiBQYXNzaW5nIFBOYU4gY2F1c2VzIHVzIHRvIGp1c3QgdXNlIHRo
ZSBmcmVxdWVuY3kgb2YgdGhlICdiZWZvcmUnIGJsb2NrLiBUaGF0J3MKLSAgICAvLyB1c3VhbGx5
IHdoYXQgeW91IHdhbnQuCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sq
IGJlZm9yZSwgZG91YmxlIGZyZXF1ZW5jeSA9IFBOYU4pOwotCi0gICAgLy8gSW5zZXJ0cyBhIG5l
dyBibG9jayBhZnRlciB0aGUgZ2l2ZW4gYmxvY2suCi0gICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0
ZXIoQmFzaWNCbG9jayogYWZ0ZXIsIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLQogICAgIC8v
IEEgaGVscGVyIHRvIHNwbGl0IGEgYmxvY2sgd2hlbiBmb3J3YXJkIGl0ZXJhdGluZyBvdmVyIGl0
LiBJdCBjcmVhdGVzIGEgbmV3IGJsb2NrIHRvIGhvbGQKICAgICAvLyBldmVyeXRoaW5nIGJlZm9y
ZSB0aGUgaW5zdHJ1Y3Rpb24gYXQgdmFsdWVJbmRleC4gVGhlIGN1cnJlbnQgYmxvY2sgaXMgbGVm
dCB3aXRoCiAgICAgLy8gZXZlcnl0aGluZyBhdCBhbmQgYWZ0ZXIgdmFsdWVJbmRleC4gSWYgdGhl
IG9wdGlvbmFsIEluc2VydGlvblNldCBpcyBwcm92aWRlZCwgaXQgd2lsbCBnZXQKQEAgLTgwLDEy
ICs2OCw5IEBAIHB1YmxpYzoKICAgICBCYXNpY0Jsb2NrKiBzcGxpdEZvcndhcmQoCiAgICAgICAg
IEJhc2ljQmxvY2sqLCB1bnNpZ25lZCYgdmFsdWVJbmRleCwgSW5zZXJ0aW9uU2V0KiA9IG51bGxw
dHIsCiAgICAgICAgIGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKTsKLSAgICAKLSAgICBib29sIGV4
ZWN1dGUoKTsKIAogcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKLSAgICBWZWN0b3I8
QmxvY2tJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAJKHJldmlz
aW9uIDIxMzY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtODIsNyArODIsOCBAQCBib29sIEVmZmVjdHM6OmludGVyZmVyZXMo
Y29uc3QgRWZmZWN0cyYgCiAgICAgICAgIHx8IGludGVyZmVyZXNXaXRoV3JpdGVzUGlubmVkKG90
aGVyLCAqdGhpcykKICAgICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLndyaXRlcykKICAg
ICAgICAgfHwgd3JpdGVzLm92ZXJsYXBzKG90aGVyLnJlYWRzKQotICAgICAgICB8fCByZWFkcy5v
dmVybGFwcyhvdGhlci53cml0ZXMpOworICAgICAgICB8fCByZWFkcy5vdmVybGFwcyhvdGhlci53
cml0ZXMpCisgICAgICAgIHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9CiAKIGJvb2wgRWZm
ZWN0czo6b3BlcmF0b3I9PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKQEAgLTk1LDcgKzk2
LDggQEAgYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIAogICAgICAgICAm
JiB3cml0ZXNQaW5uZWQgPT0gb3RoZXIud3JpdGVzUGlubmVkCiAgICAgICAgICYmIHJlYWRzUGlu
bmVkID09IG90aGVyLnJlYWRzUGlubmVkCiAgICAgICAgICYmIHdyaXRlcyA9PSBvdGhlci53cml0
ZXMKLSAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHM7CisgICAgICAgICYmIHJlYWRzID09
IG90aGVyLnJlYWRzCisgICAgICAgICYmIGZlbmNlID09IG90aGVyLmZlbmNlOwogfQogCiBib29s
IEVmZmVjdHM6Om9wZXJhdG9yIT0oY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0CkBAIC0xMjAs
NiArMTIyLDggQEAgdm9pZCBFZmZlY3RzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbgogICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJXcml0ZXNQaW5uZWQiKTsKICAgICBpZiAocmVhZHNQaW5u
ZWQpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIlJlYWRzUGlubmVkIik7CisgICAgaWYgKGZl
bmNlKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJGZW5jZSIpOwogICAgIGlmICh3cml0ZXMp
CiAgICAgICAgIG91dC5wcmludChjb21tYSwgIldyaXRlczoiLCB3cml0ZXMpOwogICAgIGlmIChy
ZWFkcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgJKHJldmlzaW9uIDIx
MzY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTcxLDYgKzcxLDEwIEBAIHN0cnVjdCBFZmZlY3RzIHsKICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTczCiAgICAgYm9vbCByZWFkc1Bp
bm5lZCB7IGZhbHNlIH07CiAgICAgYm9vbCB3cml0ZXNQaW5uZWQgeyBmYWxzZSB9OworICAgIAor
ICAgIC8vIE1lbW9yeSBmZW5jZXMgY2Fubm90IGJlIHJlb3JkZXJlZCBhcm91bmQgZWFjaCBvdGhl
ciByZWdhcmRsZXNzIG9mIHRoZWlyIGVmZmVjdHMuIFRoaXMgaXMgZmxhZ2dlZAorICAgIC8vIGlm
IHRoZSBvcGVyYXRpb24gaXMgYSBtZW1vcnkgZmVuY2UuCisgICAgYm9vbCBmZW5jZSB7IGZhbHNl
IH07CiAKICAgICBIZWFwUmFuZ2Ugd3JpdGVzOwogICAgIEhlYXBSYW5nZSByZWFkczsKQEAgLTg5
LDYgKzkzLDcgQEAgc3RydWN0IEVmZmVjdHMgewogICAgICAgICByZXN1bHQucmVhZHMgPSBIZWFw
UmFuZ2U6OnRvcCgpOwogICAgICAgICByZXN1bHQucmVhZHNQaW5uZWQgPSB0cnVlOwogICAgICAg
ICByZXN1bHQud3JpdGVzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgcmVzdWx0LmZlbmNlID0gdHJ1
ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEwMyw3ICsxMDgsNyBAQCBz
dHJ1Y3QgRWZmZWN0cyB7CiAKICAgICBib29sIG11c3RFeGVjdXRlKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiB0ZXJtaW5hbCB8fCBleGl0c1NpZGV3YXlzIHx8IHdyaXRlc0xvY2FsU3Rh
dGUgfHwgd3JpdGVzIHx8IHdyaXRlc1Bpbm5lZDsKKyAgICAgICAgcmV0dXJuIHRlcm1pbmFsIHx8
IGV4aXRzU2lkZXdheXMgfHwgd3JpdGVzTG9jYWxTdGF0ZSB8fCB3cml0ZXMgfHwgd3JpdGVzUGlu
bmVkIHx8IGZlbmNlOwogICAgIH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiByZW9yZGVyaW5n
IGluc3RydWN0aW9ucyB3aXRoIHRoZXNlIHJlc3BlY3RpdmUgZWZmZWN0cyB3b3VsZCBjaGFuZ2Ug
cHJvZ3JhbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9u
U3ViZXhwcmVzc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAkocmV2aXNpb24gMjEzNjQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0Miw2ICsxNDIsNyBAQCBzdHJ1Y3QgSW1wdXJlQmxvY2tE
YXRhIHsKIAogICAgIFJhbmdlU2V0PEhlYXBSYW5nZT4gcmVhZHM7IC8vIFRoaXMgb25seSBnZXRz
IHVzZWQgZm9yIGZvcndhcmQgc3RvcmUgZWxpbWluYXRpb24uCiAgICAgUmFuZ2VTZXQ8SGVhcFJh
bmdlPiB3cml0ZXM7IC8vIFRoaXMgZ2V0cyB1c2VkIGZvciBib3RoIGxvYWQgYW5kIHN0b3JlIGVs
aW1pbmF0aW9uLgorICAgIGJvb2wgZmVuY2U7CiAKICAgICBNZW1vcnlWYWx1ZU1hcCBzdG9yZXNB
dEhlYWQ7CiAgICAgTWVtb3J5VmFsdWVNYXAgbWVtb3J5VmFsdWVzQXRUYWlsOwpAQCAtMTc0LDEy
ICsxNzUsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlm
IChtZW1vcnkgJiYgbWVtb3J5LT5pc1N0b3JlKCkKICAgICAgICAgICAgICAgICAgICAgJiYgIWRh
dGEucmVhZHMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKQotICAgICAgICAgICAgICAgICAgICAm
JiAhZGF0YS53cml0ZXMub3ZlcmxhcHMobWVtb3J5LT5yYW5nZSgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgJiYgIWRhdGEud3JpdGVzLm92ZXJsYXBzKG1lbW9yeS0+cmFuZ2UoKSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgKCFkYXRhLmZlbmNlIHx8ICFtZW1vcnktPmhhc0ZlbmNlKCkpKQogICAg
ICAgICAgICAgICAgICAgICBkYXRhLnN0b3Jlc0F0SGVhZC5hZGQobWVtb3J5KTsKICAgICAgICAg
ICAgICAgICBkYXRhLnJlYWRzLmFkZChlZmZlY3RzLnJlYWRzKTsKIAogICAgICAgICAgICAgICAg
IGlmIChIZWFwUmFuZ2Ugd3JpdGVzID0gZWZmZWN0cy53cml0ZXMpCiAgICAgICAgICAgICAgICAg
ICAgIGNsb2JiZXIoZGF0YSwgd3JpdGVzKTsKKyAgICAgICAgICAgICAgICBkYXRhLmZlbmNlIHw9
IGVmZmVjdHMuZmVuY2U7CiAKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5KQogICAgICAgICAg
ICAgICAgICAgICBkYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5hZGQobWVtb3J5KTsKQEAgLTQ0NSw4
ICs0NDgsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGRhdGFMb2coIkJhZCBtZW1vcnkgdmFsdWU6ICIsIGRlZXBEdW1wKG1fcHJvYywgbV92
YWx1ZSksICJcbiIpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtNDc4LDYgKzQ3OSw5IEBA
IHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgogICAgIGJvb2wgZmluZFN0
b3JlQWZ0ZXJDbG9iYmVyKFZhbHVlKiBwdHIsIEhlYXBSYW5nZSByYW5nZSwgY29uc3QgRmlsdGVy
JiBmaWx0ZXIpCiAgICAgeworICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkt
Pmhhc0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAg
ICAvLyBXZSBjYW4gZWxpbWluYXRlIGEgc3RvcmUgaWYgZXZlcnkgZm9yd2FyZCBwYXRoIGhpdHMg
YSBzdG9yZSB0byB0aGUgc2FtZSBsb2NhdGlvbiBiZWZvcmUKICAgICAgICAgLy8gaGl0dGluZyBh
bnkgb3BlcmF0aW9uIHRoYXQgb2JzZXJ2ZXMgdGhlIHN0b3JlLiBUaGlzIHNlYXJjaCBzZWVtcyBs
aWtlIGl0IHNob3VsZCBiZQogICAgICAgICAvLyBleHBlbnNpdmUsIGJ1dCBpbiB0aGUgb3Zlcndo
ZWxtaW5nIG1ham9yaXR5IG9mIGNhc2VzIGl0IHdpbGwgYWxtb3N0IGltbWVkaWF0ZWx5IGhpdCBh
biAKQEAgLTYxNCw2ICs2MTgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nKCptX3ZhbHVlLCAiOiBsb29raW5nIGJhY2t3YXJkIGZvciAiLCAq
cHRyLCAiLi4uXG4iKTsKICAgICAgICAgCisgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGZlbmNlcy5cbiIpOworICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKE1l
bW9yeVZhbHVlKiBtYXRjaCA9IG1fZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuZmluZChwdHIsIGZp
bHRlcikpIHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBGb3VuZCAiLCAqbWF0Y2gsICIgbG9jYWxseS5cbiIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMs
NiArNDMsNyBAQAogI2luY2x1ZGUgIkIzTG93ZXJUb0Fpci5oIgogI2luY2x1ZGUgIkIzTW92ZUNv
bnN0YW50cy5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCisjaW5jbHVkZSAiQjNQdXJlQ1NF
LmgiCiAjaW5jbHVkZSAiQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmgiCiAjaW5jbHVkZSAiQjNSZWR1
Y2VTdHJlbmd0aC5oIgogI2luY2x1ZGUgIkIzVGltaW5nU2NvcGUuaCIKQEAgLTkyLDYgKzkzLDcg
QEAgdm9pZCBnZW5lcmF0ZVRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlLAogICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTA3CiAgICAgfQogCisg
ICAgLy8gVGhpcyBwdXRzIHRoZSBJUiBpbiBxdWlya3MgbW9kZS4KICAgICBsb3dlck1hY3Jvcyhw
cm9jZWR1cmUpOwogCiAgICAgaWYgKG9wdExldmVsID49IDEpIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNCbG9ja0lu
c2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIlB1cmVOYU4uaCIKKyNpbmNsdWRlIDxjbGltaXRz
PgorI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CisKK2NsYXNzIEluc2VydGlvblNldDsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmFzaWNCbG9j
az4KK2NsYXNzIEdlbmVyaWNCbG9ja0luc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBXVEY6Okluc2VydGlvbjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+IEJsb2NrSW5zZXJ0
aW9uOworICAgIAorICAgIEdlbmVyaWNCbG9ja0luc2VydGlvblNldChWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJhc2ljQmxvY2s+PiYgYmxvY2tzKQorICAgICAgICA6IG1fYmxvY2tzKGJsb2NrcykK
KyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uJiYgaW5z
ZXJ0aW9uKQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChXVEZNb3ZlKGluc2Vy
dGlvbikpOworICAgIH0KKworICAgIC8vIEluc2VydCBhIG5ldyBibG9jayBhdCBhIGdpdmVuIGlu
ZGV4LgorICAgIEJhc2ljQmxvY2sqIGluc2VydCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1
ZW5jeSA9IFBOYU4pCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4g
YmxvY2sobmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIGZyZXF1ZW5jeSkpOworICAgICAgICBCYXNp
Y0Jsb2NrKiByZXN1bHQgPSBibG9jay5nZXQoKTsKKyAgICAgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0
aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworICAgIC8vIEluc2VydHMgYSBuZXcgYmxvY2sgYmVmb3JlIHRoZSBnaXZlbiBibG9jay4g
VXN1YWxseSB5b3Ugd2lsbCBub3QgcGFzcyB0aGUgZnJlcXVlbmN5CisgICAgLy8gYXJndW1lbnQu
IFBhc3NpbmcgUE5hTiBjYXVzZXMgdXMgdG8ganVzdCB1c2UgdGhlIGZyZXF1ZW5jeSBvZiB0aGUg
J2JlZm9yZScgYmxvY2suIFRoYXQncworICAgIC8vIHVzdWFsbHkgd2hhdCB5b3Ugd2FudC4KKyAg
ICBCYXNpY0Jsb2NrKiBpbnNlcnRCZWZvcmUoQmFzaWNCbG9jayogYmVmb3JlLCBkb3VibGUgZnJl
cXVlbmN5ID0gUE5hTikKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnQoYmVmb3JlLT5pbmRl
eCgpLCBmcmVxdWVuY3kgPT0gZnJlcXVlbmN5ID8gZnJlcXVlbmN5IDogYmVmb3JlLT5mcmVxdWVu
Y3koKSk7CisgICAgfQorCisgICAgLy8gSW5zZXJ0cyBhIG5ldyBibG9jayBhZnRlciB0aGUgZ2l2
ZW4gYmxvY2suCisgICAgQmFzaWNCbG9jayogaW5zZXJ0QWZ0ZXIoQmFzaWNCbG9jayogYWZ0ZXIs
IGRvdWJsZSBmcmVxdWVuY3kgPSBQTmFOKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChh
ZnRlci0+aW5kZXgoKSArIDEsIGZyZXF1ZW5jeSA9PSBmcmVxdWVuY3kgPyBmcmVxdWVuY3kgOiBh
ZnRlci0+ZnJlcXVlbmN5KCkpOworICAgIH0KKworICAgIGJvb2wgZXhlY3V0ZSgpCisgICAgewor
ICAgICAgICBpZiAobV9pbnNlcnRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIGFsbG93IGluc2VydGlvbnMgdG8gYmUgZ2l2
ZW4gdG8gdXMgaW4gYW55IG9yZGVyLiBTbywgd2UgbmVlZCB0byBzb3J0IHRoZW0gYmVmb3JlCisg
ICAgICAgIC8vIHJ1bm5pbmcgV1RGOjpleGVjdXRlSW5zZXJ0aW9ucy4gV2Ugc3Ryb25nbHkgcHJl
ZmVyIGEgc3RhYmxlIHNvcnQgYW5kIHdlIHdhbnQgaXQgdG8gYmUKKyAgICAgICAgLy8gZmFzdCwg
c28gd2UgdXNlIGJ1YmJsZSBzb3J0LgorICAgICAgICBidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5i
ZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOworICAgICAgICAKKyAgICAgICAgZXhlY3V0ZUlu
c2VydGlvbnMobV9ibG9ja3MsIG1faW5zZXJ0aW9ucyk7CisgICAgICAgIAorICAgICAgICAvLyBQ
cnVuZSBvdXQgZW1wdHkgZW50cmllcy4gVGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0
IGl0J3MKKyAgICAgICAgLy8gaGVhbHRoeSB0byBrZWVwIHRoZSBibG9jayBsaXN0IGZyb20gZ3Jv
d2luZy4KKyAgICAgICAgbV9ibG9ja3MucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAgICBb
Jl0gKHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiYgYmxvY2tQdHIpIC0+IGJvb2wgeworICAg
ICAgICAgICAgICAgIHJldHVybiAhYmxvY2tQdHI7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBibG9ja3Mga25vdyB0aGVpciBuZXcgaW5k
aWNlcy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzLnNpemUoKTsg
KytpKQorICAgICAgICAgICAgbV9ibG9ja3NbaV0tPm1faW5kZXggPSBpOworICAgICAgICAKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8QmFzaWNCbG9jaz4+JiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmxvY2tJbnNlcnRp
b24sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisj
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0hlYXBSYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hl
YXBSYW5nZS5oCShyZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNIZWFwUmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OCw2ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgSGVhcFJhbmdl
IG9wZXJhdG9yfChjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIEhlYXBSYW5nZSgKKyAgICAgICAgICAgIHN0ZDo6bWluKG1fYmVnaW4sIG90aGVyLm1f
YmVnaW4pLAorICAgICAgICAgICAgc3RkOjptYXgobV9lbmQsIG90aGVyLm1fZW5kKSk7CisgICAg
fQorICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2Jl
Z2luICE9IG1fZW5kOyB9CiAKICAgICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
YmVnaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0
LmNwcAkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5z
ZXJ0aW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDExIEBAIFZhbHVlKiBJ
bnNlcnRpb25TZXQ6Omluc2VydEJvdHRvbShzaXplX3QKICAgICByZXR1cm4gaW5zZXJ0Qm90dG9t
KGluZGV4LCBsaWtlVmFsdWUtPm9yaWdpbigpLCBsaWtlVmFsdWUtPnR5cGUoKSk7CiB9CiAKK1Zh
bHVlKiBJbnNlcnRpb25TZXQ6Omluc2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqIHZhbHVl
KQoreworICAgIHJldHVybiBpbnNlcnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuY2xvbmUodmFs
dWUpKTsKK30KKwogdm9pZCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2sp
CiB7CiAgICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVu
ZCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5oCShy
ZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25T
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogCiAgICAgVmFs
dWUqIGluc2VydEJvdHRvbShzaXplX3QgaW5kZXgsIE9yaWdpbiwgVHlwZSk7CiAgICAgVmFsdWUq
IGluc2VydEJvdHRvbShzaXplX3QgaW5kZXgsIFZhbHVlKik7CisgICAgCisgICAgVmFsdWUqIGlu
c2VydENsb25lKHNpemVfdCBpbmRleCwgVmFsdWUqKTsKIAogICAgIHZvaWQgZXhlY3V0ZShCYXNp
Y0Jsb2NrKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVt
b3J5T2Zmc2V0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcAkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsOSArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkFp
ckFyZy5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgotI2luY2x1ZGUgIkIz
TWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCkBAIC00OSwyMCArNDgsMjEgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBydW4oKQogICAgIHsKLSAgICAgICAgaWYgKCFpc0FSTTY0KCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KKyAgICAgICAgLy8gRklYTUU6IFBlcmhhcHMgdGhpcyBzaG91bGQgYmUgbW92
ZWQgdG8gbG93ZXJNYWNyb3MsIGFuZCBxdWlya3MgbW9kZSBjYW4gaW1wb3NlIHRoZSByZXF1aXJl
bWVudAorICAgICAgICAvLyB0aGF0IHRoZSBvZmZzZXQgaXMgbGVnYWwuIEJ1dCBmb3Igbm93IHRo
aXMgaXMgc29ydCBvZiBPSyBiZWNhdXNlIHdlIHJ1biBwdXJlQ1NFIGFmdGVyLiBBbHNvLAorICAg
ICAgICAvLyB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBzb21ldGhpbmcgYmV0dGVyIHRoYW4ganVz
dCBwdXJlQ1NFIHRvIGNsZWFuIHVwIHRoZSBjb2RlIHRoYXQgdGhpcworICAgICAgICAvLyBpbnRy
b2R1Y2VzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY5MjQ2CisgICAgICAgIAogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9w
cm9jKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBibG9j
ay0+c2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9y
eVZhbHVlID0gYmxvY2stPmF0KGluZGV4KS0+YXM8TWVtb3J5VmFsdWU+KCk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFtZW1vcnlWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgICAgICBpbnQzMl90IG9mZnNldCA9IG1lbW9yeVZhbHVlLT5vZmZzZXQoKTsK
LSAgICAgICAgICAgICAgICBXaWR0aCB3aWR0aCA9IG1lbW9yeVZhbHVlLT5hY2Nlc3NXaWR0aCgp
OwotICAgICAgICAgICAgICAgIGlmICghQWlyOjpBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQs
IHdpZHRoKSkgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICghbWVtb3J5
VmFsdWUtPmlzTGVnYWxPZmZzZXQobWVtb3J5VmFsdWUtPm9mZnNldCgpKSkgewogICAgICAgICAg
ICAgICAgICAgICBWYWx1ZSogYmFzZSA9IG1lbW9yeVZhbHVlLT5sYXN0Q2hpbGQoKTsKLSAgICAg
ICAgICAgICAgICAgICAgVmFsdWUqIG9mZnNldFZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
SW50Q29uc3RhbnQoaW5kZXgsIG1lbW9yeVZhbHVlLT5vcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG9mZnNldFZhbHVlID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQoaW5kZXgsIG1lbW9yeVZhbHVlLT5vcmlnaW4oKSwg
cG9pbnRlclR5cGUoKSwgbWVtb3J5VmFsdWUtPm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgVmFsdWUqIHJlc29sdmVkQWRkcmVzcyA9IG1fcHJvYy5hZGQ8VmFsdWU+KEFkZCwgbWVtb3J5
VmFsdWUtPm9yaWdpbigpLCBiYXNlLCBvZmZzZXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydFZhbHVlKGluZGV4LCByZXNvbHZlZEFkZHJlc3MpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lv
biAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOSwxOSArMjksMjIgQEAKICNpZiBFTkFCTEUoQjNfSklUKQog
CiAjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCisjaW5jbHVkZSAi
QjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNs
dWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAj
aW5jbHVkZSAiQjNDYXNlQ29sbGVjdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJCM0NvbnN0UHRy
VmFsdWUuaCIKKyNpbmNsdWRlICJCM0ZlbmNlVmFsdWUuaCIKICNpbmNsdWRlICJCM0luc2VydGlv
blNldElubGluZXMuaCIKLSNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNN
ZW1vcnlWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQjNTd2l0
Y2hWYWx1ZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCisjaW5jbHVkZSAiQjNVc2VD
b3VudHMuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkNDYWxsSGVs
cGVycy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTU4LDExICs2MSwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIDogbV9wcm9jKHByb2MpCiAgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNl
dChwcm9jKQogICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KHByb2MpCisgICAgICAgICwgbV91c2VD
b3VudHMocHJvYykKICAgICB7CiAgICAgfQogCiAgICAgYm9vbCBydW4oKQogICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fcHJvYy5oYXNRdWlya3MoKSk7CisgICAgICAgIAogICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7CiAgICAgICAgICAgICBtX2Jsb2Nr
ID0gYmxvY2s7CiAgICAgICAgICAgICBwcm9jZXNzQ3VycmVudEJsb2NrKCk7CkBAIC03Miw2ICs3
OCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3Byb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsK
ICAgICAgICAgICAgIG1fcHJvYy5pbnZhbGlkYXRlQ0ZHKCk7CiAgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgd2UndmUgCisgICAgICAgIG1fcHJvYy5z
ZXRIYXNRdWlya3ModHJ1ZSk7CisgICAgICAgIAogICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwog
ICAgIH0KICAgICAKQEAgLTE4NSw3ICsxOTUsMTI3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGVwZW5kOiB7CisgICAgICAg
ICAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEg
bG9hZC1sb2FkIGZlbmNlLiBUaGlzIGNvZGVnZW5zIHRvIG5vdGhpbmcgb24gWDg2LiBXZSB1c2Ug
aXQgdG8gdGVsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgbm90IHRvIGJs
b2NrIGxvYWQgbW90aW9uLgorICAgICAgICAgICAgICAgICAgICBGZW5jZVZhbHVlKiBmZW5jZSA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxGZW5jZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbik7Cisg
ICAgICAgICAgICAgICAgICAgIGZlbmNlLT5yZWFkID0gSGVhcFJhbmdlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGZlbmNlLT53cml0ZSA9IEhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBLaWxsIHRoZSBEZXBlbmQsIHdoaWNoIHNo
b3VsZCB1bmxvY2sgYSBidW5jaCBvZiBjb2RlIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAgICAg
ICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KIAorICAgICAgICAgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICAgICAg
Y2FzZSBBdG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgICAgICBBdG9taWNWYWx1ZSogYXRv
bWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgV2lkdGgg
d2lkdGggPSBhdG9taWMtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgaWYgKGlzQ2Fub25pY2FsV2lkdGgod2lkdGgpKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYWx1ZSogZXhwZWN0
ZWRWYWx1ZSA9IGF0b21pYy0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgaWYgKCFpc1g4NigpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE9uIEFSTSwgdGhl
IGxvYWQgcGFydCBvZiB0aGUgQ0FTIGRvZXMgYSBsb2FkIHdpdGggemVybyBleHRlbnNpb24uIFRo
ZXJlZm9yZSwgd2UgbmVlZAorICAgICAgICAgICAgICAgICAgICAvLyB0byB6ZXJvLWV4dGVuZCB0
aGUgaW5wdXQuCisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtYXNrZWRFeHBlY3RlZFZhbHVl
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIGV4cGVjdGVkVmFsdWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChtX2luZGV4LCBleHBl
Y3RlZFZhbHVlLCBtYXNrKHdpZHRoKSkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgYXRvbWljLT5jaGlsZCgwKSA9IG1hc2tlZEV4cGVjdGVkVmFsdWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChhdG9t
aWMtPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUykgeworICAgICAgICAgICAgICAgICAgICBW
YWx1ZSogbmV3VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbmRleCwgc2lnbkV4dGVuZE9wY29kZSh3aWR0aCksIG1fb3JpZ2lu
LAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9p
bmRleCwgYXRvbWljKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICBhdG9taWMtPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnQWRkOgorICAgICAgICAgICAgY2FzZSBBdG9taWNY
Y2hnQW5kOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgICAgICAgICBjYXNl
IEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAg
ICAgICBjYXNlIEF0b21pY1hjaGc6IHsKKyAgICAgICAgICAgICAgICAvLyBPbiBYODYsIHRoZXNl
IG1heSBhY3R1YWxseSByZXR1cm4gZ2FyYmFnZSBpbiB0aGUgaGlnaCBiaXRzLiBPbiBBUk02NCwg
dGhlc2Ugc29ydGEKKyAgICAgICAgICAgICAgICAvLyB6ZXJvLWV4dGVuZCB0aGVpciBoaWdoIGJp
dHMsIGV4Y2VwdCB0aGF0IHRoZSBoaWdoIGJpdHMgbWlnaHQgZ2V0IHBvbGx1dGVkIGJ5IGhpZ2gK
KyAgICAgICAgICAgICAgICAvLyBiaXRzIGluIHRoZSBvcGVyYW5kLiAuIFNvLCBlaXRoZXIgd2F5
LCB3ZSBuZWVkIHRvIHRocm93IGEgc2lnbi1leHRlbmQgb24gdGhlc2UKKyAgICAgICAgICAgICAg
ICAvLyB0aGluZ3MuCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzWDg2
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPm9wY29kZSgpID09IEF0b21p
Y1hjaGdTdWIgJiYgbV91c2VDb3VudHMubnVtVXNlcyhtX3ZhbHVlKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gT24geDg2LCB4Y2hnYWRkIGlzIGJldHRlciB0aGFuIHhjaGdzdWIgaWYg
aXQgaGFzIGFueSB1c2Vycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnNldE9w
Y29kZVVuc2FmZWx5KEF0b21pY1hjaGdBZGQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV92
YWx1ZS0+Y2hpbGQoMCkgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIE5lZywgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxk
KDApKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgYm9vbCBleGVtcHQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIEF0
b21pY1hjaGdBbmQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAg
ICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY1hjaGdTdWI6CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZW1wdCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChleGVtcHQpCisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVl
PigpOworICAgICAgICAgICAgICAgIFdpZHRoIHdpZHRoID0gYXRvbWljLT5hY2Nlc3NXaWR0aCgp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbFdpZHRo
KHdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgVmFsdWUqIG5ld1ZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZh
bHVlPigKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgc2lnbkV4dGVuZE9wY29kZSh3aWR0
aCksIG1fb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRD
bG9uZShtX2luZGV4LCBhdG9taWMpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBhdG9taWMtPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAgICAgICAgICAg
IG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIExvYWQ4WjoKKyAgICAgICAgICAg
IGNhc2UgTG9hZDE2WjogeworICAgICAgICAgICAgICAgIGlmIChpc1g4NigpKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBNZW1v
cnlWYWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAg
ICAgICAgaWYgKCFtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFN1Yi13aWR0aCBsb2FkLWFj
cSBvbiBBUk02NCBhbHdheXMgc2lnbiBleHRlbmRzLgorICAgICAgICAgICAgICAgIFZhbHVlKiBu
ZXdMb2FkID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2xvbmUobV9pbmRleCwgbWVtb3J5KTsKKyAg
ICAgICAgICAgICAgICBuZXdMb2FkLT5zZXRPcGNvZGVVbnNhZmVseShtZW1vcnktPm9wY29kZSgp
ID09IExvYWQ4WiA/IExvYWQ4UyA6IExvYWQxNlMpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIFZhbHVlKiBuZXdWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4o
CisgICAgICAgICAgICAgICAgICAgIG1faW5kZXgsIEJpdEFuZCwgbV9vcmlnaW4sIG5ld0xvYWQs
CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEludENvbnN0YW50KAor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleCwgbV9vcmlnaW4sIEludDMyLCBtYXNrKG1l
bW9yeS0+YWNjZXNzV2lkdGgoKSkpKTsKKworICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxh
Y2VXaXRoSWRlbnRpdHkobmV3VmFsdWUpOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQpAQCAtNDcwLDYgKzYwMCw3IEBAIHByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3By
b2M7CiAgICAgQmxvY2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsKICAgICBJbnNl
cnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CisgICAgVXNlQ291bnRzIG1fdXNlQ291bnRzOwogICAg
IEJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgdW5zaWduZWQgbV9pbmRleDsKICAgICBWYWx1ZSog
bV92YWx1ZTsKQEAgLTQ3NywyMSArNjA4LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NoYW5n
ZWQgeyBmYWxzZSB9OwogfTsKIAotYm9vbCBsb3dlck1hY3Jvc0ltcGwoUHJvY2VkdXJlJiBwcm9j
KQotewotICAgIExvd2VyTWFjcm9zIGxvd2VyTWFjcm9zKHByb2MpOwotICAgIHJldHVybiBsb3dl
ck1hY3Jvcy5ydW4oKTsKLX0KLQogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIGJvb2wgbG93
ZXJNYWNyb3MoUHJvY2VkdXJlJiBwcm9jKQogewotICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShw
cm9jLCAibG93ZXJNYWNyb3MiKTsKLSAgICBib29sIHJlc3VsdCA9IGxvd2VyTWFjcm9zSW1wbChw
cm9jKTsKLSAgICBpZiAoc2hvdWxkVmFsaWRhdGVJUigpKQotICAgICAgICBSRUxFQVNFX0FTU0VS
VCghbG93ZXJNYWNyb3NJbXBsKHByb2MpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIExvd2Vy
TWFjcm9zIGxvd2VyTWFjcm9zKHByb2MpOworICAgIHJldHVybiBsb3dlck1hY3Jvcy5ydW4oKTsK
IH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMu
Y3BwCShyZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
ck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTYsMTUg
KzE1NiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBSb3RMOiB7CiAgICAgICAgICAg
ICAgICAgLy8gQVJNNjQgZG9lc24ndCBoYXZlIGEgcm90YXRlIGxlZnQuCiAgICAgICAgICAgICAg
ICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3U2hpZnQgPSBtX2luc2VydGlvblNl
dC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5lZywgbV92YWx1ZS0+b3JpZ2luKCksIG1fdmFsdWUt
PmNoaWxkKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigp
LCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyb3RhdGUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
VmFsdWUqIG5ld1NoaWZ0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBO
ZWcsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAg
ICAgICAgIFZhbHVlKiByb3RhdGUgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5k
ZXgsIFJvdFIsIG1fdmFsdWUtPm9yaWdpbigpLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbmV3U2hpZnQp
OworICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHJvdGF0
ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24g
MjEzNjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwxNCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAor
I2luY2x1ZGUgIkFpckJsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQWlyQ0NhbGxTcGVj
aWFsLmgiCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpckluc2VydGlvblNldC5o
IgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tTbG90Lmgi
CiAjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1
ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2Nr
V29ya2xpc3QuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTQxLDcgKzQzLDcgQEAK
ICNpbmNsdWRlICJCM0NvbW11dGF0aXZpdHkuaCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIK
ICNpbmNsdWRlICJCM0ZlbmNlVmFsdWUuaCIKLSNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisj
aW5jbHVkZSAiQjNNZW1vcnlWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1BhdGNocG9pbnRT
cGVjaWFsLmgiCiAjaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKICNpbmNsdWRlICJCM1Bo
YXNlU2NvcGUuaCIKQEAgLTcyLDYgKzc0LDE2IEBAIG5hbWVzcGFjZSB7CiAKIGNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOwogCisvLyBGSVhNRTogV2Ugd291bGRuJ3QgbmVlZCB0aGlzIGlmIEFp
ciBzdXBwb3J0ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFpcjo6S2luZC4KKy8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkyNDcKKyNkZWZpbmUgT1BDT0RFX0ZPUl9X
SURUSChvcGNvZGUsIHdpZHRoKSAoIFwKKyAgICAod2lkdGgpID09IFdpZHRoOCA/IG9wY29kZSAj
IyA4IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IG9wY29kZSAjIyAxNiA6IFwKKyAgICAo
d2lkdGgpID09IFdpZHRoMzIgPyBvcGNvZGUgIyMgMzIgOiBcCisgICAgb3Bjb2RlICMjIDY0KQor
I2RlZmluZSBPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKKyAg
ICAod2lkdGgpID09IFdpZHRoNjQgPyBvcGNvZGUgIyMgNjQgOiBvcGNvZGUgIyMgMzIpCisKIGNs
YXNzIExvd2VyVG9BaXIgewogcHVibGljOgogICAgIExvd2VyVG9BaXIoUHJvY2VkdXJlJiBwcm9j
ZWR1cmUpCkBAIC04Myw2ICs5NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9kb21pbmF0b3Jz
KHByb2NlZHVyZS5kb21pbmF0b3JzKCkpCiAgICAgICAgICwgbV9wcm9jZWR1cmUocHJvY2VkdXJl
KQogICAgICAgICAsIG1fY29kZShwcm9jZWR1cmUuY29kZSgpKQorICAgICAgICAsIG1fYmxvY2tJ
bnNlcnRpb25TZXQobV9jb2RlKQorI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgICAg
ICwgbV9lYXgoWDg2UmVnaXN0ZXJzOjplYXgpCisgICAgICAgICwgbV9lY3goWDg2UmVnaXN0ZXJz
OjplY3gpCisgICAgICAgICwgbV9lZHgoWDg2UmVnaXN0ZXJzOjplZHgpCisjZW5kaWYKICAgICB7
CiAgICAgfQogCkBAIC0xMjQsMTQgKzE0MiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGhvaXN0
ZWQgYWRkcmVzcyBleHByZXNzaW9uIGJlZm9yZSB3ZSBkdXBsaWNhdGUgaXQgYmFjayBpbnRvIHRo
ZSBsb29wLgogICAgICAgICBmb3IgKEIzOjpCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvY2VkdXJl
LmJsb2Nrc0luUHJlT3JkZXIoKSkgewogICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwotICAg
ICAgICAgICAgLy8gUmVzZXQgc29tZSBzdGF0ZS4KLSAgICAgICAgICAgIG1faW5zdHMucmVzaXpl
KDApOwogCiAgICAgICAgICAgICBtX2lzUmFyZSA9ICFtX2Zhc3RXb3JrbGlzdC5zYXcoYmxvY2sp
OwogCiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJM
b3dlcmluZyBCbG9jayAiLCAqYmxvY2ssICI6XG4iKTsKICAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3JyZWN0bHku
CisgICAgICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxvY2st
PnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+
c3VjY2Vzc29ycygpLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgQWlyOjpGcmVxdWVudGVk
QmxvY2sobV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNjZXNzb3IuZnJlcXVl
bmN5KCkpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gUHJvY2VzcyBibG9ja3Mg
aW4gcmV2ZXJzZSBvcmRlciBzbyB3ZSBzZWUgdXNlcyBiZWZvcmUgZGVmcy4gVGhhdCdzIHdoYXQg
YWxsb3dzIHVzCiAgICAgICAgICAgICAvLyB0byBtYXRjaCBwYXR0ZXJucyBlZmZlY3RpdmVseS4K
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGktLTspIHsKQEAg
LTE0OSwxOSArMTcxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIC8vIE5vdyBhcHBlbmQgdGhlIGluc3RydWN0aW9ucy4gbV9pbnN0
cyBjb250YWlucyB0aGVtIGluIHJldmVyc2Ugb3JkZXIsIHNvIHdlIHByb2Nlc3MKLSAgICAgICAg
ICAgIC8vIGl0IGluIHJldmVyc2UuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2lu
c3RzLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1f
aW5zdHNbaV0pCi0gICAgICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+YXBw
ZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8g
TWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3JyZWN0bHkuCi0gICAg
ICAgICAgICBmb3IgKEIzOjpGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nl
c3NvcnMoKSkgewotICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+c3VjY2Vz
c29ycygpLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgQWlyOjpGcmVxdWVudGVkQmxvY2so
bV9ibG9ja1RvQmxvY2tbc3VjY2Vzc29yLmJsb2NrKCldLCBzdWNjZXNzb3IuZnJlcXVlbmN5KCkp
KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmlzaEFwcGVuZGluZ0luc3RydWN0aW9u
cyhtX2Jsb2NrVG9CbG9ja1tibG9ja10pOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBt
X2Jsb2NrSW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKIAogICAgICAgICBBaXI6Okluc2VydGlvblNl
dCBpbnNlcnRpb25TZXQobV9jb2RlKTsKICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9wcm9s
b2d1ZSkKQEAgLTQ0OCwxMiArNDYxLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gc2NhbGU7CiAgICAgfQotCisgICAgCiAgICAg
Ly8gVGhpcyB0dXJucyB0aGUgZ2l2ZW4gb3BlcmFuZCBpbnRvIGFuIGFkZHJlc3MuCiAgICAgQXJn
IGVmZmVjdGl2ZUFkZHIoVmFsdWUqIGFkZHJlc3MsIGludDMyX3Qgb2Zmc2V0LCBXaWR0aCB3aWR0
aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQsIHdp
ZHRoKSk7Ci0KKyAgICAgICAgCiAgICAgICAgIGF1dG8gZmFsbGJhY2sgPSBbJl0gKCkgLT4gQXJn
IHsKICAgICAgICAgICAgIHJldHVybiBBcmc6OmFkZHIodG1wKGFkZHJlc3MpLCBvZmZzZXQpOwog
ICAgICAgICB9OwpAQCAtNTM1LDEyICs1NDgsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgTWVtb3J5
VmFsdWUqIHZhbHVlID0gbWVtb3J5VmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpOwogICAgICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIEFyZygpOworICAgICAgICAKKyAgICAgICAg
aWYgKHZhbHVlLT5yZXF1aXJlc1NpbXBsZUFkZHIoKSkKKyAgICAgICAgICAgIHJldHVybiBBcmc6
OnNpbXBsZUFkZHIodG1wKHZhbHVlLT5sYXN0Q2hpbGQoKSkpOwogCiAgICAgICAgIGludDMyX3Qg
b2Zmc2V0ID0gdmFsdWUtPm9mZnNldCgpOwogICAgICAgICBXaWR0aCB3aWR0aCA9IHZhbHVlLT5h
Y2Nlc3NXaWR0aCgpOwogCiAgICAgICAgIEFyZyByZXN1bHQgPSBlZmZlY3RpdmVBZGRyKHZhbHVl
LT5sYXN0Q2hpbGQoKSwgb2Zmc2V0LCB3aWR0aCk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQuaXNW
YWxpZEZvcm0od2lkdGgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmlzVmFsaWRG
b3JtKHdpZHRoKSk7CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC01NjEsMTEg
KzU3NywxOSBAQCBwcml2YXRlOgogICAgIAogICAgIEFyZ1Byb21pc2UgbG9hZFByb21pc2VBbnlP
cGNvZGUoVmFsdWUqIGxvYWRWYWx1ZSkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxv
YWRWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkpOwogICAgICAgICBpZiAoIWNhbkJlSW50ZXJuYWwo
bG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKICAgICAgICAgaWYgKGNyb3Nz
ZXNJbnRlcmZlcmVuY2UobG9hZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKLSAg
ICAgICAgQXJnUHJvbWlzZSByZXN1bHQoYWRkcihsb2FkVmFsdWUpLCBsb2FkVmFsdWUpOworICAg
ICAgICAvLyBPbiB4ODYsIGFsbCBsb2FkcyBoYXZlIGZlbmNlcy4gRG9pbmcgdGhpcyBraW5kIG9m
IGluc3RydWN0aW9uIHNlbGVjdGlvbiB3aWxsIG1vdmUgdGhlIGxvYWQsCisgICAgICAgIC8vIGJ1
dCB0aGF0J3MgZmluZSBiZWNhdXNlIG91ciBpbnRlcmZlcmVuY2UgYW5hbHlzaXMgc3RvcHMgdGhl
IG1vdGlvbiBvZiBmZW5jZXMgYXJvdW5kIG90aGVyCisgICAgICAgIC8vIGZlbmNlcy4gU28sIGFu
eSBsb2FkIG1vdGlvbiB3ZSBpbnRyb2R1Y2UgaGVyZSB3b3VsZCBub3QgYmUgb2JzZXJ2YWJsZS4K
KyAgICAgICAgaWYgKCFpc1g4NigpICYmIGxvYWRWYWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhh
c0ZlbmNlKCkpCisgICAgICAgICAgICByZXR1cm4gQXJnKCk7CisgICAgICAgIEFyZyBsb2FkQWRk
ciA9IGFkZHIobG9hZFZhbHVlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobG9hZEFkZHIpOwor
ICAgICAgICBBcmdQcm9taXNlIHJlc3VsdChsb2FkQWRkciwgbG9hZFZhbHVlKTsKICAgICAgICAg
aWYgKGxvYWRWYWx1ZS0+dHJhcHMoKSkKICAgICAgICAgICAgIHJlc3VsdC5zZXRUcmFwcyh0cnVl
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTczOCw3ICs3NjIsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQorICAgIAogICAgIHRlbXBsYXRlPEFpcjo6
T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQWlyOjpPcGNvZGUgb3Bjb2Rl
RG91YmxlLCBBaXI6Ok9wY29kZSBvcGNvZGVGbG9hdCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2
aXR5ID0gTm90Q29tbXV0YXRpdmU+CiAgICAgdm9pZCBhcHBlbmRCaW5PcChWYWx1ZSogbGVmdCwg
VmFsdWUqIHJpZ2h0KQogICAgIHsKQEAgLTg5NywxMSArOTIxLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkK
ICAgICAgICAgYXBwZW5kKE1vdmUsIHRtcCh2YWx1ZSksIHRtcChtX3ZhbHVlKSk7Ci0gICAgICAg
IGFwcGVuZChNb3ZlLCB0bXAoYW1vdW50KSwgVG1wKFg4NlJlZ2lzdGVyczo6ZWN4KSk7Ci0gICAg
ICAgIGFwcGVuZChvcGNvZGUsIFRtcChYODZSZWdpc3RlcnM6OmVjeCksIHRtcChtX3ZhbHVlKSk7
Ci0jZW5kaWYKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChhbW91bnQpLCBtX2VjeCk7CisgICAg
ICAgIGFwcGVuZChvcGNvZGUsIG1fZWN4LCB0bXAobV92YWx1ZSkpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2ND4KQEAgLTkz
MCwxMCArOTUyLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBB
aXI6Ok9wY29kZSBvcGNvZGU2NCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29t
bXV0YXRpdmU+CiAgICAgYm9vbCB0cnlBcHBlbmRTdG9yZUJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1
ZSogcmlnaHQpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKSk7CisgICAgICAgIAogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlP
cGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgbGVmdC0+dHlwZSgpKTsKICAgICAgICAg
aWYgKG9wY29kZSA9PSBBaXI6Ok9vcHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIAorICAgICAgICAvLyBPbiB4ODYsIGFsbCBzdG9yZXMgaGF2ZSBmZW5jZXMsIGFuZCB0aGlz
IGlzbid0IHJlb3JkZXJpbmcgdGhlIHN0b3JlIGl0c2VsZi4KKyAgICAgICAgaWYgKCFpc1g4Nigp
ICYmIG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICAgICAgQXJnIHN0b3JlQWRkciA9IGFkZHIobV92
YWx1ZSk7CiAgICAgICAgIEFTU0VSVChzdG9yZUFkZHIpOwogCkBAIC05OTMsMTEgKzEwMjEsNTAg
QEAgcHJpdmF0ZToKIAogICAgICAgICByZXR1cm4gSW5zdChtb3ZlLCBtX3ZhbHVlLCB0bXAodmFs
dWUpLCBkZXN0KTsKICAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNvZGUoV2lk
dGggd2lkdGgsIEJhbmsgYmFuaywgYm9vbCByZWxlYXNlKQorICAgIHsKKyAgICAgICAgc3dpdGNo
ICh3aWR0aCkgeworICAgICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGJhbmsgPT0gR1ApOworICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDgg
OiBBaXI6OlN0b3JlODsKKyAgICAgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoYmFuayA9PSBHUCk7CisgICAgICAgICAgICByZXR1cm4gcmVsZWFzZSA/IFN0b3Jl
UmVsMTYgOiBBaXI6OlN0b3JlMTY7CisgICAgICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgICAg
IHN3aXRjaCAoYmFuaykgeworICAgICAgICAgICAgY2FzZSBHUDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVsZWFzZSA/IFN0b3JlUmVsMzIgOiBNb3ZlMzI7CisgICAgICAgICAgICBjYXNlIEZQ
OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZWxlYXNlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gTW92ZUZsb2F0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzNjRC
aXQoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKKyAgICAgICAgICAgIGNhc2UgR1A6
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDY0IDogTW92ZTsKKyAg
ICAgICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlbGVh
c2UpOworICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNvZGUoVmFs
dWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5h
czxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5LT5pc1N0b3Jl
KCkpOworICAgICAgICByZXR1cm4gc3RvcmVPcGNvZGUobWVtb3J5LT5hY2Nlc3NXaWR0aCgpLCBt
ZW1vcnktPmFjY2Vzc0JhbmsoKSwgbWVtb3J5LT5oYXNGZW5jZSgpKTsKKyAgICB9CiAKICAgICBJ
bnN0IGNyZWF0ZVN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsKLSAg
ICAgICAgQWlyOjpPcGNvZGUgbW92ZU9wY29kZSA9IG1vdmVGb3JUeXBlKHZhbHVlLT50eXBlKCkp
OwotICAgICAgICByZXR1cm4gY3JlYXRlU3RvcmUobW92ZU9wY29kZSwgdmFsdWUsIGRlc3QpOwor
ICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlT3Bjb2RlID0gc3RvcmVPcGNvZGUodmFsdWUpOworICAg
ICAgICByZXR1cm4gY3JlYXRlU3RvcmUobW92ZU9wY29kZSwgdmFsdWUtPmNoaWxkKDApLCBkZXN0
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgpAQCAtMTAwNSw3ICsx
MDcyLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92
YWx1ZSwgY3JlYXRlU3RvcmUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkpOwogICAgIH0K
LQorICAgIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlwZSkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTA3Miw3ICsxMTM5LDQxIEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoaW5zdCk7CiAgICAgfQorICAgIAor
ICAgIHZvaWQgZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKEFpcjo6QmFzaWNCbG9jayogdGFy
Z2V0KQorICAgIHsKKyAgICAgICAgLy8gTm93IGFwcGVuZCB0aGUgaW5zdHJ1Y3Rpb25zLiBtX2lu
c3RzIGNvbnRhaW5zIHRoZW0gaW4gcmV2ZXJzZSBvcmRlciwgc28gd2UgcHJvY2VzcworICAgICAg
ICAvLyBpdCBpbiByZXZlcnNlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luc3RzLnNp
emUoKTsgaS0tOykgeworICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0c1tpXSkK
KyAgICAgICAgICAgICAgICB0YXJnZXQtPmFwcGVuZEluc3QoV1RGTW92ZShpbnN0KSk7CisgICAg
ICAgIH0KKyAgICAgICAgbV9pbnN0cy5yZXNpemUoMCk7CisgICAgfQorICAgIAorICAgIEFpcjo6
QmFzaWNCbG9jayogbmV3QmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYmxvY2tJbnNl
cnRpb25TZXQuaW5zZXJ0QWZ0ZXIobV9ibG9ja1RvQmxvY2tbbV9ibG9ja10pOworICAgIH0KIAor
ICAgIC8vIE5PVEU6IFRoaXMgd2lsbCBjcmVhdGUgYSBjb250aW51YXRpb24gYmxvY2sgKGBuZXh0
QmxvY2tgKSAqYWZ0ZXIqIGFueSBibG9ja3MgeW91J3ZlIGNyZWF0ZWQgdXNpbmcKKyAgICAvLyBu
ZXdCbG9jaygpLiBTbywgaXQncyBwcmVmZXJhYmxlIHRvIGNyZWF0ZSBhbGwgb2YgeW91ciBibG9j
a3MgdXBmcm9udCB1c2luZyBuZXdCbG9jaygpLiBBbHNvIG5vdGUKKyAgICAvLyB0aGF0IGFueSBj
b2RlIHlvdSBlbWl0IGJlZm9yZSB0aGlzIHdpbGwgYmUgcHJlcGVuZGVkIHRvIHRoZSBjb250aW51
YXRpb24sIGFuZCBhbnkgY29kZSB5b3UgZW1pdAorICAgIC8vIGFmdGVyIHRoaXMgd2lsbCBiZSBh
cHBlbmRlZCB0byB0aGUgcHJldmlvdXMgYmxvY2suCisgICAgdm9pZCBzcGxpdEJsb2NrKEFpcjo6
QmFzaWNCbG9jayomIHByZXZpb3VzQmxvY2ssIEFpcjo6QmFzaWNCbG9jayomIG5leHRCbG9jaykK
KyAgICB7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmxvY2sgPSBtX2Jsb2NrVG9CbG9ja1tt
X2Jsb2NrXTsKKyAgICAgICAgCisgICAgICAgIHByZXZpb3VzQmxvY2sgPSBibG9jazsKKyAgICAg
ICAgbmV4dEJsb2NrID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRBZnRlcihibG9jayk7Cisg
ICAgICAgIAorICAgICAgICBmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMobmV4dEJsb2NrKTsK
KyAgICAgICAgbmV4dEJsb2NrLT5zdWNjZXNzb3JzKCkgPSBibG9jay0+c3VjY2Vzc29ycygpOwor
ICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpLmNsZWFyKCk7CisgICAgICAgIAorICAgICAgICBt
X2luc3RzLmFwcGVuZChWZWN0b3I8SW5zdD4oKSk7CisgICAgfQorICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBUKiBlbnN1cmVTcGVjaWFs
KFQqJiBmaWVsZCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKQEAgLTExMjIsNyAr
MTIyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFZhbHVlUmVwOjpTdGFja0FyZ3VtZW50OgogICAgICAgICAgICAgICAgIGFyZyA9IEFyZzo6
Y2FsbEFyZyh2YWx1ZS5yZXAoKS5vZmZzZXRGcm9tU1AoKSk7Ci0gICAgICAgICAgICAgICAgYXBw
ZW5kU3RvcmUodmFsdWUudmFsdWUoKSwgYXJnKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRTdG9y
ZShtb3ZlRm9yVHlwZSh2YWx1ZS52YWx1ZSgpLT50eXBlKCkpLCB2YWx1ZS52YWx1ZSgpLCBhcmcp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTI1Myw3ICsxMzU0LDkg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgLy8gSXQncyBzYWZlIHRvIHNoYXJlIHZhbHVlLCBi
dXQgc2luY2Ugd2UncmUgc2hhcmluZywgaXQgbWVhbnMgdGhhdCB3ZSBhcmVuJ3QgbG9ja2luZyBp
dC4KICAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGxvY2sgaXQsIHRoZW4gZnVzaW5nIGxvYWRz
IGlzIG9mZiBsaW1pdHMgYW5kIGFsbCBvZiB2YWx1ZSdzIGNoaWxkcmVuIHdpbGwKLSAgICAgICAg
ICAgIC8vIGhhdmUgdG8gZ28gdGhyb3VnaCB0aGUgc2hhcmluZyBwYXRoIGFzIHdlbGwuCisgICAg
ICAgICAgICAvLyBoYXZlIHRvIGdvIHRocm91Z2ggdGhlIHNoYXJpbmcgcGF0aCBhcyB3ZWxsLiBG
dXNpbmcgbG9hZHMgaXMgb2ZmIGxpbWl0cyBiZWNhdXNlIHRoZSBsb2FkCisgICAgICAgICAgICAv
LyBjb3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBlbWl0dGVkIGVsc2Vod2VyZSAtIHNvIGZ1c2luZyBp
dCBoZXJlIHdvdWxkIGR1cGxpY2F0ZSB0aGUgbG9hZC4KKyAgICAgICAgICAgIC8vIFdlIGRvbid0
IGNvbnNpZGVyIHRoYXQgdG8gYmUgYSBsZWdhbCBvcHRpbWl6YXRpb24uCiAgICAgICAgICAgICBj
YW5Db21taXRJbnRlcm5hbCA9IGZhbHNlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1
cm4gRnVzZTsKQEAgLTE0NzEsNiArMTU3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIHVuc2lnbmVkIHRoZW4gd2UgY2FuIGNob3AgdGhpbmdz
IG9mZiBvZiB0aGUgaW1tZWRpYXRlLgogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG1pZ2h0
IG1ha2UgdGhlIGltbWVkaWF0ZSBtb3JlIGxlZ2FsLiBQZXJoYXBzIHRoYXQncyBhIGpvYiBmb3IK
ICAgICAgICAgICAgICAgICAgICAgLy8gc3RyZW5ndGggcmVkdWN0aW9uPworICAgICAgICAgICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MjQ4
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHRJbW0p
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJbnN0IHJlc3VsdCA9IHRyeVRlc3Qod2lk
dGgsIGxvYWRQcm9taXNlKGxlZnQsIGxvYWRPcGNvZGUpLCByaWdodEltbSkpIHsKQEAgLTE5NjAs
NiArMjA2NCwzMTQgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisg
ICAgdm9pZCBhcHBlbmRYODZEaXYoQjM6Ok9wY29kZSBvcCkKKyAgICB7CisgICAgICAgIEFpcjo6
T3Bjb2RlIGNvbnZlcnRUb0RvdWJsZVdvcmQ7CisgICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKKyAg
ICAgICAgc3dpdGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMjoKKyAg
ICAgICAgICAgIGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7
CisgICAgICAgICAgICBkaXYgPSBYODZEaXYzMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEludDY0OgorICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZl
cnRUb1F1YWRXb3JkNjQ7CisgICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFT
U0VSVChvcCA9PSBEaXYgfHwgb3AgPT0gTW9kKTsKKyAgICAgICAgVG1wIHJlc3VsdCA9IG9wID09
IERpdiA/IG1fZWF4IDogbV9lZHg7CisKKyAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVl
LT5jaGlsZCgwKSksIG1fZWF4KTsKKyAgICAgICAgYXBwZW5kKGNvbnZlcnRUb0RvdWJsZVdvcmQs
IG1fZWF4LCBtX2VkeCk7CisgICAgICAgIGFwcGVuZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1f
dmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFwcGVuZChNb3ZlLCByZXN1bHQsIHRtcChtX3Zh
bHVlKSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpPcGNvZGUgb3ApCisg
ICAgeworICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIg
PyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CisKKyAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwg
b3AgPT0gVU1vZCk7CisgICAgICAgIFRtcCByZXN1bHQgPSBvcCA9PSBVRGl2ID8gbV9lYXggOiBt
X2VkeDsKKworICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgbV9l
YXgpOworICAgICAgICBhcHBlbmQoWG9yNjQsIG1fZWR4LCBtX2VkeCk7CisgICAgICAgIGFwcGVu
ZChkaXYsIG1fZWF4LCBtX2VkeCwgdG1wKG1fdmFsdWUtPmNoaWxkKDEpKSk7CisgICAgICAgIGFw
cGVuZChNb3ZlLCByZXN1bHQsIHRtcChtX3ZhbHVlKSk7CisgICAgfQorICAgIAorICAgIEFpcjo6
T3Bjb2RlIGxvYWRMaW5rT3Bjb2RlKFdpZHRoIHdpZHRoLCBib29sIGZlbmNlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZlbmNlID8gT1BDT0RFX0ZPUl9XSURUSChMb2FkTGlua0FjcSwgd2lkdGgp
IDogT1BDT0RFX0ZPUl9XSURUSChMb2FkTGluaywgd2lkdGgpOworICAgIH0KKyAgICAKKyAgICBB
aXI6Ok9wY29kZSBzdG9yZUNvbmRPcGNvZGUoV2lkdGggd2lkdGgsIGJvb2wgZmVuY2UpCisgICAg
eworICAgICAgICByZXR1cm4gZmVuY2UgPyBPUENPREVfRk9SX1dJRFRIKFN0b3JlQ29uZFJlbCwg
d2lkdGgpIDogT1BDT0RFX0ZPUl9XSURUSChTdG9yZUNvbmQsIHdpZHRoKTsKKyAgICB9CisgICAg
CisgICAgLy8gVGhpcyBjYW4gZW1pdCBjb2RlIGZvciB0aGUgZm9sbG93aW5nIHBhdHRlcm5zOgor
ICAgIC8vIEF0b21pY1dlYWtDQVMKKyAgICAvLyBCaXRYb3IoQXRvbWljV2Vha0NBUywgMSkKKyAg
ICAvLyBBdG9taWNTdHJvbmdDQVMKKyAgICAvLyBFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4cGVj
dGVkKQorICAgIC8vIE5vdEVxdWFsKEF0b21pY1N0cm9uZ0NBUywgZXhwZWN0ZWQpCisgICAgLy8g
QnJhbmNoKEF0b21pY1dlYWtDQVMpCisgICAgLy8gQnJhbmNoKEVxdWFsKEF0b21pY1N0cm9uZ0NB
UywgZXhwZWN0ZWQpKQorICAgIC8vIEJyYW5jaChOb3RFcXVhbChBdG9taWNTdHJvbmdDQVMsIGV4
cGVjdGVkKSkKKyAgICAvLworICAgIC8vIEl0IGFzc3VtZXMgdGhhdCBhdG9taWNWYWx1ZSBwb2lu
dHMgdG8gdGhlIENBUywgYW5kIG1fdmFsdWUgcG9pbnRzIHRvIHRoZSBpbnN0cnVjdGlvbiBiZWlu
ZworICAgIC8vIGdlbmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBjb25zdW1lZCBldmVy
eXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc3VtZWQuCisgICAgdm9pZCBhcHBlbmRDQVMoVmFs
dWUqIGF0b21pY1ZhbHVlLCBib29sIGludmVydCkKKyAgICB7CisgICAgICAgIEF0b21pY1ZhbHVl
KiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGF0b21pYyk7CisgICAgICAgIAorICAgICAgICBib29sIGlzQnJhbmNoID0gbV92
YWx1ZS0+b3Bjb2RlKCkgPT0gQnJhbmNoOworICAgICAgICBib29sIGlzU3Ryb25nID0gYXRvbWlj
LT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVM7CisgICAgICAgIGJvb2wgcmV0dXJuc09sZFZh
bHVlID0gbV92YWx1ZS0+b3Bjb2RlKCkgPT0gQXRvbWljU3Ryb25nQ0FTOworICAgICAgICBib29s
IGhhc0ZlbmNlID0gYXRvbWljLT5oYXNGZW5jZSgpOworICAgICAgICAKKyAgICAgICAgV2lkdGgg
d2lkdGggPSBhdG9taWMtPmFjY2Vzc1dpZHRoKCk7CisgICAgICAgIEFyZyBhZGRyZXNzID0gYWRk
cihhdG9taWMpOworCisgICAgICAgIFRtcCB2YWx1ZVJlc3VsdFRtcDsKKyAgICAgICAgVG1wIGJv
b2xSZXN1bHRUbXA7CisgICAgICAgIGlmIChyZXR1cm5zT2xkVmFsdWUpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFpbnZlcnQpOworICAgICAgICAgICAgdmFsdWVSZXN1bHRUbXAgPSB0
bXAobV92YWx1ZSk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0gbV9jb2RlLm5ld1RtcChH
UCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAgICAgIHZhbHVlUmVz
dWx0VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICBib29sUmVzdWx0VG1wID0g
bV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YWx1ZVJl
c3VsdFRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgYm9vbFJlc3VsdFRtcCA9
IHRtcChtX3ZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVG1wIHN1Y2Nlc3NC
b29sUmVzdWx0VG1wOworICAgICAgICBpZiAoaXNTdHJvbmcgJiYgIWlzQnJhbmNoKQorICAgICAg
ICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBtX2NvZGUubmV3VG1wKEdQKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgc3VjY2Vzc0Jvb2xSZXN1bHRUbXAgPSBib29sUmVzdWx0VG1wOwor
CisgICAgICAgIFRtcCBleHBlY3RlZFZhbHVlVG1wID0gdG1wKGF0b21pYy0+Y2hpbGQoMCkpOwor
ICAgICAgICBUbXAgbmV3VmFsdWVUbXAgPSB0bXAoYXRvbWljLT5jaGlsZCgxKSk7CisgICAgICAg
IAorICAgICAgICBBaXI6OkZyZXF1ZW50ZWRCbG9jayBzdWNjZXNzOworICAgICAgICBBaXI6OkZy
ZXF1ZW50ZWRCbG9jayBmYWlsdXJlOworICAgICAgICBpZiAoaXNCcmFuY2gpIHsKKyAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBtX2Jsb2NrVG9CbG9ja1ttX2Jsb2NrXS0+c3VjY2Vzc29yKGludmVydCk7
CisgICAgICAgICAgICBmYWlsdXJlID0gbV9ibG9ja1RvQmxvY2tbbV9ibG9ja10tPnN1Y2Nlc3Nv
cighaW52ZXJ0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsK
KyAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5hY2Nlc3NUeXBl
KCkpLCBpbW1PclRtcChhdG9taWMtPmNoaWxkKDApKSwgbV9lYXgpOworICAgICAgICAgICAgaWYg
KHJldHVybnNPbGRWYWx1ZSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJ
RFRIKEF0b21pY1N0cm9uZ0NBUywgd2lkdGgpLCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3Mp
OworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT5hY2Nl
c3NUeXBlKCkpLCBtX2VheCwgdmFsdWVSZXN1bHRUbXApOworICAgICAgICAgICAgfSBlbHNlIGlm
IChpc0JyYW5jaCkgeworICAgICAgICAgICAgICAgIGFwcGVuZChPUENPREVfRk9SX1dJRFRIKEJy
YW5jaEF0b21pY1N0cm9uZ0NBUywgd2lkdGgpLCBBcmc6OnN0YXR1c0NvbmQoTWFjcm9Bc3NlbWJs
ZXI6OlN1Y2Nlc3MpLCBtX2VheCwgbmV3VmFsdWVUbXAsIGFkZHJlc3MpOworICAgICAgICAgICAg
ICAgIG1fYmxvY2tUb0Jsb2NrW21fYmxvY2tdLT5zZXRTdWNjZXNzb3JzKHN1Y2Nlc3MsIGZhaWx1
cmUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYXBwZW5kKE9QQ09ERV9G
T1JfV0lEVEgoQXRvbWljU3Ryb25nQ0FTLCB3aWR0aCksIEFyZzo6c3RhdHVzQ29uZChpbnZlcnQg
PyBNYWNyb0Fzc2VtYmxlcjo6RmFpbHVyZSA6IE1hY3JvQXNzZW1ibGVyOjpTdWNjZXNzKSwgbV9l
YXgsIHRtcChhdG9taWMtPmNoaWxkKDEpKSwgYWRkcmVzcywgYm9vbFJlc3VsdFRtcCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzQVJNNjQoKSk7CisgICAgICAgIC8vIFdlIHdpc2ggdG8gZW1pdDoKKyAgICAgICAgLy8K
KyAgICAgICAgLy8gQmxvY2sgI3JlbG9vcDoKKyAgICAgICAgLy8gICAgIExvYWRMaW5rCisgICAg
ICAgIC8vICAgICBCcmFuY2ggTm90RXF1YWwKKyAgICAgICAgLy8gICBTdWNjZXNzb3JzOiBUaGVu
OiNmYWlsLCBFbHNlOiAjc3RvcmUKKyAgICAgICAgLy8gQmxvY2sgI3N0b3JlOgorICAgICAgICAv
LyAgICAgU3RvcmVDb25kCisgICAgICAgIC8vICAgICBYb3IgJDEsICVyZXN1bHQgICAgPC0tLSBv
bmx5IGlmICFpbnZlcnQKKyAgICAgICAgLy8gICAgIEp1bXAKKyAgICAgICAgLy8gICBTdWNjZXNz
b3JzOiAjZG9uZQorICAgICAgICAvLyBCbG9jayAjZmFpbDoKKyAgICAgICAgLy8gICAgIE1vdmUg
JGludmVydCwgJXJlc3VsdAorICAgICAgICAvLyAgICAgSnVtcAorICAgICAgICAvLyAgIFN1Y2Nl
c3NvcnM6ICNkb25lCisgICAgICAgIC8vIEJsb2NrICNkb25lOgorICAgICAgICAKKyAgICAgICAg
QWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6
QmFzaWNCbG9jayogc3RvcmVCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNC
bG9jayogc3VjY2Vzc0Jsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc0JyYW5jaCAmJiBp
c1N0cm9uZykKKyAgICAgICAgICAgIHN1Y2Nlc3NCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAg
IEFpcjo6QmFzaWNCbG9jayogZmFpbEJsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc0Jy
YW5jaCkgeworICAgICAgICAgICAgZmFpbEJsb2NrID0gbmV3QmxvY2soKTsKKyAgICAgICAgICAg
IGZhaWx1cmUgPSBmYWlsQmxvY2s7CisgICAgICAgIH0KKyAgICAgICAgQWlyOjpCYXNpY0Jsb2Nr
KiBzdHJvbmdGYWlsQmxvY2s7CisgICAgICAgIGlmIChpc1N0cm9uZyAmJiBoYXNGZW5jZSkKKyAg
ICAgICAgICAgIHN0cm9uZ0ZhaWxCbG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6RnJl
cXVlbnRlZEJsb2NrIGNvbXBhcmlzb25GYWlsID0gZmFpbHVyZTsKKyAgICAgICAgQWlyOjpGcmVx
dWVudGVkQmxvY2sgd2Vha0ZhaWw7CisgICAgICAgIGlmIChpc1N0cm9uZykgeworICAgICAgICAg
ICAgaWYgKGhhc0ZlbmNlKQorICAgICAgICAgICAgICAgIGNvbXBhcmlzb25GYWlsID0gc3Ryb25n
RmFpbEJsb2NrOworICAgICAgICAgICAgd2Vha0ZhaWwgPSByZWxvb3BCbG9jazsKKyAgICAgICAg
fSBlbHNlIAorICAgICAgICAgICAgd2Vha0ZhaWwgPSBmYWlsdXJlOworICAgICAgICBBaXI6OkJh
c2ljQmxvY2sqIGJlZ2luQmxvY2s7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogZG9uZUJsb2Nr
OworICAgICAgICBzcGxpdEJsb2NrKGJlZ2luQmxvY2ssIGRvbmVCbG9jayk7CisgICAgICAgIAor
ICAgICAgICBhcHBlbmQoQWlyOjpKdW1wKTsKKyAgICAgICAgYmVnaW5CbG9jay0+c2V0U3VjY2Vz
c29ycyhyZWxvb3BCbG9jayk7CisgICAgICAgIAorICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5k
KGxvYWRMaW5rT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCBhZGRy
ZXNzLCB2YWx1ZVJlc3VsdFRtcCk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5hcHBlbmQoT1BDT0RF
X0ZPUl9DQU5PTklDQUxfV0lEVEgoQnJhbmNoLCB3aWR0aCksIG1fdmFsdWUsIEFyZzo6cmVsQ29u
ZChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpLCB2YWx1ZVJlc3VsdFRtcCwgZXhwZWN0ZWRWYWx1
ZVRtcCk7CisgICAgICAgIHJlbG9vcEJsb2NrLT5zZXRTdWNjZXNzb3JzKGNvbXBhcmlzb25GYWls
LCBzdG9yZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChzdG9y
ZUNvbmRPcGNvZGUod2lkdGgsIGF0b21pYy0+aGFzRmVuY2UoKSksIG1fdmFsdWUsIG5ld1ZhbHVl
VG1wLCBhZGRyZXNzLCBzdWNjZXNzQm9vbFJlc3VsdFRtcCk7CisgICAgICAgIGlmIChpc0JyYW5j
aCkgeworICAgICAgICAgICAgc3RvcmVCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1
ZSwgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3VsdFRtcCwgYm9v
bFJlc3VsdFRtcCk7CisgICAgICAgICAgICBzdG9yZUJsb2NrLT5zZXRTdWNjZXNzb3JzKHN1Y2Nl
c3MsIHdlYWtGYWlsKTsKKyAgICAgICAgICAgIGRvbmVCbG9jay0+c3VjY2Vzc29ycygpLmNsZWFy
KCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghZG9uZUJsb2NrLT5zaXplKCkpOworICAg
ICAgICAgICAgZG9uZUJsb2NrLT5hcHBlbmQoQWlyOjpPb3BzLCBtX3ZhbHVlKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpc1N0cm9uZykgeworICAgICAgICAgICAgICAgIHN0
b3JlQmxvY2stPmFwcGVuZChCcmFuY2hUZXN0MzIsIG1fdmFsdWUsIEFyZzo6cmVzQ29uZChNYWNy
b0Fzc2VtYmxlcjo6WmVybyksIHN1Y2Nlc3NCb29sUmVzdWx0VG1wLCBzdWNjZXNzQm9vbFJlc3Vs
dFRtcCk7CisgICAgICAgICAgICAgICAgc3RvcmVCbG9jay0+c2V0U3VjY2Vzc29ycyhzdWNjZXNz
QmxvY2ssIHJlbG9vcEJsb2NrKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBz
dWNjZXNzQmxvY2stPmFwcGVuZChNb3ZlLCBtX3ZhbHVlLCBBcmc6OmltbSghaW52ZXJ0KSwgYm9v
bFJlc3VsdFRtcCk7CisgICAgICAgICAgICAgICAgc3VjY2Vzc0Jsb2NrLT5hcHBlbmQoQWlyOjpK
dW1wLCBtX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzQmxvY2stPnNldFN1Y2Nlc3Nv
cnMoZG9uZUJsb2NrKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYg
KCFpbnZlcnQpCisgICAgICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChYb3IzMiwg
bV92YWx1ZSwgQXJnOjpiaXRJbW0oMSksIGJvb2xSZXN1bHRUbXAsIGJvb2xSZXN1bHRUbXApOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPmFwcGVuZChBaXI6
Okp1bXAsIG1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN0b3JlQmxvY2stPnNldFN1Y2Nlc3Nv
cnMoZG9uZUJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZmFpbEJsb2NrLT5hcHBlbmQoTW92ZSwgbV92YWx1ZSwgQXJnOjppbW0oaW52ZXJ0KSwgYm9vbFJl
c3VsdFRtcCk7CisgICAgICAgICAgICBmYWlsQmxvY2stPmFwcGVuZChBaXI6Okp1bXAsIG1fdmFs
dWUpOworICAgICAgICAgICAgZmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGRvbmVCbG9jayk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1N0cm9uZyAmJiBoYXNGZW5jZSkgewor
ICAgICAgICAgICAgVG1wIHRtcCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgc3Ry
b25nRmFpbEJsb2NrLT5hcHBlbmQoc3RvcmVDb25kT3Bjb2RlKHdpZHRoLCBhdG9taWMtPmhhc0Zl
bmNlKCkpLCBtX3ZhbHVlLCB2YWx1ZVJlc3VsdFRtcCwgYWRkcmVzcywgdG1wKTsKKyAgICAgICAg
ICAgIHN0cm9uZ0ZhaWxCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwgQXJnOjpy
ZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgdG1wLCB0bXApOworICAgICAgICAgICAgc3Ry
b25nRmFpbEJsb2NrLT5zZXRTdWNjZXNzb3JzKGZhaWx1cmUsIHJlbG9vcEJsb2NrKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBib29sIGFwcGVuZFZvaWRBdG9taWMoQWlyOjpPcGNvZGUg
YXRvbWljT3Bjb2RlKQorICAgIHsKKyAgICAgICAgaWYgKG1fdXNlQ291bnRzLm51bVVzZXMobV92
YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBBcmcg
YWRkcmVzcyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNWYWxpZEZv
cm0oYXRvbWljT3Bjb2RlLCBBcmc6OkltbSwgYWRkcmVzcy5raW5kKCkpICYmIGltbShtX3ZhbHVl
LT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgIGFwcGVuZChhdG9taWNPcGNvZGUsIGltbShtX3Zh
bHVlLT5jaGlsZCgwKSksIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc1ZhbGlkRm9ybShhdG9taWNPcGNvZGUsIEFy
Zzo6VG1wLCBhZGRyZXNzLmtpbmQoKSkpIHsKKyAgICAgICAgICAgIGFwcGVuZChhdG9taWNPcGNv
ZGUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhcHBlbmRHZW5lcmFsQXRvbWljKEFpcjo6T3Bjb2RlIG9wY29kZSwg
Q29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmUpCisgICAgeworICAg
ICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7Cisg
ICAgICAgIAorICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIobV92YWx1ZSk7CisgICAgICAgIFRt
cCBvbGRWYWx1ZSA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICBUbXAgbmV3VmFsdWUgPSBv
cGNvZGUgPT0gQWlyOjpOb3AgPyB0bXAoYXRvbWljLT5jaGlsZCgwKSkgOiBtX2NvZGUubmV3VG1w
KEdQKTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIG5lZWQgYSBDQVMgbG9vcCBvciBhIExML1ND
IGxvb3AuIFVzaW5nIHByZXBhcmUvYXR0ZW1wdCBqYXJnb24sIHdlIHdhbnQ6CisgICAgICAgIC8v
CisgICAgICAgIC8vIEJsb2NrICNyZWxvb3A6CisgICAgICAgIC8vICAgICBQcmVwYXJlCisgICAg
ICAgIC8vICAgICBvcGNvZGUKKyAgICAgICAgLy8gICAgIEF0dGVtcHQKKyAgICAgICAgLy8gICBT
dWNjZXNzb3JzOiBUaGVuOiNkb25lLCBFbHNlOiNyZWxvb3AKKyAgICAgICAgLy8gQmxvY2sgI2Rv
bmU6CisgICAgICAgIC8vICAgICBNb3ZlIG9sZFZhbHVlLCByZXN1bHQKKyAgICAgICAgCisgICAg
ICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBvbGRWYWx1ZSwg
dG1wKGF0b21pYykpOworICAgICAgICAKKyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiByZWxvb3BC
bG9jayA9IG5ld0Jsb2NrKCk7CisgICAgICAgIEFpcjo6QmFzaWNCbG9jayogYmVnaW5CbG9jazsK
KyAgICAgICAgQWlyOjpCYXNpY0Jsb2NrKiBkb25lQmxvY2s7CisgICAgICAgIHNwbGl0QmxvY2so
YmVnaW5CbG9jaywgZG9uZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChBaXI6Okp1
bXApOworICAgICAgICBiZWdpbkJsb2NrLT5zZXRTdWNjZXNzb3JzKHJlbG9vcEJsb2NrKTsKKyAg
ICAgICAgCisgICAgICAgIEFpcjo6T3Bjb2RlIHByZXBhcmVPcGNvZGU7CisgICAgICAgIGlmIChp
c1g4NigpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGF0b21pYy0+YWNjZXNzV2lkdGgoKSkgewor
ICAgICAgICAgICAgY2FzZSBXaWR0aDg6CisgICAgICAgICAgICAgICAgcHJlcGFyZU9wY29kZSA9
IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTG9hZDE2
U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgV2lkdGgzMjoKKyAgICAgICAgICAgICAgICBwcmVwYXJlT3Bjb2RlID0gTW92ZTMyOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgorICAgICAgICAg
ICAgICAgIHByZXBhcmVPcGNvZGUgPSBNb3ZlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNBUk02NCgpKTsKKyAgICAgICAgICAgIHByZXBhcmVPcGNvZGUgPSBsb2FkTGlua09wY29kZShh
dG9taWMtPmFjY2Vzc1dpZHRoKCksIGF0b21pYy0+aGFzRmVuY2UoKSk7CisgICAgICAgIH0KKyAg
ICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChwcmVwYXJlT3Bjb2RlLCBtX3ZhbHVlLCBhZGRyZXNz
LCBvbGRWYWx1ZSk7CisgICAgICAgIAorICAgICAgICBpZiAob3Bjb2RlICE9IEFpcjo6Tm9wKSB7
CisgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZXZlciBoYXZlIHRvIHdyaXRlIHRoaXMgYWdh
aW4sIHdlIG5lZWQgdG8gZmluZCBhIHdheSB0byBzaGFyZSB0aGUgY29kZSB3aXRoCisgICAgICAg
ICAgICAvLyBhcHBlbmRCaW5PcC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkyNDkKKyAgICAgICAgICAgIGlmIChjb21tdXRhdGl2aXR5
ID09IENvbW11dGF0aXZlICYmIGltbShhdG9taWMtPmNoaWxkKDApKSAmJiBpc1ZhbGlkRm9ybShv
cGNvZGUsIEFyZzo6SW1tLCBBcmc6OlRtcCwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgIHJl
bG9vcEJsb2NrLT5hcHBlbmQob3Bjb2RlLCBtX3ZhbHVlLCBpbW0oYXRvbWljLT5jaGlsZCgwKSks
IG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChpbW0oYXRvbWljLT5j
aGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6
VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1
ZSwgb2xkVmFsdWUsIGltbShhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUpOworICAgICAgICAg
ICAgZWxzZSBpZiAoY29tbXV0YXRpdml0eSA9PSBDb21tdXRhdGl2ZSAmJiBiaXRJbW0oYXRvbWlj
LT5jaGlsZCgwKSkgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkJpdEltbSwgQXJnOjpUbXAs
IEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwg
bV92YWx1ZSwgYml0SW1tKGF0b21pYy0+Y2hpbGQoMCkpLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwor
ICAgICAgICAgICAgZWxzZSBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpU
bXAsIEFyZzo6VG1wKSkKKyAgICAgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29k
ZSwgbV92YWx1ZSwgb2xkVmFsdWUsIHRtcChhdG9taWMtPmNoaWxkKDApKSwgbmV3VmFsdWUpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVsb29wQmxvY2stPmFwcGVuZChy
ZWxheGVkTW92ZUZvclR5cGUoYXRvbWljLT50eXBlKCkpLCBtX3ZhbHVlLCBvbGRWYWx1ZSwgbmV3
VmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChpbW0oYXRvbWljLT5jaGlsZCgwKSkgJiYgaXNW
YWxpZEZvcm0ob3Bjb2RlLCBBcmc6OkltbSwgQXJnOjpUbXApKQorICAgICAgICAgICAgICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgaW1tKGF0b21pYy0+Y2hpbGQo
MCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICByZWxvb3BCbG9jay0+YXBwZW5kKG9wY29kZSwgbV92YWx1ZSwgdG1wKGF0b21pYy0+Y2hpbGQo
MCkpLCBuZXdWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAo
aXNYODYoKSkgeworICAgICAgICAgICAgQWlyOjpPcGNvZGUgY2FzT3Bjb2RlID0gT1BDT0RFX0ZP
Ul9XSURUSChCcmFuY2hBdG9taWNTdHJvbmdDQVMsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSk7Cisg
ICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMt
PnR5cGUoKSksIG1fdmFsdWUsIG9sZFZhbHVlLCBtX2VheCk7CisgICAgICAgICAgICByZWxvb3BC
bG9jay0+YXBwZW5kKGNhc09wY29kZSwgbV92YWx1ZSwgQXJnOjpzdGF0dXNDb25kKE1hY3JvQXNz
ZW1ibGVyOjpTdWNjZXNzKSwgbV9lYXgsIG5ld1ZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzQVJNNjQoKSk7CisgICAgICAgICAg
ICBUbXAgYm9vbFJlc3VsdCA9IG1fY29kZS5uZXdUbXAoR1ApOworICAgICAgICAgICAgcmVsb29w
QmxvY2stPmFwcGVuZChzdG9yZUNvbmRPcGNvZGUoYXRvbWljLT5hY2Nlc3NXaWR0aCgpLCBhdG9t
aWMtPmhhc0ZlbmNlKCkpLCBtX3ZhbHVlLCBuZXdWYWx1ZSwgYWRkcmVzcywgYm9vbFJlc3VsdCk7
CisgICAgICAgICAgICByZWxvb3BCbG9jay0+YXBwZW5kKEJyYW5jaFRlc3QzMiwgbV92YWx1ZSwg
QXJnOjpyZXNDb25kKE1hY3JvQXNzZW1ibGVyOjpaZXJvKSwgYm9vbFJlc3VsdCwgYm9vbFJlc3Vs
dCk7CisgICAgICAgIH0KKyAgICAgICAgcmVsb29wQmxvY2stPnNldFN1Y2Nlc3NvcnMoZG9uZUJs
b2NrLCByZWxvb3BCbG9jayk7CisgICAgfQorICAgIAogICAgIHZvaWQgbG93ZXIoKQogICAgIHsK
ICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewpAQCAtMTk3MCwzMCArMjM4Miw1
MCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2Fk
OiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG1vdmVGb3JUeXBl
KG1fdmFsdWUtPnR5cGUoKSksIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkp
OworICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZh
bHVlPigpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gQWlyOjpPb3BzOworICAg
ICAgICAgICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgICAgIHN3aXRj
aCAobWVtb3J5LT50eXBlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEludDMyOgorICAgICAg
ICAgICAgICAgICAgICBvcGNvZGUgPSBMb2FkQWNxMzI7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgSW50NjQ6CisgICAgICAgICAgICAgICAgICAgIG9w
Y29kZSA9IExvYWRBY3E2NDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgb3Bjb2RlID0gbW92ZUZvclR5cGUo
bWVtb3J5LT50eXBlKCkpOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVl
LCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2Fk
OFM6IHsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDhTaWdu
ZWRFeHRlbmRUbzMyLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAg
ICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigp
LT5oYXNGZW5jZSgpID8gTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIDogTG9hZDhTaWduZWRFeHRl
bmRUbzMyOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUs
IG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkOFo6IHsKLSAgICAgICAgICAgIGFw
cGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgTG9hZDgsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSks
IHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1
ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOCA6IExvYWQ4OworICAg
ICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZTOiB7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBp
bmdJbnN0KG1fdmFsdWUsIExvYWQxNlNpZ25lZEV4dGVuZFRvMzIsIG1fdmFsdWUsIGFkZHIobV92
YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0g
bV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxMTZTaWduZWRF
eHRlbmRUbzMyIDogTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGFwcGVuZCh0
cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAo
bV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNh
c2UgTG9hZDE2WjogewotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBM
b2FkMTYsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAg
ICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0Zl
bmNlKCkgPyBMb2FkQWNxMTYgOiBMb2FkMTY7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJ
bnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUp
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQorICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTGVhKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjA5MSw3ICsyNTIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGlmIChtX3ZhbHVlLT5pc0NoaWxsKCkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNBUk02NCgpKTsKICAgICAgICAgICAgIGlmIChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYm
IGlzWDg2KCkpIHsKLSAgICAgICAgICAgICAgICBsb3dlclg4NkRpdihEaXYpOworICAgICAgICAg
ICAgICAgIGFwcGVuZFg4NkRpdihEaXYpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVCghaXNYODYoKSB8fCBpc0Zsb2F0KG1fdmFsdWUt
PnR5cGUoKSkpOwpAQCAtMjEwMiw3ICsyNTM0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNl
IFVEaXY6IHsKICAgICAgICAgICAgIGlmIChpc0ludChtX3ZhbHVlLT50eXBlKCkpICYmIGlzWDg2
KCkpIHsKLSAgICAgICAgICAgICAgICBsb3dlclg4NlVEaXYoVURpdik7CisgICAgICAgICAgICAg
ICAgYXBwZW5kWDg2VURpdihVRGl2KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKQEAgLTIxMTYsMTMgKzI1NDgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBN
b2Q6IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzWDg2KCkpOwogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fdmFsdWUtPmlzQ2hpbGwoKSk7Ci0gICAgICAgICAgICBsb3dlclg4
NkRpdihNb2QpOworICAgICAgICAgICAgYXBwZW5kWDg2RGl2KE1vZCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFVNb2Q6IHsKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGlzWDg2KCkpOwotICAgICAgICAgICAgbG93ZXJYODZVRGl2KFVNb2QpOwor
ICAgICAgICAgICAgYXBwZW5kWDg2VURpdihVTW9kKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0yMTYxLDEwICsyNTkzLDI4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgYXBwZW5kVW5PcDxOb3QzMiwgTm90NjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IC8vIFRoaXMgcGF0dGVybiBpcyBzdXBlciB1c2VmdWwgb24gYm90aCB4ODYgYW5kIEFSTTY0LCBz
aW5jZSB0aGUgaW52ZXJzaW9uIG9mIHRoZSBDQVMgcmVzdWx0CisgICAgICAgICAgICAvLyBjYW4g
YmUgZG9uZSB3aXRoIHplcm8gY29zdCBvbiB4ODYgKGp1c3QgZmxpcCB0aGUgc2V0IGZyb20gRSB0
byBORSkgYW5kIGl0J3MgYSBwcm9ncmVzc2lvbgorICAgICAgICAgICAgLy8gb24gQVJNNjQgKHNp
bmNlIFNUWCByZXR1cm5zIDAgb24gc3VjY2Vzcywgc28gb3JkaW5hcmlseSB3ZSBoYXZlIHRvIGZs
aXAgaXQpLgorICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludCgxKQorICAg
ICAgICAgICAgICAgICYmIGlzQXRvbWljQ0FTKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSkK
KyAgICAgICAgICAgICAgICAmJiBjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgewor
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAg
ICAgICAgICAgICBhcHBlbmRDQVMobV92YWx1ZS0+Y2hpbGQoMCksIHRydWUpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAg
YXBwZW5kQmluT3A8WG9yMzIsIFhvcjY0LCBYb3JEb3VibGUsIFhvckZsb2F0LCBDb21tdXRhdGl2
ZT4oCiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgRGVwZW5kOiB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0FSTTY0KCkpOwor
ICAgICAgICAgICAgYXBwZW5kVW5PcDxEZXBlbmQzMiwgRGVwZW5kNjQ+KG1fdmFsdWUtPmNoaWxk
KDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU2hs
OiB7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50MzIoMSkpIHsKQEAg
LTIyNjUsNyArMjcxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBhcHBlbmRTdG9yZSh2YWx1ZVRvU3RvcmUsIGFkZHIobV92YWx1
ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwgYWRkcihtX3ZhbHVlKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjI4Niw3ICsyNzM2LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFpcjo6U3RvcmU4LCB2YWx1ZVRv
U3RvcmUsIGFkZHIobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kU3RvcmUobV92YWx1ZSwg
YWRkcihtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjMw
Nyw3ICsyNzU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZFN0b3JlKEFp
cjo6U3RvcmUxNiwgdmFsdWVUb1N0b3JlLCBhZGRyKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIGFw
cGVuZFN0b3JlKG1fdmFsdWUsIGFkZHIobV92YWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTI0MTUsNyArMjg2NSwyNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBFcXVhbDoKLSAgICAgICAgY2FzZSBOb3RFcXVhbDoKKyAgICAgICAgY2Fz
ZSBOb3RFcXVhbDogeworICAgICAgICAgICAgLy8gRklYTUU6IFRlYWNoIHRoaXMgdG8gbWF0Y2gg
cGF0dGVybnMgdGhhdCBhcmlzZSBmcm9tIHN1YndpZHRoIENBUy4gVGhlIENBUydzIHJlc3VsdCBo
YXMgdG8KKyAgICAgICAgICAgIC8vIGJlIGVpdGhlciB6ZXJvLSBvciBzaWduLWV4dGVuZGVkLCBh
bmQgdGhlIHZhbHVlIGl0J3MgY29tcGFyZWQgdG8gc2hvdWxkIGFsc28gYmUgemVyby0gb3IKKyAg
ICAgICAgICAgIC8vIHNpZ24tZXh0ZW5kZWQgaW4gYSBtYXRjaGluZyB3YXkuIEl0J3Mgbm90IHN1
cGVyIGNsZWFyIHRoYXQgdGhpcyBpcyB2ZXJ5IHByb2ZpdGFibGUuCisgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MjUwCisgICAgICAgICAg
ICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0cm9uZ0NBUworICAg
ICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+aXND
YW5vbmljYWxXaWR0aCgpCisgICAgICAgICAgICAgICAgJiYgbV92YWx1ZS0+Y2hpbGQoMCktPmNo
aWxkKDApID09IG1fdmFsdWUtPmNoaWxkKDEpCisgICAgICAgICAgICAgICAgJiYgY2FuQmVJbnRl
cm5hbChtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fbG9j
a2VkLmNvbnRhaW5zKG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKSkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMobV92YWx1ZS0+Y2hpbGQoMSkpKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtX3ZhbHVlLT5jaGls
ZCgwKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQ0FTKG1fdmFsdWUtPmNoaWxkKDApLCBtX3Zh
bHVlLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbV9pbnN0cy5sYXN0KCku
YXBwZW5kKGNyZWF0ZUNvbXBhcmUobV92YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMZXNzVGhhbjoKICAgICAgICAgY2Fz
ZSBHcmVhdGVyVGhhbjoKICAgICAgICAgY2FzZSBMZXNzRXF1YWw6CkBAIC0yNDQwLDYgKzI5MTAs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbmZpZy5tb3ZlQ29uZGl0aW9uYWxseUZs
b2F0ID0gTW92ZUNvbmRpdGlvbmFsbHlGbG9hdDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IGl0J3Mgbm90IG9idmlvdXMgdGhhdCB0aGVzZSBhcmUgcGFy
dGljdWxhcmx5IGVmZmljaWVudC4KKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MjUxCiAgICAgICAgICAgICAgICAgY29uZmlnLm1v
dmVDb25kaXRpb25hbGx5MzIgPSBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTMyOwogICAgICAgICAg
ICAgICAgIGNvbmZpZy5tb3ZlQ29uZGl0aW9uYWxseTY0ID0gTW92ZURvdWJsZUNvbmRpdGlvbmFs
bHk2NDsKICAgICAgICAgICAgICAgICBjb25maWcubW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIgPSBN
b3ZlRG91YmxlQ29uZGl0aW9uYWxseVRlc3QzMjsKQEAgLTI3MjYsNiArMzE5Nyw0NiBAQCBwcml2
YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBCcmFuY2g6IHsKKyAgICAgICAgICAgIGlm
IChjYW5CZUludGVybmFsKG1fdmFsdWUtPmNoaWxkKDApKSkgeworICAgICAgICAgICAgICAgIFZh
bHVlKiBicmFuY2hDaGlsZCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIHN3
aXRjaCAoYnJhbmNoQ2hpbGQtPm9wY29kZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBBdG9t
aWNXZWFrQ0FTOgorICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChicmFuY2hDaGls
ZCk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZCwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICAgICAgICAgICAgICAvLyBB
IGJyYW5jaCBpcyBhIGNvbXBhcmlzb24gdG8gemVyby4KKyAgICAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFRlYWNoIHRoaXMgdG8gbWF0Y2ggcGF0dGVybnMgdGhhdCBhcmlzZSBmcm9tIHN1Yndp
ZHRoIENBUy4KKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2OTI1MAorICAgICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hp
bGQtPmNoaWxkKDApLT5pc0ludCgwKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgYnJhbmNo
Q2hpbGQtPmFzPEF0b21pY1ZhbHVlPigpLT5pc0Nhbm9uaWNhbFdpZHRoKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGJyYW5jaENoaWxkKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZCwgdHJ1ZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhc2Ug
RXF1YWw6CisgICAgICAgICAgICAgICAgY2FzZSBOb3RFcXVhbDoKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFRlYWNoIHRoaXMgdG8gbWF0Y2ggcGF0dGVybnMgdGhhdCBhcmlzZSBmcm9t
IHN1YndpZHRoIENBUy4KKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTI1MAorICAgICAgICAgICAgICAgICAgICBpZiAoYnJh
bmNoQ2hpbGQtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBdG9taWNTdHJvbmdDQVMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICYmIGJyYW5jaENoaWxkLT5jaGlsZCgwKS0+YXM8QXRvbWljVmFsdWU+
KCktPmlzQ2Fub25pY2FsV2lkdGgoKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2FuQmVJ
bnRlcm5hbChicmFuY2hDaGlsZC0+Y2hpbGQoMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAm
JiBicmFuY2hDaGlsZC0+Y2hpbGQoMCktPmNoaWxkKDApID09IGJyYW5jaENoaWxkLT5jaGlsZCgx
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQp
OworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoYnJhbmNoQ2hpbGQtPmNo
aWxkKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENBUyhicmFuY2hDaGlsZC0+
Y2hpbGQoMCksIGJyYW5jaENoaWxkLT5vcGNvZGUoKSA9PSBOb3RFcXVhbCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBw
ZW5kKGNyZWF0ZUJyYW5jaChtX3ZhbHVlLT5jaGlsZCgwKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0yNzgzLDcgKzMyOTQsODEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGFwcGVuZChBaXI6OkVudHJ5U3dpdGNoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgY2Fz
ZSBBdG9taWNTdHJvbmdDQVM6IHsKKyAgICAgICAgICAgIGFwcGVuZENBUyhtX3ZhbHVlLCBmYWxz
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEF0b21pY1hjaGdBZGQ6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMg
PSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIGlmIChhcHBlbmRWb2lk
QXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQWRkLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkp
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFy
ZyBhZGRyZXNzID0gYWRkcihhdG9taWMpOworICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2Rl
ID0gT1BDT0RFX0ZPUl9XSURUSChBdG9taWNYY2hnQWRkLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkp
OworICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIGFkZHJlc3Mu
a2luZCgpKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUoYXRv
bWljLT50eXBlKCkpLCB0bXAoYXRvbWljLT5jaGlsZCgwKSksIHRtcChhdG9taWMpKTsKKyAgICAg
ICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoYXRvbWljKSwgYWRkcmVzcyk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhcHBlbmRHZW5l
cmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKEFkZCwgYXRvbWljLT5hY2Nlc3NX
aWR0aCgpKSwgQ29tbXV0YXRpdmUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOiB7CisgICAgICAgICAgICBBdG9taWNWYWx1ZSog
YXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CisgICAgICAgICAgICBpZiAoYXBw
ZW5kVm9pZEF0b21pYyhPUENPREVfRk9SX1dJRFRIKEF0b21pY1N1YiwgYXRvbWljLT5hY2Nlc3NX
aWR0aCgpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBhcHBlbmRHZW5lcmFsQXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKFN1Yiwg
YXRvbWljLT5hY2Nlc3NXaWR0aCgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6IHsKKyAgICAgICAgICAg
IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAg
ICAgICAgIGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljQW5kLCBh
dG9taWMtPmFjY2Vzc1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklD
QUxfV0lEVEgoQW5kLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpLCBDb21tdXRhdGl2ZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0
b21pY1hjaGdPcjogeworICAgICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUt
PmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAgICAgaWYgKGFwcGVuZFZvaWRBdG9taWMoT1BD
T0RFX0ZPUl9XSURUSChBdG9taWNPciwgYXRvbWljLT5hY2Nlc3NXaWR0aCgpKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBhcHBlbmRHZW5lcmFs
QXRvbWljKE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKE9yLCBhdG9taWMtPmFjY2Vzc1dpZHRo
KCkpLCBDb21tdXRhdGl2ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hjaGdYb3I6IHsKKyAgICAgICAgICAgIEF0b21p
Y1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgICAg
IGlmIChhcHBlbmRWb2lkQXRvbWljKE9QQ09ERV9GT1JfV0lEVEgoQXRvbWljWG9yLCBhdG9taWMt
PmFjY2Vzc1dpZHRoKCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9taWMoT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lE
VEgoWG9yLCBhdG9taWMtPmFjY2Vzc1dpZHRoKCkpLCBDb21tdXRhdGl2ZSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEF0b21pY1hj
aGc6IHsKKyAgICAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9t
aWNWYWx1ZT4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRy
KGF0b21pYyk7CisgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBPUENPREVfRk9SX1dJ
RFRIKEF0b21pY1hjaGcsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSk7CisgICAgICAgICAgICBpZiAo
aXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgYWRkcmVzcy5raW5kKCkpKSB7CisgICAgICAg
ICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShhdG9taWMtPnR5cGUoKSksIHRtcChh
dG9taWMtPmNoaWxkKDApKSwgdG1wKGF0b21pYykpOworICAgICAgICAgICAgICAgIGFwcGVuZChv
cGNvZGUsIHRtcChhdG9taWMpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFwcGVuZEdlbmVyYWxBdG9t
aWMoQWlyOjpOb3ApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAg
ICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0y
NzkxLDY0ICszMzc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZGF0YUxvZygiRkFUQUw6IGNvdWxk
IG5vdCBsb3dlciAiLCBkZWVwRHVtcChtX3Byb2NlZHVyZSwgbV92YWx1ZSksICJcbiIpOwogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLQotICAgIHZvaWQgbG93
ZXJYODZEaXYoQjM6Ok9wY29kZSBvcCkKLSAgICB7Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82
NCkKLSAgICAgICAgVG1wIGVheCA9IFRtcChYODZSZWdpc3RlcnM6OmVheCk7Ci0gICAgICAgIFRt
cCBlZHggPSBUbXAoWDg2UmVnaXN0ZXJzOjplZHgpOwotCi0gICAgICAgIEFpcjo6T3Bjb2RlIGNv
bnZlcnRUb0RvdWJsZVdvcmQ7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKLSAgICAgICAgc3dp
dGNoIChtX3ZhbHVlLT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBJbnQzMjoKLSAgICAgICAgICAg
IGNvbnZlcnRUb0RvdWJsZVdvcmQgPSBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzI7Ci0gICAgICAg
ICAgICBkaXYgPSBYODZEaXYzMjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIElu
dDY0OgotICAgICAgICAgICAgY29udmVydFRvRG91YmxlV29yZCA9IFg4NkNvbnZlcnRUb1F1YWRX
b3JkNjQ7Ci0gICAgICAgICAgICBkaXYgPSBYODZEaXY2NDsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChvcCA9
PSBEaXYgfHwgb3AgPT0gTW9kKTsKLSAgICAgICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHJl
c3VsdCA9IG9wID09IERpdiA/IFg4NlJlZ2lzdGVyczo6ZWF4IDogWDg2UmVnaXN0ZXJzOjplZHg7
Ci0KLSAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIGVheCk7Ci0g
ICAgICAgIGFwcGVuZChjb252ZXJ0VG9Eb3VibGVXb3JkLCBlYXgsIGVkeCk7Ci0gICAgICAgIGFw
cGVuZChkaXYsIGVheCwgZWR4LCB0bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBw
ZW5kKE1vdmUsIFRtcChyZXN1bHQpLCB0bXAobV92YWx1ZSkpOwotCi0jZWxzZQotICAgICAgICBV
TlVTRURfUEFSQU0ob3ApOwotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSNl
bmRpZgotICAgIH0KLQotICAgIHZvaWQgbG93ZXJYODZVRGl2KEIzOjpPcGNvZGUgb3ApCi0gICAg
ewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgICAgIFRtcCBlYXggPSBUbXAoWDg2
UmVnaXN0ZXJzOjplYXgpOwotICAgICAgICBUbXAgZWR4ID0gVG1wKFg4NlJlZ2lzdGVyczo6ZWR4
KTsKLQotICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIg
PyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwg
b3AgPT0gVU1vZCk7Ci0gICAgICAgIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCByZXN1bHQgPSBv
cCA9PSBVRGl2ID8gWDg2UmVnaXN0ZXJzOjplYXggOiBYODZSZWdpc3RlcnM6OmVkeDsKLQotICAg
ICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgZWF4KTsKLSAgICAgICAg
YXBwZW5kKFhvcjY0LCBlZHgsIGVkeCk7Ci0gICAgICAgIGFwcGVuZChkaXYsIGVheCwgZWR4LCB0
bXAobV92YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChyZXN1bHQp
LCB0bXAobV92YWx1ZSkpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICAg
ICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYKLSAgICB9Ci0KKyAgICAKICAg
ICBJbmRleFNldDxWYWx1ZT4gbV9sb2NrZWQ7IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCB3aWxs
IGhhdmUgbm8gVG1wIGluIEFpci4KICAgICBJbmRleE1hcDxWYWx1ZSwgVG1wPiBtX3ZhbHVlVG9U
bXA7IC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCBtdXN0IGhhdmUgYSBUbXAgaW4gQWlyLiBXZSBz
YXkgdGhhdCBhIFZhbHVlKiB3aXRoIGEgbm9uLW51bGwgVG1wIGlzICJwaW5uZWQiLgogICAgIElu
ZGV4TWFwPFZhbHVlLCBUbXA+IG1fcGhpVG9UbXA7IC8vIEVhY2ggUGhpIGdldHMgaXRzIG93biBU
bXAuCkBAIC0yODYzLDcgKzMzOTEsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFZlY3RvcjxJ
bnN0LCA0Pj4gbV9pbnN0czsKICAgICBWZWN0b3I8SW5zdD4gbV9wcm9sb2d1ZTsKLQorICAgIAog
ICAgIEIzOjpCYXNpY0Jsb2NrKiBtX2Jsb2NrOwogICAgIGJvb2wgbV9pc1JhcmU7CiAgICAgdW5z
aWduZWQgbV9pbmRleDsKQEAgLTI4NzQsNiArMzQwMiwxMiBAQCBwcml2YXRlOgogCiAgICAgUHJv
Y2VkdXJlJiBtX3Byb2NlZHVyZTsKICAgICBDb2RlJiBtX2NvZGU7CisKKyAgICBBaXI6OkJsb2Nr
SW5zZXJ0aW9uU2V0IG1fYmxvY2tJbnNlcnRpb25TZXQ7CisKKyAgICBUbXAgbV9lYXg7CisgICAg
VG1wIG1fZWN4OworICAgIFRtcCBtX2VkeDsKIH07CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFj
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuaAkocmV2aXNpb24g
MjEzNjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzIsNyArMzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsKIGNsYXNzIFByb2NlZHVyZTsKIG5hbWVzcGFjZSBBaXIgeyBjbGFzcyBDb2RlOyB9CiAKLS8v
IFRoaXMgbG93ZXJzIHRoZSBjdXJyZW50IEIzIHByb2NlZHVyZSB0byBhbiBBaXIgY29kZS4KKy8v
IFRoaXMgbG93ZXJzIHRoZSBjdXJyZW50IEIzIHByb2NlZHVyZSB0byBhbiBBaXIgY29kZS4gTm90
ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGF0IHRoZSBwcm9jZWR1cmUgaXMgaW4KKy8vIHF1aXJrcyBt
b2RlLCBidXQgaXQgZG9lcyBub3QgYXNzZXJ0IHRoaXMsIHRvIHNpbXBsaWZ5IGhvdyB3ZSB3cml0
ZSB0ZXN0cy4KIAogSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBsb3dlclRvQWlyKFByb2NlZHVyZSYp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCShy
ZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDM2ICsyOCwzNyBAQAogCiAjaWYgRU5BQkxFKEIz
X0pJVCkKIAorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCisKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgewogCiBNZW1vcnlWYWx1ZTo6fk1lbW9yeVZhbHVlKCkKIHsKIH0K
IAotc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNvbnN0Citib29sIE1lbW9y
eVZhbHVlOjppc0xlZ2FsT2Zmc2V0KGludDY0X3Qgb2Zmc2V0KSBjb25zdAogewotICAgIHN3aXRj
aCAob3Bjb2RlKCkpIHsKLSAgICBjYXNlIExvYWQ4WjoKLSAgICBjYXNlIExvYWQ4UzoKLSAgICBj
YXNlIFN0b3JlODoKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgY2FzZSBMb2FkMTZaOgotICAgIGNh
c2UgTG9hZDE2UzoKLSAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIHJldHVybiAyOwotICAgIGNh
c2UgTG9hZDoKLSAgICAgICAgcmV0dXJuIHNpemVvZlR5cGUodHlwZSgpKTsKLSAgICBjYXNlIFN0
b3JlOgotICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZShjaGlsZCgwKS0+dHlwZSgpKTsKLSAgICBk
ZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9CisgICAgcmV0dXJuIEIzOjppc1JlcHJlc2VudGFibGVBczxpbnQzMl90
PihvZmZzZXQpICYmIGlzTGVnYWxPZmZzZXQoc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSk7
Cit9CisKK1R5cGUgTWVtb3J5VmFsdWU6OmFjY2Vzc1R5cGUoKSBjb25zdAoreworICAgIGlmIChp
c0xvYWQoKSkKKyAgICAgICAgcmV0dXJuIHR5cGUoKTsKKyAgICAvLyBUaGlzIGhhcHBlbnMgdG8g
d29yayBmb3IgYXRvbWljcywgdG9vLiBUaGF0J3Mgd2h5IEF0b21pY1ZhbHVlIGRvZXMgbm90IG5l
ZWQgdG8gb3ZlcnJpZGUgdGhpcy4KKyAgICByZXR1cm4gY2hpbGQoMCktPnR5cGUoKTsKIH0KIAot
V2lkdGggTWVtb3J5VmFsdWU6OmFjY2Vzc1dpZHRoKCkgY29uc3QKK0JhbmsgTWVtb3J5VmFsdWU6
OmFjY2Vzc0JhbmsoKSBjb25zdAogewotICAgIHJldHVybiB3aWR0aEZvckJ5dGVzKGFjY2Vzc0J5
dGVTaXplKCkpOworICAgIHJldHVybiBiYW5rRm9yVHlwZShhY2Nlc3NUeXBlKCkpOworfQorCitz
aXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Ynl0ZXMoYWNjZXNzV2lkdGgoKSk7CiB9CiAKIHZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENv
bW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC02NSw4ICs2Niwx
MSBAQCB2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImCiAgICAgaWYgKG1f
b2Zmc2V0KQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJvZmZzZXQgPSAiLCBtX29mZnNldCk7
CiAgICAgaWYgKChpc0xvYWQoKSAmJiBlZmZlY3RzKCkucmVhZHMgIT0gcmFuZ2UoKSkKLSAgICAg
ICAgfHwgKGlzU3RvcmUoKSAmJiBlZmZlY3RzKCkud3JpdGVzICE9IHJhbmdlKCkpKQorICAgICAg
ICB8fCAoaXNTdG9yZSgpICYmIGVmZmVjdHMoKS53cml0ZXMgIT0gcmFuZ2UoKSkKKyAgICAgICAg
fHwgaXNFeG90aWMoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicmFuZ2UgPSAiLCByYW5n
ZSgpKTsKKyAgICBpZiAoaXNFeG90aWMoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZmVu
Y2VSYW5nZSA9ICIsIGZlbmNlUmFuZ2UoKSk7CiB9CiAKIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xv
bmVJbXBsKCkgY29uc3QKQEAgLTc0LDYgKzc4LDYyIEBAIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xv
bmVJbXBsKCkgY29uc3QKICAgICByZXR1cm4gbmV3IE1lbW9yeVZhbHVlKCp0aGlzKTsKIH0KIAor
Ly8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55
IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAorLy8gZGVzY3JpYmVzIHRoZSBy
ZXR1cm5lZCB0eXBlKS4KK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUg
dHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFw
UmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIDogVmFsdWUoQ2hlY2tlZE9w
Y29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQorICAgICwgbV9vZmZzZXQob2Zmc2V0
KQorICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQor
eworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIHN3aXRjaCAoa2luZC5vcGNv
ZGUoKSkgeworICAgICAgICBjYXNlIExvYWQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBMb2FkOFo6CisgICAgICAgIGNhc2UgTG9hZDhTOgorICAgICAgICBjYXNlIExvYWQxNlo6
CisgICAgICAgIGNhc2UgTG9hZDE2UzoKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IEludDMy
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0b3JlODoKKyAgICAgICAgY2Fz
ZSBTdG9yZTE2OgorICAgICAgICBjYXNlIFN0b3JlOgorICAgICAgICAgICAgQVNTRVJUKHR5cGUg
PT0gVm9pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBVc2Ug
dGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KK01l
bW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBw
b2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VS
YW5nZSkKKyAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9m
ZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UpCit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsK
KyAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CisgICAgICAgIGNhc2UgTG9hZDhaOgor
ICAgICAgICBjYXNlIExvYWQ4UzoKKyAgICAgICAgY2FzZSBMb2FkMTZaOgorICAgICAgICBjYXNl
IExvYWQxNlM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBVc2Ug
dGhpcyBmb3JtIGZvciBzdG9yZXMuCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5k
LCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9m
ZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKKyAgICA6IFZhbHVl
KENoZWNrZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpCisgICAg
LCBtX29mZnNldChvZmZzZXQpCisgICAgLCBtX3JhbmdlKHJhbmdlKQorICAgICwgbV9mZW5jZVJh
bmdlKGZlbmNlUmFuZ2UpCit7CisgICAgQVNTRVJUKEIzOjppc1N0b3JlKGtpbmQub3Bjb2RlKCkp
KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNf
SklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCShyZXZp
c2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMjcgKzI3LDg4IEBACiAKICNpZiBFTkFCTEUoQjNfSklU
KQogCisjaW5jbHVkZSAiQWlyQXJnLmgiCisjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAi
QjNIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgewogCi0vLyBGSVhNRTogV2Ugd2FudCB0byBhbGxvdyBmZW5jZWQgbWVtb3J5
IGFjY2Vzc2VzIG9uIEFSTS4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjIzNDkKLQogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWVtb3J5VmFsdWUgOiBwdWJs
aWMgVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGFjY2VwdHMoS2luZCBraW5kKQog
ICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7Ci0gICAgICAgIGNhc2UgTG9h
ZDhaOgotICAgICAgICBjYXNlIExvYWQ4UzoKLSAgICAgICAgY2FzZSBMb2FkMTZaOgotICAgICAg
ICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgY2FzZSBTdG9yZTg6
Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNTdG9yZShLaW5kIGtpbmQp
Ci0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgY2FzZSBT
dG9yZTg6Ci0gICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAgICAgY2FzZSBTdG9yZToKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNMb2FkKEtpbmQg
a2luZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhY2NlcHRzKGtpbmQpICYmICFpc1N0b3JlKGtp
bmQpOworICAgICAgICByZXR1cm4gaXNNZW1vcnlBY2Nlc3Moa2luZC5vcGNvZGUoKSk7CiAgICAg
fQogCiAgICAgfk1lbW9yeVZhbHVlKCk7CiAKICAgICBpbnQzMl90IG9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRPZmZzZXQoaW50MzJfdCBvZmZzZXQpIHsg
bV9vZmZzZXQgPSBvZmZzZXQ7IH0KKyAgICAKKyAgICAvLyBZb3UgZG9uJ3QgaGF2ZSB0byB3b3Jy
eSBhYm91dCB1c2luZyBsZWdhbCBvZmZzZXRzIHVubGVzcyB5b3UndmUgZW50ZXJlZCBxdWlya3Mg
bW9kZS4KKyAgICBib29sIGlzTGVnYWxPZmZzZXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0OworICAg
IGJvb2wgaXNMZWdhbE9mZnNldChpbnQ2NF90IG9mZnNldCkgY29uc3Q7CisgICAgCisgICAgLy8g
QSBuZWNlc3NhcnkgY29uc2VxdWVuY2Ugb2YgTWVtb3J5VmFsdWUgaGF2aW5nIGFuIG9mZnNldCBp
cyB0aGF0IGl0IHBhcnRpY2lwYXRlcyBpbiBpbnN0cnVjdGlvbgorICAgIC8vIHNlbGVjdGlvbi4g
VGhpcyB0ZWxscyB5b3UgaWYgdGhpcyB3aWxsIGdldCBsb3dlcmVkIHRvIHNvbWV0aGluZyB0aGF0
IHJlcXVpcmVzIGFuIG9mZnNldGxlc3MKKyAgICAvLyBhZGRyZXNzLgorICAgIGJvb2wgcmVxdWly
ZXNTaW1wbGVBZGRyKCkgY29uc3Q7CiAKICAgICBjb25zdCBIZWFwUmFuZ2UmIHJhbmdlKCkgY29u
c3QgeyByZXR1cm4gbV9yYW5nZTsgfQogICAgIHZvaWQgc2V0UmFuZ2UoY29uc3QgSGVhcFJhbmdl
JiByYW5nZSkgeyBtX3JhbmdlID0gcmFuZ2U7IH0KKyAgICAKKyAgICAvLyBUaGlzIGlzIGFuIGFs
aWFzIGZvciByYW5nZS4KKyAgICBjb25zdCBIZWFwUmFuZ2UmIGFjY2Vzc1JhbmdlKCkgY29uc3Qg
eyByZXR1cm4gcmFuZ2UoKTsgfQorICAgIHZvaWQgc2V0QWNjZXNzUmFuZ2UoY29uc3QgSGVhcFJh
bmdlJiByYW5nZSkgeyBzZXRSYW5nZShyYW5nZSk7IH0KKyAgICAKKyAgICBjb25zdCBIZWFwUmFu
Z2UmIGZlbmNlUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2ZlbmNlUmFuZ2U7IH0KKyAgICB2b2lk
IHNldEZlbmNlUmFuZ2UoY29uc3QgSGVhcFJhbmdlJiByYW5nZSkgeyBtX2ZlbmNlUmFuZ2UgPSBy
YW5nZTsgfQorCisgICAgYm9vbCBpc1N0b3JlKCkgY29uc3QgeyByZXR1cm4gQjM6OmlzU3RvcmUo
b3Bjb2RlKCkpOyB9CisgICAgYm9vbCBpc0xvYWQoKSBjb25zdCB7IHJldHVybiBCMzo6aXNMb2Fk
KG9wY29kZSgpKTsgfQogCi0gICAgYm9vbCBpc1N0b3JlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ID09IFZvaWQ7IH0KLSAgICBib29sIGlzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSAhPSBW
b2lkOyB9CisgICAgYm9vbCBoYXNGZW5jZSgpIGNvbnN0IHsgcmV0dXJuICEhZmVuY2VSYW5nZSgp
OyB9CisgICAgYm9vbCBpc0V4b3RpYygpIGNvbnN0IHsgcmV0dXJuIGhhc0ZlbmNlKCkgfHwgaXNB
dG9taWMob3Bjb2RlKCkpOyB9CiAKKyAgICBUeXBlIGFjY2Vzc1R5cGUoKSBjb25zdDsKKyAgICBC
YW5rIGFjY2Vzc0JhbmsoKSBjb25zdDsKICAgICBzaXplX3QgYWNjZXNzQnl0ZVNpemUoKSBjb25z
dDsKKyAgICAKICAgICBXaWR0aCBhY2Nlc3NXaWR0aCgpIGNvbnN0OwogCisgICAgYm9vbCBpc0Nh
bm9uaWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gQjM6OmlzQ2Fub25pY2FsV2lkdGgoYWNjZXNz
V2lkdGgoKSk7IH0KKwogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVy
JiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGR1bXBNZXRh
KENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWYWx1
ZSogY2xvbmVJbXBsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmd1bWVudHM+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBraW5k
LCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFu
Z2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlLCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgICAg
ICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgYXJndW1lbnRzLi4u
KQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3JhbmdlKHJhbmdlKQor
ICAgICAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQorICAgIHsKKyAgICB9CisgICAgCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0KKyAgICAKICAgICAvLyBVc2Ug
dGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhl
IExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CiAgICAgLy8gZGVzY3JpYmVzIHRoZSByZXR1
cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2lu
IG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBW
YWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIpCi0gICAgICAg
ICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICAgICAsIG1fcmFuZ2UoSGVhcFJhbmdlOjp0b3AoKSkK
LSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICBzd2l0
Y2ggKGtpbmQub3Bjb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTG9hZDoKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZDhaOgotICAgICAgICAgICAgY2FzZSBM
b2FkOFM6Ci0gICAgICAgICAgICBjYXNlIExvYWQxNlo6Ci0gICAgICAgICAgICBjYXNlIExvYWQx
NlM6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAgICBjYXNlIFN0
b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAgIEFTU0VSVCh0
eXBlID09IFZvaWQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KKyAgICBNZW1vcnlWYWx1ZShLaW5kLCBUeXBlLCBPcmlnaW4sIFZh
bHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBS
YW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkpOwogCiAgICAg
Ly8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxp
ZWQuCi0gICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9p
bnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIElu
dDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKLSAgICB7Ci0gICAgfQorICAgIE1lbW9yeVZh
bHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVh
cFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBI
ZWFwUmFuZ2UoKSk7CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBzdG9yZXMuCi0gICAgTWVt
b3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBw
b2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDApCi0gICAgICAgIDogVmFsdWUoQ2hlY2tlZE9wY29k
ZSwga2luZCwgVm9pZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRlcikKLSAgICAgICAgLCBtX29mZnNl
dChvZmZzZXQpCi0gICAgICAgICwgbV9yYW5nZShIZWFwUmFuZ2U6OnRvcCgpKQotICAgIHsKLSAg
ICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoa2luZC5v
cGNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBTdG9yZTg6Ci0gICAgICAgICAgICBjYXNlIFN0
b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlOgotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQorICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSog
cG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6
OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKKyAgICAKICAgICBp
bnQzMl90IG1fb2Zmc2V0IHsgMCB9OwotICAgIEhlYXBSYW5nZSBtX3JhbmdlOworICAgIEhlYXBS
YW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSBtX2ZlbmNl
UmFuZ2UgeyBIZWFwUmFuZ2UoKSB9OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZUlubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZUlubGluZXMu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1
ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQXJnLmgiCisjaW5jbHVkZSAiQjNBdG9taWNWYWx1
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworaW5saW5lIGJvb2wgTWVt
b3J5VmFsdWU6OmlzTGVnYWxPZmZzZXQoaW50MzJfdCBvZmZzZXQpIGNvbnN0Cit7CisgICAgLy8g
Tk9URTogVGhpcyBpcyBpbmxpbmUgYmVjYXVzZSBpdCBjb25zdGFudC1mb2xkcyB0byB0cnVlIG9u
IHg4NiEKKyAgICAKKyAgICAvLyBTbyBmYXIgb25seSBYODYgYWxsb3dzIGV4b3RpYyBsb2FkcyB0
byBoYXZlIGFuIG9mZnNldC4KKyAgICBpZiAocmVxdWlyZXNTaW1wbGVBZGRyKCkpCisgICAgICAg
IHJldHVybiAhb2Zmc2V0OworICAgIAorICAgIHJldHVybiBBaXI6OkFyZzo6aXNWYWxpZEFkZHJG
b3JtKG9mZnNldCwgYWNjZXNzV2lkdGgoKSk7Cit9CisKK2lubGluZSBib29sIE1lbW9yeVZhbHVl
OjpyZXF1aXJlc1NpbXBsZUFkZHIoKSBjb25zdAoreworICAgIHJldHVybiAhaXNYODYoKSAmJiBp
c0V4b3RpYygpOworfQorCitpbmxpbmUgV2lkdGggTWVtb3J5VmFsdWU6OmFjY2Vzc1dpZHRoKCkg
Y29uc3QKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSgpKSB7CisgICAgY2FzZSBMb2FkOFo6CisgICAg
Y2FzZSBMb2FkOFM6CisgICAgY2FzZSBTdG9yZTg6CisgICAgICAgIHJldHVybiBXaWR0aDg7Cisg
ICAgY2FzZSBMb2FkMTZaOgorICAgIGNhc2UgTG9hZDE2UzoKKyAgICBjYXNlIFN0b3JlMTY6Cisg
ICAgICAgIHJldHVybiBXaWR0aDE2OworICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmV0dXJuIHdp
ZHRoRm9yVHlwZSh0eXBlKCkpOworICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiB3aWR0
aEZvclR5cGUoY2hpbGQoMCktPnR5cGUoKSk7CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAg
IGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNl
IEF0b21pY1hjaGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNY
Y2hnU3ViOgorICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6Cisg
ICAgICAgIHJldHVybiBhczxBdG9taWNWYWx1ZT4oKS0+YWNjZXNzV2lkdGgoKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gV2lkdGg4OworICAgIH0KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNN
b3ZlQ29uc3RhbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNNb3ZlQ29uc3RhbnRzLmNwcAkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMy
LDcgQEAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNEb21p
bmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
QjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKQEAgLTIwMywxMiArMjAzLDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVQb2ludGVyLT5o
YXNJbnRQdHIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludHB0cl90IG9mZnNldCA9IGRlc2lyZWRPZmZzZXQoY2FuZGlkYXRl
UG9pbnRlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQjM6OmlzUmVw
cmVzZW50YWJsZUFzPGludDMyX3Q+KHN0YXRpY19jYXN0PGludDY0X3Q+KG9mZnNldCkpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpBcmc6OmlzVmFsaWRBZGRyRm9ybSgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+
KG9mZnNldCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aEZvckJ5
dGVzKG1lbW9yeVZhbHVlLT5hY2Nlc3NCeXRlU2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gZGVzaXJlZE9mZnNldChjYW5kaWRhdGVQb2lu
dGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9yeVZhbHVl
LT5pc0xlZ2FsT2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChi
ZXN0UG9pbnRlcikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTmF0aXZlVHJh
aXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTmF0aXZlVHJh
aXRzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTmF0aXZl
VHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNCYW5rLmgiCisjaW5jbHVkZSAiQjNUeXBlLmgiCisj
aW5jbHVkZSAiQjNXaWR0aC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBOYXRpdmVUcmFpdHM7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IE5hdGl2ZVRyYWl0czxpbnQ4X3Q+IHsKKyAgICB0eXBlZGVmIGludDMyX3QgQ2Fub25pY2Fs
VHlwZTsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0
IFdpZHRoIHdpZHRoID0gV2lkdGg4OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQz
MjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czx1aW50OF90PiB7CisgICAg
dHlwZWRlZiBpbnQzMl90IENhbm9uaWNhbFR5cGU7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFu
ayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoODsKKyAgICBzdGF0
aWMgY29uc3QgVHlwZSB0eXBlID0gSW50MzI7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRp
dmVUcmFpdHM8aW50MTZfdD4geworICAgIHR5cGVkZWYgaW50MzJfdCBDYW5vbmljYWxUeXBlOwor
ICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBHUDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGgg
d2lkdGggPSBXaWR0aDE2OworICAgIHN0YXRpYyBjb25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRyYWl0czx1aW50MTZfdD4geworICAgIHR5cGVk
ZWYgaW50MzJfdCBDYW5vbmljYWxUeXBlOworICAgIHN0YXRpYyBjb25zdCBCYW5rIGJhbmsgPSBH
UDsKKyAgICBzdGF0aWMgY29uc3QgV2lkdGggd2lkdGggPSBXaWR0aDE2OworICAgIHN0YXRpYyBj
b25zdCBUeXBlIHR5cGUgPSBJbnQzMjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVRy
YWl0czxpbnQzMl90PiB7CisgICAgdHlwZWRlZiBpbnQzMl90IENhbm9uaWNhbFR5cGU7CisgICAg
c3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0
aCA9IFdpZHRoMzI7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRzPHVpbnQzMl90PiB7CisgICAgdHlwZWRlZiBp
bnQzMl90IENhbm9uaWNhbFR5cGU7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEdQOwor
ICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoMzI7CisgICAgc3RhdGljIGNvbnN0
IFR5cGUgdHlwZSA9IEludDMyOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVHJhaXRz
PGludDY0X3Q+IHsKKyAgICB0eXBlZGVmIGludDY0X3QgQ2Fub25pY2FsVHlwZTsKKyAgICBzdGF0
aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAgc3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0g
V2lkdGg2NDsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSB0eXBlID0gSW50NjQ7Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8dWludDY0X3Q+IHsKKyAgICB0eXBlZGVmIGludDY0
X3QgQ2Fub25pY2FsVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgQmFuayBiYW5rID0gR1A7CisgICAg
c3RhdGljIGNvbnN0IFdpZHRoIHdpZHRoID0gV2lkdGg2NDsKKyAgICBzdGF0aWMgY29uc3QgVHlw
ZSB0eXBlID0gSW50NjQ7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVUcmFpdHM8Zmxv
YXQ+IHsKKyAgICB0eXBlZGVmIGZsb2F0IENhbm9uaWNhbFR5cGU7CisgICAgc3RhdGljIGNvbnN0
IEJhbmsgYmFuayA9IEZQOworICAgIHN0YXRpYyBjb25zdCBXaWR0aCB3aWR0aCA9IFdpZHRoMzI7
CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IEZsb2F0OworfTsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgTmF0aXZlVHJhaXRzPGRvdWJsZT4geworICAgIHR5cGVkZWYgZG91YmxlIENhbm9uaWNh
bFR5cGU7CisgICAgc3RhdGljIGNvbnN0IEJhbmsgYmFuayA9IEZQOworICAgIHN0YXRpYyBjb25z
dCBXaWR0aCB3aWR0aCA9IFdpZHRoNjQ7CisgICAgc3RhdGljIGNvbnN0IFR5cGUgdHlwZSA9IERv
dWJsZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxF
KEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCShyZXZp
c2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjgsNiArNjgsMjMgQEAgc3RkOjpvcHRpb25hbDxPcGNvZGU+IGlu
dmVydGVkQ29tcGFyZShPcAogICAgIH0KIH0KIAorT3Bjb2RlIHN0b3JlT3Bjb2RlKEJhbmsgYmFu
aywgV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoIChiYW5rKSB7CisgICAgY2FzZSBHUDoKKyAg
ICAgICAgc3dpdGNoICh3aWR0aCkgeworICAgICAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgICAg
IHJldHVybiBTdG9yZTg7CisgICAgICAgIGNhc2UgV2lkdGgxNjoKKyAgICAgICAgICAgIHJldHVy
biBTdG9yZTE2OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFN0b3JlOwor
ICAgICAgICB9CisgICAgY2FzZSBGUDoKKyAgICAgICAgcmV0dXJuIFN0b3JlOworICAgIH0KK30K
KwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMjYzLDYg
KzI4MCwzMyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgT3BjCiAgICAg
Y2FzZSBTdG9yZToKICAgICAgICAgb3V0LnByaW50KCJTdG9yZSIpOwogICAgICAgICByZXR1cm47
CisgICAgY2FzZSBBdG9taWNXZWFrQ0FTOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1dlYWtD
QVMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAg
ICBvdXQucHJpbnQoIkF0b21pY1N0cm9uZ0NBUyIpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBBdG9taWNYY2hnQWRkOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGdBZGQiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgb3V0LnByaW50
KCJBdG9taWNYY2hnQW5kIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdP
cjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnT3IiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAgb3V0LnByaW50KCJBdG9taWNYY2hnU3Vi
Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgICAgIG91
dC5wcmludCgiQXRvbWljWGNoZ1hvciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBdG9t
aWNYY2hnOgorICAgICAgICBvdXQucHJpbnQoIkF0b21pY1hjaGciKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgRGVwZW5kOgorICAgICAgICBvdXQucHJpbnQoIkRlcGVuZCIpOworICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBXYXNtQWRkcmVzczoKICAgICAgICAgb3V0LnByaW50KCJXYXNt
QWRkcmVzcyIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuaAkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEIz
X0pJVCkKIAogI2luY2x1ZGUgIkIzVHlwZS5oIgorI2luY2x1ZGUgIkIzV2lkdGguaCIKICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAg
LTgyLDcgKzgzLDYgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBNb2QsIC8vIEFsbCBi
ZXRzIGFyZSBvZmYgYXMgdG8gd2hhdCB3aWxsIGhhcHBlbiB3aGVuIHlvdSBleGVjdXRlIHRoaXMg
Zm9yIC0yXjMxJS0xIGFuZCB4JTAuCiAgICAgVU1vZCwKIAotCiAgICAgLy8gUG9seW1vcnBoaWMg
bmVnYXRpb24uIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdGhpcyBmb3IgZmxvYXRpbmcgcG9pbnQs
IHNpbmNlIGludGVnZXIgbmVnYXRpb24KICAgICAvLyBpcyBleGFjdGx5IGxpa2UgU3ViKDAsIHgp
LiBCdXQgdGhhdCdzIG5vdCB0cnVlIGZvciBmbG9hdGluZyBwb2ludC4gU3ViKDAsIDApIGlzIDAs
IHdoaWxlCiAgICAgLy8gTmVnKDApIGlzIC0wLiBBbHNvLCB3ZSBjYW5vbmljYWxpemUgU3ViKDAs
IHgpIGludG8gTmVnKHgpIGluIGNhc2Ugb2YgaW50ZWdlcnMuCkBAIC0xNjIsNiArMTYyLDExMCBA
QCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIFN0b3JlMTYsCiAgICAgLy8gVGhpcyBpcyBh
IHBvbHltb3JwaGljIHN0b3JlIGZvciBJbnQzMiwgSW50NjQsIEZsb2F0LCBhbmQgRG91YmxlLgog
ICAgIFN0b3JlLAorICAgIAorICAgIC8vIEF0b21pYyBjb21wYXJlIGFuZCBzd2FwIHRoYXQgcmV0
dXJucyBhIGJvb2xlYW4uIE1heSBjaG9vc2UgdG8gZG8gbm90aGluZyBhbmQgcmV0dXJuIGZhbHNl
LiBZb3UgY2FuCisgICAgLy8gdXN1YWxseSBhc3N1bWUgdGhhdCB0aGlzIGlzIGZhc3RlciBhbmQg
cmVzdWx0cyBpbiBsZXNzIGNvZGUgdGhhbiBBdG9taWNTdHJvbmdDQVMsIHRob3VnaCB0aGF0J3MK
KyAgICAvLyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSBvbiBJbnRlbCwgaWYgaW5zdHJ1Y3Rpb24gc2Vs
ZWN0aW9uIGRvZXMgaXRzIGpvYi4gSW1hZ2luZSB0aGF0IHRoaXMgb3Bjb2RlIGlzCisgICAgLy8g
YXMgaWYgeW91IGRpZCB0aGlzIGF0b21pY2FsbHk6CisgICAgLy8KKyAgICAvLyB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIC8vIGJvb2wgQXRvbWljV2Vha0NBUyhUIGV4cGVjdGVkVmFsdWUsIFQg
bmV3VmFsdWUsIFQqIHB0cikKKyAgICAvLyB7CisgICAgLy8gICAgIGlmICghcmFuZCgpKQorICAg
IC8vICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBSZWFsIHdvcmxkIGV4YW1wbGUgb2YgdGhpczog
Y29udGV4dCBzd2l0Y2ggb24gQVJNIHdoaWxlIGRvaW5nIENBUy4KKyAgICAvLyAgICAgaWYgKCpw
dHIgIT0gZXhwZWN0ZWRWYWx1ZSkKKyAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAv
LyAgICAgKnB0ciA9IG5ld1ZhbHVlOworICAgIC8vICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyB9
CisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgYWxsIGF0b21pY3MgcHV0IHRoZSBwb2ludGVyIGxh
c3QgdG8gYmUgY29uc2lzdGVudCB3aXRoIGhvdyBsb2FkcyBhbmQgc3RvcmVzIHdvcmsuIFRoaXMK
KyAgICAvLyBpcyBhIGdvb2Z5IHRyYWRpdGlvbiwgYnV0IGl0J3MgaGFybWxlc3MsIGFuZCBiZXR0
ZXIgdGhhbiBiZWluZyBpbmNvbnNpc3RlbnQuCisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgd2Vh
ayBDQVMgaGFzIG5vIGZlbmNpbmcgZ3VhcmFudGVlcyB3aGVuIGl0IGZhaWxzLiBUaGlzIG1lYW5z
IHRoYXQgdGhlIGZvbGxvd2luZworICAgIC8vIHRyYW5zZm9ybWF0aW9uIGlzIGFsd2F5cyB2YWxp
ZDoKKyAgICAvLworICAgIC8vIEJlZm9yZToKKyAgICAvLworICAgIC8vICAgICAgICAgQnJhbmNo
KEF0b21pY1dlYWtDQVMoZXhwZWN0ZWQsIG5ldywgcHRyKSkKKyAgICAvLyAgICAgICBTdWNjZXNz
b3JzOiBUaGVuOiNzdWNjZXNzLCBFbHNlOiNmYWlsCisgICAgLy8KKyAgICAvLyBBZnRlcjoKKyAg
ICAvLworICAgIC8vICAgICAgICAgQnJhbmNoKEVxdWFsKExvYWQocHRyKSwgZXhwZWN0ZWQpKQor
ICAgIC8vICAgICAgIFN1Y2Nlc3NvcnM6IFRoZW46I2F0dGVtcHQsIEVsc2U6I2ZhaWwKKyAgICAv
LyAgICAgQkIjYXR0ZW1wdDoKKyAgICAvLyAgICAgICAgIEJyYW5jaChBdG9taWNXZWFrQ0FTKGV4
cGVjdGVkLCBuZXcsIHB0cikpCisgICAgLy8gICAgICAgU3VjY2Vzc29yczogVGhlbjojc3VjY2Vz
cywgRWxzZTojZmFpbAorICAgIC8vCisgICAgLy8gQm90aCBraW5kcyBvZiBDQVMgZm9yIG5vbi1j
YW5vbmljYWwgd2lkdGhzIChXaWR0aDggYW5kIFdpZHRoMTYpIGlnbm9yZSB0aGUgaXJyZWxldmFu
dCBiaXRzIG9mIHRoZQorICAgIC8vIGlucHV0LgorICAgIEF0b21pY1dlYWtDQVMsCisgICAgCisg
ICAgLy8gQXRvbWljIGNvbXBhcmUgYW5kIHN3YXAgdGhhdCByZXR1cm5zIHRoZSBvbGQgdmFsdWUu
IERvZXMgbm90IGhhdmUgdGhlIG5vbmRldGVybWluaXNtIG9mIFdlYWtDQVMuCisgICAgLy8gVGhp
cyBpcyBhIGJpdCBtb3JlIGNvZGUgYW5kIGEgYml0IHNsb3dlciBpbiBzb21lIGNhc2VzLCB0aG91
Z2ggbm90IGJ5IGEgbG90LiBJbWFnaW5lIHRoYXQgdGhpcworICAgIC8vIG9wY29kZSBpcyBhcyBp
ZiB5b3UgZGlkIHRoaXMgYXRvbWljYWxseToKKyAgICAvLworICAgIC8vIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgLy8gVCBBdG9taWNTdHJvbmdDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1Zh
bHVlLCBUKiBwdHIpCisgICAgLy8geworICAgIC8vICAgICBUIG9sZFZhbHVlID0gKnB0cjsKKyAg
ICAvLyAgICAgaWYgKG9sZFZhbHVlID09IGV4cGVjdGVkVmFsdWUpCisgICAgLy8gICAgICAgICAq
cHRyID0gbmV3VmFsdWU7CisgICAgLy8gICAgIHJldHVybiBvbGRWYWx1ZQorICAgIC8vIH0KKyAg
ICAvLworICAgIC8vIEF0b21pY1N0cm9uZ0NBUyBzaWduLWV4dGVuZHMgaXRzIHJlc3VsdCBmb3Ig
c3Vid2lkdGggb3BlcmF0aW9ucy4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCBBdG9taWNXZWFr
Q0FTIGFuZCBBdG9taWNTdHJvbmdDQVMgc29ydCBvZiBoYXZlIHRoaXMga2luZCBvZiBlcXVpdmFs
ZW5jZToKKyAgICAvLworICAgIC8vIEF0b21pY1dlYWtDQVMoQGV4cCwgQG5ldywgQHB0cikgPT0g
RXF1YWwoQXRvbWljU3Ryb25nQ0FTKEBleHAsIEBuZXcsIEBwdHIpLCBAZXhwKQorICAgIC8vCisg
ICAgLy8gQXNzdW1pbmcgdGhhdCB0aGUgV2Vha0NBUyBkb2VzIG5vdCBzcHVyaW91c2x5IGZhaWws
IG9mIGNvdXJzZS4KKyAgICBBdG9taWNTdHJvbmdDQVMsCisgICAgCisgICAgLy8gQXRvbWljYWxs
eSBfX18gYSBtZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybiB0aGUgb2xkIHZhbHVlLiBTeW50YXg6
CisgICAgLy8KKyAgICAvLyBAb2xkVmFsdWUgPSBBdG9taWNYY2hnX19fKEBvcGVyYW5kLCBAcHRy
KQorICAgIC8vCisgICAgLy8gRm9yIG5vbi1jYW5vbmljYWwgd2lkdGhzIChXaWR0aDggYW5kIFdp
ZHRoMTYpLCB0aGVzZSByZXR1cm4gc2lnbi1leHRlbmRlZCByZXN1bHRzIGFuZCBpZ25vcmUgdGhl
CisgICAgLy8gaXJyZWxldmFudCBiaXRzIG9mIHRoZWlyIGlucHV0cy4KKyAgICBBdG9taWNYY2hn
QWRkLAorICAgIEF0b21pY1hjaGdBbmQsCisgICAgQXRvbWljWGNoZ09yLAorICAgIEF0b21pY1hj
aGdTdWIsCisgICAgQXRvbWljWGNoZ1hvciwKKyAgICAKKyAgICAvLyBGSVhNRTogTWF5YmUgd2Ug
c2hvdWxkIGhhdmUgQXRvbWljWGNoZ05lZy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MjUyCisgICAgCisgICAgLy8gQXRvbWljYWxseSBleGNoYW5n
ZSBhIHZhbHVlIHdpdGggYSBtZW1vcnkgbG9jYXRpb24uIFN5bnRheDoKKyAgICAvLworICAgIC8v
IEBvbGRWYWx1ZSA9IEF0b21pY1hjaGcoQG5ld1ZhbHVlLCBAcHRyKQorICAgIEF0b21pY1hjaGcs
CisgICAgCisgICAgLy8gSW50cm9kdWNlIGFuIGludmlzaWJsZSBkZXBlbmRlbmN5IGZvciBibG9j
a2luZyBtb3Rpb24gb2YgbG9hZHMgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuIFN5bnRheDoK
KyAgICAvLworICAgIC8vIEByZXN1bHQgPSBEZXBlbmQoQHBoYW50b20pCisgICAgLy8KKyAgICAv
LyBUaGlzIGlzIGV2ZW50dWFsbHkgY29kZWdlbmVyYXRlZCB0byBoYXZlIGxvY2FsIHNlbWFudGlj
cyBhcyBpZiB3ZSBkaWQ6CisgICAgLy8KKyAgICAvLyBAcmVzdWx0ID0gJDAKKyAgICAvLworICAg
IC8vIEJ1dCBpdCBlbnN1cmVzIHRoYXQgdGhlIHVzZXJzIG9mIEByZXN1bHQgY2Fubm90IGV4ZWN1
dGUgdW50aWwgQHBoYW50b20gaXMgY29tcHV0ZWQuCisgICAgLy8KKyAgICAvLyBUaGUgY29tcGls
ZXIgaXMgbm90IGFsbG93ZWQgdG8gcmVhc29uIGFib3V0IHRoZSBmYWN0IHRoYXQgRGVwZW5kIGNv
ZGVnZW5lcmF0ZXMgdGhpcyB3YXkuIEFueSBraW5kCisgICAgLy8gb2YgdHJhbnNmb3JtYXRpb24g
b3IgYW5hbHlzaXMgdGhhdCByZWxpZXMgb24gdGhlIGluc2lnaHQgdGhhdCBEZXBlbmQgaXMgcmVh
bGx5IHplcm8gaXMgdW5zb3VuZCwKKyAgICAvLyBiZWNhdXNlIGl0IHVubG9ja3MgcmVvcmRlcmlu
ZyBvZiB1c2VycyBvZiBAcmVzdWx0IGFuZCBAcGhhbnRvbS4KKyAgICAvLworICAgIC8vIE9uIFg4
NiwgdGhpcyBpcyBsb3dlcmVkIHRvIGEgbG9hZC1sb2FkIGZlbmNlIGFuZCBAcmVzdWx0IHVzZXMg
QHBoYW50b20gZGlyZWN0bHkuCisgICAgLy8KKyAgICAvLyBPbiBBUk0sIHRoaXMgaXMgbG93ZXJl
ZCBhcyBpZiBsaWtlOgorICAgIC8vCisgICAgLy8gQHJlc3VsdCA9IEJpdFhvcihAcGhhbnRvbSwg
QHBoYW50b20pCisgICAgLy8KKyAgICAvLyBFeGNlcHQgdGhhdCB0aGUgY29tcGlsZXIgbmV2ZXIg
Z2V0cyBhbiBvcHBvcnR1bml0eSB0byBzaW1wbGlmeSBvdXQgdGhlIEJpdFhvci4KKyAgICBEZXBl
bmQsCiAKICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsIGFkZHJlc3Mg
b2YgYSBXYXNtIG1lbW9yeSBvcGVyYXRpb24uIEl0IHRha2VzIGFuIEludFB0cgogICAgIC8vIGFu
ZCBhIHBpbm5lZCByZWdpc3RlciB0aGVuIGNvbXB1dGVzIHRoZSBhcHByb3ByaWF0ZSBJbnRQdHIg
YWRkcmVzcy4gRm9yIHRoZSB1c2UtY2FzZSBvZgpAQCAtMzAxLDYgKzQwNSwxMTIgQEAgaW5saW5l
IGJvb2wgaXNEZWZpbml0ZWx5VGVybWluYWwoT3Bjb2RlIAogICAgIH0KIH0KIAoraW5saW5lIGJv
b2wgaXNMb2FkKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBj
YXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExvYWQxNlo6CisgICAgY2Fz
ZSBMb2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNT
dG9yZShPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgY2FzZSBT
dG9yZTg6CisgICAgY2FzZSBTdG9yZTE2OgorICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisK
K2lubGluZSBib29sIGlzTG9hZFN0b3JlKE9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChv
cGNvZGUpIHsKKyAgICBjYXNlIExvYWQ4WjoKKyAgICBjYXNlIExvYWQ4UzoKKyAgICBjYXNlIExv
YWQxNlo6CisgICAgY2FzZSBMb2FkMTZTOgorICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFN0b3Jl
ODoKKyAgICBjYXNlIFN0b3JlMTY6CisgICAgY2FzZSBTdG9yZToKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5s
aW5lIGJvb2wgaXNBdG9taWMoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkg
eworICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21pY1N0cm9uZ0NBUzoKKyAg
ICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hnQW5kOgorICAgIGNhc2Ug
QXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICBjYXNlIEF0b21pY1hj
aGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBp
c0F0b21pY0NBUyhPcGNvZGUgb3Bjb2RlKQoreworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAg
Y2FzZSBBdG9taWNXZWFrQ0FTOgorICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
fQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1hjaGcoT3Bjb2RlIG9wY29kZSkKK3sKKyAgICBzd2l0
Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQXRvbWljWGNoZ0FkZDoKKyAgICBjYXNlIEF0b21pY1hj
aGdBbmQ6CisgICAgY2FzZSBBdG9taWNYY2hnT3I6CisgICAgY2FzZSBBdG9taWNYY2hnU3ViOgor
ICAgIGNhc2UgQXRvbWljWGNoZ1hvcjoKKyAgICBjYXNlIEF0b21pY1hjaGc6CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9
CisKK2lubGluZSBib29sIGlzTWVtb3J5QWNjZXNzKE9wY29kZSBvcGNvZGUpCit7CisgICAgcmV0
dXJuIGlzQXRvbWljKG9wY29kZSkgfHwgaXNMb2FkU3RvcmUob3Bjb2RlKTsKK30KKworaW5saW5l
IE9wY29kZSBzaWduRXh0ZW5kT3Bjb2RlKFdpZHRoIHdpZHRoKQoreworICAgIHN3aXRjaCAod2lk
dGgpIHsKKyAgICBjYXNlIFdpZHRoODoKKyAgICAgICAgcmV0dXJuIFNFeHQ4OworICAgIGNhc2Ug
V2lkdGgxNjoKKyAgICAgICAgcmV0dXJuIFNFeHQxNjsKKyAgICBkZWZhdWx0OgorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gT29wczsKKyAgICB9
Cit9CisKK0pTX0VYUE9SVF9QUklWQVRFIE9wY29kZSBzdG9yZU9wY29kZShCYW5rIGJhbmssIFdp
ZHRoIHdpZHRoKTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKIG5hbWVzcGFjZSBXVEYg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCShyZXZpc2lv
biAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDggQEAgdm9pZCBQcm9jZWR1cmU6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgYwogICAgICAgICB9CiAgICAgICAgIGRhdGFMb2coIiAgICAiLCBkZWVw
RHVtcCgqdGhpcywgdmFsdWUpLCAiXG4iKTsKICAgICB9CisgICAgaWYgKGhhc1F1aXJrcygpKQor
ICAgICAgICBvdXQucHJpbnQoIkhhcyBRdWlya3M6IFRydWVcbiIpOwogICAgIGlmICh2YXJpYWJs
ZXMoKS5zaXplKCkpIHsKICAgICAgICAgb3V0LnByaW50KCJWYXJpYWJsZXM6XG4iKTsKICAgICAg
ICAgZm9yIChWYXJpYWJsZSogdmFyaWFibGUgOiB2YXJpYWJsZXMoKSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCShyZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNyw2
ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50KE9yaWdpbiwgVHlw
ZSwgaW50NjRfdCB2YWx1ZSk7CiAgICAgVmFsdWUqIGFkZEludENvbnN0YW50KFZhbHVlKiwgaW50
NjRfdCB2YWx1ZSk7CiAKKyAgICAvLyBZb3UncmUgZ3VhcmFudGVlZCB0aGF0IGJvdHRvbSBpcyB6
ZXJvLgogICAgIFZhbHVlKiBhZGRCb3R0b20oT3JpZ2luLCBUeXBlKTsKICAgICBWYWx1ZSogYWRk
Qm90dG9tKFZhbHVlKik7CiAKQEAgLTE5NSw2ICsxOTYsMTcgQEAgcHVibGljOgogICAgIC8vIGFs
aXZlLiBHcmVhdCBmb3IgY29tcGlsZXItZ2VuZXJhdGVkIGRhdGEgc2VjdGlvbnMsIGxpa2Ugc3dp
dGNoIGp1bXAgdGFibGVzIGFuZCBjb25zdGFudCBwb29scy4KICAgICAvLyBUaGlzIHJldHVybnMg
bWVtb3J5IHRoYXQgaGFzIGJlZW4gemVyby1pbml0aWFsaXplZC4KICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkKiBhZGREYXRhU2VjdGlvbihzaXplX3QpOworICAgIAorICAgIC8vIFNvbWUgb3Bl
cmF0aW9ucyBhcmUgc3BlY2lmaWVkIGluIEIzIElSIHRvIGJlaGF2ZSBvbmUgd2F5IGJ1dCBvbiB0
aGlzIGdpdmVuIENQVSB0aGV5IGJlaGF2ZSBhCisgICAgLy8gZGlmZmVyZW50IHdheS4gV2hlbiB0
cnVlLCB0aG9zZSBCMyBJUiBvcHMgc3dpdGNoIHRvIGJlaGF2aW5nIHRoZSBDUFUgd2F5LCBhbmQg
dGhlIG9wdGltaXplciBtYXkKKyAgICAvLyBzdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIGl0Lgor
ICAgIC8vCisgICAgLy8gT25lIHdheSB0byB0aGluayBvZiBpdCBpcyBsaWtlIHRoaXMuIEltYWdp
bmUgdGhhdCB5b3UgZmluZCB0aGF0IHRoZSBjbGVhbmVzdCB3YXkgb2YgbG93ZXJpbmcKKyAgICAv
LyBzb21ldGhpbmcgaW4gbG93ZXJNYWNyb3MgaXMgdG8gdW5jb25kaXRpb25hbGx5IHJlcGxhY2Ug
b25lIG9wY29kZSB3aXRoIGFub3RoZXIuIFRoaXMgaXMgYSBzaG9ydGN1dAorICAgIC8vIHdoZXJl
IHlvdSBpbnN0ZWFkIGtlZXAgdGhlIHNhbWUgb3Bjb2RlLCBidXQgcmVseSBvbiB0aGUgb3Bjb2Rl
J3MgbWVhbmluZyBjaGFuZ2VzIG9uY2UgbG93ZXJNYWNyb3MKKyAgICAvLyBzZXRzIGhhc1F1aXJr
cy4KKyAgICBib29sIGhhc1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUXVpcmtzOyB9Cisg
ICAgdm9pZCBzZXRIYXNRdWlya3MoYm9vbCB2YWx1ZSkgeyBtX2hhc1F1aXJrcyA9IHZhbHVlOyB9
CiAKICAgICBPcGFxdWVCeXByb2R1Y3RzJiBieXByb2R1Y3RzKCkgeyByZXR1cm4gKm1fYnlwcm9k
dWN0czsgfQogCkBAIC0yNTIsNiArMjY0LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVk
VGFzazx2b2lkKFByaW50U3RyZWFtJiwgT3JpZ2luKT4+IG1fb3JpZ2luUHJpbnRlcjsKICAgICBj
b25zdCB2b2lkKiBtX2Zyb250ZW5kRGF0YTsKICAgICBQQ1RvT3JpZ2luTWFwIG1fcGNUb09yaWdp
bk1hcDsKKyAgICBib29sIG1faGFzUXVpcmtzIHsgZmFsc2UgfTsKIH07CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5jcHAJ
KHJldmlzaW9uIDIxMzY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1B1cmVDU0Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAj
aW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCisjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5j
bHVkZSAiQjNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKQEAgLTg5
LDYgKzkwLDIzIEBAIGJvb2wgUHVyZUNTRTo6cHJvY2VzcyhWYWx1ZSogdmFsdWUsIERvbWkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgcHVyZUNTRShQcm9jZWR1cmUmIHByb2MpCit7Cisg
ICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHByb2MsICJwdXJlQ1NFIik7CisgICAgCisgICAgRG9t
aW5hdG9ycyYgZG9taW5hdG9ycyA9IHByb2MuZG9taW5hdG9ycygpOworICAgIFB1cmVDU0UgcHVy
ZUNTRTsKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgIGZvciAoQmFzaWNCbG9jayogYmxv
Y2sgOiBwcm9jLmJsb2Nrc0luUHJlT3JkZXIoKSkgeworICAgICAgICBmb3IgKFZhbHVlKiB2YWx1
ZSA6ICpibG9jaykgeworICAgICAgICAgICAgcmVzdWx0IHw9IHZhbHVlLT5wZXJmb3JtU3Vic3Rp
dHV0aW9uKCk7CisgICAgICAgICAgICByZXN1bHQgfD0gcHVyZUNTRS5wcm9jZXNzKHZhbHVlLCBk
b21pbmF0b3JzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHVyZUNTRS5oCShyZXZpc2lvbiAyMTM2NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQdXJlQ1NFLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDYgKzU2LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFZhbHVlS2V5LCBNYXRjaGVz
PiBtX21hcDsKIH07CiAKK2Jvb2wgcHVyZUNTRShQcm9jZWR1cmUmKTsKKwogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkocmV2aXNpb24gMjEzNjQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsMTIgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisj
aW5jbHVkZSAiQjNBdG9taWNWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMu
aCIKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjNDb21wdXRl
RGl2aXNpb25NYWdpYy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIz
SW5zZXJ0aW9uU2V0SW5saW5lcy5oIgotI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNs
dWRlICJCM01lbW9yeVZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgog
I2luY2x1ZGUgIkIzUGhpQ2hpbGRyZW4uaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMu
aCIKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBicmVhazsKLQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmVnOgogICAgICAgICAg
ICAgLy8gVHVybiB0aGlzOiBOZWcoY29uc3RhbnQpCiAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6
IC1jb25zdGFudApAQCAtMTI5NSw2ICsxMjk2LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKCFtX3Byb2MuaGFzUXVpcmtzKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBUdXJuIHRoaXM6IFNFeHQ4KEF0b21pY1hjaGdfX18pCisgICAgICAgICAgICAgICAg
Ly8gSW50byB0aGlzOiBBdG9taWNYY2hnX19fCisgICAgICAgICAgICAgICAgaWYgKGlzQXRvbWlj
WGNoZyhtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkpCisgICAgICAgICAgICAgICAgICAgICYm
IG1fdmFsdWUtPmNoaWxkKDApLT5hczxBdG9taWNWYWx1ZT4oKS0+YWNjZXNzV2lkdGgoKSA9PSBX
aWR0aDgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVl
LT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU0V4
dDE2OgpAQCAtMTM0Myw2ICsxMzU0LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFtX3Byb2MuaGFzUXVpcmtzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6
IFNFeHQxNihBdG9taWNYY2hnX19fKQorICAgICAgICAgICAgICAgIC8vIEludG8gdGhpczogQXRv
bWljWGNoZ19fXworICAgICAgICAgICAgICAgIGlmIChpc0F0b21pY1hjaGcobV92YWx1ZS0+Y2hp
bGQoMCktPm9wY29kZSgpKQorICAgICAgICAgICAgICAgICAgICAmJiBtX3ZhbHVlLT5jaGlsZCgw
KS0+YXM8QXRvbWljVmFsdWU+KCktPmFjY2Vzc1dpZHRoKCkgPT0gV2lkdGgxNikgeworICAgICAg
ICAgICAgICAgICAgICByZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTRXh0MzI6CkBAIC0yMTAxLDIy
ICsyMTIyLDI1IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChtX3ZhbHVlLT5udW1DaGlsZHJl
bigpID49IDIpOwogICAgICAgICAKICAgICAgICAgLy8gTGVhdmUgaXQgYWxvbmUgaWYgdGhlIHJp
Z2h0IGNoaWxkIGlzIGEgY29uc3RhbnQuCi0gICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+
aXNDb25zdGFudCgpKQorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzQ29uc3RhbnQo
KQorICAgICAgICAgICAgfHwgbV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEF0b21pY1N0
cm9uZ0NBUykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgwKS0+aXNDb25zdGFudCgpKSB7CisgICAgICAgIGF1dG8gc3dhcCA9IFsmXSAo
KSB7CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNo
aWxkKDEpKTsKICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFs
dWUtPmNoaWxkKDApLT5pc0NvbnN0YW50KCkpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5vcGNvZGUoKSA9PSBBdG9t
aWNTdHJvbmdDQVMpCisgICAgICAgICAgICByZXR1cm4gc3dhcCgpOworICAgICAgICAKICAgICAg
ICAgLy8gU29ydCB0aGUgb3BlcmFuZHMuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGNhbm9uaWNhbGl6
YXRpb24uIFdlIHVzZSB0aGUgaW5kZXggaW5zdGVhZCBvZgogICAgICAgICAvLyB0aGUgYWRkcmVz
cyB0byBtYWtlIHRoaXMgYXQgbGVhc3Qgc2xpZ2h0bHkgZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAg
aWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pbmRleCgpID4gbV92YWx1ZS0+Y2hpbGQoMSktPmluZGV4
KCkpIHsKLSAgICAgICAgICAgIHN0ZDo6c3dhcChtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+
Y2hpbGQoMSkpOwotICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQorICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmluZGV4KCkg
PiBtX3ZhbHVlLT5jaGlsZCgxKS0+aW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiBzd2FwKCk7
CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBhIGZvcndhcmQg
YW5hbHlzaXMuIEluc3RlYWQsIHdlIHVzZXMgYSBib3VuZGVkLXNlYXJjaCBiYWNrd2FyZHMKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIxMzY0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRl
ICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCiAjaW5j
bHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgog
I2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKQEAgLTM0Niw2ICszNDcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAi
LCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5
cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgdmFsaWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRh
dGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIExvYWQ6CkBAIC0zNTMsNiArMzU1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRl
clR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+dHlwZSgpICE9IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFs
aWRhdGVGZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2
YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFN0b3JlODoK
QEAgLTM2Miw2ICszNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPmNoaWxkKDApLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUo
KSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlw
ZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVG
ZW5jZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFN0b3JlOgpAQCAtMzY5
LDggKzM3Myw0OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51
bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJ
REFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2
YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUZlbmNlKHZhbHVlKTsK
ICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5pc0NoaWxsKCksICgiQXQgIiwgKnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMywgKCJB
dCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09
IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5jaGlsZCgwKS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVlLT5jaGlsZCgwKS0+
dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+Y2hpbGQoMiktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIHZhbGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2
YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQXRvbWljU3Ryb25nQ0FTOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2
YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAzLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDAp
LT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMiktPnR5cGUo
KSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHZh
bGlkYXRlQXRvbWljKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNz
KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXRvbWlj
WGNoZ0FkZDoKKyAgICAgICAgICAgIGNhc2UgQXRvbWljWGNoZ0FuZDoKKyAgICAgICAgICAgIGNh
c2UgQXRvbWljWGNoZ09yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnU3ViOgorICAgICAg
ICAgICAgY2FzZSBBdG9taWNYY2hnWG9yOgorICAgICAgICAgICAgY2FzZSBBdG9taWNYY2hnOgor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmlzQ2hpbGwoKSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4o
KSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkg
PT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWxp
ZGF0ZUF0b21pYyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2
YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIERlcGVuZDoK
KyAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPmtpbmQoKS5oYXNFeHRyYUJpdHMoKSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hp
bGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDApLT50eXBlKCksICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPnR5cGUoKSksICgiQXQg
IiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdh
c21BZGRyZXNzOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgpLmhhc0V4
dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CkBAIC01MzcsNiArNTgy
LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKyAg
ICAKKyAgICB2b2lkIHZhbGlkYXRlRmVuY2UoVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAg
TWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKKyAgICAgICAg
aWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIFZBTElEQVRFKG1lbW9yeS0+YWNj
ZXNzQmFuaygpID09IEdQLCAoIkZlbmNlIGF0ICIsICptZW1vcnkpKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCB2YWxpZGF0ZUF0b21pYyhWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBBdG9t
aWNWYWx1ZSogYXRvbWljID0gdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOworICAgICAgICAKKyAg
ICAgICAgVkFMSURBVEUoYmVzdFR5cGUoR1AsIGF0b21pYy0+YWNjZXNzV2lkdGgoKSkgPT0gYXRv
bWljLT5hY2Nlc3NUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgfQogCiAgICAgdm9pZCB2
YWxpZGF0ZVN0YWNrQWNjZXNzKFZhbHVlKiB2YWx1ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuY3BwCShyZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgor
I2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQjNCb3R0b21Qcm92aWRlci5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1
ZS5oIgpAQCAtNTEwLDYgKzUxMSw3IEBAIGJvb2wgVmFsdWU6OnJldHVybnNCb29sKCkgY29uc3QK
ICAgICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgY2FzZSBCZWxvd0VxdWFsOgogICAgIGNhc2UgRXF1
YWxPclVub3JkZXJlZDoKKyAgICBjYXNlIEF0b21pY1dlYWtDQVM6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGNhc2UgUGhpOgogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBz
dG9yeSBoZXJlLgpAQCAtNTg5LDYgKzU5MSw3IEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBj
b25zdAogICAgIGNhc2UgQmVsb3dFcXVhbDoKICAgICBjYXNlIEVxdWFsT3JVbm9yZGVyZWQ6CiAg
ICAgY2FzZSBTZWxlY3Q6CisgICAgY2FzZSBEZXBlbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRGl2OgogICAgIGNhc2UgVURpdjoKQEAgLTYwMCwxNiArNjAzLDQ0IEBAIEVmZmVjdHMgVmFs
dWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgTG9hZDhTOgogICAgIGNhc2UgTG9hZDE2WjoK
ICAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBMb2FkOgotICAgICAgICByZXN1bHQucmVhZHMg
PSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNlIExvYWQ6IHsKKyAgICAgICAg
Y29uc3QgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICBy
ZXN1bHQucmVhZHMgPSBtZW1vcnktPnJhbmdlKCk7CisgICAgICAgIGlmIChtZW1vcnktPmhhc0Zl
bmNlKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdC53cml0ZXMgPSBtZW1vcnktPmZlbmNlUmFuZ2Uo
KTsKKyAgICAgICAgICAgIHJlc3VsdC5mZW5jZSA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAg
cmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgY2FzZSBTdG9yZTg6CiAgICAgY2FzZSBTdG9yZTE2OgotICAgIGNhc2UgU3RvcmU6Ci0gICAg
ICAgIHJlc3VsdC53cml0ZXMgPSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKKyAgICBjYXNl
IFN0b3JlOiB7CisgICAgICAgIGNvbnN0IE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBhczxNZW1vcnlW
YWx1ZT4oKTsKKyAgICAgICAgcmVzdWx0LndyaXRlcyA9IG1lbW9yeS0+cmFuZ2UoKTsKKyAgICAg
ICAgaWYgKG1lbW9yeS0+aGFzRmVuY2UoKSkgeworICAgICAgICAgICAgcmVzdWx0LnJlYWRzID0g
bWVtb3J5LT5mZW5jZVJhbmdlKCk7CisgICAgICAgICAgICByZXN1bHQuZmVuY2UgPSB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQXRvbWljV2Vha0NBUzoKKyAgICBjYXNlIEF0b21p
Y1N0cm9uZ0NBUzoKKyAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgY2FzZSBBdG9taWNYY2hn
QW5kOgorICAgIGNhc2UgQXRvbWljWGNoZ09yOgorICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAg
ICBjYXNlIEF0b21pY1hjaGdYb3I6CisgICAgY2FzZSBBdG9taWNYY2hnOiB7CisgICAgICAgIGNv
bnN0IEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhczxBdG9taWNWYWx1ZT4oKTsKKyAgICAgICAgcmVz
dWx0LnJlYWRzID0gYXRvbWljLT5yYW5nZSgpIHwgYXRvbWljLT5mZW5jZVJhbmdlKCk7CisgICAg
ICAgIHJlc3VsdC53cml0ZXMgPSBhdG9taWMtPnJhbmdlKCkgfCBhdG9taWMtPmZlbmNlUmFuZ2Uo
KTsKKyAgICAgICAgaWYgKGF0b21pYy0+aGFzRmVuY2UoKSkKKyAgICAgICAgICAgIHJlc3VsdC5m
ZW5jZSA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgV2FzbUFkZHJlc3M6CiAgICAgICAgIHJlc3Vs
dC5yZWFkc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpAQCAtNjE3LDE4ICs2NDgsNyBA
QCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICAgICAgY29uc3QgRmVuY2VWYWx1
ZSogZmVuY2UgPSBhczxGZW5jZVZhbHVlPigpOwogICAgICAgICByZXN1bHQucmVhZHMgPSBmZW5j
ZS0+cmVhZDsKICAgICAgICAgcmVzdWx0LndyaXRlcyA9IGZlbmNlLT53cml0ZTsKLSAgICAgICAg
Ci0gICAgICAgIC8vIFByZXZlbnQga2lsbGluZyBvZiBmZW5jZXMgdGhhdCBjbGFpbSBub3QgdG8g
d3JpdGUgYW55dGhpbmcuIEl0J3MgYSBiaXQgd2VpcmQgdGhhdCB3ZSB1c2UKLSAgICAgICAgLy8g
bG9jYWwgc3RhdGUgYXMgdGhlIHdheSB0byBkbyB0aGlzLCBidXQgaXQgaGFwcGVucyB0byB3b3Jr
OiB3ZSBtdXN0IGFzc3VtZSB0aGF0IHdlIGNhbm5vdAotICAgICAgICAvLyBraWxsIHdyaXRlc0xv
Y2FsU3RhdGUgdW5sZXNzIHdlIHVuZGVyc3RhbmRzIGV4YWN0bHkgd2hhdCB0aGUgaW5zdHJ1Y3Rp
b24gaXMgZG9pbmcgKGxpa2UKLSAgICAgICAgLy8gdGhlIHdheSB0aGF0IGZpeFNTQSB1bmRlcnN0
YW5kcyBTZXQvR2V0IGFuZCB0aGUgd2F5IHRoYXQgcmVkdWNlU3RyZW5ndGggYW5kIG90aGVycwot
ICAgICAgICAvLyB1bmRlcnN0YW5kIFVwc2lsb24pLiBUaGlzIHdvdWxkIG9ubHkgYmVjb21lIGEg
cHJvYmxlbSBpZiB3ZSBoYWQgc29tZSBhbmFseXNpcyB0aGF0IHdhcwotICAgICAgICAvLyBsb29r
aW5nIHRvIHVzZSB0aGUgd3JpdGVzTG9jYWxTdGF0ZSBiaXQgdG8gaW52YWxpZGF0ZSBhIENTRSBv
dmVyIGxvY2FsIHN0YXRlIG9wZXJhdGlvbnMuCi0gICAgICAgIC8vIFRoZW4gYSBGZW5jZSB3b3Vs
ZCBsb29rIGJsb2NrLCBzYXksIHRoZSBlbGltaW5hdGlvbiBvZiBhIHJlZHVuZGFudCBHZXQuIEJ1
dCBpdCBsaWtlCi0gICAgICAgIC8vIHRoYXQncyBub3QgYXQgYWxsIGhvdyBvdXIgb3B0aW1pemF0
aW9ucyBmb3IgU2V0L0dldC9VcHNpbG9uL1BoaSB3b3JrIC0gdGhleSBncm9rIHRoZWlyCi0gICAg
ICAgIC8vIG9wZXJhdGlvbnMgZGVlcGx5IGVub3VnaCB0aGF0IHRoZXkgaGF2ZSBubyBuZWVkIHRv
IGNoZWNrIHRoaXMgYml0IC0gc28gdGhpcyBjaGVhdCBpcwotICAgICAgICAvLyBmaW5lLgotICAg
ICAgICByZXN1bHQud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CisgICAgICAgIHJlc3VsdC5mZW5j
ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENDYWxsOgpAQCAtNjk0
LDYgKzcxNCw3IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNhc2UgQ2hlY2s6
CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICBjYXNlIE5lZzoKKyAgICBjYXNlIERlcGVuZDoK
ICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KGtpbmQoKSwgdHlwZSgpLCBjaGlsZCgwKSk7CiAgICAg
Y2FzZSBBZGQ6CiAgICAgY2FzZSBTdWI6CkBAIC03NDYsMTIgKzc2NywxNiBAQCBWYWx1ZUtleSBW
YWx1ZTo6a2V5KCkgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgVmFsdWU6OnBlcmZvcm1TdWJzdGl0
dXRpb24oKQorYm9vbCBWYWx1ZTo6cGVyZm9ybVN1YnN0aXR1dGlvbigpCiB7CisgICAgYm9vbCBy
ZXN1bHQgPSBmYWxzZTsKICAgICBmb3IgKFZhbHVlKiYgY2hpbGQgOiBjaGlsZHJlbigpKSB7Ci0g
ICAgICAgIHdoaWxlIChjaGlsZC0+b3Bjb2RlKCkgPT0gSWRlbnRpdHkpCisgICAgICAgIHdoaWxl
IChjaGlsZC0+b3Bjb2RlKCkgPT0gSWRlbnRpdHkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRy
dWU7CiAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLT5jaGlsZCgwKTsKKyAgICAgICAgfQogICAg
IH0KKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBib29sIFZhbHVlOjppc0ZyZWUoKSBjb25zdApA
QCAtODAxLDYgKzgyNiw3IEBAIFR5cGUgVmFsdWU6OnR5cGVGb3IoS2luZCBraW5kLCBWYWx1ZSog
ZmkKICAgICBjYXNlIENoZWNrQWRkOgogICAgIGNhc2UgQ2hlY2tTdWI6CiAgICAgY2FzZSBDaGVj
a011bDoKKyAgICBjYXNlIERlcGVuZDoKICAgICAgICAgcmV0dXJuIGZpcnN0Q2hpbGQtPnR5cGUo
KTsKICAgICBjYXNlIEZyYW1lUG9pbnRlcjoKICAgICAgICAgcmV0dXJuIHBvaW50ZXJUeXBlKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHJldmlzaW9uIDIxMzY0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDYgKzY4LDExIEBAIHB1YmxpYzoKICAgICAKICAgICBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpLm9wY29kZSgpOyB9CiAgICAgCisgICAgLy8gTm90ZSB0aGF0IHRoZSBraW5k
IGlzIG1lYW50IHRvIGJlIGltbXV0YWJsZS4gRG8gdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgdGhp
cyBpcyBzYWZlLiBJdCdzIG5vdAorICAgIC8vIHVzdWFsbHkgc2FmZS4KKyAgICB2b2lkIHNldEtp
bmRVbnNhZmVseShLaW5kIGtpbmQpIHsgbV9raW5kID0ga2luZDsgfQorICAgIHZvaWQgc2V0T3Bj
b2RlVW5zYWZlbHkoT3Bjb2RlIG9wY29kZSkgeyBtX2tpbmQuc2V0T3Bjb2RlKG9wY29kZSk7IH0K
KyAgICAKICAgICAvLyBJdCdzIGdvb2QgcHJhY3RpY2UgdG8gbWlycm9yIEtpbmQgbWV0aG9kcyBo
ZXJlLCBzbyB5b3UgY2FuIHNheSB2YWx1ZS0+aXNCbGFoKCkKICAgICAvLyBpbnN0ZWFkIG9mIHZh
bHVlLT5raW5kKCkuaXNCbGFoKCkuCiAgICAgYm9vbCBpc0NoaWxsKCkgY29uc3QgeyByZXR1cm4g
a2luZCgpLmlzQ2hpbGwoKTsgfQpAQCAtMTA3LDYgKzExMiw4IEBAIHB1YmxpYzoKICAgICAvLyB2
YWx1ZXMgd2l0aCBJZGVudGl0aWVzIG9uIGJvdHRvbSBjb25zdGFudHMuIEZvciB0aGlzIHJlYXNv
biwgdGhpcyB0YWtlcyBhIGNhbGxiYWNrIHRoYXQgaXMKICAgICAvLyByZXNwb25zaWJsZSBmb3Ig
Y3JlYXRpbmcgYm90dG9tcy4gVGhlcmUncyBhIHV0aWxpdHkgZm9yIHRoaXMsIHNlZSBCM0JvdHRv
bVByb3ZpZGVyLmguIFlvdQogICAgIC8vIGNhbiBhbHNvIGFjY2VzcyB0aGF0IHV0aWxpdHkgdXNp
bmcgcmVwbGFjZVdpdGhCb3R0b20oSW5zZXJ0aW9uU2V0Jiwgc2l6ZV90KS4KKyAgICAvLworICAg
IC8vIFlvdSdyZSBndWFyYW50ZWVkIHRoYXQgYm90dG9tIGlzIHplcm8uCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQm90dG9tUHJvdmlkZXI+CiAgICAgdm9pZCByZXBsYWNlV2l0aEJvdHRvbShjb25z
dCBCb3R0b21Qcm92aWRlciYpOwogICAgIApAQCAtMjU2LDcgKzI2Myw3IEBAIHB1YmxpYzoKICAg
ICAvLyBNYWtlcyBzdXJlIHRoYXQgbm9uZSBvZiB0aGUgY2hpbGRyZW4gYXJlIElkZW50aXR5J3Mu
IElmIGEgY2hpbGQgcG9pbnRzIHRvIElkZW50aXR5LCB0aGlzIHdpbGwKICAgICAvLyByZXBvaW50
IGl0IGF0IHRoZSBJZGVudGl0eSdzIGNoaWxkLiBGb3Igc2ltcGxpY2l0eSwgdGhpcyB3aWxsIGZv
bGxvdyBhcmJpdHJhcmlseSBsb25nIGNoYWlucwogICAgIC8vIG9mIElkZW50aXR5J3MuCi0gICAg
dm9pZCBwZXJmb3JtU3Vic3RpdHV0aW9uKCk7CisgICAgYm9vbCBwZXJmb3JtU3Vic3RpdHV0aW9u
KCk7CiAgICAgCiAgICAgLy8gRnJlZSB2YWx1ZXMgYXJlIHRob3NlIHdob3NlIHByZXNlbmNlIGlz
IGd1YXJhbnRlZWQgbm90IHRvIGh1cnQgY29kZS4gV2UgY29uc2lkZXIgY29uc3RhbnRzLAogICAg
IC8vIElkZW50aXRpZXMsIGFuZCBOb3BzIHRvIGJlIGZyZWUuIENvbnN0YW50cyBhcmUgZnJlZSBi
ZWNhdXNlIHdlIGhvaXN0IHRoZW0gdG8gYW4gb3B0aW1hbCBwbGFjZS4KQEAgLTMyMSw2ICszMjgs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElUb0Y6CiAgICAgICAgIGNhc2UgQml0d2lzZUNh
c3Q6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIERlcGVuZDoKICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShudW1BcmdzICE9IDEpKQogICAgICAgICAgICAgICAgIGJhZEtpbmQo
a2luZCwgbnVtQXJncyk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWVSZXAuaAkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWVSZXAuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIC8vIHRoYXQgdGhlIGRlZiBoYXBwZW5zIGJlZm9yZSBhbnkgb2YgdGhl
IGVmZmVjdHMgb2YgdGhlIHN0YWNrbWFwLiBUaGlzIGlzIG9ubHkgdmFsaWQgZm9yCiAgICAgICAg
IC8vIHRoZSByZXN1bHQgY29uc3RyYWludCBvZiBhIFBhdGNocG9pbnQuCiAgICAgICAgIFNvbWVF
YXJseVJlZ2lzdGVyLAotCisgICAgICAgIAogICAgICAgICAvLyBBcyBhbiBpbnB1dCByZXByZXNl
bnRhdGlvbiwgdGhpcyBmb3JjZXMgYSBwYXJ0aWN1bGFyIHJlZ2lzdGVyLiBBcyBhbiBvdXRwdXQK
ICAgICAgICAgLy8gcmVwcmVzZW50YXRpb24sIHRoaXMgdGVsbHMgdXMgd2hhdCByZWdpc3RlciBC
MyBwaWNrZWQuCiAgICAgICAgIFJlZ2lzdGVyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzV2lkdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1dpZHRoLmNwcAkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzV2lkdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwzOCBAQAogCiAjaW5jbHVk
ZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewor
CitUeXBlIGJlc3RUeXBlKEJhbmsgYmFuaywgV2lkdGggd2lkdGgpCit7CisgICAgc3dpdGNoICh3
aWR0aCkgeworICAgIGNhc2UgV2lkdGg4OgorICAgIGNhc2UgV2lkdGgxNjoKKyAgICBjYXNlIFdp
ZHRoMzI6CisgICAgICAgIHN3aXRjaCAoYmFuaykgeworICAgICAgICBjYXNlIEdQOgorICAgICAg
ICAgICAgcmV0dXJuIEludDMyOworICAgICAgICBjYXNlIEZQOgorICAgICAgICAgICAgcmV0dXJu
IEZsb2F0OworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiBWb2lkOworICAgIGNhc2UgV2lkdGg2NDoKKyAgICAgICAgc3dpdGNo
IChiYW5rKSB7CisgICAgICAgIGNhc2UgR1A6CisgICAgICAgICAgICByZXR1cm4gSW50NjQ7Cisg
ICAgICAgIGNhc2UgRlA6CisgICAgICAgICAgICByZXR1cm4gRG91YmxlOworICAgICAgICB9Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBWb2lk
OworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBW
b2lkOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKwogbmFtZXNwYWNlIFdURiB7CiAK
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkIzOjpXaWR0aCB3aWR0
aCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkocmV2aXNpb24gMjEzNjQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkod29ya2luZyBjb3B5KQpAQCAt
NjUsOCArNjUsMjEgQEAgaW5saW5lIFdpZHRoIHdpZHRoRm9yVHlwZShUeXBlIHR5cGUpCiAgICAg
ICAgIHJldHVybiBXaWR0aDY0OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gV2lkdGg4OwogfQogCitpbmxpbmUgV2lkdGggY2Fub25pY2FsV2lkdGgoV2lkdGgg
d2lkdGgpCit7CisgICAgcmV0dXJuIHN0ZDo6bWF4KFdpZHRoMzIsIHdpZHRoKTsKK30KKworaW5s
aW5lIGJvb2wgaXNDYW5vbmljYWxXaWR0aChXaWR0aCB3aWR0aCkKK3sKKyAgICByZXR1cm4gd2lk
dGggPj0gV2lkdGgzMjsKK30KKworVHlwZSBiZXN0VHlwZShCYW5rIGJhbmssIFdpZHRoIHdpZHRo
KTsKKwogaW5saW5lIFdpZHRoIGNvbnNlcnZhdGl2ZVdpZHRoKEJhbmsgYmFuaykKIHsKICAgICBy
ZXR1cm4gYmFuayA9PSBHUCA/IHBvaW50ZXJXaWR0aCgpIDogV2lkdGg2NDsKQEAgLTk4LDYgKzEx
MSwyMCBAQCBpbmxpbmUgV2lkdGggd2lkdGhGb3JCeXRlcyh1bnNpZ25lZCBieXRlCiAgICAgfQog
fQogCitpbmxpbmUgdWludDY0X3QgbWFzayhXaWR0aCB3aWR0aCkKK3sKKyAgICBzd2l0Y2ggKHdp
ZHRoKSB7CisgICAgY2FzZSBXaWR0aDg6CisgICAgICAgIHJldHVybiAweDAwMDAwMDAwMDAwMDAw
ZmZsbHU7CisgICAgY2FzZSBXaWR0aDE2OgorICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDAwMDBm
ZmZmbGx1OworICAgIGNhc2UgV2lkdGgzMjoKKyAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDBmZmZm
ZmZmZmxsdTsKKyAgICBjYXNlIFdpZHRoNjQ6CisgICAgICAgIHJldHVybiAweGZmZmZmZmZmZmZm
ZmZmZmZsbHU7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogbmFtZXNw
YWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24g
MjEzNjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBaXJWYWxpZGF0ZS5oIgogI2luY2x1
ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkIzQXJndW1l
bnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQXRvbWljVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jh
c2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAi
QjNDb21waWxhdGlvbi5oIgpAQCAtNDQsNiArNDUsNyBAQAogI2luY2x1ZGUgIkIzTWF0aEV4dHJh
cy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKICNpbmNsdWRlICJCM01vdmVDb25zdGFu
dHMuaCIKKyNpbmNsdWRlICJCM05hdGl2ZVRyYWl0cy5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJl
LmgiCiAjaW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgogI2luY2x1ZGUgIkIzU2xvdEJhc2VW
YWx1ZS5oIgpAQCAtMjk3LDYgKzI5OSwyNCBAQCB2b2lkIHRlc3RMb2FkNDIoKQogICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSA0Mik7CiB9CiAKK3ZvaWQgdGVzdExvYWRBY3E0
MigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBpbnQgeCA9IDQyOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgJngpLAorICAgICAgICAgICAgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJhbmdlKDQy
KSkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgp
KQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOworICAgIENIRUNL
KGludm9rZTxpbnQ+KCpjb2RlKSA9PSA0Mik7Cit9CisKIHZvaWQgdGVzdExvYWRXaXRoT2Zmc2V0
SW1wbChpbnQzMl90IG9mZnNldDY0LCBpbnQzMl90IG9mZnNldDMyKQogewogICAgIHsKQEAgLTU3
NDgsNiArNTc2OCwzNSBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQzMihpbnQgYW1vdW50KQogICAg
IENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExv
YWRBY3EzMihpbnQgYW1vdW50KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50IHNsb3QgPSAzNzsKKyAgICBDb25z
dFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAg
ICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50
MzIsIE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAor
ICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0
KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0so
IWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1v
dW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tMzIoaW50IGFtb3VudCkKIHsKICAg
ICBQcm9jZWR1cmUgcHJvYzsKQEAgLTU3OTIsNiArNTg0MSw3NCBAQCB2b2lkIHRlc3RTdG9yZUFk
ZExvYWQ4KGludCBhbW91bnQsIEIzOjpPCiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7
CiB9CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgoaW50IGFtb3VudCwgQjM6Ok9wY29k
ZSBsb2FkT3Bjb2RlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgaW50OF90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0
clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgcHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIGxvYWRPcGNvZGUs
IE9yaWdpbigpLCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAorICAg
ICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAw
KSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkp
IHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAgICAgICAg
Y2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hFQ0soIWlu
dm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50
KTsKK30KKwordm9pZCB0ZXN0U3RvcmVSZWxBZGRGZW5jZUxvYWRBY3E4KGludCBhbW91bnQsIEIz
OjpPcGNvZGUgbG9hZE9wY29kZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIGludDhfdCBzbG90ID0gMzc7CisgICAg
Q29uc3RQdHJWYWx1ZSogc2xvdFB0ciA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgJnNsb3QpOworICAgIFZhbHVlKiBsb2FkZWRWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigp
LCBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAgICBQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigweGJlZWYpLCAmc2xvdCk7CisgICAgICAgIH0pOworICAgIHBhdGNocG9p
bnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5m
ZW5jZSA9IHRydWU7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAg
cHJvYywgU3RvcmU4LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICBsb2FkZWRWYWx1
ZSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkp
LAorICAgICAgICBzbG90UHRyLCAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoNDIpKTsKKyAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAwKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FS
TTY0KCkpIHsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKKyAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKKyAgICB9CisgICAgQ0hF
Q0soIWludm9rZTxpbnQ+KCpjb2RlLCBhbW91bnQpKTsKKyAgICBDSEVDSyhzbG90ID09IDM3ICsg
YW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tOChpbnQgYW1vdW50LCBCMzo6
T3Bjb2RlIGxvYWRPcGNvZGUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01ODM2LDYgKzU5
NTMsMzUgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkMTYoaW50IGFtb3VudCwgQjM6OgogICAgIENI
RUNLKHNsb3QgPT0gMzcgKyBhbW91bnQpOwogfQogCit2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRB
Y3ExNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBpbnQx
Nl90IHNsb3QgPSAzNzsKKyAgICBDb25zdFB0clZhbHVlKiBzbG90UHRyID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgU3RvcmUxNiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAg
ICAgICAgICAgICBwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwgc2xvdFB0ciwgMCwgSGVhcFJh
bmdlKDQyKSwgSGVhcFJhbmdlKDQyKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQy
KSwgSGVhcFJhbmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGls
ZShwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAi
c3RsIik7CisgICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7Cisg
ICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3VudCk7Cit9CisKIHZvaWQgdGVzdFN0b3JlQWRkTG9h
ZEltbTE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKIHsKICAgICBQcm9jZWR1
cmUgcHJvYzsKQEAgLTU4NzgsNiArNjAyNCwzMyBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQ2NChp
bnQgYW1vdW50KQogICAgIENIRUNLKHNsb3QgPT0gMzcwMDAwMDAwMDBsbCArIGFtb3VudCk7CiB9
CiAKK3ZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTY0KGludCBhbW91bnQpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBpbnQ2NF90IHNsb3QgPSAzNzAwMDAwMDAwMGxsOworICAgIENvbnN0UHRyVmFsdWUqIHNsb3RQ
dHIgPSByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90
KTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9y
ZSwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNs
b3RQdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSg0MikpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSwKKyAgICAgICAgc2xvdFB0ciwgMCwgSGVhcFJhbmdlKDQyKSwgSGVhcFJh
bmdlKDQyKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsK
KyAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2Rl
LCAibGRhIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7Cisg
ICAgfQorICAgIENIRUNLKCFpbnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CisgICAgQ0hFQ0so
c2xvdCA9PSAzNzAwMDAwMDAwMGxsICsgYW1vdW50KTsKK30KKwogdm9pZCB0ZXN0U3RvcmVBZGRM
b2FkSW1tNjQoaW50NjRfdCBhbW91bnQpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMzc5
MSw3ICsxMzk2NCw3IEBAIHZvaWQgdGVzdFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCiAgICAg
Y29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpOwogICAgIHVuc2lnbmVkIHN0b3JlQ291bnQgPSAwOwog
ICAgIGZvciAoVmFsdWUqIHZhbHVlIDogcHJvYy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoTWVt
b3J5VmFsdWU6OmlzU3RvcmUodmFsdWUtPm9wY29kZSgpKSkKKyAgICAgICAgaWYgKGlzU3RvcmUo
dmFsdWUtPm9wY29kZSgpKSkKICAgICAgICAgICAgIHN0b3JlQ291bnQrKzsKICAgICB9CiAgICAg
Q0hFQ0tfRVEoc3RvcmVDb3VudCwgMnUpOwpAQCAtMTM5OTcsNiArMTQxNzAsNyBAQCB2b2lkIHRl
c3RYODZMZWFBZGRBZGQoKQogICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgcmVzdWx0KTsKICAgICAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2Mp
OworICAgIENIRUNLX0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAoMSArIDIpICsg
MTAwKTsKICAgICBjaGVja0Rpc2Fzc2VtYmx5KAogICAgICAgICAqY29kZSwKICAgICAgICAgWyZd
IChjb25zdCBjaGFyKiBkaXNhc3NlbWJseSkgLT4gYm9vbCB7CkBAIC0xNDAwNCw3ICsxNDE3OCw2
IEBAIHZvaWQgdGVzdFg4NkxlYUFkZEFkZCgpCiAgICAgICAgICAgICAgICAgfHwgc3Ryc3RyKGRp
c2Fzc2VtYmx5LCAibGVhIDB4NjQoJXJzaSwlcmRpKSwgJXJheCIpOwogICAgICAgICB9LAogICAg
ICAgICAiRXhwZWN0ZWQgdG8gZmluZCBzb21ldGhpbmcgbGlrZSBsZWEgMHg2NCglcmRpLCVyc2kp
LCAlcmF4IGJ1dCBkaWRuJ3QhIik7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90PigqY29k
ZSwgMSwgMiksICgxICsgMikgKyAxMDApOwogfQogCiB2b2lkIHRlc3RYODZMZWFBZGRTaGxSaWdo
dCgpCkBAIC0xNDA0MSw2ICsxNDIxNCw3IEBAIHZvaWQgdGVzdFg4NkxlYUFkZFNobExlZnRTY2Fs
ZTEoKQogICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0KTsKICAgICAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIENIRUNL
X0VRKGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDEsIDIpLCAxICsgMik7CiAgICAgY2hlY2tEaXNh
c3NlbWJseSgKICAgICAgICAgKmNvZGUsCiAgICAgICAgIFsmXSAoY29uc3QgY2hhciogZGlzYXNz
ZW1ibHkpIC0+IGJvb2wgewpAQCAtMTQwNDgsNyArMTQyMjIsNiBAQCB2b2lkIHRlc3RYODZMZWFB
ZGRTaGxMZWZ0U2NhbGUxKCkKICAgICAgICAgICAgICAgICB8fCBzdHJzdHIoZGlzYXNzZW1ibHks
ICJsZWEgKCVyc2ksJXJkaSksICVyYXgiKTsKICAgICAgICAgfSwKICAgICAgICAgIkV4cGVjdGVk
IHRvIGZpbmQgc29tZXRoaW5nIGxpa2UgbGVhICglcmRpLCVyc2kpLCAlcmF4IGJ1dCBkaWRuJ3Qh
Iik7Ci0gICAgQ0hFQ0tfRVEoaW52b2tlPGludHB0cl90PigqY29kZSwgMSwgMiksIDEgKyAyKTsK
IH0KIAogdm9pZCB0ZXN0WDg2TGVhQWRkU2hsTGVmdFNjYWxlMigpCkBAIC0xNDI3Nyw2ICsxNDQ1
MCw2ODQgQEAgdm9pZCB0ZXN0T3B0aW1pemVNYXRlcmlhbGl6YXRpb24oKQogICAgIENIRUNLKGZv
dW5kKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1dlYWtDQVMo
KQoreworICAgIFR5cGUgdHlwZSA9IE5hdGl2ZVRyYWl0czxUPjo6dHlwZTsKKyAgICBXaWR0aCB3
aWR0aCA9IE5hdGl2ZVRyYWl0czxUPjo6d2lkdGg7CisgICAgCisgICAgYXV0byBjaGVja015RGlz
YXNzZW1ibHkgPSBbJl0gKENvbXBpbGF0aW9uJiBjb21waWxhdGlvbiwgYm9vbCBmZW5jZWQpIHsK
KyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9u
KGNvbXBpbGF0aW9uLCAibG9jayIpOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24o
Y29tcGlsYXRpb24sICJjbXB4Y2hnIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
ZiAoZmVuY2VkKSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGls
YXRpb24sICJsZGF4Iik7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29t
cGlsYXRpb24sICJzdGx4Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAibGR4Iik7CisgICAgICAgICAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24sICJzdHgiKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAg
QmFzaWNCbG9jayogcmVsb29wID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2Nr
KiBkb25lID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBK
dW1wLCBPcmlnaW4oKSk7CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMocmVsb29wKTsKKyAg
ICAgICAgCisgICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByZWxvb3AtPmFwcGVuZE5ldzxBdG9t
aWNWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCks
IHdpZHRoLAorICAgICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywg
T3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByZWxvb3AtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHB0
cikpOworICAgICAgICByZWxvb3AtPnNldFN1Y2Nlc3NvcnMoZG9uZSwgcmVsb29wKTsKKyAgICAg
ICAgCisgICAgICAgIGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAg
ICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9
IDEzOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAgICAgICBDSEVDS19FUSh2
YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOwor
ICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiByZWxv
b3AgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEp1bXAsIE9yaWdpbigpKTsK
KyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhyZWxvb3ApOworICAgICAgICAKKyAgICAgICAg
cmVsb29wLT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAg
ICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAg
ICAgICAgICAgcmVsb29wLT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwg
NDIpLAorICAgICAgICAgICAgICAgIHJlbG9vcC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcHRyLCAwLCBIZWFwUmFuZ2Uo
NDIpLCBIZWFwUmFuZ2UoKSkpOworICAgICAgICByZWxvb3AtPnNldFN1Y2Nlc3NvcnMoZG9uZSwg
cmVsb29wKTsKKyAgICAgICAgCisgICAgICAgIGRvbmUtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxl
KHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAg
ICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDB4YmVlZikpOworICAg
ICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHko
KmNvZGUsIGZhbHNlKTsKKyAgICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAg
QmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayog
ZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNXZWFrQ0FTLCBPcmln
aW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJv
YywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRD
b25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICBw
dHIpKTsKKyAgICAgICAgcm9vdC0+c2V0U3VjY2Vzc29ycyhzdWNjLCBmYWlsKTsKKyAgICAgICAg
CisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBzdG9yZU9wY29kZShHUCwgd2lkdGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFw
cGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAg
cHRyKTsKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdp
bigpKTsKKyAgICAgICAgCisgICAgICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHBy
b2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAg
ICB2YWx1ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAodmFsdWVbMF0gPT0gNDIpCisgICAgICAg
ICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9r
ZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGlj
X2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAg
IGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2MgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIGZhaWwgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAg
ICAgICBWYWx1ZSogcHRyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWws
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4o
CisgICAgICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29u
c3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAg
IHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3Jp
Z2luKCksIEludDMyLCAwKSkpOworICAgICAgICByb290LT5zZXRTdWNjZXNzb3JzKGZhaWwsIHN1
Y2MpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQLCB3aWR0aCksIE9yaWdpbigpLAorICAgICAg
ICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCks
CisgICAgICAgICAgICBwdHIpOworICAgICAgICBzdWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBd
ID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7CisgICAgICAgIHdoaWxlICh2YWx1ZVswXSA9
PSA0MikKKyAgICAgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBD
SEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsK
KyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0s
IDEzKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9Cisg
ICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIEF0b21pY1dlYWtD
QVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0g
Y29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0
MjsKKyAgICAgICAgdmFsdWVbMV0gPSAxMzsKKyAgICAgICAgd2hpbGUgKCFpbnZva2U8Ym9vbD4o
KmNvZGUsIHZhbHVlKSkgeyB9CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2Fz
dDxUPigweGJlZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAg
CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAgQ0hFQ0so
IWludm9rZTxib29sPigqY29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0s
IHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwor
ICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAg
ICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICAgICAg
ICAgIHByb2MsIEF0b21pY1dlYWtDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwK
KyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2Mp
OworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2
YWx1ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAoaW52b2tlPGJvb2w+KCpjb2RlLCB2YWx1ZSkp
IHsgfQorICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7
CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIAorICAgICAgICB2YWx1
ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKGludm9rZTxib29sPigq
Y29kZSwgdmFsdWUpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+
KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015
RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4o
CisgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljV2Vha0NBUywgT3JpZ2luKCksIHdpZHRoLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0
eXBlLCA0MiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywg
T3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
LAorICAgICAgICAgICAgICAgIDQyKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQy
OworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICB3aGlsZSAoIWludm9rZTxib29sPigq
Y29kZSwgYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZSkgLSA0MikpIHsgfQorICAgICAgICBD
SEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIAorICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19j
YXN0PFQ+KDMwMCk7CisgICAgICAgIENIRUNLKCFpbnZva2U8Ym9vbD4oKmNvZGUsIGJpdHdpc2Vf
Y2FzdDxpbnRwdHJfdD4odmFsdWUpIC0gNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0s
IHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOwor
ICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0b21pY1N0cm9uZ0NBUygpCit7CisgICAgVHlw
ZSB0eXBlID0gTmF0aXZlVHJhaXRzPFQ+Ojp0eXBlOworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZl
VHJhaXRzPFQ+Ojp3aWR0aDsKKyAgICAKKyAgICBhdXRvIGNoZWNrTXlEaXNhc3NlbWJseSA9IFsm
XSAoQ29tcGlsYXRpb24mIGNvbXBpbGF0aW9uLCBib29sIGZlbmNlZCkgeworICAgICAgICBpZiAo
aXNYODYoKSkgeworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oY29tcGlsYXRpb24s
ICJsb2NrIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwg
ImNtcHhjaGciKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmZW5jZWQpIHsK
KyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkYXgi
KTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0
bHgiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2hlY2tVc2VzSW5z
dHJ1Y3Rpb24oY29tcGlsYXRpb24sICJsZHgiKTsKKyAgICAgICAgICAgICAgICBjaGVja1VzZXNJ
bnN0cnVjdGlvbihjb21waWxhdGlvbiwgInN0eCIpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfTsKKyAgICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBz
dWNjID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBmYWlsID0gcHJvYy5h
ZGRCbG9jaygpOworICAgICAgICAKKyAgICAgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJy
YW5jaCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIEVxdWFsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBBdG9t
aWNTdHJvbmdDQVMsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSwKKyAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4
YmVlZiksCisgICAgICAgICAgICAgICAgICAgIHB0ciksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDQyKSkpOworICAgICAgICBy
b290LT5zZXRTdWNjZXNzb3JzKHN1Y2MsIGZhaWwpOworICAgICAgICAKKyAgICAgICAgc3VjYy0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIHN0b3JlT3Bjb2RlKEdQ
LCB3aWR0aCksIE9yaWdpbigpLAorICAgICAgICAgICAgc3VjYy0+YXBwZW5kSW50Q29uc3RhbnQo
cHJvYywgT3JpZ2luKCksIHR5cGUsIDEwMCksCisgICAgICAgICAgICBwdHIpOworICAgICAgICBz
dWNjLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAgICAK
KyAgICAgICAgZmFpbC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsK
KyAgICAgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQg
dmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNDI7CisgICAgICAgIHZhbHVlWzFdID0gMTM7
CisgICAgICAgIGludm9rZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2
YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMTAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFd
LCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsKKyAgICAgICAg
aW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBz
dGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAg
ICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAg
CisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBF
cXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1Zh
bHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4o
KSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHBy
b2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAg
ICAgICAgICBwdHIsIDAsIEhlYXBSYW5nZSg0MiksIEhlYXBSYW5nZSgpKSwKKyAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSk7
CisgICAgICAgIHJvb3QtPnNldFN1Y2Nlc3NvcnMoc3VjYywgZmFpbCk7CisgICAgICAgIAorICAg
ICAgICBzdWNjLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgc3Rv
cmVPcGNvZGUoR1AsIHdpZHRoKSwgT3JpZ2luKCksCisgICAgICAgICAgICBzdWNjLT5hcHBlbmRJ
bnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMTAwKSwKKyAgICAgICAgICAgIHB0cik7
CisgICAgICAgIHN1Y2MtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7
CisgICAgICAgIAorICAgICAgICBmYWlsLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwg
T3JpZ2luKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsK
KyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAgdmFs
dWVbMV0gPSAxMzsKKyAgICAgICAgaW52b2tlPHZvaWQ+KCpjb2RlLCB2YWx1ZSk7CisgICAgICAg
IENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigxMDApKTsKKyAgICAgICAgQ0hFQ0tf
RVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigzMDAp
OworICAgICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEo
dmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsx
XSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIGZhbHNlKTsKKyAgICB9
CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogc3VjYyA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZmFpbCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBwdHIgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCcmFuY2gsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBOb3RFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ry
b25nQ0FTLCBPcmlnaW4oKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYp
LAorICAgICAgICAgICAgICAgICAgICBwdHIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MikpKTsKKyAgICAgICAgcm9vdC0+
c2V0U3VjY2Vzc29ycyhmYWlsLCBzdWNjKTsKKyAgICAgICAgCisgICAgICAgIHN1Y2MtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBzdG9yZU9wY29kZShHUCwgd2lk
dGgpLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHN1Y2MtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCB0eXBlLCAxMDApLAorICAgICAgICAgICAgcHRyKTsKKyAgICAgICAgc3VjYy0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKKyAgICAgICAgCisgICAg
ICAgIGZhaWwtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAg
ICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBUIHZhbHVl
WzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAg
ICAgICBpbnZva2U8dm9pZD4oKmNvZGUsIHZhbHVlKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVb
MF0sIHN0YXRpY19jYXN0PFQ+KDEwMCkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMp
OworICAgICAgICB2YWx1ZVswXSA9IHN0YXRpY19jYXN0PFQ+KDMwMCk7CisgICAgICAgIGludm9r
ZTx2b2lkPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGlj
X2Nhc3Q8VD4oMzAwKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAg
IGNoZWNrTXlEaXNhc3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21p
Y1ZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBBdG9taWNTdHJvbmdDQVMsIE9yaWdpbigp
LCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0
YW50KHByb2MsIE9yaWdpbigpLCB0eXBlLCAweGJlZWYpLAorICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9j
KTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAgICAgdmFsdWVbMF0gPSA0MjsKKyAgICAgICAg
dmFsdWVbMV0gPSAxMzsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVuYW1lIE5hdGl2ZVRy
YWl0czxUPjo6Q2Fub25pY2FsVHlwZT4oKmNvZGUsIHZhbHVlKSwgNDIpOworICAgICAgICBDSEVD
S19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMHhiZWVmKSk7CisgICAgICAgIENIRUNLX0VR
KHZhbHVlWzFdLCAxMyk7CisgICAgICAgIHZhbHVlWzBdID0gc3RhdGljX2Nhc3Q8VD4oMzAwKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHR5cGVuYW1lIE5hdGl2ZVRyYWl0czxUPjo6Q2Fub25p
Y2FsVHlwZT4oKmNvZGUsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8dHlwZW5hbWUgTmF0aXZlVHJhaXRz
PFQ+OjpDYW5vbmljYWxUeXBlPihzdGF0aWNfY2FzdDxUPigzMDApKSk7CisgICAgICAgIENIRUNL
X0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigzMDApKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFs
dWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2FzdDxUPigtMSk7CisgICAg
ICAgIENIRUNLX0VRKGludm9rZTx0eXBlbmFtZSBOYXRpdmVUcmFpdHM8VD46OkNhbm9uaWNhbFR5
cGU+KCpjb2RlLCB2YWx1ZSksIHN0YXRpY19jYXN0PHR5cGVuYW1lIE5hdGl2ZVRyYWl0czxUPjo6
Q2Fub25pY2FsVHlwZT4oc3RhdGljX2Nhc3Q8VD4oLTEpKSk7CisgICAgICAgIENIRUNLX0VRKHZh
bHVlWzBdLCBzdGF0aWNfY2FzdDxUPigtMSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVsxXSwg
MTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAg
ICAKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgRXF1YWwsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAg
ICAgICAgICAgIHByb2MsIEF0b21pY1N0cm9uZ0NBUywgT3JpZ2luKCksIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlw
ZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9j
LCBPcmlnaW4oKSwgdHlwZSwgMHhiZWVmKSwKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBP
cmlnaW4oKSwgdHlwZSwgNDIpKSk7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21w
aWxlKHByb2MpOworICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOwor
ICAgICAgICB2YWx1ZVsxXSA9IDEzOworICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUs
IHZhbHVlKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJl
ZWYpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0g
PSBzdGF0aWNfY2FzdDxUPigzMDApOworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2Rl
LCB2YWx1ZSkpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgc3RhdGljX2Nhc3Q8VD4oMzAw
KSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMyk7CisgICAgICAgIGNoZWNrTXlEaXNh
c3NlbWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBFcXVhbCwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgTm90RXF1YWwsIE9yaWdp
bigpLAorICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXRvbWljVmFsdWU+KAor
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvYywgQXRvbWljU3Ryb25nQ0FTLCBPcmlnaW4oKSwg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRJbnRDb25zdGFudChw
cm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUsIDB4YmVlZiksCisgICAgICAg
ICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgNDIpKSwKKyAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MCkpKTsKKyAgICAgICAgICAgIAorICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOwor
ICAgICAgICBUIHZhbHVlWzJdOworICAgICAgICB2YWx1ZVswXSA9IDQyOworICAgICAgICB2YWx1
ZVsxXSA9IDEzOworICAgICAgICBDSEVDSyhpbnZva2U8Ym9vbD4oKmNvZGUsIHZhbHVlKSk7Cisg
ICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBzdGF0aWNfY2FzdDxUPigweGJlZWYpKTsKKyAgICAg
ICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEzKTsKKyAgICAgICAgdmFsdWVbMF0gPSBzdGF0aWNfY2Fz
dDxUPigzMDApOworICAgICAgICBDSEVDSyghaW52b2tlPGJvb2w+KCpjb2RlLCAmdmFsdWUpKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMF0sIHN0YXRpY19jYXN0PFQ+KDMwMCkpOworICAgICAg
ICBDSEVDS19FUSh2YWx1ZVsxXSwgMTMpOworICAgICAgICBjaGVja015RGlzYXNzZW1ibHkoKmNv
ZGUsIHRydWUpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgdGVzdEF0
b21pY1hjaGcoQjM6Ok9wY29kZSBvcGNvZGUpCit7CisgICAgVHlwZSB0eXBlID0gTmF0aXZlVHJh
aXRzPFQ+Ojp0eXBlOworICAgIFdpZHRoIHdpZHRoID0gTmF0aXZlVHJhaXRzPFQ+Ojp3aWR0aDsK
KyAgICAKKyAgICBhdXRvIGRvVGhlTWF0aCA9IFsmXSAoVCYgbWVtb3J5LCBUIG9wZXJhbmQpIC0+
IFQgeworICAgICAgICBUIG9sZFZhbHVlID0gbWVtb3J5OworICAgICAgICBzd2l0Y2ggKG9wY29k
ZSkgeworICAgICAgICBjYXNlIEF0b21pY1hjaGdBZGQ6CisgICAgICAgICAgICBtZW1vcnkgKz0g
b3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0b21pY1hjaGdBbmQ6
CisgICAgICAgICAgICBtZW1vcnkgJj0gb3BlcmFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEF0b21pY1hjaGdPcjoKKyAgICAgICAgICAgIG1lbW9yeSB8PSBvcGVyYW5kOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZ1N1YjoKKyAgICAgICAg
ICAgIG1lbW9yeSAtPSBvcGVyYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QXRvbWljWGNoZ1hvcjoKKyAgICAgICAgICAgIG1lbW9yeSBePSBvcGVyYW5kOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXRvbWljWGNoZzoKKyAgICAgICAgICAgIG1lbW9yeSA9
IG9wZXJhbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG9sZFZhbHVlOworICAgIH07CisgICAgCisgICAgYXV0byBvbGRWYWx1ZSA9IFsmXSAoVCBt
ZW1vcnksIFQgb3BlcmFuZCkgLT4gVCB7CisgICAgICAgIHJldHVybiBkb1RoZU1hdGgobWVtb3J5
LCBvcGVyYW5kKTsKKyAgICB9OworICAgIAorICAgIGF1dG8gbmV3VmFsdWUgPSBbJl0gKFQgbWVt
b3J5LCBUIG9wZXJhbmQpIC0+IFQgeworICAgICAgICBkb1RoZU1hdGgobWVtb3J5LCBvcGVyYW5k
KTsKKyAgICAgICAgcmV0dXJuIG1lbW9yeTsKKyAgICB9OworICAgIAorICAgIGF1dG8gY2hlY2tN
eURpc2Fzc2VtYmx5ID0gWyZdIChDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGJvb2wgZmVuY2Vk
KSB7CisgICAgICAgIGlmIChpc1g4NigpKQorICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oY29tcGlsYXRpb24sICJsb2NrIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYg
KGZlbmNlZCkgeworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0
aW9uLCAibGRheCIpOworICAgICAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBp
bGF0aW9uLCAic3RseCIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbihjb21waWxhdGlvbiwgImxkeCIpOworICAgICAgICAgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKGNvbXBpbGF0aW9uLCAic3R4Iik7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0b21pY1ZhbHVlPigKKyAgICAgICAgICAg
ICAgICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwgdHlwZSwgMSksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBp
bGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVlWzBdID0gNTsKKyAg
ICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxUPigqY29kZSwg
dmFsdWUpLCBvbGRWYWx1ZSg1LCAxKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzBdLCBuZXdW
YWx1ZSg1LCAxKSk7CisgICAgICAgIENIRUNLX0VRKHZhbHVlWzFdLCAxMDApOworICAgICAgICBj
aGVja015RGlzYXNzZW1ibHkoKmNvZGUsIHRydWUpOworICAgIH0KKyAgICAKKyAgICB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwgd2lkdGgsCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5
cGUsIDQyKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICAKKyAgICAg
ICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKyAgICAgICAgVCB2YWx1ZVsyXTsKKyAgICAg
ICAgdmFsdWVbMF0gPSA1OworICAgICAgICB2YWx1ZVsxXSA9IDEwMDsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPFQ+KCpjb2RlLCB2YWx1ZSksIG9sZFZhbHVlKDUsIDQyKSk7CisgICAgICAgIENI
RUNLX0VRKHZhbHVlWzBdLCBuZXdWYWx1ZSg1LCA0MikpOworICAgICAgICBDSEVDS19FUSh2YWx1
ZVsxXSwgMTAwKTsKKyAgICAgICAgY2hlY2tNeURpc2Fzc2VtYmx5KCpjb2RlLCB0cnVlKTsKKyAg
ICB9CisgICAgCisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEF0
b21pY1ZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCksIHdpZHRoLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIHR5cGUs
IDQyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAgICAgIHZhbHVl
WzBdID0gNTsKKyAgICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAgIGludm9rZTxUPigqY29k
ZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFsdWUoNSwgNDIpKTsK
KyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAgICAgIGNoZWNrTXlEaXNhc3Nl
bWJseSgqY29kZSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBdG9taWNWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBvcGNv
ZGUsIE9yaWdpbigpLCB3aWR0aCwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZEludENvbnN0YW50
KHByb2MsIE9yaWdpbigpLCB0eXBlLCA0MiksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCks
CisgICAgICAgICAgICAwLCBIZWFwUmFuZ2UoNDIpLCBIZWFwUmFuZ2UoKSk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIFQgdmFsdWVbMl07CisgICAg
ICAgIHZhbHVlWzBdID0gNTsKKyAgICAgICAgdmFsdWVbMV0gPSAxMDA7CisgICAgICAgIGludm9r
ZTxUPigqY29kZSwgdmFsdWUpOworICAgICAgICBDSEVDS19FUSh2YWx1ZVswXSwgbmV3VmFsdWUo
NSwgNDIpKTsKKyAgICAgICAgQ0hFQ0tfRVEodmFsdWVbMV0sIDEwMCk7CisgICAgICAgIGNoZWNr
TXlEaXNhc3NlbWJseSgqY29kZSwgZmFsc2UpOworICAgIH0KK30KKwordm9pZCB0ZXN0RGVwZW5k
MzIoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHB0ciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1
ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMy
LCBPcmlnaW4oKSwgcHRyLCAwKTsKKyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPigKKyAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmln
aW4oKSwgcHRyLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgICAgICBwcm9jLCBaRXh0MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRGVwZW5kLCBPcmlnaW4oKSwgZmlyc3QpKSksCisgICAgICAg
IDQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmln
aW4oKSwgZmlyc3QsIHNlY29uZCkpOworICAgIAorICAgIGludDMyX3QgdmFsdWVzWzJdOworICAg
IHZhbHVlc1swXSA9IDQyOworICAgIHZhbHVlc1sxXSA9IDB4YmVlZjsKKyAgICAKKyAgICBhdXRv
IGNvZGUgPSBjb21waWxlKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKCpjb2RlLCAiZW9yIik7CisgICAgZWxzZSBpZiAoaXNYODYoKSkgewor
ICAgICAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbigqY29kZSwgIm1mZW5jZSIpOworICAg
ICAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbigqY29kZSwgImxvY2siKTsKKyAgICB9Cisg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCB2YWx1ZXMpLCA0MiArIDB4YmVlZik7
Cit9CisKK3ZvaWQgdGVzdERlcGVuZDY0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBwdHIgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGZpcnN0ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHB0ciwgMCk7CisgICAgVmFsdWUqIHNl
Y29uZCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExvYWQs
IEludDY0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIHB0ciwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRGVwZW5kLCBPcmlnaW4oKSwgZmlyc3QpKSwKKyAgICAgICAgOCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigp
LCBmaXJzdCwgc2Vjb25kKSk7CisgICAgCisgICAgaW50NjRfdCB2YWx1ZXNbMl07CisgICAgdmFs
dWVzWzBdID0gNDI7CisgICAgdmFsdWVzWzFdID0gMHhiZWVmOworICAgIAorICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGUocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsICJlb3IiKTsKKyAgICBlbHNlIGlmIChpc1g4NigpKSB7CisgICAg
ICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibWZlbmNlIik7CisgICAgICAg
IGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibG9jayIpOworICAgIH0KKyAgICBD
SEVDS19FUShpbnZva2U8aW50NjRfdD4oKmNvZGUsIHZhbHVlcyksIDQyICsgMHhiZWVmKTsKK30K
Kwogdm9pZCB0ZXN0V2FzbUJvdW5kc0NoZWNrKHVuc2lnbmVkIG9mZnNldCkKIHsKICAgICBQcm9j
ZWR1cmUgcHJvYzsKQEAgLTE0MzcwLDYgKzE1MjIxLDEzIEBAIGRvdWJsZSBuZWdhdGl2ZVplcm8o
KQogICAgIHJldHVybiAtemVybygpOwogfQogCisjZGVmaW5lIFJVTl9OT1codGVzdCkgZG8geyAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghc2hvdWxkUnVuKCN0ZXN0KSkgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIGRhdGFMb2coI3Rlc3QgIi4uLlxuIik7ICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIHRlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGRhdGFMb2coI3Rlc3QgIjogT0shXG4iKTsgICAgICAgICAgICAgICBcCisgICAgfSB3
aGlsZSAoZmFsc2UpCiAjZGVmaW5lIFJVTih0ZXN0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgICAgIGlmICghc2hvdWxkUnVuKCN0ZXN0KSkgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0x
NDQyMSwxMiArMTUyNzksMTEgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgICAg
ICByZXR1cm4gIWZpbHRlciB8fCAhIXN0cmNhc2VzdHIodGVzdE5hbWUsIGZpbHRlcik7CiAgICAg
fTsKIAotICAgIC8vIFdlIHJ1biB0aGlzIHRlc3QgZmlyc3QgYmVjYXVzZSBpdCBmaWRkbGVzIHdp
dGggc29tZQotICAgIC8vIEpTQyBvcHRpb25zLgotICAgIHRlc3RUZXJtaW5hbFBhdGNocG9pbnRU
aGF0TmVlZHNUb0JlU3BpbGxlZDIoKTsKKyAgICBSVU5fTk9XKHRlc3RUZXJtaW5hbFBhdGNocG9p
bnRUaGF0TmVlZHNUb0JlU3BpbGxlZDIoKSk7CiAKICAgICBSVU4odGVzdDQyKCkpOwogICAgIFJV
Tih0ZXN0TG9hZDQyKCkpOworICAgIFJVTih0ZXN0TG9hZEFjcTQyKCkpOwogICAgIFJVTih0ZXN0
TG9hZE9mZnNldEltbTlNYXgoKSk7CiAgICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1heFBsdXNP
bmUoKSk7CiAgICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1heFBsdXNUd28oKSk7CkBAIC0xNTA5
OSwxNiArMTU5NTYsMjMgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0
ZXN0TmVnMzIoNTIpKTsKICAgICBSVU4odGVzdE5lZ1B0cig1MykpOwogICAgIFJVTih0ZXN0U3Rv
cmVBZGRMb2FkMzIoNDYpKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTMyKDQ2KSk7
CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW0zMig0NikpOwogICAgIFJVTih0ZXN0U3RvcmVB
ZGRMb2FkNjQoNDYwMCkpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxNjQoNDYwMCkp
OwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tNjQoNDYwMCkpOwogICAgIFJVTih0ZXN0U3Rv
cmVBZGRMb2FkOCg0LCBMb2FkOFopKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRkTG9hZEFjcTgo
NCwgTG9hZDhaKSk7CisgICAgUlVOKHRlc3RTdG9yZVJlbEFkZEZlbmNlTG9hZEFjcTgoNCwgTG9h
ZDhaKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW04KDQsIExvYWQ4WikpOwogICAgIFJV
Tih0ZXN0U3RvcmVBZGRMb2FkOCg0LCBMb2FkOFMpKTsKKyAgICBSVU4odGVzdFN0b3JlUmVsQWRk
TG9hZEFjcTgoNCwgTG9hZDhTKSk7CiAgICAgUlVOKHRlc3RTdG9yZUFkZExvYWRJbW04KDQsIExv
YWQ4UykpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMTYoNiwgTG9hZDE2WikpOworICAgIFJV
Tih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYoNiwgTG9hZDE2WikpOwogICAgIFJVTih0ZXN0U3Rv
cmVBZGRMb2FkSW1tMTYoNiwgTG9hZDE2WikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkMTYo
NiwgTG9hZDE2UykpOworICAgIFJVTih0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMTYoNiwgTG9hZDE2
UykpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2FkSW1tMTYoNiwgTG9hZDE2UykpOwogICAgIFJV
Tih0ZXN0U3RvcmVBZGRMb2FkMzJJbmRleCg0NikpOwogICAgIFJVTih0ZXN0U3RvcmVBZGRMb2Fk
SW1tMzJJbmRleCg0NikpOwpAQCAtMTU4MzEsNiArMTY2OTUsNDEgQEAgdm9pZCBydW4oY29uc3Qg
Y2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0TG9hZEJhc2VJbmRleFNoaWZ0MigpKTsKICAgICBS
VU4odGVzdExvYWRCYXNlSW5kZXhTaGlmdDMyKCkpOwogICAgIFJVTih0ZXN0T3B0aW1pemVNYXRl
cmlhbGl6YXRpb24oKSk7CisgICAgCisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDhfdD4o
KSk7CisgICAgUlVOKHRlc3RBdG9taWNXZWFrQ0FTPGludDE2X3Q+KCkpOworICAgIFJVTih0ZXN0
QXRvbWljV2Vha0NBUzxpbnQzMl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1dlYWtDQVM8aW50
NjRfdD4oKSk7CisgICAgUlVOKHRlc3RBdG9taWNTdHJvbmdDQVM8aW50OF90PigpKTsKKyAgICBS
VU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQxNl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0
cm9uZ0NBUzxpbnQzMl90PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1N0cm9uZ0NBUzxpbnQ2NF90
PigpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnQWRkKSk7Cisg
ICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdBZGQpKTsKKyAgICBSVU4o
dGVzdEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ0FkZCkpOworICAgIFJVTih0ZXN0QXRv
bWljWGNoZzxpbnQ2NF90PihBdG9taWNYY2hnQWRkKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hn
PGludDhfdD4oQXRvbWljWGNoZ0FuZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90
PihBdG9taWNYY2hnQW5kKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21p
Y1hjaGdBbmQpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZ0Fu
ZCkpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4X3Q+KEF0b21pY1hjaGdPcikpOworICAg
IFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNYY2hnT3IpKTsKKyAgICBSVU4odGVz
dEF0b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ09yKSk7CisgICAgUlVOKHRlc3RBdG9taWNY
Y2hnPGludDY0X3Q+KEF0b21pY1hjaGdPcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQ4
X3Q+KEF0b21pY1hjaGdTdWIpKTsKKyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50MTZfdD4oQXRv
bWljWGNoZ1N1YikpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQzMl90PihBdG9taWNYY2hn
U3ViKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDY0X3Q+KEF0b21pY1hjaGdTdWIpKTsK
KyAgICBSVU4odGVzdEF0b21pY1hjaGc8aW50OF90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVO
KHRlc3RBdG9taWNYY2hnPGludDE2X3Q+KEF0b21pY1hjaGdYb3IpKTsKKyAgICBSVU4odGVzdEF0
b21pY1hjaGc8aW50MzJfdD4oQXRvbWljWGNoZ1hvcikpOworICAgIFJVTih0ZXN0QXRvbWljWGNo
ZzxpbnQ2NF90PihBdG9taWNYY2hnWG9yKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDhf
dD4oQXRvbWljWGNoZykpOworICAgIFJVTih0ZXN0QXRvbWljWGNoZzxpbnQxNl90PihBdG9taWNY
Y2hnKSk7CisgICAgUlVOKHRlc3RBdG9taWNYY2hnPGludDMyX3Q+KEF0b21pY1hjaGcpKTsKKyAg
ICBSVU4odGVzdEF0b21pY1hjaGc8aW50NjRfdD4oQXRvbWljWGNoZykpOworICAgIFJVTih0ZXN0
RGVwZW5kMzIoKSk7CisgICAgUlVOKHRlc3REZXBlbmQ2NCgpKTsKIAogICAgIFJVTih0ZXN0V2Fz
bUJvdW5kc0NoZWNrKDApKTsKICAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjaygxMDApKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAJKHJldmlzaW9uIDIxMzY0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBAIHVuc2lnbmVkIEFyZzo6anNIYXNoKCkgY29uc3QKICAg
ICBjYXNlIFJlbENvbmQ6CiAgICAgY2FzZSBSZXNDb25kOgogICAgIGNhc2UgRG91YmxlQ29uZDoK
KyAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgcmVzdWx0
ICs9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTEwLDYgKzExMSw5IEBAIHVuc2lnbmVkIEFyZzo6anNIYXNoKCkgY29uc3QKICAgICAgICAgcmVz
dWx0ICs9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCk7CiAgICAgICAgIHJlc3VsdCAr
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQgPj4gMzIpOwogICAgICAgICBicmVhazsK
KyAgICBjYXNlIFNpbXBsZUFkZHI6CisgICAgICAgIHJlc3VsdCArPSBtX2Jhc2UuaW50ZXJuYWxW
YWx1ZSgpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEFkZHI6CiAgICAgICAgIHJlc3VsdCAr
PSBtX29mZnNldDsKICAgICAgICAgcmVzdWx0ICs9IG1fYmFzZS5pbnRlcm5hbFZhbHVlKCk7CkBA
IC0xNTAsNiArMTU0LDkgQEAgdm9pZCBBcmc6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
ICAgICBjYXNlIEJpdEltbTY0OgogICAgICAgICBvdXQucHJpbnRmKCIkMHglbGx4Iiwgc3RhdGlj
X2Nhc3Q8bG9uZyBsb25nIHVuc2lnbmVkPihtX29mZnNldCkpOwogICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBTaW1wbGVBZGRyOgorICAgICAgICBvdXQucHJpbnQoIigiLCBiYXNlKCksICIpIik7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGlmIChvZmZzZXQoKSkK
ICAgICAgICAgICAgIG91dC5wcmludChvZmZzZXQoKSk7CkBAIC0xODIsNiArMTg5LDkgQEAgdm9p
ZCBBcmc6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBjYXNlIERvdWJsZUNvbmQ6
CiAgICAgICAgIG91dC5wcmludChhc0RvdWJsZUNvbmRpdGlvbigpKTsKICAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgU3RhdHVzQ29uZDoKKyAgICAgICAgb3V0LnByaW50KGFzU3RhdHVzQ29uZGl0
aW9uKCkpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTcGVjaWFsOgogICAgICAgICBvdXQu
cHJpbnQocG9pbnRlckR1bXAoc3BlY2lhbCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIyMCw2
ICsyMzAsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAg
Y2FzZSBBcmc6OkJpdEltbTY0OgogICAgICAgICBvdXQucHJpbnQoIkJpdEltbTY0Iik7CiAgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6U2ltcGxlQWRkcjoKKyAgICAgICAgb3V0LnByaW50
KCJTaW1wbGVBZGRyIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFyZzo6QWRkcjoKICAg
ICAgICAgb3V0LnByaW50KCJBZGRyIik7CiAgICAgICAgIHJldHVybjsKQEAgLTI0MSw2ICsyNTQs
OSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnCiAgICAgY2FzZSBB
cmc6OkRvdWJsZUNvbmQ6CiAgICAgICAgIG91dC5wcmludCgiRG91YmxlQ29uZCIpOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBBcmc6OlN0YXR1c0NvbmQ6CisgICAgICAgIG91dC5wcmludCgi
U3RhdHVzQ29uZCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBcmc6OlNwZWNpYWw6CiAg
ICAgICAgIG91dC5wcmludCgiU3BlY2lhbCIpOwogICAgICAgICByZXR1cm47CkBAIC0yODUsNiAr
MzAxLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIGNh
c2UgQXJnOjpFYXJseURlZjoKICAgICAgICAgb3V0LnByaW50KCJFYXJseURlZiIpOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBBcmc6OkVhcmx5WkRlZjoKKyAgICAgICAgb3V0LnByaW50KCJF
YXJseVpEZWYiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQXJnOjpTY3JhdGNoOgogICAg
ICAgICBvdXQucHJpbnQoIlNjcmF0Y2giKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCShyZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3
Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBUaGVzZSBhcmUgdGhlIGFkZHJlc3Nlcy4gSW5z
dHJ1Y3Rpb25zIG1heSBsb2FkIGZyb20gKFVzZSksIHN0b3JlIHRvIChEZWYpLCBvciBldmFsdWF0
ZQogICAgICAgICAvLyAoVXNlQWRkcikgYWRkcmVzc2VzLgorICAgICAgICBTaW1wbGVBZGRyLAog
ICAgICAgICBBZGRyLAogICAgICAgICBTdGFjaywKICAgICAgICAgQ2FsbEFyZywKQEAgLTgyLDYg
KzgzLDcgQEAgcHVibGljOgogICAgICAgICBSZWxDb25kLAogICAgICAgICBSZXNDb25kLAogICAg
ICAgICBEb3VibGVDb25kLAorICAgICAgICBTdGF0dXNDb25kLAogICAgICAgICBTcGVjaWFsLAog
ICAgICAgICBXaWR0aEFyZwogICAgIH07CkBAIC0xNTEsNiArMTUzLDggQEAgcHVibGljOgogICAg
ICAgICAvLyBhcyBVc2UgaGFzIHVuZGVmaW5lZCBiZWhhdmlvcjogdGhlIHVzZSBtYXkgaGFwcGVu
IGJlZm9yZSB0aGUgZGVmLCBvciBpdCBtYXkgaGFwcGVuIGFmdGVyCiAgICAgICAgIC8vIGl0Lgog
ICAgICAgICBFYXJseURlZiwKKyAgICAgICAgICAgIAorICAgICAgICBFYXJseVpEZWYsCiAKICAg
ICAgICAgLy8gU29tZSBpbnN0cnVjdGlvbnMgbmVlZCBhIHNjcmF0Y2ggcmVnaXN0ZXIuIFdlIG1v
ZGVsIHRoaXMgYnkgc2F5aW5nIHRoYXQgdGhlIHRlbXBvcmFyeSBpcwogICAgICAgICAvLyBkZWZp
bmVkIGVhcmx5IGFuZCB1c2VkIGxhdGUuIFRoaXMgcm9sZSBpbXBsaWVzIHRoYXQuCkBAIC0xODYs
NiArMTkwLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNl
QWRkcjoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0yMDYsNiArMjExLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVzZUFk
ZHI6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAg
ICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMjgsNiArMjM0LDcgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIFVzZUFkZHI6CiAgICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAg
Y2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1
cm4gcm9sZTsKICAgICAgICAgY2FzZSBVc2U6CiAgICAgICAgICAgICByZXR1cm4gQ29sZFVzZTsK
QEAgLTI1Myw2ICsyNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgTGF0ZUNvbGRVc2U6CiAg
ICAgICAgIGNhc2UgU2NyYXRjaDoKICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2Fz
ZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNzQsNiArMjgyLDcgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAgY2FzZSBFYXJs
eURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTQsNiArMzAz
LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFpEZWY6CiAgICAgICAgIGNhc2UgVXNlWkRlZjoK
ICAgICAgICAgY2FzZSBFYXJseURlZjoKKyAgICAgICAgY2FzZSBFYXJseVpEZWY6CiAgICAgICAg
IGNhc2UgU2NyYXRjaDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0z
MTUsNiArMzI1LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIExhdGVDb2xkVXNlOgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIEVhcmx5RGVmOgorICAgICAgICBjYXNl
IEVhcmx5WkRlZjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KQEAgLTMzMCw2ICszNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
VXNlQWRkcjoKICAgICAgICAgY2FzZSBMYXRlVXNlOgogICAgICAgICBjYXNlIEVhcmx5RGVmOgor
ICAgICAgICBjYXNlIEVhcmx5WkRlZjoKICAgICAgICAgY2FzZSBTY3JhdGNoOgogICAgICAgICBj
YXNlIExhdGVDb2xkVXNlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU4LDYgKzM3
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBa
RGVmOgogICAgICAgICBjYXNlIFVzZVpEZWY6CisgICAgICAgIGNhc2UgRWFybHlaRGVmOgogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC00MTYsNiArNDI5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpZ0lt
bShiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGFkZHJlc3MpKTsKICAgICB9CiAKKyAgICBzdGF0aWMg
QXJnIHNpbXBsZUFkZHIoQWlyOjpUbXAgcHRyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHB0ci5p
c0dQKCkpOworICAgICAgICBBcmcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gU2lt
cGxlQWRkcjsKKyAgICAgICAgcmVzdWx0Lm1fYmFzZSA9IHB0cjsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKICAgICBzdGF0aWMgQXJnIGFkZHIoQWlyOjpUbXAgYmFzZSwgaW50MzJf
dCBvZmZzZXQgPSAwKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJhc2UuaXNHUCgpKTsKQEAgLTUz
Myw2ICs1NTUsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAor
ICAgIHN0YXRpYyBBcmcgc3RhdHVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6U3RhdHVzQ29uZGl0aW9u
IGNvbmRpdGlvbikKKyAgICB7CisgICAgICAgIEFyZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5t
X2tpbmQgPSBTdGF0dXNDb25kOworICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBjb25kaXRpb247
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgc3RhdGljIEFyZyBzcGVjaWFs
KEFpcjo6U3BlY2lhbCogc3BlY2lhbCkKICAgICB7CiAgICAgICAgIEFyZyByZXN1bHQ7CkBAIC02
MDgsNiArNjM4LDExIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIGJvb2wgaXNT
aW1wbGVBZGRyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBraW5kKCkgPT0gU2ltcGxl
QWRkcjsKKyAgICB9CisKICAgICBib29sIGlzQWRkcigpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4ga2luZCgpID09IEFkZHI7CkBAIC02MzEsNiArNjY2LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNNZW1vcnkoKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKKyAg
ICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAgICBjYXNlIEFkZHI6CiAgICAgICAgIGNhc2Ug
U3RhY2s6CiAgICAgICAgIGNhc2UgQ2FsbEFyZzoKQEAgLTY0MSw2ICs2NzcsMTMgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYW4g
aWRpb21hdGljIHN0YWNrIHJlZmVyZW5jZS4gSXQgbWF5IHJldHVybiBmYWxzZSBmb3Igc29tZSBr
aW5kcyBvZgorICAgIC8vIHN0YWNrIHJlZmVyZW5jZXMuIFRoZSBmb2xsb3dpbmcgaWRpb21zIGFy
ZSByZWNvZ25pemVkOgorICAgIC8vIC0gdGhlIFN0YWNrIGtpbmQKKyAgICAvLyAtIHRoZSBDYWxs
QXJnIGtpbmQKKyAgICAvLyAtIHRoZSBBZGRyIGtpbmQgd2l0aCB0aGUgYmFzZSBiZWluZyBlaXRo
ZXIgU1Agb3IgRlAKKyAgICAvLyBDYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gYXJlIGFsbG93ZWQg
dG8gZXhwZWN0IHRoYXQgaWYgaXQgcmV0dXJucyB0cnVlLCB0aGVuIGl0IG11c3QgYmUgb25lIG9m
CisgICAgLy8gdGhlc2UgZWFzeS10by1yZWNvZ25pemUga2luZHMuIFNvLCBtYWtpbmcgdGhpcyBm
dW5jdGlvbiByZWNvZ25pemUgbW9yZSBraW5kcyBjb3VsZCBicmVhayB0aGluZ3MuCiAgICAgYm9v
bCBpc1N0YWNrTWVtb3J5KCkgY29uc3Q7CiAKICAgICBib29sIGlzUmVsQ29uZCgpIGNvbnN0CkBA
IC02NTgsMTIgKzcwMSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBraW5kKCkgPT0gRG91
YmxlQ29uZDsKICAgICB9CiAKKyAgICBib29sIGlzU3RhdHVzQ29uZCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4ga2luZCgpID09IFN0YXR1c0NvbmQ7CisgICAgfQorCiAgICAgYm9vbCBp
c0NvbmRpdGlvbigpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAg
ICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBE
b3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc3
NCwxMCArODIzLDE2IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBCaWdJbW0p
OwogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJf
dD4obV9vZmZzZXQpKTsKICAgICB9CisgICAgCisgICAgQWlyOjpUbXAgcHRyKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChraW5kKCkgPT0gU2ltcGxlQWRkcik7CisgICAgICAgIHJldHVy
biBtX2Jhc2U7CisgICAgfQogCiAgICAgQWlyOjpUbXAgYmFzZSgpIGNvbnN0CiAgICAgewotICAg
ICAgICBBU1NFUlQoa2luZCgpID09IEFkZHIgfHwga2luZCgpID09IEluZGV4KTsKKyAgICAgICAg
QVNTRVJUKGtpbmQoKSA9PSBTaW1wbGVBZGRyIHx8IGtpbmQoKSA9PSBBZGRyIHx8IGtpbmQoKSA9
PSBJbmRleCk7CiAgICAgICAgIHJldHVybiBtX2Jhc2U7CiAgICAgfQogCkBAIC04NDQsNiArODk5
LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEJpZ0ltbToKICAgICAgICAgY2FzZSBCaXRJbW06
CiAgICAgICAgIGNhc2UgQml0SW1tNjQ6CisgICAgICAgIGNhc2UgU2ltcGxlQWRkcjoKICAgICAg
ICAgY2FzZSBBZGRyOgogICAgICAgICBjYXNlIEluZGV4OgogICAgICAgICBjYXNlIFN0YWNrOgpA
QCAtODUxLDYgKzkwNyw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAg
ICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNhc2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBT
dGF0dXNDb25kOgogICAgICAgICBjYXNlIFNwZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg3MiwxMCArOTI5LDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAgICAgICAgIGNh
c2UgRG91YmxlQ29uZDoKKyAgICAgICAgY2FzZSBTdGF0dXNDb25kOgogICAgICAgICBjYXNlIFNw
ZWNpYWw6CiAgICAgICAgIGNhc2UgV2lkdGhBcmc6CiAgICAgICAgIGNhc2UgSW52YWxpZDoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBTaW1wbGVBZGRyOgogICAgICAg
ICBjYXNlIEFkZHI6CiAgICAgICAgIGNhc2UgSW5kZXg6CiAgICAgICAgIGNhc2UgU3RhY2s6CkBA
IC0xMDQ5LDYgKzExMDgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZEJp
dEltbUZvcm0odmFsdWUoKSk7CiAgICAgICAgIGNhc2UgQml0SW1tNjQ6CiAgICAgICAgICAgICBy
ZXR1cm4gaXNWYWxpZEJpdEltbTY0Rm9ybSh2YWx1ZSgpKTsKKyAgICAgICAgY2FzZSBTaW1wbGVB
ZGRyOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgQWRkcjoKICAgICAg
ICAgY2FzZSBTdGFjazoKICAgICAgICAgY2FzZSBDYWxsQXJnOgpAQCAtMTA1OCw2ICsxMTE5LDcg
QEAgcHVibGljOgogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoK
ICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNlIFN0YXR1c0NvbmQ6CiAgICAg
ICAgIGNhc2UgU3BlY2lhbDoKICAgICAgICAgY2FzZSBXaWR0aEFyZzoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMTA3MCw2ICsxMTMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
c3dpdGNoIChtX2tpbmQpIHsKICAgICAgICAgY2FzZSBUbXA6CisgICAgICAgIGNhc2UgU2ltcGxl
QWRkcjoKICAgICAgICAgY2FzZSBBZGRyOgogICAgICAgICAgICAgZnVuY3RvcihtX2Jhc2UpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTEwLDYgKzExNzMsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBBU1NFUlQoaXNBbnlVc2UoYXJnUm9sZSkgfHwgaXNBbnlEZWYoYXJnUm9sZSkpOwogICAg
ICAgICAgICAgZnVuY3RvcihtX2Jhc2UsIGFyZ1JvbGUsIGFyZ0JhbmssIGFyZ1dpZHRoKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNpbXBsZUFkZHI6CiAgICAgICAgIGNhc2Ug
QWRkcjoKICAgICAgICAgICAgIGZ1bmN0b3IobV9iYXNlLCBVc2UsIEdQLCBhcmdSb2xlID09IFVz
ZUFkZHIgPyBhcmdXaWR0aCA6IHBvaW50ZXJXaWR0aCgpKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTE0NCw5ICsxMjA4LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVChpc0ltbSgp
KTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXJW
YWx1ZSgpKTsKICAgICB9Ci0KKyAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhc0Fk
ZHJlc3MoKSBjb25zdAogICAgIHsKKyAgICAgICAgaWYgKGlzU2ltcGxlQWRkcigpKQorICAgICAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5ncHIoKSk7CiAgICAg
ICAgIEFTU0VSVChpc0FkZHIoKSk7CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhtX2Jhc2UuZ3ByKCksIHN0YXRpY19jYXN0PGludDMyX3Q+KG1fb2Zmc2V0KSk7CiAgICAg
fQpAQCAtMTE3Nyw2ICsxMjQzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24+KG1fb2Zmc2V0KTsKICAgICB9CiAg
ICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbiBhc1N0YXR1c0NvbmRpdGlv
bigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNTdGF0dXNDb25kKCkpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlN0YXR1c0NvbmRpdGlvbj4obV9v
ZmZzZXQpOworICAgIH0KKyAgICAKICAgICAvLyBUZWxscyB5b3UgaWYgdGhlIEFyZyBpcyBpbnZl
cnRpYmxlLiBPbmx5IGNvbmRpdGlvbiBhcmd1bWVudHMgYXJlIGludmVydGlibGUsIGFuZCBldmVu
IGZvciB0aG9zZSwgdGhlcmUKICAgICAvLyBhcmUgYSBmZXcgZXhjZXB0aW9ucyAtIG5vdGFibHkg
T3ZlcmZsb3cgYW5kIFNpZ25lZC4KICAgICBib29sIGlzSW52ZXJ0aWJsZSgpIGNvbnN0CkBAIC0x
MTg0LDYgKzEyNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAg
ICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgorICAgICAgICBjYXNl
IFN0YXR1c0NvbmQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBSZXND
b25kOgogICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjppc0ludmVydGlibGUoYXNS
ZXN1bHRDb25kaXRpb24oKSk7CkBAIC0xMjA0LDYgKzEyNzcsOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gcmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6aW52ZXJ0KGFzUmVzdWx0Q29uZGl0
aW9uKCkpKTsKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgogICAgICAgICAgICAgcmV0dXJuIGRv
dWJsZUNvbmQoTWFjcm9Bc3NlbWJsZXI6OmludmVydChhc0RvdWJsZUNvbmRpdGlvbigpKSk7Cisg
ICAgICAgIGNhc2UgU3RhdHVzQ29uZDoKKyAgICAgICAgICAgIHJldHVybiBzdGF0dXNDb25kKE1h
Y3JvQXNzZW1ibGVyOjppbnZlcnQoYXNTdGF0dXNDb25kaXRpb24oKSkpOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgIHJldHVybiBBcmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw2ICszNSwx
OSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlCiAKIGNvbnN0IGNo
YXIqIGNvbnN0IEJhc2ljQmxvY2s6OmR1bXBQcmVmaXggPSAiIyI7CiAKK3ZvaWQgQmFzaWNCbG9j
azo6c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sgdGFyZ2V0KQoreworICAgIG1fc3VjY2Vz
c29ycy5yZXNpemUoMSk7CisgICAgbV9zdWNjZXNzb3JzWzBdID0gdGFyZ2V0OworfQorCit2b2lk
IEJhc2ljQmxvY2s6OnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrIHRha2VuLCBGcmVxdWVu
dGVkQmxvY2sgbm90VGFrZW4pCit7CisgICAgbV9zdWNjZXNzb3JzLnJlc2l6ZSgyKTsKKyAgICBt
X3N1Y2Nlc3NvcnNbMF0gPSB0YWtlbjsKKyAgICBtX3N1Y2Nlc3NvcnNbMV0gPSBub3RUYWtlbjsK
K30KKwogYm9vbCBCYXNpY0Jsb2NrOjphZGRQcmVkZWNlc3NvcihCYXNpY0Jsb2NrKiBibG9jaykK
IHsKICAgICByZXR1cm4gQjM6OmFkZFByZWRlY2Vzc29yKHRoaXMsIGJsb2NrKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCShyZXZpc2lvbiAy
MTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDcgKzMzLDExIEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25TZXQ7
CisKK25hbWVzcGFjZSBBaXIgewogCiBjbGFzcyBCbG9ja0luc2VydGlvblNldDsKIGNsYXNzIENv
ZGU7CkBAIC05OSw2ICsxMDMsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3VjY2Vzc29yTGlzdCYg
c3VjY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQogICAgIFN1Y2Nlc3Nv
ckxpc3QmIHN1Y2Nlc3NvcnMoKSB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KIAorICAgIHZvaWQg
c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2spOworICAgIHZvaWQgc2V0U3VjY2Vzc29ycyhG
cmVxdWVudGVkQmxvY2ssIEZyZXF1ZW50ZWRCbG9jayk7CisKICAgICBCYXNpY0Jsb2NrKiBzdWNj
ZXNzb3JCbG9jayh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gc3VjY2Vzc29yKGluZGV4
KS5ibG9jaygpOyB9CiAgICAgQmFzaWNCbG9jayomIHN1Y2Nlc3NvckJsb2NrKHVuc2lnbmVkIGlu
ZGV4KSB7IHJldHVybiBzdWNjZXNzb3IoaW5kZXgpLmJsb2NrKCk7IH0KICAgICBTdWNjZXNzb3JD
b2xsZWN0aW9uPEJhc2ljQmxvY2ssIFN1Y2Nlc3Nvckxpc3Q+IHN1Y2Nlc3NvckJsb2NrcygpCkBA
IC0xMzMsNiArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQmxvY2tJbnNlcnRp
b25TZXQ7CiAgICAgZnJpZW5kIGNsYXNzIENvZGU7CiAgICAgZnJpZW5kIGNsYXNzIEluc2VydGlv
blNldDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEIzOjpHZW5lcmljQmxv
Y2tJbnNlcnRpb25TZXQ7CiAgICAgCiAgICAgQmFzaWNCbG9jayh1bnNpZ25lZCBpbmRleCwgZG91
YmxlIGZyZXF1ZW5jeSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QmxvY2tJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFpckJsb2NrSW5z
ZXJ0aW9uU2V0LmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQmFzaWNC
bG9jay5oIgorI2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5o
PgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK0Js
b2NrSW5zZXJ0aW9uU2V0OjpCbG9ja0luc2VydGlvblNldChDb2RlICZjb2RlKQorICAgIDogR2Vu
ZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0KGNvZGUubV9ibG9ja3MpCit7Cit9CisKK0Jsb2NrSW5zZXJ0
aW9uU2V0Ojp+QmxvY2tJbnNlcnRpb25TZXQoKQoreworfQorCit9IH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja0luc2VydGlvblNldC5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNl
cnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCisj
aW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3Bh
Y2UgQWlyIHsKKworY2xhc3MgSW5zZXJ0aW9uU2V0OworCit0eXBlZGVmIEdlbmVyaWNCbG9ja0lu
c2VydGlvblNldDxCYXNpY0Jsb2NrPjo6QmxvY2tJbnNlcnRpb24gQmxvY2tJbnNlcnRpb247CisK
K2NsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IDogcHVibGljIEdlbmVyaWNCbG9ja0luc2VydGlvblNl
dDxCYXNpY0Jsb2NrPiB7CitwdWJsaWM6CisgICAgQmxvY2tJbnNlcnRpb25TZXQoQ29kZSYpOwor
ICAgIH5CbG9ja0luc2VydGlvblNldCgpOworICAgIAorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
ZXZlbnR1YWxseSBpbXBsZW1lbnQgQjM6OkJsb2NrSW5zZXJ0aW9uU2V0J3Mgc3BsaXRGb3J3YXJk
KCkuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTI1
MworfTsKKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVtcEFz
SlMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRHVt
cEFzSlMuY3BwCShyZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckR1bXBBc0pTLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI0NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkFpckR1bXBBc0pTLmgiCi0KLSNpZiBFTkFCTEUoQjNfSklU
KQotCi0jaW5jbHVkZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCi0K
LW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKLQotbmFtZXNw
YWNlIHsKLQotQ1N0cmluZyB2YXJOYW1lRm9yQmxvY2tBdEluZGV4KHVuc2lnbmVkIGluZGV4KQot
ewotICAgIHJldHVybiB0b0NTdHJpbmcoImJiIiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZhck5h
bWUoQmFzaWNCbG9jayogYmxvY2spCi17Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JCbG9ja0F0SW5k
ZXgoYmxvY2stPmluZGV4KCkpOwotfQotCi1DU3RyaW5nIHZhck5hbWVGb3JTdGFja1Nsb3RBdElu
ZGV4KHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoInNsb3QiLCBpbmRl
eCk7Ci19Ci0KLUNTdHJpbmcgdmFyTmFtZShTdGFja1Nsb3QqIHNsb3QpCi17Ci0gICAgcmV0dXJu
IHZhck5hbWVGb3JTdGFja1Nsb3RBdEluZGV4KHNsb3QtPmluZGV4KCkpOwotfQotCi1DU3RyaW5n
IHZhck5hbWUoUmVnIHJlZykKLXsKLSAgICByZXR1cm4gdG9DU3RyaW5nKCJSZWcuIiwgcmVnLmRl
YnVnTmFtZSgpKTsKLX0KLQotQ1N0cmluZyB2YXJOYW1lRm9yVG1wV2l0aEJhbmtBbmRJbmRleChC
YW5rIGJhbmssIHVuc2lnbmVkIGluZGV4KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoYmFuayA9
PSBGUCA/ICJmIiA6ICIiLCAidG1wIiwgaW5kZXgpOwotfQotCi1DU3RyaW5nIHZhck5hbWUoVG1w
IHRtcCkKLXsKLSAgICBpZiAodG1wLmlzUmVnKCkpCi0gICAgICAgIHJldHVybiB2YXJOYW1lKHRt
cC5yZWcoKSk7Ci0gICAgcmV0dXJuIHZhck5hbWVGb3JUbXBXaXRoQmFua0FuZEluZGV4KEFyZyh0
bXApLmJhbmsoKSwgdG1wLnRtcEluZGV4KCkpOwotfQotCi19IC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKLQotdm9pZCBkdW1wQXNKUyhDb2RlJiBjb2RlLCBQcmludFN0cmVhbSYgb3V0KQotewotICAg
IG91dC5wcmludGxuKCJsZXQgY29kZSA9IG5ldyBDb2RlKCk7Iik7Ci0gICAgCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGNvZGUuc2l6ZSgpOyArK2kpCi0gICAgICAgIG91dC5wcmludGxu
KCJsZXQgIiwgdmFyTmFtZUZvckJsb2NrQXRJbmRleChpKSwgIiA9IGNvZGUuYWRkQmxvY2soKTsi
KTsKLSAgICAKLSAgICBvdXQucHJpbnRsbigibGV0IGhhc2g7Iik7Ci0KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY29kZS5zdGFja1Nsb3RzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
U3RhY2tTbG90KiBzbG90ID0gY29kZS5zdGFja1Nsb3RzKClbaV07Ci0gICAgICAgIGlmIChzbG90
KSB7Ci0gICAgICAgICAgICBvdXQucHJpbnRsbigibGV0ICIsIHZhck5hbWUoc2xvdCksICIgPSBj
b2RlLmFkZFN0YWNrU2xvdCgiLCBzbG90LT5ieXRlU2l6ZSgpLCAiLCAiLCBzbG90LT5raW5kKCks
ICIpOyIpOwotICAgICAgICAgICAgaWYgKHNsb3QtPm9mZnNldEZyb21GUCgpKQotICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKHZhck5hbWUoc2xvdCksICIuc2V0T2Zmc2V0RnJvbUZQKCIsIHNs
b3QtPm9mZnNldEZyb21GUCgpLCAiKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJoYXNo
ID0gIiwgdmFyTmFtZShzbG90KSwgIi5oYXNoKCk7Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRs
bigiaWYgKGhhc2ggIT0gIiwgc2xvdC0+anNIYXNoKCksICIpIik7Ci0gICAgICAgICAgICBvdXQu
cHJpbnRsbigiICAgIHRocm93IG5ldyBFcnJvcihcIkJhZCBoYXNoOiBcIiArIGhhc2gpOyIpOwot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJjb2RlLmFkZFN0YWNrU2xv
dCgxLCBTcGlsbCk7Iik7Ci0gICAgfQotICAgIAotICAgIGZvckVhY2hCYW5rKAotICAgICAgICBb
Jl0gKEJhbmsgYmFuaykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZS5udW1U
bXBzKGJhbmspOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAg
ICAgICAgICAgICAgICJsZXQgIiwgdmFyTmFtZUZvclRtcFdpdGhCYW5rQW5kSW5kZXgoYmFuaywg
aSksICIgPSBjb2RlLm5ld1RtcCgiLCBiYW5rLCAiKTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSk7Ci0gICAgCi0gICAgb3V0LnByaW50bG4oImxldCBpbnN0OyIpOwotICAgIG91dC5wcmlu
dGxuKCJsZXQgYXJnOyIpOwotICAgIAotICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBjb2Rl
KSB7Ci0gICAgICAgIGZvciAoRnJlcXVlbnRlZEJsb2NrIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNj
ZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgIHZh
ck5hbWUoYmxvY2spLCAiLnN1Y2Nlc3NvcnMucHVzaChuZXcgRnJlcXVlbnRlZEJsb2NrKCIsCi0g
ICAgICAgICAgICAgICAgdmFyTmFtZShzdWNjZXNzb3IuYmxvY2soKSksICIsICIsIHN1Y2Nlc3Nv
ci5mcmVxdWVuY3koKSwgIikpOyIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3Ig
KEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycygpKQotICAgICAg
ICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayksICIucHJlZGVjZXNzb3JzLnB1c2goIiwg
dmFyTmFtZShwcmVkZWNlc3NvciksICIpOyIpOwotICAgICAgICAKLSAgICAgICAgZm9yIChJbnN0
JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZG8g
c29tZXRoaW5nIGZvciBmbGFncy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3NTEKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0
ID0gbmV3IEluc3QoIiwgaW5zdC5raW5kLm9wY29kZSwgIik7Iik7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGluc3QuZm9yRWFjaEFyZygKLSAgICAgICAgICAgICAgICBbJl0gKEFyZyYgYXJn
LCBBcmc6OlJvbGUsIEJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
YXJnLmtpbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6SW52YWxpZDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VG1wOgotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVhdGVUbXAoIiwgdmFyTmFtZShhcmcudG1wKCkpLCAi
KTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpJbW06Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUltbSgiLCBhcmcudmFsdWUo
KSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6QmlnSW1tOgotICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImFyZyA9IEFyZy5jcmVhdGVCaWdJbW0oIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnQzMl90PihhcmcudmFsdWUoKSksICIsICIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkgPj4gMzIpLCAi
KTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpCaXRJbW06Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBvdXQucHJpbnRsbigiYXJnID0gQXJnLmNyZWF0ZUJpdEltbSgiLCBhcmcu
dmFsdWUoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6Qml0SW1tNjQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYXJnID0gQXJnLmNyZWF0ZUJpdEltbTY0KCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXJnLnZhbHVlKCkpLCAiLCAiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KGFyZy52YWx1ZSgp
ID4+IDMyKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6QWRkcjoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJhcmcgPSBBcmcuY3JlYXRlQWRkcigiLCB2YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAi
LCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlN0
YWNrOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVhdGVTdGFjaygiLCB2YXJOYW1lKGFyZy5zdGFj
a1Nsb3QoKSksICIsICIsIGFyZy5vZmZzZXQoKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFyZzo6Q2FsbEFyZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxu
KCJhcmcgPSBBcmcuY3JlYXRlQ2FsbEFyZygiLCBhcmcub2Zmc2V0KCksICIpOyIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OkluZGV4OgotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50bG4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZyA9IEFyZy5jcmVh
dGVJbmRleCgiLCB2YXJOYW1lKGFyZy5iYXNlKCkpLCAiLCAiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhck5hbWUoYXJnLmluZGV4KCkpLCAiLCAiLCBhcmcuc2NhbGUoKSwgIiwgIiwg
YXJnLm9mZnNldCgpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpSZWxD
b25kOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImFyZyA9IEFyZy5jcmVh
dGVSZWxDb25kKCIsIGFyZy5hc1JlbGF0aW9uYWxDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6UmVzQ29uZDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlUmVzQ29uZCgiLCBhcmcuYXNSZXN1bHRDb25k
aXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RG91YmxlQ29u
ZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRl
RG91YmxlQ29uZCgiLCBhcmcuYXNEb3VibGVDb25kaXRpb24oKSwgIik7Iik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICBjYXNlIEFyZzo6U3BlY2lhbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludGxuKCJhcmcgPSBBcmcuY3JlYXRlU3BlY2lhbCgpOyIpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBBcmc6OldpZHRoQXJnOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnBy
aW50bG4oImFyZyA9IEFyZy5jcmVhdGVXaWR0aEFyZygiLCBhcmcud2lkdGgoKSwgIik7Iik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3Qu
YXJncy5wdXNoKGFyZyk7Iik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChpbnN0LmtpbmQub3Bjb2RlID09IFBhdGNoKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGluc3QuaGFzTm9uQXJnRWZmZWN0cygpKQotICAgICAgICAgICAgICAgICAgICBvdXQu
cHJpbnRsbigiaW5zdC5wYXRjaEhhc05vbkFyZ0VmZmVjdHMgPSB0cnVlOyIpOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhRWFybHlDbG9i
YmVyZWRSZWdzID0gbmV3IFNldCgpOyIpOwotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJp
bnN0LmV4dHJhQ2xvYmJlcmVkUmVncyA9IG5ldyBTZXQoKTsiKTsKLSAgICAgICAgICAgICAgICBp
bnN0LmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKCkuZm9yRWFjaCgKLSAgICAgICAgICAgICAgICAg
ICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigi
aW5zdC5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAiKTsiKTsK
LSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgaW5zdC5leHRyYUNsb2Ji
ZXJlZFJlZ3MoKS5mb3JFYWNoKAotICAgICAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmV4dHJhQ2xvYmJlcmVk
UmVncy5hZGQoIiwgdmFyTmFtZShyZWcpLCAiKTsiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0LnByaW50bG4oImluc3QucGF0
Y2hBcmdEYXRhID0gW107Iik7Ci0gICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoQXJnKAotICAg
ICAgICAgICAgICAgICAgICBbJl0gKEFyZyYsIEFyZzo6Um9sZSByb2xlLCBCYW5rIGJhbmssIFdp
ZHRoIHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaW5zdC5wYXRjaEFyZ0RhdGEucHVzaCh7cm9sZTogQXJn
LiIsIHJvbGUsICIsIHR5cGU6ICIsIGJhbmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Iiwgd2lkdGg6ICIsIHdpZHRoLCAifSk7Iik7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLm9wY29k
ZSA9PSBDQ2FsbCB8fCBpbnN0LmtpbmQub3Bjb2RlID09IENvbGRDQ2FsbCkgewotICAgICAgICAg
ICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsVHlwZSA9ICIsIGluc3Qub3JpZ2luLT50eXBl
KCkpOwotICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJpbnN0LmNDYWxsQXJnVHlwZXMgPSBb
XTsiKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgaW5zdC5vcmln
aW4tPm51bUNoaWxkcmVuKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4o
Imluc3QuY0NhbGxBcmdUeXBlcy5wdXNoKCIsIGluc3Qub3JpZ2luLT5jaGlsZChpKS0+dHlwZSgp
LCAiKTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgb3V0LnBy
aW50bG4oImhhc2ggPSBpbnN0Lmhhc2goKTsiKTsKLSAgICAgICAgICAgIG91dC5wcmludGxuKCJp
ZiAoaGFzaCAhPSAiLCBpbnN0LmpzSGFzaCgpLCAiKSIpOwotICAgICAgICAgICAgb3V0LnByaW50
bG4oIiAgICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgaGFzaDogXCIgKyBoYXNoKTsiKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgb3V0LnByaW50bG4odmFyTmFtZShibG9jayksICIuYXBwZW5k
KGluc3QpOyIpOwotICAgICAgICB9Ci0gICAgfQotfQotCi19IH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMzo6QWlyCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEdW1wQXNKUy5oCShyZXZpc2lvbiAyMTM2NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckR1bXBBc0pTLmgJKG5vbmV4aXN0ZW50KQpA
QCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQotI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNw
YWNlIEFpciB7Ci0KLWNsYXNzIENvZGU7Ci0KLS8vIFRoaXMgaXMgdXNlZCBmb3IgYmVuY2htYXJr
aW5nLiBWYXJpb3VzIG9wZXJhdGlvbnMgb24gQWlyIGFyZSBpbnRlcmVzdGluZyBmcm9tIGEgYmVu
Y2htYXJraW5nCi0vLyBzdGFuZHBvaW50LiBXZSBjYW4gd3JpdGUgc29tZSBBaXIgcGhhc2VzIGlu
IEpTIGFuZCB0aGVuIHVzZSB0aGF0IHRvIGJlbmNobWFyayBKUy4gVGhlIGJlbmNobWFyawotLy8g
aXMgY2FsbGVkIEpTQWlyLCBhbmQgaXQncyBpbiBQZXJmb3JtYW5jZVRlc3RzL0pTQWlyLgotdm9p
ZCBkdW1wQXNKUyhDb2RlJiwgUHJpbnRTdHJlYW0mKTsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCShy
ZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1p
bmF0ZURlYWRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw4IEBAIGJvb2wg
ZWxpbWluYXRlRGVhZENvZGUoQ29kZSYgY29kZSkKICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggPSBjb2RlLnNpemUoKTsgYmxvY2tJbmRl
eC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBjb2RlW2Jsb2NrSW5kZXhd
OworICAgICAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaW5zdEluZGV4ID0gYmxvY2stPnNpemUoKTsgaW5zdElu
ZGV4LS07KQogICAgICAgICAgICAgICAgIGhhbmRsZUluc3QoYmxvY2stPmF0KGluc3RJbmRleCkp
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVy
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckdl
bmVyYXRlLmNwcAkocmV2aXNpb24gMjEzNjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw3ICszMSw2IEBACiAj
aW5jbHVkZSAiQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuaCIKICNpbmNsdWRl
ICJBaXJBbGxvY2F0ZVN0YWNrLmgiCiAjaW5jbHVkZSAiQWlyQ29kZS5oIgotI2luY2x1ZGUgIkFp
ckR1bXBBc0pTLmgiCiAjaW5jbHVkZSAiQWlyRWxpbWluYXRlRGVhZENvZGUuaCIKICNpbmNsdWRl
ICJBaXJGaXhPYnZpb3VzU3BpbGxzLmgiCiAjaW5jbHVkZSAiQWlyRml4UGFydGlhbFJlZ2lzdGVy
U3RhbGxzLmgiCkBAIC02MiwxNyArNjEsMTkgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihD
b2RlJiBjb2RlKQogewogICAgIFRpbWluZ1Njb3BlIHRpbWluZ1Njb3BlKCJBaXI6OnByZXBhcmVG
b3JHZW5lcmF0aW9uIik7CiAgICAgCisgICAgLy8gSWYgd2UncmUgZG9pbmcgc3VwZXIgdmVyYm9z
ZSBkdW1waW5nLCB0aGUgcGhhc2Ugc2NvcGUgb2YgYW55IHBoYXNlIHdpbGwgYWxyZWFkeSBkbyBh
IGR1bXAuCisgICAgaWYgKHNob3VsZER1bXBJUihBaXJNb2RlKSAmJiAhc2hvdWxkRHVtcElSQXRF
YWNoUGhhc2UoQWlyTW9kZSkpIHsKKyAgICAgICAgZGF0YUxvZygiSW5pdGlhbCBhaXI6XG4iKTsK
KyAgICAgICAgZGF0YUxvZyhjb2RlKTsKKyAgICB9CisgICAgCiAgICAgLy8gV2UgZG9uJ3QgZXhw
ZWN0IHRoZSBpbmNvbWluZyBjb2RlIHRvIGhhdmUgcHJlZGVjZXNzb3JzIGNvbXB1dGVkLgogICAg
IGNvZGUucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAKICAgICBpZiAoc2hvdWxkVmFsaWRhdGVJ
UigpKQogICAgICAgICB2YWxpZGF0ZShjb2RlKTsKIAotICAgIC8vIElmIHdlJ3JlIGRvaW5nIHN1
cGVyIHZlcmJvc2UgZHVtcGluZywgdGhlIHBoYXNlIHNjb3BlIG9mIGFueSBwaGFzZSB3aWxsIGFs
cmVhZHkgZG8gYSBkdW1wLgotICAgIGlmIChzaG91bGREdW1wSVIoQWlyTW9kZSkgJiYgIXNob3Vs
ZER1bXBJUkF0RWFjaFBoYXNlKEFpck1vZGUpKSB7Ci0gICAgICAgIGRhdGFMb2coIkluaXRpYWwg
YWlyOlxuIik7Ci0gICAgICAgIGRhdGFMb2coY29kZSk7Ci0gICAgfQorICAgIHNpbXBsaWZ5Q0ZH
KGNvZGUpOwogCiAgICAgbG93ZXJNYWNyb3MoY29kZSk7CiAKQEAgLTEwNywyMyArMTA4LDExIEBA
IHZvaWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAvLyBkb2VzIHRoaW5n
cyBsaWtlIGlkZW50aWZ5IHdoaWNoIGNhbGxlZS1zYXZlcyB3ZSdyZSB1c2luZyBhbmQgc2F2ZXMg
dGhlbS4KICAgICBoYW5kbGVDYWxsZWVTYXZlcyhjb2RlKTsKICAgICAKLSAgICBpZiAoT3B0aW9u
czo6ZHVtcEFpckFzSlNCZWZvcmVBbGxvY2F0ZVN0YWNrKCkpIHsKLSAgICAgICAgZGF0YUxvZygi
RHVtcGluZyBBaXIgYXMgSlMgYmVmb3JlIGFsbG9jYXRlU3RhY2s6XG4iKTsKLSAgICAgICAgZHVt
cEFzSlMoY29kZSwgV1RGOjpkYXRhRmlsZSgpKTsKLSAgICAgICAgZGF0YUxvZygiQWlyIGhhc2g6
ICIsIGNvZGUuanNIYXNoKCksICJcbiIpOwotICAgIH0KLQogICAgIC8vIFRoaXMgdHVybnMgYWxs
IFN0YWNrIGFuZCBDYWxsQXJnIEFyZ3MgaW50byBBZGRyIGFyZ3MgdGhhdCB1c2UgdGhlIGZyYW1l
IHBvaW50ZXIuIEl0IGRvZXMKICAgICAvLyB0aGlzIGJ5IGZpcnN0LWZpdCBhbGxvY2F0aW5nIHN0
YWNrIHNsb3RzLiBJdCBzaG91bGQgYmUgcHJldHR5IGRhcm4gY2xvc2UgdG8gb3B0aW1hbCwgc28g
d2UKICAgICAvLyBzaG91bGRuJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGlzIHZlcnkgbXVjaC4K
ICAgICBhbGxvY2F0ZVN0YWNrKGNvZGUpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpkdW1wQWly
QWZ0ZXJBbGxvY2F0ZVN0YWNrKCkpIHsKLSAgICAgICAgZGF0YUxvZygiRHVtcGluZyBBaXIgYWZ0
ZXIgYWxsb2NhdGVTdGFjazpcbiIpOwotICAgICAgICBkYXRhTG9nKGNvZGUpOwotICAgICAgICBk
YXRhTG9nKCJBaXIgaGFzaDogIiwgY29kZS5qc0hhc2goKSwgIlxuIik7Ci0gICAgfQotCiAgICAg
Ly8gSWYgd2UgY29hbGVzY2VkIG1vdmVzIHRoZW4gd2UgY2FuIHVuYnJlYWsgY3JpdGljYWwgZWRn
ZXMuIFRoaXMgaXMgdGhlIG1haW4gcmVhc29uIGZvciB0aGlzCiAgICAgLy8gcGhhc2UuCiAgICAg
c2ltcGxpZnlDRkcoY29kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckluc3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJJbnN0SW5saW5lcy5oCShyZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsy
NzcsNzMgQEAgaW5saW5lIGJvb2wgaXNYODZVRGl2NjRWYWxpZChjb25zdCBJbnN0JgogICAgIHJl
dHVybiBpc1g4NkRpdkhlbHBlclZhbGlkKGluc3QpOwogfQogCitpbmxpbmUgYm9vbCBpc0F0b21p
Y1N0cm9uZ0NBU1ZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisjaWYgQ1BVKFg4NikgfHwgQ1BV
KFg4Nl82NCkKKyAgICBzd2l0Y2ggKGluc3QuYXJncy5zaXplKCkpIHsKKyAgICBjYXNlIDM6Cisg
ICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMF0gPT0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAg
ICBjYXNlIDU6CisgICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMV0gPT0gVG1wKFg4NlJlZ2lzdGVy
czo6ZWF4KTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2Vs
c2UgLy8gQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICBVTlVTRURfUEFSQU0oaW5zdCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8vIENQVShYODYpIHx8IENQVShYODZfNjQpCit9CisK
K2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoY29uc3QgSW5zdCYgaW5z
dCkKK3sKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgIHJldHVybiBpbnN0LmFyZ3Nb
MV0gPT0gVG1wKFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyNlbHNlIC8vIENQVShYODYpIHx8IENQVShY
ODZfNjQpCisgICAgVU5VU0VEX1BBUkFNKGluc3QpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZiAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0
cm9uZ0NBUzhWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0
cm9uZ0NBU1ZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc0F0b21pY1N0cm9uZ0NBUzE2
VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNBdG9taWNTdHJvbmdDQVNW
YWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNBdG9taWNTdHJvbmdDQVMzMlZhbGlkKGNv
bnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5z
dCk7Cit9CisKK2lubGluZSBib29sIGlzQXRvbWljU3Ryb25nQ0FTNjRWYWxpZChjb25zdCBJbnN0
JiBpbnN0KQoreworICAgIHJldHVybiBpc0F0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOworfQor
CitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzhWYWxpZChjb25zdCBJbnN0JiBp
bnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1ZhbGlkKGluc3QpOwor
fQorCitpbmxpbmUgYm9vbCBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBUzE2VmFsaWQoY29uc3QgSW5z
dCYgaW5zdCkKK3sKKyAgICByZXR1cm4gaXNCcmFuY2hBdG9taWNTdHJvbmdDQVNWYWxpZChpbnN0
KTsKK30KKworaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVMzMlZhbGlkKGNvbnN0
IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQo
aW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTNjRWYWxpZChj
b25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc0JyYW5jaEF0b21pY1N0cm9uZ0NBU1Zh
bGlkKGluc3QpOworfQorCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAyMTM2NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQg
KzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE3LDYgKzExNyw3
IEBAIEFkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0s
IFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBU
bXAsIEFkZHIKICAgICB4ODY6IFRtcCwgSW5kZXgKIApAQCAtMTM1LDkgKzEzNiwxMiBAQCB4ODY6
IEFkZDE2IFU6RzoxNiwgVUQ6RzoxNgogNjQ6IEFkZDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRt
cCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKICAgICBJbW0s
IFRtcAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBU
bXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKIAogNjQ6IEFkZDY0IFU6Rzo2NCwgVTpHOjY0
LCBEOkc6NjQKICAgICBJbW0sIFRtcCwgVG1wCkBAIC0xNjYsOSArMTcwLDEyIEBAIHg4NjogQWRk
RmxvYXQgVTpGOjMyLCBVRDpGOjMyCiBTdWIzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBU
bXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAogICAgIEltbSwgVG1w
CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IFRtcCwg
QWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogCiBhcm02NDogU3ViMzIgVTpHOjMyLCBVOkc6MzIs
IEQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKQEAgLTE3Niw5ICsxODMsMTIgQEAgYXJtNjQ6IFN1
YjMyIFU6RzozMiwgVTpHOjMyLCBEOkc6MzIKIDY0OiBTdWI2NCBVOkc6NjQsIFVEOkc6NjQKICAg
ICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CiAgICAg
SW1tLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAogICAgIHg4
NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAKIGFybTY0OiBTdWI2NCBVOkc6NjQs
IFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtMjA0LDkgKzIxNCwxMiBAQCB4
ODY6IFN1YkZsb2F0IFU6RjozMiwgVUQ6RjozMgogTmVnMzIgVVpEOkc6MzIKICAgICBUbXAKICAg
ICB4ODY6IEFkZHIKKyAgICB4ODY6IEluZGV4CiAKIDY0OiBOZWc2NCBVRDpHOjY0CiAgICAgVG1w
CisgICAgeDg2OiBBZGRyCisgICAgeDg2OiBJbmRleAogCiBhcm02NDogTmVnYXRlRG91YmxlIFU6
Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAgLTMzMCw4ICszNDMsMTEgQEAgQW5kMzIgVTpH
OjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogICAgIHg4Njog
VG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CiAgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4
ODY6IEluZGV4LCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAog
CiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKQEAg
LTMzOSw3ICszNTUsMTMgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogCiB4ODZfNjQ6IEFuZDY0
IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCi0gICAgeDg2OiBJbW0sIFRtcAorICAgIElt
bSwgVG1wCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAg
IFRtcCwgSW5kZXgKKyAgICBBZGRyLCBUbXAKKyAgICBJbmRleCwgVG1wCiAKIEFuZERvdWJsZSBV
OkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAsIFRtcApAQCAtNDU5LDggKzQ4MSwx
MSBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBU
bXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJbmRleAogICAgIHg4NjogQWRk
ciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6
IEltbSwgSW5kZXgKIAogNjQ6IE9yNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwg
VG1wLCBUbXAKQEAgLTQ2OSw2ICs0OTQsMTIgQEAgT3IzMiBVOkc6MzIsIFVaRDpHOjMyCiA2NDog
T3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKKyAg
ICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1tLCBJbmRleAorICAgIHg4NjogVG1wLCBBZGRy
CisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4
LCBUbXAKIAogWG9yMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcCwgVG1w
CkBAIC00ODAsOCArNTExLDExIEBAIFhvcjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRt
cAogICAgIHg4NjogSW1tLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4NjogVG1wLCBJ
bmRleAogICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCiAgICAgeDg2OiBJ
bW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKIAogNjQ6IFhvcjY0IFU6Rzo2NCwgVTpHOjY0
LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCkBAIC00OTAsNiArNTI0LDExIEBAIFhvcjMyIFU6
RzozMiwgVVpEOkc6MzIKIDY0OiBYb3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAog
ICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4CisgICAgeDg2OiBBZGRyLCBU
bXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICB4ODY6IEltbSwgQWRkcgorICAgIHg4NjogSW1t
LCBJbmRleAogICAgIHg4NjogSW1tLCBUbXAKIAogYXJtNjQ6IE5vdDMyIFU6RzozMiwgWkQ6Rzoz
MgpAQCAtNDk4LDEzICs1MzcsMTUgQEAgYXJtNjQ6IE5vdDMyIFU6RzozMiwgWkQ6RzozMgogeDg2
OiBOb3QzMiBVWkQ6RzozMgogICAgIFRtcAogICAgIEFkZHIKKyAgICBJbmRleAogCiBhcm02NDog
Tm90NjQgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcAogCi14ODY6IE5vdDY0IFVEOkc6NjQK
K3g4Nl82NDogTm90NjQgVUQ6Rzo2NAogICAgIFRtcAogICAgIEFkZHIKKyAgICBJbmRleAogCiBh
cm02NDogQWJzRG91YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKQEAgLTY2OCwyNyAr
NzA5LDM3OCBAQCBMb2FkOCBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4
LCBUbXAKIAorTG9hZEFjcTggVTpHOjgsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICB4ODY6IEFkZHIs
IFRtcAorICAgIHg4NjogSW5kZXgsIFRtcAorICAgIFNpbXBsZUFkZHIsIFRtcAorCiBTdG9yZTgg
VTpHOjgsIEQ6Rzo4CiAgICAgVG1wLCBJbmRleAogICAgIFRtcCwgQWRkcgogICAgIHg4NjogSW1t
LCBJbmRleAogICAgIHg4NjogSW1tLCBBZGRyCiAKK1N0b3JlUmVsOCBVOkc6OCwgRDpHOjggL2Vm
ZmVjdHMKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IFRtcCwgQWRkcgorICAgIHg4Njog
SW1tLCBJbmRleAorICAgIHg4NjogSW1tLCBBZGRyCisgICAgVG1wLCBTaW1wbGVBZGRyCisKIExv
YWQ4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIElu
ZGV4LCBUbXAKIAorTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyIC9lZmZl
Y3RzCisgICAgeDg2OiBBZGRyLCBUbXAKKyAgICB4ODY6IEluZGV4LCBUbXAKKyAgICBTaW1wbGVB
ZGRyLCBUbXAKKwogTG9hZDE2IFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIElu
ZGV4LCBUbXAKIAorTG9hZEFjcTE2IFU6RzoxNiwgWkQ6RzozMiAvZWZmZWN0cworICAgIHg4Njog
QWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisKIExv
YWQxNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAg
SW5kZXgsIFRtcAogCitMb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMiAv
ZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAgU2lt
cGxlQWRkciwgVG1wCisKIFN0b3JlMTYgVTpHOjE2LCBEOkc6MTYKICAgICBUbXAsIEluZGV4CiAg
ICAgVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFkZHIKKwor
U3RvcmVSZWwxNiBVOkc6MTYsIEQ6RzoxNiAvZWZmZWN0cworICAgIHg4NjogVG1wLCBJbmRleAor
ICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBJbW0sIEluZGV4CisgICAgeDg2OiBJbW0sIEFk
ZHIKKyAgICBUbXAsIFNpbXBsZUFkZHIKKworTG9hZEFjcTMyIFU6RzozMiwgWkQ6RzozMiAvZWZm
ZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRleCwgVG1wCisgICAgU2ltcGxl
QWRkciwgVG1wCisKK1N0b3JlUmVsMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZlY3RzCisgICAgeDg2
OiBUbXAsIEFkZHIKKyAgICB4ODY6IFRtcCwgSW5kZXgKKyAgICB4ODY6IEltbSwgQWRkcgorICAg
IHg4NjogSW1tLCBJbmRleAorICAgIFRtcCwgU2ltcGxlQWRkcgorCis2NDogTG9hZEFjcTY0IFU6
Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cworICAgIHg4NjogQWRkciwgVG1wCisgICAgeDg2OiBJbmRl
eCwgVG1wCisgICAgU2ltcGxlQWRkciwgVG1wCisKKzY0OiBTdG9yZVJlbDY0IFU6Rzo2NCwgWkQ6
Rzo2NCAvZWZmZWN0cworICAgIHg4NjogVG1wLCBBZGRyCisgICAgeDg2OiBUbXAsIEluZGV4Cisg
ICAgeDg2OiBJbW0sIEFkZHIKKyAgICB4ODY6IEltbSwgSW5kZXgKKyAgICBUbXAsIFNpbXBsZUFk
ZHIKKworIyBUaGUgZmlyc3Qgb3BlcmFuZCBpcyByYXguCisjIEZJWE1FOiBUaGlzIGZvcm11bGF0
aW9uIG1lYW5zIHRoYXQgdGhlIGJvb2xlYW4gcmVzdWx0IGNhbm5vdCBiZSBwdXQgaW4gZWF4LCBl
dmVuIHRob3VnaCBhbGwgdXNlcnMKKyMgb2YgdGhpcyB3b3VsZCBiZSBPSyB3aXRoIHRoYXQuCisj
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkyNTQKK3g4NjogQXRv
bWljU3Ryb25nQ0FTOCBVOkc6MzIsIFVEOkc6OCwgVTpHOjgsIFVEOkc6OCwgWkQ6Rzo4IC9lZmZl
Y3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25k
LCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVOkc6MzIs
IFVEOkc6MTYsIFU6RzozMiwgVUQ6RzoxNiwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU3RhdHVzQ29u
ZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4
LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwg
VUQ6RzozMiwgWkQ6Rzo4IC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRy
LCBUbXAKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2XzY0OiBB
dG9taWNTdHJvbmdDQVM2NCBVOkc6MzIsIFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCwgWkQ6Rzo4
IC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyLCBUbXAKKyAgICBTdGF0
dXNDb25kLCBUbXAqLCBUbXAsIEluZGV4LCBUbXAKKworeDg2OiBBdG9taWNTdHJvbmdDQVM4IFVE
Okc6OCwgVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRt
cCosIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdHJvbmdDQVMxNiBVRDpHOjE2LCBVOkc6MzIs
IFVEOkc6MTYgL2VmZmVjdHMKKyAgICBUbXAqLCBUbXAsIEFkZHIKKyAgICBUbXAqLCBUbXAsIElu
ZGV4CisKK3g4NjogQXRvbWljU3Ryb25nQ0FTMzIgVUQ6RzozMiwgVTpHOjMyLCBVRDpHOjMyIC9l
ZmZlY3RzCisgICAgVG1wKiwgVG1wLCBBZGRyCisgICAgVG1wKiwgVG1wLCBJbmRleAorCit4ODZf
NjQ6IEF0b21pY1N0cm9uZ0NBUzY0IFVEOkc6NjQsIFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cwor
ICAgIFRtcCosIFRtcCwgQWRkcgorICAgIFRtcCosIFRtcCwgSW5kZXgKKworeDg2OiBCcmFuY2hB
dG9taWNTdHJvbmdDQVM4IFU6RzozMiwgVUQ6Rzo4LCBVOkc6OCwgVUQ6Rzo4IC9icmFuY2ggL2Vm
ZmVjdHMKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBU
bXAqLCBUbXAsIEluZGV4CisKK3g4NjogQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYgVTpHOjMyLCBV
RDpHOjE2LCBVOkc6MzIsIFVEOkc6MTYgL2JyYW5jaCAvZWZmZWN0cworICAgIFN0YXR1c0NvbmQs
IFRtcCosIFRtcCwgQWRkcgorICAgIFN0YXR1c0NvbmQsIFRtcCosIFRtcCwgSW5kZXgKKworeDg2
OiBCcmFuY2hBdG9taWNTdHJvbmdDQVMzMiBVOkc6MzIsIFVEOkc6MzIsIFU6RzozMiwgVUQ6Rzoz
MiAvYnJhbmNoIC9lZmZlY3RzCisgICAgU3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBBZGRyCisgICAg
U3RhdHVzQ29uZCwgVG1wKiwgVG1wLCBJbmRleAorCit4ODZfNjQ6IEJyYW5jaEF0b21pY1N0cm9u
Z0NBUzY0IFU6RzozMiwgVUQ6Rzo2NCwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2ggL2VmZmVjdHMK
KyAgICBTdGF0dXNDb25kLCBUbXAqLCBUbXAsIEFkZHIKKyAgICBTdGF0dXNDb25kLCBUbXAqLCBU
bXAsIEluZGV4CisKK3g4NjogQXRvbWljQWRkOCBVOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAg
SW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgK
KworeDg2OiBBdG9taWNBZGQxNiBVOkc6MTYsIFVEOkc6MTYgL2VmZmVjdHMKKyAgICBJbW0sIEFk
ZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6
IEF0b21pY0FkZDMyIFU6RzozMiwgVUQ6RzozMiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAg
IEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRv
bWljQWRkNjQgVTpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1t
LCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNTdWI4
IFU6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1N1YjE2IFU6RzoxNiwg
VUQ6RzoxNiAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAs
IEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljU3ViMzIgVTpHOjMyLCBVRDpHOjMy
IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgor
ICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBBdG9taWNTdWI2NCBVOkc6NjQsIFVEOkc6NjQgL2Vm
ZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY0FuZDggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAg
IEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4
CisKK3g4NjogQXRvbWljQW5kMTYgVTpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgSW1tLCBB
ZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2
OiBBdG9taWNBbmQzMiBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAg
ICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0
b21pY0FuZDY0IFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIElt
bSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljT3I4
IFU6Rzo4LCBVRDpHOjggL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4Cisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY09yMTYgVTpHOjE2LCBV
RDpHOjE2IC9lZmZlY3RzCisgICAgSW1tLCBBZGRyCisgICAgSW1tLCBJbmRleAorICAgIFRtcCwg
QWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBBdG9taWNPcjMyIFU6RzozMiwgVUQ6RzozMiAv
ZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAg
ICBUbXAsIEluZGV4CisKK3g4Nl82NDogQXRvbWljT3I2NCBVOkc6NjQsIFVEOkc6NjQgL2VmZmVj
dHMKKyAgICBJbW0sIEFkZHIKKyAgICBJbW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODY6IEF0b21pY1hvcjggVTpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIElt
bSwgQWRkcgorICAgIEltbSwgSW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisK
K3g4NjogQXRvbWljWG9yMTYgVTpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgSW1tLCBBZGRy
CisgICAgSW1tLCBJbmRleAorICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBB
dG9taWNYb3IzMiBVOkc6MzIsIFVEOkc6MzIgL2VmZmVjdHMKKyAgICBJbW0sIEFkZHIKKyAgICBJ
bW0sIEluZGV4CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21p
Y1hvcjY0IFU6Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEltbSwgQWRkcgorICAgIEltbSwg
SW5kZXgKKyAgICBUbXAsIEFkZHIKKyAgICBUbXAsIEluZGV4CisKK3g4NjogQXRvbWljTmVnOCBV
RDpHOjggL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNOZWcxNiBV
RDpHOjE2IC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4NjogQXRvbWljTmVnMzIg
VUQ6RzozMiAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODZfNjQ6IEF0b21pY05l
ZzY0IFVEOkc6NjQgL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNO
b3Q4IFVEOkc6OCAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0b21pY05v
dDE2IFVEOkc6MTYgL2VmZmVjdHMKKyAgICBBZGRyCisgICAgSW5kZXgKKworeDg2OiBBdG9taWNO
b3QzMiBVRDpHOjMyIC9lZmZlY3RzCisgICAgQWRkcgorICAgIEluZGV4CisKK3g4Nl82NDogQXRv
bWljTm90NjQgVUQ6Rzo2NCAvZWZmZWN0cworICAgIEFkZHIKKyAgICBJbmRleAorCit4ODY6IEF0
b21pY1hjaGdBZGQ4IFVEOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQxNiBVRDpHOjE2LCBVRDpHOjE2IC9lZmZl
Y3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGdBZGQz
MiBVRDpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODZfNjQ6IEF0b21pY1hjaGdBZGQ2NCBVRDpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGc4IFVEOkc6OCwg
VUQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IEF0
b21pY1hjaGcxNiBVRDpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAg
VG1wLCBJbmRleAorCit4ODY6IEF0b21pY1hjaGczMiBVRDpHOjMyLCBVRDpHOjMyIC9lZmZlY3Rz
CisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IEF0b21pY1hjaGc2NCBV
RDpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
Cithcm02NDogTG9hZExpbms4IFU6Rzo4LCBaRDpHOjggL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRy
LCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxOCBVOkc6OCwgWkQ6Rzo4IC9lZmZlY3RzCisgICAg
U2ltcGxlQWRkciwgVG1wCisKKyMgU3VwZXIgY29uZnVzaW5nIGZhY3Q6IHRoaXMgcmV0dXJucyAw
IHRvIG1lYW4gc3VjY2VzcywgMSB0byBtZWFuIGZhaWx1cmUuCithcm02NDogU3RvcmVDb25kOCBV
Okc6OCwgRDpHOjgsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAor
Cithcm02NDogU3RvcmVDb25kUmVsOCBVOkc6OCwgRDpHOjgsIEVaRDpHOjggL2VmZmVjdHMKKyAg
ICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogTG9hZExpbmsxNiBVOkc6MTYsIFpEOkc6
MTYgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IExvYWRMaW5rQWNxMTYg
VTpHOjE2LCBaRDpHOjE2IC9lZmZlY3RzCisgICAgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBT
dG9yZUNvbmQxNiBVOkc6MTYsIEQ6RzoxNiwgRVpEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgU2lt
cGxlQWRkciwgVG1wCisKK2FybTY0OiBTdG9yZUNvbmRSZWwxNiBVOkc6MTYsIEQ6RzoxNiwgRVpE
Okc6OCAvZWZmZWN0cworICAgIFRtcCwgU2ltcGxlQWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGlu
azMyIFU6RzozMiwgWkQ6RzozMiAvZWZmZWN0cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02
NDogTG9hZExpbmtBY3EzMiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKKyAgICBTaW1wbGVBZGRy
LCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZDMyIFU6RzozMiwgRDpHOjMyLCBFWkQ6Rzo4IC9lZmZl
Y3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAKKworYXJtNjQ6IFN0b3JlQ29uZFJlbDMyIFU6
RzozMiwgRDpHOjMyLCBFWkQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBTaW1wbGVBZGRyLCBUbXAK
KworYXJtNjQ6IExvYWRMaW5rNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCisgICAgU2ltcGxl
QWRkciwgVG1wCisKK2FybTY0OiBMb2FkTGlua0FjcTY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0
cworICAgIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogU3RvcmVDb25kNjQgVTpHOjY0LCBEOkc6
NjQsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAsIFNpbXBsZUFkZHIsIFRtcAorCithcm02NDog
U3RvcmVDb25kUmVsNjQgVTpHOjY0LCBEOkc6NjQsIEVaRDpHOjggL2VmZmVjdHMKKyAgICBUbXAs
IFNpbXBsZUFkZHIsIFRtcAorCithcm02NDogRGVwZW5kMzIgVTpHOjMyLCBaRDpHOjMyCisgICAg
VG1wLCBUbXAKKworYXJtNjQ6IERlcGVuZDY0IFU6Rzo2NCwgWkQ6Rzo2NAorICAgIFRtcCwgVG1w
CiAKIENvbXBhcmUzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgUmVsQ29u
ZCwgVG1wLCBUbXAsIFRtcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJP
cHRpbWl6ZUJsb2NrT3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAkocmV2aXNpb24gMjEzNjQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTc3LDYgKzE3NywxMCBAQCB2b2lkIG9wdGltaXplQmxvY2tPcmRl
cihDb2RlJiBjb2RlKQogICAgICAgICBjYXNlIEJyYW5jaFN1YjY0OgogICAgICAgICBjYXNlIEJy
YW5jaE5lZzMyOgogICAgICAgICBjYXNlIEJyYW5jaE5lZzY0OgorICAgICAgICBjYXNlIEJyYW5j
aEF0b21pY1N0cm9uZ0NBUzg6CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMTY6
CisgICAgICAgIGNhc2UgQnJhbmNoQXRvbWljU3Ryb25nQ0FTMzI6CisgICAgICAgIGNhc2UgQnJh
bmNoQXRvbWljU3Ryb25nQ0FTNjQ6CiAgICAgICAgICAgICBpZiAoY29kZS5maW5kTmV4dEJsb2Nr
KGJsb2NrKSA9PSBibG9jay0+c3VjY2Vzc29yQmxvY2soMCkgJiYgYnJhbmNoLmFyZ3NbMF0uaXNJ
bnZlcnRpYmxlKCkpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnN3YXAoYmxvY2stPnN1Y2Nlc3Nv
cigwKSwgYmxvY2stPnN1Y2Nlc3NvcigxKSk7CiAgICAgICAgICAgICAgICAgYnJhbmNoLmFyZ3Nb
MF0gPSBicmFuY2guYXJnc1swXS5pbnZlcnRlZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJlbmNlLmNwcAkocmV2aXNpb24gMjEz
NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHZvaWQgcGFkSW50ZXJmZXJlbmNl
KENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwg
QmFuaywgV2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyb2xlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBcmc6OkVhcmx5WkRlZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vhcmx5RGVm
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFyZzo6TGF0ZVVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDIxMzY0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUm
IGNvZGUpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpMYXRlQ29sZFVzZToKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OlNjcmF0Y2g6CiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgQXJnOjpFYXJseURlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5WkRl
ZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJp
b3JpdHlPcmRlcihiYW5rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0
QmVmb3JlLmdldChyZWcpICYmICFzZXRBZnRlci5nZXQocmVnKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRBZnRlci5zZXQocmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHJldmlzaW9uIDIxMzY0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgko
d29ya2luZyBjb3B5KQpAQCAtNTEsMTQgKzUxLDQ5IEBAIGNsYXNzIEFyZwogICAgICAgICBAYmFu
ayA9IGJhbmsKICAgICAgICAgQHdpZHRoID0gd2lkdGgKICAgICBlbmQKLQotICAgIGRlZiB3aWR0
aENvZGUKKyAgICAKKyAgICBkZWYgc2VsZi53aWR0aENvZGUod2lkdGgpCiAgICAgICAgIGlmIHdp
ZHRoID09ICJQdHIiCiAgICAgICAgICAgICAicG9pbnRlcldpZHRoKCkiCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICJXaWR0aCN7d2lkdGh9IgogICAgICAgICBlbmQKICAgICBlbmQKKworICAg
IGRlZiB3aWR0aENvZGUKKyAgICAgICAgQXJnLndpZHRoQ29kZSh3aWR0aCkKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgc2VsZi5yb2xlQ29kZShyb2xlKQorICAgICAgICBjYXNlIHJvbGUKKyAgICAg
ICAgd2hlbiAiVSIKKyAgICAgICAgICAgICJVc2UiCisgICAgICAgIHdoZW4gIkQiCisgICAgICAg
ICAgICAiRGVmIgorICAgICAgICB3aGVuICJaRCIKKyAgICAgICAgICAgICJaRGVmIgorICAgICAg
ICB3aGVuICJVRCIKKyAgICAgICAgICAgICJVc2VEZWYiCisgICAgICAgIHdoZW4gIlVaRCIKKyAg
ICAgICAgICAgICJVc2VaRGVmIgorICAgICAgICB3aGVuICJVQSIKKyAgICAgICAgICAgICJVc2VB
ZGRyIgorICAgICAgICB3aGVuICJTIgorICAgICAgICAgICAgIlNjcmF0Y2giCisgICAgICAgIHdo
ZW4gIkVEIgorICAgICAgICAgICAgIkVhcmx5RGVmIgorICAgICAgICB3aGVuICJFWkQiCisgICAg
ICAgICAgICAiRWFybHlaRGVmIgorICAgICAgICB3aGVuICJMVSIKKyAgICAgICAgICAgICJMYXRl
VXNlIgorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbmQKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgcm9sZUNvZGUKKyAgICAgICAgQXJnLnJvbGVDb2RlKHJvbGUpCisg
ICAgZW5kCiBlbmQKIAogY2xhc3MgT3ZlcmxvYWQKQEAgLTE4Miw3ICsyMTcsNyBAQCBkZWYgbGV4
KHN0ciwgZmlsZU5hbWUpCiBlbmQKIAogZGVmIGlzUm9sZSh0b2tlbikKLSAgICB0b2tlbiA9fiAv
XEEoKFUpfChEKXwoVUQpfChaRCl8KFVaRCl8KFVBKXwoUykpXFovCisgICAgdG9rZW4gPX4gL1xB
KChVKXwoRCl8KFVEKXwoWkQpfChVWkQpfChVQSl8KFMpfChFRCl8KEVaRCl8KExVKSlcWi8KIGVu
ZAogCiBkZWYgaXNHRih0b2tlbikKQEAgLTE5MCw3ICsyMjUsNyBAQCBkZWYgaXNHRih0b2tlbikK
IGVuZAogCiBkZWYgaXNLaW5kKHRva2VuKQotICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwo
QmlnSW1tKXwoQml0SW1tKXwoQml0SW1tNjQpfChBZGRyKXwoSW5kZXgpfChSZWxDb25kKXwoUmVz
Q29uZCl8KERvdWJsZUNvbmQpKVxaLworICAgIHRva2VuID1+IC9cQSgoVG1wKXwoSW1tKXwoQmln
SW1tKXwoQml0SW1tKXwoQml0SW1tNjQpfChTaW1wbGVBZGRyKXwoQWRkcil8KEluZGV4KXwoUmVs
Q29uZCl8KFJlc0NvbmQpfChEb3VibGVDb25kKXwoU3RhdHVzQ29uZCkpXFovCiBlbmQKIAogZGVm
IGlzQXJjaCh0b2tlbikKQEAgLTI2NCw3ICsyOTksNyBAQCBjbGFzcyBQYXJzZXIKIAogICAgIGRl
ZiBjb25zdW1lS2luZAogICAgICAgICByZXN1bHQgPSB0b2tlbi5zdHJpbmcKLSAgICAgICAgcGFy
c2VFcnJvcigiRXhwZWN0ZWQga2luZCAoSW1tLCBCaWdJbW0sIEJpdEltbSwgQml0SW1tNjQsIFRt
cCwgQWRkciwgSW5kZXgsIFJlbENvbmQsIFJlc0NvbmQsIG9yIERvdWJsZUNvbmQpIikgdW5sZXNz
IGlzS2luZChyZXN1bHQpCisgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGtpbmQgKEltbSwg
QmlnSW1tLCBCaXRJbW0sIEJpdEltbTY0LCBUbXAsIFNpbXBsZUFkZHIsIEFkZHIsIEluZGV4LCBS
ZWxDb25kLCBSZXNDb25kLCBEb3VibGVDb25kLCBvciBTdGF0dXNDb25kKSIpIHVubGVzcyBpc0tp
bmQocmVzdWx0KQogICAgICAgICBhZHZhbmNlCiAgICAgICAgIHJlc3VsdAogICAgIGVuZApAQCAt
NjM0LDI4ICs2NjksNyBAQCB3cml0ZUgoIk9wY29kZVV0aWxzIikgewogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBvdmVybG9hZC5zaWduYXR1cmUuZWFjaF93aXRoX2luZGV4IHsKICAgICAgICAg
ICAgICAgICB8IGFyZywgaW5kZXggfAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IHJvbGUgPSBuaWwKLSAgICAgICAgICAgICAgICBjYXNlIGFyZy5yb2xlCi0gICAgICAgICAgICAg
ICAgd2hlbiAiVSIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2UiCi0gICAgICAgICAg
ICAgICAgd2hlbiAiRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJEZWYiCi0gICAgICAg
ICAgICAgICAgd2hlbiAiWkQiCi0gICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiWkRlZiIKLSAg
ICAgICAgICAgICAgICB3aGVuICJVRCIKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VE
ZWYiCi0gICAgICAgICAgICAgICAgd2hlbiAiVVpEIgotICAgICAgICAgICAgICAgICAgICByb2xl
ID0gIlVzZVpEZWYiCi0gICAgICAgICAgICAgICAgd2hlbiAiVUEiCi0gICAgICAgICAgICAgICAg
ICAgIHJvbGUgPSAiVXNlQWRkciIKLSAgICAgICAgICAgICAgICB3aGVuICJTIgotICAgICAgICAg
ICAgICAgICAgICByb2xlID0gIlNjcmF0Y2giCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIGVuZAotCi0gICAgICAgICAgICAg
ICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbI3tpbmRleH1dLCBBcmc6OiN7cm9sZX0sICN7YXJn
LmJhbmt9UCwgI3thcmcud2lkdGhDb2RlfSk7IgorICAgICAgICAgICAgICAgIG91dHAucHV0cyAi
ZnVuY3RvcihhcmdzWyN7aW5kZXh9XSwgQXJnOjoje2FyZy5yb2xlQ29kZX0sICN7YXJnLmJhbmt9
UCwgI3thcmcud2lkdGhDb2RlfSk7IgogICAgICAgICAgICAgfQogICAgICAgICBlbmQKICAgICB9
CkBAIC04MDQsNiArODE4LDkgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAg
ICAgICAgICAgd2hlbiAiQml0SW1tNjQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAi
aWYgKCFBcmc6OmlzVmFsaWRCaXRJbW02NEZvcm0oYXJnc1sje2luZGV4fV0udmFsdWUoKSkpIgog
ICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7IgorICAg
ICAgICAgICAgICAgIHdoZW4gIlNpbXBsZUFkZHIiCisgICAgICAgICAgICAgICAgICAgIG91dHAu
cHV0cyAiaWYgKCFhcmdzWyN7aW5kZXh9XS50bXAoKS5pc0dQKCkpIgorICAgICAgICAgICAgICAg
ICAgICBvdXRwLnB1dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7IgogICAgICAgICAgICAgICAgIHdo
ZW4gIkFkZHIiCiAgICAgICAgICAgICAgICAgICAgIGlmIGFyZy5yb2xlID09ICJVQSIKICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKGFyZ3NbI3tpbmRleH1dLmlzU3RhY2so
KSAmJiBhcmdzWyN7aW5kZXh9XS5zdGFja1Nsb3QoKS0+aXNTcGlsbCgpKSIKQEAgLTgxOSw2ICs4
MzYsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgICAgICAgICB3aGVu
ICJSZWxDb25kIgogICAgICAgICAgICAgICAgIHdoZW4gIlJlc0NvbmQiCiAgICAgICAgICAgICAg
ICAgd2hlbiAiRG91YmxlQ29uZCIKKyAgICAgICAgICAgICAgICB3aGVuICJTdGF0dXNDb25kIgog
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0
ZWQga2luZDogI3traW5kLm5hbWV9IgogICAgICAgICAgICAgICAgIGVuZApAQCAtMTA5NSw3ICsx
MTEzLDcgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAg
IG91dHAucHJpbnQgImFyZ3NbI3tpbmRleH1dLmFzVHJ1c3RlZEltbTMyKCkiCiAgICAgICAgICAg
ICAgICAgd2hlbiAiQmlnSW1tIiwgIkJpdEltbTY0IgogICAgICAgICAgICAgICAgICAgICBvdXRw
LnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc1RydXN0ZWRJbW02NCgpIgotICAgICAgICAgICAgICAg
IHdoZW4gIkFkZHIiCisgICAgICAgICAgICAgICAgd2hlbiAiU2ltcGxlQWRkciIsICJBZGRyIgog
ICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc0FkZHJlc3Mo
KSIKICAgICAgICAgICAgICAgICB3aGVuICJJbmRleCIKICAgICAgICAgICAgICAgICAgICAgb3V0
cC5wcmludCAiYXJnc1sje2luZGV4fV0uYXNCYXNlSW5kZXgoKSIKQEAgLTExMDUsNiArMTEyMyw4
IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRw
LnByaW50ICJhcmdzWyN7aW5kZXh9XS5hc1Jlc3VsdENvbmRpdGlvbigpIgogICAgICAgICAgICAg
ICAgIHdoZW4gIkRvdWJsZUNvbmQiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHJpbnQgImFy
Z3NbI3tpbmRleH1dLmFzRG91YmxlQ29uZGl0aW9uKCkiCisgICAgICAgICAgICAgICAgd2hlbiAi
U3RhdHVzQ29uZCIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiYXJnc1sje2luZGV4
fV0uYXNTdGF0dXNDb25kaXRpb24oKSIKICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAg
IH0KIApAQCAtMTE0OCwyNyArMTE2OCw3IEBAIEZpbGUub3BlbigiSlNBaXJfb3Bjb2RlLmpzIiwg
InciKSB7CiAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJjYXNlICN7b3ZlcmxvYWQuc2lnbmF0
dXJlLmxlbmd0aH06IiBpZiBuZWVkT3ZlcmxvYWRTd2l0Y2gKICAgICAgICAgICAgICAgICBvdmVy
bG9hZC5zaWduYXR1cmUuZWFjaF93aXRoX2luZGV4IHsKICAgICAgICAgICAgICAgICAgICAgfCBh
cmcsIGluZGV4IHwKLSAgICAgICAgICAgICAgICAgICAgcm9sZSA9IG5pbAotICAgICAgICAgICAg
ICAgICAgICBjYXNlIGFyZy5yb2xlCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gIlUiCi0gICAg
ICAgICAgICAgICAgICAgICAgICByb2xlID0gIlVzZSIKLSAgICAgICAgICAgICAgICAgICAgd2hl
biAiRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiRGVmIgotICAgICAgICAgICAg
ICAgICAgICB3aGVuICJaRCIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiWkRlZiIK
LSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVUQiCi0gICAgICAgICAgICAgICAgICAgICAgICBy
b2xlID0gIlVzZURlZiIKLSAgICAgICAgICAgICAgICAgICAgd2hlbiAiVVpEIgotICAgICAgICAg
ICAgICAgICAgICAgICAgcm9sZSA9ICJVc2VaRGVmIgotICAgICAgICAgICAgICAgICAgICB3aGVu
ICJVQSIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiVXNlQWRkciIKLSAgICAgICAg
ICAgICAgICAgICAgd2hlbiAiUyIKLSAgICAgICAgICAgICAgICAgICAgICAgIHJvbGUgPSAiU2Ny
YXRjaCIKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAg
cmFpc2UKLSAgICAgICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImluc3QudmlzaXRBcmcoI3tpbmRleH0sIGZ1bmMs
IEFyZy4je3JvbGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRofSk7IgorICAgICAgICAgICAg
ICAgICAgICBvdXRwLnB1dHMgImluc3QudmlzaXRBcmcoI3tpbmRleH0sIGZ1bmMsIEFyZy4je2Fy
Zy5yb2xlQ29kZX0sICN7YXJnLmJhbmt9UCwgI3thcmcud2lkdGh9KTsiCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIG91dHAucHV0cyAiYnJlYWs7IgogICAgICAgICAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjEz
NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MTcsOSArNDE3LDYgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJp
bmc7CiAgICAgdihib29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgdihib29sLCBleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlciwgZmFsc2Us
IE5vcm1hbCwgImV4cG9zZSB0aGUgaW50ZXJuYWwgbW9kdWxlIGxvYWRlciBvYmplY3QgdG8gdGhl
IGdsb2JhbCBzcGFjZSBmb3IgZGVidWdnaW5nIikgXAogICAgIFwKLSAgICB2KGJvb2wsIGR1bXBB
aXJBc0pTQmVmb3JlQWxsb2NhdGVTdGFjaywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAotICAg
IHYoYm9vbCwgZHVtcEFpckFmdGVyQWxsb2NhdGVTdGFjaywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0
cikgXAotICAgIFwKICAgICB2KGJvb2wsIHVzZVN1cGVyU2FtcGxlciwgZmFsc2UsIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIFwKICAgICB2KGJvb2wsIHJlcG9ydExMSW50U3RhdHMsIGZhbHNlLCBD
b25maWd1cmFibGUsICJSZXBvcnRzIExMSW50IHN0YXRpc3RpY3MiKSBcCkluZGV4OiBXZWJzaXRl
cy93ZWJraXQub3JnL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQub3Jn
L0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNjQ1KQorKysgV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0wNCAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEIzIHNob3VsZCBoYXZlIGNvbXBy
ZWhlbnNpdmUgc3VwcG9ydCBmb3IgYXRvbWljIG9wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM0OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgRG9jdW1lbnQgdGhlIG5ldyBv
cGNvZGVzIQorCisgICAgICAgICogZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24u
aHRtbDoKKwogMjAxNy0wMy0wMyAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBtaW5vciB1cGRhdGVzIG9uIENTUyBHcmlkIExh
eW91dCBleGFtcGxlcy4KSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1l
ZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQu
b3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwJKHJldmlzaW9uIDIx
MzY0NSkKKysrIFdlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVz
ZW50YXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCwyOCBAQAogCiAgICAg
PHA+RWFjaCBiYXNpYyBibG9jayBjb250YWlucyBhIFZlY3RvciZsdDtWYWx1ZSomZ3Q7IGFzIHRo
ZSBjb250ZW50cyBvZiB0aGUgYmxvY2suIENvbnRyb2wKICAgICAgIGZsb3cgaW5zaWRlIHRoZSBi
bG9jayBpcyBpbXBsaWNpdCBiYXNlZCBvbiB0aGUgb3JkZXIgb2YgVmFsdWVzIGluIHRoZSB2ZWN0
b3IuPC9wPgorICAgIAorICAgIDxoMj5NZW1vcnkgbW9kZWw8L2gyPgorICAgIAorICAgIDxwPkIz
IHVzZXMgYSBzZWNvbmRhcnkgYWRkcmVzcyBzcGFjZSBvZiA8aT5hYnN0cmFjdCBoZWFwczwvaT4g
dG8gcmVhc29uIGFib3V0IGFsaWFzaW5nIGFuZAorICAgICAgY29uY3VycmVuY3kuIFRoaXMgYWRk
cmVzcyBzcGFjZSBpcyAzMi1iaXQgYW5kIHdlIHBvaW50IGF0IGl0IHVzaW5nIHRoZSBIZWFwUmFu
Z2UgdHlwZS4gSWYgeW91CisgICAgICBuZXZlciBzdXBwbHkgSGVhcFJhbmdlcyB0byB5b3VyIG1l
bW9yeSBvcGVyYXRpb25zICh0aGUgZGVmYXVsdCksIHRoZXkgd2lsbCBoYXZlIFswLCBVSU5UX01B
WF0KKyAgICAgIGFzIHRoZWlyIHJhbmdlLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhdGlvbiBt
YXkgY29uc2VydmF0aXZlbHkgd3JpdGUgdG8gYWxsIDI8c3VwPjMyPC9zdXA+CisgICAgICBhYnN0
cmFjdCBoZWFwcy4gVHdvIG1lbW9yeSBvcGVyYXRpb25zIGFyZSBzYWlkIHRvIGFsaWFzIGlmIHRo
ZXkgYWNjZXNzIHRoZSBzYW1lIGFic3RyYWN0IGhlYXBzLgorICAgICAgQSBzaW1wbGUgZXhhbXBs
ZSBvZiB1c2luZyBIZWFwUmFuZ2VzIGlzIHdpdGggbG9hZHMgYW5kIHN0b3JlcywgYnV0IHlvdSBj
YW4gYWxzbyBzdXBwbHkKKyAgICAgIEhlYXBSYW5nZXMgYXMgYm91bmRzIG9uIHRoZSBlZmZlY3Rz
IG9mIGNhbGxzIGFuZCBwYXRjaHBvaW50cy48L3A+CisgICAgCisgICAgPHA+RmVuY2VzIGFyZSBt
b2RlbGVkIGFzIHBoYW50b20gZWZmZWN0cyB0aGF0IHdlIGNhbGwgPGk+ZmVuY2UgcmFuZ2VzPC9p
Pi4gRm9yIGV4YW1wbGUsIGEgbG9hZAorICAgICAgZmVuY2UgY291bGQgYmUgcmVwcmVzZW50ZWQg
YXMgYSBwYXRjaHBvaW50IHRoYXQgd3JpdGVzIHRvIFswLCBVSU5UX01BWF0uIEIzIG1vZGVscyBs
b2FkIGZlbmNlcywKKyAgICAgIHN0b3JlIGZlbmNlcywgc3RvcmUtbG9hZCBmZW5jZXMsIGFjcXVp
cmUgZmVuY2VzLCBhbmQgcmVsZWFzZSBmZW5jZXMgdXNpbmcgZmVuY2UgcmFuZ2VzLiBUaGUKKyAg
ICAgIGFic2VuY2Ugb2YgYSBmZW5jZSByYW5nZSBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIGZlbmNl
LjwvcD4KKyAgICAKKyAgICA8cD5BY3F1aXJlIGZlbmNlcyBhcmUgbW9kZWxlZCBhcyBwaGFudG9t
IHdyaXRlcyB0byBtZW1vcnksIHdoaWxlIHJlbGVhc2UgZmVuY2VzIGFyZSBtb2RlbGVkIGFzCisg
ICAgICBwaGFudG9tIHJlYWRzIGZyb20gbWVtb3J5LiBCeSBpdHNlbGYgdGhpcyBkb2VzIG5vdCBw
ZXJtaXQgQjMgdG8gZG8gYWxsIG9mIHRoZSByZW9yZGVyaW5ncyB0aGF0CisgICAgICBhY3F1aXJl
L3JlbGVhc2UgYWxsb3cuIEIzIGlzIHRoZXJlZm9yZSBhbGxvd2VkIHRvIHRyZWF0IGxvYWRzL3N0
b3JlcyB3aXRoIGZlbmNlIHJhbmdlcyBtb3JlCisgICAgICBwcmVjaXNlbHkuIFRoZSBwaGFudG9t
IHdyaXRlIGVmZmVjdHMgb2YgYSBmZW5jZWQgbG9hZCBjYW5ub3Qgd3JpdGUgdG8gYW55dGhpbmcg
dGhhdCBpcyByZWFkIG9yCisgICAgICB3cml0dGVuIGFmdGVyIHRoZSBmZW5jZS4gVGhlIHBoYW50
b20gcmVhZCBlZmZlY3RzIG9mIGEgZmVuY2VkIHN0b3JlIGNhbm5vdCByZWFkIGFueXRoaW5nIHRo
YXQKKyAgICAgIGlzIHdyaXR0ZW4gYWZ0ZXIgdGhlIGZlbmNlLjwvcD4KIAogICAgIDxoMj5PcGNv
ZGVzPC9oMj4KIApAQCAtMzk1LDUxICs0MTcsMTEzIEBACiAgICAgICA8ZHQ+SW50MzIgTG9hZDha
KEludFB0ciwgb2Zmc2V0KTwvZHQ+CiAgICAgICA8ZGQ+TG9hZHMgYSBieXRlIGZyb20gdGhlIGFk
ZHJlc3MsIHdoaWNoIGlzIGNvbXB1dGVkIGJ5IGFkZGluZyB0aGUgY29tcGlsZS10aW1lIDMyLWJp
dAogICAgICAgICBzaWduZWQgaW50ZWdlciBvZmZzZXQgdG8gdGhlIGNoaWxkIHZhbHVlLiAgWmVy
byBleHRlbmRzIHRoZSBsb2FkZWQgYnl0ZSwgc28gdGhlIGhpZ2ggMjQKLSAgICAgICAgYml0cyBh
cmUgYWxsIHplcm8uICBNdXN0IHVzZSB0aGUgTWVtb3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0
aGUgVHJhcHMgZmxhZyBzZXQuPC9kZD4KKyAgICAgICAgYml0cyBhcmUgYWxsIHplcm8uICBNdXN0
IHVzZSB0aGUgTWVtb3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxhZyBzZXQu
IE1heSBzZXQKKyAgICAgICAgYSBmZW5jZSByYW5nZSB0byB0dXJuIHRoaXMgaW50byBhIGxvYWQg
YWNxdWlyZS48L2RkPgogCiAgICAgICA8ZHQ+SW50MzIgTG9hZDhTKEludFB0ciwgb2Zmc2V0KTwv
ZHQ+CiAgICAgICA8ZGQ+TG9hZHMgYSBieXRlIGZyb20gdGhlIGFkZHJlc3MsIHdoaWNoIGlzIGNv
bXB1dGVkIGJ5IGFkZGluZyB0aGUgY29tcGlsZS10aW1lIDMyLWJpdAogICAgICAgICBzaWduZWQg
aW50ZWdlciBvZmZzZXQgdG8gdGhlIGNoaWxkIHZhbHVlLiAgU2lnbiBleHRlbmRzIHRoZSBsb2Fk
ZWQgYnl0ZS4gIE11c3QgdXNlIHRoZQotICAgICAgICBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBo
YXZlIHRoZSBUcmFwcyBmbGFnIHNldC48L2RkPgorICAgICAgICBNZW1vcnlWYWx1ZSBjbGFzcy4g
IE1heSBoYXZlIHRoZSBUcmFwcyBmbGFnIHNldC4gTWF5IHNldAorICAgICAgICBhIGZlbmNlIHJh
bmdlIHRvIHR1cm4gdGhpcyBpbnRvIGEgbG9hZCBhY3F1aXJlLjwvZGQ+CiAKICAgICAgIDxkdD5J
bnQzMiBMb2FkMTZaKEludFB0ciwgb2Zmc2V0KTwvZHQ+CiAgICAgICA8ZGQ+TG9hZHMgYSAxNi1i
aXQgaW50ZWdlciBmcm9tIHRoZSBhZGRyZXNzLCB3aGljaCBpcyBjb21wdXRlZCBieSBhZGRpbmcg
dGhlIGNvbXBpbGUtdGltZQogICAgICAgICAzMi1iaXQgc2lnbmVkIGludGVnZXIgb2Zmc2V0IHRv
IHRoZSBjaGlsZCB2YWx1ZS4gIFplcm8gZXh0ZW5kcyB0aGUgbG9hZGVkIDE2LWJpdAogICAgICAg
ICBpbnRlZ2VyLCBzbyB0aGUgaGlnaCAxNiBiaXRzIGFyZSBhbGwgemVyby4gIE1pc2FsaWduZWQg
bG9hZHMgYXJlIG5vdCBwZW5hbGl6ZWQuICBNdXN0Ci0gICAgICAgIHVzZSB0aGUgTWVtb3J5VmFs
dWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxhZyBzZXQuPC9kZD4KKyAgICAgICAgdXNl
IHRoZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBUcmFwcyBmbGFnIHNldC4gTWF5
IHNldAorICAgICAgICBhIGZlbmNlIHJhbmdlIHRvIHR1cm4gdGhpcyBpbnRvIGEgbG9hZCBhY3F1
aXJlLjwvZGQ+CiAKICAgICAgIDxkdD5JbnQzMiBMb2FkMTZTKEludFB0ciwgb2Zmc2V0KTwvZHQ+
CiAgICAgICA8ZGQ+TG9hZHMgYSAxNi1iaXQgaW50ZWdlciBmcm9tIHRoZSBhZGRyZXNzLCB3aGlj
aCBpcyBjb21wdXRlZCBieSBhZGRpbmcgdGhlIGNvbXBpbGUtdGltZQogICAgICAgICAzMi1iaXQg
c2lnbmVkIGludGVnZXIgb2Zmc2V0IHRvIHRoZSBjaGlsZCB2YWx1ZS4gIFNpZ24gZXh0ZW5kcyB0
aGUgbG9hZGVkIDE2LWJpdAogICAgICAgICBpbnRlZ2VyLiAgTWlzYWxpZ25lZCBsb2FkcyBhcmUg
bm90IHBlbmFsaXplZC4gIE11c3QgdXNlIHRoZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZl
IHRoZQotICAgICAgICBUcmFwcyBmbGFnIHNldC48L2RkPgorICAgICAgICBUcmFwcyBmbGFnIHNl
dC4gTWF5IHNldCBhIGZlbmNlIHJhbmdlIHRvIHR1cm4gdGhpcyBpbnRvIGEgbG9hZCBhY3F1aXJl
LjwvZGQ+CiAKICAgICAgIDxkdD5UIExvYWQoSW50UHRyLCBvZmZzZXQpPC9kdD4KICAgICAgIDxk
ZD5WYWxpZCBmb3IgYW55IHR5cGUgZXhjZXB0IFZvaWQuICBMb2FkcyBhIHZhbHVlIG9mIHRoYXQg
dHlwZSBmcm9tIHRoZSBhZGRyZXNzLCB3aGljaCBpcwogICAgICAgICBjb21wdXRlZCBieSBhZGRp
bmcgdGhlIGNvbXBpbGUtdGltZSAzMi1iaXQgc2lnbmVkIGludGVnZXIgb2Zmc2V0IHRvIHRoZSBj
aGlsZCB2YWx1ZS4KICAgICAgICAgTWlzYWxpZ25lZCBsb2FkcyBhcmUgbm90IHBlbmFsaXplZC4g
IE11c3QgdXNlIHRoZSBNZW1vcnlWYWx1ZSBjbGFzcy4gIE1heSBoYXZlIHRoZSBUcmFwcwotICAg
ICAgICBmbGFnIHNldC48L2RkPgorICAgICAgICBmbGFnIHNldC4gTWF5IHNldCBhIGZlbmNlIHJh
bmdlIHRvIHR1cm4gdGhpcyBpbnRvIGEgbG9hZCBhY3F1aXJlLjwvZGQ+CiAKICAgICAgIDxkdD5W
b2lkIFN0b3JlOChJbnQzMiwgSW50UHRyLCBvZmZzZXQpPC9kdD4KICAgICAgIDxkZD5TdG9yZXMg
YSB0aGUgbG93IGJ5dGUgb2YgdGhlIGZpcnN0IGNoaWxkIGludG8gdGhlIGFkZHJlc3MgY29tcHV0
ZWQgYnkgYWRkaW5nIHRoZQogICAgICAgICBjb21waWxlLXRpbWUgMzItYml0IHNpZ25lZCBpbnRl
Z2VyIG9mZnNldCB0byB0aGUgc2Vjb25kIGNoaWxkLiAgTXVzdCB1c2UgdGhlIE1lbW9yeVZhbHVl
Ci0gICAgICAgIGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0LjwvZGQ+CisgICAg
ICAgIGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0LiBNYXkgc2V0IGEgZmVuY2Ug
cmFuZ2UgdG8gdHVybiB0aGlzIGludG8gYSBzdG9yZSByZWxlYXNlLjwvZGQ+CiAKICAgICAgIDxk
dD5Wb2lkIFN0b3JlMTYoSW50MzIsIEludFB0ciwgb2Zmc2V0KTwvZHQ+CiAgICAgICA8ZGQ+U3Rv
cmVzIGEgdGhlIGxvdyAxNiBiaXRzIG9mIHRoZSBmaXJzdCBjaGlsZCBpbnRvIHRoZSBhZGRyZXNz
IGNvbXB1dGVkIGJ5IGFkZGluZyB0aGUKICAgICAgICAgY29tcGlsZS10aW1lIDMyLWJpdCBzaWdu
ZWQgaW50ZWdlciBvZmZzZXQgdG8gdGhlIHNlY29uZCBjaGlsZC4gIE1pc2FsaWduZWQgc3RvcmVz
IGFyZQotICAgICAgICBub3QgcGVuYWxpemVkLiAgTXVzdCB1c2UgdGhlIE1lbW9yeVZhbHVlIGNs
YXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0LjwvZGQ+CisgICAgICAgIG5vdCBwZW5h
bGl6ZWQuICBNdXN0IHVzZSB0aGUgTWVtb3J5VmFsdWUgY2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJh
cHMgZmxhZyBzZXQuIE1heSBzZXQgYQorICAgICAgICBmZW5jZSByYW5nZSB0byB0dXJuIHRoaXMg
aW50byBhIHN0b3JlIHJlbGVhc2UuPC9kZD4KIAogICAgICAgPGR0PlZvaWQgU3RvcmUoVCwgSW50
UHRyLCBvZmZzZXQpPC9kdD4KICAgICAgIDxkZD5TdG9yZXMgdGhlIHZhbHVlIGluIHRoZSBmaXJz
dCBjaGlsZCBpbnRvIHRoZSBhZGRyZXNzIGNvbXB1dGVkIGJ5IGFkZGluZyB0aGUKICAgICAgICAg
Y29tcGlsZS10aW1lIDMyLWJpdCBzaWduZWQgaW50ZWdlciBvZmZzZXQgdG8gdGhlIHNlY29uZCBj
aGlsZC4gIE1pc2FsaWduZWQgc3RvcmVzIGFyZQotICAgICAgICBub3QgcGVuYWxpemVkLiAgTXVz
dCB1c2UgdGhlIE1lbW9yeVZhbHVlIGNsYXNzLiAgTWF5IGhhdmUgdGhlIFRyYXBzIGZsYWcgc2V0
LjwvZGQ+CisgICAgICAgIG5vdCBwZW5hbGl6ZWQuICBNdXN0IHVzZSB0aGUgTWVtb3J5VmFsdWUg
Y2xhc3MuICBNYXkgaGF2ZSB0aGUgVHJhcHMgZmxhZyBzZXQuIE1heSBzZXQgYQorICAgICAgICBm
ZW5jZSByYW5nZSB0byB0dXJuIHRoaXMgaW50byBhIHN0b3JlIHJlbGVhc2UuPC9kZD4KKyAgICAg
IAorICAgICAgPGR0PkludDMyIEF0b21pY1dlYWtDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1Zh
bHVlLCBJbnRQdHIgcHRyKTwvZHQ+CisgICAgICA8ZGQ+UGVyZm9ybXMgYSB3ZWFrIDxhIGhyZWY9
Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXBhcmUtYW5kLXN3YXAiPkNBUworICAg
ICAgICAgIChjb21wYXJlLWFuZC1zd2FwKTwvYT4uIFJldHVybnMgYSBib29sZWFuICgwIG9yIDEp
IHRvIGluZGljYXRlIHRoZSByZXN1bHQgKGZhaWx1cmUgb3IKKyAgICAgICAgc3VjY2VzcywgcmVz
cGVjdGl2ZWx5KS4gTWF5IHNwdXJpb3VzbHkgZmFpbCwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGRv
IG5vdGhpbmcgYW5kIHJldHVybgorICAgICAgICAwLiBZb3UgY2FuIHN1cHBseSBhIGZlbmNlIHJh
bmdlIHRvIGluZGljYXRlIHRoYXQgdGhlIENBUyBpcyBmZW5jZWQuIEZlbmNlZCBDQVMgaGFzIGJv
dGgKKyAgICAgICAgYWNxdWlyZSBhbmQgcmVsZWFzZSBmZW5jZXMsIGFuZCBjbGFpbXMgdG8gYm90
aCByZWFkIGFuZCB3cml0ZSB0aGUgZnVsbCBmZW5jZSByYW5nZSBpbgorICAgICAgICBhZGRpdGlv
biB0byB3aGF0ZXZlciBwcmltYXJ5IHJhbmdlIGlzIHN1cHBsaWVkIGZvciB0aGUgQ0FTIGl0c2Vs
Zi4gQXRvbWljV2Vha0NBUyBvbmx5CisgICAgICAgIGhhcyBmZW5jaW5nIGJlaGF2aW9yIGluIHRo
ZSBjYXNlIHRoYXQgaXQgc3VjY2VlZHMuIEF0b21pYyBvcGVyYXRpb25zIHRha2UgYSB3aWR0aCBw
YXJhbWV0ZXIsCisgICAgICAgIGFsbG93aW5nIHRoZW0gdG8gb3BlcmF0ZSBvdmVyIDgtYml0LCAx
Ni1iaXQsIDMyLWJpdCwgb3IgNjQtYml0IGludGVnZXIgbWVtb3J5IGxvY2F0aW9ucy48L2RkPgor
CisgICAgICA8ZHQ+VCBBdG9taWNTdHJvbmdDQVMoVCBleHBlY3RlZFZhbHVlLCBUIG5ld1ZhbHVl
LCBJbnRQdHIgcHRyKTwvZHQ+CisgICAgICA8ZGQ+UGVyZm9ybXMgYSBzdHJvbmcgPGEgaHJlZj0i
aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyZS1hbmQtc3dhcCI+Q0FTCisgICAg
ICAgICAgKGNvbXBhcmUtYW5kLXN3YXApPC9hPi4gUmV0dXJucyB0aGUgb2xkIHZhbHVlIGJlZm9y
ZSB0aGUgQ0FTLiBUaGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IKKyAgICAgICAgaXMgc21hcnQgYWJv
dXQgRXF1YWwoQXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVkLCAuLi4pLCBleHBlY3RlZCkgcGF0dGVy
bnMsIHNvIHRoaXMgb3Bjb2RlCisgICAgICAgIGlzIGFsc28gdGhlIGJlc3Qgd2F5IHRvIGRvIGEg
c3Ryb25nIENBUyB0aGF0IHJldHVybnMgYSBib29sZWFuIC0ganVzdCB1c2UgRXF1YWwgdG8gY29t
cGFyZQorICAgICAgICB0aGUgcmVzdWx0IHRvIGV4cGVjdGVkLiBZb3UgY2FuIHN1cHBseSBhIGZl
bmNlIHJhbmdlIHRvIGluZGljYXRlIHRoYXQgdGhlIENBUyBpcyBmZW5jZWQuCisgICAgICAgIEZl
bmNlZCBDQVMgaGFzIGJvdGggYWNxdWlyZSBhbmQgcmVsZWFzZSBmZW5jZXMsIGFuZCBjbGFpbXMg
dG8gYm90aCByZWFkIGFuZCB3cml0ZSB0aGUgZnVsbAorICAgICAgICBmZW5jZSByYW5nZSBpbiBh
ZGRpdGlvbiB0byB3aGF0ZXZlciBwcmltYXJ5IHJhbmdlIGlzIHN1cHBsaWVkIGZvciB0aGUgQ0FT
IGl0c2VsZi4KKyAgICAgICAgQXRvbWljU3Ryb25nQ0FTIGhhcyB0aGUgc2FtZSBmZW5jaW5nIG9u
IGZhaWx1cmUgYW5kIHN1Y2Nlc3MuIEF0b21pYyBvcGVyYXRpb25zIHRha2UgYSB3aWR0aAorICAg
ICAgICBwYXJhbWV0ZXIsIGFsbG93aW5nIHRoZW0gdG8gb3BlcmF0ZSBvdmVyIDgtYml0LCAxNi1i
aXQsIDMyLWJpdCwgb3IgNjQtYml0IGludGVnZXIgbWVtb3J5CisgICAgICAgIGxvY2F0aW9ucy4g
UmV0dXJucyBhIHNpZ24tZXh0ZW5kZWQgcmVzdWx0IGZvciA4LWJpdCBvciAxNi1iaXQgd2lkdGhz
LjwvZGQ+CisgICAgICAKKyAgICAgIDxkdD5UIEF0b21pY1hjaGdBZGQoVCwgSW50UHRyKTwvZHQ+
CisgICAgICA8ZGQ+QXRvbWljYWxseSBhZGRzIGEgdmFsdWUgdG8gdGhlIG1lbW9yeSBsb2NhdGlv
biBhbmQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBJcyBhbGxvd2VkIHRvCisgICAgICAgIGhhdmUg
YSBmZW5jZSByYW5nZSwgd2hpY2ggY2F1c2VzIGl0IHRvIGhhdmUgYWNxdWlyZS9yZWxlYXNlIGZl
bmNpbmcuIEF0b21pYyBvcGVyYXRpb25zIHRha2UKKyAgICAgICAgYSB3aWR0aCBwYXJhbWV0ZXIs
IGFsbG93aW5nIHRoZW0gdG8gb3BlcmF0ZSBvdmVyIDgtYml0LCAxNi1iaXQsIDMyLWJpdCwgb3Ig
NjQtYml0IGludGVnZXIgbWVtb3J5CisgICAgICAgIGxvY2F0aW9ucy4gUmV0dXJucyBhIHNpZ24t
ZXh0ZW5kZWQgcmVzdWx0IGZvciA4LWJpdCBvciAxNi1iaXQgd2lkdGhzLjwvZGQ+CisKKyAgICAg
IDxkdD5UIEF0b21pY1hjaGdBbmQoVCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+QXRvbWljYWxs
eSBiaXR3aXNlLWFuZHMgYSB2YWx1ZSB0byB0aGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5z
IHRoZSBvbGQgdmFsdWUuIElzIGFsbG93ZWQgdG8KKyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdl
LCB3aGljaCBjYXVzZXMgaXQgdG8gaGF2ZSBhY3F1aXJlL3JlbGVhc2UgZmVuY2luZy4gQXRvbWlj
IG9wZXJhdGlvbnMgdGFrZQorICAgICAgICBhIHdpZHRoIHBhcmFtZXRlciwgYWxsb3dpbmcgdGhl
bSB0byBvcGVyYXRlIG92ZXIgOC1iaXQsIDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQgaW50ZWdl
ciBtZW1vcnkKKyAgICAgICAgbG9jYXRpb25zLiBSZXR1cm5zIGEgc2lnbi1leHRlbmRlZCByZXN1
bHQgZm9yIDgtYml0IG9yIDE2LWJpdCB3aWR0aHMuPC9kZD4KKworICAgICAgPGR0PlQgQXRvbWlj
WGNoZ09yKFQsIEludFB0cik8L2R0PgorICAgICAgPGRkPkF0b21pY2FsbHkgYml0d2lzZS1vcnMg
YSB2YWx1ZSB0byB0aGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5zIHRoZSBvbGQgdmFsdWUu
IElzIGFsbG93ZWQgdG8KKyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdlLCB3aGljaCBjYXVzZXMg
aXQgdG8gaGF2ZSBhY3F1aXJlL3JlbGVhc2UgZmVuY2luZy4gQXRvbWljIG9wZXJhdGlvbnMgdGFr
ZQorICAgICAgICBhIHdpZHRoIHBhcmFtZXRlciwgYWxsb3dpbmcgdGhlbSB0byBvcGVyYXRlIG92
ZXIgOC1iaXQsIDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQgaW50ZWdlciBtZW1vcnkKKyAgICAg
ICAgbG9jYXRpb25zLiBSZXR1cm5zIGEgc2lnbi1leHRlbmRlZCByZXN1bHQgZm9yIDgtYml0IG9y
IDE2LWJpdCB3aWR0aHMuPC9kZD4KKworICAgICAgPGR0PlQgQXRvbWljWGNoZ1N1YihULCBJbnRQ
dHIpPC9kdD4KKyAgICAgIDxkZD5BdG9taWNhbGx5IHN1YnRyYWN0cyBhIHZhbHVlIHRvIHRoZSBt
ZW1vcnkgbG9jYXRpb24gYW5kIHJldHVybnMgdGhlIG9sZCB2YWx1ZS4gSXMgYWxsb3dlZCB0bwor
ICAgICAgICBoYXZlIGEgZmVuY2UgcmFuZ2UsIHdoaWNoIGNhdXNlcyBpdCB0byBoYXZlIGFjcXVp
cmUvcmVsZWFzZSBmZW5jaW5nLiBBdG9taWMgb3BlcmF0aW9ucyB0YWtlCisgICAgICAgIGEgd2lk
dGggcGFyYW1ldGVyLCBhbGxvd2luZyB0aGVtIHRvIG9wZXJhdGUgb3ZlciA4LWJpdCwgMTYtYml0
LCAzMi1iaXQsIG9yIDY0LWJpdCBpbnRlZ2VyIG1lbW9yeQorICAgICAgICBsb2NhdGlvbnMuIFJl
dHVybnMgYSBzaWduLWV4dGVuZGVkIHJlc3VsdCBmb3IgOC1iaXQgb3IgMTYtYml0IHdpZHRocy48
L2RkPgorCisgICAgICA8ZHQ+VCBBdG9taWNYY2hnWG9yKFQsIEludFB0cik8L2R0PgorICAgICAg
PGRkPkF0b21pY2FsbHkgYml0d2lzZS14b3JzIGEgdmFsdWUgdG8gdGhlIG1lbW9yeSBsb2NhdGlv
biBhbmQgcmV0dXJucyB0aGUgb2xkIHZhbHVlLiBJcyBhbGxvd2VkIHRvCisgICAgICAgIGhhdmUg
YSBmZW5jZSByYW5nZSwgd2hpY2ggY2F1c2VzIGl0IHRvIGhhdmUgYWNxdWlyZS9yZWxlYXNlIGZl
bmNpbmcuIEF0b21pYyBvcGVyYXRpb25zIHRha2UKKyAgICAgICAgYSB3aWR0aCBwYXJhbWV0ZXIs
IGFsbG93aW5nIHRoZW0gdG8gb3BlcmF0ZSBvdmVyIDgtYml0LCAxNi1iaXQsIDMyLWJpdCwgb3Ig
NjQtYml0IGludGVnZXIgbWVtb3J5CisgICAgICAgIGxvY2F0aW9ucy4gUmV0dXJucyBhIHNpZ24t
ZXh0ZW5kZWQgcmVzdWx0IGZvciA4LWJpdCBvciAxNi1iaXQgd2lkdGhzLjwvZGQ+CisKKyAgICAg
IDxkdD5UIEF0b21pY1hjaGcoVCwgSW50UHRyKTwvZHQ+CisgICAgICA8ZGQ+QXRvbWljYWxseSBz
dG9yZXMgYSB2YWx1ZSB0byB0aGUgbWVtb3J5IGxvY2F0aW9uIGFuZCByZXR1cm5zIHRoZSBvbGQg
dmFsdWUuIElzIGFsbG93ZWQgdG8KKyAgICAgICAgaGF2ZSBhIGZlbmNlIHJhbmdlLCB3aGljaCBj
YXVzZXMgaXQgdG8gaGF2ZSBhY3F1aXJlL3JlbGVhc2UgZmVuY2luZy4gQXRvbWljIG9wZXJhdGlv
bnMgdGFrZQorICAgICAgICBhIHdpZHRoIHBhcmFtZXRlciwgYWxsb3dpbmcgdGhlbSB0byBvcGVy
YXRlIG92ZXIgOC1iaXQsIDE2LWJpdCwgMzItYml0LCBvciA2NC1iaXQgaW50ZWdlciBtZW1vcnkK
KyAgICAgICAgbG9jYXRpb25zLiBSZXR1cm5zIGEgc2lnbi1leHRlbmRlZCByZXN1bHQgZm9yIDgt
Yml0IG9yIDE2LWJpdCB3aWR0aHMuPC9kZD4KIAogICAgICAgPGR0PkludFB0ciBXYXNtQWRkcmVz
cyhJbnRQdHIsIHBpbm5lZEdQUik8L2R0PgogICAgICAgPGRkPlRoaXMgaXMgdXNlZCB0byBjb21w
dXRlIHRoZSBhZGRyZXNzIG9mIGEgd2FzbSBtZW1vcnkgbG9hZCBmcm9tIGEgcGlubmVkIGJhc2Ug
R1BSLgogICAgICAgICBNdXN0IHVzZSB0aGUgV2FzbUFkZHJlc3NWYWx1ZSBjbGFzcy48L2RkPgog
Ci0KICAgICAgIDxkdD5Wb2lkIEZlbmNlKCk8L2R0PgogICAgICAgPGRkPkFic3RyYWN0cyBzdGFu
ZGFsb25lIGRhdGEgZmVuY2VzIG9uIHg4NiBhbmQgQVJNLiBNdXN0IHVzZSB0aGUgRmVuY2VWYWx1
ZSBjbGFzcywgd2hpY2ggaGFzCiAgICAgICAgIHR3byBhZGRpdGlvbmFsIG1lbWJlcnMgdGhhdCBj
b25maWd1cmUgdGhlIHByZWNpc2UgbWVhbmluZyBvZiB0aGUgZmVuY2U6Cg==
</data>
<flag name="review"
          id="325527"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>